12 Creating Discount Offers
Learn how to create discount offers in Pricing Design Center (PDC) for Oracle Communications Billing and Revenue Management (BRM).
Topics in this document:
About Discount Offers and Discounts
A discount offer is a purchasable product offering, similar to a charge offer. You can use discount offers to do the following:
- Reduce a charge by a percentage. For example, reduce the monthly fee by 50%.
- Track usage or spending by using counters and discount the charge for an event based on the value of the counter. For example, a discount can track usage and apply a 25% discount to the charge of an event when over 1000 minutes have been used.
- Consume or grant balance impacts. For example, if an event is charged
one dollar per minute, you can use a discount offer to allow the customer to use
their included minutes and credit the corresponding charge. The discount offer would
include a discount with two balance impacts:
- Consume one minute for every dollar charged.
- Credit one dollar for every minute consumed.
- Consume balance impacts immediately instead of reserving them. You can do this using the Instant Debit impact type. For example, if an Instant Debit of 2 dollars is fixed for a usage event, 2 dollars would be added to the bucket every time a usage event is triggered.
Note:
The Instant Debit impact type is supported only on ECE-enabled systems and is applicable to currency resource in a usage event.A discount offer includes one or more discounts. Every discount has one or more balance impacts. The balance is represented by a currency or noncurrency balance element. A debit balance must be a noncurrency balance element, such as minutes.
Figure 12-1 shows a balance impact for a 10 percent discount on a monthly recurring charge.
Figure 12-1 Discount Reducing a Charge by a Percentage
Description of "Figure 12-1 Discount Reducing a Charge by a Percentage"
A discount is calculated based on two elements in the balance impact, the values in the Per Unit column and the What to Discount column. The Per Unit value is how to apply the balance element amount to the What to Discount value.
In Figure 12-1, the Per Unit value is a percentage, applied to the charge (the What to Discount value). Because the event is charged in US Dollars, the balance impact is also in US Dollars. A currency balance element must be the same balance element in the charge that the discount is granted to.
The Per Unit value can be a percentage, an absolute value, or incremental; for example, apply the discount for every 10 gigabytes downloaded. The What to Discount value can be based on a charge, a quantity, a balance, or a calculation of multiple values.
Figure 12-2 shows a discount that grants 5 minutes for every 10 gigabytes of data downloaded. The What to Discount value in this case is the value that is used to calculate the discount by applying the Per Unit value.
Figure 12-2 Grant 5 Minutes for Every 10 Gigabytes
Description of "Figure 12-2 Grant 5 Minutes for Every 10 Gigabytes"
Figure 12-3 shows a discount that credits $5 on a purchase fee. In this case, the Per Unit value is Fixed, so the What to Discount value is not needed for calculating the discount and is set to Not Applicable.
A discount offer applies to a single service. You can also configure a discount offer to apply to the account. In that case, a discount would apply to charges for the same event for any service owned by the account. Discount offers that apply to a service are not valid when the service is inactive or canceled. Account discount offers are valid even if no service is active.
You can also make a discount offer eligible for tying with specific charge offers at purchase time. When a discount offer is tied to a charge offer, BRM applies the discount only to the purchased charge offer or charge offers that share the same tie ID. This lets you target a discount to a specific charge in a bundle, instead of applying it to every eligible charge for the service and event type. See "Tying Discount Offers with Charge Offers".
Within each discount offer, each discount has a discount type based on the events configured for the service that the discount offer applies to. Discount types are organized in discount categories as follows:
- Usage: These discount types discount usage events. For example,
you might use the following:
- The ConvergentUsage discount type to discount Wireless Voice events.
- The ConvergentData discount type to discount Wireless Data events.
- Recurring: These discount types discount recurring events, such as a monthly fee. For example, recurring discount types might be Monthly Recurring Event and Annual Recurring Event.
- One-time: These discount types discount one-time events, such as purchase events or cancel events.
- Billing Time: This discount type is calculated when billing is run, instead of when the charge is rated. See "About Billing-Time Discounts" for information.
For recurring discounts, note the following:
- Although a charge offer cannot contain both cycle forward and cycle arrears charges, a discount offer can contain both types of cycle discounts as long as their frequency (monthly, yearly, and so on) is the same.
- A recurring discount is applied to all the recurring charges for the same service. For example, if there are different Monthly Recurring Event charges for the same service, the Monthly Recurring Event discount applies to all of them. You can use discount filters to apply different discounts to them, by selecting different pricing names. See "About Discount Filters".
When you create a discount offer in PDC, you configure settings that apply to the offer, for example, when the discount offer is available for purchase. See "Configuring How Discount Offers are Purchased and Applied".
When you create a discount, you can define the following:
- You can calculate discounts based on quantity, for example, the quantity of minutes used. See "Applying Discounts Based on Quantity".
- You can use filters to specify criteria that a charge must satisfy to be eligible for the discount. See "About Discount Filters".
- You can use discount triggers to restrict the application of a discount until certain conditions are met. See "About Discount Triggers".
- You can use the results of one discount to calculate another discount for the same event. See "About Using Temporary Balances in Discounts".
- You can calculate discounts based on data in the BRM database, or other data that is not directly configurable in PDC. See "Using Functions to Calculate a Balance Impact".
- You can use rules to apply multiple filters, triggers, and pricing to the same event. See "Applying Multiple Discount Versions to an Event".
- You can use counters to create a value that can provide a discount when billing is run. See "About Billing-Time Discounts".
- You can use date ranges to apply different discounts based on a fixed date range. See "Configuring Effective Dates for Discounts".
- You can configure how a discount is applied when it is valid for only part of a cycle. See "Configuring Discount Validity".
- You can create a billing-time discount that distributes a percentage discount to all accounts in a discount sharing group. See "About Snowball Discounts".
- If you configured product specification attributes for discount offers in XML templates, you can set their values. See "Configuring Product Specification Attributes for Pricing Components".
- If you configured price tag setup components, you can apply price tags to discount offers at the balance element level. See "Applying Price Tags to Discount Offers".
Configuring How Discount Offers are Purchased and Applied
You can control how a discount offer is purchased and applied by configuring the following:
- Subscription discount offers and system discount offers:
- Subscription: The discount offer applies only to the customer who owns the discount offer.
- System: The discount offer applies to all customers who use the specified service. Use system discounts when you do not want to re-create the same discount multiple times in your product offerings.
- A range of dates during which the discount offer can be purchased. To be added to a
bundle, a discount offer must have a purchase period that is the same as or greater
than the bundle's purchase period.
You can also specify the effective period for the discount offer when you configure the bundle that the discount offer belongs to. For example, you can set the discount to be effective one month after it is purchased. See "About the Validity Periods of Offers in Bundles".
- How many instances of the discount offer that the customer can purchase and own.
- Whether the discount offer can be automatically shared with all members of a billing hierarchy.
- Whether the discount offer can be tied to specific charge offers at purchase time. Only discount offers marked as tied can be associated with specific purchased charge offers. See "Tying Discount Offers with Charge Offers".
- The priority of each discount offer. Offers with higher priority numbers are applied before those with lower priority numbers.
- How to apply multiple discount offers to a single charge. See "Applying Multiple Discount Offers to an Event" for information.
- How to configure mutually exclusive discount offers. See "Configuring Mutually Exclusive Discount Offers" for information.
- What happens when a customer purchases the same subscription discount offer multiple times. The discount offer can be purchased as a new subscription or a replacement of the existing subscription. See "Purchasing the Same Offer in a Bundle Multiple Times".
Applying Multiple Discount Offers to an Event
The same charge or portion of a charge can be eligible for multiple discount offers. When this occurs, BRM uses the discount offer priority and the following options to determine how to apply the discount offers to the charge:
-
Original Charge: The discount offer is applied to the original charge amount, regardless of whether that amount was reduced by previous discount offers.
-
Remaining Charge: The discount offer is applied to whatever charge amount remains after previous discount offers are applied.
-
Remaining Charge and Quantity: The discount offer is applied only to the part of the charge and quantity that was not discounted already by a previous discount offer. For this option, the discount offer can be used only if:
-
Part of the charge has not yet been evaluated for a discount.
-
The discount offer consumes noncurrency balances or reduces currency charges.
-
The discount does not grant balances.
-
For example, a bundle includes the following discount offers:
-
First priority: 10% off
-
Second priority: 20% off
The customer makes a 100-minute call at $0.10 a minute for a total charge of $10. The discount for the charge is calculated as follows:
-
Using Original Charge:
-
First discount: 10% of $10 = $1 discount
-
Second discount: 20% of $10 (the original charge) = $2 discount
-
Total discount = $3
-
-
Using Remaining Charge:
-
First discount: 10% of $10 = $1
-
Second discount: 20% of $9 (the remaining charge) = $1.80
-
Total discount = $2.80
-
-
Using Remaining Charge and Quantity:
-
First discount: 10% of $10 = $1
-
Second discount: Not applied because there is no remaining charge that has not been discounted.
-
Total discount = $1
-
Configuring Mutually Exclusive Discount Offers
You configure discount offer exclusions to prevent a discount offer from being used or purchased when another discount offer or package is owned. You can use two methods to configure mutually exclusive discounts:
-
Discount offer-to-discount offer exclusions. You can configure a discount offer to exclude the application of other discount offers when both discount offers apply to the same event. You configure discount offer-to-discount offer exclusions when you create discount offers.
-
Discount offer-to-package exclusions. You can configure a package to exclude specified discount offers. You specify discount-to-package exclusions when you create packages.
Discount offer-to-package exclusions can be configured to operate in two ways:
-
At purchase. If an exclusion relationship exists between a discount offer and a package, a customer can own the discount offer or the package, but not both. Further, the customer cannot own any discount offers associated with the package if the customer owns the excluded discount offer.
-
At run time during charging. In this case, the customer can purchase the excluded discount, but it is not applied during charging or billing.
-
When configuring discount exclusions, note the following:
-
To exclude a billing-time discount, you must also exclude the counter discount associated with the billing-time discount. See "About Billing-Time Discounts" for more information.
-
Discount exclusion takes precedence over discount priority. That is, a discount can be excluded even if it has a higher priority than the discount that is excluding it.
-
System discounts can be excluded.
-
Shared discounts can be excluded.
Discount exclusions are disabled by default. To enable discount exclusions, see "Enabling Mutually Exclusive Discount Offers" in BRM Managing Customers.
Applying Discounts Based on Quantity
To apply discounts based on usage amount or on an amount in a balance, you can create quantity ranges. For example, a discount for a mobile phone service might contain the following quantity ranges:
-
0 through 500 minutes: No discount
-
500 through 1000 minutes: 10% off
-
1000 minutes through No Maximum: 15% off
In this example, the quantity is based on how many minutes are used. You can also base the quantity on the charge, an amount in a balance, or a calculated value.
The start and end values of all quantity ranges must be decimal except that you can use a calculated value to specify the end value of the last quantity range. For example, to use all the minutes in a balance, the calculation would be:
0 - Balance[Included Minutes]
In addition to specifying what to base the quantity on (usage, charges, and so on), you specify how to apply the discount to the quantity ranges. There are two options:
-
Pick the quantity range containing the value: Applies the discount in the range that contains the entire quantity amount. Using the previous example, if the value is 700, the ranges are applied as follows:
-
0–500: Does not qualify.
-
500–1000: The discount for this range is applied to the entire result.
-
1000-Maximum: Does not qualify.
Note:
In this option, the start value for the quantity range is inclusive and the end value is exclusive. For example, a range of 0 through 500 applies to quantities greater than or equal to 0 and less than 500. -
-
Distribute value across applicable quantity ranges: The pricing in each range is applied to the amount of the basis that falls within it. If the value is 700, the ranges are applied as follows:
-
0–500: The discount for this range is applied to the first 500 minutes.
-
500–1000: The discount for this range is applied to minutes from 500 to 700.
-
1000-Maximum: Does not qualify.
-
You can use absolute value and square root functions in quantity range expressions when setting discounts. Use these to calculate discount tiers based on the magnitude or the square root of the quantity.
When you distribute the value across ranges, you can use StepCharge or StepQuantity for the What to Discount value. This ensures that the discount is applied to only part of the quantity range:
-
StepCharge bases the discount on the charge that applies to the quantity range, not the entire charge.
-
StepQuantity bases the discount on the event quantity that applies to the quantity range.
About Discount Filters
A discount filter specifies criteria that a charge or a portion of a charge must satisfy to be eligible for the discount. For example, a discount might apply only to calls made on weekends or during December.
Filter criteria can be defined by specific values (such as a time period from a specified time model) or by using regular expressions.
You can create filters based on several values; for example, the amount consumed by the event, a balance element, a time period (peak and off-peak) and so on.
Figure 12-4 shows a discount filter that applies a discount to the event if it is measured in volume (not duration) and the balance element is a prepaid balance.
When creating a discount filter:
-
You can specify a date range that defines when the filter is valid.
-
If a discount has multiple filters, all filters are applied.
-
A filter can be reused by multiple discounts.
-
You can enter NOT operator in the following fields to specify the values to be excluded:
-
GLID
-
Time Period
-
Impact Category
-
Generic Selector Result
-
Note:
PDC does not validate the expressions entered in the fields.
Click the Search icon to search for existing filters and add to the discount.
About Discount Triggers
You can use discount triggers to restrict the application of a discount until certain conditions are met. For example:
-
The number of domestic call minutes is less than or equal to 100.
-
The bytes used in a GPRS session must be greater than 1 MB.
Figure 12-5 shows a discount trigger in PDC.
If a discount trigger includes multiple conditions, all conditions must be met for the discount to be granted.
Discount triggers accept absolute value and square root functions in their conditions. Use these functions in trigger expressions when you want to evaluate the magnitude or square root of a value before applying a discount.
A discount can have only one trigger. A trigger can be used by multiple discounts.
About Using Temporary Balances in Discounts
Typically, you use temporary balances when you need the results of one discount to calculate another discount for the same event.
For example, consider a discount that awards 5 text messages if the amount of data transferred in a data usage event exceeds 1 megabyte and the session duration exceeds 30 minutes. In this situation, Discount 1 would determine the amount of data sent or received and store it in Temporary Balance A. Discount 2 would determine the duration of the session and store it in Temporary Balance B. Discount 3 would grant 5 text messages if the data in Temporary Balance A exceeds 1 megabyte and the session length in Temporary Balance B exceeds 30 minutes.
You can only use noncurrency balances for temporary balances. Rounding rules do not apply to them.
Unlike other balances, temporary balances are maintained only while a single event is being discounted. If multiple discounts are applied to a single event, the temporary balance is maintained until all the discounts are processed.
For billing-time discounts, temporary balances are maintained only while a single discount is processed. Therefore, you cannot use temporary balances for billing-time discounts to pass a balance impact from one discount offer to another.
Using Functions to Calculate a Balance Impact
Use a function in a discount to calculate a value that is not directly configurable in PDC. The function typically performs a database query. For example, it could query the total charges for the ten most frequently called numbers. This amount can then be discounted.
When configuring a discount’s balance impact, you can apply absolute value and square root functions to your calculations. This lets you adjust balance impacts based on the magnitude or square root of input values.
For example, suppose you want to implement a 10% discount on data usage from an access point. To implement this discount, you could include a function as the What to Discount value:
Function["AccessPoint"]
When BRM processes this discount, the usage amounts for the access point are substituted into the What to Discount value. A 10% discount is applied to AccessPoint usage.
Applying Multiple Discount Versions to an Event
You can apply multiple versions of a discount to the same event. To do so, you create multiple discount rules. For example, you might use discount rules to apply a discount in peak or off-peak times. A discount rule includes all of the elements of a discount: filters, triggers, and pricing. The rules are applied in the order that they appear in PDC.
You can use the same criteria (Original Charge, Remaining Charge, and Remaining Charge and Quantity) for applying multiple discount rules as you do when you apply different discount offers to the same event. See "Applying Multiple Discount Offers to an Event".
About Billing-Time Discounts
Billing-time discounts are calculated at the end of the billing cycle. This enables you to apply discounts based on the aggregation of a balance during a billing cycle. For example, you can create a billing-time discount to do the following:
-
Reduce a balance by $10 if the total usage charges for the billing cycle are more than $100.
-
Grant 10 text messages if the total minutes used during the billing cycle are more than 500.
Billing-time discounts are typically based on balances accumulated by using a counter. The counter can be used to apply usage, recurring, or one-time discounts.
For example, you can create a billing-time discount that grants 10 minutes for every $100 in usage charges. To create a billing-time discount, you set up the following discounts:
-
A non-billing-time discount that increments a counter to track Dollars Spent. Every $1 charged increments the counter by 1.
-
A billing-time discount grants 10 minutes if the Dollars Spent counter is over 100 at billing time.
Configuring Effective Dates for Discounts
You can add a date range to a discount by specifying a fixed start date and end date (discount date ranges cannot be relative). The date range is the period during which the discount is effective.
This enables you to use different versions of the same discount during different time periods by adding multiple date ranges to a single discount rather than by creating multiple discounts.
You can use different discount rules and pricing for each date range. For example, you could create a discount that applies a 10% discount for the first date range and a 20% discount for the second date range.
Date ranges cannot overlap in the same discount. For example:
-
Immediately through 6/1/2016
-
6/1/2016 through 1/1/2017
-
1/1/2017 through never ends
Note:
Date ranges for different discounts in the same discount offer can overlap.
Configuring Discount Validity
You can configure discount validity for the following cases:
Specifying Discount Behavior for Partial Cycles
You can set how to apply a discount when it is valid for only part of a cycle. For example, when a customer purchases, cancels, or inactivates a discount during an active cycle.
For each of these scenarios, specify whether the discount applies to the full cycle, a partial cycle, or does not apply:
- A discount starts mid-cycle and remains valid through the cycle end. Mid-cycle is any time after the cycle start and before the cycle end.
- A discount starts at the cycle start and ends mid-cycle.
- A discount starts mid-cycle and ends before the end of the cycle (that is, also mid-cycle).
Note:
These validity rules apply to discount operations only. When a service is purchased, canceled, or inactivated during a cycle, BRM also performs the action on all associated products and applies discounts according to the product proration settings. You set the product proration settings when you add a charge to a charge offer. For more information, see "Cycle Settings Section for Recurring Charges" in PDC Online Help.For each scenario, you specify whether the discount is applied for the full cycle, applied to part of the cycle, or is not applied at all.
For example, Figure 12-6 shows a discount that becomes valid in mid-cycle, but is applied to the entire cycle.
Note:
In this example, if the discount is a usage discount, the charges must be rerated to apply the discount to the events that occurred before the discount was valid.
Figure 12-6 Valid Mid-cycle - Full Discount

