11 Configuring Wholesale Billing

Learn how to configure Oracle Communications Billing and Revenue Management (BRM) to perform wholesale billing for your large wholesale business accounts.

Topics in this document:

About Wholesale Billing

Wholesale business accounts with large account hierarchies can have a large number of services, each representing a subscription account. This can affect billing and invoicing performance if your customers' accounts have a large number of billing items to process.

You can set up wholesale billing for handling large wholesale business accounts. In wholesale billing, you set up a bill unit hierarchy for account receivable (A/R) operations. The wholesale business account is the parent account with the paying parent bill unit and the services (subscriptions) in this account are child accounts with nonpaying child bill units.

BRM consolidates the charges, discounts, A/R items, bill items, journals, and taxes across the services under the wholesale business account and performs the A/R operations, billing, and invoicing at the wholesale business account level.

Setting Up Billing for Wholesale Account Hierarchies

Wholesale business accounts with large account hierarchies can have a large number of services each representing a subscription account. This can affect billing and invoicing performance if your customers' accounts have a large number of billing items to process.

You can set up wholesale billing for handling large wholesale business accounts. In wholesale billing, you set up a bill unit hierarchy for account receivable (A/R) operations. The wholesale business account is the parent account with the paying parent bill unit and the services (subscriptions) in this account are child accounts with nonpaying child bill units.

BRM consolidates the charges, discounts, A/R items, bill items, journals, and taxes across the services under the wholesale business account and performs the A/R operations, billing, and invoicing at the wholesale business account level.

Set up wholesale billing for the whole system by:

  1. Enabling Wholesale Billing for All Accounts
  2. Creating Wholesale Accounts and Bill Unit Hierarchies

To set up wholesale billing only for specific accounts, see "Creating Wholesale Accounts and Bill Unit Hierarchies".

You can also convert existing account hierarchies to use wholesale billing. See "Converting Existing Bill Unit Hierarchies to Wholesale Billing" for more information.

Enabling Wholesale Billing for All Accounts

When wholesale billing is enabled using the business parameter, BRM lets you create only wholesale accounts and bill unit hierarchies.

To enable this feature, run the pin_bus_params utility to change the WholesaleBillingSystem business parameter. See "pin_bus_params" in BRM Developer's Guide for information about the utility's syntax and parameters.

To enable wholesale billing for all of your accounts:

  1. Go to BRM_home/sys/data/config.

  2. Create an XML file from the /config/business_params object:

    pin_bus_params -r BusParamsBilling bus_params_billing.xml
  3. In the XML file, set the following entry to enabled:

    <WholesaleBillingSystem>enabled</WholesaleBillingSystem>
  4. Save the file as bus_params_billing.xml.

  5. Load the file into the BRM database:

    pin_bus_params bus_params_billing.xml
  6. Stop and restart the Connection Manager (CM).

  7. (Multischema systems only) Run the pin_multidb script with the -R CONFIG parameter. For more information, see "pin_multidb" in BRM System Administrator's Guide.

If you enable this parameter in a system with existing bill unit hierarchies, run the pin_cust_convert_wholesale_hierarchy utility to convert the existing hierarchies to use wholesale billing. See "pin_cust_convert_wholesale_hierarchy" for more information about this utility.

Creating Wholesale Accounts and Bill Unit Hierarchies

You can create accounts and bill unit hierarchies for wholesale billing by using Billing Care or by using custom applications that call BRM opcodes. You can also convert existing bill unit hierarchies to wholesale billing.

A wholesale parent account can have only one bill unit.

For more information about accounts and bill unit hierarchies, see "Managing Account and Bill Unit Hierarchies" in BRM Managing Customers.

Create accounts and bill unit hierarchies and set up the wholesale parent account by:

  1. Configuring Wholesale Business Profile

  2. Setting Up a Wholesale Parent

  3. Creating a bill unit hierarchy

You can add any existing bill unit to a wholesale bill unit hierarchy or set up a new wholesale bill unit hierarchy by using the existing bill units in BRM. However, you must ensure the following:

  • There are no pending items or payments in the bill unit that you are adding to the hierarchy.

  • The parent bill unit is the paying bill unit and it is set as the wholesale parent for billing.

  • The wholesale parent for the wholesale bill unit hierarchy is set before creating the hierarchy.

