3032
Inbound Subscription Context table
This table will capture the customers with context who have interacted in real-time.
Class Name VFUK-FW-AOMFW-Data-InboundSubscriptionContext
Column Name Property Name Constraints Type Example Description
subscription_id SubscriptionId NOT NULL String -XMY4J1 Customer Identifier -
For Customer
Identification
channel Channel NOT NULL String IVR Channel Parameter
sub_channel SubChannel NOT NULL String PostNLCS Sub Channel
Parameter
primary_context PrimaryContext NULL String Manage_data Primary Context
Identifier
secondary_context SecondaryContext NULL String  Secondary Context
Identifier
request_date RequestDate NOT NULL String 20211222 Request Date
context Context NULL JSON {"NoOfActions":"1","
PrimaryContext":"m
anage_data","Secon
daryContext":"","Acc
ountNumber":"1234}
 Subscription Context
Parameters
product_details ProductDetails NULL JSON [{"ProductType":"DE
VICE","Context":"TR
ADE_IN_DEVICE","
Price":
[{"Type":"MonthlyBill
Credit","Value":1000
0},
{"Type":"OneTimeBill
Credit","Value":990}]
,"Detail":
[{"Name":"Model","V
alue":"Iphone XS"},
{"Name":"Make","Val
ue":"Apple"},
{"Name":"IMEI","Val
ue":"284878478478
474874874"}]},
{"ProductId":"10374
36","ProductType":"
TARIFF","Context":"
BASKET_ITEM","Pri
ce":
[{"Type":"PriceINCVSubscription Product
Details Parameters Table Name inbound_subscription_context


3033

Baseline GetNBA SimulationExport Table
This table will store output of the customer simulationAT","Value":2399}],"
Detail":
[{"Name":"ProductD
escription","Value":"
Unlimited MAX with
Entertainment"}]},
{"ProductId":"20484
4","ProductType":"D
EVICE","Context":"B
ASKET_ITEM","Det
ail":
[{"Name":"ProductD
escription","Value":"i
Phone 11 Pro Max
512GB Midnight"},
{"Name":"StockLoca
tion","Value":"10785
5"}]}]
recommendation_reque
st_detailsRecommendationRe
questDetails NULL JSON [{"Name":"Connectio
nId","Value":"CON_2
8474_847464"},
{"Name":"internation
al","Value":"Disabled
"},
{"Name":"lost","Valu
e":"Disabled"},
{"Name":"phone-
sales","Value":"Disa
bled"},
{"Name":"SSOCode"
,"Value":"sc-
1093873-439744"}] Subscription
Recommendation
Request Details
retention_eligibility RetentionEligibility NULL JSON ….. Subscription
Eligibilty (TBC - if
We do CRE)
Class Name VFUK-FW-AOMFW-Data-BaselineGetNBASimulationExport
Dataset Name BaselineGetNBASimulationExport
Column Name Column Type Property Name Property Type Description Constraints
subscription_id varchar(255) SubscriptionId Text Unique subcription id PK - NOT
NULLTable Name baseline_getnba_simulation_export


3034
 CaseIgnitor
Below are the new parameters in simulation caseignitor:

Simulation Case Changes
Below are the simulation case changes:
Update of Existing Step
New Step or Process
GetNBA Baseline changespayload text Payload Text JSON Payload of SR Data NOT NULL
ExecutionMode Y Execution Mode of Simulation Possible
Values:
BatchNBA
GetNBA
Channel Y - if Execution Mode = GetNBA Channel for Simulation Test
SubChannel Y - if Execution Mode = GetNBA Sub Channel for Simulation Test
PrimaryContext N Primary Context for Simulation Test
SecondaryContext N Secondary Context for Simulation Test
RequestStartDate Y - if Execution Mode = GetNBA Start Date of Records to Run
RequestEndDate Y - if Execution Mode = GetNBA End Date of Records to Run Parameter Mandatory Description
Setup Initialise
Check

 Sets the values required for the
case to on the case page
Check if any simulation running
Sets ConfigValue = true for
ConfigName CataloguePush
Check if PM Push Currently Being
Performed
If yes, wait
Else continue Always Snooze
Configurable
Loop Count

Elapse Call existing Initialize flow
Need to decide on snooze
time.
Do we need to restrict user
while creating on UI?
Truncate
Baseline DataTruncate BaselineSimulation and
BaselineSimulationExport Data Set
   BaselineRun is
true
&Notify
Support flow 3.1Stage Step Functionality Condition Error/Adverse
Process Comments Releas
e


3035
ExecutionMod
e = BatchNBA
Truncate
Inbound
Baseline DataTruncate
BaselineSubscriptionDataForGetNB
A and
BaselineGetNBASimulationExport
DataSetBaselineRun is
true
&
ExecutionMod
e = GetNBA
Pre-
Process

 Check
Baseline Data
Set Check if BaselineSimulation
dataset has data

 UseBaselineD
ata is true
&
ExecutionMod
e = BatchNBA
 If no Data
Present: Abort
Case
Notify Support
if error occurs
  3.1
Check Inbound
Baseline Data
Set Check if
BaselineSubscriptionDataForGetNB
A dataset has dataUseBaselineD
ata is true
&
ExecutionMod
e = GetNBAIf no Data
Present: Abort
Case
Notify Support
if error occurs   3.1
Pre-
Process
 Check
Segment Call activity CheckSegment where
it checks
If segment exists and
if RefreshSegment is false check
Segment does run today If
UseBaselineD
ata is false
and Parameter
for Refresh
Segment is
true
&
ExecutionMod
e = BatchNBA
 If Segment
Doesn’t Exist:
Abort Flow

If Segment
Run Fails
Notify Support  3.1
Call activity
CheckSegmentRunStatus
where it checks if segment is still
running
Snooze while Segment is
running
Call Run Segment Passed in
Context
Pre-
Process
 Run Segment Executes segment rule with the
name passed in SegmentName
parameter
Call Activity RunSegment, which


name passed in SegmentName
parameter
Call Activity RunSegment, which
calls Rule-Obj-Report-Definition-
Segment.ExecuteSegment activity
by passing the SegmentName.
UseBaselineD
ata is false &
RefreshSegme
nt is true
&
ExecutionMod
e = BatchNBA
 Notify Support
if Still Running
for long time  Need to check and wait if
Schedule is not running, if
it is need to snooze until
complete 3.1
Call activity
CheckSegmentRunStatus where it
checks if the segment is still running
Snooze while Segment is running


3036
Pre-
Process
 Build
Subscription
 Activity UpdataSubscriptionView
will call database
function, u p d a t e _ s u b s c r i p t i o n _ v ( ) , to
update the Subscription viewUseBaselineD
ata is false
&
ExecutionMod
e = BatchNBA
 Notify Support Call SQL Procedure
 3.1
Pre-
Process
 Setup
Treatment
Data Use InitialiseTreatmentBuckets
flow
 Always
 Notify Support
  Sets BucketsInitialised to
true3.1
Pre-
Process
 Build Inbound
Subscription C
ontextBuild Subscription Data Set for
GetNBA Initial Starting Point
In the BuildInboundSubscription
activity build GetNBA Subscription
by calling
PrepareSubscriptionsForInbound
Simulation DF
Flow:
Build Inbound Subscription
 UseBaselineD
ata is false
&&
ExecutionMod
e = GetNBA Notify Support  3.1
Process
 Setup
Simulation Load SubscriptionDataForBatchNBA
dataset  by calling
PrepareDataForBatchNBA DataFlow
Snooze while DataFlow is running
and Check Status BaselineRun is
false and
UseBaselineD
ata is false
&
ExecutionMod
e = BatchNBA
 Notify Support
Wait for a
specific time
while DataFlow
is running 3.1
Process
 Setup Baseline
Simulation      Load BaselineSimulation
dataset  by executing
PrepareDataForSimulation
dataflow,
Snooze while DataFlow is running
and Check Status BaselineRun is
true
&
ExecutionMod
e = BatchNBA
 Notify Support


true
&
ExecutionMod
e = BatchNBA
 Notify Support
Wait for a
specific time
while DataFlow
is running 3.1
 Setup Inbound
Baseline
Simulation
Load
BaselineSubscriptionDataForGet
NBA dataset  by executing
PrepareBaselineDataForGetNBA
dataflow
Snooze while DataFlow is running
and Check Status BaselineRun is
true
&
ExecutionMod
e = GetNBANotify Support
Wait for a
specific time
while DataFlow
is running 3.1


3037
Process
 Setup Inbound
Simulation In the Prepare Data For Inbound
Simulation activity (Start Data Flow):
Truncate
SubscriptionDataForGetNBA
dataset and Load
SubscriptionDataForGetNBA
dataset  by executing
PrepareDataForGetNBA dataflow.
Then, Snooze while is running and
Check Status
Flow:
Setup Inbound SimulationBaselineRun is
false &
UseBaselineD
ata is false
&
ExecutionMod
e = GetNBA Notify Support
Wait for a
specific time
while DataFlow
is running Create
DataflowWorkItemId in
config3.1
Process
 Create
Simulation  Call the CreateSimulation activity
which will set pyOptions,
pyDataSource, pyStrategy, and
pyDestinations pages of Data-
Decision-Simulations for running a
simulation based on SimulationType
and SimulaitonName parameter.
Then call pzCreateSimulation
activity to create work-item and set
S i m u l a t i o n R u n I D .
Add In Get NBA Data
Set(SubscriptionDataForGetNBA )
and Strategy(GetNBAWithIntent) as
Per Logic Design SimulationTyp
e != Customer Notify Support
Rerun the flow If ExecutionMode =
BatchNBA and If
 BaselineRun or
BaselineDataRun is
true
In the SetSimulationData
Data Transform ->
Set dataset to
BaselineSimulation and
strategy to
IdentifyBestOBTreatmen
tsByBatch
Else if ExecutionMode
= BatchNBA and If
 BaselineRun or
BaselineDataRun is
false
Set dataset to
SubscriptionDataForBat


BaselineRun or
BaselineDataRun is
false
Set dataset to
SubscriptionDataForBat
chNBA and Strategy to
IdentifyBestOBTreatmen
tsByBatch
Else if ExecutionMode
= GetNBA and If
 BaselineRun or
BaselineDataRun is
false
Set dataset to
SubscriptionDataForGet
NBA and Strategy to
GetNBAWithIntent
Else if ExecutionMode
= GetNBA and If
 BaselineRun or 3.1


3038
BaselineDataRun is
true
Set dataset to
BaselineSubscriptionDat
aForGetNBA and Strategy
to GetNBAWithIntent
Process
 Execute
simulation  Activity RunSimulation calls
pxSubmitAndRun activity by passing
SimulaitonRunID which runs the
simulation
Wait for simulation to complete
Update the queue item status
RunCompleted
 SimulationTyp
e != Customer Notify Support
Rerun
RunSimulation
Process
 Execute
Customer
Simulation If Baseline is True or If Use
Baseline Data Set is true run
the
CustomerBaseLineSimulati
on
Otherwise run the
CustomerSimulation
 SimulationTyp
e = Customer
&
ExecutionMod
e = BatchNBA Notify Support
  3.1
Process
 Execute
Inbound
Customer
Simulation In the Execute Inbound
Simulation Activity
If Baseline is True or If
UseBaselineData Set is true run
the
Call
CustomerBaseLineSimulati
onForGetNBA
Else
Call
CustomerSimulationForGet
NBA DF as per Logic Design
Flow:
Execute Inbound SimulationSimulationTyp
e = Customer
&
ExecutionMod
e = GetNBA Notify Support  3.1
PostPro
cess Export
Baseline
SimulationExport data to
baseline_simulation_export table
using ExportBaselineSimulation DF
    BaselineRun =
true
&
ExecutionMod
e = BatchNBANotify Support
  3.1
Export Inbound
Baseline
SimulationExport data to
baseline_getnba_simulation_export
table using BaselineRun is
true
&Notify Support
  3.1


3039
ExportGetNBABaselineSimulation
DFExecutionMod
e = GetNBA
Setup
Proposition
Lookup Load simulation_lookup table by
calling
InsertSimulationLookupData
activity which executes the
InsertSimulationLookUpData
Dataflow.
 SimulationTyp
e != Customer Wait
Notify Support Call SimulationPreProcess
activity

PostPro
cess Generate
Summary
 Run postprocess procedure for
either funnel or distribution based on
simulation type
Set Queue item status to
PostProcessCompleted or
(Completed)
 Call GenerateSummary activity
which will run post-process
database function,
p o p u l a t e _ s i m u l a t i o n _ s u m m a r y ( ), for
either funnel or distribution based on
SimulationType and
SimulationRunIDSimulationTyp
e != Customer
 Wait
Notify Support
End
 Clean Up
 Reset Subscription View
It cleans up and destroys the
treatment bucket map
“ B a t c h N B A V o l u m e C o n s t r a i n t s“which
was created
Sets ConfigValue = false for
ConfigName CataloguePush

Clear Down GetNBA Relevant Data
Sets
 Always Notify Support
  Call
DeleteTreatmentBuckets
activity
Finalise Call Finalise Flow Always
ElapsedClean Up Reset Subscription View
It cleans up and destroys the
treatment bucket map
“ B a t c h N B A V o l u m e C o n s t r a i n t s“which
was created
Sets ConfigValue = true for


was created
Sets ConfigValue = true for
ConfigName CataloguePushAlways  Notify Support
Finalise Call Finalise Flow Always
Abort Clean Up
 Reset Subscription View Always Notify Support


3040
New Process for Inbound Simulation:
Build Inbound Subscription
Able to get the NBA records from production and insert into new table. The new table will populate the records to new
SubscriptionsForInboundSimulation C* dataset by merging the subscription data. These subscriptions will participate in inbound
simulation.
The records in new table which will be participated in simulation needs to follow below query.
We need to get at-most 1 record for SubscriptionId, Channel, SubChannel, PrimaryContext, SecondaryContext combination. We always
need to consider the latest one of RequestDate .
SELECT * FROM inbound_subscription_context a
inner join (
SELECT
SubscriptionId
Channel
SubChannel
PrimaryContext
SecondaryContext
Max(RequestDate)
FROM inbound_subscription_context
WHERE Channel = X
AND SubChannel = X
AND Primary Context = X -- Can be null (if null check with N/A)
AND Secondary Context = X -- Can be null (if null check with N/A)
AND RequestDate Between Y AND Z
group by 1,2,3,4,5
) b on a.subscription_id = b.subscription_id and a.request_date = b.max_request_date

BuildInboundSubscription process:
Run this process only when ExecutionMode is GetNBA.It cleans up and destroys the
treatment bucket map
“ B a t c h N B A V o l u m e C o n s t r a i n t s“which
was created
Sets ConfigValue = false for
ConfigName CataloguePush

 Finalise Call Finalise Flow Always


3041
Calls VFUK-FW-AOMFW-Work-Simulation.BuildInboundSubscription to build subscriptions for Inbound Simulation for given Channel,
SubChannel, PrimaryContext ,SecondaryContext and Range of RequestDates and then invokes Dataflow
PrepareSubscriptionsForInboundSimulation and check Status of it.
Notify Support in case of any failures.

BuildInboundSubscription Activity :
    Each time this activity runs an SQL Query as mentioned above and fetch at-most one Subscriptions from table
inbound_subscription_context for given Channel, SubChannel, PrimaryContext ,SecondaryContext and Range of RequestDates and store
in another table inbound_simulation_subscription.The dataflow  PrepareSubscriptionsForInboundSimulation will take these data as input.
PrepareSubscriptionsForInboundSimulation Dataflow:

This dataflow takes input as GetSubscriptionsForInboundSimulation and then  converts and adpot JSON Properties to Subscription
page and store them into Cassandra dataset SubscriptionsForInboundSimulation
Input: InboundSimulationSubscription(VFUK-FW-AOMFW-Data-InboundSimulationSubscription) dataset of type Database Table
Output: SubscriptionsForInboundSimulation (VFUK-FW-AOMFW-Data-Subscription) Cassandra dataset
InboundSimulationSubscription :
Keys:
SubscriptionIdPurpose of this activity is to call dataflow PrepareSubscriptionsForInboundSimulation.
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Log to Error LogBuildInboundSubscription


3042
SubscriptionsForInboundSimulation:
Key
CustomerID

Setup Inbound Simulation
Execute Inbound Simulation

HouseKeeping
Create Connect SQL For inbound_subscription_context table:
Add HousekeepingSQL config in AOM config:
Delete SQL - Delete records within the retention period that is set in the config
Applies To VFUK-FW-AOMFW-Data-InboundSubscriptionContext
Ruleset AOMFW-Database
RequestTyp
ePurgeDataPostgreSQL
HouseKeepingRetentionPeriod InboundSubscriptionContext 45
HouseKeepingSQL InboundSubscriptionContext VFUK-FW-AOMFW-Data-
InboundSubscriptionContext ConfigType ConfigName ConfigValue


3044
TIL Simulation
Overview
Table and class mappings
Bundle Event Context Table
Bundle Event Simulation Context Table
OOB Charges Response Table
Baseline TIL simulattion export Table
GetOOBCharges  Changes
GetOOBCharges Activity
AdoptJSONArrayT oProperty
D_GetOOBCharges Datapage:
CaseIgnitor
Case Changes
AOM Config
Truncate Inbound Baseline Data
Check Inbound Baseline Data Set
Build Inbound Subscription Context
Setup Inbound Baseline Simulation
Setup Inbound Simulation
Create Simulation
Execute Inbound Customer Simulation
Export Inbound Baseline Simulation
ExportTILBaselineSimulation Dataflow:
Overview
This section briefs on Simulation for the Context of Inbound Bundle Event Requests.The incoming TIL Bundle Event api calls are stored in a
new table with contextual information and we need to run simulation for these customers based on inputs provided to the simulation case.

Table and class mappings
Bundle Event Context Table
This table will capture the customers with context who have interacted from bundle event requests.
Class Name VFUK-FW-AOMFW-Data-BundleEventContext
Column Name Property Name Constraints Type Example Description
subscription_id SubscriptionId NOT NULL varchar(255) -XMY4J1 Customer Identifier -
For Customer
Identification
ntid NTID NOT NULL varchar(255) 280 ntid
request_date RequestDate NOT NULL timestamp 20211222 Request Date Table Name bundle_event_context


3045

Bundle Event Simulation Context Table
This table will capture the customers with context who will be participating in TIL Simulation .

OOB Charges Response Table
This table will store the oob charges for the customers who have interacted from bundle event requests .context Context NOT NULL text {"NoOfActions":"1",”
TransactionId”:
“esdsfds0909“,"Prim
aryContext":"manag
e_data","Secondary
Context":"","Account
Number":"1234} Subscription
Context
Parameters
Class Name VFUK-FW-AOMFW-Data-BundleEventSimulationContext
Column Name Property Name Constraints Type Example Description
subscription_id SubscriptionId NOT NULL varchar(255) -XMY4J1 Customer Identifier -
For Customer
Identification
ntid NTID NOT NULL varchar(255) 280 ntid
request_date RequestDate NOT NULL varchar(255) 20211222 Request Date
context Context NOT NULL text {"NoOfActions":"1",”
TransactionId”:
“esdsfds0909“,"Prim
aryContext":"manag
e_data","Secondary
Context":"","Account
Number":"1234} Subscription
Context
Parameters Table Name bundle_event_simulation_context
Class Name VFUK-FW-AOMFW-Data-OOBChargeSimulationResponse
Column Name Property Name Constraints Type Example Description
transaction_id TransactionId NOT NULL varchar(255) ert67534gjjlyuo TransactionId  of
get bundle event
request
subscription_id SubscriptionId NOT NULL varchar(255) -XMY4J1 Customer Identifier
- For Customer
Identification Table Name oob_charge_simulation_response


3046
Baseline TIL simulattion export Table
This table will store the current baseline subscription data for TIL simulation .

GetOOBCharges  Changes
GetOOBCharges Activity
Add two new parameters
TransactionId – String
SimulationMode – True or Falserequest_ts RequestDateTime NOT NULL timestamp 20211222 09:07:58.
228API request date
time
service_number ServiceNumber NOT NULL varchar(255) 447765432189 ntid
charges Charges NULL text  JSONOfPageList(V
FUK-FW-AOMFW-
Int-TIL-
OOBCharge)
Class Name VFUK-FW-AOMFW-Data-BaselineTILSimulationExport
Column Name Property Name Constraints Type Example Description
subscription_id SubscriptionId NOT NULL varchar(255) -XMY4J1 Customer Identifier
- For Customer
Identification
payload Payload NOT NULL text  JSON of
subscription pageTable Name baseline_til_simulation_export
Based on of the parameter SimulationMode, the activity does as below:
If False, Call Rest-Service(OOBCharges) and save the response to oobcharge_simulation_response table by converting reponse to
JSON.
If True, Retrieve records from oobcharge_simulation_response table and adopt JSON string to Objects so that we can return PageList
as results of Datapage
Applies To Code-Page-List
Ruleset AOMFW
Input
ParametersSubscriptionId  – String
ServiceNumber – String
TransactionId – String
SimulationMode – True or False
Output
ParametersNAActivity - GetOOBCharges


3047

AdoptJSONArrayToProperty
D_GetOOBCharges Datapage:
Add two new parameters to dataPage D_GetOOBCharges
TransactionId – String
SimulationMode – True or False
CaseIgnitor
Below are the new/update parameters in simulation caseignitor:

Case Changes
 Update of Existing Step
 New Step or Process
 Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log
The function takes a string input with JSON format and converts it to property of  ClipboardPage object.
Paramet
ersjson The JSON String that requires the adoption
page The ClipboardPage in which the json will be adopted
propertyName PropertyName on page which the json array will be adopted
Returns -
Throws Exception An error that indicates the failure whilst adopting jsonvoid AdoptJSONArrayToProperty(String json, ClipboardPage page, String propertyName)
ExecutionMode Y Execution Mode of Simulation Possible
Values:
BatchNBA
GetNBA
TIL
NTID Y - if Execution Mode = TIL NTID to Simulate
RequestStartDate Y - if Execution Mode = GetNBA or TIL Start Date of Records to Run
RequestEndDate Y - if Execution Mode = GetNBA or TIL End Date of Records to RunParameter Mandatory Description


3048
Setup

 Initialise
Check

 Sets the values
required for the
case to on the
case page
Check if any
simulation
running
Sets ConfigValue
= true for
ConfigName
CataloguePush
Check if PM
Push Currently
Being Performed
If yes, wait
Else continue Always Snooze
Configurable
Loop Count

Elapse Call existing
Initialize flow
Need to decide
on snooze time.
Do we need to
restrict user while
creating on UI?
Truncate
Baseline DataTruncate
BaselineSimulati
on and
BaselineSimulati
onExport Data
SetBaselineRun is
true
&
ExecutionMode =
BatchNBANotify
Support flow 3.1
Truncate Inbound
Baseline DataIf
ExecutionMod
e = “GetNBA”
Truncate
BaselineSubscrip
tionDataForGetN
BA and
BaselineGetNBA
SimulationExport
DataSet
Else If
ExecutionMod
e = “TIL”
Truncate
BaselineSubscrip
tionDataForTIL
and
BaselineTILSimul
ationExport
DataSetBaselineRun is
true
&
ExecutionMode =
GetNBA OR TIL
Pre-Process Check Baseline
Data Set Check if
BaselineSimulatUseBaselineData
is true If no Data
Present: Abort  3.1Stage Step Functionality Condition Error/Adverse
Process Comments Release


3049
ion dataset has
data
 &
ExecutionMode =
BatchNBA
 Case
Notify Support if
error occurs

Check Inbound
Baseline Data
Set If
ExecutionMod
e = “GetNBA”
Check if
BaselineSubscrip
tionDataForGetN
BA dataset has
data
Else If
ExecutionMod
e = “TIL”
Check if
BaselineSubscrip
tionDataForTIL
data set has dataUseBaselineData
is true
&
ExecutionMode =
GetNBA OR TILIf no Data
Present: Abort
Case
Notify Support if
error occurs   3.1
3.2
Check Segment Call activity
CheckSegment
where it checks
·         If segment
exists and
·         if
RefreshSegment
is false check
Segment does
run todayIf
UseBaselineData
is false
and Parameter
for Refresh
Segment is true
&
ExecutionMode =
BatchNBA
 If Segment
Doesn’t Exist:
Abort Flow

If Segment Run
Fails Notify
Support  3.1
 ·         Call activity
CheckSegment
RunStatus
where it checks if
segment is still
running
·         Snooze
while Segment is
running
Call Run
Segment Passed
in Context
Run Segment Executes
segment rule with
the name passed UseBaselineData
is false &
RefreshSegment
is true Notify Support if
Still Running for
long time  Need to check
and wait if
Schedule is not
running, if it is 3.1


3050
in SegmentName
parameter
Call Activity
RunSegment,
which calls Rule-
Obj-Report-
Definition-
Segment.Execute
Segment activity
by passing the
SegmentName.&
ExecutionMode =
BatchNBA
 need to snooze
until complete
 Call activity
CheckSegment
RunStatus
where it checks if
the segment is
still running
Snooze while
Segment is
running
Build
Subscription
 Activity
UpdataSubscrip
tionView will call
database
function, u p d a t e _
s u b s c r i p t i o n _ v ( ) ,
to update the
Subscription viewUseBaselineData
is false
&
ExecutionMode =
BatchNBA
 Notify Support Call SQL
Procedure
 3.1
Setup Treatment
Data Use
InitialiseTreatme
ntBuckets flow
 Always
 Notify Support
  Sets
BucketsInitialised
to true3.1
Build Inbound
Subscription Cont
ext
 Build
Subscription Data
Sets for different
simulations
based on
Execution mode
if Execution
Mode is GetNBA
call
BuildGetNBASub
scription activity
to build GetNBA
Subscription by
calling
PrepareSubscri
ptionsForInbouUseBaselineData
is false
&&
ExecutionMode =
GetNBA /TILNotify Support  3.1
3.2


3051
ndSimulation
DF
Else if Execution
Mode is TIL
call
BuildBundleEvent
Subscription
activity to build
TIL Subscription
by calling
PrepareSubscri
ptionsForTILSi
mulation DF

Flow:
Build Inbound
Subscription
Process Setup Simulation Load
SubscriptionData
ForBatchNBA
dataset  by
calling
PrepareDataForB
atchNBA
DataFlow
Snooze while
DataFlow is
running and
Check Status BaselineRun is
false and
UseBaselineData
is false
&
ExecutionMode =
BatchNBA
 Notify Support
Wait for a specific
time while
DataFlow is
running 3.1
Process Setup Baseline
Simulation Load
BaselineSimulat
ion dataset  by
executing
PrepareDataForS
imulation
dataflow,
Snooze while
DataFlow is
running and
Check Status BaselineRun is
true
&
ExecutionMode =
BatchNBA
 Notify Support
Wait for a specific
time while
DataFlow is
running 3.1
 Setup Inbound
Baseline
Simulation If Execution
Mode is
GetNBA
Load
BaselineSubscri
ptionDataForGet
NBA dataset  by BaselineRun is
true
&
ExecutionMode =
GetNBA OR TILNotify Support
Wait for a specific
time while
DataFlow is
running 3.1
3.2


3052
executing
PrepareBaseline
DataForGetNBA
dataflow
Snooze while
DataFlow is
running and
Check Status
Else if
Execution
Mode is TIL
Load
BaselineSubscri
ptionDataForTIL
dataset  by
executing
PrepareBaseline
DataForTIL
dataflow
Snooze while
DataFlow is
running and
Check Status
Process Setup Inbound
Simulation  if Execution
Mode is
GetNBA
In the Prepare
Data For Inbound
Simulation
activity (Start
Data Flow):
Truncate
SubscriptionData
ForGetNBA
dataset and Load
SubscriptionData
ForGetNBA
dataset  by
executing
PrepareDataFor
GetNBA dataflow.
Then, Snooze
while is running
and Check
Status
Flow:
Setup Inbound
SimulationBaselineRun is
false &
UseBaselineData
is false
&
ExecutionMode =
GetNBA OR TILNotify Support
Wait for a specific
time while
DataFlow is
running Create
DataflowWorkIte
mId in config3.1
3.2


3053
Else if
Execution
Mode is TIL
In the Prepare
Data For TIL
Simulation
activity (Start
Data Flow):
Truncate
SubscriptionData
ForTIL dataset
and Load
SubscriptionData
ForTIL dataset
by executing
PrepareDataForT
IL dataflow.
Then, Snooze
while is running
and Check
Status
Process Create
Simulation  Call the
CreateSimulatio
n activity which
will set
pyOptions,
pyDataSource,
pyStrategy, and
pyDestinations
pages of Data-
Decision-
Simulations for
running a
simulation based
on
SimulationType
and
SimulaitonName
parameter. Then
call
pzCreateSimulati
on activity to
create work-item
and set
S i m u l a t i o n R u n I D .
Add In Get NBA
Data
Set(Subscription
DataForGetNBA )
and SimulationType
!= Customer Notify Support
Rerun the flow·         If
ExecutionMode =
BatchNBA and If
 BaselineRun or
BaselineDataRun
is true
In the
SetSimulationDat
a Data Transform
->
Set dataset to
BaselineSimulat
ion and strategy
to
IdentifyBestOBT
reatmentsByBat
ch
·         Else if
ExecutionMode =
BatchNBA and If
 BaselineRun or
BaselineDataRun
is false
Set dataset to
SubscriptionDat
aForBatchNBA
and Strategy to 3.1
3.2


3054
Strategy(GetNBA
WithIntent) as
Per Logic Design IdentifyBestOBT
reatmentsByBat
ch
·         Else if
ExecutionMode =
GetNBA and If
 BaselineRun or
BaselineDataRun
is false
Set dataset to
SubscriptionDat
aForGetNBA
and Strategy to
GetNBAWithInte
nt
·         Else if
ExecutionMode =
GetNBA and If
 BaselineRun or
BaselineDataRun
is true
Set dataset to
BaselineSubscri
ptionDataForGet
NBA and
Strategy to
GetNBAWithInte
nt
·         Else if
ExecutionMode =
TIL and If
 BaselineRun or
BaselineDataRun
is true
Set dataset to
BaselineSubscri
ptionDataForTIL
and Strategy to
IdentifyBestTrea
tmentsByTrigge
rs
·         Else if
ExecutionMode =
TIL and If
 BaselineRun or
BaselineDataRun
is false
Set dataset to
SubscriptionDat


3055
aForTIL and
Strategy to
IdentifyBestTrea
tmentsByTrigge
rs

Process Execute
simulation  Activity
RunSimulation
calls
pxSubmitAndRun
activity by
passing
SimulaitonRunID
which runs the
simulation
Wait for
simulation to
complete
Update the
queue item status
RunCompleted
 SimulationType
!= Customer Notify Support
Rerun
RunSimulation
Process Execute
Customer
Simulation ·         If Baseline
is True or If Use
Baseline Data
Set is true run
the
·
CustomerBaseL
ineSimulation
·         Otherwise
run the
·
CustomerSimul
ation
 SimulationType =
Customer
&
ExecutionMode =
BatchNBA Notify Support
  3.1
Process Execute Inbound
Customer
Simulation  In the Execute
Inbound
Simulation
Activity
 if Execution
Mode is
GetNBA
·         If Baseline
is True or If
UseBaselineData SimulationType =
Customer
&
ExecutionMode =
GetNBA OR TILNotify Support  3.1
3.2


3056
Set is true run
the
·         Call
CustomerBaseL
ineSimulationFo
rGetNBA
·         Else
·         Call
CustomerSimul
ationForGetNBA
DF as per Logic
Design
Else If
Execution
Mode is TIL
·         If Baseline
is True or If
UseBaselineData
Set is true run
the
·         Call
CustomerBaseL
ineSimulationFo
rTIL
·         Else
·         Call
CustomerSimul
ationForTIL DF
as per Logic
Design
Flow:
Execute Inbound
Simulation
PostProcess Export Baseline
SimulationExport data to
baseline_simulati
on_export table
using
ExportBaselineSi
mulation DFBaselineRun =
true
&
ExecutionMode =
BatchNBANotify Support
  3.1
 Export Inbound
Baseline
SimulationIf Execution
Mode is
GetNBA
Export data to
baseline_getnba_
simulation_export
table using BaselineRun is
true
&
ExecutionMode =
GetNBA OR TILNotify Support
  3.1
3.2


3057
ExportGetNBAB
aselineSimulatio
n DF
Else If
Execution
Mode is TIL
Export data to
baseline_til_simul
ation_export
table using
ExportTILBaseli
neSimulation DF
 Setup Proposition
Lookup Load
simulation_looku
p table by calling
InsertSimulation
LookupData
activity which
executes the
InsertSimulationL
ookUpData
Dataflow.
 SimulationType
!= Customer Wait
Notify Support Call
SimulationPrePro
cess activity

PostProcess Generate
Summary
 Run postprocess
procedure for
either funnel or
distribution based
on simulation
type
Set Queue item
status to
PostProcessCom
pleted or
(Completed)
 Call
GenerateSumm
ary activity which
will run post-
process database
function,
p o p u l a t e _ s i m u l a t i
o n _ s u m m a r y ( ),
for either funnel
or distribution
based on
SimulationType a
nd
SimulationRunIDSimulationType
!= Customer
 Wait
Notify Support


3058
AOM ConfigEnd
 Clean Up
 Reset
Subscription
View
It cleans up and
destroys the
treatment bucket
map
“ B a t c h N B A V o l u m
e C o n s t r a i n t s“whi
ch was created
Sets ConfigValue
= false for
ConfigName
CataloguePush
  Always Notify Support
  Call
DeleteTreatment
Buckets activity
 Finalise Call Finalise
Flow Always
Elapsed Clean Up Reset
Subscription
View
It cleans up and
destroys the
treatment bucket
map
“ B a t c h N B A V o l u m
e C o n s t r a i n t s“whi
ch was created
Sets ConfigValue
= true for
ConfigName
CataloguePushAlways  Notify Support
 Finalise Call Finalise FlowAlways
Abort Clean Up
 Reset
Subscription
View
It cleans up and
destroys the
treatment bucket
map
“ B a t c h N B A V o l u m
e C o n s t r a i n t s“whi
ch was created
Sets ConfigValue
= false for
ConfigName
CataloguePush Always Notify Support


3059
Truncate Inbound Baseline Data
 Finalise Call Finalise
Flow Always    DataFlowWorkItemId PrepareBaselineDataForTIL DF-
DataFlowWorkItemId PrepareDataForTIL DF-
DataFlowWorkItemId CustomerBaseLineSimulationForTIL DF-
DataFlowWorkItemId CustomerSimulationForTIL DF-
DataFlowWorkItemId ExportTILBaselineSimulation DF-ConfigType ConfigName ConfigValue
Identifies whether BaselineRun is true & ExecutionMode = GetNBA OR TIL
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFWUPDATE: When - IsInboundBaseline
If ExecutionMode = “GetNBA”
Truncate BaselineSubscriptionDataForGetNBA and BaselineGetNBASimulationExport data sets
Else If ExecutionMode = “TIL”
Truncates BaselineSubscriptionDataForTIL and BaselineTILSimulationExport datasets
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - TruncateInboundBaselineData
Stores output of TIL baseline simulation
Applies To VFUK-FW-AOMFW-Data-BaselineTILSimulationExport
Ruleset AOMFW-Database
Type Database Table
Table baseline_til_simulation_export
Keys SubscriptionIdDataset - BaselineTILSimulationExport


3060
Check Inbound Baseline Data Set
Build Inbound Subscription ContextIdentifies whether UseBaseLineData is true & ExecutionMode = GetNBA OR TIL
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFWUPDATE: When - UseBaselineDataInbound
If ExecutionMode = “GetNBA”
Checks if BaselineSubscriptionDataForGetNBA dataset has data
Else If ExecutionMode = “TIL”
Checks if BaselineSubscriptionDataForTIL data set has data
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - CheckInboundBaselineSimulation
Identifies whether UseBaseLineData is false & ExecutionMode = GetNBA OR TIL
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFWUPDATE: When - BuildInboundSubscriptionRunnable
If ExecutionMode = “GetNBA”
Call PrepareSubscriptionsForGetNBASimulation activity which populates data on to SubscriptionsForGetNBASimulation dataset
Else If ExecutionMode = “TIL”
Calls PrepareSubscriptionsForTILSimulation activity.
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNAUPDATE: Activity - BuildInboundSubscription


3061
 Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log
Populates data into BundleEventSimulationContext dataset by call ConnectSQL PopulateTILSimulationSubscription and the invokes
PrepareSubscriptionsForTILSimulation  dataflow
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log Activity - PrepareSubscriptionsForTILSimulation
This Dataset is populated from bundle_event_context table by connect SQL PopulateTILSimulationSubscription and is used as source to
PrepareSubscriptionsForTILSimulation dataflow
Applies To VFUK-FW-AOMFW-Data-BundleEventSimulationContext
Ruleset AOMFW-Database
Type Database Table
Table bundle_event_simulation_context
Keys SubscriptionIdDataset - BundleEventSimulationContext
Builds Subscription data set for TIL as per build TIL Subscription
Applies To VFUK-FW-AOMFW-Data-BundleEventContext
Ruleset AOMFW-Database
Method Save
SQL {SQLPage:SQLDiagnostics}
insert
into
bundle_event_simulation_context  ( subscription_id, ntid, request_date, context
select
a.subscription_id,
a.ntidConnect SQL - PopulateTILSimulationSubscription


3062
PrepareSubscriptionsForTILSimulation Dataflow:
  This dataflow converts output data from BundleEventSimulationContext table into relevant Subscription Context Properties and also get
Subscription details from Subscription table by subscription_id then store that data SubscriptionsForTILSimulation dataset.
Source : BundleEventSimulationContext
Destination : SubscriptionsForTILSimulation a.request_date,
a.context,
from
bundle_event_context a
inner join (
select
subscription_id, ntid, MAX(request_date) maxrequestdate
from
bundle_event_context
where
ntid= '{ASIS:.NTID}'
and request_date between '{ASIS:.RequestStartDate}'::timestamp and '{ASIS:.RequestEndDate}'::timestamp
group by
1, 2 ) b on
a.subscription_id = b.subscription_id
and a.request_date = b.maxrequestdate
Destination dataset to dataflow PrepareSubscriptionsForTILSimulation which provide subscriptions for TIL simulation
Applies To VFUK-FW-AOMFW-Data-Subscription
Ruleset AOMFW-Artifacts
Type DecisionDataStore
Keys SubscriptionIdDataset - SubscriptionsForTILSimulation
If ExecutionMode = “GetNBA”
Checks dataflow PrepareSubscriptionsForInboundSimulation status
Else If ExecutionMode = “TIL”
Checks dataflow PrepareSubscriptionsForTILSimulation status
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogActivity - CheckPrepareSubscriptionsForInboundSimulationDFStatus


3063
Setup Inbound Baseline Simulation
Setup Inbound SimulationIf Execution Mode is GetNBA
Load BaselineSubscriptionDataForGetNBA dataset by executing PrepareBaselineDataForGetNBA dataflow
Else If Execution Mode is TIL
Load BaselineSubscriptionDataForTIL dataset by executing PrepareBaselineDataForTIL dataflow
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - PrepareDataForInboundBaselineSimulation
If Execution Mode is GetNBA
Checks PrepareBaselineDataForGetNBA DF status
Else If Execution Mode is TIL
Checks PrepareBaselineDataForTIL DF status
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - CheckPrepareDataForInboundBaselineSimulationDFStatus
Identifies whether BaselineRun is false & UseBaselineData is false & ExecutionMode = GetNBA OR TIL
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFWUPDATE: When - SetupInboundSimulationRunnable
UPDATE: Activity - PrepareDataForInboundSimulation


3064
Create SimulationIf Execution Mode is GetNBA
Truncate SubscriptionDataForGetNBA dataset and Load SubscriptionDataForGetNBA dataset by executing PrepareDataForGetNBA
dataflow.
Else If Execution Mode is TIL
Truncate SubscriptionDataForTIL dataset and Load SubscriptionDataForTIL dataset by executing PrepareDataForTIL dataflow.
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log
If Execution Mode is GetNBA
Checks PrepareDataForGetNBA DF status
Else If Execution Mode is TIL
Checks PrepareDataForTIL DF status
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - CheckPrepareDataForInboundSimulationDFStatus
Calls UpdateDataSource and UpdateStrategy DTs to set pyOptions, pyDataSource, pyStrategy, and pyDestinations pages of Data-
Decision-Simulations for running a simulation based on SimulationType
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNAUPDATE: Data Transform - SetSimulationData


3065
Execute Inbound Customer SimulationSets pyDataSource page of Data-Decision-Simulations based on ExecutionMode
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNAData Transform - UpdateDataSource
Sets pyStrategy page of Data-Decision-Simulations based on ExecutionMode
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNAData Transform - UpdateStrategy
Identifies whether SimulationType = Customer & ExecutionMode = GetNBA OR TIL
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFWUPDATE: When - IsInboundCustomerSimulation
If Execution Mode is GetNBA
If Baseline is True or If UseBaselineData Set is true, Call CustomerBaseLineSimulationForGetNBA
Else, Call CustomerSimulationForGetNBA DF as per Logic Design
Else If Execution Mode is TIL
If Baseline is True or If UseBaselineData Set is true, Calls CustomerBaseLineSimulationForTIL
Else, Calls CustomerSimulationForTIL DF
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNAUPDATE: Activity - ExecuteInboundCustomerSimulation


3066
Export Inbound Baseline Simulation
ExportTILBaselineSimulation Dataflow:
This dataflow converts output data from BaselineSubscriptionDataForTIL to BaselineTILSimulationExport dataset.
Source : BaselineSubscriptionDataForTIL
Destination : BaselineTILSimulationExport
 Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log
If Execution Mode is GetNBA
Checks <TBD> DF status
Else If Execution Mode is TIL
Checks <TBD> DF status
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - CheckInboundCustomerSimulationDFStatus
If Execution Mode is GetNBA
Exports data to BaselineGetNBASimulationExport using ExportGetNBABaselineSimulation DF
Else If Execution Mode is TIL
Exports data to baseline_til_simulation_export table using ExportTILBaselineSimulation DF
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogUPDATE: Activity - ExportInboundBaselineSimulation


3068
ProcessSimulationDropOff Update
Config Updates:
896310 - Ability to Start Stop Real-Time Data Flow from Simulation
New flow to start the real-time DF, ProcessSimulationDropOff. This need to be executed for Customer Simulation
StartProcessSimulationDropOffStatus FlowDataflowWorkItemID ProcessSimulation
DropOff DF- The Work Item Id of the Data Flow identified in the Config
Name
DataflowIdleTimeDurat
ionProcessSimulation
DropOff300(in seconds) To set a time frame to see if the records are not processed in
the time frame ConfigType ConfigName ConfigValue Notes Relea
se
Start ProcessSimulationDropOff  DataFlow .
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Main Start ProcessSimulationDropOff Data flow and wait for the dataflow to start
Error Handling Primary Catch-allStartProcessSimulationDropOffStatus


3069

New flow to stop the real-time DF, ProcessSimulationDropOff - this can be added in the End stage - clean up process
StopProcessSimulationDropOffStatus FlowError Handler
Logs to Error Log
Stop ProcessSimulationDropOff  DataFlow .
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Main Stop ProcessSimulationDropOff Data flow when simulation type is customer and wait for the dataflow to stop
Error Handling Primary Catch-all
Error Handler
Logs to Error LogStopProcessSimulationDropOffStatus


3070
904783 - Ability to Check Progress of Real Time Data Flow
CheckProcessSimulationDropOffStatus Flow


3071

904789 - Truncation SimulationDropOff Data Sets in Simulation case
TruncateCustomerSimulation Flow

Need to check the ProcessSimulationDropOff  DF status.
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Main Get Progress for ProcessSimulationDropOff Data flow
Get TimeFrame from AOMConfig
Check if DF did not processes any records in the defined TimeFrame (use pzLastMetricsUpdateTime) and
set df status accordingly
Error Handling Primary Catch-all
Error Handler
Logs to Error LogCheckProcessSimulationDropOffStatus


3072

 Stop the Real Time data flow when it is not processing records and truncate SimulationDropOff dataset
Applies To VFUK-FW-AOMFW-Work-Simulation
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Main Dataset-Execute - truncate SimulationDropOff dataset
Error Handling Primary Catch-all
Error Handler
Logs to Error LogTruncate Customer Simulation activity


3073
Pega 8.8 Upgrade - Simulation changes
The OOTB Simulation functionality has changed in Pega 8.8. This document details the new functionality in the Customer Decision Hub for
Simulation, in order to update the AOM Simulation Case with the same functionailty.
Create Decision Funnel
New (8.8) functionality:
Flow: pzConfigureSimulationSettings
Flow action: pzConfigureSimulationSettings
Section: pyConfigureSimulationSettings Validation: pzValidateSimulationConfiguration
On Submit: pzPostSimulationConfiguration
Call activity pzValidateDuplicateReport -
Call activity pzCreateSimulation -

Activity: pzValidateDuplicateReport
This activity checks if the pagelist pyAssignedReports is populated.
If there are duplicate reports, then set message.
 Properties to set Validation
pyStrategyAppliesTo Not empty
pyStrategyResultClass Not empty
pySourceRuleAppliesTo Not empty
pySimulationName Not empty
pyDestinations(1).pyRuleName If length of pyDestinations <1 then display
message. Do not continue.
.destinations() For each call
pzValidateOutputDestinations Validation Rule:
pzValidateSimulationConfiguration
Call pyCreateTempApplication activity Create a temporary application to run
simulation on revision context
Call pyDFRunOnRevisionContext activity Create a temporary  access group to run
simulation on Enterprise application Activity: Pega-DM-
Simulation.pzCreateSimulation


3074
Notes:
In Pega 8.8,  pzCreateSimulation has moved to Pega-DM-Simulation (previously Data-Decision-Simulations) .  Simulation
created is type Pega-DM-DDF-Work.
In AOM, replace Data-Decision-Simulations.pzCreateSimulation activity with Pega-DM-Simulation.pzCreateSimulation activity.
AOM Code: pyOptions properties are set on Data-Decision-Simulations class

When run from Hub: pyWorkPage.pyLabelOld = Decision Funnel
pxObjClass: Pega-DM-Simulation-Funnel
pyLabel: Decision Funnel

WO created for Simulation is Pega-DM-DDF-Work
Customer Decision Hub shows Pega-DM-Simulation objects. Pega-DM-Simulation is new in Pega 8.8. Populated from DataPage
D_pzSimulationsList. (Decision Hub no longer uses Pega-DM-DDF-Work )Call pzCreateSimulationRun activity If Edit mode, then open existing
Simulation work object
In Create mode, apply
pzPreCreateSimulationRun data
transform to set pySourceRuleName
Apply pzSetSimulationConfiguration
data transform to set properties on
pyOptions page
Change pyOption page context to Data-
Decision-DDF-RunOptions-Simulation
Call pzValidateConfiguration activity to
validate Simulation inputs
Copy CustomFields from primary to
pyOptions page
Set properties and call
pxCanDisableSimulations activity to
check simulation import is in progress
/Failed
Set pyWorkIDPrefix for Simulation
Call AddWork activity for Simulation
work object (note that this activity has not
changed in Pega 8.8)
Call pzPostCreateSimulationRun


changed in Pega 8.8)
Call pzPostCreateSimulationRun
activity to set the simulation run ID to
primary page
 Creates Pega-DM-DDF-Work.Simulation
object

pzSetSimulationConfiguration sets
pyOptions properties.
pzCreateSimulation activity was on Data-
Decision-SimulationspzCreateSimulation has moved to Pega-
DM-Simulation  Previous Pega version New Pega version (8.8)


3075

TO DO:
We need to update AOM Simulation Case to create and run Simulations the same way as the new (8.8) OOTB functionality creates and
runs Simulations.
Changes will be needed to Create Simulation and Execute Simulation processes in the Simulation Case.
Analysis to determine if other Case changes will be needed.
Simulations created in AOM case should be available in Customer Decision Hub → Simulations.pyOptions is property on Data-
Decision-Simulations
pyOptions is page of type Data-
Decision-DDF-RunOptions-SimulationpyOptions is property on Pega-DM-
DDF-Work
pyOptions is page of type Data-
Decision-DDF-RunOptions
Customer Decision Hub uses Pega-DM-
DDF-WorkCustomer Decision Hub shows Pega-
DM-Simulation objects.
Pega-DM-Simulation is new in Pega 8.8.
Populated from DataPage
D_pzSimulationsList.


3076
Stop Simulation
As part of AOM Management Portal users can stop the currently running Simulation.

 This activity will stop the currently running(In progress) dataflow workitem
Applies To VFUK-FW-AOMFW-Work
Ruleset AOMFW
Input Parameter String WorkItemId
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Logs to Error Log
Activity Logic 1. Calls Data-Decision-DDF-RunOptions.pxStopById activity by sending Param.WorkItemId as input
2. Set Param.WorkItemId and DataflowName to the new properties in Work classActivity: Stop Dataflow Workitem
This activity will check the the currently stopping dataflow status
Applies To VFUK-FW-AOMFW-Work
Ruleset AOMFW
Input Parameter String WorkItemId
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Logs to Error Log
Activity Logic 1. Based on new WorkItemId and DataflowName properties call the Datflow-Execute with dataflowName and
WorkItemId
2. Set the dataflow status to the current work classActivity: Check Dataflow Status


3077
AOM RT Aggregated Event Store - Account Event
Overview

In order to support the use of Account Level Events in Decisioning Framework - we need to provide a means of capturing events at an
account level and aggregating where necessary
Account Event Processing

New class: VFUK-FW-AOMFW-Data-AccountEvent
Create New RT Data Set: AccountEvents
Create New Data Flow: ProcessAccountEvents
Create new ESM Strategy:
Aggregations should be done on AccountNumber/PrimaryContext and SecondaryContext as Keys - Aggregation should be done on
System Time.
24 Hours
7 Days
30 Days
Events between 60-30 Days
Events between 90-60 Days
Events between 120-90 Days
Keep results in the DataSet: AccountAggregatedEvents
Data Store

Create a New Data Store which is keyed on Account Number to store Aggregated Events:
Class: VFUK-FW-AOMFW-Data-AccountAggregatedEvents
DataSet: AccountAggregatedEvents
Keys:AccountNumber Text  315490593
PrimaryContext Text 291
SecondaryContext Text Undefined
EventTimestamp Text 20181218T170110.000 GMT
Status Text New
Channel Text TIL
Context Text  Property Name Proeperty Type Example Value


3078
AccountNumber
PrimaryContext
SecondaryContext
Attributes:
Relevant Output from Aggregation Windows
LastRequestTimestamp
LastErrorRequestTimestamp
LastDuplicateRequestTimestamp
LastKnownContextAttributes
LastRaisedChannel
Save Account Events

Create New Activity: SaveAccountEvents
Take Parameters:
AccountNumber (Mandatory)
PrimaryContext (Mandatory)
SecondaryContext
EventTimestamp
Channel
Status
Context
ErrorStackTrace
Setup Default Parameters for Relevant Attributes:
SecondaryContext - If not provided set as Undefined
EventTimestamp - If not provided use CurrentDateTime
Channel - if not provided use Undefined
Status - if not provided assume New
Save Event into AccountEvents
Implementation

Should be embedded as part of Event Framework and should be used when the Source Identifier Type of Event is AccountNumber
Should utilise CIS Flag in Event Config Management
EventHandler Activity
Call SaveCustomerEvents when the Source Identifier is ServiceNumber & CIS enabled
Call SaveAccountEvents when the Source Identifier is AccountNumber & CIS enabled
Siebel Orders
Should log all events into CIS at the account number
Event Configuration should be taken from the EventConfig- Sales Order - update to TRUE
No Relative Context at this stage should be stored - post
Allow all events to come through for Open Status Only


3079
NIRMS

Should log all events into CIS where the context is Account Number
Should log as per events are configured today for subscription


3080
Data Load Threshold Assurance
Overview
In order to provide assurance of data being loaded into AOM, there is a requirement to be able to pause/stop the loader when a threshold
for a particular entity has exceeded over a given median/average in number of records
Solution
Loader - New Step Count Validation

 This flow triggers ValidateLoadThreshold activity to process threshold validation and pauses the case if there are entities outside the
threshold. If all entities are within the threshold, continues the case.
Applies To VFUK-FW-AOMFW-Work-Loader
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNAValidateLoadThreshold Flow
This activity gets the total record count, calculates the average count and variation, then populates the loader_stats table with this data. It
checks if the RecordCount is between the MinimumRecordCount and MaximumRecordCount - if the entity RecordCount is outside this
threshold, Ready is set to false and warning message displayed
Applies To VFUK-FW-AOMFW-Work-Loader
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingRuntime ExceptionValidateLoadThreshold Activity
This connect sql rule gets the sum of the record count of each entity within the current case
Applies To VFUK-FW-AOMFW-Data-HTSLStatusGetLoadCount Connect SQL


3081

Validation Configuration
ConfigType: FileAttributes
ConfigName: <<EntityName>>
ConfigValue:
PostiveVariationPercentage - Value of > than for Variation Validation
NegativeVariationPercentage - Value of < than for Variation Validation
VariationCalculationPeriod - Value of maximum number of days to be used for Variation Validation (model_score only)
MinimumRecordCount- Value of > than for RecordCount Validation
MaximumRecordCount- Value of < than for RecordCount Validation

ConfigType: LoaderFileAttributes
ConfigName: <<CaseSubType>>
ConfigValue: VariationCalculationPeriod - Value of maximum number of days to be used for Variation Validation
AOM ConfigRuleset AOMFW-Database
Input
ParametersNA
Output
ParametersNA
Connect
SQL Queryselect sum(record_count) as ".RecordCount" from htsl_status where  table_name='{ASIS:.TableName}' and
case_id='{ASIS:.CaseId}';
This connect sql rules gets the average of record count of each entity & load type within a 45 days interval
Applies To VFUK-FW-AOMFW-Data-LoaderStats
Ruleset AOMFW-Database
Input
ParametersNA
Output
ParametersNA
Connect
SQL Queryselect avg(record_count) as ".Average" from loader_stats where entity ='{ASIS:.Entity}' and load_type ='{ASIS:.LoadType}'
and load_date > (select current_timestamp - interval '{ASIS:.VariationCalcuationPeriod} day');GetLoadAverage Connect SQL
FileAttributes account {"ManifestFilePattern":"account_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}ConfigType (required)ConfigName (required) ConfigValue


3082
FileAttributes address {"ManifestFilePattern":"address_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}
FileAttributes benefits {"ManifestFilePattern": "benefits_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}
FileAttributes contact {"ManifestFilePattern":"contact_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}
FileAttributes device {"ManifestFilePattern":"device_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}
FileAttributes dialler_outcomes {"LoadType":"full" , "CompressionType":"zip" , "Encrypted":true ,
"InputFilePattern":"aom_. d i a l l e r _ o u t c o m e s._delta.zip.gpg" , "Mandatory":true,
"HasChecksum":false, "HasHeader":false, "Delimiter":"|" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes loans {"ManifestFilePattern": "loans_. _ ..readme" , "PositiveVariationPercentage":100 ,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}


"MaximumRecordCount":200000}
FileAttributes model_score {"LoadType":"file" , "Encrypted":false ,
"InputFilePattern":"BDC_model_ __delta.dsv" , "Mandatory": true,
"HasChecksum":false, "HasHeader":false, "Delimiter":"|" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle {"InputFilePattern":"COMBI_BUNDLES_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_channel_elig {"InputFilePattern":"COMBI_BNDL_CHANNEL_ELIG_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_dept_elig {"InputFilePattern":"COMBI_BNDL_DEPT_ELIG_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_exclusion {"InputFilePattern":"COMBI_BNDL_EXCLUSION_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}


"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_offer_group {"InputFilePattern":"COMBI_BNDL_OFFER_GROUP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_offer_group_me
m{"InputFilePattern":"COMBI_BNDL_OFFERGRP_MEM_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}


3083
FileAttributes oc_bundle_offer_upsell {"InputFilePattern":"COMBI_BNDL_OFFERUPSELL_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_qualifier {"InputFilePattern":"COMBI_BNDL_QUALIFIER_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes oc_bundle_qualifier_reward{"InputFilePattern":"COMBI_BNDL_QUAL_REWARD_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_accessories {"InputFilePattern":"ACCESSORIES_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_acct_service {"InputFilePattern":"ACC_SERVICES_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_acct_service_dept_elig {"InputFilePattern":"ACC_SERVICE_DEPT_ELIG_[0-9]{14}_.*.gpg" ,


"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_barred_product {"InputFilePattern":"BARS_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_discount {"InputFilePattern":"DISCOUNTS_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_discount_dept_elig {"InputFilePattern":"DISCOUNT_DEPT_ELIG_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_handset_service_comp {"InputFilePattern":"HANDSET_SERVICE_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_handset_tariff_comp {"InputFilePattern":"HANDSET_TARIFF_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}


"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_marketing_service {"InputFilePattern":"MKTFD_SERVICE_[0-9]{14}_.*.dsv.zip.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_payg_handset {"InputFilePattern":"HANDSETS_PAYG_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_paym_handset {"InputFilePattern":"HANDSETS_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}


3084
FileAttributes pc_service_handset_comp {"InputFilePattern":"SERVICE_HANDSET_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_service_service_incomp{"InputFilePattern":"SERVICE_SERVICE_INC_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_service_tariff_comp {"InputFilePattern":"SERVICE_O_TARIFF_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_tariff {"InputFilePattern":"TARIFFS_[0-9]{14}_.*.gpg" , "CatalogueSync":"true" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_tariff_dept_elig {"InputFilePattern":"TARIFF_DEPARTMENT_ELIG_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_tariff_discount_comp {"InputFilePattern":"TARIFF_DISCOUNT_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,


"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_tariff_handset_comp {"InputFilePattern":"TARIFF_HANDSET_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes pc_tariff_service_comp {"InputFilePattern":"TARIFF_SERVICE_O_COMP_[0-9]{14}_.*.gpg" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes product_holding {"ManifestFilePattern":"product_holding_. _ ..readme" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes product_reference {"ManifestFilePattern":"product_reference_. _ ..readme" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes subs_flex_attribute {"ManifestFilePattern":"subs_flex_attribute_. _ ..readme" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes subs_invoice_charge {"ManifestFilePattern":"subs_invoice_charge_. _ ..readme" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}


"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes subscription {"ManifestFilePattern":"subscription_. _ ..readme" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
FileAttributes tps {"ManifestFilePattern":"tps_. _ ..readme" , "PositiveVariationPercentage":100,
"NegativeVariationPercentage":100 , "MinimumRecordCount":0 ,
"MaximumRecordCount":200000}


3085
Report Definition
Create 2 Report Definitions to be able to analyze the above information as required
ViewLoaderStats Report
Class:  VFUK-FW-AOMFW-Data-LoaderStats
Filterable by:
Date Range
Load Type
Entity
Needs to show View for Last 7 Days - Increasable by Filter
ReportCategory: Operations
Add to Pega Reporting Dashboard under Category

ViewLoaderStatsByCase Report
Class:  VFUK-FW-AOMFW-Data-LoaderStats
Filterable by:
Date Range
Load Type
Entity
Needs to show View for Last 7 Days - Increasable by Filter
ReportCategory: Operations
Add to Pega Reporting Dashboard under Category
Grouped by Case Id & Date of the load
Sorted by load date, case id and entity respectively FileAttributes unica_campaign_history {"LoadType":"delta" , "CompressionType":"zip" , "Encrypted":true,
"ManifestFilePattern":"unica_campaign_history_. _ ..readme" , "Mandatory":true,
"HasChecksum":true, "HasHeader":false, "Delimiter":"|" ,
"PositiveVariationPercentage":100 , "NegativeVariationPercentage":100 ,
"MinimumRecordCount":0 , "MaximumRecordCount":200000}
LoaderFileAttributes CCR {"S3TransferMode": "move", "VariationCalculationPeriod":45}
LoaderFileAttributes OfferCatalogue {"LoadType":"full", "CompressionType":"zip", "Encrypted":true,
"ManifestFilePattern":"offer_catalogue_. _ ..readme", "Mandatory":false,
"HasChecksum":false, "HasHeader":false, "Delimiter":"|", "S3TransferMode":
"move", "VariationCalculationPeriod":45}


"move", "VariationCalculationPeriod":45}
LoaderFileAttributes ProductCatalogue {"LoadType":"full", "CompressionType":"zip" , "Encrypted":true ,
"ManifestFilePattern":"product_catalogue_. _ ..readme", "Mandatory":false,
"HasChecksum":false, "HasHeader":false, "Delimiter":"|", "S3TransferMode":
"move", "VariationCalculationPeriod":45}
LoaderFileAttributes Spine {"LoadType":"file", "CompressionType":"zip", "Encrypted":false, "Mandatory":true,
"HasChecksum":false, "HasHeader":false, "Delimiter":"|", "S3TransferMode":
"move", "VariationCalculationPeriod":45}
LoaderFileAttributes SpineV2 {"S3TransferMode": "move", "VariationCalculationPeriod":45}


3086
Loader Stats Table
Pega Class: VFUK-FW-AOMFW-Data-LoaderStats
Ruleset: AOMFW-Database
Table Name: loader_stats
Schema: aom
Example
DDL
CREATE TABLE aom.loader_stats (
ls_id varchar(100) NOT NULL,
case_id varchar(100) NOT NULL,
load_type varchar(100) NOT NULL,
ls_id (pyGUID) (PK) varchar(100) pyGUID
case_id varchar(100) CaseId
load_type varchar(100) LoadType
load_date timestamp LoadDate
entity varchar(100) Entity
record_count numeric RecordCount
average numeric with 2 decimal precision Average
variation numeric with 2 decimal precision Variation
metadata text MetadataColumn Name Column Type Pega Mapping
subscription 2,000,000 1,000,000 0.88
account 5,000 10,000 19.77
product_holding 150,000 145,000- -9.22entity record_count average variation


3087
load_date timestamp NULL,
entity varchar(100) NOT NULL,
record_count numeric NULL,
average numeric(100,2) NULL,
variation numeric(100,2) NULL,
CONSTRAINT loader_stats_pk PRIMARY KEY (ls_id)
);
ALTER TABLE aom.loader_stats ADD metadata text NULL;
-- Permissions
ALTER TABLE aom.loader_stats OWNER TO aom;
GRANT ALL ON TABLE aom.loader_stats TO aom;


3088
App Changes for LIVE UAT Seed Test
463859 App Changes for
LIVE UAT Seed TestOverview
It is required that on an Inbound NBA Decisioning request to be able to bypass business rules and
present relative offers and treatments back to channel with no relative business rules applied.
This is to be built for IVR initial use case and ensured will still work for MVA.
AOM Config
A New Global Config Variable - Allow Inbound NBA Seed Testing should be available to choose
whether or not to allow relative Seed Testing to take place in said environment.
Get NBA Service
Perform Check if New Global Config Parameter is set to True
If Not Ignore and Continue BAU Operation of GetNBA
If Global Config Parameter is set to true Perform Check if Customer MSISDN Provided is in
Seed Test Recipients List.
If Not Ignore and continue BAU operation of GetNBA
Check to see if any Relative Offer Whitelists are available for the relative Channel Passed into
GetNBA
If Not Ignore and continue BAU operation of GetNBA
Call Seed User Activity
Pass Output of Seed User Activity into Response Builder for GetNBA and handle as normal
If no Seed Test Output Provided throw 520 Business Error
Details of Error should be made available in AOM Error & Log Files

Data Type & Page
Create Data Type to store Configuration:
SeedUserNBAWhitelist
Attributes:
ServiceNumber
Channel
SubChannel
TreatmentName
TreatmentVariant
OfferVariantADO Task Id Subject Description


3089

Implementation
Database Table
Class Create Data Page for logic to retrieve configuration
Parameter:
ServiceNumber
Channel?
SubChannel
Cache: 1 Day
Returns:
Page List
TreatmentName
TreatmentVariant
OfferVariant

Seed Test Activity
It should be possible to pass a singular service and not a "Seed Test Group" into this handling
activity.
Call Get Subscription as Per BAU
Call Relative Data Flow with Subscription In Context
App Replace any Default Data Tokens that are left after the process
If nothing exists for Default Data Token throw 520 business logic error with relative error
details.
Pass SR pagelist back to "GetNBA" service to handle response.
seed_user_nba_whitelist CREATE TABLE aom.seed_user_nba_whitelist (
service_no varchar(12) NOT NULL,
channel varchar(255) NOT NULL,
sub_channel varchar(255) NOT NULL,
treatment_name varchar(255) NOT NULL,
treatment_variant varchar(255) NOT NULL,
offer_variant varchar(255) NOT NULL,
CONSTRAINT seed_user_nba_whitelist_pk PRIMARY KEY
(service_no,channel,sub_channel,treatment_name,treatment_variant,offer_variant)
);Name Definiton
Name Keys


3090
Data Type
Data Page
Report DefinitionVFUK-FW-AOMFW-Data-
SeedUserNBAWhitelistServiceNumber
Channel
SubChannel
TreatmentName
TreatmentVariant
OfferVariant
SeedUserNBAWhitelist VFUK-FW-AOMFW-Data-SeedUserNBAWhitelistName Id
D_SeedUserNBAWhitelist
 1 day cache
List type
node levelServiceNumber
Channel
SubChannelName Detail Keys
GetSeedUserNBAWhitelist Query to VFUK-FW-AOMFW-Data-SeedUserNBAWhitelist class with below keys and return
results TreatmentName, TreatmentVariant and OfferVariant
ServiceNumber
Channel
SubChannelName Steps


3091
CSO Transform - Modify Order
Descripiton
Implementation
Activity
DataT ransform
Example - LineItem Input Parameter
Example - Returned LineItem Block
Descripiton
To be able to create Modify Order Types from AOM which contain child line product updates to a subscriptions root service product
Implementation
Activity
DataTransform ModifyOrderRequest activity modifies the data that comes through input parameter to CSO request and invokes CSO activity. In successful
scenario it shows primary page, in failure scenario shows the error properties.
Applies To VFUK-FW-AOMFW-Int-TIL-SalesOrderAPI
Ruleset AOMFW
Input
ParametersServiceNumber, LineItems
Output
ParametersErrorCode, ErrorMessage, PriceIncludingVAT, PriceExcludingVAT, PriceType
Error
HandlingPrimary Catch-all Error Handler: Catches all the unhandled exceptions or errors in the activityModifyOrderRequestTH
ModifyOrderParameterValidation DT validate the activity parameter such as ServiceNumber and LineItem
Applies To VFUK-FW-AOMFW-Int-TIL-SalesOrderAPI
Ruleset AOMFW
Input
ParametersServiceNumber, LineItems,
Output
ParametersErrorMessageModifyOrderParameterValidation


3092
Example - LineItem Input Parameter
Example - Returned LineItem BlockError
HandlingN/A
ModifyOrderValidation do LOV validation for ActionCode and prices which come under LineItem
Applies To VFUK-FW-AOMFW-Int-LineItem
Ruleset AOMFW
Input
ParametersN/A
Output
ParametersErrorMessage, PriceIncludingVAT, PriceExcludingVAT, PriceType
Error
HandlingN/AModifyOrderValidation
1
2
3
4
5
6
7
8
9
10
11[
  {
    "ActionCode": "New",
    "ProductId": "101049",
    "MonthlyPriceIncludingVAT": 10.54,
    "MonthlyPriceExcludingVAT": 10.00,
    "ExtensibleAttributes": {
      "VBCLimit": "100"
    }
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20{
  "id": "1",
  "actionCode": "Modified",
  "serialNumber": "447595757004",
  "lineItem": [
    {
      "id": "2",
      "actionCode": "New",
      "productID": "101049",
      "amount": [
        {
          "price": {
            "priceIncludingVAT": 1054,
            "priceExcludingVAT": 1000,
            "vatAmount": 54
          },
          "type": "MONTHLY_RECURRING_COST"
        }
      ],
      "specification": [


3093

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39        {
          "name": "ExtensibleAttributes",
          "attribute": [
            {
              "name": "VBCLimit",
              "value": "£100.00"
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "actionCode": "New",
      "productID": "10548"
    }
  ]
}


3094
CSO Transform - Modify Order Transform - ADO Task/Design
Overview
To be able to create Modify Order Types from AOM which contain child line product updates to a subscriptions root service product
Solution
Modify Order Execution
Modify Order Request
Create Activity with the below Parameters and validate against relevant LOV
ServiceNumber  String Yes
LineItems  JSON Object Array Yes
 ActionCode String Yes New
Deleted
Modified
Suspended
Resume
 ProductId String Yes
 UpfrontPriceIncludin
gVATDecimal No If Monthly Cost
Provided This must
not be providedShould only be
provided if it is a one
off charge and price
is overridden from
product catalogue
 UpfrontPriceExcludin
gVATDecimal No If Monthly Cost
Provided This must
not be providedShould only be
provided if it is a one
off charge and price
is overridden from
product catalogue
 MonthlyPriceIncludin
gVATDecimal No If Upfront Cost
Provided This must
not be providedShould only be
provided if it is a
monthly charge and
price is overridden
from product
catalogue
 MonthlyPriceExcludi
ngVATDecimal No If Upfront Cost
Provided This must
not be providedShould only be
provided if it is a
monthly charge and Primary Field Secondary Field Type Mandatory LOV/Validation Notes


3095

Example Line Items Request Block - Simple
Example Line Items Request Block - Simple (Multi)
Example Line Items Request Block - Complex

Modify Order Transformation

Sales Order:
Generate an Order ID:
Prefix: AOM
GUID
Example: AOM-1234-1234-1234price is overridden
from product
catalogue
 ExtensibleAttribu
tesNameValue No VBCLimit This is to support
extensible attributes
in CSO Request
1
2
3
4
5
6
7[
  {
    "ActionCode": "New",
    "ProductId": "101049"
  }
]
1
2
3
4
5
6
7
8
9
10[
  {
    "ActionCode": "New",
    "ProductId": "101049"
  },
  {
    "ActionCode": "New",
    "ProductId": "105743"
  }
]
1
2
3
4
5
6
7
8
9
10
11[
  {
    "ActionCode": "New",
    "ProductId": "101049",
    "MonthlyCostIncludingVAT": 10.54,
    "MonthlyCostExcludingVAT": 10.00,
    "ExtensibleAttributes": {
      "VBCLimit": "100"
    }
  }
]


3096
CreationDate - Auto Generated Date
Classification - Hardcoded
MODIFY

Example Top Section:

Line Items
Line Item -
ID - Auto Generated Sequence ID
Action Code - Hardcoded
Modified
SerialNumber - Param.ServiceNumber

Line Items - For Each Line In Param.LineItems Attributes :
ID - Auto Generated SequenceID
ActionCode - Param.LineItes[**Index**].ActionCode
ProductId - Param.LineItes[**Index**].ProductId
Amount  - If Provided
ONE_OFF_COST (Upfront) if Provided
Prices need to be converted to Pence so its price point * 100
priceIncludingVAT- Param.LineItes[**Index**].UpfrontPriceIncludingVAT
priceExcludingVAT- Param.LineItes[**Index**].UpfrontPriceExcludingVAT
vatAmount= Calculation (Param.LineItes[**Index**].UpfrontPriceIncludingVAT-
Param.LineItes[**Index**].UpfrontPriceExcludingVAT)
type - Hardcoded
ONE_OFF_COST
RECURRING (Monthly) - If Provided
Prices need to be converted to Pence so its price point * 100
priceIncludingVAT- Param.LineItes[**Index**].MonthlyPriceIncludingVAT
priceExcludingVAT- Param.LineItes[**Index**].MonthlyPriceExcludingVAT
vatAmount= Calculation (Param.LineItes[**Index**].MonthlyPriceIncludingVAT-
Param.LineItes[**Index**].MonthlyPriceExcludingVAT)
type - Hardcoded
MONTHLY_RECURRING_COST
Specification - if ExtensibleAttributes is Provided
Name - Hardcoded
ExtensibleAttributes
Attribute - For Each "ExtensibleAttributes"
Name - Param.LineItes[**Index**].ExtensibleAttributes.Name
1
2
3


Name - Param.LineItes[**Index**].ExtensibleAttributes.Name
1
2
3
4{  "id": "AOM-0000000017090201",
   "classification": "MODIFY",
   "creationDateTime": "2021-05-25T07:23:46.572Z"
}


3097
Value - Param.LineItes[**Index**].ExtensibleAttributes.Value

Example - Line Item Block
Processing:

Retry on 500 Error (Immediate) - Single Retry
Needs to Return Order Number back to Caller (As doing activity only - Can do Show Page for MVP)
Any Validation Error must be presented back
Any Error from Calling CSO must be presented back

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38{
  "id": "1",
  "actionCode": "Modified",
  "serialNumber": "447595757004",
  "lineItem": [
    {
      "id": "2",
      "actionCode": "New",
      "productID": "101049",
      "amount": [
        {
          "price": {
            "priceIncludingVAT": 1054,
            "priceExcludingVAT": 1000,
            "vatAmount": 54
          },
          "type": "MONTHLY_RECURRING_COST"
        }
      ],
      "specification": [
        {
          "name": "ExtensibleAttributes",
          "attribute": [
            {
              "name": "VBCLimit",
              "value": "£100.00"
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "actionCode": "New",
      "productID": "10548"
    }
  ]


"productID": "10548"
    }
  ]
}


3098
Save Offers Metadata
Create a new class VFUK-FW-AOMFW-Data-OffersMetadata
Create following three properties
MetadataId (GUID)- String
SubscriptionId -String
Metadata - ValueGroup of Text type
SaveOffersMetadata function:
Create a function SaveOffersMetadata with following three parameters
subscriptionId - String
properties (comma separated SR properties)- String
page (SR page)- ClipboardPage
Create a page offersMetadata on VFUK-FW-AOMFW-Data-OffersMetadata class and get Metadata property
Get property list from properties(comma separated) parameter
Loop through property list and add name and value(using page parameter) to Metadata(TextValueGroup) property
Generate GUID from @Utilities.pxGetNewGUID() and remove hyphens and set to MetadataId property.
Set subscriptionId to SubscriptionId property
Call SaveOffersMetadata activity in function and pass offersMetadata page information
Return MetadataId from the function as String type
SaveOffersMetadata Activity:
Create this activity in VFUK-FW-AOMFW-Data-OffersMetadata class
Get the TTL(TimeToLive) value from AOMConfig datatype and set to a variable
Use Dataset-Execute method with save operation to save the data in OffersMetadata dataset and specify TTL field in seconds.
Throws exception on any error
AOMConfig Datatype record:
ConfigType - TimeToLive
ConfigName - OffersMetadata
ConfigValue - 2592000 (30 days in seconds)
OffersMetadata Dataset:
Class - VFUK-FW-AOMFW-Data-OffersMetadata
Dataset Type - DecisionDataStore
Keys: MetadataId


3099
Offers Case Management and Setup
Design
Implementation
Case Life Cycle
Setup
pyDefault Data Transform
Initialise
InitialiseOf fers Activity
GetOf fersMetadata Activity
Prepare
GetCustomerDetails Activity
Capture Response
CaptureCustomerResponse Activity
GeneratePersonalisedV ideo
GeneratePersonalizedV ideo Activity
Display
Fetch
FetchOf fers Activity
Error Scenarios
Layout
SetSubscriptionContext Data Transform
Action
Perform
CaptureOf ferResponse Activity
GetNextBestContent
Error Scenarios
End
Finalise
InitialiseOf fers Activity
Abort (Alternate Stage)
Exception
Extra Landing Page
App Artifacts
AOMConfig
Properties
Flow Actions
Sections
Design
Create a new Offers case from Pega Marketing → Content → Microsite


3100
Once Offers Case is created check the rules created and remove unneeded ones (like autogenerated flows etc)
Get id into a case level property in pyDefault data transform(The URL format will be like
https://pega.data.dev1.vodafoneaws.co.uk/MS/index.html?Site=Offers&id=c26d447567424bc7b16b6e88abd86b53)
Setup Initialise Always Set case status as “Open-New”
Set case start time
Get id parameter into case level property, if
not found call exception flow
Create OffersMetadata textvaluegroup
property in case level
Query into OffersMetadata data set with id
and set OffersMetadata,HandoverActionId
and IsSeedUser  properties from
OffersMetadata dataset into a case level
property. If no record is found populate error
message call exception flow
Prepare NotASee
dUser
(IsSeedU
ser
should be
false)Set case status as “In Build”
Populate SubscriptionId from dataset result
into a case level property
Call VFUK-FW-AOMFW-Data-
Subscription.GetSubscription activity to
populate result into a Subscription page
If no subscription is found, populate error
message and call exception flow
Call VFUK-FW-AOMFW-Int-TIL-
ServiceList.GetServiceList activity for the
OwnerAccountNumber only when
HandoverActionId is null or empty,
If the call is successful, apply below logic to
be able find services for the subscription.
Else populate error message and call
exception flow
First Match the Subscription Service
Number to the Root Product InstallID - Stage Process Conditio
n Details


3101
this will provide the relative Tariff
Promotion Product
Based on the PromotionInstanceId of
the Tariff Root Product look up for
additional Root Products and attach
them to the Subscription Page
The Original “Root Product” will also
have the Same PromotionProductId
as the Handset and Insurance it must
not re-pick up the same Root Product
More than Once:
Add Conditional Join that InstallID
is Different to That of the Service
Number or Exclude by Fulfilment
Item Code
If there is no product found for the
subscription populate error message and call
exception flow
CaptureResponse OffersMet
adata("Ch
annel") =
“SMS”
and
.IsSeedU
ser=falsePrepare Subscription page from Subscription
case property that was created in  Prepare
stage-GetCustomerDetails
Prepare Context data for Subscription page .
Call CaptureResponse dataflow
If there is any Error populate
ErrorStackTrace
GeneratePersonalisedVideo Handover
ActionId
Populated Query into OffersMetadata data set with
HandoverActionId and populate
HandoverMetadata Text ValueGroup
Property. If records doesn't exists populate
ErrorStackTrace and call common exception
flow.
Call AdoptJSONIntoProperty function to
HandoverMetadata("ActionAttributes") to
HandoverActionAttributes text ValueGroup
property.If there is errror while converting
populate ErrorStackTrace.
Apply VideoAttributesValidation
DataTransform to check validation on
ActionAttributes and TemplateAttributes
which are required in preparing Storyboard
request .
Call GenerateVideo connector activity and
get response from the service.
With the response received Prepare
RedirectURL and VideoURL and store the
data to personalised_audit_table.
Redirect to PersonalisedVideo URL and then


data to personalised_audit_table.
Redirect to PersonalisedVideo URL and then
jump to End Stage.


3102
If ErrorStackTrace populated call common
exception flow.
 Display Fetch
  Set OffersMetadata textvaluegroup property
into Subscription.Context property
Set id into the Subscription.Context
Call IdentifyBestMicrositeTreatments (It will
be created by logic team) Dataflow with
Subscription page
If there is an error, go to exception flow with
error message
Process output from the dataflow so that
offers can be presented on the landing page.
Refer SR Mappings
Layout  Call Offers section and populate the table
from Offers page list
If user clicks accept button for an offer,
populate Outcome as Accepted  and
ProductId for the selected offer in case level
property
Action Perform  Call ModifyCSOOrderRequest(save as from
ModifyOrderRequestTH and remove TH
related steps) activity for the selected
ProductId and populate action code as New
in LineItems
If there is an error, Set NextScenario as
“FailureScenario”, skip CaptureResponse DF
call and log the error into aom error table
Else set NextScenario as
“SuccessScenario”
Call CaptureResponse data flow by
populating selected offer sr properties with
orderid picked up from CSO request. Use
TaskStatus Queue for this.
Call GetNextBestContent Activity to invoke
GetNextBestContent DF on .Subscription
Process output from the dataflow so that
offers can be presented on the Show Next
page. Refer SR Mappings
On Failure of GetNextBestContent Data
Flow
On CSO Success:
Show Default Confirmation Page
On CSO Failure
Show Default Failure Page
End Finalise  Set case status as “Resolved-Completed”
Create a new FinaliseCase activity
Set case end time


3103
Implementation
Case Life Cycle
The case is initialised by the customer clicking on the URL provided by the SMS or Email message that they receive, taking them to the
Offers landing pages

Setup
Set the case status equal to “Open-New”
Run pyDefault data transformreset errormessage as ““
Abort Exception  Update case Status as Resolved-Cancelled?
Create a new Exception flow and call
Exception flow action to display error
message
Populate relative error message in aom
error table
Call Exception flow, display error message
on screen
Sets OffersId case level property to the id provided with the Microsite URL
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter idpyDefault Data Transform


3104
Initialise
Call the InitialiseOffers activity
Check whether the error stack trace is populated, moving on to the GetOffersMetadata activity if it is empty and changing to the Abort
alternate stage if it is populated
Call the GetOffersMetadata activity
Check whether the error stack trace is populated, moving on to the Prepare process if it is empty and changing to the Abort alternate
stage if it is populatedOutput
ParameterN/A
Sets StartTime and checks OffersId is populated
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Logs to Error LogInitialiseOffers Activity
Sets Subscription’s CustomerID ,OffersMetadata,HandoverActionId and IsSeedUser case level properties from OffersMetadata data set
using OffersId as the key.
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
No OffersMetadata Error Handler
Both log to Error LogGetOffersMetadata Activity


3105
Prepare


3106
Set the case status equal to “In Build”
Call the GetCustomerDetails activity
Check whether the error stack trace is populated, moving on to the Capture Response process if it is empty and changing to the Abort
alternate stage if it is populated
Capture Response
Call the CaptureCustomerResponse activityFinds the customer details and copies them into the Subscription case level property, and then finds the relative Tariff Promotion Product and
related products from GetServiceList activity  and copies each ProductRoot into the case level Subscription ProductRoot page list only when
HandoverActionId is empty.
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
No ProductRoot in ServiceList Handler
Both log to Error LogGetCustomerDetails Activity
Uses the customer’s Subscription page and the OffersMetadata text value group as context to run the CaptureResponse data flow, which
stores the fact that the user clicked on the Microsite URLCaptureCustomerResponse Activity


3107
Check whether the error stack trace is populated, moving on to the Display stage if it is empty and changing to the Abort alternate stage
if it is populated
GeneratePersonalisedVideo

Call GeneratePersonalsiedVideo Activity
Check whether the error stack trace is populated, changing to the Abort alternate stage if it is populated
If Empty call Redirect FLow Action to redirecting to generated video URL and change to End Stage.Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Logs to Error Log
This activity generates personalized video URL by calling VFUK-FW-AOMFW-Int-Generate-
StoryboardAPI.GenerateVideo(GenereateVideoFromStoryboard Service)
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
No HandOverMetadata Error Handle
Attributes Validation Error Handler
Service Error Handler
PreparePersonalisedVideo Error HandlerGeneratePersonalizedVideo Activity


3108
Display
Fetch


3109
Call the FetchOffers activity
Check whether the error stack trace is populated, moving on to the Layout process if it is empty and changing to the Abort alternate
stage if it is populated
Error Scenarios
Scenario
If SRList Contains “PARENT” and ErrorMessage is not null
If SRList Contains "PARENT" and None of Type "CHILD"
If SRList Contains "CHILD" and None of Type "PARENT"
If SRList Contains More Than one "PARENT"
If SRList Contains "INDEPENDENT" &  also Either “PARENT” / “CHILD”
If Section Rule Name is missing in Parent / Child / Independent SRPage
If Rank is missing if Type "CHILD"
Layout
Call the Offers flow action which displays a screen that shows the user all applicable offers for them
When the Accept button for an offer is clicked, run the SetSubscriptionContext data transform using the selected Offers page for the
inputs.
Uses the context populated by the CaptureCustomerResponse activity to run IdentifyBestMicrositeTreatments data flow . Processing the
output from IdentifyBestMicrositeTreatments dataflow so that offers can be presented on the landing page. Processing includes :
Validating the SRList output from IdentifyBestMicrositeTreatments . Please refer below Error Scenarios
Data Token Population
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Log to Error LogFetchOffers Activity
SetSubscriptionContext Data Transform


3110
Move on to the Action stage
Action
Perform
Call the CaptureOfferResponse activitySets the ProductCode property and Subscription’s Context property to the information stored in the selected Offers page
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW-UI
Input Parameter ProductCode
InteractionId
CustomerId
Channel
OfferName
OfferVariant
TreatmentName
TreatmentVariant
Output
ParameterN/A
Creates a “New“ LineItem with ProductId equal to the selected ProductCode, calls ModifyCSOOrderRequest and uses the response from
that activity and the details of the selected Offer to run the CaptureResponse data flow, which stores the results of the case
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
CaptureResponse Error HandlerCaptureOfferResponse Activity


3111
Error Scenarios
End
Set the case status equal to “Resolved-Completed”
Finalise
Call the FinaliseCase activityBoth log to Error Log, but CaptureResponse Error Handler does not change to Abort alternate stage
Uses the context populated by the SetSubscriptionContext DT and set Context("NextScenario") to run GetNextBestContent data flow .
Processing the output from GetNextBestContent dataflow so that offers can be presented on the landing page. Processing includes :
Validating the SRList output from GetNextBestContent . Please refer Error Scenarios
Data Token Population
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFW
Input Parameter N/A
Output Parameter N/A
Error Handling Primary Catch-all Error Handler
Log to Error LogGetNextBestContent
If SRList Contains “PARENT” and ErrorMessage is not null
If SRList Contains "PARENT" and None of Type "CHILD"
If SRList Contains "CHILD" and None of Type "PARENT"
If SRList Contains More Than one "PARENT"
If SRList Contains "INDEPENDENT" &  also Either “PARENT” / “CHILD”
If Section Rule Name is missing in Parent / Child / Independent SRPage
If Rank is missing if Type "CHILD"Scenario
Sets EndTime
Applies To PegaMKT-Work-Microsite-Offers
Ruleset AOMFWInitialiseOffers Activity


3112
Abort (Alternate Stage)
Set the case status equal to “Resolved-Cancelled”
Exception
Call the Exception flow action which displays a screen that presents the user with a user-friendly error message detailing what went
wrong in the case
Extra Landing Page
Please refer Extras Landing Page for more detials on how landing page are shown to the user.
App Artifacts
AOMConfig
PropertiesInput Parameter N/A
Output Parameter N/A
Error Handling N/A
Microsite OffersURL https://<<TARGET_ENVIRONMENT_HOST
_NAME>>/MS/index.html?Site=OffersConfigType ConfigName ConfigValue
EndTime PegaMKT-Work-Microsite-Offers Text Holds the time the FinaliseCase
activity is called
Offers PegaMKT-Work-Microsite-Offers Page List Holds the information on each
applicable offer found in the
IdentifyBestMicrositeTreatments
data flow in the FetchOffers
activity
OffersId PegaMKT-Work-Microsite-Offers Text Holds the ID provided by the
user in the Microsite URL
OffersMetadata PegaMKT-Work-Microsite-Offers Value Group (Text) Holds the metadata that is stored
about the customer from the
OffersMetadata data set Name Class Type Functionality


3113
Flow Actions
Sections

Plese refer Section details for more information.
 retrieved in the
GetOffersMetadata activity
ProductCode PegaMKT-Work-Microsite-Offers Text Holds the product code for the
offer that was selected by the
user in the Offers section
StartTime PegaMKT-Work-Microsite-Offers Text Holds the time the InitialiseOffers
activity is called
Subscription PegaMKT-Work-Microsite-Offers Single Page Holds the information on the
customer found in the
GetCustomerDetails activity
Offers PegaMKT-Work-Microsite-Offers Calls and displays the Offers section
Exception PegaMKT-Work-Microsite-Offers Calls and displays Exception section
Confirmation PegaMKT-Work-Microsite-Offers Calls and displays Confirmation sectionName Class Functionality
Offers PegaMKT-Work-Microsite-Offers Displays a list of all offers available to the
user, providing the following parameters:
OfferName
OfferVariant
TreatmentName
TreatmentVariant
ProductId
Exception PegaMKT-Work-Microsite-Offers Displays an appropriate and user friendly
error message to the user
Confirmation PegaMKT-Work-Microsite-Offers Displays a static message telling the user
that the case was successfulName Class Functionality


3114
Landing Page
Extras Landing Page Management
SR Mappings
Sample TreatmentActions
Sample Treatment Attributes
List Of V alues
SectionName
FooterSectionRule
Artifacts
Case Changes
Fetch Of fers Activity
Perform Flow
Get Next Best Content Activity
Error Scenarios
Click Tracking on URLS
TrackClickedURL  Activity
Sample Request
Extras Landing Page Management
This page describes the processing of output from Microsite Dataflow (IdentifyBestMicrositeTreatments) so that offers can be presented on
the landing page.
SR Mappings
The Following Section provides response
data for relative Actions deemed relevant to
customerResponseType=Action
AOM ResponseIdentifier used to tie back
AOM interaction recordpxInteractionID 5748770125790210000
Type of Offer :
Parent / Child / IndependentHierarchy Parent
Priority rating of relevant action in relation to
NBA ResponsepxPriority 1
Customer Propensity to Accept Offer pyPropensity 0.5
Offer Id OfferID VFO-000001
Offer Name OfferName Microsite-MontlyCredit
Offer Variant OfferVariant DefaultOfferVariant
Offer Description OfferDescription Microsite Offer - base price
Name of Channel Action is in RelationTo Channel MicrositeDescription SR Mapping Values (Example)


3115
 TreatmentId TreatmentID TR_000394
Name of Treatment TreatmentName Microsite-Retail
Name of Treatment Variant TreatmentVariant DefaultTreatmentVariant
Rank of the Treatment Rank 1
This section provides additional configurable
name value pairs to be able to provide
additional context around the relevant actionTreatmentAttributes {
  HeaderSectionRule :
  Header :
  Body :
  SectionName :
  BodyHeader :
  ExtraLargeImageURL :
  LargeImageURL :
  MediumImageURL :
  BodyHeader :
  FooterSectionRule :
}
This is the implementation detail of the given
Action - giving context of what actions the
channel should provide for a given TreatmentResponseType=TreatmentActions
Relevant Action Name ActionTemplateId AddProductWithConfirmationPage
Type of Action:
Options dependent on Channel & Sub
Channel CombinationActionTemplateType ProductAddOn
This section provides additional configurable
name value pairs to be able to provide
additional context around the relevant actionActionTemplateDetail [
{
"Name":"ButtonText",
"Value":"BuyNow"
},
{
"Name":"SuccessScenario",
"Value":"OrderSubmitted"
},
{
"Name":"FailiureScenario",
"Value":"OrderFailed"
}
]
Name of Treatment Identifier Microsite-Retail
Action Outcome when action adhered to ActionOutcome Accepted
Res
pon
seT
ypepxIn
tera
ctio
nIDHier
arc
hyOffe
rIDOffe
rNa
meOffe
rVar
iantOffe
rDe
scri
ptio
nCha
nnelTrea
tme
ntIDTrea
tme
ntN
ameTrea
tme
ntV
aria
ntIden
tifie
rDes
crip
tionPro
duc


ntV
aria
ntIden
tifie
rDes
crip
tionPro
duc
tTyp
eActi
onT
emp
lateI
dActi
onT
emp
lateActi
onT
emp
lateActi
onO
utc
omepxP
riori
typyP
rop
ensi
ty


3116
Sample TreatmentActions
Outcome : Accepted
ActionTemplateId : AddProductWithConfirmationPage
ActionTemplateType : ProductAddOn
ActionTemplateDetail :[
         {Acti
on-459
534
365
476
57Par
entVFO
001Trad
eIn
Mon
thly
Cre
ditOffe
rVari
ant
Def
aultTrad
eIn
Mon
thly
Cre
dit Micr
osit
eVFO
001-
T00
02Trad
eIn
Mon
thly
Cre
dit_
Micr
osit
eTrea
tme
ntVa
riant
Def
ault       1 0
Acti
on-459
534
365
476
57Chil
dVFO
003Trad
eInB
ACSOffe
rVari
ant
Def
aultTrad
eInB
ACSMicr
osit
eVFO
003-
T00
03Trad
eInB
ACS
_Mi
cros
iteTrea
tme
ntVa
riant
Def
ault       2 0
Trea
tme
ntAc
tion
s-459
534
365
476
57         Trad
eIn
Mon
thly
Cre
dit_
Micr
osit
eOth
erRoo
t
Pro
ductAcc
eptButt
on[{Na
me":
"Re
com
men
ded
Rou
ting"
,"Val
ue":
"we
bch
at"
}, {
"Na
me":
"Def
lecti
onT
ype"
,
"Val
ue":
"Har
d" } ]Acc


ype"
,
"Val
ue":
"Har
d" } ]Acc
ept  Typ
eDet
ail


3117
           "Name":"ButtonText",
           "Value":"BuyNow"
        },
       {
           "Name":"SuccessScenario",
           "Value":"OrderSubmitted"
      },
    {
            "Name":"FailiureScenario",
           "Value":"OrderFailed"
     }
  ]
Outcome : Clicked
ActionTemplateId : ButtonToURLSameWindow
ActionTemplateType : RedirectURL
ActionTemplateDetail: [
         {
           "Name":"ButtonText",
           "Value":"BuyNow"
        }, {
           "Name":"ButtonURL ",
           "Value":"Home "
        }
]

Sample Treatment Attributes
Parent
{
  HeaderSectionRule :
  Header :
  Body :
  SectionName :
  BodyHeader :
  ExtraLargeImageURL :
  LargeImageURL :
  MediumImageURL :
  BodyHeader :
  FooterSectionRule :
}
Child
{
   ImageSashText (Optional):
   Header :
   Body :
   LargeImageURL :
   MediumImageURL :


3118
   Footer :
}
List Of Values
SectionName
ParentWithCardChildren
SingleActionInformationPage
InformationPageNoAction
FooterSectionRule
FooterDefault
Artifacts
Case ChangesVFUK-FW-AOMFW-UI-Microsite-Offer Class VFUK-FW-AOMFW-UI-Microsite-Offer
VFUK-FW-AOMFW-UI-Microsite-Offer-
MainOfferClass VFUK-FW-AOMFW-UI-Microsite-Offer-
MainOffer
OfferSR Page(VFUK-AOMFW-SR) VFUK-FW-AOMFW-UI-Microsite-Offer
TreatmentAttributes ValueGroup VFUK-FW-AOMFW-UI-Microsite-Offer
TreatmentActions PageList(VFUK-AOMFW-SR) VFUK-FW-AOMFW-UI-Microsite-Offer
Children PageList(VFUK-FW-AOMFW-UI-Microsite-
Offer)VFUK-FW-AOMFW-UI-Microsite-Offer-
MainOfferRule Name Type Class
Display Fetch
 Set OffersMetadata textvaluegroup property into
Subscription.Context property
Set id into the Subscription.Context
Call IdentifyBestMicrositeTreatments (It will be
created by logic team) Dataflow with Subscription
page
If there is an error, go to exception flow with error
message
Process output from the dataflow so that offers
can be presented on the landing page. Refer SR
Mappings
Action Perform Call ModifyCSOOrderRequest(save as from
ModifyOrderRequestTH and remove TH related
steps) activity for the selected ProductId and
populate action code as New in LineItemsStage Process Details