Description of "Figure 12-6 Valid Mid-cycle - Full Discount"
Figure 12-7 shows a discount that becomes valid in mid-cycle that is applied to only part of the cycle.
Figure 12-7 Valid Mid-cycle - Partial Discount

Description of "Figure 12-7 Valid Mid-cycle - Partial Discount"
Figure 12-8 shows a discount that becomes valid in mid-cycle, but no discount is applied.
Applying a Discount After the Discount Offer Is Inactivated or Canceled
For each discount, you specify whether to apply the discount after the discount offer is canceled or inactivated. This controls how to apply discounts to events that occurred prior to the discount offer cancellation or inactivation. The options are:
-
Don't stop discounting if the discount offer is inactive or canceled
-
Stop discounting if the discount offer is inactivated
-
Stop discounting if the discount offer is canceled
-
Stop discounting if the discount offer is inactivated or canceled
Configuring Validity Periods for Noncurrency Credit Balance Impacts
When you create a discount balance impact that credits noncurrency balances, such as granting minutes, you can configure a validity period for the balance impact. This is useful if you want to limit how long a customer can keep minutes in their balance before they need to purchase more minutes. Figure 12-9 shows a balance impact that grants 100 minutes that are available for one billing cycle.
You can specify a validity period corresponding to the current accounting cycle or the current billing cycle. You can also define validity period start and end times. You can start a validity period:
-
When the event occurs.
-
At first usage. Balances that start on first usage are added to the account balance at the time of the grant, but the validity starts when the subscriber uses the service for the first time.
-
From a specified date.
-
Relative to a specified date.
You can end a validity period based on:
-
A date relative to the start date (measured in minutes, hours, days, months, or in account, billing, or recurring cycles)
-
On a specified date.
-
No end date.
If a charge offer or discount offer is canceled after being used, the validity end time of any balance granted by the offer is set to the time of the cancellation.
Discount Validity Rounding
When you create a discount offer, you can specify whether a discount offer's validity period starts when the discount is purchased or at midnight of the day it was purchased.
- The PDC UI. See "Offer Settings Subsection" in PDC Online Help.
- The ImportExportPricing utility. To do so, in your input XML file, set the <validityRounding> element under the <alterationOffering> element. See "Configuring Discount Validity Rounding".
If not configured, PDC uses the system-wide setting, which you configure using the TimestampRounding business parameter. See "Configuring Time-Stamp Rounding" in BRM Configuring and Running Billing.
Discounts and Tax Calculation
You can apply a tax code to a discount. You need to define tax codes before you can assign them in discounts. You can reference the tax code directly, or you can use a tax code selector.
For information, see "About Calculating Taxes" and "Creating Tax Codes" in BRM Calculating Taxes.
Discounts and General Ledger
You assign a general ledger ID (G/L ID) to discount balance impacts. This enables you to track revenue for each type of discount.
About Snowball Discounts
A snowball discount is a type of shared billing-time discount that distributes a percentage discount to all accounts in a discount sharing group. A discount sharing group allows one account (the group owner) to share discounts with other accounts (the group members).
To implement a snowball discount, you use two discounts:
-
A discount that increments a counter.
-
A billing-time discount that calculates and distributes the discount based on the counter balance. In PDC, you designate this as a snowball discount.
For example, a discount sharing group has one owner and three members. The owner purchases a discount offer that includes a snowball discount that grants $0.01 for every minute of telephone usage. At the end of the billing cycle, the group used 4,000 minutes. A total of $40 is granted to the group. If the discount is configured to divide the grant evenly, the owner and each member receive $10.
You can also configure the discount to distribute the grant based on the minutes used for each account. For example, if the owner uses 2,500 minutes, and each member uses 500 minutes, the owner receives a $25 grant, and each member gets a $5 grant.
In addition to creating the counter discount and the billing-time discount, you need to do the following:
-
Set up a discount sharing group by defining the group owner, group members, and a list of the discounts that the group will share. See "About Discount Sharing" for more information.
-
Specify how the snowball discount is distributed in the pin_snowball_distribution file and run the load_pin_snowball_distribution utility.
The distribution you specify in the pin_snowball_distribution file becomes the default distribution. You can customize this behavior by modifying the policy opcode PCM_OP_SUBSCRIPTION_POL_SNOWBALL_DISCOUNT.
-
If the discount is to be distributed unevenly, for example, if each member gets a percentage based on its usage, configure sub-balance contributors. Specify the contributors in the pin_sub_bal_contributor file and load the file by running the load_pin_sub_bal_contributor utility. See "Defining and Loading Custom Sub-Balances" for information.
Defining How Snowball Discounts Are Distributed
To specify how snowball discounts are distributed, edit the pin_snowball_distribution file and then run the load_pin_snowball_distribution utility to load the file's contents into the /config/snowball_distribution object in the BRM database.
You set two values in the pin_snowball_distribution file:
-
The name of the discount offer.
-
Either zero or the balance element ID for the counter discount.
-
If set to zero, the discount is distributed evenly among all members of the discount sharing group.
-
If set to a balance element ID, the discount is distributed based on how much each account contributed to the amount in the counter balance.
-
Note:
If you specify a balance element, you must configure sub-balance contributors to enable BRM to track each account's contribution. See "Defining and Loading Custom Sub-Balances" for information.
For example, the following entries in the pin_snowball_distribution file specify that snowball one is distributed evenly and snowball two is distributed based on the amount each account contributed to the counter (balance element ID 1000501) at the end of the billing cycle.
snowball one : 0 snowball two : 1000501
Note:
The load_pin_snowball_distribution utility overwrites existing snowball distribution rules. If you are updating snowball distribution rules, you cannot load new snowball distribution rules only. You must load complete sets of snowball distribution rules each time you run the load_pin_snowball_distribution utility.
To configure snowball distribution rules:
-
Edit the pin_snowball_distribution file in BRM_home/sys/data/pricing/example. The pin_snowball_distribution file includes instructions.
-
Save the pin_snowball_distribution file.
-
Use the following command to run the load_pin_snowball_distribution utility:
load_pin_snowball_distribution pin_snowball_distribution
If you do not run the utility from the directory in which the file is located, you must include the complete path to the file, for example:
load_pin_snowball_distribution BRM_home/sys/data/pricing/example
Note:
If you copy the pin_snowball_distribution file to the directory from which you run the load_pin_snowball_distribution utility, you do not have to specify the path or file name. The file must be named pin_snowball_distribution.
-
Stop and restart the Connection Manager (CM).
To verify that the network elements were loaded, you can display the /config/snowball_distribution object by using the Object Browser, or use the robj command with the testnap utility. See "Reading an Object and Writing Its Contents to a File" in BRM Developer's Guide.
Applying Price Tags to Discount Offers
Note:
You cannot use price tags with temporary balance elements.To apply price tags to discount offers:
- Use the PDC UI or the ImportExportPricing utility to create
price tag setup components. Specify the price tag name and permitted values, as well
as balance elements, resource units, and services that the price tag can be
associated with.
For example, you could create a price tag called FreeMinutesTag and specify a range of valid values from 10 to 50. You can determine that it will be associated with the Free Minutes balance element, the minute resource unit, and the TelcoGSM and Telephony services.
BRM stores the pricing tag configuration in the /config/price_tags object.
See "Configuring Price Tags" for more information about creating price tag setup components.
- Use one of the following to add the price tag, such as
FreeMinutesTag, to balance elements of discounts:
- The PDC UI: Click the Price Tag icon in pricing table toolbar and then select a price tag from the Price Tag dialog box. For more information, see "Adding Price Tags for Discounts" in PDC Online Help.
- The ImportExportPricing utility: Use the <priceTag> element under the discount. See "Applying Price Tags to Discounts".
When you add a price tag to a balance element, the rules configured in the setup component determine which price tags are available. For balance elements in discount offers and discount selectors, price tags that match the balance element code and service associated with the discount are available.
- At purchase time, enter the actual value to use in rating for the price
tag. The rules configured in the setup component determine which values are valid.
For example, if the setup component is configured with the LIST rule type,
only the values configured in the list in the setup component are valid.
BRM stores the price tag values in /offering_override_values objects.
You can use BRM opcodes to get the list of valid price tags for a discount offer. See "Getting Information about Price Tags" in BRM Opcode Guide.
Tying Discount Offers with Charge Offers
You can tie a discount offer to one or more charge offers within a purchased bundle or package. Use this when a bundle contains multiple charge offers for the same service and event type, but only specific charge offers should receive the discount.
For example, a bundle can include one charge offer for a SIM purchase fee and another charge offer for a SIM activation fee. You can apply a 20% discount only to the SIM activation fee and leave the SIM purchase fee unchanged.
A tie is created by assigning the same tie ID to the purchased discount offer and the purchased charge offer. BRM applies a tied discount offer only to purchased charge offers that have the same tie ID.
-
At design time, mark the discount offer as eligible for tying with charge offers. See "Setting Discount Offers as Eligible for Tying".
-
At purchase time or after purchase, assign the same tie ID to the discount offer and the charge offer.
Note:
You can tie multiple discount offers to one purchased charge offer. You can also tie one discount offer to multiple purchased charge offers.Setting Discount Offers as Eligible for Tying
Before a discount offer can be tied to a charge offer at purchase time, make the discount offer eligible for tying. This enables you to tie discount offers to charge offers at purchase.. Only discount offers marked as tied can be tied with specific charge offers.
-
In the PDC UI, when creating or editing a discount offer, select Tie Discount Offer with Charge Offer in the Offer Settings section. For more information, see "Specify Discount Offer Settings" in PDC Online Help.
-
In the ImportExportPricing utility, set the <tieToChargeOfferEnabled> element to true in the discount offer XML definition.
For more information, see "Marking Discount Offers as Eligible for Tying with Charge Offers in XML".
When this setting is enabled, PDC stores the design-time eligibility in BRM as PIN_FLD_TIED_DISCOUNT. At runtime, the purchased discount offer can then be associated with purchased charge offers by using a tie ID.
Configuring External Applications to Manage Discount Offer Ties
If you want to use an external client application to manage discount offer ties, you must customize it to support the following actions:
-
Tie a discount offer to a charge offer. See "Tying Discount Offers at Purchase".
-
Modify the tie ID of a discount offer or charge offer after purchase. See "Changing the Tied Discount for a Charge Offer".
-
Handle discount offers that are no longer tied to an active charge offer. See "Handling Untied Discount Offers".
-
Retrieve discount offers by tie ID. See "Retrieving Discounts and Purchased Offerings by Tie ID".
For more information, see REST API Reference for Billing Care.
Tying Discount Offers at Purchase
To tie a discount offer to a charge offer during purchase, assign the same tie ID to the purchased charge offer and the purchased discount offer. You can do this using the Billing Care UI, BRM opcodes, or the Billing Care REST API.
Note:
Use the same tie ID for all purchased charge offers and discount offers that must be tied together. Use a different tie ID for a separate association group.If you use opcodes, use PCM_OP_SUBSCRIPTION_PURCHASE_PRODUCT and PCM_OP_SUBSCRIPTION_PURCHASE_DISCOUNT. For more information, see "How to Tie a Discount Offer to Charge Offers" in BRM Opcode Guide.
If you use the Billing Care REST API, use the endpoints in Table 12-1
Table 12-1 Endpoints for Tying Discount Offers at Purchase
| API Endpoint | Request Payload |
|---|---|
|
Create an Account (POST /bcws/webresources/v1.0/accounts) |
Use the following request payload fields for tying:
|
|
Add Services to an Account (POST /bcws/webresources/v1.0/accounts/{accountId}/package) |
Use the following request payload fields for tying:
|
|
Add a Bundle to an Account (POST /bcws/webresources/v1.0/accounts/{serviceId}/bundle) |
Use the following request payload fields for tying:
|
Changing the Tied Discount for a Charge Offer
After purchase, you can modify the tie ID for a purchased discount offer or purchased charge offer. This lets you associate a different discount offer with a charge offer, associate an existing discount offer with another charge offer, or remove the association. You can do this using the Billing Care UI, BRM opcodes, or the Billing Care REST API.
If you use opcodes, use PCM_OP_SUBSCRIPTION_SET_DISCOUNTINFO and PCM_OP_SUBSCRIPTION_SET_PRODINFO. For more information, see "How the Discount Offer and Charge Offer Tie ID Is Modified" in BRM Opcode Guide.
If you are using the Billing Care REST API, use the endpoints in Table 12-2.
Table 12-2 Endpoints for Modifying Discount Offer and Charge Offer Tie ID
| API Endpoint | Request Payload |
|---|---|
|
Modify a Purchased Product Offer (PUT /bcws/webresources/v1.0/subscriptions/offerdetails/{purchasedProductId}) |
Use the following request payload fields to modify tying:
|
|
Modify a Purchased Discount Offer (PUT /bcws/webresources/v1.0/subscriptions/offerdetails/{purchasedDiscountId}) |
Use the following request payload fields to modify tying:
|
To remove an association, clear the tie ID for the purchased offer. The Billing Care UI displays a purchased offer that does not have a tie ID as Not Set.
Handling Untied Discount Offers
An untied discount offer is a purchased discount offer that has the capability enabled but is no longer tied to an active purchased charge offer.
When a discount offer becomes untied, you can do any of the following:
-
Reuse the same tie ID to tie the discount offer to a different charge offer in the bundle.
-
Set a different tie ID to tie the discount offer to another charge offer.
-
Clear the tie ID and leave the discount offer not tied.
-
Configure BRM to automatically cancel discount offers that are not tied to any charge offer.
For more information, see "Managing Untied Discount Offers" in BRM Opcode Guide.
Retrieving Discounts and Purchased Offerings by Tie ID
To retrieve information about discounts and purchased offerings tied with a specific tie ID, use BRM opcodes or the Billing Care REST API.
If you use opcodes, you can retrieve eligible discounts for a product or list all discounts and charge offers already tied with an account or service. For more information, see "Retrieving Purchased Offerings for an Account or Service" in BRM Opcode Guide.
If you use the Billing Care REST API, refer to the endpoints in Table 12-3
Table 12-3 Endpoints for Retrieving Discounts and Purchased Offerings by Tie ID
| API Endpoints | Response Payload |
|---|---|
|
Retrieve a Purchased Charge Offer or Purchased Discount Offer (GET /bcws/webresources/v1.0/subscriptions/offerdetails/{purchasedProductId}) |
Use the following response payload fields to retrieve tying information:
|
|
Retrieve Customized Offers for an Account (GET /bcws/webresources/v1.0/subscriptions/account/{purchasedProductID}/customizedOffers) |
Use the following response payload fields to retrieve tying information:
|
|
Retrieve Customized Offers for a Service (GET /bcws/webresources/v1.0/subscriptions/service/{serviceId}/customizedOffers) |
Use the following response payload fields to retrieve tying information:
|



