34 Improving Pricing and Rating Performance
Learn how to improve pricing and rating performance in Oracle Communications Billing and Revenue Management (BRM).
Topics in this document:
Changing the Precision of Rounded and Calculated Values
You can improve performance by changing the precision of rounded values and values calculated by online rating. You change the precision by adding or modifying entries in the Connection Manager (CM) pin.conf file:
-
To change the precision of rounded values, add or change the rating_quantity_rounding_scale entry. The value of this entry determines the number of digits to the right of the decimal place for rounding quantities. The default is 8.
-
To change the precision of calculated values, add or change the rating_max_scale entry. The value of this entry determines the number of digits listed to the right of the decimal place. The default is 10.
Note:
You must stop and restart the CM after you change these values.
Setting the Interval for Checking for Product Offering Changes
You can set the interval at which BRM checks for changes to your product offerings. You may want to use a shorter interval if you frequently change your offerings. If your offerings are less volatile, you can increase the interval.
To change the interval:
-
Open the CM configuration file (BRM_home/sys/cm/pin.conf).
-
Edit the following entry:
- fm_rate refresh_product_interval 3600The value of this entry determines the interval in seconds. The default is 3600.
-
Save the file.
-
Stop and restart the CM.
Setting the Interval for Updating Value Maps
To specify how frequently BRM checks for changes to value maps and updates them in the database:
-
Open the CM configuration file (BRM_home/sys/cm/pin.conf).
-
Edit the following entry:
- fm_zonemap_pol update_interval 3600
The value of this entry determines the interval in seconds. The default is 3600.
-
Save the file.
-
Stop and restart the CM.
Filtering the ERAs Considered During Rating and Discounting
By default, online rating checks for both account-level extended rating attributes (ERAs) (/profile/acct_extrating object) and service-level ERAs (/profile/serv_extrating object) when searching for rating and discounting criteria. You can improve online rating performance by using the pin_bus_params utility to filter the types of ERAs that BRM considers when it searches for rating and discounting criteria. For example, you can configure BRM to search for only service-level ERAs or omit the ERA search altogether. For information about this utility, see "pin_bus_params" in BRM Developer's Guide.
To specify the ERA types:
-
Go to BRM_home/sys/data/config.
-
Use the following command to create an editable XML file from the rating instance of the /config/business_params object:
pin_bus_params -r BusParamsRating bus_params_rating.xmlThis command creates an XML file named bus_params_rating.xml.out in your current directory. If you do not want this file in your current directory, specify the path as part of the file name.
-
In bus_params_rating.xml.out, set the following entry:
<EnableEras>value</EnableEras>where value is one of the following:
-
serviceAndAccount: Checks for both account-level extended rating attributes (/profile/acct_extrating object) and service-level ERAs (/profile/serv_extrating object) when searching for rating and discounting criteria. This is the default.
-
account: Limits the rating and discounting criteria search to account-level ERAs by retrieving only the /profile/acct_extrating object.
-
service: Limits the rating and discounting criteria search to service-level ERAs by retrieving only the /profile/serv_extrating object.
-
disabled: Omits ERAs from the rating and discounting criteria. Because neither object is retrieved, this option provides the best performance.
Caution:
BRM uses the XML in this file to overwrite the existing instance of the /config/business_params object. Use care when updating parameters in the file.
-
-
Save and exit the file.
-
Rename the bus_params_rating.xml.out file to bus_params_rating.xml.
-
Use the following command to load your changes into the /config/business_params object:
pin_bus_params bus_params_rating.xmlYou should run this command from the BRM_home/sys/data/config directory, which includes support files used by the utility. To run it from a different directory, see "pin_bus_params" in BRM Developer's Guide.
-
Read the object with the testnap utility or the Object Browser to verify that all fields are correct.
For general instructions on using testnap, see "Using the testnap Utility to Test BRM" in BRM Developer's Guide. For information on how to use Object Browser, see "Reading Objects" in BRM Developer's Guide.
-
Stop and restart the CM.
See "Starting and Stopping the BRM System" for more information.
Configuring the Maximum Number of Charge and Discount Offers Cached
Charge offers and discount offers used during the online rating process are automatically stored in the CM cache. This improves rating performance, but over time, it can consume a large amount of memory. To prevent the CM cache from growing too large, you can use the pin_bus_params utility to set a maximum number of charge offers and discount offers that can be stored in the CM cache. For information about this utility, see "pin_bus_params" in BRM Developer's Guide.
-
When you set the maximum to a nonzero value, BRM prevents the online rating engine from storing more than the specified number of charge offers and discount offers in the CM cache. When the maximum number is reached, BRM flushes 10% of the charge offers and discount offers that have been used the least from the cache.
Note:
The maximum number of charge offers and discount offers that should be stored in the CM cache depends on your business needs.
-
When you set the maximum to zero, BRM does not regulate the number of charge offers and discount offers stored in the CM cache. This is the default.
To set a maximum number of charge offers and discount offers that can be cached:
-
Go to BRM_home/sys/data/config.
-
Use the following command to create an editable XML file from the rating instance of the /config/business_params object:
pin_bus_params -r BusParamsRating bus_params_rating.xmlThis command creates an XML file named bus_params_rating.xml.out in your current directory. If you do not want this file in your current directory, specify the path as part of the file name.
-
In bus_params_rating.xml.out, set ProductsDiscountsThreshold to the maximum number of charge offers and discount offers you would like stored in the cache:
<ProductsDiscountsThreshold>value</ProductsDiscountsThreshold>The default value of 0 specifies not to regulate the number of charge offers and discount offers in the CM cache.
Caution:
BRM uses the XML in this file to overwrite the existing instance of the /config/business_params object. Use care when updating parameters in the file.
-
Save and exit the file.
-
Rename the bus_params_rating.xml.out file to bus_params_rating.xml.
-
Use the following command to load your changes into the /config/business_params object:
pin_bus_params bus_params_rating.xmlYou should run this command from the BRM_home/sys/data/config directory, which includes support files used by the utility. To run it from a different directory, see "pin_bus_params" in BRM Developer's Guide.
-
Read the object with the testnap utility or the Object Browser to verify that all fields are correct.
For general instructions on using testnap, see "Using the testnap Utility to Test BRM" in BRM Developer's Guide. For information on how to use Object Browser, see "Reading Objects" in BRM Developer's Guide.
-
Stop and restart the CM.
See "Starting and Stopping the BRM System" for more information.
Improving Performance for Loading Large Product Offerings
If you have a large product offering, you can improve performance in the following ways:
-
Cache pricing data, such as G/L IDs and balance element IDs. In a test environment where you frequently modify your product offerings, caching pricing data improves performance because there is no need to load price reference objects every time you commit the product offerings to the database.
Note:
Pricing data is created every time the CM starts. Whenever the pricing data is changed in the database, the CM must be stopped and restarted to place the new information into the cache.
You do not need to cache pricing data in a production system where you rarely modify your product offerings. This reserves the CM cache for other uses and eliminates the need to stop and restart the CM to update the cache if you change your product offerings.
-
Turn off event logging for product offering creation events.
Note:
When you turn off event logging, BRM still stores audit trail information for charge offers, bundles, and packages. However, an event log tracking the modified product offerings and who modified them still needs to be created.
You configure these values using the pin_bus_params utility. For information about this utility, see "pin_bus_params" in BRM Developer's Guide.
To improve loading performance:
-
Open the CM configuration file (BRM_home/sys/cm/pin.conf).
-
Specify the cache attributes for storing product provisioning tags. The default entries are usually sufficient.
- cm_cache fm_price_prod_provisioning_cache 100, 102400, 13
-
Specify the cache attributes for storing balance element IDs (BEIDs). The default entries are usually sufficient.
- cm_cache fm_price_cache_beid 200, 524288, 32
-
Specify the cache attributes for storing offer profiles. The default entries are usually sufficient.
- cm_cache fm_offer_profile_cache 20, 102400, 13
Note:
For policy-driven charging, the fm_offer_profile_cache entry must be present in the pin.conf file. -
Save and exit the file.
-
Go to BRM_home/sys/data/config.
-
Use the following command to create an editable XML file from the pricing instance of the /config/business_params object:
pin_bus_params -r BusParamsPricing bus_params_pricing.xmlThis command creates an XML file named bus_params_pricing.xml.out in your current directory. If you do not want this file in your current directory, specify the path as part of the file name.
-
In bus_params_pricing.xml.out, do the following:
-
Set CacheReferencesAtStart to enabled to cache pricing data or disabled to not cache pricing data. The default is enabled.
<CacheReferencesAtStart>enabled</CacheReferencesAtStart> -
Set LogPriceChangeEvent to enabled to log when product offerings are modified or to disabled to turn off event logging for product offering changes. The default is disabled.
<LogPriceChangeEvent>disabled</LogPriceChangeEvent>
Caution:
BRM uses the XML in this file to overwrite the existing instance of the /config/business_params object. If you delete or modify any other parameters in the file, these changes affect the associated aspects of the BRM configuration.
-
-
Save and exit the file.
-
Rename the bus_params_pricing.xml.out file to bus_params_pricing.xml.
-
Use the following command to load your changes into the /config/business_params object:
pin_bus_params bus_params_pricing.xmlYou should run this command from the BRM_home/sys/data/config directory, which includes support files used by the utility. To run it from a different directory, see "pin_bus_params" in BRM Developer's Guide.
-
Read the object with the testnap utility or the Object Browser to verify that all fields are correct.
For general instructions on using testnap, see "Using the testnap Utility to Test BRM" in BRM Developer's Guide. For information on how to use Object Browser, see "Reading Objects" in BRM Developer's Guide.
-
Stop and restart the CM.
See "Starting and Stopping the BRM System" for more information.
Improving Performance in Retrieving Product Details During Product Purchase
By default, BRM retrieves product details from the rating cache during product purchase. However, reading many rate plans to retrieve product details can take a lot of time, which slows down the process.
To speed up the product purchase process, you can use the pin_bus_params utility to configure BRM to directly retrieve the product details from the database instead of the rating cache during purchase. For information about this utility, see "pin_bus_params" in BRM Developer's Guide.
Note:
Setting the GetRatePlanFromCache field to disabled will impact the billing performance.
To improve performance by retrieving product details from the cache:
-
Go to BRM_home/sys/data/config.
-
Use the following command to create an editable XML file from the subscription instance of the /config/business_params object:
pin_bus_params -r BusParamsSubscription bus_params_subscription.xmlThis command creates the 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.
-
In bus_params_subscription.xml.out, set GetRatePlanFromCache to disabled:
<GetRatePlanFromCache>disabled</GetRatePlanFromCache>Caution:
BRM uses the XML in this file to overwrite the existing instance of the /config/business_params object. Use care when updating parameters in the file.
-
Save and exit the file.
-
Rename the bus_params_rating.xml.out file to bus_params_rating.xml.
-
Use the following command to load your changes into the /config/business_params object:
pin_bus_params bus_params_rating.xmlYou should run this command from the BRM_home/sys/data/config directory, which includes support files used by the utility. To run it from a different directory, see "pin_bus_params" in BRM Developer's Guide.
-
Read the object with the testnap utility or the Object Browser to verify that all fields are correct.
For general instructions on using testnap, see "Using the testnap Utility to Test BRM" in BRM Developer's Guide. For information on how to use Object Browser, see "Reading Objects" in BRM Developer's Guide.
-
Stop and restart the Connection Manager (CM).
See "Starting and Stopping the BRM System" for more information.
Improving Performance for Large Discount Sharing Groups
Large discount sharing groups, such as those with thousands of members, can affect rating and charging performance because BRM must lock the entire sharing group and update shared balances in real-time. When many members submit requests simultaneously, this process can slow down the system.
You can improve processing and reduce locking issues by limiting locking of the entire sharing group to session termination and mid-session triggers, while using only member-level balance operations for initiate and update session events. This optimization supports very large discount sharing groups by reducing real-time updates to shared balances.
Note:
-
This optimization applies only to discount sharing groups. It does not support distribution, charge sharing, monitor sharing, or profile sharing groups.
-
Each member account maintains its own balance. Initiate and Update requests use the member’s balance. Terminate requests impact the parent account balance.
-
If at least one agreement in a group qualifies for large sharing, this feature applies to all discount sharing requests within that group.
This optimization reduces real-time updates to shared balances and enables greater scalability. As a result, there may be brief delays in enforcing group limits or sending real-time notifications.
About Mid-Session Triggers and Rating Flow Behavior
ECE records usage events when a network session ends. For sessions that last a long time, ECE can use mid-session triggers, such as session duration or usage volume, to record usage before the session completes. See "About Midsession Rated Events" in ECE Implementing Charging for more information.
ECE handles Initiate and Update requests at the member level, using the individual account’s balance and discounts. Only Terminate requests and mid-session trigger events cause ECE to update shared balances and discounts for the group.
Note:
After a mid-session trigger occurs, ECE does not allow any additional mid-session triggers within the same session.
Setting Up Large Discount Sharing Group Optimization
To optimize processing for large discount sharing groups, set up service classification to identify which accounts belong to a large discount sharing group.
To configure service classification:
-
Enable the feature in ECE. For more information, see "Configuring Large Discount Sharing Group Optimization in ECE".
-
Specify the discount sharing group accounts that use the feature. For more information, see "Configuring Large Discount Sharing Group Optimization in BRM".
-
Configure BRM and ECE to synchronize sharing group type details. See "Synchronizing Sharing Group Type Information Between BRM and ECE".
Configuring Large Discount Sharing Group Optimization in ECE
You can configure large discount sharing group optimization by setting the largeGroupMode attribute. You do this in one of two ways:
-
At installation. See "Configuring the largeGroupMode Attribute at Installation".
-
During runtime. See "Configuring largeGroupMode Attribute During Runtime".
Note:
The largeGroupMode attribute is off by default.
Configuring the largeGroupMode Attribute at Installation
You can configure the largeGroupMode attribute during installation by editing the charging-settings.xml file. To do so:
-
Open the ECE_home/config/management/charging-settings.xml file.
-
Set the largeGroupMode attribute to DISCOUNT_SHARING.
-
Restart ECE. See "Starting and Stopping ECE".
Configuring largeGroupMode Attribute During Runtime
You can use a JMX editor to configure the largeGroupMode attribute when ECE is running.
To configure the largeGroupMode attribute:
-
Access the ECE configuration MBeans in a JMX editor, such as JConsole. See "Accessing ECE Configuration MBeans".
-
Expand the ECE Configuration node.
-
Expand charging.server.
-
Expand Attributes and select largeGroupMode.
-
Set the value of the attribute to DISCOUNT_SHARING.
Configuring Large Discount Sharing Group Optimization in BRM
You must explicitly identify which discount sharing groups should use large sharing group optimization.
BRM passes the PIN_FLD_TYPE_STR value to the SharingGroupClassifier attribute in ECE, which identifies whether an account belongs to a large sharing group. The PIN_FLD_TYPE_STR value is stored in the /group/sharing/discounts object.
You can enable large group sharing optimization while doing one of the following::
-
Creating a discount sharing group. For more information, see "Configuring Large Group Sharing Optimization When Creating a Discount Sharing Group".
-
Modifying a discount sharing group. For more information, see "Configuring Large Group Sharing Optimization When Modifying a Discount Sharing Group".
Configuring Large Group Sharing Optimization When Creating a Discount Sharing Group
To configure large group sharing optimization when creating a discount sharing group:
-
Use your custom client application to call the PCM_OP_SUBSCRIPTION_SHARING_GROUP_CREATE opcode.
-
Set the PIN_FLD_TYPE_STR field in the input flist to LARGE_GROUP.
For example:
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 1610580 9 0 PIN_FLD_GROUP_OBJ POID [0] 0.0.0.1 /group/sharing/discounts -1 8 0 PIN_FLD_BAL_GRP_OBJ POID [0] 0.0.0.1 /balance_group 1613012 0 0 PIN_FLD_DESCR STR [0] "" 0 PIN_FLD_EFFECTIVE_T TSTAMP [0] (1514793600) Mon Jan 1 00:00:00 2018 0 PIN_FLD_NAME STR [0] "DSG_wpa_sp2_lpa_1_l2_ga1" 0 PIN_FLD_PARENT POID [0] 0.0.0.1 /service/telco/gsm/telephony 1612852 8 0 PIN_FLD_TYPE_STR STR [0] "LARGE_GROUP"
Configuring Large Group Sharing Optimization When Modifying a Discount Sharing Group
To configure large group sharing optimization when modifying a discount sharing group:
-
Use your custom client application to call the PCM_OP_SUBSCRIPTION_SHARING_GROUP_MODIFY opcode.
-
Set the PIN_FLD_TYPE_STR field in the input flist to LARGE_GROUP.
For example:
0 PIN_FLD_POID POID [0] 0.0.0.1 /account 275586 9 0 PIN_FLD_GROUP_OBJ POID [0] 0.0.0.1 /group/sharing/discounts 275922 0 0 PIN_FLD_EFFECTIVE_T TSTAMP [0] (1514793600) Mon Jan 1 00:00:00 2018 0 PIN_FLD_PROGRAM_NAME STR [0] "sharing_api" 0 PIN_FLD_MEMBERS ARRAY [1] allocated 20, used 2 1 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account 277794 8 1 PIN_FLD_SERVICE_OBJ POID [0] 0.0.0.1 /service/telco/gsm/telephony 275554 8 0 PIN_FLD_TYPE_STR STR [0] "LARGE_GROUP"Note:
A group or service is defined as either always optimized or never optimized. This status does not change dynamically.
Synchronizing Sharing Group Type Information Between BRM and ECE
To ensure consistency in customer and sharing group data, BRM and ECE synchronize the sharing group type information. See "Synchronizing Account Data Between the BRM Database and ECE" for more information about BRM and ECE synchronization.
Sharing group type synchronization occurs when:
-
ECE is restarted.
-
ECE receives one of the following events from the EM Gateway:
-
CreateGroupSharingDiscounts
-
ModifyGroupSharingDiscounts
-
DeleteGroupSharingDiscounts
-
AddOrderedBalanceGroup
-
DeleteOrderedBalanceGroup
-
ModifyOrderedBalanceGroup
These events include the PIN_FLD_TYPE_STR field and enable ECE to update the customer data with the new value.
Ensure that you are using the 15.2 version of the payloadconfig_ece_sync.xml file. For more information see "Updating the BRM Configuration Files" in ECE Installation Guide.
-