12 Working with Price Tags

This chapter describes how to use price tags in your Oracle Communications Billing and Revenue Management (BRM) system and describes how BRM uses price tags to apply special prices at purchase time.

About Price Tags

Price tags are components that let you apply special prices to products and discounts according to your specified rules.

You configure price tags in configuration objects, add them to balance impacts when creating products and discounts, and set their values at purchase time.

The rules configured in the configuration objects determine which price tags are valid for a given balance impact and which values can be used at purchase time. You cannot use price tags with chargeshares.

When you configure price tag configuration objects, you define the following:

  • The price tag name.
  • The price tag description.
  • What type of values are allowed. Can be any value, a list of values, or a range of values.
  • The values that are allowed, according to the specified type.
  • The resources you add the price tag to. For example, Free Minutes, US Dollars, or any resource.
  • The unit of measurement you can use the price tag with. For example, gigabytes, hours, amount used, or any unit.
  • The services you can use the price tag with. For example, TelcoGSM, Email, or any service.

You create the configuration objects config_price_tags.xml files and load them using the load_config utility. BRM stores price tag configuration information in the /config/price_tags storable class. See "Creating Price Tag Configuration Objects".

After configuring price tag configuration objects, you can update or delete them under certain conditions. See "Modifying Price Tag Configuration Objects".

You add price tags to products and discounts in your price list and BRM validates them against the configuration objects. You can add the price tags using:

You can use the PCM_OP_SUBSCRIPTION_GET_PRICE_TAGS opcode to get the list of price tags that are valid for a resource, unit of measure, service, or product. See "Getting Information about Price Tags" in BRM Opcode Guide for more information about this opcode.

At purchase time, you specify values for the price tags. BRM validates the values entered against those configured in the configuration objects and stores the price tag details, including associated events, date ranges, and amounts, in /offering_override_values objects. See "Overriding Charges and Discounts for a Period of Time" in BRM Opcode Guide for more information about this opcode for more information about how these objects are updated.

Creating Price Tag Configuration Objects

You create price tag configuration objects in a config_price_tags.xml files and load them using the load_config utility.

