2800
CheckDedupeByContactDetailForBatchNBADFStatus Activity
add the config to get the DataFlowWorkItemId
Data Type AOM Config
Config Type DataFlowWorkItemId
Config Name DedupeByContactDetailForBatchNBA
Config Value DF-320698DedupeByContactDetailForBatchNBA Config
ApplyV olumeConstraintsForBatchNBA
Call CreateTreatmentVolumeConfig (existing) activity
If SkipApplyVolumeConstraints is true, go to End. Else ApplyVolumeDistribution (existing) flow and
AugmentVolumeConstrainedDataForBatchNBA (new) flow
Applies To VFUK-FM-AOMFW-Work-Extractor
Ruleset AOMFWApplyVolumeConstraintsForBatchNBA Flow
AugmentV olumeConstrainedDataForBatchNBA
AugmentVolumeConstrainedDataForBatchNBA Flow


2801
Get progress of DedupeByContactDetailForBatchNBA DF
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogCall StartAugmentVolumeConstrainedDataForBatchNBADF activity
Applies To VFUK-FM-AOMFW-Work-Extractor
Ruleset AOMFW
Get the DataFlowWorkItemId
Execute data flow AugmentVolumeConstrainedDataForBatchNBA
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogStartAugmentVolumeConstrainedDataForBatchNBADF Activity
Get progress of AugmentVolumeConstrainedDataForBatchNBA DF
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogCheckAugmentVolumeConstrainedDataForBatchNBADFStatus Activity
add the config to get the DataFlowWorkItemId
Data Type AOM Config
Config Type DataFlowWorkItemId
Config Name AugmentVolumeConstrainedDataForBatchNBA
Config Value DF-320696AugmentVolumeConstrainedDataForBatchNBA Config


2802
WriteBatchDecisionOutputBeforeChannelDelivery
Call StartWriteBatchDecisionOutputBeforeChannelDeliveryDF activity
Applies To VFUK-FM-AOMFW-Work-Extractor
Ruleset AOMFWWriteBatchDecisionOutputBeforeChannelDelivery Flow
Truncate datasets BatchDecisionOutput
Get the DataFlowWorkItemId
Execute data flow WriteBatchDecisionOutputBeforeChannelDelivery
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogStartWriteBatchDecisionOutputBeforeChannelDeliveryDF Activity
Get progress of WriteBatchDecisionOutputBeforeChannelDelivery DF
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogCheckWriteBatchDecisionOutputBeforeChannelDeliveryDFStatus Activity


2803
add the config to get the DataFlowWorkItemId
Data Type AOM Config
Config Type DataFlowWorkItemId
Config Name WriteBatchDecisionOutputBeforeChannelDelivery
Config Value DF-320695WriteBatchDecisionOutputBeforeChannelDelivery Config
ProcessForChannelDelivery
Call StartProcessForChannelDeliveryDF activity
Applies To VFUK-FM-AOMFW-Work-Extractor
Ruleset AOMFWProcessForChannelDelivery Flow
Truncate datasets BestOBTreatmentsAsTarget, BestOBTreatmentsAsControl, ParentBestOBTreatmentsForChannelDelivery
Get the DataFlowWorkItemId
Execute data flow ProcessForChannelDelivery
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogStartProcessForChannelDeliveryDF Activity
Get progress of ProcessForChannelDelivery DF
Applies To VFUK-FW-AOMFW-Work-ExtractorCheckProcessForChannelDeliveryDFStatus Activity


2804
584395 - Prepare CCD Extract
(Neslihan) Plug in relevant dataflows in Extractor case.
Update required data flows in Prepare CCD Extract process in Extractor case. Update with new data flows from logic.
Because all data flows related with CCD will remain as they are, it looks there is no necessary update in PrepareCCDExtract flow. ADO
584395 was removed.
584397 - Clean Up Flow
Clean Selected Batch Treatments data generated at run time
Add CleanUp flow into End and Abort stagesRuleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error Log
add the config to get the DataFlowWorkItemId
Data Type AOM Config
Config Type DataFlowWorkItemId
Config Name ProcessForChannelDelivery
Config Value DF-320697ProcessForChannelDelivery Config
CleanUp
Calls CleanUp activity to clean selected batch treatments data generated at run time. If there are any errors inside the activity then the flow
invokes NotifySupport sub flow.
Applies To VFUK-FM-AOMFW-Work-Extractor
Ruleset AOMFWCleanUp Flow


2805
Cleans selected batch treatments data generated at run time
Applies To VFUK-FW-AOMFW-Work-Extractor
Ruleset AOMFW
Input
ParametersNA
Output
ParametersNA
Error
HandlingPrimary Catch-all Error Handler
Logs to Error LogCleanUp Activity
Truncates table selected_batch_nba_treatments
Applies To VFUK-FW-AOMFW-Data-SelectedBatchNBATreatments
Ruleset AOMFW-Database
SQL {SQLPage:SQLDiagnostics}
truncate table selected_batch_nba_treatmentsTruncateSelectedBatchNBATreatments Connect SQL