This ensures that the charges and other billing-related items of the nonpaying child bill units in the hierarchy are rolled up to the paying parent bill unit during billing.

Configuring Wholesale Business Profile

To configure the wholesale business profile:

  1. Open the pin_business_profile.xml file in an XML editor or a text editor.

    By default, this file is in the BRM_home/sys/data/config directory.

  2. Set the <WholesaleBilling> element to yes:

    <WholesaleBilling>yes</WholesaleBilling>
  3. Save and close the file.

  4. Load the file into the database by running the following command:

    load_pin_business_profile pin_business_profile.xml

    Note:

    • When you run the utility, the pin_business_profile.xml and business_configuration.xsd files must be in the same directory. By default, both files are in BRM_home/sys/data/config.

    • This utility needs a configuration (pin.conf) file in the directory from which you run the utility.

    • If you do not run the utility from the directory in which pin_business_profile.xml is located, include the complete path to the file. For example:

      load_pin_business_profile BRM_home/sys/data/config/pin_business_profile.xml
  5. (Multischema systems only) Run the pin_multidb script with the -R CONFIG parameter. For more information, see "pin_multidb" in BRM System Administrator's Guide.

Setting Up a Wholesale Parent

To set up a wholesale parent, you assign the bill unit that you want to use as the wholesale parent to the wholesale business profile (/config/business_profile object).

You can assign the bill unit during or after account creation:

  • During account creation: Create an account by calling PCM_OP_CUST_COMMIT_CUSTOMER. In the opcode's input flist, specify the /config/business_profile object's POID in the PIN_FLD_BUSINESS_PROFILE_OBJ field of the appropriate BILLINFO array element. See "Assigning Bill Units to Business Profiles" in BRM Opcode Guide.

  • After account creation: Assign a bill unit for an existing account to a business profile by calling PCM_OP_CUST_CHANGE_BUSINESS_PROFILE. See "Changing a Bill Unit's Business Profile" in BRM Opcode Guide.

Rolling Charges Up to the Wholesale Parent

During final billing, all charges (such as recurring, purchase, and usage charges) applied to the nonpaying child bill units (wholesale child accounts) are aggregated based on the item-tag-to-item-type mapping (item configuration) and are rolled up to the corresponding bill items of the paying parent bill unit (wholesale parent account).

If the bill item for any item type does not exist for the paying parent bill unit, the bill item is created during billing and the charges are rolled up to that item. However, Oracle recommends to pre-create the bill items for the different item types by setting the precreate element to true in the BRM_home/sys/data/pricing/example/config_item_types.xml file. For more information, see "Mapping Item Tags to Item Types".

The total and due amounts of the paying parent bill unit are updated to reflect the roll-up and the due amount of each nonpaying child bill unit is set to 0. Payments are applied only to the paying parent bill unit.

If you want the charges for different services to be rolled up to different bill items, you can assign different item types for different services. For example, for rolling up cycle forward fees for IP and GSM services, you can configure and assign the following items: /item/ip/cycle_forward for the IP service and /item/gsm/cycle_forward for the GSM service.

You can also assign a different item type (or a noncumulative bill item) to track charges specific to the paying parent bill unit. For information about assigning items, see "Assigning Item Tags Based on Event and Service Combinations".

Rolling A/R Actions Up to the Wholesale Parent

BRM manages the balances for A/R actions by using these A/R items: adjustment, dispute, settlement, payment, refund, payment reversal, write-off, and write-off reversal. See "About A/R Management" in BRM Concepts.

To roll up A/R actions for wholesale billing, you use the pin_roll_up_ar_items utility. This utility processes all temporary A/R items (/tmp_ar_item_to_roll_up object) for nonpaying child bill units, and rolls the balance impact up to the corresponding A/R items of the paying parent bill unit. For example, it rolls the adjustments allocated to the nonpaying child bill unit's /item/cycle_forward item up to the adjustment item associated with the /item/adjustment item of the paying parent bill unit.

You can run the pin_roll_up_ar_items utility on a daily basis to ensure that the A/R items of the paying parent bill unit are kept up to date. However, you must run this utility once before billing the paying parent bill unit. See "pin_roll_up_ar_items" in BRM Managing Accounts Receivable.

