6 Offering the Best Price to Your Customers

This chapter provides information on how to set up pricing in the Oracle Communications Billing and Revenue Management (BRM) system to calculate and offer the best price to your customers at billing time.

About Offering the Best Price to Your Customers

You can use the best pricing feature to calculate prices using different alternate deals at billing time and use the deal that offers the best price to the customer. You can either rerate the relevant events in the billing cycle by using the best deal or perform a one-time credit adjustment by applying the difference in charges between the base deal and the alternate best deal to the customer's balance.

For more information on base deals and alternate deals, see "About the Best Pricing Configuration" in BRM Setting Up Pricing and Rating.

For more information about how BRM calculates the best price in various situations, see "How BRM Determines the Best Deal".

Caution:

Calculating the best price involves rerating account events multiple times, which affects the performance of the billing process.

To offer the best price to your customers, perform the following tasks:

  • Configure BRM to use best pricing. See "About Configuring BRM to Use Best Pricing".

  • Set up a base deal and a set of alternate deals by using Pricing Center. For information on creating the best deals, see the discussion about creating deals in the Pricing Center online help.

  • (Optional) Specify a minimum charge for the alternate deal and specify conditions that must be met for the alternate deal to qualify for best pricing by using Pricing Center. See the discussion about defining a minimum charge for an alternate deal and defining conditions for an alternate deal for best pricing in the Pricing Center online help.

  • Specify whether you want to rerate the events using the best deal or use the calc-only rating results and apply a credit to reduce the total charges in the bill by using Pricing Center. See the discussion about specifying how to apply savings from the best pricing calculation in the Pricing Center online help.

  • Purchase a best pricing deal for an account by using Customer Center. See the discussion about purchasing a deal in the Customer Center help.

  • (Optional) Determine the savings from the best pricing calculation by using the PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING opcode or by using Customer Center.

    For more information, see "Calculating the Best Price by Using the Best Pricing Opcode" and the discussion about viewing the savings from best pricing in the Customer Center online help.

  • Bill your customers by running the pin_bill_accts utility with the options for best pricing or by using the Bill Now option in Customer Center.

    For information on using the Bill Now option, see Customer Center Help.

How BRM Determines the Best Deal

BRM performs the best pricing calculation by using the PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING opcode for each service or subscription service that has best pricing configured. For each account, it performs the calculation one at a time using all the best pricing deals available.

To apply the best price to a customer's balance, BRM follows these steps at billing time, after applying all the charges and discounts and before applying billing-time taxes:

  1. Performs a calc-only rerating operation by using each alternate deal and compares the resulting charges with the base deal charges.

  2. Determines the best deal to be the deal that offers the lowest charge.

  3. If the base deal charges are the lowest, retains that balance impact.

  4. If an alternate deal charges are the lowest, depending on how you configured best pricing, performs one of the following steps:

    • Rerates the events based on the best alternate deal and updates the balance.

    • Reduces the balance by the difference between the base deal balance impacts and the best deal balance impacts by applying a one-time credit adjustment.

      If the CALC-ONLY flag is set, the balance is not updated.

      Important:

      To perform a best pricing calculation in the middle of a billing cycle, perform the operation in calc-only mode.

Best pricing calculation considers only the alternate deals that are valid at the time of the calculation. It filters out the following types of alternate deals:

  • Alternate deals with a minimum charge greater than the charges calculated using the base deal. For information on specifying a minimum charge, see See the discussion about defining a minimum charge for an alternate deal in the Pricing Center online help.

    The minimum charge is usually the sum of all cycle fees per accounting cycle. If a billing cycle spans multiple accounting cycles, the minimum charge is multiplied by the number of accounting cycles in the billing cycle.

    Note:

    Best pricing does not support an accounting cycle longer than the billing cycle.
  • Alternate deals that fail to meet all the conditions that you specify. For more information on specifying conditions for alternate deals, see the discussion about defining conditions for an alternate deal for best pricing in the Pricing Center online help.

