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 a 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.

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 follows
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 follows
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.

Figure 12-3 $5 Discount on a Purchase Fee

Description of Figure 12-3 follows
Description of "Figure 12-3 $5 Discount on a Purchase Fee"

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.

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:

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.
  • 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 were 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 is allowed to 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; 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 calculated value

With one exception, the start and end values of all quantity ranges must be a decimal. The exception is that a calculated value can be used 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 range does not qualify.

    • 500–1000. The discount for this range is applied to the entire result.

    • 1000–No Maximum does not qualify.

  • 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–No Maximum does not qualify.

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 trigger condition includes multiple conditions, all conditions must be met for the discount to be granted.

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, the total charges for the ten most frequently called numbers. This amount can then be discounted.

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 is substituted into the What to Discount value. A 10% discount is applied to AccessPointX 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:

Applying Discounts That Are Valid for Only Part of a Cycle

You can specify how to apply a discount when it is valid for only part of a cycle. There are three scenarios:

  • Discounts that are valid from mid-cycle to the end of the cycle. Mid-cycle is any time after the accounting cycle start time and before the accounting cycle end time.

  • Discounts that are valid from the start of a cycle but end in mid-cycle.

  • Discounts that are valid for part of a cycle, in the middle of the cycle.

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 would need to 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 follows
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 follows
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.

Figure 12-8 Valid Mid-cycle - No Discount

Description of Figure 12-8 follows
Description of "Figure 12-8 Valid Mid-cycle - No Discount"

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.

Figure 12-9 Balance Impact for Minutes

Description of Figure 12-9 follows
Description of "Figure 12-9 Balance Impact for Minutes"

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 (measure 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.

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 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:

  1. Edit the pin_snowball_distribution file in BRM_home/sys/data/pricing/example. The pin_snowball_distribution file includes instructions.

  2. Save the pin_snowball_distribution file.

  3. 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.

  4. 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.