In addition, you can use the pin_roll_up_ar_items utility to roll up the adjustment items that are created as a result of rerating. During rerating, the temporary A/R items (/tmp_ar_item_to_roll_up object) are created for the nonpaying child bill units if these conditions are met:

  • The event has already been billed.

  • The event occurred prior to general ledger posting.

  • The event is unbilled but the automatic allocation of rerating adjustments is disabled.

If the event is unbilled and the automatic allocation of rerating adjustments is enabled, the rerating adjustment is allocated to the bill item of the nonpaying child bill unit.

Note:

Rerating adjustments rolled up to the paying parent bill unit are allocated to the corresponding A/R item only if it exists in the paying parent bill unit. If the A/R item does not exist, the rerating adjustments remain unallocated at the parent level.

Rolling Journals Up to the Wholesale Parent

For nonpaying child bill units, the /tmp_journals_to_process objects are created instead of the /journal objects at the time of rating. The /tmp_journals_to_process objects are created only if the cycle_tax_interval entry in the CM configuration file is set to billing. For more information, see the discussion about tax calculation for account groups in BRM Calculating Taxes.

The /tmp_journals_to_process objects contain revenue and tax data. For wholesale billing, BRM uses these objects primarily to track and consolidate taxes for billing-time taxation. To roll up journals for wholesale billing, you use the pin_update_journal utility.

Note:

To roll up journals for wholesale billing, you must ensure that the general ledger reporting is enabled. For more information, see the discussion about general ledger reporting in BRM Collecting General Ledger Data.

The pin_update_journal utility processes all /tmp_journals_to_process objects of the nonpaying child bill units and rolls them up to the corresponding /journal object of the paying parent bill unit.

You can run the pin_update_journal utility on a daily basis to ensure that the paying parent bill unit is kept up to date. However, you must run this utility once before billing the paying parent bill unit. For more information, see "pin_update_journals".

If deferred taxation is configured to:

  • Consolidate taxes into a single item (if cycle_tax_interval is set to billing), the pin_update_journal utility enables you to roll the taxes up into a single item for both the paying parent and nonpaying child bill units. The total tax is calculated at the paying parent level for the entire hierarchy using the aggregated total due as the basis.

  • Calculate taxes separately for the parent and each nonpaying child bill unit (if cycle_tax_interval is set to accounting), the /journal objects are created for the nonpaying child bill units instead of /tmp_journals_to_process objects and the taxes are not rolled up to the paying parent bill unit.

Converting Existing Bill Unit Hierarchies to Wholesale Billing

You can convert existing account hierarchies to use wholesale billing. The account hierarchy must meet the qualifications for a wholesale hierarchy, so you cannot convert a hierarchy where the parent account has multiple parent bill units.

The method you use to convert the account hierarchy depends on the method you used to enable wholesale billing.

If you enabled wholesale billing only for specific accounts, use the PCM_OP_CUST_CONVERT_WHOLESALE_HIERARCHY opcode to convert the account hierarchy. See "Converting an Account Hierarchy to Wholesale Billing" in Opcode Guide for more information about this opcode.

If you enabled wholesale billing for the whole system, as described in "Enabling Wholesale Billing for All Accounts," use the pin_cust_convert_wholesale_hierarchy utility. See "pin_cust_convert_wholesale_hierarchy" for more information about this utility.

Create the input file for the utility using the following format:

<BusinessConfiguration
    xmlns="http://www.portal.com/schemas/BusinessConfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.portal.com/schemas/BusinessConfig BusinessConfiguration.xsd">
 
    <ConvertWholesaleConfiguration>
        <!-- List of Billinfos to be converted -->
        <Billinfo>
            <BillinfoId>311038</BillinfoId>
            <Account>1210</Account>
        </Billinfo>
        <Billinfo>
            <BillinfoId>304210</BillinfoId>
            <Account>1423</Account>
        </Billinfo>
 
        <!-- List of Business profiles to be converted                
        <BusinessTypeArray>
            <BusinessProfile>122816</BusinessProfile>
            <BusinessProfileName>WholesaleBilling</BusinessProfileName>
        </BusinessTypeArray>
        <BusinessTypeArray>
            <BusinessProfileName>WholesaleBilling</BusinessProfileName>
        </BusinessTypeArray>
        <BusinessTypeArray>
            <BusinessProfile>311122</BusinessProfile>
        </BusinessTypeArray>
        -->
    </ConvertWholesaleConfiguration>