Calculating the Best Price by Using the Best Pricing Opcode

To calculate the best price, call PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING during billing or trial billing.

You call this opcode to calculate the best price after applying all the charges and discounts and before applying billing-time taxes. This opcode calculates the best price for each service instance or subscription service with the best pricing configuration.

If the CALC-ONLY flag is set, this opcode does not apply the balance impacts from the best pricing calculation.

Important:

If you calculate the best price in the middle of a billing cycle, ensure that you perform the operation in calc-only mode. Otherwise, the balance impacts are committed to the database.

This opcode performs the following tasks to calculate and apply the best price:

  1. Takes as input an account or an account and scope, which can include billing information, service, and deal.

  2. If best pricing is configured, retrieves the list of deals, services, and balance groups from the /billinfo or /service objects. Otherwise, returns without doing anything.

    Note:

    If only the account object is passed, this opcode retrieves all the account-level and service-level deals for the account. If the account billing information is passed, it retrieves all the services in the billing information.
  3. Finds the best pricing configuration for each account, service, and subscription service.

  4. Prepares the services list:

    1. If the scope is deal level, this opcode finds the service with which the deal is associated and determines that it is not a subscription service or discount sharing group (DSG).

    2. If the scope is service level, this opcode checks if the service is a parent in a DSG or an owner in an ordered balance group (OBG). If the service is a parent or owner, it includes all the children or the members in the service list. If the service is a child or member, it includes only that service.

    3. If the scope is billinfo level, this opcode finds all services for this billinfo. If the service is a parent or owner, it includes all the children or the members in the service list. If the service is a child or member, it includes only that service.

  5. Calls the PCM_OP_BAL_GET_BALANCES opcode to get a snapshot of the balances to compare with alternate deal charges.

  6. Calls the PCM_OP_BAL_RERATE_REBILL opcode with the CALC_ONLY flag to rerate events using alternate deals.

  7. Performs a best pricing calculation for the services by comparing the base deal charges with each alternate deal charge.

    Note:

    Alternate deals must meet the specified conditions, have a minimum charge lower than the base deal charge, and be within the validity period to qualify for the best pricing analysis.
  8. If this opcode is called at the end of the billing cycle without the CALC_ONLY flag, performs one of the following actions:

    • If full rerating is required, calls the PCM_OP_BAL_RERATE_REBILL opcode without the CALC_ONLY flag.

    • If a one-time balance adjustment is required, calls the PCM_OP_ACT_USAGE opcode with the best deal charges and the base deal charges in the input flist to record the event.

About Calculating the Best Deal When Alternate Deal Has a Best Pricing Configuration

If the best pricing configuration includes an alternate deal that has a best pricing configuration, the best pricing calculation includes only the base deal of that alternate deal.

For example, suppose best pricing deal A contains an alternate deal, Alt1, and Alt1 itself is a best pricing deal. When calculating the best price, the base deal A is compared only to the base deal for Alt1 and not the alternate deals of Alt1 to avoid multilevel recursive best pricing calculation.

About Finding the Best Deal in the Middle of a Billing Cycle

If best pricing is configured, a best pricing calculation is automatically performed at the end of the billing cycle during billing. However, you can find the best deal in the middle of a cycle by performing the best pricing calculation in calc-only mode for all the relevant services without applying the charges. You can find the best deal in the middle of a billing cycle without applying charges by using these methods:

  • From Customer Center. The result of the calculation will be displayed in the Best Pricing dialog box. See Customer Center Help.

  • By calling PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING from your client application with the CALC-ONLY flag. The results of the calculation will be returned in an flist. See "Calculating the Best Price by Using the Best Pricing Opcode".

    Important:

    When you calculate the best price in the middle of a billing cycle, cycle arrears events are not generated and are not included in the calculation.

About Rerating Events to Apply the Best Price

