6 Managing Customer Contact Information

This chapter describes how to use Oracle Communications Billing and Revenue Management (BRM) Customer Center to manage customer contact information, such as name, address, and telephone number.

Managing Customer Contact Information

Use Customer Center to change customer contact information, such as name, address, and phone number.

When a customer service representative (CSR) or a customer changes customer contact information, BRM validates that it has been entered in the correct format. See "Specifying how to validate customer contact information".


  • The Credit Card Info tab and the Invoice Info tab may contain duplicate information. If you edit information on either tab, ensure that you make the same changes to the other.

  • If the customer has purchased an email service, BRM assigns an email address based on the login for the service. To change the email address, you must change the login. See "Changing Login Names".

Specifying Multiple Account Contacts

You can store contact information for more than one person in a single account. For example, if an account is held by a large corporation, you can provide a different contact for each department. When you choose the contact, the contact's account information is displayed.

Allowing Customers to Change Account Information

If you want customers to make their own changes at your Web site, create a Web page that allows customers to change their account information. See "Ways to Implement a Web Interface".

Specifying an Invoice Contact

You can designate a person other than the account holder to receive the invoice. You can also use the same invoice contact for multiple accounts. See "Changing Invoice Information".

Displaying Information Received from Web Registration

You can store information collected when customers register by using a registration kit or a Web site. If you collect this information, check the Summary tab in Customer Center to see the name of the third party where the customer registered and other information.

To collect this information, customize the PCM_OP_CUST_POL_PREP_AACINFO policy opcode.

Managing Name and Address Information in Your Custom Application

For more information on validating customer contact information, see "Specifying how to validate customer contact information".

To add name and address information to a specific account object, use the PCM_OP_CUST_SET_NAMEINFO opcode. If the opcode updates the information in an existing account, it replaces the existing values with the new values. Any fields not specifically included in the input flist are left unchanged.

PCM_OP_CUST_SET_NAMEINFO sets the fields of the PIN_FLD_NAMEINFO array of a specified /account storable object to the values specified in the input flist PIN_FLD_NAMEINFO array. If PCM_OP_CUST_SET_NAMEINFO updates the information in an existing account, it replaces the existing values with the new values. Any fields not specifically included in the input flist are left unchanged.

PCM_OP_CUST_SET_NAMEINFO does the following:

  • Sets the billing address in the account's PIN_FLD_NAMEINFO array by using the PIN_NAMEINFO_BILLING element (element_id = PIN_NAMEINFO_BILLING = 1).

  • Sets the mailing address (if needed) using the PIN_NAMEINFO_MAILING element (element_id = PIN_NAMEINFO_MAILING = 2).


    Element IDs through 100 are reserved for BRM's use.

The PCM_OP_CUST_CREATE_ACCT opcode calls PCM_OP_CUST_SET_NAMEINFO as part of the process of creating an /account storable object.

If the PCM_OPFLG_CALC_ONLY flag is not set, PCM_OP_CUST_SET_NAMEINFO creates an /event/customer/nameinfo storable object to record the details of the operation.

If the operation is successful, PCM_OP_CUST_CREATE_ACCT returns the BRM object ID (POID) of the /event/customer/nameinfo object in the PIN_FLD_RESULTS array. If PCM_OP_CUST_CREATE_ACCT fails, it returns a PIN_FLD_FIELDS array that specifies the failing field.

Customizing Name and Address Information

Use the following policy opcodes to customize name and address information:

PCM_OP_CUST_SET_NAMEINFO calls the PCM_OP_CUST_POL_PREP_NAMEINFO policy opcode to prepare the customer information for validation and to determine whether the account being created is the BRM payment suspense account.

The PCM_OP_CUST_POL_PREP_NAMEINFO policy opcode checks the relevant /config/business_params object to determine whether payment suspense management is enabled. If so, it checks if the first name is ”payment” and the last name is ”suspense,” which identifies it as a payment suspense account. If it exists, the PCM_OP_CUST_POL_PREP_NAMEINFO policy opcode retrieves the POID of the /config/psm object and passes it to PCM_OP_CUST_SET_NAMEINFO.

If it is the payment suspense account, PCM_OP_CUST_SET_NAMEINFO performs the following tasks:

  • If the policy opcode provides a /config/psm object, PCM_OP_CUST_SET_NAMEINFO updates the PIN_FLD_ACCOUNTS array with the account POID for the payment suspense account being created.

  • If the policy opcode provides a dummy POID, PCM_OP_CUST_SET_NAMEINFO creates the /config/psm object. It includes the account POID of the payment suspense account in the PIN_FLD_ACCOUNTS_ARRAY.

PCM_OP_CUST_SET_NAMEINFO then calls the PCM_OP_CUST_POL_VALID_NAMEINFO policy opcode to validate the information.