</BusinessConfiguration>

Running Wholesale Billing

Note:

The following features are not supported for wholesale billing:

  • Bill Now

  • On-purchase (on-demand) billing

  • Skipped billing

If you are using bill suppression for billing wholesale accounts, you must run wholesale billing at the end of each accounting cycle.

To run wholesale billing:

  1. Roll up A/R actions from nonpaying child bill units to the paying parent bill unit by running the pin_roll_up_ar_items utility:

    pin_roll_up_ar_items

    See "pin_roll_up_ar_items" in BRM Managing Accounts Receivable for information about the utility's syntax and parameters.

  2. Roll up temporary journals from nonpaying child bill units to the paying parent bill unit by running the pin_update_journals utility:

    pin_update_journals

    See "pin_update_journals" for information about the utility's syntax and parameters.

  3. Generate regular bills by running the pin_bill_accts utility:

    pin_bill_accts -active

    See "pin_bill_accts" for information about the utility's syntax and parameters.

    Note:

    After the nonpaying child bill units are billed, you cannot perform A/R activities (such as adjustments, disputes, and settlements) on the billed events until the paying parent bill unit is billed.

  4. Generate regular invoices for the wholesale parent account by running the pin_inv_accts utility:

    pin_inv_accts -reg_bills

    See "pin_inv_accts" in BRM Designing and Generating Invoices for more information about the utility's syntax and parameters.

Configuring Billing Delay for Wholesale Hierarchies

Delayed billing is supported for wholesale hierarchies. You must specify the billing delay even if it is not used. In this case, you can set the billing delay interval to 0. See "Configuring Delayed Billing".

Setting Up Billing-Time Discounts for Wholesale Hierarchies

For wholesale bill unit hierarchies, you set up a billing-time discount as follows:

  • Configure billing-time discount only for the paying parent bill unit in the hierarchy.

  • Configure BRM to apply the billing-time discount at the end of the billing cycle instead of the accounting cycle.

  • Configure non-billing-time discounts (usage discounts) for the nonpaying child bill units in the hierarchy. The usage discount increments the counter. For example, if the billing-time discount for the paying parent bill unit is based on total monthly charges, you can create a discount for a nonpaying child bill unit that increments the counter when charges are applied.

For rolling the discounts up to the paying parent bill unit at the time of billing, you customize the PCM_OP_SUBSCRIPTION_POL_PRE_CYCLE_DISCOUNT policy opcode to return the list of balance element/resource IDs of the counters (in the PIN_FLD_BALANCES output flist field) for which the balances to be rolled up to the paying parent bill unit in the hierarchy.

For more information about billing-time discounts, see "Creating Discount Offers" in BRM Creating Product Offerings.

Suppressing Bills for Wholesale Hierarchies

You can use bill suppression to postpone finalizing bills for wholesale accounts. When bill suppression is enabled, the charges applied to the nonpaying child bill units are rolled up to the paying parent bill unit at the end of the accounting cycle. Therefore, you must run the pin_roll_up_ar_items, pin_update_journals, and pin_bill_accts utilities in the same order at the end of each accounting cycle. See "Running Wholesale Billing".

Trial Billing for Wholesale Hierarchies

When you perform trial billing for wholesale bill unit hierarchies, you must run the billing for nonpaying child bill units (wholesale child accounts) before running the billing for the paying parent bill unit (wholesale parent account). To do so, run the pin_trial_bill_accts utility with the -pay_type parameter.

For more information, see "About Trial Billing for Bill Unit Hierarchies and Sharing Groups".

Support for A/R Activities

For wholesale bill unit hierarchies, the support for A/R activities varies from level to level:

  • Account level. Adjustments, disputes, and settlements can be performed only at the parent bill unit level after billing.

  • Bill level. Adjustments, disputes, and settlements can be performed only after billing at the parent bill unit level.

  • Event level. Adjustments, disputes, and settlements can be performed at the child bill unit level before and after billing.

  • Item level. Adjustments and disputes can be performed at the child bill unit level only before billing. After billing, adjustments and disputes are allowed only at the parent bill unit level. However, settlements can be performed before and after billing at the child bill unit level.