2806
Running the Extractor Case
CaseIgnitor
CaseSubT ype
IH
Results
IH
CaseIgnitor
An activity found in the Extractor Work class that allows a user to run a data extraction tailored to their specific requirements by adjusting
the type of extraction performed before clicking on the Run button. Details on each of these types of extractions and how they affect the
Extractor case can be found below
CaseSubType
Name the type of extraction being performed with this Extractor case run. The LOVs for this parameter are IH, CCD, BatchNBA and T2S.
The implications of each value on the Extractor case will be detailed below
I H
This extraction type checks whether toggles are enabled for the following tables:Interaction History, Recommendation Items and Interaction
History Delete, and then takes each record from the tables with enabled toggles that lie between the date of the last successful run of the
Extractor case and the current date. The case then uses these records to populate an external .dsv file that is then compressed and
encrypted, using each record as a new individual line.
Results
IH
The extracted files will be available in the destination path that is set in AOMConfig, with the format of:
aom_interaction_history_[TIMESTAMP.zip.gpg
aom_interaction_history_reporting_[TIMESTAMP].zip.gpg
aom_recommendation_items_[TIMESTAMP].zip.gpg
aom_deleted_ih_[TIMESTAMP].zip.gpg
When the files are successfully decrypted and unzipped, they will be in .dsv format and look like so:
aom_interaction_history


2807

aom_interaction_history_reporting
aom_recommendation_items
aom_deleted_ih


2808
Housekeeping Case
 Setup Initialise Housekeeping Sets the values required for the case to on the case page CaseStartTime,
CaseType, SupportEmailSubject, SupportEmail & SuccessEmailNeeded. Checks,
if the case triggered time is falling in between the current checkpoint interval, if so
then case will continue processing & case is runnable wrt to the conditions
defined in IsCaseRunnable activity, the case processing started and case status
is updated as “Running”. Else it will snooze until the current time is falling in
between the current checkpoint interval.
Cleanup Purge Historical Data Retrieves all the AOMConfig records where ConfigType (HouseKeepingSQL)
contains Classes and according to the Retention Period values under ConfigType
(HouseKeepingRetentionPeriod) this process will execute the SQL functions and
delete the required records.
Tables : AOMAudit, AOMError, AOMLog, AdminAuditLog,  BundleEvent,
EventStatus, SMSOrder, WatchDogReportData, InteractionHistory,
PushInteractionHistory, ConnectQueueStatus
Delete Old Files Retrieves all the AOMConfig records where ConfigType
HousekeepingArchiveAreas and according to the Retention Period will execute
the SQL functions and delete the required records.
Refresh Spines Refresh Spines will be invoked for all the Spines which are part of ConfigType
HousekeepingEntityList in AOMConfig, and will purge these spines using
Housekeep function with special progress for each spine in DB.
subs_invoice_charge,unica_campaign_history,model_score,unica_campaign_eve
nts,event_status,connect_queue_status
End Finalise Updates CaseStatus and CaseEndTime (FinaliseCase  Activity)
If there are any errors while executing FinaliseCase Activity then NotifySupport
SubFlow is invoked.


If there are any errors while executing FinaliseCase Activity then NotifySupport
SubFlow is invoked.
If SendCaseFinaliseEmail is set to false the only email communication will be
sent out in case of failure or completion. Checks if SupportEmail is set before
sending the email communication out.
Case  Elapsed and Successfully completed an email will be sent out from this
flow.
Abort
(Alternative Stage)Finalise Updates CaseStatus and CaseEndTime (FinaliseCase  Activity)
If there are any errors while executing FinaliseCase Activity then NotifySupport
SubFlow is invoked.
If SendCaseFinaliseEmail is set to false the only email communication will be
sent out in case of failure or completion. Checks if SupportEmail is set before
sending the email communication out.
Case Aborted email will be sent out from this flow.Case Stage Case Step Functionality


2810
Housekeeping for PurgeEOC (Purge Expired Outbound Comms)
Description
Implementation
Flow
Flow Name: Purge Historical Data
SQL Connector
Connect SQL  Name: PurgeData
AOM Config
Description
There is a new subcase type for Housekeeping cases regarding the new subcase type some changes are required
Implementation
Flow
Flow Name: Purge Historical Data
An update needs on the expression to start the process.
@String.equals(.CaseSubType, "PurgeData")
SQL Connector

AOM ConfigDelete all expired outbound comms data from sms_staging table
Applies To VFUK-FW-AOMFW-Data-SMSStaging
Ruleset AOMFW
Command select  delete_expired_outbound_comms('SMS', 'expiry_datetime');
select  delete_expired_outbound_comms('SMS', 'schedule_end_datetime');Connect SQL Name: PurgeData
CaseDependencies PurgeEOC PurgeEOC
CaseId PurgeEOC
CaseStatus PurgeEOC  Config Type Config Name Config Value


2811
 SkipCaseFinaliseEmail PurgeEOC FALSE/TRUE
HousekeepingSQL SMSStaging VFUK-FW-AOMFW-Data-SMSStaging


2812
Common Case Flows
[ Initialise ] [ NotifySupport] [ CheckpointCheck ] [ Snooze ] [ SetCaseStatus ] [ HandleAlerts ] [ Finalise ]
Initialise
Flow Parameters

Calls InitialiseCase Activity
Initialise below parameters
CaseStartTime
CaseType
SupportEmailSubject
SupportEmail
SuccessEmailNeeded
DefaultSnoozeTime
Get the CheckPoints for the specified Case and prepares CheckPoints page list property
If InitialiseCase activity fails, calls NotifySupport flow
Else, queues the case to ResumeCaseFlow agent for background processing & resumes the case
If CheckpointCheck parameter is true/yes calls CheckpointCheck flow
Else calls SpotChecks flow
If there is a dependent case already running, the case Snoozes
If the case is runnable, sets the case status as 'Running' if the case is runnable  Is Case Runnable
In case of any failure, calls NotifySupport flow SupportEmailSubject Support Email Subject String
CheckpointCheck Is checkpoint check required? String
Wait Should we wait if the case is not runnable?
Currently only applicable for spot checks.StringName Description Data Type


2813
NotifySupport
If the error email details are populated, calls HandleAlerts flow and  NotifySupportQueue flow sequentially
Else calls NotifySupportQueue flow
Routes the case into Support work queue
Displays the section: ReRunFlow by using the flow action: ReRunFlow
Support should Submit or Abort the case
If the case is submitted, it resumes with QueueAndResumeCase flow
Else, the case triggers Abort stage
CheckpointCheck
Calls CheckpointCheck activity
Set below default values
CheckpointStatus = Wait
Local.Elapsed = true
Checks all checkpoints from checkpoint list from CheckPoints page list property. You can find a sample checkpoint data populated in
Initialise flow as below.
If the CheckPoint is within the current time range, sets a flag called CheckpointStatus as Valid to indicate that the case is
runnable within the current timestamp and ends the activity


2814
If the current time is after the End Time, sets a flag called Passed  as true to indicate that the checkpoint has passed
If the current time is before the Start Time, sets a flag called Local.Elapsed as false to indicate that the checkpoints haven't
elapsed
If all the checkpoints have passed, sets a flag called CheckpointStatus as Elapsed to indicate all checkpoints has passed for the
current day
In case of any failure, calls NotifySupport flow
If CheckpointStatus = Valid
Checks the case dependencies
If there is a dependent case already running, the case Snoozes
If the case is runnable, sets the case status as 'Running' if the case is runnable  Is Case Runnable
In case of any failure, calls NotifySupport flow
If CheckpointStatus = Wait
Sends a warning email if there is a warning message available with HandleWarnings flow
Snoozes for DefaultSnoozeTime seconds
If CheckpointStatus = Elapsed
Ends the flow (Elapsed flag is used to change the case stage Elapse stage in parent flows)
Snooze
Flow Parameters
Calls CommitCaseState flow
Commits the case work item state into the db
Sends a warning email if there is a warning message available with HandleWarnings flow
Pauses the case (NotifySupport flow) if PauseCase is set as true within the AOM Config with PauseCase flow
Snoozes for the period of Time parameter (300/120/60/ <60 seconds )
If the Time period is not one of the specified values, Notifies Support with NotifySupport flowTime Time to Snooze in seconds Integer 300
120
60
<60Name Description Data Type Valid Values


2815
SetCaseStatus
Flow Parameters
Sets CaseStatus AOM Config with the Case Type & Case Status from flow input parameters
In case of any failure, calls NotifySupport flow
HandleAlerts
Flow Parameters

HandleAlerts flow is created to manage all alerts within the AOM by taking inputs for different email subjects, email templates, alert configs
etc.
Calls SetAlertEmail activity to populate the DefaultEmail parameterCaseType Time to Snooze in seconds Boolean
CaseStatus  StringName Description Data Type
Process Process of the Alert String
Alert Name of the Alert String
Severity Severity of the Alert String
EmailSubject Email subject that is passed from parent flowString
CorrespondenceTemplate Correspondence template name that is
passed from parent flowString
IncludeAsAttachment The flag that contains the attachment
availability infoStringName Description Data Type


2816
If the related Process/Alert/Severity combination is available in AlertConfig, the configured email value is used from Alert config data
Combines the related severity configuration with Severity = All combination if both configs are available in AlertConfig
If the related Process/Alert/Severity combination is not available in AlertConfig, uses Process/Alert/Severity=All combination from
AlertConfig
If the related Process/Alert/Severity=All combination is not available in AlertConfig, uses related Process/Alert/Severity combination
from AlertConfig
If both of the related Process/Alert/Severity and Process/Alert/Severity=All combination are not available in AlertConfig or they are
configured as null, the configured email value is used from AOM config - SupportEmail default value
If IncludeAsAttachment = true sends Email with attachment using input parameters & default email that is set in SetAlertEmail activity
Else, sends Email without attachment using input parameters & default email that is set in SetAlertEmail activity
Finalise
Flow Parameters
Calls FinaliseCase activity & calls NotifySupport flow if the activity fails
Update the CaseStatus as Completed in the AOM Config
Set the CaseEndTime
If SkipCaseFinaliseEmail AOM Config is false, triggers HandleAlerts  flow to send emails for related stages (Abort/Elapse/End)
Else, ends the flow directlyAbortStage Abort Stage flag Boolean
ElapseStage Elapse Stage flag BooleanName Description Data Type


2817
Checkpoint Check


2818
Generate Extract Agent Activity Updates
Activity : GenerateExtract
Updated the When Rule in Step -12 to support new Case Sub-type P I H
Activity : GeneratePIHExtract (New Activity)
GeneratePIHExtract activity will follow the same design patter as GenerateIHExtract Activity
Set Encrypt=false and Zip=true on the OutputFile Page
Obj-Browse on the new class (TBD: VFUK-FW-AOMFW-Data-ProductInteractionHistoryExtract) for a given Segment Value would
retrieve 500k records.
Records will be pushed into the outputfile which is generated at the specified location.


2819
Include recommitted in OBC purge file
Process
1. Extend Inferred Response Process for Text 2 Switch to Run Inferred Positive Responses Daily - Inferred Negatives should remain at 30
days
2. Identify from Inferred Postive OBBC Treatments which have PM Tool Configuration "Purge" Enabled only
3. Write to DataSet OffersBySubChannelForCCP with the detail: OfferId, SubChannel with configurations of whether the file needs to be
zipped and encrypted based on the relevant configuration
4. Write IH Record with full Details to Data Set Configured to be written into CCP Data Set
1. New Case Sub Type to be set up to run daily to extract from above Data Set
2. Case should Identify if any Data to Extract
3. Case should look in OffersBySubChannelForCCP to Identify Offers and Sub Channels needing purge and query second data set for
data
4. Case should produce a file per offer and sub channel with the below specifications

Updates
Prepare CCP Extract Flow CheckCCPInputData: Checks if BestOBTreatments1ForT2S/BestOBTreatments2ForT2S data set has
data, else NotifySupport flow is triggered
-> New dataset  which has only inferred positive responses?
SwitchCCPDataSets: Truncate the BestOBTreatments and switches the pointer. In case of failure,
trigger NotifySupport flow.
-> New dataset  which has only inferred positive responses?
PrepareForOBProcessForCCP: Truncates the BestOBTreatmentsBeforeDedupeForT2S. Execute
PrepareForOBProcess1ForT2S/PrepareForOBProcess2ForT2S dataflow. In case of failure, trigger
NotifySupport flow.
-> Same/New output dataset which has only inferred positive responses?


NotifySupport flow.
-> Same/New output dataset which has only inferred positive responses?
PopulateMasterDataSetsForCCP: Truncate the ContactDetailMasterForT2S and
OffersBySubChannelForOBForCCP . Execute PopulateMasterDataSetsForT2S dataflow. In case of
failure, trigger NotifySupport flow.
-> Same/New output dataset which has only inferred positive responses?
DedupeByContactDetailForCCP: Truncate the BestOBTreatmentsAfterDedupeForT2S. Execute
DedupeByContactDetailForT2S dataflow. In case of failure, trigger NotifySupport flow.
-> Same/New output dataset which has only inferred positive responses?
PopulateSubscriptonsForControlGroupsForCCP: Truncate the SubscriptionsForOBForT2S and
BestOBTreatmentsBeforeControlGroupsForT2S. Execute
PopulateSubscriptonsForControlGroupsForT2S dataflow. In case of failure, trigger NotifySupport flow.
-> Same/New output dataset which has only inferred positive responses?
ApplyControlGroupsForCCP: Truncate the BestOutboundCCTreatmentsAfterControlGroupsForT2S.
Execute ApplyControlGroupsForT2S dataflow. In case of failure, rollback IH data and trigger
NotifySupport flow.New Extractor Sub Type CCP


2820
AOMConfig
 -> Same/New output dataset which has only inferred positive responses?
Initiate CCP Extraction Flow Checks if the BestOutboundCCTreatmentsAfterControlGroupsForT2S  (TBD) dataset is not empty:
If has data: Trigger InitialiseExtractorStatus flow - Initialise Extractor status and segments/nodes
If empty: Handle warnings and end the case
If error: Trigger NotifySupport flow
GenerateExtract Activity New Case Sub Type ‘CCP’  - GenerateCCPExtract
GenerateCCPExtract Activity Create activity from scratch using OffersBySubChannelForOBForCCP
CaseDependencies CCPExtractor T2SExtractor,BatchNBA
Case ID CCPExtractor E-14431
CaseStatus CCPExtractor Running
ExtractorCheckPoints CCP 00:00-23:59
ExtractorDestinationPath CCPWebhelp /mnt/efs/aom/outbound/call_centre/webhelp2
ExtractorGPGRecipient CCPStoke aomdomain@internal.vodafone.com
ExtractorGPGRecipient CCPWebhelp AOMDomain@internal.vodafone.com
ExtractorHeaderInclusion CCPWebhelp true
ExtractorHeaderInclusion CCPStoke true
ExtractorLoopLimit CCP 10
ExtractorNodes CCP ExtractorNode
ExtractorSegments CCP 10
SkipCaseFinaliseEmail CCPExtractor trueConfigType ConfigName ConfigValue


2821
Apply Volume Constraints Redesign

As per the proposed re-design for the Volume Constraints, below are the changes required.
DedupeByContactDetail Dataflow
Dataflow needs to push data into two additional datasets as per below criteria
1. Push all the data records which don't need volume limit to be applied and no subchannel distribution into
BestOBTreatmentsBeforeControlGroups dataset.
2. Push all the data records which need volume limit to be applied and with subchannel distribution OR which needs volume limit to be
applied and with no subchannel distribution OR which don’t need volume limit to be applied and with subchannel distribution
a. Push the Full SR Page version into BestOBTreatmentsAfterDedupe dataset.
b. Push the skinny version of SR Page into TreatmentsAfterDedupe (on VFUK-FW-AOMFW-Data-TreatmentsAfterDedupe Class) to
perform the sorting and volume constraint distribution calculation.
CreateTreatmentVolumeConfig
Activity: No changes required in the activity. Activity will loop through TreatmentsForOB Dataset for each treatment and calculate the
TotalVolume and set the TargetSubChannel data along with their respective limits.
ApplyOutboundVolumeLimit Activity
For each treatment in TreatmentVolumeConfigList,
Use Obj-Browse method on the  TreatmentsAfterDedupe Table and sort on VolumeConstraintsPriority property by desc, so that
the high priority ones will be picked up by the process.
Limit the number of records to TotalVolume for a given treatment to avoid loading a high volume of data into memory.
Existing Round-Robin distribution logic is re-used and the records with TargetSubChannel set and subset of data is pushed into new
dataset named VolumeConstrainedData ( on VFUK-FW-AOMFW-Data-TreatmentsAfterDedupe Class)


AugmentVolumeConstrained Dataflow
All records VolumeConstrainedData will be merged into respective data records from BestOBTreatmentsAfterDedupe Dataset to
prepare the full SR page and data will be pushed into BestOBTreatmentsAsTarget and BestOBTreatmentsAsControl datasets


2822
TreatmentsForOB Dataset
This dataset should contain only treatments data which need volume limit to be applied and subchannel distribution.
TargetSubChannel should be populated as empty if the respective treatment channel doesn’t contain any sub-channels.
Class and Table Structure for TreatmentsAfterDedupe
TreatmentsForOB
This dataset has treatments, sub-channels and their volume limit:
Below is the TreatmentsForOB Dataset sample data view for single treatment( Source/Input data for the CreateTreatmentVolumeConfig
activity)
TreatmentVolumeConfigList
Below is the TreatmentVolumeConfigList sample data veiw for single treatment( Target/Output data of the
CreateTreatmentVolumeConfig activity)
BestOBTreatmentsAfterDedupe
This dataset contains only OutboundCC treatments or Treatments with subchannel recordsClass Name VFUK-FW-AOMFW-Data-TreatmentsAfterDedupe
Columns TreatmentName (required) - text
SubscriptionId (required) - text
OfferVariant (required) - text
TreatmentVariant (required) - text
VolumeConstraintsPriority - double
OfferName- text
Channel- text
TargetSubChannel - text
Table Name TreatmentsAfterDedupe
Dataset Name TreatmentsAfterDedupe Rule Type Name
AddMobilewithhandset_OutboundCC Concentrix 2
AddMobilewithhandset_OutboundCC Resq 3
AddMobilewithhandset_OutboundCC Webhelp 2pyName (TreamentName) TargetSubChannel VolumeLimit
AddMobilewithhandset_Outbound
CC3 7 SubChannelsVolumeList {Name: ResQ; Volume :3}
SubChannelsVolumeList {Name: Concentrix; Volume :2}
SubChannelsVolumeList {Name: Webhelp; Volume :2}TreatmentName SubChannelsCountTotalVolume SubChannelsVolumeList


2823
TreatmentsAfterDedupe
This new database table dataset is skinny version of above dataset with limited properties required to perform volume constraints.AddMobile
withhandse
t_Outbound
CC1-
HLZKOO39OfferVarian
tDefaultAdCons 86.166777
6OutboundC
CUnknown-
InLife447534547
908XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO38OfferVarian
tDefaultAdCons 49.849374
9OutboundC
CUnknown-
InLife447534547
907XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO37OfferVarian
tDefaultAdCons 76.846576
9OutboundC
CUnknown-
InLife447534547
906XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO36OfferVarian
tDefaultAdCons 93.758693
4OutboundC
CUnknown-
InLife447534547
905XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO35OfferVarian
tDefaultAdCons 67.758931
9OutboundC
CUnknown-
InLife447534547
904XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO34OfferVarian
tDefaultAdCons 21.957602
8OutboundC
CUnknown-
InLife447534547
903XSL009-
T0004
AddMobile
withhandse
t_Outbound


903XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO33OfferVarian
tDefaultAdCons 81.859483
0OutboundC
CUnknown-
InLife447534547
902XSL009-
T0004
AddMobile
withhandse
t_Outbound
CC1-
HLZKOO32OfferVarian
tDefaultAdCons 81.284950
3OutboundC
CUnknown-
InLife447534547
901XSL009-
T0004 pyName
(Treatment
Name)pySubjectI
d
(Subscript
ionId)OfferVaria
ntTreatment
VariantVolumeCo
nstraintsP
riorityChannel Intent ServiceId TreatmentI
d<<Rest of
SR
Properties
>>
AddMobilewith
handset_Outbo
undCC1-HLZKOO39 OfferVariantDe
faultAdCons 86.1667776 AddMobilew
ithhandsetOutbound
CC TreatmentNa
me SubscriptionI
dOfferVariant TreatmentVari
antVolumeConst
raintsPriorityOfferNameChannel TargetSubChannel


2824
Inside the existing activity ApplyOutboundVolumeLimit:
Pick a treatment AddMobilewithhandset_OutboundCC from TreatmentsForOB dataset and browse records in TreatmentsAfterDedupe
dataset and sort them by using VolumeConstraintsPriority value and store it in page list TreatmentsAfterDedupe.pxResults as shown
below:
TreatmentsAfterDedupe: Data Limited by VolumeLimit and Sorted by Priority for a given
treatment AddMobilewith
handset_Outbo
undCC1-HLZKOO38 OfferVariantDe
faultAdCons 49.8493749 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO37 OfferVariantDe
faultAdCons 76.8465769 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO36 OfferVariantDe
faultAdCons 93.7586934 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO35 OfferVariantDe
faultAdCons 67.7589319 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO34 OfferVariantDe
faultAdCons 21.9576028 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO33 OfferVariantDe
faultAdCons 81.8594830 AddMobilew
ithhandsetOutbound
CC
AddMobilewith
handset_Outbo
undCC1-HLZKOO32 OfferVariantDe
faultAdCons 81.2849503 AddMobilew


faultAdCons 81.2849503 AddMobilew
ithhandsetOutbound
CC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO36OfferV
ariant
Defaul
tAdCons 93.7586934 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo1-
HLZK
OO39OfferV
ariant
Defaul
tAdCons 86.1667776 AddMobilewithhands
etOutboundCC  Treat
ment
Name Subs
cripti
onIdOffer
Varia
ntTreatmentVariant VolumeConstraints
PriorityOfferName Channel TargetSubChannel


2825
Existing Round-Robin distribution logic is re-used and set TargetSubChannel to each record and subset of data is pushed into new dataset
named VolumeConstrainedData (new dataset on SR class)
VolumeConstrainedData DatasetundC
C
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO33OfferV
ariant
Defaul
tAdCons 81.8594830 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO32OfferV
ariant
Defaul
tAdCons 81.2849503 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO37OfferV
ariant
Defaul
tAdCons 76.8465769 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO35OfferV
ariant
Defaul
tAdCons 67.7589319 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO38OfferV
ariant
Defaul
tAdCons 49.8493749 AddMobilewithhands
etOutboundCC
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO34OfferV
ariant
Defaul
tAdCons 21.9576028 AddMobilewithhands
etOutboundCC


2826
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO36OfferV
ariant
Defaul
tAdCons 93.7586934 AddMobilewithhands
etOutboundCC Concentrix
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO39OfferV
ariant
Defaul
tAdCons 86.1667776 AddMobilewithhands
etOutboundCC Resq
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO33OfferV
ariant
Defaul
tAdCons 81.8594830 AddMobilewithhands
etOutboundCC Webhelp
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO32OfferV
ariant
Defaul
tAdCons 81.2849503 AddMobilewithhands
etOutboundCC Concentrix
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO37OfferV
ariant
Defaul
tAdCons 76.8465769 AddMobilewithhands
etOutboundCC Resq
AddM
obilew
ithhan
dset_
Outbo
undC
C1-
HLZK
OO35OfferV
ariant
Defaul
tAdCons 67.7589319 AddMobilewithhands
etOutboundCC Webhelp
AddM
obilew1-
HLZKOfferV
ariantAdCons 49.8493749 AddMobilewithhands
etOutboundCC ResqTreat
ment
Name Subs
cripti
onIdOffer


etOutboundCC ResqTreat
ment
Name Subs
cripti
onIdOffer
Varia
ntTreatmentVariant VolumeConstraints
PriorityOfferName Channel TargetSubChannel


2827
Then a new dataflow AugmentVolumeConstrained in the next process needs to loop through VolumeConstrainedData dataset and
which will have Keys along with TargetSubChannel property to select full SR record available in BestOBTreatmentsAfterDedupe dataset
and copy the combined SR page (which will have TargetSubChannel) to BestOBTreatmentsBeforeControlGroups dataset as shown
below:
BestOBTreatmentsBeforeControlGroups Datasetithhan
dset_
Outbo
undC
COO38Defaul
t
AddMobilewithhand
set_OutboundCC1-
HLZKOO36OfferVari
antDefa
ultAdCo
ns93.758
6934Concentrix Outbo
undC
CUnknown
-InLife44753454
7905XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO39OfferVari
antDefa
ultAdCo
ns86.166
7776Resq Outbo
undC
CUnknown
-InLife44753454
7907XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO33OfferVari
antDefa
ultAdCo
ns81.859
4830Webhelp Outbo
undC
CUnknown
-InLife44753454
7902XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO32OfferVari
antDefa
ultAdCo
ns81.284
9503Concentrix Outbo
undC
CUnknown
-InLife44753454
7901XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO37OfferVari
antDefa


AddMobilewithhand
set_OutboundCC1-
HLZKOO37OfferVari
antDefa
ultAdCo
ns76.846
5769Resq Outbo
undC
CUnknown
-InLife44753454
7906XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO35OfferVari
antDefa
ultAdCo
ns67.758
9319Webhelp Outbo
undC
CUnknown
-InLife44753454
7904XSL009-
T0004
AddMobilewithhand
set_OutboundCC1-
HLZKOO38OfferVari
antDefa
ultAdCo
ns49.849
3749Resq Outbo
undC
CUnknown
-InLife44753454
7907XSL009-
T0004 pyName
(TreatmentName )pySubjectI
d
(Subscript
ionId)OfferVa
riantTreat
ment
Varia
ntVolum
eCons
traints
Priorit
yTargetSubC
hannelChan
nelIntent ServiceIdTreatme
ntId<<Rest
of SR
Propertie
s>>


2828
Scheduler Design
AOMScheduler Job Scheduler
Scheduler Activity
InvokeActivity Function
Cron Expression Examples
Scheduler functionality makes available to schedule any activity with required parameters in the application.
Cron based scheduling design pattern is used in AOM Scheduler.
AOMScheduler Job Scheduler
The corresponding job scheduler runs for every 1min
Scheduler activity is called for the given Type parameter
Scheduler Activity
This activity picks all the enabled & current type records from Scheduler Config  data type by using D_SchedulerConfigList data
page
The activity loops through all the records retrieved from D_SchedulerConfigList data page
If the current time is satisfied with the cron expression for the current activity, the activity is run by using the InvokeActivity function
If the current time is not satisfied with the cron expression for the current activity, it continues looping
You can find some Cron Expression examples and definitions below
InvokeActivity Function
This function calls a selected activity with required parameters
ClassName → Class Name of the activity
ActivityName → Name of the activity to run
ActivityParameters in JSON format → Parameters of the activity in JSON format
Cron Expression Examples
Used this link to create cron expressions →  https://www.freeformatter.com/cron-expression-generator-quartz.html
* 0,30 0,14 ? OCT MON
*2020-
09-08
10:01:
00Mon
Oct
12
00:00:
00
UTC
2020
Mon
Oct
12 Every second, at minutes
:00 and :30, at 00am and
14pm, on every Monday, in
October* 0,30 0,14 ? OCT MON *Cron Expression Curre
nt
DateNext
Scheduli
ng DatesDefinition Seco
ndsMinut
esHour


nt
DateNext
Scheduli
ng DatesDefinition Seco
ndsMinut
esHour
sDay-
of-
mont
hMont
hDay-
of-
WeekYear


2829
00:30:
00
UTC
2020
* 0,30 0 ? OCT
MON,TUE,WED *2020-
09-08
10:01:
00Mon
Oct
12
00:00:
00
UTC
2020
Mon
Oct
12
00:30:
00
UTC
2020Every second, at minutes
:00 and :30, at 00am, on
every Monday, Tuesday
and Wednesday, in October* 0,30 0 ? OCT MON,
TUE,
WED*
* 0 0,6 ? OCT
MON,TUE,WED *2020-
09-08
10:01:
00Mon
Oct
12
00:00:
00
UTC
2020
Mon
Oct
12
06:00:
00
UTC
2020Every second, at minute
:00, at 00am and 06am, on
every Monday, Tuesday
and Wednesday, in October* 0 0,6 ? OCT MON,
TUE,
WED*
* 0 0,6 ? OCT * * 2020-
09-08
10:01:
00Fri
Oct
09
00:00:
00
UTC
2020
Fri
Oct
09
06:00:
00
UTC
2020Every second, at minute
:00, at 00am and 06am, in
October* 0 0,6 ? OCT * *
* 0 6 ? OCT * * 2020-


* 0 6 ? OCT * * 2020-
09-08 Sat
Oct
10 Every second at 06:00am,
in October* 0 6 ? OCT * *


2830

 10:01:
0006:00:
00
UTC
2020


2831
Throttling Design
This article aims to document the throttling implementation used in AOM.
Table Of Contents
We are using the following 3rd party libraries in this implementation:
Bucket4j v4.10.0 - Open-source Java rate-limiting library based on token-bucket algorithm.
Hazelcast IMDG v3.10 - Open-source distributed In-memory data grid and object store.
Links for additional details:
Token bucket wikipedia - wikipedia page describes the token-bucket algorithm in classical form.
Non-formal overview of token-bucket algorithm - the brief overview of token-bucket algorithm.
Common production checklist - Mandatory points that need to be understood before using the Bucket4j in production, independently of
local or clustered usage scenarios.
JCache production checklist - Mandatory points that need to be understood before using the Bucket4j over JCache cluster.
Bucket4j Basic usage - examples of basic usage.
Bucket4j Advanced usage - examples of advanced usage.
Bucket4j Hazelcast integration guide
Bucket4j Javadoc
Bucket4j Hazelcast Javadoc
Hazelcast IMDG Reference Manual
Hazelcast Javadoc
High Level Solution Description
Bucket4j is being used to provide tokens from a bucket at a specified rate. The bucket itself is stored in Hazelcast so its accessible
across nodes where the tokens are consumed.
App Push messages are generated by batch NBA and real-time API’s. These messages are queued to the Connect Queue Processor
(see Trigger Event Framework ) which invokes the associated ProcessQueueItem (VFUK-FW-AOMFW-Data-ConnectQueueStatus)
activity which is responsible for sending the App Push message via a RESTful API after checking throttling limits using Bucket4j.
Configuration
AOM configPlease note that this is a WIP document


Configuration
AOM configPlease note that this is a WIP document
ThrottleRateDuration InApp 5 Throttle Rate Duration in minutes - this specifies
the rolling time window for the applicability of
tokens in the bucket.ThrottleRateDuration Inbox 5
ThrottleRateDuration Push 5ConfigType ConfigName ConfigValue Notes


2832

Job Schedulers
Setup Rate Limiting Bucket
This scheduler is responsible for setting up the distributed rate limiting bucket and should be configured to be run on Startup and should be
run on all nodes that will be utilising the throttling functionality within AOM. Currently App Push is using this feature so this should include
the nodes that the ConnectQueueProcessor runs on.

Probe RLB
This scheduler is to be used for probing the distributed rate limiting buckets for analysis and troubleshooting. It is disabled by default and
enabled only when required. As with the above scheduler, this can be run on all nodes that will be utilising the throttling functionality within
AOM. ThrottleRateLimit InApp 6000 Throttle Rate Limit - this specifies the maximum
number of tokens allowed to be distributed within
the (above) Throttle Rate Duration rolling time
window.ThrottleRateLimit Inbox 8000
ThrottleRateLimit Push 4000
Hazelcast InstanceName AOM_HZ Hazelcast Instance Name - The AOM App will
utilise this instance across the participating
Hazelcast nodes
Deleted this configuration in R2.6 as it is picked
up from AOMUtilities Library as static variable
Hazelcast BucketMapNam
eAOM_RLBM Hazelcast Bucket Map Name
Hazelcast GroupName TeamAOM Hazelcast Group Name
Hazelcast GroupPassword<GROUP_PASSWORD> Hazelcast Group Password
Hazelcast Members 172.29.65.13,172.29.65.25 Comma separated list of participating
Hazelcast node members IP addresses
Deleted this configuration in R2.8 as the IP
addresses are picked up dynamically from
environment stack
Hazelcast LicenseKey <LICENSE_KEY> Hazelcast License key for AOM’s hazelcast cluster


2833

Implementation
Activities
SetupRateLimitingBucket - this activity creates a Hazelcast Instance (if one doesn’t already exist in the node) and then sets up the
distributed rate limiting buckets based on the specified configuration.
ProbeRLB - this activity enables probing the distributed rate limiting buckets for analysis and troubleshooting.
AppPushThrottleCheck - this activity tries to consume a token from the applicable bucket(s). If the specified bucket has tokens (which
means the rate threshold hasn’t breached) then this activity sets the respective Available OUT parameter to true indicating that the
AppPush message can be sent. If the applicable bucket(s) is empty and a token can’t be consumed, the respective Available OUT
parameter is set to false indicating that the AppPush needs to be throttled and then message should be queued to be sent later.
AppPushReturnToRLB - this activity returns a token back the applicable bucket. This is typically is used when a token was consumed
but the AppPush message wasn’t sent.
TryConsumeAsMuchAsPossibleFromRLB - this activity consumes all available tokens for the specified buckets at that point in time. This
activity is typically used for testing.
RLBScratchPad - this activity has come testing and diagnosis functionality to be used during testing
GetHazelcastMembers - this activity returns comma seperated list of IP addresses in the environment stack for the associated node
types of SetupRateLimitingBucket job scheduler
Functions
CreateHazelcastInstance
SetupRLB
ProbeRLB
TryConsumeFromRLB
TryConsumeAsMuchAsPossibleFromRLB
ReturnToRLB


2834
Hazelcast Bucket4j
This document describes the different refill methods used for Hazelcast and Bucket4j. These findings come from the implementation of
Treatment Buckets used in BatchNBA.
Simple Bandwidth method - greedy
This method adds tokens to the bucket over the specified period of time.
Bandwidth bandwidth = Bandwidth.simple(capacity, Duration.ofMinutes(minutes));
where capacity is the maximum capacity of this bucket, and minutes is the time for the bucket to fill up.
When the bucket is first created, it will fill to capacity immediately. If tokens are removed (consumed) from the bucket, it will then start to
refill after the time period specified.
For example,
Bandwidth.simple(1000, Duration.OfMinutes(1))
will add 1000 tokens over a 1 minute period.
If this method is used to attempt to update the configuration of an existing bucket, then the bucket will not fill to the new capacity
immediately. The bucket will retain its tokens and then the tokens will be added over the period of time until the bucket is full to its new
capacity.
Simple Bandwidth method - greedy - using withInitialTokens()
The Bandwidth method withInitialTokens() is used to set the number tokens in a bucket when it is created to be less than the bucket
capacity. For example
Bandwidth limit = Bandwidth.simple(1000, Duration.ofHours(1)).withInitialTokens(42);
If this method is used to update the configuration of an existing bucket, then the bucket will not fill to the new capacity immediately and does
not ill with the amount of initial tokens. withInitialTokens() is only effective when the new bucket is created.
Classic (Intervally) Bandwidth method - non-greedy
This method adds tokens to the bucket after the specified period of time.


This method adds tokens to the bucket after the specified period of time.
Refill refill = Refill.intervally(capacity, Duration.ofMinutes(minutes));
Bandwidth bandwidth = Bandwidth.classic(capacity, refill);
where capacity is the maximum capacity of this bucket, and minutes is the time after which the bucket will fill up. When the bucket is first
created, it will fill to capacity immediately. If tokens are removed (consumed) from the bucket, it will then start to refill at the end of the
specified time period.
In the example below, 10 tokens will be added to the bucket every minute:
Refill refill = Refill.intervally(10, Duration.ofMinutes(1));
If this method is used to attempt to update the configuration of an existing bucket, then the bucket will not fill to the new capacity
immediately. The bucket will retain its tokens and then the tokens will be added at the end of the period of time specified.


2835
Classic (Intervally) Bandwidth method - non-greedy - using withInitialTokens()
The Bandwidth method withInitialTokens() can used to set the number tokens in a bucket when it is created to be less than the bucket
capacity.
However, as with the Simple method, withInitialTokens() will only work when a new bucket is created.


2836
Subscription Case Design
  Load Data Load Data This stage uses the LoadSupportingData Flow to load data for the referenced
customer. If a customer context cannot be established, this flow switches to
the No Identified Customer alternative stage.
Unsubscribe Unsubscribe This stage renders the primary unsubscribe screen.
Manage Preferences Load Subscription
PreferencesCustomer’s pervious subscription preferences are loaded.
Subscription Manage preferences screen is rendered.
Save Preferences Update Subscription
PreferencesThis stage utilises the UpdateSubscriptionPreferences Flow rule to save any
changes to the customer’s subscription preferences. This Flow also handles
the cancel path, when the customer decides to discard their changes.
Confirmation Confirmation This stage renders the confirmation screen.
No Identified Customer Confirmation No CustomerThis stage is an alternate stage and renders the Customer Not Found screen.Case Stage Case Step Functionality


2837
Channel Execution Approval & Switch Control Implementation
Channel Execution Approval
Switch Control Implementation
AOM Config
PreProd Config
Other Environments Config
Implementation
ProcessFlowT oggle  Flow
Get Toggle Config Activity
Handle Pause Flow
ProcessBatchNBAExtract Flow
Channel Execution Approval
AOM Extractor currently has no method of "Pausing" or Holding before executing to channel - as the extractor contains both Post
Processing and Channel Execution we need the ability to be able to selectively run or abandon a relative flow.
To be able to meet this requirement:
New config type created in AOM Config: ProcessFlowToggle
Below configuration that is handled in the case, mainly holds the related configured flow and asks for approval from business users
Config Type = ProcessFlowToggle & Config Name =  <Flow Name> & Config Value = hold as the config name is defined in the AOM
Config
For a paused case, business users can either resume the case or abort the case  by following the below steps:
See the case is paused with an audit note as “Handle Pause and Hold the case for the flow : <Flow Name>”
Click ‘Begin' to see the support screen to submit/abort the case
Click ‘Abort’ button to Abort the case - The case will be aborted & completed
Click ‘Submit’ button to resume the case - The case resumes and processes the related flow
Switch Control Implementation
In Extractor we need the ability to dictate which flows to run and which to not based on the environment and testing capability for that
relative use case.


2838
To Achieve this - Extractor should put a check at each process level to see if it is configured to run this step - on case the switch is "Off" for
that process it should skip and move to next.
This will support easier development and testing of the Extractor Case with the idea this can eventually be moved into other cases.
To be able to meet this requirement:
New config type created in AOM Config: ProcessFlowToggle
Below configuration that is handled in the case mainly skips the related configured flow
Config Type = ProcessFlowToggle & Config Name =  Flow name & Config Value = true as the config name is defined in the AOM
Config
The configuration value should be set as true if there is a need for the related flow not to process and jump to the next flow
AOM Config
Possible config values are listed as below (the values are case insensitive) :
False - Do not pause or skip the flow
Hold - Pause the until it is approved/aborted
True - Do not process the flow (skip)
PreProd Config
In PreProd environment, the configuration is as below so it will Skip all the flows starting from ProcessBatchNBAExtract, till the end of the
case to finalize the case without processing the batch nba outputs.
Applicable Environments: Only PreProd
Other Environments Config
For the environments other than the PreProd, ProcessBatchNBAExtract config value is set as ‘hold’ so it will need approval from
Business users before resuming the process of batch nba outputs.
This config can be updated as ‘false’ if no approval needed for the process to be triggered.
Applicable Environments: All Non-Pre Prod environments - Dev, QA, PAT, Production
ImplementationProcessFlowToggle ProcessBatchNBAExtract true


ImplementationProcessFlowToggle ProcessBatchNBAExtract true
ProcessFlowToggle InitiateDMExtraction true
ProcessFlowToggle InitiateCCDExtraction true
ProcessFlowToggle CheckExtractorStatus true
ProcessFlowToggle ProcessExtraction true
ProcessFlowToggle PackageFiles true
ProcessFlowToggle TransferFiles trueConfig Type Config Name Config Value
(Pre Prod)
ProcessFlowToggle ProcessBatchNBAExtract holdConfig Type Config Name Config Value


2839
ProcessFlowToggle Flow
Get the toggle configuration from AOM Config
If the config is set as ‘Hold’, call HandlePause flow
Else, jump back to the parent flow
Get Toggle Config Activity
Gets the toggle config with the input Flow Name
The config is set as False if the config is not found
If config equals to ‘Hold’, set the Case Info mail subject
Handle Pause FlowActivity GetToggleConfig Get toggle config from AOM config and set Email Subject if needed
Flow HandlePause Similar to Notify Support, pauses the case until it is approved/aborted
Flow ProcessBatchNBAExtract New flow that contains below sub flows:
ExecuteEmailCampaign
ExecuteSMSCampaign
ProcessAppPushForBatch
Flow ProcessFlowToggle If config set as true, skip the flow
Else if the config is set as hold, run the new flow to notify DL
Else, run the as is flow path
Flow PrepareBatchNBAExtract Remove below sub flows:
ExecuteEmailCampaign
ExecuteSMSCampaign
ProcessAppPushForBatch
Section ReRunFlow Abort button added with ChangeStageToAbort flow action, to be
able to change the stage to ‘Abort’stageRule Type Name Notes


2840

ProcessBatchNBAExtract Flow
Call ProcessFlowToggle flow to get the toggle config
If the config is set as true, skip all the sub-flows
Else (the config is hold/false), process all the sub flows


2841
Product & Offer Catalog Design
Loader Case Design For PC/OC
DiscountNotSellable Datatype
Product Catalogue Data Pages - OLD
User Story 336089 - Siebel Tariff to Service Compatibility
User Story 336092 - Siebel Tariff to Discount Compatibility Data
Flush Data Pages for Loader Case Sub Types
Product Catalogue Data Pages
Offer Catalogue Design - Cassandra Design
Truncate Cassandra Data Sets for Loader Case Sub Types
Modify the HBB Discount to include the VFT(Vodafone Together) discount


2842
Loader Case Design For PC/OC
Overview
Solution Architecture
Product Calatogue Integration with AOM
Generic data file load pattern for AOM
AOM Config
Error Handling
Catalogue Files for AOM
Product Catalogue Files for AOM
Offer Catalogue Files for AOM
Overview
This user story is about ensuring that the product and offer catalogue can be loaded and used in AOM
There are 17 Files (currently 18 but agreed that the marketing feed will not be required) in the product catalogues and 9 in the offer
catalogue.
The load process must be able to cope with full load and delta load
The load process must cater for Adhoc loads if required by the business
The files are pipe delimited and in .dsv
All files will be zipped and then GPG encrypted
A Checksum file will be provided for all encrypted files
One read me file will be provided for the 18 product catalogue files
One read me file will be provided for the 9 offer catalogue files
The files must be archived as per existing data loader processing following successful loads
The Product and the Offer Catalogue data is made available to the logic to consume
Solution Architecture
The existing CSV files have extra header describing the data type like symbolic, numeric. It has to be removed if the existing AOM file
processing framework has to be re-used without a change. Hence Siebel self-serve extract is expected to remove the extra headers in
the files that are being sent to AOM. The extra headers will remain the extract to Chordiant
Both Full and Delta extracts will be provided for Product and Offer Catalogue into AOM.
Product and Offer catalogue files will be loaded into individual 1-2-1 base tables in Aurora. If future functionality/capability requires


joining of the data before presentation to AOM logic this will be performed within view structures.
AOM will use product & offer catalogue data as a reference data while making product decisions.


2843
Product Calatogue Integration with AOM
Generic data file load pattern for AOM
The following sequence diagram shows the generic data file load pattern that is used within the AOM architecture. This pattern will be a re-
usable design for all source system data feeds into AOM


2844
At scheduled time intervals* (e.g. daily, weekly, monthly) the source system performs the following functions:
Extracts the data into AOM extract files. If files are greater than 2Gb they need to be split into 2Gb chucks to create multiple files due
to network / MFT limitations.
 The files are zipped and gpg encrypted prior to transfer
 A checksum is performed on all the gpg encrypted files and a chksum file created.
Finally a single or multiple readme file(s) are
 created including the file names of all the files to be transferred in this run. For the Siebel implementation 2 readme files will be
provided; 1 for product catalogue files and 1 for the offer catalogue files.
Transfers the files to MFT for onward transmission.
MFT transfers the files to the AWS Shared SFTP Endpoint.
AWS Shared SFTP Endpoint transfers the files using S3 replication to the destination AOM A3 bucket
At scheduled time intervals (e.g. daily, weekly, monthly) the AOM Data Loader process will poll the S3 bucket and transfer all files to be
processed to the AOM Application storage layer.
The AOM Data Loader process will loop through the files to process and load them into AOM Aurora (Postgres) DB. The following high
level steps will be performed:
 Data file will be loaded into staging tables using HTSL
Following staging table load the loader replaces or merges the staging data into the non live tables.
Finally the data loader process will recreate the database views to ensure that that application is pointing to the latest version of the data
NOTE: The above sequence diagram does not show error handling as part of the flow. The AOM data loader does provide error handling
through a set of common case sub flows
AOM Config


2845
SkipCaseFinaliseEmail ProductCatalogueLoader TRUE
LoaderCheckPoints ProductCatalogue 00:00-23:59
CaseStatus ProductCatalogueLoader Completed
CaseDependencies ProductCatalogueLoader ProductCatalogueLoader,OfferCatalogueLoa
der
LoaderEntityList ProductCatalogue pc_accessories,pc_acct_service,pc_acct_se
rvice_dept_elig,pc_barred_product,pc_disco
unt,pc_discount_dept_elig,pc_handset_servi
ce_comp,pc_handset_tariff_comp,pc_market
ing_service,pc_payg_handset,pc_paym_han
dset,pc_service_handset_comp,pc_service_
service_incomp,pc_service_tariff_comp,pc_t
ariff,pc_tariff_dept_elig,pc_tariff_discount_co
mp,pc_tariff_handset_comp,pc_tariff_service
_comp
LoaderIncomingPath ProductCatalogue /mnt/share/aom/inbound/pc/
LoaderLoopLimit ProductCatalogue 50
LoaderFileAttributes ProductCatalogue {"LoadType":"full", "Compressed":true,
"Encrypted":true,
"ManifestFilePattern":"product_catalogue_ _.r
eadme", "Mandatory":false,
"HasChecksum":true, "HasHeader":false,
"Delimiter":"|"}
SkipCaseFinaliseEmail OfferCatalogueLoader TRUE
LoaderCheckPoints OfferCatalogue 00:00-23:59
CaseStatus OfferCatalogueLoader Completed
CaseDependencies OfferCatalogueLoader ProductCatalogueLoader,OfferCatalogueLoa
der
LoaderEntityList OfferCatalogue oc_bundle,oc_bundle_channel_elig,oc_bund
le_dept_elig,oc_bundle_exclusion,oc_bundle
_offer_group,oc_bundle_offer_group_mem,o
c_bundle_offer_upsell,oc_bundle_qualifier,oc
_bundle_qualifier_reward


c_bundle_offer_upsell,oc_bundle_qualifier,oc
_bundle_qualifier_reward
LoaderIncomingPath OfferCatalogue /mnt/share/aom/inbound/oc/
LoaderLoopLimit OfferCatalogue 50
LoaderFileAttributes OfferCatalogue {"LoadType":"full", "Compressed":true,
"Encrypted":true,
"ManifestFilePattern":"offer_catalogue_ _.rea
dme", "Mandatory":true,
"HasChecksum":true, "HasHeader":false,
"Delimiter":"|"}Config Type Config Name Config Value


2846
Error Handling
The process must error on the following conditions:
File format error (for example a column is missing or the file is not pipe delimited)
If there is error in staging load
if there is error from staging to non live tables
all errors need to be handled by raising alerts and trigger the support processes
Catalogue Files for AOM
Product Catalogue Files for AOM
1 Handsets(PAY
M)Covers both
handset and
devices data
including the
manufacture,
device cost,
warranty
months etc for
post
paid devices.File HANDSETS_Y
YYYMMD
DHH24:MI:SS
_full_0.dsvHANDSETS_Y
YYYMMD
DHH24:MI:SS
_delta_0.
dsvPipe (|) No
2 Handsets(PAY
G)Covers both
handset and
devices data
including the
manufacture,
device cost,
etc. for prepaid
devicesFile HANDSETS_P
AYG_YY
YYMMDDHH2
4:MI:
SS_full_0.dsvHANDSETS_P
AYG_YYY
YMMDDHH24:
MI:
SS_delta_0.ds
vPipe (|) No
3 Promotions
(Tariffs,
Root Product)This covers all
the post-paid
promotion
along with root
Siebel productFile TARIFFS_YYY
YMMDD
HH24:MI:SS_f
ull_0.dsvTARIFFS_YYY
YMMDDH
H24:MI:SS_del
ta_0.dsvPipe (|) No
4 Services This file
contains add-
on products
(e.g.
insurance,


4 Services This file
contains add-
on products
(e.g.
insurance,
Vodafone Extra
100 mins)File ACC_SERVIC
ES_YYYY
MMDDHH24:M
I:
SS_full_0.dsvACC_SERVIC
ES_YYYY
MMDDHH24:M
I:
SS_delta_0.ds
vPipe (|) No
5 Accessories This covers all
the
accessoriesFile ACCESSORIE
S_YYYY
MMDDHH24:MACCESSORIE
S_YYYYM
MDDHH24:MI:Pipe (|) NoSl.
NoInterface
NameDescription Pattern File Name for
Full
ExtractFile Name for
Delta
ExtractData
Field
SeparatorColumn
Header


2847
I:
SS_full_0.dsvSS_delta_0.ds
v
6 Discounts This covers the
discount
products. The
discounts are
based on % or
£ discountsFile DISCOUNTS_
YYYYMM
DDHH24:MI:S
S_full_0.
dsvDISCOUNTS_
YYYYMM
DDHH24:MI:S
S_delta_0.
dsvPipe (|) No
7 Bar Products Covers the
barred
products for
e.g. outgoing
international,
collections
product etc.File BARS_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvBARS_YYYYM
MDDHH2
4:MI:SS_delta_
0.dsvPipe (|) No
8 Tariffs to
DepartmentsMaps the tariffs
to departmentsFile TARIFF_DEPA
RTMENT
_ELIG_YYYY
MMDDHH
24:MI:SS_full_
0.dsvTARIFF_DEPA
RTMENT
_ELIG_YYYY
MMDDHH2
4:MI:SS_delta_
0.dsvPipe (|) No
9 Discounts
available to
departmentsMapping the
discounts to
departmentsFile DISCOUNT_D
EPT_ELI
G_YYYYMMD
DHH24:
MI:SS_full_0.d
svDISCOUNT_D
EPT_ELIG
_YYYYMMDD
HH24:MI:
SS_delta_0.ds
vPipe (|) No
10 Acc services
available
to departmentsMapping of
account
services &
departmentsFile ACC_SERVIC
ES_DEPT
_ELIG_YYYY
MMDDHH
24:MI:SS_full_
0.dsvACC_SERVIC
ES_DEPT


MMDDHH
24:MI:SS_full_
0.dsvACC_SERVIC
ES_DEPT
_ELIG_YYYY
MMDDHH2
4:MI:SS_delta_
0.dsvPipe (|) No
11 Promotion(Tarif
f) to
Handset
compatibilityThe records
map the tariffs
that are
compatible
with the
handsetsFile TARIFF_HAND
SET_CO
MP_YYYYMM
DDHH24:
MI:SS_full_0.d
svTARIFF_HAND
SET_CO
MP_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No
12 Handsets to
Promotion
(Tariff)
compatibilityThe records
map the
handsets that
are compatible
with
the tariffsFile HANDSET_TA
RIFF_CO
MP_YYYYMM
DDHH24:
MI:SS_full_0.d
svHANDSET_TA
RIFF_CO
MP_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No
13 Services to
PromotionThe records
map the File SERVICE_O_
TARIFF_CSERVICE_O_
TARIFF_CPipe (|) No


2848
Offer Catalogue Files for AOM(Tariff)
compatibilityservices that
are compatible
with
the tariffsOMP_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvOMP_YYYYM
MDDHH24
:MI:SS_delta_0
.dsv
14 Promotion
(Tariff) to
Service
compatibilityThe records
map the tariffs
that are
compatible
with the
serviceFile TARIFF_SERV
ICE_O_C
OMP_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvTARIFF_SERV
ICE_O_C
OMP_YYYYM
MDDHH24
:MI:SS_delta_0
.dsvPipe (|) No
15 Service to
Handset
compatibilityThe records
map the
services that
are compatible
with
the handsetsFile SERVICE_HA
NDSET_C
OMP_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvSERVICE_HA
NDSET_C
OMP_YYYYM
MDDHH24
:MI:SS_delta_0
.dsvPipe (|) No
16 Handset to
Service
compatibilityThe records
map the
handsets that
are compatible
with
the serviceFile HANDSET_SE
RVCE_C
OMP_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvHANDSET_SE
RVCE_C
OMP_YYYYM
MDDHH24
:MI:SS_delta_0
.dsvPipe (|) No
17 Service to
Service
IcompatibilityThe services
that are
incompatible
(i.e. for a
unlimited


that are
incompatible
(i.e. for a
unlimited
data; adding
1GB add-on).It
essentially tells
the services
which can not
co existFile SERVICE_SE
RVICE_IN
C_YYYYMMD
DHH24:
MI:SS_full_0.d
svSERVICE_SE
RVICE_IN
C_YYYYMMD
DHH24:MI:
SS_delta_0.ds
vPipe (|) No
18 Promotion
(Tariff) to
Discount
compatibility (
ADDED 1.12)This file
includes the
product
compatibility
rules between
promotions
and discounts
i.e. what
discounts can
be
sold with what
promotions/
tariffs.File TARIFF_DISC
OUNT_C
OMP_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvTARIFF_DISC
OUNT_CO
MP_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No


2849
1 Bundle
EligibilityThis file
contains the
channels the
lion heart
offers can be
offered.
While ATL
offers can be
offered via any
channel, BTL
offers are
offered only via
selective
channels (e.g.
retention)File COMBI_BNDL
_CHANN
EL_ELIG_YYY
YMMDD
HH24:MI:SS_f
ull_0.dsvCOMBI_BNDL
_CHANN
EL_ELIG_YYY
YMMDDH
H24:MI:SS_del
ta_0.dsvPipe (|) No
2 Bundle
EligibilityThis file maps
the lion heart
offers to
eligible
departments
within
VodafoneFile COMBI_BNDL
_DEPT_E
LIG_YYYYMM
DDHH24:
MI:SS_full_0.d
svCOMBI_BNDL
_DEPT_E
LIG_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No
3 Exclusion This file
contains the
exclusion
criteria for the
lion heart
offersFile COMBI_BNDL
_EXCLU
SION_YYYYM
MDDHH2
4:MI:SS_full_0.
dsvCOMBI_BNDL
_EXCLUS
ION_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No
4 Offer Group This file groups
the lion-heart
offers for e.g.
household
offers
(HHQR) are
grouped
together from
the Vodafone
Together offerFile COMBI_BNDL
_OFFER


together from
the Vodafone
Together offerFile COMBI_BNDL
_OFFER
_GROUP_YYY
YMMDD
HH24:MI:SS_f
ull_0.dsvCOMBI_BNDL
_OFFER_
GROUP_YYY
YMMDDH
H24:MI:SS_del
ta_0.dsvPipe (|) No
5 Offer Group This file maps
the offer group
to promotion
(Tariff plans ID)File COMBI_BNDL
_OFFER
GRP_MEM_Y
YYYMMD
DHH24:MI:SS
_full_0.
dsvCOMBI_BNDL
_OFFERG
RP_MEM_YY
YYMMDD
HH24:MI:SS_d
elta_0.dsvPipe (|) NoSl.
NoInterface
NameDescription Pattern File Name for
Full
ExtractFile Name for
Delta
ExtractData
Field
SeparatorColumn
Header


2850
 6 Upsell This is not
currently used
- however the
capability for
offer upsell
can be
implemented
via this file
extractFile COMBI_BNDL
_OFFER
UPSELL_YYY
YMMDDH
H24:MI:SS_full
_0.dsvCOMBI_BNDL
_OFFERU
PSELL_YYYY
MMDDHH
24:MI:SS_delta
_0.dsvPipe (|) No
7 Qualification This file maps
the offers to
rewards. The
reward is a
discount
productFile COMBI_BNDL
_QUAL_
REWARD_YY
YYMMDD
HH24:MI:SS_f
ull_0.dsvCOMBI_BNDL
_QUAL_R
EWARD_YYY
YMMDDH
H24:MI:SS_del
ta_0.dsvPipe (|) No
8 Qualification This file maps
the lion heart
offers to
qualifying
promotions
(tariff
plans) and
reward lines
(tariff plans
where
discounts to be
added)File COMBI_BNDL
_QUALIFI
ER_YYYYMM
DDHH24:
MI:SS_full_0.d
svCOMBI_BNDL
_QUALIFI
ER_YYYYMM
DDHH24:
MI:SS_delta_0.
dsvPipe (|) No
9 Bundle This file
contain the
Lionheart
offers.This file
contains the
offer
records that
applies for
more than one
susbscription.File COMBI_BUND
LES_YY
YYMMDDHH2
4:MI:
SS_full_0.dsvCOMBI_BUND


YYMMDDHH2
4:MI:
SS_full_0.dsvCOMBI_BUND
LES_YYY
YMMDDHH24:
MI:
SS_delta_0.ds
vPipe (|) No


2851
DiscountNotSellable Datatype
PMTool pushes the data into this datatype when not sellable checkbox is enabled for respective DiscountIdentifier and
DepartmentsIdentifier.
Class : VFUK-FW-AOMFW-Data-DiscountNotSellable
DB Table : discount_not_sellable
035ee13f-914a-4e03-846b-84d00519e03d DP_107528
1005a300-9b2e-4189-b9b9-c9c9d5a190b7 DP_107527 Administration WIPRO
317fd521-a925-492d-9b07-01da5189cc3d DP_104904 Converged Retention
a6a2c132-74c7-46b5-83ac-31f31d020cfa DP_109538  p y G U I D D i s c o u n t I d e n t i f i e r D e p a r t m e n t s I d e n t i f i e r


2852
Product Catalogue Data Pages - OLD


2855

Data Pages Overview
All the data pages created as part of Product Catalogue design which includes source rules that has been used to populate the
corresponding data. You can find the definition in the Results column for this top-level data pages. Please check Level 1 & 2 Rules
Implementation for source level rule detailed implementation / click on the source level rules itself.
D_DiscountsForTariffVFUK-FW-
AOMFW-Data-
Discount8 Id
en
tifi
er
→
Ta
riff
Id
enGetDisc
ountsFo
rTariff Da
ta
Tra
nsf
or
mGetDi
scount
sForT
ariff Functi
onEligible &
Comp
Discounts
for a given
Dept & Tariff
Id   Data Page Name Class Refr
esh
Stra
teg
y in
Hou
rsPara
meter
(s)Source
Rule
Level 1 So
ur
ce
R
ul
e
Le
ve
l 1
Ty
peSourc
e
Rule
Level
2Sour
ce
Rule
Level
2
Type
Results


2856
tifi
er
De
pa
rt
m
en
tId
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
er
D_CompDiscountIds
ForTariffVFUK-FW-
AOMFW-Data-
TariffDiscountCom
patibility8 Id
en
tifi
er
→
Ta
riff
Id
en
tifi
erCompati
bleDisco
untIdsF
orTariff Re
por
t
De
fini
tio
nNA NA Compatible
Discount Ids
for a given
Tariff Id
D_CompDiscountsF
orTariffVFUK-FW-
AOMFW-Data-
TariffDiscountCom
patibility8 Identif
ier →
Tariff
Identif
ierCompati
bleDisco
untsFor
Tariff
 Re
por
t
De
fini
tio
nRepor
t
Definit
ionNA NA All
Discount
details
D_EligibleDiscounts
ForDeptVFUK-FW-
AOMFW-Data-
Discount8 Id
en
tifi
er
→
De
pa
rt
m
enGetEligi
bleDisco
untsFor
Departm
entDa
ta
Tra
nsf
or
mGetEli
gibleD
iscoun
tsFor
Depar
tmentFuncti
onEligible
Discounts
for a given
department


2857
t
Id
en
tifi
er
D_DiscountNotSella
bleForDeptVFUK-FW-
AOMFW-Data-
DiscountNotSella
ble8 Id
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erDiscoun
tNotSell
ableFor
Departm
entRe
por
t
De
fini
tio
nNA NA PM
Discount
Metadata
Exclusion
List
D_EligibleDiscountId
sForDeptVFUK-FW-
AOMFW-Data-
DiscountDepartm
entEligibility8 Id
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erEligible
Discoun
tIdsForD
epartme
ntRe
por
t
De
fini
tio
nNA NA Eligible
Discount
Identifiers
for a given
department
D_EligibleDiscountId
sForAllDeptVFUK-FW-
AOMFW-Data-
Discount8 NA GetEligi
bleDisco
untIdsF
orAllDep
artment
sDa
ta
Tra
nsf
or
mRDBLi
stFuncti
onEligible
Discount
Identifiers
for all
department
s
D_Discount VFUK-FW-
AOMFW-Data-
Discount8 Id
en
tifi
er
→
Di
sc
ou
nt VFUK-
FW-
AOMF
W-Data-
Discoun
tLo
ok


FW-
AOMF
W-Data-
Discoun
tLo
ok
upNA NA All
Discounts


2858
Id
en
tifi
er
D_SellableDiscountI
dsVFUK-FW-
AOMFW-Data-
Discount8 NA GetSella
bleDisco
untIds Repor
t
Definit
ionNA NA All
Sellable
Discount
Identifiers
where
current
date
between
Tariff
Start
Date and
End Date
or End
Date is
NULL
D_TariffsForService VFUK-FW-
AOMFW-Data-
Tariff8 Id
en
tifi
er
→
Se
rvi
ce
Id
en
tifi
er
De
pa
rt
m
en
tId
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erGetTariff
sForSer
viceDa
ta
Tra
nsf
or
mGetTa
riffsFo
rServi
ceFuncti
onEligible &
Comp
Tariffs for a
given
Department
& Service Id


2859
D_CompTariffIdsFor
ServiceVFUK-FW-
AOMFW-Data-
TariffServiceComp
atibility8 Id
en
tifi
er
→
Se
rvi
ce
Id
en
tifi
erCompati
bleTariffI
dsForSe
rviceRe
por
t
De
fini
tio
nNA NA Compatible
Tariff Ids for
a given
Service Id
D_CompTariffsForSe
rviceVFUK-FW-
AOMFW-Data-
TariffServiceComp
atibility8 Identif
ier →
Servic
e
Identif
ierCompati
bleTariff
sForSer
viceRe
por
t
De
fini
tio
nNA NA All Tariff
details
D_EligibleTariffsForD
eptVFUK-FW-
AOMFW-Data-
Tariff8 Id
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erGetEligi
bleTariff
sForDep
artmentDa
ta
Tra
nsf
or
mGetEli
gibleT
ariffsF
orDep
artme
ntFuncti
onEligible
Tariffs for a
given
department
D_EligibleTariffIdsFo
rDeptVFUK-FW-
AOMFW-Data-
TariffDepartmentE
ligibility8 Id
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erEligibleT


pa
rt
m
en
t
Id
en
tifi
erEligibleT
ariffIdsF
orDepar
tmentRe
por
t
De
fini
tio
nNA NA Eligible
Tariff
Identifiers
for a given
department


2860
D_EligibleTariffIdsFo
rAllDeptVFUK-FW-
AOMFW-Data-
Tariff8 NA GetEligi
bleTariffI
dsForAll
Departm
entsDa
ta
Tra
nsf
or
mRDBLi
stFuncti
onEligible
Tariff
Identifiers
for all
department
s
D_Tariff VFUK-FW-
AOMFW-Data-
Tariff8 Id
en
tifi
er
→
Id
en
tifi
erVFUK-
FW-
AOMF
W-Data-
TariffLo
ok
upNA NA All Tariffs
D_SellableTariffIds VFUK-FW-
AOMFW-Data-
Tariff8 NA GetSella
bleTariffI
dsRe
por
t
De
fini
tio
nNA NA All Sellable
Tariff
Identifiers
where
current date
between
Tariff Start
Date and
End Date or
End Date is
NULL
D_ServicesForTariffVFUK-FW-
AOMFW-Data-
AccountService8 Id
en
tifi
er
→
Ta
riff
Id
en
tifi
er
De
pa
rt
m
en
tId
en
tifi
er
→
De
pa
rtGetServ
icesFor
TariffDa
ta
Tra
nsf
or
mGetSe
rvices
ForTar
iffFuncti
onEligible &
Compatible
Services for
a given
Department


onEligible &
Compatible
Services for
a given
Department
& Tariff Id


2861
m
en
t
Id
en
tifi
er
D_CompServiceIdsF
orTariffVFUK-FW-
AOMFW-Data-
ServiceTariffComp
atibility8 Id
en
tifi
er
→
Ta
riff
Id
en
tifi
erCompati
bleServi
ceIdsFo
rTariffRe
por
t
De
fini
tio
nNA NA Compatible
Services for
a given
Tariff Id
D_CompServicesFor
TariffVFUK-FW-
AOMFW-Data-
ServiceTariffComp
atibility8 Identif
ier →
Tariff
Identif
ierCompati
bleServi
cesForT
ariffRe
por
t
De
fini
tio
nNA NA All Service
details
D_ServicesForServic
esVFUK-FW-
AOMFW-Data-
AccountService8 Id
en
tifi
er
s
→
So
ur
ce
Se
rvi
ce
Id
en
tifi
er
s
De
pa
rt
m
en
tId
en
tifiGetServ
icesFor
ServicesDa
ta
Tra
nsf
or
mGetSe
rvices
ForSe
rvicesFuncti
onEligible &
Comp atible
Services for
a given
Dept & Tariff
Id


2862
er
→
De
pa
rt
m
en
t
Id
en
tifi
er
D_InCompServiceId
sForServiceVFUK-FW-
AOMFW-Data-
ServiceServiceInc
ompatibility8 Id
en
tifi
er
→
Se
rvi
ce
Id
en
tifi
erInComp
atibleSe
rviceIds
ForServi
ceRe
por
t
De
fini
tio
nNA NA Compatible
Service Ids
for a given
Tariff Id
D_EligibleServicesF
orDeptVFUK-FW-
AOMFW-Data-
AccountService8 Id
en
tifi
er
→
De
pa
rt
m
en
t
Id
en
tifi
erGetEligi
bleServi
cesForD
epartme
ntDa
ta
Tra
nsf
or
mGetEli
gibleS
ervice
sForD
epart
mentFuncti
onEligible
Services for
a given
department
D_EligibleServiceIds
ForDeptVFUK-FW-
AOMFW-Data-
ServiceDepartme
ntEligibility8 Id
en
tifi
er
→
De
pa
rt
m
en
t Eligible
ServiceI
dsForDe
partmen
tRe
por
t
De
fini
tio
nNA NA Eligible
Service
Identifiers
for a given
department


2863
Id
en
tifi
er
D_EligibleServiceIds
ForAllDeptVFUK-FW-
AOMFW-Data-
AccountService8 NA GetEligi
bleServi
ceIdsFo
rAllDepa
rtmentsDa
ta
Tra
nsf
or
mRDBLi
stFuncti
onEligible
Service
Identifiers
for all
department
s
D_AccountService VFUK-FW-
AOMFW-Data-
AccountService8 Id
en
tifi
er
→
Se
rvi
ce
Id
en
tifi
erVFUK-
FW-
AOMF
W-Data-
Account
ServiceLo
ok
upNA NA All Services
D_SellableServiceId
sVFUK-FW-
AOMFW-Data-
AccountService8 NA GetSella
bleServi
ceIdsRe
por
t
De
fini
tio
nNA NA All Sellable
Service
Identifiers
where
current date
between
Tariff Start
Date and
End Date or
End Date is
NULL
D_EligibleHandsetId
sForTariffVFUK-FW-
AOMFW-Data-
TariffHandsetCom
patibility8 Id
en
tifi
er
→
Ta
riff
Id
en
tifi
erEligible
Handset
IdsForT
ariffRe
por
t
De
fini
tio
nNA NA Eligible
Handset
Identifiers
for a given
Tariff
Identifier
D_SellablePayMHan


Identifiers
for a given
Tariff
Identifier
D_SellablePayMHan
dsetIdsVFUK-FW-
AOMFW-Data-
PaymHandset8 NA GetSella
blePay
MHands
etIdsRe
por
t
De
finiNA NA Sellable
Handset
Identifiers
where
current date


2864

Class Definitions
Data Pages To Flush columns has the data pages to be flushed if the ProcuductCatalogue casesubtype data loaded into the
application for the corresponding entity. Data page flushing removes all the cached instances from all nodes. Once the each data page
is called, new instances are cached for the datapages for the node that data page is called.tio
nbetween
Start Date
and End
Date or End
Date is
NULL
D_PayMHandsets VFUK-FW-
AOMFW-Data-
PaymHandset1 Id
en
tifi
er
→
Id
en
tifi
erVFUK-
FW-
AOMF
W-Data-
PaymH
andsetLo
ok
upNA NA Handset for
given
Identifier
D_EligibleHandsetsF
orTariffVFUK-FW-
AOMFW-Data-
PaymHandset8 Id
en
tifi
er
→
Ta
riff
Id
en
tifi
erGetEligi
bleHand
setsFor
TariffDa
ta
Tra
nsf
or
mGetEli
gibleH
andse
tsForT
ariffFuncti
onEligible
Handsets
for a given
Tariff
Identifier
D_EligibleTariffsForH
andsetVFUK-FW-
AOMFW-Data-
Tariff8 Id
en
tifi
er
→
Ha
nd
set
Id
en
tifi
erGetEligi
bleTariff
sForHan
dsetDa
ta
Tra
nsf
or
mGetEli


sForHan
dsetDa
ta
Tra
nsf
or
mGetEli
gibleT
ariffsF
orHan
dsetFuncti
onEligible
Tariffs for a
given
Handset
Identifier
D_SellablePayMHan
dsetsVFUK-FW-
AOMFW-Data-
PaymHandset8 NA
 GetSella
blePay
MHands
etsAct
ivit
ySellab
lePay
MHan
dsetsDataS
etReturns all
sellable
PaymHands
ets
Name DB Table New
for
Prod
uct
Catal
ogue DB
KeyKey Data Pages To Flush


2865
Level 1 & 2 Rules ImplementationVFUK-FW-AOMFW-Data-
DiscountNotSellablediscount_not_se
llableY id pyGU
IDNA
VFUK-FW-AOMFW-Data-
DiscountDepartmentEligibilitypc_discount_de
pt_elig_vY identifi
erIdenti
fierD_EligibleDiscountIdsForDept,D_EligibleDiscountIdsForAl
lDept,D_EligibleDiscountsForDept,D_DiscountsForTariff
VFUK-FW-AOMFW-Data-
Discountpc_discount_v N identifi
erIdenti
fierD_EligibleDiscountIdsForAllDept,D_Discount,D_EligibleDi
scountsForDept,D_DiscountsForTariff
VFUK-FW-AOMFW-Data-
TariffDiscountCompatibilitypc_tariff_discou
nt_comp_vY identifi
erIdenti
fierD_CompDiscountsForTariff,D_DiscountsForTariff
VFUK-FW-AOMFW-Data-
TariffDepartmentEligibilitypc_tariff_dept_e
lig_vY identifi
erIdenti
fierD_EligibleTariffIdsForDept,D_EligibleTariffIdsForAllDept,D
_EligibleTariffsForDept,D_TariffsForService
VFUK-FW-AOMFW-Data-Tariff pc_tariff_v N identifi
erIdenti
fierD_EligibleTariffIdsForAllDept,D_Tariff,D_EligibleTariffsFor
Dept,D_TariffsForService
VFUK-FW-AOMFW-Data-
TariffServiceCompatibilitypc_tariff_service
_comp_vY identifi
erIdenti
fierD_CompTariffsForService,D_TariffsForService
VFUK-FW-AOMFW-Data-


VFUK-FW-AOMFW-Data-
ServiceTariffCompatibilitypc_service_tariff
_comp_vY identifi
erIdenti
fierD_CompServicesForTariff,D_ServicesForTariff
VFUK-FW-AOMFW-Data-
ServiceDepartmentEligibilitypc_acct_service
_dept_elig_vY identifi
erIdenti
fierD_EligibleServiceIdsForAllDept,D_EligibleServiceIdsForD
ept,D_EligibleServicesForDept,D_ServicesForServices,D_
ServicesForTariff
VFUK-FW-AOMFW-Data-
AccountServicepc_acct_service
_vN identifi
erIdenti
fierD_EligibleServiceIdsForAllDept,D_AccountService,D_Eligi
bleServicesForDept,D_ServicesForTariff,D_ServicesForSe
rvices
VFUK-FW-AOMFW-Data-
ServiceServiceIncompatibilitypc_service_serv
ice_incomp_vY identifi
erIdenti
fierD_InCompServiceIdsForService,D_ServicesForServices
VFUK-FW-AOMFW-Data-
PaymHandsetpc_paym_hands
et_vN identifi
erIdenti
ferD_SellablePayMHandsetIds,D_PayMHandsets,D_Eligible
HandsetsForTariff
VFUK-FW-AOMFW-Data-
TariffHandsetCompatibilitypc_tariff_hands
et_comp_vN identifi
erIdenti
fierD_EligibleHandsetIdsForTariffDesi
gn
Rule
Class/LibraryRule Name Rule TypeParameter(s) Implementation


2866
Code-Pega-
ListGetDiscountsForTa
riff Data
TransformIdentifier → Tariff
Identifier
DepartmentIdentifie
r → Department
IdentifierIt calls GetDiscountsForTariff function and populates
results in Primary page
AOMUtilities GetDiscountsForTa
riff Function tariffIdentifier →
Tariff Identifier
departmentIdentifier
→ Department
Identifier
discountsForTariffP
age → Return page
for pxResultsInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
D_EligibleDiscountsForDept data page is called with
departmentIdentifier parameter and results stored in
eligibleDiscountsForDept ClipboardPage
D_CompDiscountsForTariff data page is called with
identifier parameter and compatible results stored in
compDiscountsForTariff ClipboardPage
If eligibleDiscountsForDept ClipboardPage has any
error, the D_EligibleDiscountsForDept is removed.
Else if, compDiscountsForTariff has any error
D_CompDiscountsForTariff is removed
The results from compDiscountsForTariff
ClipboardPage will be stored in a HashMap
compDiscountsForTariffMap with the
DiscountIdentifier as the key. This is so that that the
matching eligibleDiscountId can be found.
All the results from eligibleDiscountsForDept
ClipboardPage is stored in
eligibleDiscountsForDeptResults ClipboardProperty
ClipboardPage resultPage will be used to append all
the required properties. resultPage will be returned
from the function.
Looped through the each element of
eligibleDiscountsForDeptResults . For each identifer,
we need to find the matching compDiscountId in the


we need to find the matching compDiscountId in the
HashMap compDiscountsForTariffMap . For each
match, we will append the new properties to
resultPage.
The resultPage is added to pxResults to return.
VFUK-FW-
AOMFW-
Data-
TariffDiscount
CompatibilityCompatibleDiscou
ntIdsForTariff Report
DefinitionIdentifier → Tariff
IdentifierQueries to the aom.pc_tariff_discount_comp_v with a
given Tariff Identifier
Only DiscountIdentifiers returned as a list
VFUK-FW-
AOMFW-
Data-
TariffDiscount
CompatibilityCompatibleDiscou
ntsForTariff Report
DefinitionIdentifier → Tariff
IdentifierQueries to the aom.pc_tariff_discount_comp_v with a
given Tariff Identifier
DiscountIdentifier, RelationshipType, DefaultInd,
RexAutoAddInd are returned as a list
Code-Pega-
ListGetEligibleDiscoun
tsForDepartmentData
TransformIdentifier →
Department
IdentifierIt calls GetEligibleDiscountsForDepartment function and
populates results in Primary page


2867
Only the properties defined in
PropertyNames!D_EligibleDiscountsForDept in
AOMConfig are populated on Primary page
If there is no record for
PropertyNames!D_EligibleDiscountsForDept, only
Identifier column is returned


2868
AOMUtilities GetEligibleDiscoun
tsForDepartmentFunction Identifier →
Department
Identifier
page → Return
page for pxResults
propertyNames →
Properties to be
returned in a
comma seperated
listInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
New uniqueDiscountIds HashSet is initialized to store
only ids for a better performance
D_EligibleDiscountIdsForAllDept data page is called and
results stored in eligibleIdsForAllDept ClipboardPage
If eligibleIdsForAllDept ClipboardPage has any error, the
D_EligibleDiscountIdsForAllDept is removed. Else,
DiscountIds are stored in uniqueDiscountIds HashSet.
D_EligibleDiscountIdsForDept data page is called with
identifier parameter and results stored in
eligibleIdsForDept ClipboardPage
If eligibleIdsForDept ClipboardPage has any error, the
D_EligibleDiscountIdsForDept is removed. Else,
DiscountIds are stored in uniqueDiscountIds HashSet
discountResultPage ClipboardPage is initialized from
VFUK-FW-AOMFW-Data-Discount class to store all the
results
D_DiscountNotSellableForDept data page is called with
identifier parameter and results stored in
exclusionIdsForDept ClipboardPage
If exclusionIdsForDept ClipboardPage has any error, the
D_DiscountNotSellableForDept is removed. Else,
looped thorough the exclusionIdsForDept and exclusion
ids are removed from uniqueDiscountIds HashSet
D_Discount data page is called with  for each Identifier
parameter stored in uniqueDiscountIds and result
page is stored in discountPage ClipboardPage
If discountPage ClipboardPage has any error, the


page is stored in discountPage ClipboardPage
If discountPage ClipboardPage has any error, the
D_Discount is removed. Else, appended only the
properties defined in propertyNames parameter
All the results pages are appended into page.pxResults
VFUK-FW-
AOMFW-
Data-
DiscountNotS
ellableDiscountNotSellabl
eForDepartmentReport
DefinitionIdentifier →
Department
IdentifierQueries to the aom.discount_not_sellable with a given
Department Identifier & null values which means not
sellable for all departments
Only Not Sellable DiscountIdentifiers are returned as a
list
VFUK-FW-
AOMFW-
Data-
DiscountDepa
rtmentEligibilit
yEligibleDiscountIds
ForDepartmentReport
DefinitionIdentifier →
Department
IdentifierQueries to the aom.pc_discount_department_elig_v with
a given Department Identifier
Only DiscountIdentifiers returned as a list
Code-Pega-
ListGetEligibleDiscoun
tIdsForAllDepartme
ntsData
TransformNA Call RDBList function which makes call to the database
and runs below query
select identifier from pc_discount_v where identifier
not in (select distinct discount_identifier from
pc_discount_dept_elig_v)


2869
The above query is configured as part of a Connect SQL
rule as VFUK-FW-AOMFW-Data-
Discount.EligibleIdsForAllDept.
Maximum value configuration for the query is configured
in AOM config as
MaxSourceRecords!D_EligibleDiscountIdsForAllDept
All the results are populated into Primary(Code-Pega-
List) page


2870
VFUK-FW-
AOMFW-
Data-DiscountGetSellableDiscou
ntIdsReport
DefinitionNA Queries to the  aom.pc_discount_v where current date
between  Start Date and End Date or End Date is NULL
Only Discount Identifiers returned as a list
AOMUtilities RDBList Function className →
Class name of the
RDB rule
requestType →
Request type of the
RDB rule
access → Access
method of the RDB
rule
browsePage → The
page in which to
place the results
maxRecords →
Maximum number
of rows to returnThis function runs a connect sql rule for given inputs and
populates results in browsePage
NA VFUK-FW-AOMFW-
Data-DiscountLookup Identifier →
Discount IdentifierQueries to the aom.pc_discount_v with a given Discount
Identifier
A single record is returned which has all the fields in
pc_discount table
Code-Pega-
ListGetTariffsForServic
eData
TransformIdentifier → Service
Identifier
DepartmentIdentifie
r → Department
IdentifierCall GetTariffsForService function and populate returned
results in Primary page
AOMUtilities GetTariffsForServic
eFunction serviceIdentifier →
Service Identifier
deparmentIdentifier
→ Department
Identifier
tariffsForServicePa
ge → Return page
for pxResultsInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
D_EligibleTariffsForDept data page is called with
departmentIdentifier parameter and results stored in
eligibleTariffsForDept ClipboardPage
D_CompTariffIdsForService data page is called with
identifier parameter and compatible results stored in


D_CompTariffIdsForService data page is called with
identifier parameter and compatible results stored in
compTariffForService ClipboardPage
If eligibleTariffsForDept ClipboardPage has any error,
the D_EligibleTariffsForDept is removed. Else if,
compTariffForService has any error
D_CompTariffIdsForService is removed
The results from compTariffForService ClipboardPage
will be stored in a HashMap
compTariffsForServiceMap with the TariffId as the key.
This is so that that the matching eligibleTariffId can be
found.
All the results from eligibleTariffsForDept
ClipboardPage is stored in
eligibleTariffsForDeptResults ClipboardProperty


2871
ClipboardPage resultPage will be used to append all
the required properties. resultPage will be returned
from the function.
Looped through the each element of
eligibleTariffsForDeptResults. For each identifer, we
need to find the matching compTariffId in the HashMap
compTariffsForServiceMap. For each match, we will
append the new properties to resultPage.
The resultPage is added to pxResults to return.


2872
VFUK-FW-
AOMFW-
Data-
TariffServiceC
ompatibilityCompatibleTariffIds
ForServiceReport
DefinitionIdentifier → Service
IdentifierQueries to the aom.pc_tariff_discount_comp_v with a
given Service Identifier
Only TariffIdentifiers are returned as a list
VFUK-FW-
AOMFW-
Data-
TariffServiceC
ompatibilityCompatibleTariffsF
orServiceReport
DefinitionIdentifier → Service
IdentifierQueries to the aom.pc_tariff_service_comp_v with a
given Service Identifier
TariffIdentifier, RelationshipType, DefaultInd,
RexAutoAddInd are returned as a list
Code-Pega-
ListGetEligibleTariffsF
orDepartmentData
TransformIdentifier →
Department
IdentifierIt calls GetEligibleTariffsForDepartment function and
populates results in Primary page
Only the properties defined in
PropertyNames!D_EligibleTariffsForDept in AOMConfig
are populated on Primary page
If there is no record for
PropertyNames!D_EligibleTariffsForDept, only Identifier
column is returned
AOMUtilities GetEligibleTariffsF
orDepartmentFunction identifier →
Deparment
Identifier
page → Return
page for pxResults
propertyNames →
Properties to be
returned which will
be splitInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
New uniqueTariffIds HashSet is initialized to store only
ids for a better performance
D_EligibleTariffIdsForAllDept data page is called and
results stored in eligibleIdsForAllDept ClipboardPage
If eligibleIdsForAllDept ClipboardPage has any error, the


If eligibleIdsForAllDept ClipboardPage has any error, the
D_EligibleTariffIdsForAllDept is removed. Else, TariffIds
are stored in uniqueTariffIds HashSet.
D_EligibleTariffIdsForDept data page is called with
identifier parameter and results stored in
eligibleIdsForDept ClipboardPage
If eligibleIdsForDept ClipboardPage has any error, the
D_EligibleTariffIdsForDept is removed. Else, TariffIds are
stored in uniqueTariffIds HashSet
TariffResultPage ClipboardPage is initialized from
VFUK-FW-AOMFW-Data-Tariff class to store all the
results
D_Tariff data page is called with for each Identifier
parameter stored in uniqueDiscountIds and result
page is stored in TariffPage ClipboardPage
If discountPage ClipboardPage has any error, the
D_Tariff is removed. Else, appended only the properties
defined in propertyNames parameter
All the results pages are appended into page.pxResults
VFUK-FW-
AOMFW-
Data-
TariffDepartm
entEligibilityEligibleTariffIdsFor
DepartmentReport
DefinitionIdentifier →
Department
IdentifierQueries to the aom.pc_tariff_department_elig_v with a
given Department Identifier
Only TariffIdentifiers returned as a list


2873
Code-
Pega_listGetEligibleTariffIds
ForAllDepartmentsData
Transform Call RDBList function which makes call to the database
and runs below query
select identifier from pc_tariff_v where identifier not
in (select
distinct (tariff_identifier) from pc_tariff_dept_elig_v)
The above query is configured as part of a Connect SQL
rule as VFUK-FW-AOMFW-Data-
Tariff.EligibleIdsForAllDept.
Maximum value configuration for the query is configured
in AOM config as
MaxSourceRecords!D_EligibleTariffIdsForAllDept
All the results are populated into Primary(Code-Pega-
List) page
NA VFUK-FW-AOMFW-
Data-TariffVFUK-
FW-AOMFW-Data-
TariffLookup Identifier → Tariff
IdentifierQueries to the aom.pc_tariff_v with a given Tariff
Identifier
A single record is returned which has all the fields in
pc_tariff table
Code-
Pega_listGetServicesForTari
ffData
TransformIdentifier → Tariff
Identifier
DepartmentIdentifie
r → Department
IdentifierIt calls GetServicesForTariff function and populates
results in Primary page
AOMUtilities GetServicesForTari
ffFunction tariffIdentifier →
Service Identifier
deparmentIdentifier
→ Department
Identifier
servicesForTariffPa
ge→ Return page
for pxResultsInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
D_EligibleServicesForDept data page is called with
departmentIdentifier parameter and results stored in
eligibleServicesForDept ClipboardPage
D_CompServicesForTariff data page is called with


eligibleServicesForDept ClipboardPage
D_CompServicesForTariff data page is called with
tariffIdentifier parameter and compatible results stored
in compServicesForTariff ClipboardPage
If eligibleServicesForDept ClipboardPage has any
error, the D_EligibleServicesForDept is removed. Else
if, compServicesForTariff has any error
D_CompServicesForTariff is removed
The results from compServicesForTariff
ClipboardPage will be stored in a HashMap
compServicesForTariffMap with the ServiceIdentifier
as the key. This is so that that the matching
eligibleServiceId can be found.
All the results from eligibleServicesForDept
ClipboardPage is stored in
eligibleServicesForDeptResults ClipboardProperty
ClipboardPage resultPage will be used to append all
the required properties. resultPage will be returned
from the function.
Looped through the each element of
eligibleServicesForDeptResults. For each identifer,
we need to find the matching compServiceId in the


2874
HashMap compServicesForTariffMap. For each
match, we will append the new properties to
resultPage.
The resultPage is added to pxResults to return.


2875
  VFUK-FW-
AOMFW-
Data-
ServiceTariffC
ompatibilityCompatibleServiceI
dsForTariffReport
DefinitionIdentifier → Tariff
IdentifierQueries to the aom.pc_service_tariff_comp_v with a
given Tariff Identifier
Only Service Identifiers are returned as a list
VFUK-FW-
AOMFW-
Data-
ServiceTariffC
ompatibilityCompatibleService
sForTariffReport
DefinitionIdentifier → Tariff
IdentifierQueries to the aom.pc_service_tariff_comp_v with a
given Tariff Identifier
AccServicesIdentifier, RelationshipType, DefaultInd,
RexAutoAddInd are returned as a list
VFUK-FW-
AOMFW-
Data-TariffGetSellableTariffIdsReport
DefinitionNA Queries to the  aom.pc_acct_tariff_v where current date
between  Start Date and End Date or End Date is NULL
Only Tariff Identifiers returned as a list
Code-
Pega_listGetServicesForSer
vicesData
TransformIdentifiers →
Service Identifiers
DepartmentIdentifie
r → Department
IdentifierCall GetServicesForServices function and populate
returned results in Primary page
AOMUtilities GetServicesForSer
vicesFunction Identifiers →
Service Identifiers
in a comma
seperated list
departmentIdentifier
→ Department
Identifier
page → Return
page for pxResultsInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
D_EligibleServicesForDept data page is called and
results stored in eligibleIdsForAllDept ClipboardPage
If eligibleIdsForAllDept ClipboardPage has any error, the


If eligibleIdsForAllDept ClipboardPage has any error, the
D_EligibleServiceIdsForAllDept is removed.
Else,
New inCompServiceIdsHashSet HashSet is
initialized to store only ids for a better performance
serviceIdentifiers which is in a comma seperated list
is split and looped thorugh the each serviceid
D_InCompServiceIdsForService data page is
called and results stored in inCompServiceIds
ClipboardPage.
If inCompServiceIds ClipboardPage has any
error, the D_InCompServiceIdsForService is
removed.
Else, populated inCompServiceIdsHashSet for
each ServiceIdentifierDest from
inCompServiceIdsResults
Looped through the each results in
eligibleServicesForDeptResults and page.pxResults is
populated if the current ServiceIdentifier does not exists
in inCompServiceIdsHashSet hashset which stores
incompatible service identifiers
VFUK-FW-
AOMFW-
Data-
ServiceServicInCompatibleServic
eIdsForServiceReport
DefinitionIdentifier → Service
IdentifierQueries to the aom.pc_service_service_incomp_v with
a given Service Identifier
Only Service Identifier Dest which are the list of service
ids to be exlcuded are returned as a list


2876
 eIncompatibilit
y


2877
Code-
Pega_listGetEligibleServices
ForDepartmentData
TransformIdentifier →
Department
IdentifierIt calls GetEligibleServicesForDepartment function and
populates results in Primary page
Only the properties defined in
PropertyNames!D_EligibleTariffsForDept in AOMConfig
are populated on Primary page
If there is no record for
PropertyNames!D_EligibleServicesForDept, only
Identifier column is returned
AOMUtilities GetEligibleServices
ForDepartmentFunction identifier →
Deparment
Identifier
page → Return
page for pxResults
propertyNames →
Properties to be
returned which will
be split
 Input validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
New uniqueServiceIds HashSet is initialized to store
only ids for a better performance
D_EligibleServiceIdsForAllDept data page is called and
results stored in eligibleIdsForAllDept ClipboardPage
If eligibleIdsForAllDept ClipboardPage has any error, the
D_EligibleServiceIdsForAllDept is removed. Else,
ServiceIds are stored in uniqueServiceIds HashSet.
D_EligibleServiceIdsForDept data page is called with
identifier parameter and results stored in
eligibleIdsForDept ClipboardPage
If eligibleIdsForDept ClipboardPage has any error, the
D_EligibleServiceIdsForDept is removed. Else,
ServiceIds are stored in uniqueServiceIds HashSet
ServiceResultPage ClipboardPage is initialized from
VFUK-FW-AOMFW-Data-AccountService class to store
all the results
D_AccountService data page is called with for each
Identifier parameter stored in uniqueServiceIds and
result page is stored in servicePage ClipboardPage


Identifier parameter stored in uniqueServiceIds and
result page is stored in servicePage ClipboardPage
If servicePage ClipboardPage has any error, the
D_AccountService is removed. Else, appended only the
properties defined in propertyNames parameter
All the results pages are appended into page.pxResults
VFUK-FW-
AOMFW-
Data-
ServiceDepart
mentEligibilityEligibleServiceIdsF
orDepartmentReport
DefinitionIdentifier →
Department
IdentifierQueries to the aom.pc_acct_service_dept_elig_v with a
given Department Identifier
Only Service Identifiers are returned as a list
Code-
Pega_listGetEligibleServiceI
dsForAllDepartmen
tsData
TransformNA Call RDBList function which makes call to the database
and runs below query
sselect identifier  "Identifier" from pc_acct_service_v
where identifier not in (select distinct
(acc_services_identifier) from
pc_acct_service_dept_elig_v)
The above query is configured as part of a Connect SQL
rule as VFUK-FW-AOMFW-Data-
AccountService.EligibleIdsForAllDept.


2878
Maximum value configuration for the query is configured
in AOM config as
MaxSourceRecords!D_EligibleServiceIdsForAllDept
All the results are populated into Primary(Code-
Pega-List) page


2879
NA VFUK-FW-AOMFW-
Data-
AccountServiceLookup Identifier → Service
IdentifierQueries to the aom.pc_acct_service_v with a given
ServiceIdentifier
A single record is returned which has all the fields in
pc_acct_service table
VFUK-FW-
AOMFW-
Data-
AccountServic
eGetSellableServiceI
dsReport
DefinitionNA Queries to the  aom.pc_acct_service_v where current
date between  Start Date and End Date or End Date is
NULL
Only Service Identifiers returned as a list
VFUK-FW-
AOMFW-
Data-
TariffHandset
CompatibilityEligibleHandsetIds
ForTariffReport
DefinitionIdentifier → Tariff
IdentifierQueries the aom.pc_tariff_handset_comp_v with a given
Tariff Identifier.
Handset Identifiers are returned as a list
VFUK-FW-
AOMFW-
Data-
PaymHandsetGetSellablePayMHa
ndsetIdsReport
DefinitionNA Queries the aom.pc_paym_handset_v with Start Date
and End Date or End Date is NULL
 Identifiers are returned as a list
NA VFUK-FW-AOMFW-
Data-PaymHandsetLookup Identifier →
IdentifierQueries the aom.pc_paym_handset_v with a given
Identifier.
A single Handset record is returned which has all the
fields in pc_paym_handset_v
VFUK-FW-
AOMFW-
Data-
PaymHandsetGetEligibleHandset
sForTariffData
TransformIdentifier → Tariff
IdentifierIt calls GetEligibleHandsetsForTariff function and
populates results in Primary page


IdentifierIt calls GetEligibleHandsetsForTariff function and
populates results in Primary page
Only the properties defined in
PropertyNames!D_EligibleHandsetsForTariff in
AOMConfig are populated on Primary page
If there is no record for
PropertyNames!D_EligibleHandsetsForTariff, only
Identifier column is returned
AOMUtilities GetEligibleHandset
sForTariffFunction identifier → Tariff
Identifier
page → Return
page for pxResults
propertyNames →
Properties to be
returned which will
be splitInput validation is applied for each input parameter. If
the input is null or empty, a runtimeexception is thrown
New uniqueHandsetIds HashSet is initialized to store
only ids
D_EligibleHandsetIdsForTariff data page is called and
results stored in eligibleHandsetIdsForTariff
ClipboardPage
If eligibleHandsetIdsForTariff ClipboardPage has any
error, the D_EligibleHandsetIdsForTariff is removed.
Else, HandsetIdentifiers are stored in
uniqueHandsetIds HashSet.
D_SellablePayMHandsetIds data page is called and
results stored in sellablePayMHandsetIds
ClipboardPage.
If sellablePayMHandsetIds ClipboardPage has any
error, the D_SellablePayMHandsetIds is removed. Else,
Identifiers are stored in sellableHandsetIdSet HashSet.


2880
handsetResultPage ClipboardPage is initialized from
VFUK-FW-AOMFW-Data-PaymHandset class to store
all the results
D_PayMHandsets data page is called for each
Identifier parameter stored in uniqueHandsetIds and
result page is stored in handsetPage ClipboardPage
If handsetPage has any error, the D_PayMHandsets is
removed. Else, appended only the properties defined in
propertyNames parameter.
All the results pages are appended into page.pxResults


2881
VFUK-FW-
AOMFW-
Data-
PaymHandsetGetEligibleTariffsF
orHandsetData
TransformIdentifier →
Handset IdentifierIt calls GetEligibleTariffsForHandset function and
populates results in Primary page
Only the properties defined in
PropertyNames!D_EligibleTariffsForHandset in
AOMConfig are populated on Primary page
If there is no record for
PropertyNames!D_EligibleTariffsForHandset , only
Identifier column is returned
AOMUtilities GetEligibleTariffsF
orHandsetFunction identifier →
Handset Identifier
page → Return
page for pxResults
propertyNames →
Properties to be
returned which will
be splitInput validation is applied for each input parameter. If
the input is null or empty, a RunTimeException is thrown
New sellableTariffs HashSet is initialized to store only
sellable tariffIds
D_EligibleTariffIdsForHandset data page is called and
results stored in eligibleTariffIdsForHandset
ClipboardPage
If eligibleTariffIdsForHandset ClipboardPage has any
error, the D_EligibleTariffIdsForHandset is removed.
Else, store the results in
eligibletariffIdsForHandsetResults and size of the list in
eligibleTariffIdsSize
D_SellableTariffIds data page is called and results
stored in sellabletariffIds ClipboardPage.
If sellabletariffIds ClipboardPage has any error, the
D_SellableTariffIds is removed. Else,store the results in
sellableTariffIdsResults and size of the list in
sellableTariffIdsSize


sellableTariffIdsResults and size of the list in
sellableTariffIdsSize
tariffResultPage ClipboardPage is initialized from
VFUK-FW-AOMFW-Data-Tariff class to store all the
results
D_Tariff data page is called for each Identifier
parameter stored in sellableTariffs matches with
TariffIdentifier in eligibletariffIdsForHandsetResults and
result page is stored in tariffPage ClipboardPage
If tariffPage has any error, the D_Tariff is removed.
Else, appended only the properties defined in
propertyNames parameter.
All the results pages are appended into
page.pxResults
Code-Pega-
ListGetSellablePayMHa
ndsetsActivity NA Execute DataSet SellablePayMHandsets
DataSetName: SellablePayMHandets
Operation: Browse
Store Results In: SellablePayMHandsets
If DataSet returns the records then jump to Final
Reads the PropertyNames configured for
D_SellablePaymHandsets
Invoke Connect SQL -  SellablePaymHandsets
Store the Results in Primary Page


2882
Save returned records from Primary to DataSet -
SellablePaymHandsets
Add Primary Error Handling When invoking DataSet &
Connect SQL
VFUK-FW-
AOMFW-
Data-
PaymHandsetSellablePaymHands
etsConnect
SQLNA Create a Connect SQL to Get All Sellable
PaymHandsets and Properties configured in AOMConfig
D_SellablePaymHandsets - PropertyNames -
Identifier
Select {ASIS:PropertyNames} from {Class:VFUK-
FW-AOMFW-Data-PaymHandset} where
start_date <= CURRENT_DATE and end_date
>= CURRENT_DATE
VFUK-FW-
AOMFW-
Data-
PaymHandsetSellablePaymHands
etsDataSet NA Create DataSet - SellablePaymHandsets
Define Key Field - .Identifier


2883
User Story 336089 - Siebel Tariff to Service Compatibility
Story
Ensure that the new Siebel Tariff to Service Compatibility Data  (including product Cardinality) is available for use by the decisioning logic.
The Tariff to Service Data tables includes the following additional fields:
RELATIONSHIP_TYPE
DEFAULT_IND
REX_AUTOADD_IND
The feeds need to cover both data feeds:
SERVICE_O_TARIFF_COMP feed
TARIFF_SERVICE_O_COMP feed
Design
Data page D_CompTariffIdsForService - currently takes parameter service ID and returns a list of matching Tariff IDs from
pc_tariff_service_comp_v.
Replace D_CompTariffIdsForService with new data page D_CompTariffsForService which will return matching Tariff IDs as well as
new fields: RelationshipType, DefaultIND, RexAutoAddInd.
Create new Report Definition CompatibleTariffsForService to return all required fields.
New fields need to be mapped to D_TariffsForService data page.
AOMUtilities.GetTariffsForService(String,String,ClipboardPage) should be updated.
Need to make similar changes as above for Service to Tariff compatibility.

D_CompTarif
fsForService VFUK-FW-
AOMFW-
Data-
TariffService
Compatibility8 Identifier →
Service
IdentifierCompatibleT
ariffsForServi
ceReport
DefinitionNA NA All Tariff
details
D_CompSer
vicesForTariffVFUK-FW-
AOMFW-
Data-
ServiceTariff
Compatibility8 Identifier →
Tariff
IdentifierCompatibleS
ervicesForTa
riffReport
DefinitionNA NA All Service
detailsData Page
NameClass Refresh
strategy in
hoursParameter(s
)Source


detailsData Page
NameClass Refresh
strategy in
hoursParameter(s
)Source
Rule Level
1Source
Rule Level
1 TypeSource
Rule Level
2Source
Rule Level
2 TypeResults
VFUK-FW-AOMFW-Data-
TariffServiceCompatibilityCompatibleTariffsForServi
ceReport Definition Identifier → Service
IdentifierQueries to the
aom.pc_tariff_service_comp_Rule/Class Library Rule Name Rule Type Parameter(s) Implementation