To rerate events to apply the best price, call PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING without the CALC-ONLY flag. PCM_OP_SUBSCRIPTION_CALC_BEST_PRICING calls the PCM_OP_SUBSCRIPTION_RERATE_REBILL opcode, which performs the following functions:

  • Backs out events for the specified services that occurred in the specified rerating period.

  • Rerates them in chronological order.

  • Uses the best alternate deal instead of the base deal for the account.

  • For events that occurred outside the validity period for the alternate deal, uses the base deal for the account.

When rerating a discount sharing group account, this opcode rerates both owner and member account events using discounts from the best deal. It uses only the products owned by the owner and member accounts to rate events.

About Rerating Events for a Prior Cycle for Which the Best Deal Was Applied

While rerating a prior billing cycle, if a best pricing configuration is found, BRM performs a best pricing calculation for that complete cycle. Best pricing calculation backs out and rerates only events that occurred during the billing cycle.

Adjusting the Account Balance to Apply the Best Deal

If you select a one-time credit adjustment to apply savings, the same audit event is used to apply the balance adjustments for that bill. The adjustment amount is the difference between the charges calculated by using the base deal and the alternate deals and are grouped by resource, general ledger ID (G/L ID), and tax code.

If the account is a discount sharing account with multiple bills for best pricing, the adjustments are made to the bills based on net balance impacts from the corresponding bills.

How BRM Calculates the Best Price for Subscription Groups

To enable multiple services to use best pricing, you can use a subscription group consisting of a subscription service with which the deal is associated and member services that share the best pricing configuration. When you configure best pricing for the subscription group, ensure that the subscription group service type is the parent of the member service types. For example:

  • Subscription service: /service/telco/gsm

  • Member services:

    • /service/telco/gsm/telephony

    • /service/telco/gsm/fax

    • /service/telco/gsm/voice

For more information about subscription services, see "About Subscription Services" in BRM Managing Customers.

Calculating the Best Price for Subscription Services

If the subscription service has a best pricing configuration with n alternate deals and all the member services have regular deals, BRM calculates best pricing n times. The best pricing calculations include all the ratable events from the subscription service and the member services.

If you want all member service events to be included in the best pricing calculation, configure the best pricing deal at the subscription service level.

Calculating the Best Price for Member Services

If a member service has best pricing configured with m alternate deals, BRM calculates best pricing m times and includes only the events in that member service. If the subscription service has a best pricing configuration, only its base deal is used in the best pricing calculation of the member service.

To offer the best price only for a specific member service and exclude other member services in the subscription group, configure best pricing at that member service level.

How BRM Calculates the Best Price in Resource Sharing Groups

This section describes how BRM calculates best pricing in resource sharing groups. For more information on resource sharing groups, see "About Resource Sharing Groups" in BRM Managing Accounts Receivable.

Calculating the Best Price for a Discount Sharing Group

If best pricing is configured for a discount sharing group owner service, BRM includes all the ratable events from both the owner and member services in calculating the best price. It uses the alternate deals from the owner and base deals from the members to calculate the best price. It ignores the minimum charge values specified for alternate deals because the costlier alternate deal with the minimum charge might offer more savings to the discount sharing group members.

Best pricing calculation can result in rerating the events of the discount sharing group services. Therefore, billing for the discount sharing group members is finalized only after the best pricing calculation is performed.

If a discount sharing group member service has best pricing configured, best pricing calculation is performed for the member service when the member service is billed.

Calculating the Best Price for a Charge Sharing Group

Best pricing calculation ignores the charge sharing configuration and does not include the sponsored amount for the charge share owner and the members.

About Applying Exclusion Rules for Deals in a Best Pricing Configuration

You can specify exclusion rules for deals and discounts so that an account cannot own two mutually exclusive deals or discounts. Deal exclusion rules are applied when a deal is purchased, and discount exclusion rules are applied at billing time.

