Description
Feature name |
ScriptedPromotions |
---|---|
Applicable contexts |
|
Prerequisite features |
|
Postrequisite features |
Using the ScriptedPromotions
feature, new promotions can be created, enabled, disabled, or removed during normal Sentinel online operation.
The promotions are executed in the Diameter Mediation module which is used by all Sentinel client modules: Diameter Client and SS7 Client. Scripted Promotions are available for all session and call sessions, including Voice/Video/Data/Fax calls triggered by CAMEL, CAMEL callback calls (such as USSD callback), MO SMS, and Diameter sessions.
Session scenarios
The following scenarios are supported and enabled via scripted promotions:
-
charge all units for a session from a single or multiple promotion, entirely suppressing interaction with the OCS
-
charge units from multiple MSCCs in a single CCR where they have different parameters (such as servicdid) to different promotions, to the OCS
-
serially interleave promotions and OCS requests related to a condition
-
charge units to a promotion on OCS failure
-
direct debit and refund units with promotions.
Scripted Promotion may apply:
-
between promotions with wide validity dates
-
between subscription-specific validity dates
-
during certain times of day or on certain days
-
across a service plan for a set of subscribers
-
to certain session types only (such as SMS, Voice calls, GGSN sessions, and so on)
-
based on individual subscription
-
based on AVPs available in the CCRs (such as tarrifs, roaming indicators, serviceIds, rating groups, or location information)
-
based on type of units.
Promotions feature API
The Diameter Mediation module exposes a feature execution point DiameterMediationChargingControlFeatureEndpoint
to provide ScriptedPromotions
and other third-party developed promotions with the necessary controls over session behaviour. The feature endpoint API provides the following controls:
Method | Description |
---|---|
suppressOcsInteraction |
request: suppress further interaction with the OCS |
enableOcsInteraction |
request: enable further interaction with the OCS |
isOcsInteractionEnabled |
check if ocs interaction is currently enabled |
shutdownOCS |
request: existing OCS connection shall be shutdown if one exists |
ScriptedPromotions
uses these controls to apply promotions where applicable to requests from the Diameter mediation clients.
Promotion selection
Promotion selection is performed using the following algorithm:
Get the list of promotions by selection key For each promotion in the list in order of ascending priority evaluate the conditional expression of the promotion to determine if it is applicable to the session Reserve applicable requested units from the promotion bucket Update the CCR and synthesize a CCA
Promotion selection is only relevant to the CreditControlRequests
which have RequestServiceUnit
AVPs. All UsedServiceUnit
AVPs are handled without condition by PromotionsCommitUsedUnits
. All outstanding promotion reservations on session end are freed by PromotionsFreeReservations
.
Scripted promotion scope
A scripted promotion has one of the following scopes:
-
All subscribers (applies to all subscribers)
-
Subscribed (applies to subscribers who have subscribed to the promotion).
The scope is determined using the subscriberIsEligible
function in Promotion Selection Expressions. If this function is present, the scope will be to subscribed subscriber only. If this function is absent, the promotion is scoped to all subscribers.
Configuration
A promotion bucket is referenced by SubscriberId and the bucket name stated by each promotion. A bucket contains the available and reserved units. The unit type may be: time (seconds), bytes, event counts, or some service-specific unit type. The unit type is not enforced by the bucket. It is the responsibility of the promotion to correctly select requested service unit AVPs with the correct unit type for the promotion.
The bucket unit record contains the following fields:
Parameter | Description |
---|---|
SubscriberId |
Subscriber identifier |
BucketName |
Name of the bucket |
AvailableUnits |
Available units for this promotion |
ReservedUnits |
Any units which have been reserved during session charging but not committed as used units, or freed at session end |
The subscriber also has a promotion configuration retrieved by the Subscriber Data Lookup Feature:
Parameter | Description |
---|---|
PromotionList |
Used by the |
PromotionValidityStartDates |
Used by the |
PromotionValidityEndDates |
Used by the |
Each scripted promotion is configured in the PromotionsTable:
Parameter | Description |
---|---|
SelectionKey |
Sentinel selection key the promotion is scoped to (for example, |
PromotionName |
Promotion name (for example, |
BucketName |
Bucket name (for example, |
PromotionPriority |
Promotions selection priority |
PromotionConditionSrc |
See Promotion Selection Expressions (for example |
EncodedValidityEnd |
Used by the |
EncodedValidityStart |
Used by the |
PromotionBucketsConfigTable:
Parameter | Description |
---|---|
BucketName |
The ID of the promotion bucket for which this configuration applies. |
DataSource |
profile,dbquery,cassandra,unlimited,sessionstate. Used when no dedicated access configuration can be found for a particular bucket name. Note: the profile is only used for testing or demo purposes. |
PromotionsConfigTable:
Parameter | Description |
---|---|
DefaultDataSource |
profile,dbquery,cassandra,unlimited,sessionstate. Used when no dedicated access configuration can be found for a particular bucket name. Note: the profile is only used for testing or demo purposes. |
PartialGrantingThreshold |
0 |
PromotionApplicationMode |
one_only (single option available) |
UnitGrantingMode |
partial, full_only. When set to partial, will grant units to the minimum set by the PartialGrantingThreshold parameter. When set to full_only, the units will only be granted if the full amount is available from the promotion bucket. |
PromotionsDbQueryConfigProfileTable:
Parameter | Description |
---|---|
AddSQL |
SQL statement for adding a bucket for a subscriber |
DatabaseRequestTimeout |
Database request timeout in milliseconds |
DeleteSQL |
SQL statement for deleting a bucket for a subscriber |
istAllSQL |
SQL statement for listing all buckets |
LoadSQL |
SQL statement for loading a bucket based on subscriber id and bucket name |
UpdateSQL |
SQL statement for updating a bucket based on subscriber id and bucket name |
Configuration profile naming
Configuration profile table name | Description | Profile naming |
---|---|---|
PromotionsTable |
Configuration of scripted promotions |
SentinelSelectionKey:priority_promotionname (for example, |
PromotionBucketsConfigTable |
Configuration of promotion bucket properties (such as access type) |
SentinelSelectionKey:BucketName (for example, |
PromotionsConfigTable |
Configuration of promotions behaviour |
SentinelSelectionKey (for example, |
PromotionsDbQueryConfigProfileTable |
DbQuery statement configuration |
SentinelSelectionKey for example, |
Provisioning interfaces
Scripted promotions are provisioned using the Sentinel Promotions REST API or web interface.