Creating Custom Country Aliases to Use in Client Applications

You can define custom values to represent countries by adding them to the country:alias list in the source code of the PCM_OP_CUST_POL_VALID_NAMEINFO policy opcode. This example shows three valid values for Angola: AO, Angola, and Ang.


After you edit this list, recompile the code to make your changes take effect.

For more information on the PCM_OP_CUST_POL_VALID_NAMEINFO policy opcode, see PCM_OP_CUST_POL_VALID_NAMEINFO and "About the PREP and VALID Opcodes" in BRM Developer's Guide.

Specifying the Default Country

If the country is not provided, it is assumed to be USA and USA is added as the country value. You can edit the country parameter in the pin.conf file to change the default. See "Specifying the Default Country".

Managing and Customizing Locale Information

Use the PCM_OP_CUST_SET_LOCALE opcode to set the locale in an account. This opcode creates an /event/customer/locale object (or one inherited from it) to record the details of the operation.

You can use the PCM_OPFLG_CALC_ONLY flag to run the operation without creating the event object.

To customize how locales are set, use these opcodes:

  • To customize the creation of the locale, use the PCM_OP_CUST_POL_PREP_LOCALE policy opcode. The default implementation does nothing. See "About the PREP and VALID Opcodes" in BRM Developer's Guide.

  • To customize how to validate the locale, use the PCM_OP_CUST_POL_VALID_LOCALE policy opcode. See "About the PREP and VALID Opcodes" in BRM Developer's Guide. The PCM_OP_CUST_POL_VALID_LOCALE policy opcode does the following:

    • Validates limit information for a service.

    • Confirms that the value of PIN_FLD_LOCALE in the input flist is one of the valid BRM locales. See BRM locale IDs for a list of the valid BRM locales.

About Collecting Nonstandard Account Information

You can customize BRM to collect information about your customers, in addition to the standard BRM account information. For example, you might want to collect the following information:

  • How customers find out about your business.

  • Services that your customers would like you to offer.

  • Account numbers from legacy customer management systems.

  • Information necessary to offer some services. For example, you might need to assign nicknames for a chat service.

The information you collect is stored in account profiles. You can use information in profiles in various ways; for example:

  • You can create applications that search for information in profiles. For example, you could create a ”friends-referral” program by creating a profile that collects referrals. When a customer registers, you can search profiles to find which customer made the referral and give that customer a credit.

  • You can read information from an account profile and use it as input to custom applications and configurations. For example, you could base custom rates on values in a profile.

Managing and Customizing Profiles

For more information on profiles, see "About Collecting Nonstandard Account Information".

  • To add a /profile object to an account, use the PCM_OP_CUST_CREATE_PROFILE opcode.

    This opcode calls other opcodes that prepare and validate the account data. After the account data is validated, PCM_OP_CUST_CREATE_PROFILE calls base opcodes to create a /profile storable object that contains extra information that you want to store about an account and associates it with the account storable object POID.

  • To modify a profile object, use the PCM_OP_CUST_MODIFY_PROFILE opcode.

    Given the POID of an existing /profile object, PCM_OP_CUST_MODIFY_PROFILE modifies the object with the specified changes.

    If the input flist for the inherited fields for the profile object contains a null array or substruct value, the array or substruct table entry is deleted in the database.

  • To delete profiles, use the PCM_OP_CUST_DELETE_PROFILE opcode.

To customize profiles, use the following policy opcodes:

To display profile information in Customer Center, you must configure Customer Center by using Customer Center SDK. See "Using Customer Center SDK" in BRM Developer's Guide.

Searching for Account Profile Information

You can modify Customer Center to perform searches on information in profiles.

To find the /profile objects that belong to an account, use the PCM_OP_CUST_FIND_PROFILE opcode.

This opcode uses the input PIN_FLD_POID database field of the input flist to determine which database to search for the profile list. The opcode calls a standard opcode to search for the profile.

If the PCM_OPFLG_READ_RESULT flag is set, PCM_OP_CUST_FIND_PROFILE returns the entire /profile storable object. Otherwise, it returns the fields specified in the PIN_FLD_RESULTS array. If no fields are specified, only the profile POID is returned. Other fields are returned with the profile POID only if they are specified in the PIN_FLD_PARAMETERS field of the input flist.

To limit the returned profile list, include a profile type string in the input flist by using PIN_FLD_TYPE_STR. A type string contains an object name or a wildcard value using the percent sign (%) that is compared to the profile object name. For example, /profile/foo returns all object subtypes ”foo,” and /profile/f% returns all profile subtypes starting with ”f.” If the profile string is not included in the input flist, all matching profiles for the account are returned.


The percent sign is the only wildcard you can use with this field.