Sap Brim Overview
Sap Brim Overview
Sap Brim Overview
INTRODUCTION
SAP BRIM, previously known as SAP Hybris Billing, is a comprehensive solution for high-volume consumption
businesses like telecom, utilities, media, and entertainment industries etc.
SAP BRIM provides a combination of multiple billing streams and allows to bill to a single invoice. SAP Hybris
Billing includes support for complex discounting including invoice level discount and customer level discounts.
Hybris Billing supports full revenue management practices.
Subscription order management is an integral part of the end-to-end SAP BRIM solution. Subscription Order
Management enables SAP Customers to offer their business solutions as a combination of products and
subscriptions to services (recurring fees, usage-based charges, and one-off charges, based on consumption
pricing mode.
SAP CC is a solution for pricing, charging, and refilling processes. Can use the panel of tools to streamline the
way you create pricing element with charges, charge plans, and refill plans.
Convergent invoicing involves pulling information together from different billing streams and individual-rated
events and consolidating charges into a single invoice.
SAP Convergent Mediation is an SAP partner product developed by Digital Route. Its role is to enable a
standardized approach to data mediation.
Enterprise structure: Enterprise structure is the organization structure as represented in SAP system.
Enterprise structure is the basis for the configuration of other parameters. It’s primarily defined with three
primary domain areas and is very similar to the finance organization structure used in an organization or sales
organization structure used in SAP.
Company code
Assigning company code to company
Sales organization
Distribution channel
Division
Sales area
Plant
Assigning distribution channel, division to sales organization
Assigning sales org to sales area
Assigning plant to company code
Master data: Master data refers to all data about basic objects used in business transactions in SAP
and stored on a long-term basis, such as data on accounts, products, installed bases, or warranties.
Business Partner:
Business partners represent all parties involved in business transactions, such as persons, groups of
persons, and organizations (customer, debtor, creditor, or supplier).
For business partners who should be used as contract partners in subscription order processing, add
the role Customer (FLCU01) or any other role belonging to this category.
For business partners associated with sales processes executed in S/4HANA, add the role FI
Customer (FLCU00).
For business partners working with provider contracts in SAP Contract Accounts Receivables and
Payable (FI-CA), add the role Contract Partner (MKK).
Contract Account:
In the contract account, you can store controlling data for long-term business relationships with a business
partner.
This function allows you to create one or more contract accounts for each of your business partners so
you can use them to save data relevant for business transactions with the respective business partner.
Organizational Unit:
An object that is used for mapping the organizational structure of a company in an organizational model.
Each organizational unit is defined in more detail by its unit function and unit role.
You can use this object as the basis for an organizational model by arranging organizational units
hierarchically and therefore mirroring the structure of your company.
Products/Material:
A tangible or intangible good that is part of the business activities of a company. It can be traded, and
it contributes directly or indirectly to the value chain.
You identify each product with a unique product number, an appropriate description, and a value for
the base unit of measure.
Transaction types:
A transaction type defines the attributes and characteristics of a business transaction (for example,
subscription order and subscription contract) and the controlling attributes (for example, text
determination procedure, partner determination procedure, status profile, organizational data
profile). A transaction type controls how a specific business transaction is processed.
Item categories:
An item category is used to define if an item is suitable for billing or pricing. It defines the additional
control functions for a sales document. Example − A standard item function is totally different from
the function of a free of charge item or a text item.
Item category group: item category group determines how a material is processes in the
order.
PRRP
Subscription order:
A subscription order is a special sales order that you can use to sell products or product bundles that consist of
subscriptions to services (usage-based charges, recurring and one-time charges) and physical goods.
Subscription contract:
A subscription contract manages the long-term agreement for a technical service that the provider company
offers to the customer. It is represented by a main subscription contract item within a subscription contract
document. A subscription contract document contains one or more subscription contracts. If it contains
multiple subscription contracts, they are not dependent on each other. A typical subscription contract contains
the following information
Date profiles:
The date profile controls which date types, time durations, reference objects, and date rules can be used in a
specific transaction type or item category. For subscription orders and contracts two date profiles are defined,
one on a header level and the other on an item level.
Action Profiles:
In order to manage any of the events/notifications/API’s triggers as soon as order has been saved or during the
order process, Action Profiles will be helpful to trigger. Action Profile is linked/mapped to Date Profiles.
Rate components:
Type of rate component Activation Usage example
Usage Each usage Telephone call
Recurring Periodic Monthly fees
One-Shot Once only Administration fees
FUNCTIONS
Flat Function
Use
In a price plan, the Flat Function component allows you to assign a constant price to a consumed service. This
constant price is represented by a value or a numerical property and is expressed in the currency of the plan.
Note
The usage of the Flat Function component with a zero amount generates transactions while the Free
Function component never generates any transactions.
Example
You propose an Internet subscription that consists of a monthly connection plan for $15 per month. Using a
Flat Function component, you can bill this subscription by assigning the value of $15 to the monthly
subscription price.
Instead of indicating a numerical value, you can assign a price by using a numerical property. For example, if
the subscription corresponds to several plans whose price varies according to the number of hours, you can
create a fixed price parameter that takes different values according to the number of hours. Using the Flat
Function component, you assign the fixed price to the monthly subscription price.
Free Function
The Free Function component represents a free service in the decision tree. It does neither calculate
any amount nor create any transactions (charged items) for billing systems. It must be used only if you do not
need to produce a transaction. Because no transaction is created, the branch including the Free
Function component is not rated at runtime.
Use
When the related price plan uses a Free Function component, no accounting transactions are created;
therefore, you cannot rerate transactions. To create transactions, use the Flat Function component with a zero
amount instead of the Free Function component.
Example
You propose a special offer to try out an Internet connection for one month free of charge. At the end of one
month, this offer becomes invalid. If the customer wants to continue the service, you propose a different offer.
Because you do not need keep a record of connections during the limited free offer period, you can use a Free
Function component.
Generic Function
P = A.X + B
P = A.X.Y + B
P = A.X + B.Y + C
Where:
Addition
Subtraction
Multiplication
Division
Use
You use a Generic Function component when you want to calculate a price that uses numerical properties.
Example
In a chargeable item class called Video Conference, you charge the customer $0.10 per videoconference
minute. This price is multiplied by the number of members, and then added to a fixed amount of $15. To
compute the price of a Video Conference, you use a Generic Function component according to the formula
AXY + B, in which A, X, Y, and B have the FOLLOWING VALUES.
Linear Function
Use
You can use the Linear Function when you want to calculate a price with numerical properties of the plan.
Example
In a chargeable item class called Telephone Services, you charge the customer $0.10 per call minute. To
compute the price of a telephone call, you use a Linear Function component with the following values:
A X B
Macro Function
The Macro Function component allows you to use an existing pricing macro to calculate a final amount.
Because a pricing macro cannot be inserted in a decision tree, you must use a Macro Function:
Use
You use the Macro Function to integrate an existing pricing macro at the end of a decision tree branch. The
amount calculated in the pricing macro is the final amount of the branch.
Example
In a chargeable item class called Communication, you charge the customer according to the type of
communication. The pricing rule is described in a unique Pricing Macro that completely calculates the final
price. You can use the Macro Function component to integrate this Pricing Macro into each price plan that
relates to the Communication chargeable item class.
No Access Function
Use
The No Access Function allows you to control certain access rights such as:
In a chargeable item class called Telephone Service, every consumption is billed according to the dialing codes
of the called number. The dialing codes are tested in the price plan which includes a No Access component in a
branch. When no value corresponds to a dialing code of the called number, the No Access component is
activated.
Polynomial Function
You can select different numerical properties for each AXY term or reuse the same properties several times.
Use
The Polynomial Function is used when an amount is calculated with two or more numerical properties. It
allows you to multiply numerical properties two by two for each term, and then add up the results.
Example
In a chargeable item class called Video Conference, you charge the customer $0.10 per videoconference
minute. This price is multiplied by the number of members, and then added to a price that varies according to
the distance ($0.05 cents per kilometer). To compute the price of a Video Conference, you use a Polynomial
Function component with the following values:
0.10 * call duration * number of members + 0.05 * distance (with * as the multiplier sign)
Using the table in the Definition tab, you can express this polynomial expression as follows:
Comparison Components
A comparator component compares properties of the same type. The comparator component can compare
the properties of chargeable item classes, parameters, counters, or properties generated by another logic
component. When you insert it in the decision tree, the comparator component creates one or more branches
depending on the type of comparison.
Several types of comparator component are available depending on the type of the property used for
comparison. For example, you can use:
A Numerical Comparator component to compare the value of a numerical property with another
value
A Date Comparator component to compare a date property type with time slots
The Date / Time Slot Comparator compares a date property with one of the following time slots:
Daily
Weekly
Monthly
Yearly
The comparison is true when the date property is inside the selected time slot.
When you insert it in the decision tree, the Date / Time Slot Comparator component creates two separate
branches:
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices which vary from one time period to another time period,
you may need to compare a date with a time slot. To use the Date / Time Slot Comparator inside your price
plan, do the following:
1. After you add the component, choose the date and the time slot.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
Within the context of a promotional offer that contains a calling plan, you want to implement a special price of
$0.02 per minute for telephone calls that start during the weekend. The standard price is $0.04 per minute.
The following table presents the information that you need to set up the Date / Time Slot component inside
your price plan:
Data Settings
Pricing rules Price that is applied to the “is in the time slot” branch: $0.02 per minute.
Price that is applied to the “is out of the time slot” branch: $0.04 per minute.
Dates Comparator
The Dates Comparator component compares two date properties. Six comparison operators are
available:
The comparison is true when a date property matches a reference date or defined constraints.
When you insert it in the decision tree, the Dates Comparator component creates two separate branches:
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches, you may need to compare a date property
with a reference date. To use the Dates Comparator component in the price plan, do the following:
1. After you add the component, choose a date property, a reference date or define constraints.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
In the context of a special "end of the year" promotional offer, a telephone operator wants to charge a special
price ($0.15 per minute) for all the calls that begin on Sundays during the month of December. All the other
calls are rated at the regular price. The following table presents the information that the telephone operator
needs to set up the Dates Comparator component inside the price plan:
Data Settings
A branch for each interval or value, which is activated if the property matches the related interval or
value.
An additional branch that is activated if the property does not match an interval or a value.
Note
The test stops when a branch matches the comparison; therefore, the order of intervals and values is
important.
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches according to the value of a property, you may
need to compare a property with a set of intervals. To use the Interval Switching Comparator inside your price
plan, do the following:
1. After you add the component, choose the property and the limits of the intervals or values.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
A software editor wants to determine the license price of their chargeable item class according to the number
of users, which can vary from 10 users to 50 users. An interval represents a group of 10 users. For more than
50 users, the price is $700. To determine the license price, the software editor needs to create a numerical
property called number of users and test if the property matches one of the intervals. The following table
presents the information that the software editor needs to set up the Interval Switching
Comparator component inside the price plan:
Data Settings
Value “0” 0
The Mapping Table Introducer Comparator component allows you to use an existing mapping table in a
plan and set up the logic that defines the computation of the final values.
At runtime (or during trial run), SAP Convergent Charging proceeds as follows when executing the logic
component Mapping Table Introducer Comparator:
1. The SAP CC system compares row by row the input columns of a mapping table with the properties of
the plan.
2. The comparison stops when the properties match at least one row of the input columns.
3. The output columns related to the input columns are retrieved in generated properties that you can
use in the plan.
4. If no property matches the comparison, the mapping table returns a default value for each generated
property.
Note
The number of properties must be equal to the number of input columns of the mapping table.
When it is inserted in the decision tree, the Mapping Table Introducer Comparator component creates two
separate branches:
When the component is performed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches according to the value of a specific property,
you may need to compare a property with a numerical value or another property.
To use the Mapping Table Introducer component inside your price plan, do the following:
1. After you add the component, choose a mapping table class, a mapping table, a date/time reference,
and two properties to compare with the input columns of the mapping table.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
An operator needs a price table to retrieve the prices of offers expressed in many currencies depending on the
validity periods of the offers. To do that in a price plan, the operator uses a Mapping Table Introducer which
contains:
Is equal to
Is greater than
Is less than
Is greater than or equal to
Is less than or equal to
When inserted in the decision tree, the Numbers Comparator component creates two separate branches:
A branch that is activated when the comparison is true
A branch that is activated when the comparison is false
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches according to the value of a specific property,
you may need to compare a property with a numerical value or another property. To use the Numbers
Comparator inside your price plan, do the following:
1. After you add the component, choose the first property, the value or the second property to compare
with the first one, and then the Comparator operator.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
In a monthly telephone plan, calls are free if the total duration of all the calls per month does not exceed the
amount that is specified in the plan. If the total duration exceeds this amount, each call costs $0.34 per
minute. The following table presents information that you need to set up the Numbers
Comparator component inside the price plan:
Data Settings
Total duration of all Price that is applied to the is greater than branch: $0.34 per minute.
calls per month
Price that is applied to the is less than or equal to branch: $0.00 per
minute (free).
The Prefix Switching Comparator component compares a string property with prefixes of string type.
When you insert it in the decision tree, the Prefix Switching Comparator component creates:
A branch for each prefix, the branch of which is activated if the string property matches the related
prefix.
An additional branch that is activated if the string property does not match a prefix.
Note
When several prefixes contain identical characters, the Prefix Switching Comparator selects the prefix which
contains the most characters in common with the string property.
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches, you may need to compare a property with a
set of prefixes. To use the Prefix Switching Comparator inside your price plan, do the following:
1. After you add the component, choose the property and the prefixes.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
An operator applies different prices to phone calls depending on the called number. The operator want to
determine the price for one minute of call time by analyzing the prefix of the called number. Using the Prefix
Switching Comparator component, the operator needs to create a numerical property called number and
compares it with other prefixes. The following table presents the information that the operator needs to set up
the Prefix Switching Comparator component inside the price plan:
Data Settings
Prefix P1 02
Prefix P2 06
Prefix P3 089
The Public Holidays Comparator component compares a date property with one or more public
holidays.
The comparison is true when the date property matches at least one public holiday.
When you insert it in the decision tree, the Public Holidays Comparator creates two separate branches:
When the component is executed, only one branch is activated depending on the test result.
Use
In a price plan, if you want to apply different prices to branches, you may need to compare a property with a
set of public holidays. To use the Public Holidays Comparator inside your price plan, do the following:
1. After you add the component, choose the date property and the public holidays.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
An operator charges a special price for telephone calls when they begin on a holiday. To do this, the operator
compares the start date of the start of the call property to the holidays in the United States by using the Public
Holidays Comparator component. The following table presents the information that is needed to set up
the Public Holidays Comparator component inside the price plan:
Data Settings
The logic component Range Table Introducer Comparator allows you to use an existing range table in a
plan and set up the logic that defines the computation of the final values. You can also use a parameter or a
property of the rating context to identify the range table. If you use a parameter, its value can be redefined:
In a charge plan to refer to another range table in the pricing catalog of the service provider
In a provider contract to refer to different subscriber range tables that are dedicated to each end
customer of the service provider
The comparison in the Range Table Introducer Comparator component mainly involves two steps:
The comparison of input column values in the selected range table with properties of the rating
context (see Mapping of Input Properties)
The comparison of a quantity property of the rating context with the ranges (numerical intervals) in
the selected range table (see Range Input Property)
The comparison algorithm depends on the characteristics for the selected range table. The processing depends
on the options defined for the ranges (numerical intervals):
The comparison depends on the number of input columns in the selected range table:
If the range table contains one or more input columns, the Range Table Introducer
Comparator performs the two steps.
If the range table contains no input columns, the Range Table Introducer Comparator only performs
the second step.
For more information about range table classes and range tables, refer to the dedicated topics.
At runtime (or during trial run), SAP Convergent Charging proceeds as follows when executing the logic
component Range Table Introducer Comparator:
The system first compares row by row the set of input column values of the range table with a subset
of properties in the rating context. The comparison stops when the subset of properties matches one
entire row of input values in the range table. If no set of input values matches the subset of properties
in the rating context, the fourth branch is (Input Values not Found) is executed.
The system then compares row by row the ranges of the Range column in the range table with a given
property of the rating context. The comparison stops when the property matches one range of
the Range column. The output columns that relate to the selected range are retrieved in generated
properties, which you can use in the plan. If no property matches the comparison, an appropriate
branch (Is Below the First Bound or Is Above the Last Defined Bound) is executed and some default
additional values are computed (Computed Properties).
When you insert the Range Table Introducer Comparator component in the decision tree for your plan, it
creates three or four separate branches:
A first branch (Is Below the First Bound) that is processed when the value of the range input property
is negative.
A second branch (Is in a Range) that is processed when the value of the range input property belongs
to a range that is defined in the range table.
A third branch that depends on the related range table class that is specified in the component:
A fourth branch (Input Values not Found) that is processed when no combination of input values has
been found in the range table. This branch is available only if at least one input value has been
defined in the related range table class. All the properties that relate to the range table are not
available in the context of this branch (for example, output values and computed values).
Note
When the component is executed by the SAP CC system at runtime, only one branch is executed depending on
the comparison result.
When you set up the component, you can use the following generated properties in the logic of a branch:
All output column values are usable in the rating or refilling context.
When a column represent a number and the column is marked as cumulative, the cumulated value is
generated in a context property.
Range boundaries are available as context properties: Lower bound of the range and upper bound of
the range.
The size of the range is available: Value of the upper bound of the range minus the value of the lower
bound of the range.
When the value of the range input property is included in a range, the proration within the range is
available (the value of the range input property minus the value of the lower bound of the range) /
(the value of the upper bound of the range minus the value of the lower bound of the range).
The difference between the value of the range input property and the lower bound of the range (the
upper bound in case of an unbounded range) is also provided.
Note
If the value of the range input property is equal to 0, the SAP CC system executes different branches according
to the configuration of the range table class that is specified in this component. The system takes into account
the upper bounds of the intervals that are defined as inclusive or exclusive in the related class:
If the upper bounds of the intervals are inclusive, the system selects the first branch (Is Below the
First Bound).
If the upper bounds of the intervals are exclusive, the system selects the second branch (Is in a
Range).
Use
In a price plan, if you want to apply different prices to branches according to the value of a specific property,
you may need to compare a property with a numerical value or another property. To use the Range Table
Introducer inside your price plan, do the following:
1. After you add the component, choose a range table class, a range table, a date/time reference, and a
property to compare with the ranges of the range table.
2. Choose input properties and add them to the mapping of input properties if the range table contains
input columns.
3. Describe the pricing logic of each decision tree branch by using logic components and end each
branch with a Function component. In each branch, different new properties are available.
Example
In the telecommunication industry, a company sells voice services and has configured a range table class and a
unique range table in its pricing catalog. The table specifies a unit price per minute regarding the call duration.
To use this range table in the pricing logic, you set up a charge with a price plan that includes a Range Table
Introducer Comparator component.
A range table class (where the last range is unbounded and an output column is a unit price per
minute)
A range table
You create a new reusable charge and set up its price plan.
The Strings Comparator component compares a string property with a string value or another string
property. Four comparison operators are available:
Is equal to
Starts with
Ends with
Contains
When you insert it in the decision tree, the Strings Comparator component creates two separate branches:
Use
In a price plan, if you want to apply different prices to branches, you may need to compare a string property
with a string value or another string property. To use the Strings Comparator inside your price plan, do the
following:
1. After you add the component, choose the first property, the second property or the string value to be
compared with the first one, and then the Comparator operator.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
A telephone operator decides to apply a special rate ($0.06 per minute) when the called number begins with
"089"; otherwise, the call is billed at the usual price. The following table presents the information that the
telephone operator needs to set up the Strings Comparator component inside the price plan:
Data Settings
Value 089
Switching Comparator
Caution
As of SAP Convergent Charging 2020 FPS 2, this component not available in case of an installation scenario
integrated with SAP S/4HANA Cloud. For further information, refer to SAP Note 2772452 .
The Switching Comparator component compares the state of a prepaid account with one or more
predefined values (Active, Blocked, Locked, or Closed).
The comparison is true when the state of the prepaid account matches one of the predefined values.
When you insert it in the decision tree, the Switching Comparator creates two to five separate branches:
When the component is executed, only one branch is activated depending on the test result.
Use
In the refill logic of a refill plan, if you want to make a refill depending on the state of the prepaid account, you
may need to compare the state of the prepaid account with one of the predefined states
(Active, Blocked, Locked, or Closed). To use the Switching Comparator inside your price plan, do the
following:
1. After you add the component, choose the "Account State of Prepaid Account as the property name.
2. Describe the refill of each decision tree branch by using a Function component.
Splitter Components
A splitter component divides a numerical property or a date property into two parts. Each part is represented
by a branch in the decision tree. When the component is executed, the two branches are activated and
provide two amounts which are added up to compute the final amount.
There are several types of splitter components. For example, the Number Splitter component splits an existing
property related to a number, and the Time Slot Splitter component splits a property related to time slots.
The Amounts Aggregator Splitter component creates two or more branches in the decision tree to
calculate amounts and performs one of the following operations:
In each branch of the Amounts Aggregator Splitter, you can insert components to calculate an amount.
The Amounts Aggregator Splitter component allows you to describe independent rules in each branch. You
can compare or combine the calculated amounts in the different branches to provide one single amount. The
final amount depends on the type of the operation:
Use
In a price plan, if you want to bill a chargeable item class according to two distinct criteria and charge the
customer the lower price, do the following:
In the branch of the price plan, insert the Amounts Aggregator Splitter component by selecting the
operation Minimum and the number 2 as the number of amounts or branches.
Describe the pricing, criterion by criterion, of each branch.
Example
You sell educational documents on the web. The customer is charged an opening fee according to the size and
the category of documents. To attract new customers, you decide to charge only the size or the category which
represents the lowest fee.
You perform this operation by inserting the Amounts Aggregator Splitter component at the suitable level of
your price plan. You set up the component by choosing minimum as the operation and 2 as the number of
operations. The component will calculate:
The Numbers Splitter compares a numerical property P with a threshold T and divides the numerical
property into two parts, p1 and p2, according to the following conditions:
When you insert it in the decision tree, the Numbers Splitter component divides the numerical property P into
two parts and creates:
When the component is executed, if p1 and p2 are not equal to 0, the two branches are activated and provide
two amounts which are added up to compute the final amount. If p2 = 0, the branch beyond is not activated.
Use
1. Insert the component in the decision tree to create the two branches up to and beyond. Choose a
numerical property, define a threshold, and choose the name of the generated property.
2. Describe the pricing of each decision tree branch by using a Function component.
Example
A client has a telephone service that contains a calling plan of two hours per month at the reduced price of
$0.02 per minute. Beyond these two hours, the calls cost $0.04 per minute. To calculate the call price, you
must compare and divide the call duration according to the time that remains in the monthly calling plan. The
remaining time can be a counter that is decreased each time that there is a call and reset to two hours at the
beginning of each month.
The following table presents the information that is needed to set up the Numbers component inside the price
plan:
Data Settings
Pricing rules Price that is applied to the up to branch: $0.02 per minute
The Public Holidays Splitter component compares a time slot D with a reference time slot R and divides
D into two time slots:
The reference time slot R is made up of public holidays. You can choose dates by selecting one or more
countries or choose one or more dates by selecting individual holidays. The reference time can then be a
discontinuous period or just one day.
The illustration below shows different cases you can meet when using a Public Holidays Splitter. The time slots
are represented as follow:
If the time slot D is completely inside R, then part O = 0 (Case 1 in the previous illustration).
If the time slot D is completely outside R, then part I = 0 (Case 2 in the previous illustration).
In all cases, D = I + O (Refer to the previous illustration).
If time slot D extends beyond the reference time slot R on either side of R, the time slot results are
coherent: I = R, and O represents the sum of the two time slots that extend outside of either end of R
(Cases 3, 4 and 5 in the previous illustration).
Use
When you insert it in the decision tree, the Public Holidays Splitter component divides the time slot D into two
time slots and creates:
Caution
If D = 0, (case of D1 = D2), no branch is activated and no transaction is generated (like with a Free Function).
If the Public Holidays Splitter component processes "case 5" in the previous illustration, it does the following
in this order:
1. Process of the first time slot [O1 - O2] with Start Date (out of the slot) = O1 and End Date (out of the
slot) = O2.
2. Process of the time slot [I1 - I2] with Start Date (in the slot) = I1 and End Date (in the slot) = I2.
3. Process of the last time slot [O1 - O2] with Start Date (out of the slot) = O1 and End Date (out of the
slot) = O2.
Example
A customer has a telephone service that includes a reduced price of $0.02 per minute if the call takes place
during a public holiday; otherwise, the call costs $0.04 per minute. To calculate the cost of a call, you need to
do the following:
1. Compare the call time slot with the reference time slot of public holidays.
2. Divide the call time slot into two time slots, During Public Holidays and Not During Public Holidays.
3. Calculate the duration of the two time slots and apply the corresponding price.
The following table presents the information that is needed to set up the Public Holidays Splitter component
in the price plan:
Data Settings
Generated property Start Date and End Date (in the slot): [I1 - I2]
Start Date and End Date (out of the slot): [O1 - O2]
Data Settings
Pricing rules Duration of each time slot: Difference between the two generated properties
Start Date and End Date for each time slot.
Price that is applied to the “During Public Holidays” branch: $0.02 per minute.
Price that is applied to the “Not During Public Holidays” branch: $0.04 per
minute.
The Time Slot Splitter compares a time slot D with a reference time slot R and divides D into two time
slots:
If the time slot D is completely inside R, part O = 0 (Case 1 in the previous illustration).
If the time slot D is completely outside R, part I = 0 (Case 2 in the previous illustration).
If the time slot D extends beyond the reference time slot R on either side of R, the time slot results are
coherent: I = R, and O represents the sum of the two time slots that extend outside of either end of R
(Cases 3, 4 and 5 in the previous illustration).
In all cases, D = I + O.
Use
When you insert it in the decision tree, the Time Slot Splitter component divides the time slot D into two time
slots and creates:
When the component is executed, the two branches are activated and provide two amounts which are added
up to compute the final amount. If I = 0 or O = 0, the corresponding branch is not activated.
Caution
If D = 0, (case of D1 = D2), no branch is activated and no transaction is generated (like with a Free Function).
If the Time Slot Splitter component processes "case 5" in the previous illustration, it does the following in this
order:
1. Process of the first time slot [O1 - O2] with Start Date (out of the slot) = O1 and End Date (out of the
slot) = O2.
2. Process of the time slot [I1 - I2] with Start Date (in the slot) = I1 and End Date (in the slot) = I2.
3. Process of the last time slot [O1 - O2] with Start Date (out of the slot) = O1 and End Date (out of the
slot) = O2.
Example
A customer has a telephone service that includes a reduced price of $0.02 per minute every day during the
10:00 PM to 6:00 AM time slot. Outside this time slot, the call costs $0.04 per minute. To calculate the cost of a
call, you need to do the following:
1. Compare the call time slot with the reference time slot (10:00 PM to 6:00 AM).
2. Divide the call time slot into two time slots: In the Time Slot and Out of the Time Slot.
3. Calculate the duration of the two time slots and apply the corresponding price. For example, you
insert a Duration Operator component into the two branches to calculate the duration, and then
insert a Linear Function component to calculate the price of each branch.
The following table presents the information that is needed to set up the Time Slot component inside the price
plan:
Data Settings
Generated property Start Date and End Date (in the slot): [I1 - I2]
Start Date and End Date (out of the slot): [O1 - O2]
Pricing rules Duration of each time slot: Difference between the two generated properties
Start Date and End Date for each time slot.
Price that is applied to the In The Time Slot branch: $0.02 per minute.
Price that is applied to the Out of The Time Slot branch: $0.04 per minute.
Note
In a price plan, you may need to apply prices which vary according to different time slots. The Time Slot Splitter
component is often used to calculate the cost of a telephone call, the price of which varies according to the
cases that are shown in the following table:
Inside the reference time slot In the Time Slot The entire call duration
Outside the reference time slot Out of the Time Slot The entire call duration
Partly inside and partly outside the In the Time Slot The call duration that is inside the
reference time slot time slot
Operator Components
Note
You can use the operator components in a price plan, in a pricing macro, in a charging plan, in a refill plan (refill
logic), or in an allowance plan (allowance logic).
For example, the Duration operator component calculates the duration between two dates while the Update
Counter operator component can update counters that are defined in the price plan, the charging plan, or the
refill logic.
Operator Components
For example, the Duration operator component calculates the duration between two dates while
the Update Counter operator component can update counters that are defined in the price plan, the
charging plan, or the refill logic.
The Alert Triggering Operator component allows configuring an alert which is triggered if the branch
containing the component is activated. When an alert is triggered and if the charging operation is successful, a
notification is then published by SAP Convergent Charging to a dedicated system.
Note
The notification is published only if this function is activated. Refer to your administrator for more
information or consult the SAP CC SAP CC 2020 Tuning Guide.
The notification handling must be implemented in your external system by the implementation
project team. If SAP Convergent Charging is connected to SAP ERP/FI-CA, the default integration does
not take into account the notification based on the Alert Triggering Operator component and a
specific implementation project is necessary.
Example
Using Wireless M2M communications, a vending machine can be installed virtually anywhere but should be
connected to a support centre to signal when the vending machine is empty, full of change, or out of service.
To do that, the price plan can include an Alert Triggering operator component to trigger an alert that notifies a
dedicated system.
Allowance Event Sender (Operator)
Remember
You cannot use this logic component after an Account Event Refill component in the refill logic or after
an Event-Based Trigger component in the allowance logic.
The Allowance Event Sender component is an operator component that allows you to configure the
sending of an allowance event to certain allowances that exist in provider contracts. In order to receive this
allowance event, the allowances must:
Belong to the related provider contract or to the related provider contract and its parent contract.
Be shared (see Shared Allowances for more information).
Be active at the date/time of the reception of the allowance event.
"Listen for" the allowance events of the related allowance event class.
This operator component allows you to set up some filtering by using selection criteria based on the values of
properties.
Note
You can trigger the automatic sending of the allowance event depending on the value of a monitored
property.
At runtime, the allowance that sends the allowance event through the execution of this Allowance
Event Sender component, does not receive this event.
The available scope of allowances depends on the usage of logic components. For more information,
refer to the matrix of components.
Use
As a pricing specialist, you can use the Allowance Event Sender component for sending allowance events to
allowances in provider contracts by configuring this logic component in the price plan, the refill logic, or the
allowance logic.
Restriction
A pricing specialist designs and sets up the Allowance Event Sender component in a price plan to consume the
allowances related to the duration of a videoconference. At runtime, when the system executes the Allowance
Event Sender component, the system sends an allowance event based on the allowance event
class ALLOW_VIDEO_MINUTES whose property is the duration of the videoconference in minutes.
The pricing specialist models the allowance logic through the ALLOW_VIDEO_MINUTES Allowance Event
Class (the type of the "Event Allowance"):
To authorize part of the duration based on the persistent counters of the allowances
To update the allowance event based on the authorized part
Example
An allowance is created through a refill plan. The allowance is valid six months and is part of a group of
allowances named SAMPLE_GROUP. The allowances of this group have the same parameter value and extend
their validity period each time a new allowance is added to the group.
At runtime, when an allowance is created for the group, the new allowance must inform the existing
allowances of its group with an allowance event of the type NEW_ALLOWANCE_CREATED. The event includes
the following fields:
The other allowances of the group can then perform actions when receiving the allowance events.
Allowance Property Introducer (Operator)
Note
The available scope of allowances depends on the usage of logic components. For more information,
refer to the matrix of components.
Persistent counters that are used by shared allowances cannot be selected for creating generated
properties. About the sharing of allowances between subscriber accounts, refer to the primary help of
Core Tool and the SAP CC 2020 Application Help for more information.
Use
The properties of the available allowances in a provider contract are needed for the decision tree of
the price plan of a charge, the refill logic, or the allowance logic.
Some properties of allowances must be reported in charged items.
The properties of allowances must be used in the Allowance Event Sender (Operator) component for
sending an event to allowances.
Restriction
You want to retrieve the lowest and greatest credit values from the following set of allowances but only
through the “USER” scope:
To do that, you configure an Allowance Property Introducer component to select the allowances whose
property named 'Scope' is equal to 'USER', and you create two generated properties named 'LowestValue' and
'GreatestValue' to save the values of the 'Scope' properties.
From the previous set of allowance properties, the Allowance Property Introducer Operator thus selects the
allowances whose ID are 1234, 1236, and 1240:
The Allowance Property Introducer Operator then creates a generated property named 'LowestValue' with
the value of 10 (the allowance whose ID is 1234) and a generated property named 'GreatestValue' with the
value of 300 (the allowance whose ID is 1236).
Arithmetic Computation Operator
Addition
Subtraction
Multiplication
Division
Modulo
Power
Note
In the case of division, you can specify the rounding mode and decimal places.
Use
To calculate a price in a price plan, you can combine one of the Function components with the Arithmetic
Computation Operator. The Arithmetic Computation Operator allows you to calculate numerous
intermediate results that are saved in new properties; therefore, you can reuse these properties to calculate
the final price by using a function component.
Example
In a price plan, the price of a telephone call is calculated by using the following basic formula:
Base price is a parameter in the offer and represents a price per minute. Call Duration is a numerical property.
The generic function component, which is a "AXY + B" type formula, allows you to calculate call price.
However, for certain customers, a percentage-type discount that is saved as a parameter is applied to Base
price. To calculate the discount, you can insert an Arithmetic Computation Operator component before the
generic function component as shown in the following table:
Concatenate Operator
Example
For reporting purpose, an operator needs to create a CSV file which must contain some information such as
customer name, service, consumption date, and duration. In a price plan, the operator uses a Concatenate
Operator component to generate a computed property from the properties of the price plan. For example, the
operator can build sentences like this one: "John Smith consumed the Internet service QuickAccess on Monday
the 03 of October 2011 at 11:55:26 during 15 seconds".
Create Allowance Operator
Remember
The Create Allowance Operator is executed at the end of the decision tree if there is one master
charge or at the end of all the decision trees if there is one or more dependent charges. For more
information on charge plans, charges, and dependencies between master and dependent
charges, refer to the dedicated topics in the primary help of Core Tool.
The configuration of a Create Allowance Operator component requires the selection of an Allowance
Plan that specifies the type of the allowance. If you want to create a shared allowance, you must
select a shareable allowance plan. For more information on the Allowance Plan, refer to the dedicated
topic in the primary help of Core Tool.
In the Allowance Logic, you cannot use the Create Allowance Operator in the Event-Based
Trigger and Recurring Trigger branches, but you can use the Create Allowance Operator in a One-Shot
Trigger branch if you configure the One-Shot Trigger with an expiration event and no time shift.
In the case of automatic allowance renewal and at runtime, if a one-shot trigger (creation event) that
contains a Create Allowance Operator is executed in the allowance logic, the duration between the
validity start date of the current allowance and the validity start dates of the newly created
allowances cannot be less than one day (calendar). If this duration is greater than one day, the validity
period is automatically shifted. The new validity start dates are automatically set to the effective date
of the current allowance plus one day while the validity period of the allowances do not change. See
also the Allowance Validity Period Updater (Operator) about the allowance renewal.
Restriction
Use
You use the Create Allowance Operator component to create allowances for your provider contracts.
Restriction
An operator sells data plans to its customers. They can buy recharges including data buckets that are valid for a
limited period of time and can be modeled as allowances. The Create Allowance Operator can be used to
create such allowances. In this context, the initial value of the bucket can be represented as an allowance
parameter.
Date ShiftOperator
The Date Shift Operator component calculates a new date by adding a period of time to an existing date
property or by subtracting a period of time from an existing date property. The new date is saved in a new
date property. The time unit is expressed in seconds, minutes, hours, or days. You use this component to
change an existing date into an earlier or a later date.
Example
In a chargeable item class called Telephone Service, you want to give a customer a time-credit of six seconds
for each call. To define the payable period, you use the Date Shift component to recalculate the start date of
the customer’s call.
Note
You can easily calculate the local time based on GMT time if you know the GMT offset. You enter the
consumption date as the original date to which you add the numerical property GMT Offset representing the
period of time in hours. The calculation result determines the local time that is saved in the computed
property. You can also use the local time in the subbranch of the price plan.
Decrement Counter Operator
Use
The Decrement Counter Operator is used to decrement counters defined in shared allowances (in provider
contracts).
Example
As a service provider, you create a bucket of 100,000 SMS for a company. This bucket is shared by the
employees of this company and implemented as a shared allowance that includes a persistent counter.
Based on the previous example, a bucket of 100,000 SMS is debited through a Debit Counter Operator each
time an employee uses a SMS. When the value of the bucket is equal to 0, employees cannot send SMS
anymore.
Duration Operator
The Duration Operator component calculates the period of time between two dates. The period of time
is expressed in seconds, minutes, hours, or days and saved in a new numerical property. You can specify the
precision unit, the rounding mode, the rounding step, and the threshold of the period of time.
Use
In a price plan, you may need to calculate a price that is dependent of time. To compute the period of time,
you use the Duration Operator that calculates the period of time between a start date and an end date.
Example
In a chargeable item class called Video Conference, you charge the customer $0.10 per video conference
minute. After the start and stop date of the video conference, a Duration component calculates the duration
of the video conference in the price plan.
Duration Adapter Operator
The Duration Adapter operator component converts a period (of time) into another time unit. The
calculation result is saved in a new numerical property. You can convert into days a numerical property
expressed in seconds or in hours. You can specify the time unit of the source and the target, the rounding
mode, the rounding step, and the threshold of the target.
Use
In a price plan, you may need to make calculations dependent of time and that you want to convert into a
different time unit. To do that, you use the Duration Adapter component to convert a period (of time). The
conversion result is saved in a new numerical property.
Example
In a chargeable item class called Telephone Service, a phone call duration is expressed in seconds. You need to
convert the call duration into minutes because your price is defined in minutes. You use the Duration Adapter
Operator to convert the call duration into minutes.
Filter Operator
The Filter Operator compares each value of a multi-valued property of string type with one or more
string values. Each time that the result of a comparison is true, the value of the multi-valued property is stored
in a specified multi-valued property associated with the comparison. Each time that the result of a comparison
is false, the value of the multi-valued property is rejected and stored in a specified multi-valued property.
Note
If a value of the multi-valued property matches several string values, the value is stored in the specified multi-
valued properties associated with the comparisons for which the result is true.
Example
You want to filter a multi-valued property that contains the following values:
image/jpeg:2500
image/jpeg:4000
image/jpeg:5000
image/gif:4000
image/gif:10000
text/plain:100
audio/mp3:20000
Message:20
Each value of this multi-valued property is compared with the comparison values that are shown in the next
table. When the result of a comparison is true, the value is stored in the property associated to the comparison
(ImageFolder, TextFolder, and so on). If a value of the multi-valued property does not match any string values,
the value is stored in the property RejectedValues.
Once the Filter Operator have completed the comparisons, each property contains the following list:
ImageFolder TextFolder AudioFolder JpegImageFolder GifImageFolder
image/jpeg:5000 image/jpeg:5000
image/gif:4000
image/gif:10000
The value "Message:20" does not match any string values. This value is thus stored in the multi-valued
property RejectedValues.
Macro Introducer (Operator)
The Macro Introducer operator component allows you to use an existing pricing macro in a plan. This
component allows you:
The Multi-valued Evaluator Operator counts the number of values which are in a multi-valued property.
If the multi-valued property is of numerical type, the Multi-valued Evaluator Operator calculates the sum and
the average of all the numerical values which are in the multi-valued property and determines the smallest and
the greatest of these numerical values.
Note
Use the Property Type Convertor (Operator) to convert an existing property into a multi-valued property.
Example
To calculate a price that depends on a number of recipients, the rating branch of a price plan needs two
components:
To identify the recipients of the service providers, a Filter Operator tests their address. The Filter Operator is
configured to create one multi-valued property per service
provider: MeteoRecipients, NewsRecipients, ExchangeRecipients, SpotsRecipients, TrafficRecipients and TaxiRe
cipients . All the addresses that do not match a comparison are added to the property RejectedAdresses.
The configuration of the Filter Operator relating to the service provider Meteo is the following:
In this example, it is supposed that once the Filter Operator have completed the comparisons:
The number of recipients per service provider, the number of which is six.
The number of addresses that are retrieved in the multi-valued property of each recipient, which is
two for MeteoRecipients and zero for the other recipients.
Property Introducer (Operator)
The Property Introducer operator component allows you to create new properties for a plan or to
modify the properties that are created with an above Property Introducer component. This component can
also be used to access properties that are not available for other components (for example, the contract
identifier).
Use
In a pricing plan, you can insert a first Property Introducer operator component to create new properties
available for the branch of a rate component. If you need to modify the values of these properties in the
branch of a component, you can insert a second Property Introducer component in this branch to assign new
values to the properties that are created with the first Property Introducer component.
Example
In a price plan, you need an intermediate property to save a result. You then insert a Property Introducer
component into your price plan to create the property Intermediate result.
Property Type Convertor (Operator)
The Property Type Convertor operator component creates a new property from an existing property by
modifying the type of the existing property.
Use
In a plan, some calculations use numerical data which are included in string properties. The Property Type
Convertor operator component allows you to convert a string property into a number property.
Example
An operator uses a translation table providing a discount percentage from the number of units that are
consumed by customers. The number of units consumed property is numerical.
Using the Property Type Convertor operator component, you can convert this property into string before
putting it into the translation table.
Prorata Operator
tf - ti: Time period that is delimited by the initial time ti and the final time tf. The condition ti < tf is
always true.
tr - ti: Part of the time period tf - ti that is delimited by the initial time ti and the reference time tr. The
condition ti <= tr <= tf is always true.
Remember
A day or 24 hours
A week
A month
A year
Note
Instead of calculating R = (tr - ti) / (tf - ti), the Prorata Operator can calculate the ratio R = (tf - tr) / (tf - ti) as
shown in the next illustration.
Example
If you propose some services that include a monthly calling plan, you may want to adjust a new client’s plan
for the first month according to the subscription date of the contract. Likewise, you may want to adjust the
plan for the last month when the plan is based on the cancellation date of the contract. In both cases, you use
the Prorata component to calculate the calling plan.
A customer signs a contract on the 10th of the month for a service that includes two free hours per month.
Because the customer signed on the 10th of the month, you want to prorate two free hours from the 10th to
the end of the month. The following table presents the information that you need to set up
the Prorata component:
Property to prorate Number of free hours In the product Y = X * R, the numerical value X is Number of free
hours (two hours).
Data Name of properties/Settings Comment
Generated Property Number of free hours during the first The generated property contains the resulting amount Y = X * R.
month
Prorata Date Charge effective date In the product Y = X * (tf - tr) / (tf - ti), the reference time tr is the
Charge effective date (the 10th of the month).
Time period Every month In the product Y = X * (tf - tr) / (tf - ti), the initial time ti is the first of
the month at 12:00 AM and the final time tf is the last day of the
month.
Type of ratio Calculation according to the Fraction The Fraction from prorata date option calculates R = (tf - tr) / (tf - ti).
from prorata date option
The Switch Table Operator compares the same property with one or more values or properties of the
same type. When a comparison is true, the test stops and a numerical or string value is assigned to a
computed property.
Use
In a price plan, you may need to apply different prices that depend on the value of a property. To use
the Switch Table Operator inside your price plan, do the following:
1. Choose the first property, a comparison operator, and the values or properties to compare to the first
property.
2. Type the value of the computed property for each comparison.
3. Describe the pricing of each value of the computed property.
Note
The Switch Table Operator stops the test when a comparison is true; therefore, the order of the comparisons
in the table is important.
Example
An operator bills telephone calls that depend on the duration and the type of call (local, international and
information). In the price plan, the property "CallType" is assigned one of these three values: "Loc", "Int" or
"Inf". In the Switch Table Operator component, the computed property "Price" is expressed in cents/minute
and is assigned three values as described in the following table:
The string property CallType is compared with the values "loc", "int" and "inf". Price is a new numerical
property that is assigned a numerical value for each comparison. The Switch Table Operator stops the test
when a comparison is true, and then Price is assigned the value relating to the comparison.
For example, if CallType is equal to "inf", the value of Price is 0.20. If no comparison is true, a default value is
assigned to Price.
The Tier Table Introducer Operator component allows you to use an existing tier table in a plan.
In a tier table, each group consists of one or more numerical intervals. The output columns of the tier table are
number or string values assigned to each numerical interval. The Tier Table Introducer component compares
row by row each numerical interval of a group with a property value of the plan. The comparison stops when
the property value matches a numerical interval of the group. The output columns related to the numerical
interval are retrieved in generated properties that you can use in the plan.
A service provider bills Internet services to its end-customers according to their contract length. To calculate
the service price, a tier table provides the contract lengths with their price. The contract type (Gold prices or
Silver prices) determines the service price. To use the tier table, a Tier Table Introducer must be inserted in the
decision tree of the price plan. The tier table TieredTariff consists of:
Numerical intervals representing the contract length in months (]-∞, 6], ]6, 12], ]12, 24], ]24, +∞[)
Output columns representing the related prices (Gold prices and silver prices) in USD
In the price plan, the Tier Table Introducer component shows the following information:
The TieredTariff tier table
The ContractLength price plan property that is compared to the numerical intervals (contract lengths)
of the group
The GoldenPrice price plan property that retrieves the value of the "Golden price" output column
The SilverPrice price plan property that retrieves the value of the "Silver price" output column
In this example, the tier table TieredTariff uses the default group. Therefore, the Group Name
Property is Default Group. If the tier table uses another group, the list of Group Name Properties must
contain the property whose value is the group name.
Translation Table Introducer (Operator)
The Translation Table Introducer Operator component allows you to use an existing translation table in
a plan.
The Translation Table Introducer Operator component compares row by row the input columns of
a translation table with properties of the plan. The comparison stops when the properties match at least one
row of the input columns. The order of the rows in the translation table is therefore important. The output
columns related to the input columns are retrieved in generated properties that you can use in the plan. If no
property matches the comparison, the translation table returns a default value for each generated property.
Note
The number of properties must be equal to the number of input columns of the translation table.
An operator bills telephone calls according to the geographic zone of the called numbers. To calculate the price
of each call, a translation table provides the price plan with the geographic zone code that is assigned to each
telephone number prefix. To use the translation table, a Translation Table Introducer must be inserted in the
rating tree of the price plan. The translation table TableZone is made up of the input column Prefix and the
output column ZoneCode. The input column contains the telephone number prefixes, and the output column
contains the geographic zone codes.
The TableZone translation table
The NumberCalled price plan property that provides the telephone number to the translation table
The GeographicZone price plan property that retrieves the value of the ZoneCode output column
The comparison test starts with that is used to compare the price plan properties with the input
columns of the translation table
Update Counter Operator
Note
If your configuration is part of session-based charging services, be careful when using the Update Counter
component and read the note at the end of this topic.
The Update Counter Operator component updates a counter of a plan. To update a counter, you can:
This compnent is not compatible with counters defined in shared allowances (distributed counters). To update
such counters, you have to use the Decrement Counter Operator or the Increment Counter
Operator component.
Use
In a periodic-type telephone calling plan, the Update Counter operator component can allow you to upgrade
the number of hours in the calling plan counter and reset this counter at the beginning of the period.
Example
A monthly calling plan includes two hours of free call time for end customers.
This plan is billed using a recurring rate component (for monthly subscriptions) and a usage rate component
(for calls).
In the recurring rate branch, this counter is reset to the original value of two hours at the beginning of
the month by using an Update Counter Operator component.
In the usage rate branch, an Update Counter Operator component subtracts the duration of each call
from the counter number of hours in the calling plan.
CHARGING
Usage charging
Recurring
One -shot
References
Internal reference