Write-offs can be performed only at the parent bill unit level after billing.

Specifying Search Criteria for Retrieving Items, Events, and Bills

To retrieve a list of items, events, or bills, BRM uses the following A/R and payment opcodes:

  • PCM_OP_AR_GET_ACTION_ITEMS

  • PCM_OP_AR_GET_ACCT_ACTION_ITEMS

  • PCM_OP_AR_GET_BAL_SUMMARY

  • PCM_OP_AR_GET_ACCT_BAL_SUMMARY

  • PCM_OP_AR_GET_BILL_ITEMS

  • PCM_OP_AR_GET_BILLS

  • PCM_OP_AR_GET_DISPUTE_DETAILS

  • PCM_OP_AR_GET_DISPUTES

  • PCM_OP_AR_GET_ACCT_BILLS

  • PCM_OP_PYMT_ITEM_SEARCH

  • PCM_OP_PYMT_MBI_ITEM_SEARCH

  • PCM_OP_PYMT_SELECT_ITEMS

Based on the search criteria provided as input, these opcodes search through all bill units in a hierarchy. This can impact wholesale billing performance if you have large wholesale bill unit hierarchies. To improve performance, restrict your search to specific bill units.

Similarly, BRM uses the PCM_OP_AR_GET_ITEM_DETAIL and PCM_OP_AR_GET_ITEMS opcodes to retrieve details about a bill unit's A/R items or bill items. These opcodes cannot retrieve all details about rolled-up items in a wholesale hierarchy. For example, for the A/R items of the paying parent bill unit, these opcodes cannot retrieve the corresponding transfer events for the rolled-up disputes and settlements. Therefore, modify your search to retrieve only the details that are available for wholesale hierarchies.

For information about the search criteria for these opcodes, see "Retrieving A/R Information" in BRM Opcode Guide.

Moving Bill Units into or out of Wholesale Hierarchies

You can move nonpaying child bill units into or out of a wholesale bill unit hierarchy. You can also move them between wholesale bill unit hierarchies. Before moving a bill unit, ensure that there are no pending items or payments in that bill unit.

When you move a nonpaying child bill unit to another hierarchy, all items in that bill unit are associated with the corresponding items of the new paying parent bill unit and the new parent is billed for them. If a bill item does not exist in the new parent, it is created and the charges are rolled up to that item.

Specifying How to Calculate Deferred Taxes for Wholesale Billing

You specify how BRM calculates deferred taxes for wholesale billing by setting the CycleTaxInterval business parameter to one of the following:

  • Accounting: The tax for a child account is applied to its bill. BRM calculates taxes for parent accounts and for all child accounts. This is the default.

  • Billing: The tax is forwarded from the child account to the parent account. BRM calculates taxes for the parent account only, but the single tax item on the parent account includes taxes from both the parent and child accounts.

You set the CycleTaxInterval business parameter by using the pin_bus_params utility. For information about the utility's syntax and parameters, see "pin_bus_params" in BRM Developer's Guide.

To specify how to calculate deferred taxes for wholesale billing:

  1. Go to the BRM_home/sys/data/config directory, where BRM_home is the directory where you installed BRM components.

  2. Create an XML file from the /config/business_params object:

    pin_bus_params -r BusParamsBilling bus_params_billing.xml

    This command creates the XML file named bus_params_billing.xml.out in your working directory. To place this file in a different directory, specify the path as part of the file name.

  3. Open the bus_params_billing.xml.out file.

  4. Set the <CycleTaxInterval> element:

    <CycleTaxInterval>value</CycleTaxInterval>

    where value is either accounting (default) or billing.

  5. Save this file as bus_params_billing.xml.

  6. Load the XML file into the BRM database:

    pin_bus_params bus_params_billing.xml
  7. Stop and restart Connection Manager (CM).

  8. (Multischema systems only) Run the pin_multidb script with the -R CONFIG parameter. For more information, see "pin_multidb" in BRM System Administrator's Guide.