The RestrictActive Framework

Contents


The following bundles are part of this framework:

  • DurationBundle
  • EventBundle
  • DataBundle
  • ForwardBundle (core 8.5 and later)
  • CounterBundle (core 8.10 and later)

Bundles that are part of this framework have the following properties:

  • A workflow can be specified that checks whether this bundle can actually be used for this particular billing record (useful for restricting bundle use to e.g. community calls).
  • Alert levels can be specified. When the bundle has used a specified percentage of its capacity, then an alert workflow is activated.
  • Temporary change of rating code and rating key (not for the CounterBundle). This can be used to change the plan element that the rating process uses, e.g. for rating at discount prices.
  • A billing record can be rated against more than one bundle. Used if a billing record uses the final units of a bundle, but the whole billing record is not rated yet.

Restricting Bundles to Specific Tasks

Icon

From Core 8.7, this functionality is replaced by Bundle Pre-rate Strategies (internal link).

A workflow that restricts the billing records to which this bundle can apply can be specified for a bundle. This is done by specifying the workflow hookpoint key in the bundle PARAMETERS by setting a parameter called "VALIDATION.HOOK", e.g. "VALIDATION.HOOK=myHookpointKey".

The workflow started has the following properties:

Workflow Attribute

Description

Context objects

"SUBSCRIPTION"
"SUBSCRIPTION_BUNDLE"
"BILLING_RECORD"

Return values

The HookpointResult must contain the key "CONTINUE" which must contain the value "Y", if the bundle is to be used.
Otherwise the bundle will be skipped.

If the "VALIDATION.HOOK" is not defined, if the workflow does not exist, or if the returned HookpointResult is null, then the bundle will always be used in the rating.

Alert Levels

Icon

As from Vs. 8.20 the syntax for this will be the same as for normal bundle alerts.
This will still be set via bundle parameters for RestrictActive bundles.

When a specified percentage of the bundle has been used, this can activate an alert workflow. More than one percentage can be defined. This is done by specifying the alert percentages in the bundle's PARAMETERS by setting a parameter called "ALERT_LEVEL". The values of this parameter is a comma-separated list of numbers (percentages), e.g. "ALERT_LEVEL=25, 50, 75, 100"

The alert workflow to be started is defined in the bundle's PARAMETERS by setting a parameter called "ALERT_HOOKPOINT" (e.g. "ALERT_HOOKPOINT=myAlertWorkflowHookpointKey"), and it has the following properties:

Workflow Attribute

Description

Context objects

"SUBSCRIPTION"
"SUBSCRIPTION_BUNDLE"
"BORDER" (which is the value of the percentage that triggered the workflow, in the form of Java-type Long)
"INVOKED_BEFORE_FOR_THIS_CDR" (the type is boolean)

Return values

No return value is needed. Everything that should happen is performed or started by the workflow.


An alert workflow is only started if everything is in place (parameters defined, percentage level passed, etc.). The start of an alert workflow has no influence on the rating process (except if the workflow is designed to have an impact).

One single billing record can pass several 'borders'. When this happens, the alert workflow triggers once for each border passed in the opposite order! For the first workflow activation the context object "INVOKED_BEFORE_FOR_THIS_CDR" is 'false', for all the following it will be 'true', e.g. if ALERT_LEVEL=25, 50, 75, 100 and a single billing record passes both the 50 and 75 borders, the alert workflow will be activated twice - first with BORDER=75 and INVOKED_BEFORE_FOR_THIS_CDR=false, then with BORDER=50 and INVOKED_BEFORE_FOR_THIS_CDR=true.

(Temporary) Change of Rating Code and Rating Key

DataBundle, DurationBundle and EventBundle

In the rating process, when a bundle to be used has been found, the rating code and rating key of the billing record can be changed (temporarily). If this is done the billing record is rated against other plan elements which can hold e.g. a discount price.

A bundle can be used fully while rating a billing record. This means that part of the billing record should be rated in one way, while the rest should be rated in another way. Therefore it is possible to define two different temporary values for rating code and rating key: One to be used for the part inside the bundle, and one for the part outside the bundle.

The temporary rating code and rating key values can be defined in two ways: Through setup of parameters in the bundle PARAMETERS field, or through activation of a workflow. The two methods can be combined, but if a parameter is defined in both ways, then the workflow value takes precedence.

The bundle PARAMETER field parameters have the following names:

