...
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
...
...
...
...
...
...
...
...
...
...
...
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" |
...
|
...
Return |
...
values |
...
The |
...
HookpointResult |
...
must contain |
...
the |
...
key |
...
"CONTINUE" |
...
which |
...
must contain |
...
the |
...
value |
...
"Y" |
...
, if |
...
the |
...
bundle |
...
is |
...
to |
...
be |
...
used. |
...
|
...
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
...
...
...
...
...
...
...
...
...
...
...
...
...
...
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" |
...
|
...
(which |
...
is |
...
the |
...
value |
...
of |
...
the |
...
percentage |
...
that |
...
triggered |
...
the |
...
workflow, |
...
in |
...
the |
...
form |
...
of |
...
Java-type |
...
Long) |
...
|
...
(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" |
...
|
...
|
...
(A |
...
String |
...
with |
...
the |
...
value |
...
of |
...
parameter |
...
"IN.RATINGCODE") |
...
|
...
(A |
...
String |
...
with |
...
the |
...
value |
...
of |
...
parameter |
...
"IN.RATINGKEY") |
...
|
...
(A |
...
String |
...
with |
...
the |
...
value |
...
of |
...
parameter |
...
"OUT.RATINGCODE") |
...
|
...
(A |
...
String |
...
with |
...
the |
...
value |
...
of |
...
parameter |
...
"OUT.RATINGKEY") |
...
Return |
...
values |
...
The |
...
HookpointResult |
...
can |
...
contain |
...
the |
...
following |
...
keys: |
...
|
...
(The |
...
key |
...
to |
...
the |
...
new |
...
value |
...
of |
...
inside |
...
bundle |
...
rating |
...
code) |
...
|
...
(The |
...
key |
...
to |
...
the |
...
newvalue |
...
of |
...
inside |
...
bundle |
...
rating |
...
key) |
...
|
...
(The |
...
key |
...
to |
...
the |
...
newvalue |
...
of |
...
outside |
...
bundle |
...
rating |
...
code) |
...
|
...
(The |
...
key |
...
to |
...
the |
...
newvalue |
...
of |
...
outside |
...
bundle |
...
rating |
...
key) |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
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 |
ForwardBundle
The bundle PARAMETER field parameters have the following names:
"RATINGCODE" | e.g. "RATINGCODE=MY-NEW-RATINGCODE" |
...
"RATINGKEY" |
...
e.g. |
...
"RATINGKEY=MY-NEW-RATINGKEY" |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
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 |
...
USE_ROLLOVER_AFTER_BUNDLE |
...
ROLLOVER.PERIODS |
...
Amount |
...
of |
...
previous |
...
|
...
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.
...