To create price tag configuration objects:

  1. Open the BRM_home/sys/data/config/config_price_tags.xml file in a text editor.

    The file contains sample price tags, but you can modify them to meet your business needs.

  2. Add a PRICE_TAGS array element for every new tag you want to create.

    Table 12-1 describes the elements in the price tag configuration file.

    Table 12-1 Elements in the PRICE_TAGS element

    Element Description
    <NAME> The name of the price tag.
    <DESCR> The description of the price tag.
    <RULE_TYPE> The type of values for the price tag:
    • ANY: Lets you enter any value as a string. This is the default.
    • LIST: Lets you specify a list of values.
    • RANGE: Lets you specify a range of values.
    <CONSTRAINTS> The valid values, in the format that corresponds to the rule:
    • If <RULE_TYPE> is set to ANY, this element is not required, and any value can be entered at purchase time.
    • If <RULE_TYPE> is set to LIST, enter a semicolon separated list of values. For example, 10;20;30.

      The default value is 0, which allows all values.

    • If <RULE_TYPE> is set to RANGE, enter the values for the bottom and top of the range, separated by a semicolon. For example, 10:30.

      The default value is 0:0, which allows all values.

    Values can be positive or negative integers or decimals.

    <RESOURCE_ID> The resource ID for the balance elements you can use the price tag with. For example, 840 for US Dollars, or 0 to add the price tag to multiple balance elements.
    <RESOURCE_UNIT> The resource unit for the balance elements that you can use the price tag with. Valid units are:
    • BYTE
    • KILOBYTE
    • MEGABYTE
    • GIGABYTE
    • DAY
    • HOUR
    • MINUTE
    • SECOND
    • AMOUNT_USED
    • FIXED_CHARGE
    • NONE (for scaled charges)
    • ANY

    The default is ANY, which lets you add the price tag to multiple types of resource unit.

    <PERMITTED> The services that you can use the price tag with. You can list multiple services, separated by a semicolon. You can use * to match multiple services, for example, /service/telco/* to use with services under telco, or * to use it with any service.

    The following sample creates several new price tags:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ObjectList
      xmlns="http://www.oracle.com/schemas/BusinessConfig"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.oracle.com/schemas/BusinessConfig ../../../xsd/config_object.xsd">
     
      <ConfigObject configName="/config/price_tags" configMode="replaceAll">
        <DESCR>Price tags configuration</DESCR>
        <NAME>price_tags</NAME>
        <PRICE_TAGS elem="0">
          <NAME>PRICE1</NAME>
          <DESCR>Dollar Override</DESCR>
          <RULE_TYPE>ANY</RULE_TYPE>
          <RESOURCE_ID>840</RESOURCE_ID>
          <RESOURCE_UNIT>NONE</RESOURCE_UNIT>
          <PERMITTED>/service/email; /service/ip</PERMITTED>    
        </PRICE_TAGS>    
        <PRICE_TAGS elem="1">
          <NAME>PRICE2</NAME>
          <DESCR>Override seconds charges</DESCR>
          <RULE_TYPE>LIST</RULE_TYPE>
          <CONSTRAINTS>10;20;30;100</CONSTRAINTS>
          <RESOURCE_ID>1000095</RESOURCE_ID>
          <RESOURCE_UNIT>MONTH</RESOURCE_UNIT>
           <PERMITTED>/service/*</PERMITTED>
        </PRICE_TAGS>
        <PRICE_TAGS elem="2">
          <NAME>PRICE3</NAME>
          <DESCR>Dollar Override</DESCR>
          <RULE_TYPE>RANGE</RULE_TYPE>
          <CONSTRAINTS>10;200</CONSTRAINTS>
          <RESOURCE_ID>840</RESOURCE_ID>
          <RESOURCE_UNIT>NONE</RESOURCE_UNIT>
          <PERMITTED>/service/telco/*</PERMITTED>
        </PRICE_TAGS>
      </ConfigObject>
    </ObjectList>
  3. Save and close the file.
  4. Edit the load_config utility's configuration file (BRM_home/apps/load_config/pin.conf) to specify how to connect to the BRM database.
  5. Load the config_price_tags.xml file into the BRM database:
    1. Switch to the BRM_home/apps/load_config directory.
    2. Run the following command:
      load_config -vM BRM_home/sys/data/config/config_price_tags.xml

    See "load_config" in BRM Developer's Guide for more information.

  6. Stop and restart the Connection Manager (CM).
  7. Verify that the price tags were loaded properly by running the following command:
    load_config -w "price_tags" config_price_tags.xml

Modifying Price Tag Configuration Objects

You can modify price tag configuration objects in a config_price_tags.xml files and load them using the load_config utility under certain conditions.

You modify price tag configuration objects the same way you create them. See "Creating Price Tag Configuration Objects".

Caution:

When you load configuration objects, the load_config utility overwrites existing instances of the /config/price_tags object. If you are updating price tags or adding new ones, you cannot load new or changed price tags only. You must load the complete set of price tags each time you run the load_config utility.

You can modify any fields of price tag configuration objects that have not been added to balance impacts of products or discounts.

For price tags that have been added to products or discounts, you can modify the following fields:

  • <DESCR>
  • <RULE_TYPE>
  • <CONSTRAINTS>

You are responsible for understanding the potential impact that modifying these fields might have on the products and discounts that the price tags have been associated with.

Using Price Tags With Sequential Discounts

BRM supports price tags with sequential discounts, including overriding price tags based on their date. For any date range covered by a price tag, the tag’s terms override the discount’s default configuration. When a discount includes a price tag that is valid for only part of the billing cycle, BRM splits the billing cycle into segments according to the price tag’s start and end times and applies sequential discounts per segment. BRM calculates rating and discounting for segments where the price tag is active, while the rest of the discount is processed without the price tag. This is also true if discounts overlap. BRM creates sub-periods and applies the price tags in each sub-period as the discounts are applied sequentially.

For example, consider a bundle with a monthly charge of $100 for the period January 1 through 31 and these two discounts:

  • D1: 10% discount with a price tag valid from January 10 through 19.
  • D2: 20% discount with a price tag valid from January 15 through 24.
BRM applies sequential discounts as follows:
  • January 1 through 9: D1 and D2 are applied with their default values and no active price tags.
  • January 10 through 14: D1 applies with its configured price tag for five days, resulting in a discount of $1.61. That is, [(5 days/31 days x $100) x .10], and D2 applies with its default value and no active price tag.
  • January 15 through 19: Both D1 and D2 apply with their configured price tags for five days, resulting in a total discount of $4.51. That is, D1 applies $1.61 first and then D2 applies $2.90. That is, [(5 days/31 days) x ($100 x 0.9) x .20]. Here, 0.9 is the remaining balance after D1.
  • January 20 through 24: D1 applies with its default value and no active price tag, and D2 applies with its configured price tag for five days, resulting in a total discount of $3.23. That is, [(5 days/31 days x $100) x .20].
  • January 25 through 31: D1 and D2 are applied with their default values and no active price tags.