"IN.RATINGCODE"

e.g. "IN.RATINGCODE=COMMUNITY-VOICE-CALL"

"IN.RATINGKEY"

e.g. "IN.RATINGKEY=COMMUNITY-GOLDEN-BUNDLE"

"OUT.RATINGCODE"

e.g. "OUT.RATINGCODE=COMMUNITY-VOICE-CALL-BUNDLE-FULL"

"OUT.RATINGKEY"

e.g. "OUT.RATINGKEY=COMMUNITY-GOLDEN-BUNDLE-BUNDLE-FULL"

The workflow hookpoint key is defined in the bundle PARAMETER field by the parameter "KEY.HOOK", e.g. "KEY.HOOK=myTempRatingValuesHookpointKey". The workflow has the following attributes:

Workflow Attribute

Description

Context objects

"SUBSCRIPTION"
"SUBSCRIPTION_BUNDLE"
"BILLING_RECORD"
"INCODE" (A String with the value of parameter "IN.RATINGCODE")
"INKEY" (A String with the value of parameter "IN.RATINGKEY")
"OUTCODE" (A String with the value of parameter "OUT.RATINGCODE")
"OUTKEY" (A String with the value of parameter "OUT.RATINGKEY")

Return values

The HookpointResult can contain the following keys:
"INCODE" (The key to the new value of inside bundle rating code)
"INKEY" (The key to the newvalue of inside bundle rating key)
"OUTCODE" (The key to the newvalue of outside bundle rating code)
"OUTKEY" (The key to the newvalue of outside bundle rating key)

Icon

In core versions < 8.6: Do not set the combination of "inside bundle rating code" and "inside bundle rating key" to the values that the billing record already has, since this will create an indefinite loop!

If neither of the two methods for changing rating code and rating key is used, or if they define the value to be an empty String, then the default values are the following:

Type

Default Value

Inside bundle, rating code

"BUNDLE"

Inside bundle, rating key

The original value

Outside bundle, rating code

The original value

Outside bundle, rating key

The original value

Icon

This means that you should ALWAYS define the "inside bundle rating code" for the DataBundle, DurationBundle and EventBundle!  

ForwardBundle

The bundle PARAMETER field parameters have the following names:

"RATINGCODE"

e.g. "RATINGCODE=MY-NEW-RATINGCODE"

"RATINGKEY"

e.g. "RATINGKEY=MY-NEW-RATINGKEY"

Icon

In core versions < 8.6: Do not set the combination of "inside bundle rating code" and "inside bundle rating key" to the values that the billing record already has, since this will create an indefinite loop!

CounterBundle

Changing the rating code and rating key is not supported for the CounterBundle.

Rollover functionality

The RestrictActive framework allows bundles to be configured to allow the use of Core rollover functionality.
This functionality requires the following parameters to be set up:

Name

Description

ROLLOVER.PERIOD.ORDER

Defines whether older or newer surplus credit should be used first. Two possible values are possible: NEWER_FIRST and OLDER_FIRST

ROLLOVER.USAGE.MODE

Indicates whether surplus credit should be used before or after the SubscriptionBundles. Again two values are possible: USE_ROLLOVER_BEFORE_BUNDLE, USE_ROLLOVER_AFTER_BUNDLE

ROLLOVER.PERIODS

Amount of previous SubscriptionBundles used in rollover. In other words, the number defines how many times surplus credit can be rolled over

In addition to the parameters, VALUE 3 has to be set up too. It should contain the maximum amount of values, that can be used in the rollover process.

Rating a Billing Record Against more than one Bundle ("Overflow")

The bundles in the RestrictActive framework have an "overflow" function.  This means that if all units of a bundle are used – while a billing record is being rated – the rating will continue against the next bundle in the priority listing.  If no bundle is available, rating is done using the default prices offered in the rate plan.

Example:

Bundle 1 (B1) has 50 free units, and bundle 2 (B2) has 1000 free units. A billing record with a usage of 200 units is to be rated. The billing record can be rated against both of the bundles, but it tries B1 first because B1 has a higher priority than B2.

The result is that 50 units are rated in B1, and 150 units are rated in B2.
In the example above, when the last 150 units are passed on from B1, then the rating code and rating key can be changed for those 150 units. See how to (temporarily) change the "outside bundle rating code" and "outside bundle rating key" elsewhere on this page.