For more information, see "About Deal Dependencies" in BRM Setting Up Pricing and Rating and "About Discount Exclusion Rules" in BRM Configuring Pipeline Rating and Discounting.

Mutually Exclusive Deals and Best Pricing

When an add-on deal is purchased, if either the existing deal or the add-on deal is a best pricing deal and the two deals have an exclusive relationship, the exclusion rules also apply to the alternate deals. If the exclusion check results are not consistent across all the deals, the add-on purchase fails.

For example, suppose a service has a deal, A. If an add-on best pricing deal B with alternate deals Alt1 and Alt2 is purchased, exclusion check is performed for deal A against deals B, Alt 1, and Alt 2. If deal B is excluded from deal A, deals Alt1 and Alt2 must also be excluded. Otherwise, the add-on purchase fails.

Mutually Exclusive Discounts and Best Pricing

BRM applies discount exclusion rules after preparing the discount list from all the relevant deals, potentially reducing the number of discounts, before calculating the best price.

About Keeping Track of Best Pricing Information

BRM creates an audit event to record each best pricing calculation unless best pricing is performed in calc-only mode.

The audit event includes the following data:

  • The base deal.

  • The best deal, if the base deal is not the best deal.

  • The balance impacts of rating using the base deal and the best deal.

  • The start and end times of the best pricing calculation.

  • How the best price is applied by rerating the events or by adjusting the balance with the difference in the charges between the best and base deals.

About Configuring BRM to Use Best Pricing

Before you can use best pricing, you must configure BRM to use best pricing by updating the subscription parameter class in the /config/business_params object by using the pin_bus_params utility. For information on pin_bus_params, see BRM Developer's Guide.

Enabling Best Pricing

To enable best pricing:

  1. Create an editable XML file for the subscription parameter class by using the following command:

    pin_bus_params -r BusParamsSubscription bus_params_subscription.xml  
    

    This command creates an XML file named bus_params_subscription.xml.out in your working directory. If you do not want this file in your working directory, specify the full path as part of the file name.

  2. In the BusParamsSubscription section, enable best pricing as follows:

    <BusParamsSubscription>
    ...
       <BestPricing>enabled</BestPricing>
    </BusParamsSubscription>
    
  3. Load the change into the /config/business_params object by using the following command:

    pin_bus_params bus_params_subscription.xml  
    

    Run this command from the BRM_Home/sys/data/config directory, which includes support files used by the utility. BRM_Home is the directory where you installed BRM components. To run it from a different directory, see pin_bus_params.

  4. Read the object with the testnap utility or Object Browser to verify that all fields are correct.

    For general instructions on using testnap, see "Using testnap" in BRM Developer's Guide. For information on how to use Object Browser, see "Reading Objects by Using Object Browser" in BRM Developer's Guide.

    The resulting flist of the testnap utility must resemble this example, with the PIN_FLD_PARAM_VALUE field value set to 1:

    0 PIN_FLD_POID           POID [0] 0.0.0.1 /config/business_params 9806 0
    0 PIN_FLD_ACCOUNT_OBJ    POID [0] 0.0.0.1 /account 1 0
    0 PIN_FLD_DESCR           STR [0] "Business logic parameters for Subscription"
    0 PIN_FLD_HOSTNAME        STR [0] "-"
    0 PIN_FLD_PARAMS        ARRAY [1] allocated 4, used 4
    1 PIN_FLD_DESCR           STR [0] "Parameter to enable or disable best pricing feature.
                                       Enabling this feature will be effective only if license
                                       is loaded for best pricing. 1 means enabled."
    1 PIN_FLD_PARAM_NAME      STR [0] "best_pricing"
    1 PIN_FLD_PARAM_TYPE      INT [0] 1
    1 PIN_FLD_PARAM_VALUE     STR [0] "1"
    
  5. Stop and restart the Connection Manager (CM) after editing the object. See "Starting and Stopping the BRM System" in BRM System Administrator's Guide.