1528
DiscountForTariffTierMedium24M
DiscountForTariffTierLow24M
Above properties of type Text are created as part of NBA FW - Add 12/24 month dimension to discount matrix
Remove the connection between the data join "Set TariffType from Parent" to the decision data called "AdditionalLineDiscountMatrix"
Connect the data join the "Set TariffType from Parent" to the two filters . Name the first filter as "Only 12 or 24 Months Plans" and add
the condition as .duration
Import the above created Strategy GetTariffsCount as Substrategy in the IdentifyMaxDiscountForTariffType Strategy.
Update existing set property , "Combining discount product code" and set .ConcatenatedString=.DiscountForTariffTierHigh12M+ "," +
.DiscountForTariffTierMedium12M+ "," +
.DiscountForTariffTierLow12M+","+.DiscountForTariffTierHigh24M+","+.DiscountForTariffTierMedium24M+","+.DiscountForTariffTierLow2
4M
Remove the existing connection from the set property , "Each Discount Record" to the group by "identify Max Discount amount for each
tariff Type"
Join the set property , "Each Discount Record" to the data join and name the data join as "Get Tariff Type and other details" and join it
with existing set property "Combining discount product code" (choose from dropdown) and in the properties mapping tab map below
properties

Create SR properties .TariffTierHigh12M,.TariffTierMedium12M, .TariffTierLow12M, .TariffTierHigh24M,.TariffTierMedium24M and
.TariffTierLow24M of Type Text


.TariffTierLow24M of Type Text
Join the data join "Get TariffType and other details" to the set property and name it as "Get DiscountCode Tariff Tiers" and set
.TariffTierHigh12M=@if(.DiscountForTariffTierHigh12M!="","High","") , .TariffTierMedium12M=
@if(.DiscountForTariffTierMedium12M!="","Medium","") , .TariffTierLow12M=
@if(.DiscountForTariffTierLow12M!="","Low",""),.TariffTierHigh24M=@if(.DiscountForTariffTierHigh24M!="","High","") ,
.TariffTierMedium24M= @if(.DiscountForTariffTierMedium24M!="","Medium","") , .TariffTierLow24M=
@if(.DiscountForTariffTierLow24M!="","Low","").TariffType .TariffType
.DiscountForTariffTierHigh12M .DiscountForTariffTierHigh12M
.DiscountForTariffTierMedium12M .DiscountForTariffTierMedium12M
.DiscountForTariffTierLow12M .DiscountForTariffTierLow12M
.DiscountForTariffTierHigh24M .DiscountForTariffTierHigh24M
.DiscountForTariffTierMedium24M .DiscountForTariffTierMedium24M
.DiscountForTariffTierLow24M .DiscountForTariffTierLow24M
.ParentChild .ParentChild
.BundleParentTreatment .BundleParentTreatment
.pyName .pyName
.TestGroup .TestGroup
.TestGroupExpiry .TestGroupExpiry
.CellCode .CellCodeProperties Mapping Tab


1529
Import the above newly created strategy GetLegalComplianceTariffs (TBC) as Sub strategy in the IdentifyMaxDiscountForTariffType
strategy
Connect the set property "Get DiscountCode Tariff Tiers" to the data join "Only Legal Compliance Tariffs" and join with
GetLegalComplianceTariffs from the dropdown add the condition check as   .TariffType=.TariffType. Uncheck the check box: Exclude
source component results that do not match join condition. In the properties mapping, map .TariffTier=.TariffTier
Connect the above data join , "Only Legal Compliance Tariffs" to the filter component. Name the filter component as "Filter only Legal
Compliance Tariffs" and add the condition as
@contains(.TariffTier,.TariffTierHigh12M)||@contains(.TariffTier,.TariffTierMedium12M)||@contains(.TariffTier,.TariffTierLow12M)||
@contains(.TariffTier,.TariffTierHigh24M)||@contains(.TariffTier,.TariffTierMedium24M)||@contains(.TariffTier,.TariffTierLow24M)
And join the above filter  "Filter only Legal Compliance Tariffs" to the existing group by "identify Max Discount amount for each tariff
Type" and in the group by component apply group by .ConcatenatedString and set .DiscountAmount = Max of .DiscountAmount
And join this group by component to the existing set property "Set Max Discount Amount". Set .MaxDiscountAmount= .DiscountAmount
and .ProductCode = @If(.MaxDiscountAmount!=0,.Identifier,"")
Remove the data join "Data join on set Max Discount" component. Join the set property set property "Set Max Discount Amount" to the
result component.


1530
Assisted Upgrade - Write product details to IH for Web interactions (2nd line PP)
 Impact in Other areas
Dependencies
DB Changes: Create new column in IH Reporting table and also extend it to Reporting table  View
App Changes:
Logic Changes:
Create below SR property in Sr class VFUK-AOMFW-SR
Update Strategy: PopulateOutputPropertiesForAdditionalLine536461 Write offer bundle and product details to IH for Web interactions (2nd line PP)
App Yes
DB Yes
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes  E2E testing can be done once app work is completed
DB Yes  E2E testing can be done once DB changes are finished.Area Yes/No Comments
ProductDetails(TBC) varchar (Note: Maximum length should be alloted)Property Name Data Type
Data Transform Changes Map new property in the data transform
“pyInteractionHistoryConfiguration“
Create new property in VFUK-FW-AOMFW-Data-InteractionHistoryReporting
ClassProductDetailsIH Reporting Class: VFUK-FW-AOMFW-Data-InteractionHistoryReporting
changesMap ProductDetails property in the external mapping tab
ProductDetails TextProperty Name Data Type


1531
Connect the existing filter, "ChildTreatments" to the new set property. Name the set property as Set Product Details. In the set property
set .ValueText = .ParentProductId+":"+.DiscountProductCode and .ResponseType = "ProductDetailsforSecondLine"(TBC)
Join the set property to the Prioritize component named Prioritize ProductDetails. Prioritize using .RankPosition in lowest to highest.
Connect the Prioritize component to the group component and name it as All Product Details. In the group by component , set
ProductDetails using concatination of .ValueText with delimeter ";"
Join the group by to the result component.
Join the external input to the new group by component, Group by Treatment Name. In the group by , apply group by .pyName and join
the group by to set property , Set "ResponseType for Unique Treatments". In the set property set .ResponseType =
"UniqueTreatmentsList" (TBC) and join it to the result component
Update strategy: GetProductListForAdditionalLine
Connect the sub strategy PopulateOutputPropertiesForAdditionalLine to the existing sub strategy called
"SetIHPropertiesForAllChannels" and join it to the switch component .
Update the switch component , "Make Decision" to choose the strategy SetIHPropertiesForAllChannels in otherwise.
Update Data flow: GetProductListForCustomer
In the top path, add filter to check condition .ResponseType!="ProductDetailsforSecondLine" && .ResponseType =
"UniqueTreatmentsList" and connect it to the existing dataset "pxInteractionHistory"
Add secondary path to write ProductDetails in reporting table.
Add the filter with condition check .ResponseType="ProductDetailsforSecondLine" and join the filter to the convert shape.
and join the convert shape to the destination data set "InteractionHistoryReporting"


1532
Write IH for GetNBA:
Example:
IH - GetNBA - 2nd Line PP
IH - All Parent propositions with proposition level details - i.e.
Parent - AddMobileWithHandset_Web
Child - AddDiscount_Web
Parent - AddSIMO_Web
Child - AddDiscount_Web
Parent - AddTablet_Web
Child - AddDiscount_Web
(Max 6 Records per call)
IH Reporting - All Parent propositions
with reporting level details - i.e.
Parent - AddMobileWithHandset_Web
Child - AddDiscount_Web
Parent - AddSIMO_Web
Child - AddDiscount_Web
Parent - AddTablet_Web
Child - AddDiscount_Web
(Max 6 Records per call)
Update PopulateOutputPropetiesForGetNBAPrivatePricing Strategy :
Join the data join "Join Attributes Data" to the result component.
Update GetBestTreatmentsByGetNBA Data Flow:
In the primary path , in the filter called "Results" add one more condition as  true =@if(.Intent="Buy-Second-
Line",@if(equalsIgnoreCase(.ParentChild,"Child"),false,true),true)


1533
NBA FW - 2nd Line Private Pricing - Offer Catalogue R2.12
Impact in Other areas
Dependencies
Logic Changes
Offer Catalogue

Impact in Other areas
Dependencies
Logic Changes
Update the proposition data, decision data and Proposition filters as per the offer catalogue
 Offer Catalogue:
 PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments
2.12VFUK - 2nd …
02 Nov 2021, 06:44 AMst.xlsx
 2.12VFUK - 2nd …
02 Nov 2021, 06:44 AMst.xlsx
 2.12VFUK - 2nd …
27 Oct 2021, 07:35 AM.1.xlsx


1534
NBA FW - Get NBA - Return Product Group & Max Discount Per Product Group
(Options To Buy popup)

Impact in Other areas
Dependencies
Logic Changes:
Clarified Requirement: It’s simply a case of configuring the journey ID within the template (T2TV level). Journey value is provided in
Templates
Awaiting Templates from Dan
 534887 Get NBA - Return Product Group & Max Discount Per Product Group (Options To Buy popup)
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  A r e a Y e s / N o C o m m e n t s
PM Tool No
App No
DB No  A r e a Y e s / N o C o m m e n t s


1535
NBA FW - Determine Plans & Personalised Discounts

Impact in Other areas
Dependencies
App Changes:
Required Datapage(TBC) which should check discount compatibility for given plans (Tariffs)
Logic Changes:
New Strategy SecondLineDiscountCompatibility(TBC):
Enable external input
Connect the external input to set property "Set Required Parameters for Data Page" and set the required parameter properties which is
used in the data page.
Use the data import to import data page which checks tariff compatibility for discount.
Pass the Set property Tariff details as parameter to the data page and find compatibility discounts for that Tariff.
Join the set property to the data join and check the input discount is present in calculated compatible discounts and if it matches only
return the tariff otherwise drop the tariff plan.
Connect the data join to the result component.
Discounts:
Update Strategy GetDataSIMOTariffs:
In the data join "JoinEligibleTariffData" , map .Duration=.Duration in the properties mapping tab.
Update Strategy GetSIMOTariffs:484334 Determine Plans & Personalized Discounts
App Yes
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments


1536
In the data join "JoinEligibleTariffData" , map .Duration=.Duration in the properties mapping tab.
Update Strategy GetHandsetTariffs:
In the data join "JoinEligibleTariffData" , map .Duration=.Duration in the properties mapping tab.
Update Strategy GetHandsetTariffsForSKU:
In the data join "JoinEligibleTariffData" , map .Duration=.Duration in the properties mapping tab.
Update Strategy GetTabletTariffsForSKU:
In the data join "JoinEligibleTariffData" , map .Duration=.Duration in the properties mapping tab.
Update Strategy IdentifyDiscountPerTariff:
Remove the connection between external input and decision data called "AdditionalLineDiscountMatrix"
Join the external input to two new filters
Add the condition as (.Duration =12 || .Duration=24)&& (.Duration!="")  in the first filter ,"Only 12 or 24 Month Plans"
Add the condition as (.Duration!=12 &&.Duration!=24) && (.Duration!="")in the second filter ,"Other Plans Plans"
Join the first filter "Only 12 or 24 Month Plans" to the decision data "AdditionalLineDiscountMatrix"
Join the second filter to the set property "Set Discount Tier and Discount and Type"


1537
NBA FW - Mismatched Interaction ID Fix - Core Changes

Impact in Other areas
Dependencies
DB Changes
App Changes
Logic Changes
A. New SR Property - AOMInteractionId
B. Update Strategy - IdentifyT reatmentV ariations
C. Update Strategy - SetDefaultV aluesT oIHProperties
Impact in Other areas
Dependencies
DB Changes
Create new column in IH Fact table and also add this field in IH Extract523867 Mismatched Interaction id for all channels - IVR deflection SMS
App Yes  IH Extension
Changes to Event Class and Trigger PM Activity

DB Yes  IH Extension
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes  Logic changes can be done once app work is completed
DB Yes App Changes can be done once DB changes are finished.Area Yes/No Comments
AOMInteractionId (Text) varchar (255)Property Name Data Type


1538
App Changes
Logic Changes
A. New SR Property - AOMInteractionId
Create below SR property in Sr class VFUK-AOMFW-SR

B. Update Strategy - IdentifyTreatmentVariations
Create a Set property component “Generate AOMInteractionId” and set property AOMInteractionId = @AOMUtilities.GenerateUniqueId()
Create a Set property component “Get AOMInteractionId From Context” and set property AOMInteractionId =
Primary.Context(AOMInteractionId)
Create a Switch component “Check For AOMInteractionId” as follows -
Select Set property component “Get AOMInteractionId From Context” if GetAOMInteractionIdFromContext.AOMInteractionId != ““
Otherwise, select Set property component “Generate AOMInteractionId”
Update Set property component “Eligible Treatment Variants”
Set AOMInteractionId = CheckForAOMInteractionId.AOMInteractionId

C. Update Strategy - SetDefaultValuesToIHProperties
Update Set property component - “Default Values for IH”
AOMInteractionId = @AOMUtilities.GenerateUniqueId()
Update Set property component - “Set Default Values for IH If Not Populated”
AOMInteractionId = @if(.AOMInteractionId="",DefaultValuesforIH.AOMInteractionId,.AOMInteractionId)Create new property AOMInteractionId(Text) in PegaMKT-Data-Event Class
Update “Trigger PM Event” activity to add new parameter AOMInteractionId (Text) and set AOMInteractionId in Eventpayload page IH Extension of Fact - AOMInteractionId (Text)
AOMInteractionId TextProperty Name Data Type


1539
NBA FW - Mismatched Interaction ID Fix - IVR & Deflection SMS

Impact in Other areas
Dependencies
Logic Changes
A. Update Data Flow - GetBestT reatmentsByGetNBA
B. Update Strategy - ApplyEventPayloadT oTreatments
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.

Logic Changes

A. Update Data Flow - GetBestTreatmentsByGetNBA
Update secondary destination activity - TriggerPMEvent and map parameter AOMInteractionId = .AOMInteractionId523867 Mismatched Interaction id for all channels - IVR deflection SMS
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1540
B. Update Strategy - ApplyEventPayloadToTreatments
Update property mapping in data join component “Treatments With All Properties”
.AOMInteractionId = .AOMInteractionId


1541
NBA FW - Mismatched Interaction ID Fix - Landing Pages

Impact in Other areas
Dependencies
 Logic Changes
A. Update Strategy - SetLandingPageCT A
B. Update Strategy - IdentifyBestMicrositeT reatments
C. Update Strategy - Of ferExpiry
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.

 Logic Changes

A. Update Strategy - SetLandingPageCTA
Update Set property component “Set MicroSite URL”512597 Link the Interaction IDs with landing page interactions
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1542
update set operation for .Metadatacode to
@AOMUtilities.SaveOffersMetadata(Primary.CustomerID,"pxInteractionID,Channel,OfferName,OfferVariant,TreatmentName,Treatm
entVariant,AOMInteractionId",myStepPage)
B. Update Strategy - IdentifyBestMicrositeTreatments
Update Set property component “Set InActive Error Message”
set AOMInteractionId = Primary.Context(AOMInteractionId)
Update Set property component “Set ErrorMessage”
set AOMInteractionId = Primary.Context(AOMInteractionId)
C. Update Strategy - OfferExpiry
Update Set property component “Data From Request”
set AOMInteractionId = Primary.Context(AOMInteractionId)


1543
NBA FW - Mismatched Interaction ID Fix - TIL Service

The changes done as part of NBA FW - Mismatched Interaction ID Fix - Core Changes covers the change needed for TIL Service
 523867 Mismatched Interaction id for all channels - IVR deflection SMS


1544
NBA FW - Mismatched Interaction ID Fix - Process Event

Impact in Other areas
Dependencies
Logic Changes
A. Update Data Flow - ProcessSMSForT2S
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.

Logic Changes
A. Update Data Flow - ProcessSMSForT2S
Update secondary destination activity - TriggerPMEvent and map parameter AOMInteractionId = .AOMInteractionId523867 Mismatched Interaction id for all channels - IVR deflection SMS
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1545
NBA FW - Mismatched Interaction ID Fix - Batch Email/SMS

Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - ApplyT reatmentDataT oTreatments
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.

Logic Changes
A. Update Strategy - ApplyTreatmentDataToTreatments
Update property mapping in data join component “All Treatments With Properties”
.AOMInteractionId = .AOMInteractionId523867 Mismatched Interaction id for all channels - IVR deflection SMS
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1546
NBA FW - Mismatched Interaction ID Fix - Get NBA

The changes done as part of NBA FW - Mismatched Interaction ID Fix - Core Changes & NBA FW - Mismatched Interaction ID Fix - I
VR & Deflection SMS covers the change needed for GetNBA
 523867 Mismatched Interaction id for all channels - IVR deflection SMS


1547
NBA FW - Mismatched Interaction ID Fix - Capture Response

Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - CaptureResponseForOutboundCC
B. Update Strategy - CaptureResponseForEmail
C. Update Strategy - CaptureResponseForAppPush
D. Update Strategy - CaptureResponseForSetNBA
E. Update Strategy - CaptureResponseForMicrosite
F. Update Strategy - CaptureResponseForSMS
G. Update Strategy - CaptureResponseForRCS
H. Update Strategy - CaptureResponseForMMS
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.
 523867 Mismatched Interaction id for all channels - IVR deflection SMS
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1548
Logic Changes

A. Update Strategy - CaptureResponseForOutboundCC
Update property mapping in data join component “Join with Latest Interaction”
.AOMInteractionId = .AOMInteractionId
B. Update Strategy - CaptureResponseForEmail
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
C. Update Strategy - CaptureResponseForAppPush
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
D. Update Strategy - CaptureResponseForSetNBA
Update property mapping  in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
E. Update Strategy - CaptureResponseForMicrosite
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
F. Update Strategy - CaptureResponseForSMS
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
G. Update Strategy - CaptureResponseForRCS
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId
H. Update Strategy - CaptureResponseForMMS
Update property mapping in data join component “set IH properties”
.AOMInteractionId = .AOMInteractionId


1549
NBA FW - Mismatched Interaction ID Fix - Get Assisted Upgrade

The changes done as part of NBA FW - Mismatched Interaction ID Fix - Core Changes & NBA FW - Mismatched Interaction ID Fix - I
VR & Deflection SMS covers the change needed for Get Assisted Upgrade523867 Mismatched Interaction id for all channels - IVR deflection SMS


1550
NBA FW - Mismatched Interaction ID Fix - Capture Deal Response

Impact in Other areas
Dependencies
Logic Changes
Impact in Other areas
Dependencies

Please note that the changes for NBA FW - Mismatched Interaction ID Fix - Core Changes is needed to be completed before following
changes can be done.

Logic Changes
A. Update Strategy - CaptureDealResponseForAssistedUpgrade
Update property mapping in data join component “Properties From IH For Original Deal”
.AOMInteractionId = .AOMInteractionId
Update property mapping in data join component “Properties From IH For Edited Deal”
.AOMInteractionId = .AOMInteractionId
Update Set property component “IH Properties for Build Your Own Deal”
.AOMInteractionId = OriginalDealIHforBYO.AOMInteractionId523867 Mismatched Interaction id for all channels - IVR deflection SMS
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1552
Assisted Upgrade - Loan Principles rule in VDAR
HL Requirement:
Business wants to remove the Loan Principles check in VARD and in the Recommendation Logic to allow the customer to move to an
handset deal.
Impacted Areas
Logic Changes:
Current logic implementation to Filter out if loan is not eligible in CheckHandsetLoanEligibility Strategy where we are checking the
below condition
@String.equalsIgnoreCase(.LoanEligibility,"ELIGIBLE")
Update Strategy CheckHandsetLoanEligibility
In LoanEligible component, We will make default True for the condition. (so, flow will work for non-eligible products also).

 560856 Remove the Loan Principles rule in VDAR
App No
Logic Yes Update to existing logic for Loan Principles
PMTool No

UI No  Area Yes/No Area


1553
Assisted Upgrade - PreS15 Calculation for Evo customers
HL Requirement:
Business wants to calculate PreS15 for Evo Airtime and Device customer if the data is not available in Flexi or if the data is flagged as
inaccurate.
Impacted Areas
Logic Changes:
Current logic implementation to calculate PreS15 for Handset customer should be changed based on this requirement.
Update Strategy CalculateS15MafandBand
Current logic is not calculating PReS15 for PaymLoan customers extend logic to add caluclations
add a set component > PreS15Maf Loan
Same logic as “PreS15Maf SIMO”
Update switch component “Switch for PreS15Maf”
add a condition
Select “PreS15Maf Loan” if
(Primary.SubscriptionFlexAttribute.CustomStringField207!="Y"
||
(Primary.SubscriptionFlexAttribute.CustomNumberField208="0"
||
Primary.SubscriptionFlexAttribute.CustomNumberField208="")
)
&&
ExternalInput.CustomerType ="PaymLoan"

Find the Detailed formula with example below
https://vfuk-digital.visualstudio.com/AOM/_workitems/edit/560892560892 S15:  Calculate the Pre S15 for customer on Evo Airtime with Device
App No
Logic Yes Update to existing logic
PMTool No

UI No  Area Yes/No Area


1554
Simulation - Pega OOTB Simulation Update
Refer to Simulation Funnels (Batch)  for high level requirements for Pega OOTB Simulation Update
Impact in Other areas
Dependencies
Logic Changes:
Update Strategy: ApplyPotentialControlSplit
Remove the connection from three components, "Target customers For Control Group NOT Applied", "Target customers for already
ControlGroupApplied" and "Fetch Control or Target from Parent to all child Treatments" to the connected component called "All Target
Treatments"
Similarly remove the connection from the two components "Fetch Control or Target from Parent to all child Treatments", "Target and
Control Treatments" to the connected component called "All Control Treatments"
Connect the data join component "Fetch Control or Target from Parent to all child Treatments" to the new set property component. In this
set property component, "Set ChildTreatment with OfferName and OfferVariant" set .pyName=.pyName+"-"+.TreatmentVariant+"-
"+.OfferVariant
Join the above set property "Set ChildTreatment with OfferName and OfferVariant" to the filter component "All Child Target Treatments"
and add the condition as @String.equalsIgnoreCase(.PotentialControlFlag,"Target") &&
@String.equalsIgnoreCase(.ParentChild,"Child")
Join from the existing set property components, "Target customers For Control Group NOT Applied", "Target customers for already
ControlGroupApplied" to the new set property component , "Set ParentTreatment with OfferName and OfferVariant". In this set property
component set .pyName=.pyName+"-"+.TreatmentVariant+"-"+.OfferVariant.
Join the above set property, "Set ParentTreatment with OfferName and OfferVariant" to the filter component, "All Parent Target
Treatments" and add the condition in filter as @String.equalsIgnoreCase(.PotentialControlFlag,"Target") &&


Treatments" and add the condition in filter as @String.equalsIgnoreCase(.PotentialControlFlag,"Target") &&
@String.equalsIgnoreCase(.ParentChild,"Parent")
Join the existing data join component, "Fetch Control or Target from Parent to all child Treatments" to the set property "Set Control Child
Treatment with OfferName and OfferVariant" and set .pyName=.pyName+"-"+.TreatmentVariant+"-"+.OfferVariantApp No
DB Yes
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB Yes  Area Yes/No Comments


1555
Connect the set property, "Set Control Child Treatment with OfferName and OfferVariant" to the new filter component and name it is as
"All Control Child Treatments". Add the condition in the filter as
@String.equalsIgnoreCase(.PotentialControlFlag,"Control")&&@String.equalsIgnoreCase(.ParentChild,"Child")
Connect the set property, "Target and Control Treatments" to the new set property called "Set Parent Control Treatment with OfferName
and OfferVariant" and set .pyName= .pyName+"-"+.TreatmentVariant+"-"+.OfferVariant
Connect the set property called "Set Parent Control Treatment with OfferName and OfferVariant" to the new filter component "All Parent
Control Treatments". And add the condition to this filter with
@String.equalsIgnoreCase(.PotentialControlFlag,"Control")&&@String.equalsIgnoreCase(.ParentChild,"Parent")
Update Strategy: SelectBetweenOfferORTreatmentPotentialControlSplit
Connect the existing set property , "Target and Control Treatments" to the new set property, "Set Parent Control Treatment at treatment
level" and set .pyName= .pyName+"-"+.TreatmentVariant+"-"+.OfferVariant
Join the set property "Set Parent Control Treatment at treatment level" to the filter component "All Parent Control Treatments at
Treatment Level" and add the condition as
@String.equalsIgnoreCase(.PotentialControlFlag,"Control")&&@String.equalsIgnoreCase(.ParentChild,"Parent")
Join the existing data join component, "Fetch Control or Target from Parent to all child Treatments" to the new set property called "Set
Child Control Treatment at treatment level" and connect it the new filter "All Child Control Treatments at Treatment Level" and add the
condition in the filter as @String.equalsIgnoreCase(.PotentialControlFlag,"Control")&&@String.equalsIgnoreCase(.ParentChild,"Child")


Connect the two existing set property components,"Target customers for already ControlGroupApplied" , "Target and Control
Treatments" to the new set property component called "Set Parent Target Treatment at treatment level" and set .pyName = .pyName+"-
"+.TreatmentVariant+"-"+.OfferVariant in the set property.
Join the set property "Set Parent Target Treatment at treatment level" to the new filter component , "All Parent Target Treatments at
Treatment Level" and add the condition as @String.equalsIgnoreCase(.PotentialControlFlag,"Target") &&
@String.equalsIgnoreCase(.ParentChild,"Parent")
Connect the data join , "Fetch Control or Target from Parent to all child Treatments" to the new set property called "Set Child Target
Treatments at treatment level" and join it to the new filter called "All Child Target Treatments at Treatment Level" and add the condition in
the filter as and add the condition as @String.equalsIgnoreCase(.PotentialControlFlag,"Target") &&
@String.equalsIgnoreCase(.ParentChild,"Child")
Note : It requires Simulation Funnel Query changes as well.
Add New Funnel: ApplyGlobalRulesForBatchOffers
This represents the count of customers who passed Global Eligibility Rules.
Note : It requires Simulation Funnel Query changes as well.
For Strategy IdentifyTreatmentVariations:
Remove simulation check for the component "Eligible Treatment Variations For Eligible Treatments"
Make changes in the query to track the count only for "Eligible Treatment Variations For Eligible Treatments After Additional Validation"
Note : It requires Simulation Funnel Query changes. Name the funnel as treatment_var_eligibility_count


1556
Simulation - Customer Level Simulation
Impact in Other areas
Dependencies
References
Logic Change
A. New DF - PrepareDataForBaseLineSimulation
B. New DF - CustomerSimulation
C. New DF - CustomerBaseLineSimulation
D. Strategy Change for Step 2 - Of fers By Eligible Intents
D1. New Strategy - IdentifyOf fersForEligibleIntentsForSimulation
D2. Update Strategy - IdentifyEligibleOf fers
E. Strategy Change for Step 3 - Global Eligibility For Batch
E1. New Strategy - ApplyGlobalRulesForBatchOf fersForSimulation
E2. Update Strategy - IdentifyEligibleOf fers
F. Strategy Change for Step 4 - Control Group Contention
F1. New Strategy - ApplyBusinessPurposeQuarantineCheckForControlForSimulation
F2. Update Strategy - IdentifyEligibleOf fers
G. Strategy Change for Step 5 - Of fer Eligibility
G1. Update Strategy - IdentifyEligibleOf fers
H. Strategy Change for Step 6 - Of fer Variant Eligibility
H1. Update Strategy - IdentifyOf ferVariantsForEligibleOf fers
I. Strategy Change for Step 7 - Pick Best Of fer Variant
I1. New Strategy - IdentifyBestOf ferVariantForOf ferForSimulation
I2. Update Strategy - IdentifyOf ferVariantsForEligibleOf fers
I. Strategy Change for Step 8 - Global Contact Strategy No Bundling
I1. New Strategy - ApplyGlobalContactStrategyNoBundlingForSimulation
I2. Update Strategy - AllTreatmentsForEligibleOf fers
J. Strategy Change for Step 9 - Business Purpose Contact Strategy No Bundling
J1. New Strategy - ApplyBusinessPurposeContactStrategyNoBundlingForSimulation


J1. New Strategy - ApplyBusinessPurposeContactStrategyNoBundlingForSimulation
J2. Update Strategy - AllTreatmentsForEligibleOf fers
K. Strategy Change for Step 10 - Of fer Self Contention Strategy No Bundling
K1. New Strategy - ApplyOf ferSelfContentionStrategyNoBundlingForSimulation
K2. Update Strategy - AllTreatmentsForEligibleOf fers
L. Strategy Change for Step 11 - Channel Eligibility
L1. New Strategy - ApplyChannelEligibilityForSimulation
L2. Update Strategy - IdentifyEligibleOBT reatments
M. Strategy Change for Step 12 - Channel Contention
M1. New Strategy - ApplyChannelContentionForSimulation
M2. Update Strategy - IdentifyEligibleOBT reatments
N. Strategy Change for Step 13 - Treatment Eligibility
N1. New Strategy - ApplyT reatmentEligibilityForSimulation
N2. Update Strategy - IdentifyEligibleOBT reatments
O. Strategy Change for Step 14 - Pick Best Treatments For Of fer
O1. New Strategy - IdentifyBestT reatmentsForOf fersForSimulation
O2. Update Strategy - IdentifyEligibleOBT reatments
P. Strategy Change for Step 15 - Global Contact Strategy Bundling
P1. New Strategy - ApplyGlobalContactStrategyBundlingForSimulation
P2. Update Strategy - IdentifyBestEmailT reatmentForBatch
Q. Strategy Change for Step 16 - Business Purpose Contact Strategy Bundling
Q1New Strategy ApplyBusinessPurposeContactStrategyBundlingForSimulation


1557
Q1. New Strategy - ApplyBusinessPurposeContactStrategyBundlingForSimulation
Q2. Update Strategy - IdentifyBestEmailT reatmentForBatch
R. Strategy Change for Step 17 - Of fer Self Contention Strategy Bundling
R1. New Strategy - ApplyOf ferSelfContentionStrategyBundlingForSimulation
R2. Update Strategy - IdentifyBestEmailT reatmentForBatch
S. Strategy Change for Step 18 - Bundled Treatment
S1. Update Strategy - IdentifyBestEmailT reatmentForBatch
T. Strategy Change for Step 19 - Run time V olume Capacity Check
T1. New Strategy - CheckA vailableCapacityForT reatmentForSimulation
T2. Update Strategy - IdentifyBestEmailT reatmentForBatch
T3. Update Strategy - IdentifyBestT reatmentForBatch
T. Strategy Change for Step 20 - Pick Best Treatment For Customer
T1. New Strategy - IdentifyBestT reatmentForBatchForSimulation
T2. Update Strategy - IdentifyBestT reatmentforSubscription
U. Strategy Change for Step 21 - Treatment V ariant Eligibility
U1. Update Strategy - IdentifyT reatmentV ariations
V. Strategy Change for Step 22 - Pick Best Treatment V ariant By Treatment
V1. New Strategy - IdentifyBestT reatmentV ariantForT reatmentForSimulation
V2. Update Strategy - IdentifyT reatmentV ariations
W. Strategy Change for Step 23 - Pick Best Treatment V ariant For Customer
W1. New Strategy - IdentifyBestT reatmentV ariationsForSubscriptionForSimulation
W2. Update Strategy - IdentifyT reatmentV ariations
Impact in Other areas
Dependencies
References


Impact in Other areas
Dependencies
References
Please refer to Customer Level Simulation Design Pattern for the changes to be done for each funnel step to be included in the
Customer Level Simulation.
 App Yes  As per App design

DB Yes As directed by App
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes  Logic E2E test can be done once app work is completed
DB Yes App Changes can be done once DB changes are finished.Area Yes/No Comments


1558
Please refer to Simulation Funnels (Batch) for the list of Simulation Funnel Steps to be included in the Customer Level Simulation.

Logic Change
A. New DF - PrepareDataForBaseLineSimulation
Save existing DF - PrepareDataForBatchNBA as PrepareDataForBaseLineSimulation
Replace the primary destination from data set SubscriptionDataForBatchNBA to new data set BaselineSimulation (to be created by App
team)
B. New DF - CustomerSimulation
Create the DF in class VFUK-FW-AOMFW-Data-Subscription
Source - Data Set SubscriptionDataForBatchNBA
Add a Covert shape after Source DF - PrepareBatchData and convert from Subscription class to Subscription class
Enable “Auto Copy”
Add an additional mapping as follows -
.Context("IsSimulationMode")=Param.IsSimulationMode
Add Strategy component and reference strategy IdentifyBestOBTreatmentsByBatch
Add Convert shape to convert the data from SR class to CustomerSimulationOutput structure (check with App team about converting
data)
Primary Destination - new Data Set - CustomerSimulationOutput (to be created by App team)
C. New DF - CustomerBaseLineSimulation
Save  DF CustomerSimulation as DF CustomerBaseLineSimulation
Replace the source from data set SubscriptionDataForBatchNBA to  new data set BaselineSimulation (to be created by App team)
D. Strategy Change for Step 2 - Offers By Eligible Intents
D1. New Strategy - IdentifyOffersForEligibleIntentsForSimulation
Enable External Input
Call Sub-strategy IdentifyOffersForEligibleIntents in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““


set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
IdentifyOffersForEligibleIntents
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offers By Eligible Intents“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”


1559
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyOffersForEligibleIntents
Connect to results
D2. Update Strategy - IdentifyEligibleOffers
After filter component “Offers For ExecutionMode - Batch“, replace the sub-strategy in component “Identify Offers For Eligible Intents
(Batch)“ with the new strategy  IdentifyOffersForEligibleIntentsForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query

E. Strategy Change for Step 3 - Global Eligibility For Batch
E1. New Strategy - ApplyGlobalRulesForBatchOffersForSimulation
Enable External Input
Call Sub-strategy ApplyGlobalRulesForBatchOffers in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyGlobalRulesForBatchOffers
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Global Eligibility For Batch“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”


In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyGlobalRulesForBatchOffers
Connect to results
E2. Update Strategy - IdentifyEligibleOffers
After component “Identify Offers For Eligible Intents (Batch)“, replace the sub-strategy in component “Apply GlobalRules For Batch
Offers“ with the new strategy  ApplyGlobalRulesForBatchOffersForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query

F. Strategy Change for Step 4 - Control Group Contention
F1. New Strategy - ApplyBusinessPurposeQuarantineCheckForControlForSimulation
Enable External Input
Call Sub-strategy ApplyBusinessPurposeQuarantineCheckForControl in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0


1560
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyBusinessPurposeQuarantineCheckForControl
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Control Group Contention“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyBusinessPurposeQuarantineCheckForControl
Connect to results
F2. Update Strategy - IdentifyEligibleOffers
After component “Apply GlobalRules For Batch Offers“, replace the sub-strategy in component
“ApplyBusinessPurposeQuarantineCheckForControl“ with the new strategy
ApplyBusinessPurposeQuarantineCheckForControlForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
G. Strategy Change for Step 5 - Offer Eligibility
G1. Update Strategy - IdentifyEligibleOffers
Add a Set Property component “Eligible Offers” after sub-strategy component SetOfferLevelPropensityin the main path. Do not set any
property in this component


property in this component
Create an alternate path from sub-strategy component -  ApplyBusinessPurposeQuarantineCheckForControl
In the alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with new Set property component “Eligible Offers”
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offer Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component  “Eligible Offers”
Connect to results


1561
H. Strategy Change for Step 6 - Offer Variant Eligibility
H1. Update Strategy - IdentifyOfferVariantsForEligibleOffers
Add a Set Property component “Eligible Offer Variants” after set property component - Set VariantRank For Each Offer Variants in the
main path. Do not set any property in this component
Create an alternate path from sub-strategy component -  “Eligible Offers”
Add Substrategy GetActiveOfferVariationsForOffers and connect from Eligible offers Component
In the alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with new Set property component “Eligible Offer
Variants”
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offer Variant Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component  “Eligible Offer Variants”
Connect to component - Identify Best OfferVariant For Offer

I. Strategy Change for Step 7 - Pick Best Offer Variant
I1. New Strategy - IdentifyBestOfferVariantForOfferForSimulation


I1. New Strategy - IdentifyBestOfferVariantForOfferForSimulation
Enable External Input
Call Sub-strategy IdentifyBestOfferVariantForOffer in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
IdentifyBestOfferVariantForOffer
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Pick Best Offer Variant “, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyBestOfferVariantForOffer
Connect to results


1562
I2. Update Strategy - IdentifyOfferVariantsForEligibleOffers
After component “Simulation Mode Check“, replace the sub-strategy in component “IdentifyBestOfferVariantForOffer“ with the new
strategy  IdentifyBestOfferVariantForOfferForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query

I. Strategy Change for Step 8 - Global Contact Strategy No Bundling
I1. New Strategy - ApplyGlobalContactStrategyNoBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Global Contact Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Global Contact
Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Global Contact Strategy No Bundling“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))


(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Global Contact Strategy Treatments“
Connect to results
I2. Update Strategy - AllTreatmentsForEligibleOffers
After component “All Non Email Treatments“, replace the filter component “Eligible Global Contact Strategy Treatments“ with the new
sub-strategy  ApplyGlobalContactStrategyNoBundlingForSimulation.

J. Strategy Change for Step 9 - Business Purpose Contact Strategy No Bundling
J1. New Strategy - ApplyBusinessPurposeContactStrategyNoBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Business Purpose Contact Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant" && .BPRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Business Purpose
Contact Strategy Treatments“


1563
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Business Purpose Contact Strategy No Bundling“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Business Purpose Contact Strategy Treatments“
Connect to results
J2. Update Strategy - AllTreatmentsForEligibleOffers
After component “All Non Email Treatments“, replace the filter component “Eligible Business Purpose Contact Strategy Treatments“ with
the new sub-strategy  ApplyBusinessPurposeContactStrategyNoBundlingForSimulation.

K. Strategy Change for Step 10 - Offer Self Contention Strategy No Bundling
K1. New Strategy - ApplyOfferSelfContentionStrategyNoBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Offer Self Contention Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant" && .BPRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““


set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Offer Self
Contention Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offer Self Contention Strategy No Bundling“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Offer Self Contention Strategy Treatments“
Connect to results
K2. Update Strategy - AllTreatmentsForEligibleOffers
After component “All Non Email Treatments“, replace the filter component “Eligible Offer Self Contention Strategy Treatments“ with the
new sub-strategy  ApplyOfferSelfContentionStrategyNoBundlingForSimulation.


1564
L. Strategy Change for Step 11 - Channel Eligibility
L1. New Strategy - ApplyChannelEligibilityForSimulation
Enable External Input
Call Sub-strategy ApplyChannelEligibility in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyChannelEligibility
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Channel Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyChannelEligibility
Connect to results
L2. Update Strategy - IdentifyEligibleOBTreatments
After  component “Outbound Treatments By Batch“, replace the sub-strategy in component “ApplyChannelEligibility“ with the new
strategy  ApplyChannelEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
M. Strategy Change for Step 12 - Channel Contention
M1. New Strategy - ApplyChannelContentionForSimulation


M1. New Strategy - ApplyChannelContentionForSimulation
Enable External Input
Call Sub-strategy ApplyChannelContention in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyChannelContention
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Channel Contention“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))


1565
Otherwise, select component ApplyChannelContention
Connect to results
M2. Update Strategy - IdentifyEligibleOBTreatments
After  component “ApplyChannelEligibility“, replace the sub-strategy in component “ApplyChannelContention“ with the new strategy
ApplyChannelContentionForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
N. Strategy Change for Step 13 - Treatment Eligibility
N1. New Strategy - ApplyTreatmentEligibilityForSimulation
Enable External Input
Call Sub-strategy ApplyTreatmentEligibility in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyTreatmentEligibility
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Treatment Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyTreatmentEligibility
Connect to results
N2. Update Strategy - IdentifyEligibleOBTreatments


Connect to results
N2. Update Strategy - IdentifyEligibleOBTreatments
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
O. Strategy Change for Step 14 - Pick Best Treatments For Offer
O1. New Strategy - IdentifyBestTreatmentsForOffersForSimulation
Enable External Input
Call Sub-strategy ApplyTreatmentEligibility in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
IdentifyBestTreatmentsForOffers
with join condition .pyName = .pyName
Do not enable  “exclude”


1566
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Pick Best Treatments For Offer“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyBestTreatmentsForOffers
Connect to results
O2. Update Strategy - IdentifyEligibleOBTreatments
After  component “IdentifyEligibleOBTreatments”, replace the sub-strategy in component “IdentifyBestTreatmentsForOffers“ with the new
strategy  IdentifyBestTreatmentsForOffersForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query

P. Strategy Change for Step 15 - Global Contact Strategy Bundling
P1. New Strategy - ApplyGlobalContactStrategyBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Global Contact Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Global Contact
Strategy Treatments“


Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Global Contact Strategy Bundling“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Global Contact Strategy Treatments“
Connect to results
P2. Update Strategy - IdentifyBestEmailTreatmentForBatch
After component “All Parent Emails“, replace the filter component “Email Eligible Global Contact Strategy Treatments“ with the new sub-
strategy  ApplyGlobalContactStrategyBundlingForSimulation.


1567
Q. Strategy Change for Step 16 - Business Purpose Contact Strategy Bundling
Q1. New Strategy - ApplyBusinessPurposeContactStrategyBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Business Purpose Contact Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant" && .BPRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Business Purpose
Contact Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Business Purpose Contact Strategy Bundling“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Business Purpose Contact Strategy Treatments“
Connect to results
Q2. Update Strategy - IdentifyBestEmailTreatmentForBatch
After component “All Parent Emails“, replace the filter component “Email Eligible Business Contact Strategy Treatments“ with the new
sub-strategy  ApplyBusinessPurposeContactStrategyBundlingForSimulation.


sub-strategy  ApplyBusinessPurposeContactStrategyBundlingForSimulation.

R. Strategy Change for Step 17 - Offer Self Contention Strategy Bundling
R1. New Strategy - ApplyOfferSelfContentionStrategyBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Offer Self Contention Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant" && .BPRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Offer Self
Contention Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offer Self Contention Strategy Bundling“,
MyStepPage))


1568
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Offer Self Contention Strategy Treatments“
Connect to results
R2. Update Strategy - IdentifyBestEmailTreatmentForBatch
After component “All Parent Emails“, replace the filter component “Email Eligible Offer Self Contention Strategy Treatments“ with the
new sub-strategy  ApplyOfferSelfContentionStrategyBundlingForSimulation.

S. Strategy Change for Step 18 - Bundled Treatment
S1. Update Strategy - IdentifyBestEmailTreatmentForBatch
Add a Set Property component “Eligible Child Treatments” between component - “Output For Each” and Results. Do not set any
property in this component
Create an alternate path from component -  Children of Eligible Parents
In the alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with new Set property component “Eligible Child
Treatments”
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Bundled Treatment“, MyStepPage))


In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
Between component “Eligible Child Treatments” and Results, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component  ““Eligible Child Treatments””
Connect to results

T. Strategy Change for Step 19 - Run time Volume Capacity Check
T1. New Strategy - CheckAvailableCapacityForTreatmentForSimulation
Enable External Input
Call Sub-strategy CheckAvailableCapacityForTreatment in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with  component
CheckAvailableCapacityForTreatment


1569
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Run time Volume Capacity Check“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component CheckAvailableCapacityForTreatment
Connect to results
T2. Update Strategy - IdentifyBestEmailTreatmentForBatch
After component “Apply All Contact Strategy To Parent Email Treatments”, replace the sub-strategy component
CheckAvailableCapacityForTreatment with the new sub-strategy  CheckAvailableCapacityForTreatmentForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
T3. Update Strategy - IdentifyBestTreatmentForBatch
After component “Non Email Channel”, replace the sub-strategy component CheckAvailableCapacityForTreatment with the new sub-
strategy  CheckAvailableCapacityForTreatmentForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
Please note the above 3 strategies is needed to undergo the design changes as detailed in Simulation - Update to Runtime Volume Cap
acity Check  before the simulation related changes are done.

T. Strategy Change for Step 20 - Pick Best Treatment For Customer


T. Strategy Change for Step 20 - Pick Best Treatment For Customer
T1. New Strategy - IdentifyBestTreatmentForBatchForSimulation
Enable External Input
Call Sub-strategy IdentifyBestTreatmentForBatch in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with  component IdentifyBestTreatmentForBatch
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Pick Best Treatment For Customer“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyBestTreatmentForBatch
Connect to results


1570
T2. Update Strategy - IdentifyBestTreatmentforSubscription
After component “ExecutionMode - Batch”, replace the sub-strategy component IdentifyBestTreatmentForBatch with the new sub-
strategy  IdentifyBestTreatmentForBatchForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query

U. Strategy Change for Step 21 - Treatment Variant Eligibility
U1. Update Strategy - IdentifyTreatmentVariations
Add a Set Property component “Eligible Treatment Variations After Additional Check” after component -
ApplyAdditionalTreatmentVariationValidations. Do not set any property in this component
Create an alternate path from component -  External Input
Add Substrategy Component GetActiveTreatmentVariationsForTreatment and connect from External imput
In the alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with new Set property component “Eligible
Treatment Variations After Additional Check”
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Treatment Variant Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
Between component “Eligible Treatment Variations After Additional Check” and IdentifyBestTreatmentVariantForTreatment, add a Switch
component “Simulation Mode Check”


component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component  “Eligible Treatment Variations After Additional Check”
Update Data Join component - “Eligible Treatment Variations For Eligible Treatments“, to join with component  “Eligible Treatment
Variations After Additional Check” instead on component - component  “Eligible Treatment Variations”

V. Strategy Change for Step 22 - Pick Best Treatment Variant By Treatment
V1. New Strategy - IdentifyBestTreatmentVariantForTreatmentForSimulation
Enable External Input
Call Sub-strategy IdentifyBestTreatmentVariantForTreatment in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with  component
IdentifyBestTreatmentVariantForTreatment
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1


1571
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Pick Best Treatment Variant By Treatment“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyBestTreatmentVariantForTreatment
Connect to results
V2. Update Strategy - IdentifyTreatmentVariations
After component “Simulation Mode Check”, replace the sub-strategy component IdentifyBestTreatmentVariantForTreatment with the
new sub-strategy  IdentifyBestTreatmentVariantForTreatmentForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation and
the data join component - “Eligible Treatment Variations For Eligible Treatments After Best Treatment Variant“
Rename Data Join component - “Eligible Treatment Variations For Eligible Treatments After Best Treatment Variant“ to “Best Treatment
Variant By Treatment“

W. Strategy Change for Step 23 - Pick Best Treatment Variant For Customer
W1. New Strategy - IdentifyBestTreatmentVariationsForSubscriptionForSimulation
Enable External Input
Call Sub-strategy IdentifyBestTreatmentVariationsForSubscription in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with  component


In the alternate path, add a data join component - Match Eligible Propositions and join with  component
IdentifyBestTreatmentVariationsForSubscription
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Pick Best Treatment Variant For Customer“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component IdentifyBestTreatmentVariationsForSubscription
Connect to results
W2. Update Strategy - IdentifyTreatmentVariations
After component “Simulation Mode Check”, replace the sub-strategy component IdentifyBestTreatmentVariationsForSubscription with
the new sub-strategy  IdentifyBestTreatmentVariationsForSubscriptionForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation


1572
Rename Data Join component - “Eligible Treatment Variations For Eligible Treatments After Additional Validation“ to “Best Treatment
Variant For Customer“ and update the Data Join component to join with sub-strategy component
IdentifyBestTreatmentVariationsForSubscription instead on sub-strategy component - ApplyAdditionalTreatmentVariationValidations


1573
Simulation - Update to Runtime Volume Capacity Check
Logic Changes
A. Update Strategy - CheckAvailableCapacityForTreatment
Remove filter component - “Other than Email Channel“
Add new Set property component - “Treatments with Runtime Volume Capacity” just before the Results components and connect the
following 2 filter components to this new set property component. Do not set any properties
Treatments having Capacity
Treatments with No Volume Limit
Create an alternate path from External Input
In the alternate path, add a set property component - “Skip Reconfigure Volume Constraint Path”
In the main path, just before the Results component, add a switch component - “Choose Reconfigure Volume Constraint Path“.
Select component - “Treatments with Runtime Volume Capacity” if
@Utilities.callWhen(tools,"IsReconfigureVolumeEnabled",Primary)
Otherwise, select component -  “Skip Reconfigure Volume Constraint Path”
B. Update Strategy - IdentifyBestEmailTreatmentForBatch
Remove all components between components “Apply All Contact Strategy To Parent Email Treatments” and “Set Parent“ and add sub-
strategy CheckAvailableCapacityForTreatment
C. Update Strategy - IdentifyBestTreatmentForBatch
Remove Remove all components between components - External Input and “Non Email Channel”
Connect  External Input to component “Non Email Channel”
After component “Non Email Channel”, add sub-strategy CheckAvailableCapacityForTreatment
From sub-strategy CheckAvailableCapacityForTreatment, connect to components - “Mandatory” and “Non Mandatory”


1574
NBA FW - Simplify Intent - Static confidence for event driven intents
Impact in Other areas
Dependencies
Logic Changes
Impact in Other areas
Dependencies
Logic Changes:
A. Update Strategy - IdentifyRecentEventBasedIntents
In the strategy IdentifyRecentEventBasedIntents , update three sub strategies
1. ValidateIntentsWithEvents
2. ValidateIntentsWithIH
3. ValidateIntentsWithTealium
B. Update strategy ValidateIntentsWithEvents
In the set property, "Aged Confidence Score" set .ConfidenceScore=.ConfidenceScore
or remove setting of value .ConfidenceScore from the set property(TBC)
C. Update strategy ValidateIntentsWithIH
In the set property, "Aged Confidence Score" set .ConfidenceScore=.ConfidenceScore
or remove setting of value .ConfidenceScore from the set property(TBC)
D. Update strategy ValidateIntentsWithTealium604935 Simplify Intent - Static confidence for event driven intents
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1575
In the set property, "Aged Confidence Score" set .ConfidenceScore=.ConfidenceScore
or remove setting of value .ConfidenceScore from the set property(TBC)
Note: It has an impact on IVR. Need to discuss about impacts (TBC)


1576
NBA FW - Simplify Intent - Remove Low Confidence Mappings
Impact in Other areas
Dependencies
Logic Changes
Impact in Other areas
Dependencies

Logic Changes:
A. Update Strategy EvaluateCustomerIntents
Modify the condition in the existing filter "Confidence Score Range" to .ConfidenceScoreRange!="" &&
@String.notEqualsIgnoreCase(.ConfidenceScoreRange,"Low")
Note: Need to check the impacts of it(TBC)604841 Simplify Intent - Remove Low Confidence Mappings
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1577
Assisted Upgrade - Identification of Reward Line

HL Requirement
If there are any Vodafone Together offer in the recommendation, display the VF together offer description and the discount amount
alongside the reward line in the UI (Selected Deal > More Info Section)
Impacted Areas

Update Strategy- GetEligibleVFTogetherOffersForAccount
Ensure from the datapage {D_CalculatedOffersForUpgrade}, RewardIndicator(existing) and InstallId=ServiceNumber is passed until end
of the flow.
Update Strategy- SetOutputPropertiesForVFTRewardData
Filter RewardIndicator=Y records, as input to D_EligibleCombiBundleQualifierReward.
 650405 Identification of Reward Line
App Yes Update SPEC and respective
activity,Datapage{D_CalculatedOffersForUpg
rade} for below APIs to include
RewardIndicator and InstallId
Get Recommendations
Validate Basket
Submit Basket
Logic Yes
PMTool No

UI Yes Display the InstallId for Reward Line in
Selected Deal > ‘More Info Section’
DB No  Area Yes/No Area


1578
Release 3.01


1579
NBA FW - Add 12/24 month dimension to discount matrix

Impact in Other areas
Dependencies
Logic Changes:
Change the decision data structure. Now it should include 12 month and 24 month discount codes.
Remove DiscountForTariffTierHigh,DiscountForTariffTierMedium,DiscountForTariffTierLow properties from the form tab in the decision
data called "AdditionalLineDiscountMatrix"
Create below SR properties of Type Text and add it to the form tab of the decision data called "AdditionalLineDiscountMatrix"
DiscountForTariffTierHigh12M
DiscountForTariffTierMedium12M
DiscountForTariffTierLow12M
DiscountForTariffTierHigh24M
DiscountForTariffTierMedium24M
DiscountForTariffTierLow24M
Example Reference:
 570156 Add 12/24 month dimension to discount matrix
App No
DB No
Knowledge Transfer No
PM Tool Yes
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments
AdditionalLine …
02 Nov 2021, 06:41 AMure.csv


1580
NBA FW - Simplify Intent - Remove Model Based Definition
Impact in Other areas
Dependencies
Logic Changes
Impact in Other areas
Dependencies

Logic Changes:
A. Update Strategy IdentifyRuleBasedIntents:
Remove the connection between the external input to the sub strategy IdentifyModelBasedIntents and from the sub strategy to the
group by a component called "Group By" component.
Note: Need to check AU Impacts (TBC)
As per new suggestion on 21st December User Story 604833: Simplify Intent - Remove Model Based Definition - Boards (visualstudio.com)
New Approach:
 Update Strategy IdentifyRuleBasedIntents:
1. Remove the join connection between external input and IdentifyModelBasedIntents
2. Import the existing Substrategy IdentifyExecutionMode in the IdentifyRuleBasedIntents strategy
3. Join the external input to the new filter (Only NBAA Execution Mode) and the condition as
IdentifyExecutionMode.ExecutionMode="NBAA" and join the filter to the existing sub strategy IdentifyModelBasedIntents604833 Simplify Intent - Remove Model Based Definition
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1581
Note : Other execution mode records should not invoke IdentifyModelBasedIntents and Only AU execution should invoke
IdentifyModelBasedIntents while evaluating Intent.


1582
Simulation - GetNBA Simulation - Decisioning Funnel & Distribution

Impact in Other areas
Dependencies
References
Logic Changes
A. New Data Set - InboundSubscriptionContext
B. Update Data Flow - GetNBA
C. New Data Set - SubscriptionsForGetNBASimulation (C*)
D. New Data Flow - PrepareRealtimeDataForGetNBASimulation
E. New Data Set - SubscriptionDataForGetNBA
F. New Data Flow - PrepareDataForGetNBA
G. Update Strategy - IdentifyEligibleW ebTreatments
H. Update Strategy - IdentifyEligibleIBCCT reatments
I. Update Strategy - IdentifyEligibleRetailT reatments
J. Update Strategy - IdentifyEligibleAppT reatments
K. Simulation Configuration - Decisioning Funnel Explanation (Pega OOTB)
L. Simulation Configuration - Distribution Test (Pega OOTB)
Impact in Other areas
Dependencies595836 GetNBA Execution Mode Simulation
App Yes  As per App design

DB Yes As directed by App
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes  Logic E2E test can be done once app work is completed
DB Yes App Changes can be done once DB changes are finished.Area Yes/No Comments


1583
References
Please refer to Simulation Funnels (GetNBA)  for the list of Simulation Funnel Steps to be included in the Simulation.

Logic Changes

A. New Data Set - InboundSubscriptionContext
This data set will be created by App team. This will contain the contextual information as passed to the GetNBA API call including Context
page, Product Details and Recommendations for each customer and each call. The contextual information will be stored as JSON in the
data set.

B. Update Data Flow - GetNBA
Add a secondary destination - data set InboundSubscriptionContext
Add a Data Transform (to be provided by App) to convert the input Subscription page to data structure as needed for data set
InboundSubscriptionContext
Note: Use the convert shape instead of Data Transform.
Add a secondary destination - data set InboundSubscriptionContext (provided by App)
Before the destination add convert shape.
In the convert shape , provide the class name as VFUK-FW-AOMFW-Data-InboundSubscriptionContext but map the properties in the
convert shape by referring the data transform rule called InboundSimulationRequest
In the destination, Select dataset from drop down and select the dataset called InboundSubscriptionContext
C. New Data Set - SubscriptionsForGetNBASimulation (C*)
This data set will be created and populated by App team. App process will use new data set InboundSubscriptionContext as source, filter
the records as needed (by Context or Channel or both), match the Subscription with Subscription spine and populate Data Set -
SubscriptionsForGetNBASimulation including Context page, Product Details and Recommendations as expected by GetNBA strategy for
execution.

D. New Data Flow - PrepareRealtimeDataForGetNBASimulation


execution.

D. New Data Flow - PrepareRealtimeDataForGetNBASimulation
Save existing DF - PrepareRealtimeData as PrepareRealtimeDataForGetNBASimulation
Update Source to use Data Set - SubscriptionsForGetNBASimulation

E. New Data Set - SubscriptionDataForGetNBA
Create a new C* data set by replicating existing data set - SubscriptionDataForBatchNBA


1584
F. New Data Flow - PrepareDataForGetNBA
Save existing DF - PrepareDataForBatchNBA as  PrepareDataForGetNBA
Update Source to use Data Flow - PrepareRealtimeDataForGetNBASimulation
Update Destination to use data set - SubscriptionsDataForGetNBA

G. Update Strategy - IdentifyEligibleWebTreatments
Add a filter component - “ApplyChannelEligibility” after Sub-strategy component “AllWebTreatmentsForEligibleOffers” with condition as
“true”
Add a filter component - “ApplyChannelContention” after new filter component “ApplyChannelEligibility” with condition as “true”
Connect to sub-strategy - ApplyTreatmentEligibility
H. Update Strategy - IdentifyEligibleIBCCTreatments
Add a filter component - “ApplyChannelEligibility” after Sub-strategy component “AllIBCCTreatmentsForEligibleOffers” with condition as
“true”
Add a filter component - “ApplyChannelContention” after new filter component “ApplyChannelEligibility” with condition as “true”
Connect to sub-strategy - ApplyTreatmentEligibility
I. Update Strategy - IdentifyEligibleRetailTreatments
Add a filter component - “ApplyChannelEligibility” after Sub-strategy component “AllRetailTreatmentsForEligibleOffers” with condition as
“true”
Add a filter component - “ApplyChannelContention” after new filter component “ApplyChannelEligibility” with condition as “true”
Connect to sub-strategy - ApplyTreatmentEligibility
J. Update Strategy - IdentifyEligibleAppTreatments
Add a filter component - “ApplyChannelEligibility” after Sub-strategy component “All App Treatments For Eligible Offers” with condition
as “true”


as “true”
Add a filter component - “ApplyChannelContention” after new filter component “ApplyChannelEligibility” with condition as “true”
Connect to sub-strategy - ApplyTreatmentEligibility
K. Simulation Configuration - Decisioning Funnel Explanation (Pega OOTB)
Strategy - GetNBAWithIntent
Audience - SubscriptionDataForGetNBA
Simulation Query - TBC
Please refer to Simulation Funnels (GetNBA) for funnel steps
L. Simulation Configuration - Distribution Test (Pega OOTB)
Strategy - GetNBAWithIntent
Audience - SubscriptionDataForGetNBA
Simulation Query - TBC


1585
Simulation - GetNBA Simulation - Customer Level
Impact in Other areas
Dependencies
References
Logic Change
A. New DataSet - BaselineSubscriptionDataForGetNBA
B. New Data Flow - PrepareBaselineDataForGetNBA
C. New DF - CustomerSimulationForGetNBA
D. New DF - CustomerBaseLineSimulationForGetNBA
E. Strategy Change for Step 2 - Of fers By Eligible Intents
E2. Update Strategy - IdentifyEligibleOf fers
F. Strategy Change for Step 4 - Control Group Contention
F1. New Strategy - ApplyBusinessPurposeQuarantineCheckForControlForGetNBASimulation
F2. Update Strategy - IdentifyEligibleOf fers
G. Strategy Change for Step 5 - Of fer Eligibility
G1. Update Strategy - IdentifyEligibleOf fers
H. Strategy Change for Step 10 - Of fer Self Contention Strategy No Bundling
H1. New Strategy - ApplyOf ferSelfContentionStrategyNoBundlingForSimulation
H2. Update Strategy - AllTreatmentsForEligibleOf fers
I. Strategy Change for Step 11 - Channel Eligibility
I1. New Strategy - ApplyChannelEligibilityForSimulation
I2. Update Strategy - IdentifyEligibleT reatmentsforIVRandSMS
J. Strategy Change for Step 12 - Channel Contention
J1. New Strategy - ApplyChannelContentionForSimulation
J2. Update Strategy - AllIVRAndSMST reatmentsForEligibleOf fers
K. Strategy Change for Step 13 - Treatment Eligibility
K1. New Strategy - ApplyT reatmentEligibilityForSimulation
K2. Update Strategy - IdentifyEligibleW ebTreatments


K2. Update Strategy - IdentifyEligibleW ebTreatments
K3. Update Strategy - IdentifyEligibleIBCCT reatments
K4. Update Strategy - IdentifyEligibleAppT reatments
K5. Update Strategy - IdentifyEligibleT reatmentsforIVRandSMS
K6. Update Strategy - IdentifyEligibleRetailT reatments
L. Strategy Change for Step 20 - Pick Best Treatment For Customer
L1. New Strategy - IdentifyBestT reatmentForGetNBAForSimulation
L2. Update Strategy - IdentifyBestT reatmentforSubscription
Impact in Other areas595836 GetNBA Execution Mode Simulation
App Yes  As per App design

DB Yes As directed by App
Knowledge Transfer No  Area Yes/No Comments


1586
Dependencies
References
Please refer to Customer Level Simulation Design Pattern for the changes to be done for each funnel step to be included in the
Customer Level Simulation.

Please refer to Simulation Funnels (GetNBA)  for the list of Simulation Funnel Steps to be included in the Customer Level Simulation.

Logic Change
A. New DataSet - BaselineSubscriptionDataForGetNBA
Create a new C* data set by replicating existing data set - SubscriptionDataForBatchNBA
B. New Data Flow - PrepareBaselineDataForGetNBA
Save existing DF - PrepareDataForGetNBA as  PrepareBaselineDataForGetNBA
Update Destination to use data set - BaselineSubscriptionDataForGetNBA
C. New DF - CustomerSimulationForGetNBA
Create the DF in class VFUK-FW-AOMFW-Data-Subscription
Source - Data Set SubscriptionDataForGetNBA
Add a Covert shape after Source DataSet and convert from Subscription class to Subscription class
Enable “Auto Copy”
Add an additional mapping as follows -
.Context("IsSimulationMode")=Param.IsSimulationMode
Add Strategy component and reference strategy GetNBAWithIntent
Add Convert shape to convert the data from SR class to CustomerSimulationOutput structure (check with App team about converting
data)
Primary Destination - new Data Set - CustomerSimulationOutput (to be created by App team)
Please note that this design has dependency on Simulation - GetNBA Simulation - Decisioning Funnel & Distribution for Data Sets and
Data Flows.PM Tool No
PM Tool KT Documentation No
PM Tool No
App Yes  Logic E2E test can be done once app work is completed
DB Yes App Changes can be done once DB changes are finished.Area Yes/No Comments


1587
D. New DF - CustomerBaseLineSimulationForGetNBA
Save  DF CustomerSimulationForGetNBA as DF CustomerBaseLineSimulationGetNBA
Replace the source from data set SubscriptionDataForGetNBA to  new data set BaselineSubscriptionDataForGetNBA
E. Strategy Change for Step 2 - Offers By Eligible Intents
E2. Update Strategy - IdentifyEligibleOffers
After filter component “Offers For ExecutionMode - GetNBA“, replace the sub-strategy in component “
Identify Offers For Eligible Intents (GetNBA)“ with the new strategy  IdentifyOffersForEligibleIntentsForGetNBASimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
F. Strategy Change for Step 4 - Control Group Contention
F1. New Strategy - ApplyBusinessPurposeQuarantineCheckForControlForGetNBASimulation
Enable External Input
Call Sub-strategy ApplyBusinessPurposeQuarantineCheckForControl in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyBusinessPurposeQuarantineCheckForControl
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Control Group Contention“, MyStepPage))


In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyBusinessPurposeQuarantineCheckForControl
Connect to results
F2. Update Strategy - IdentifyEligibleOffers
After component “Identify Offers For Eligible Intents (GetNBA)“, replace the sub-strategy in component
“ApplyBusinessPurposeQuarantineCheckForcontrolGetNBA“ with the new strategy
ApplyBusinessPurposeQuarantineCheckForControlForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
G. Strategy Change for Step 5 - Offer Eligibility
G1. Update Strategy - IdentifyEligibleOffers
Create an alternate path from sub-strategy component -  ApplyBusinessPurposeQuarantineCheckForcontrolGetNBA to set property
component  “Reset Tags For Matching”


1588
H. Strategy Change for Step 10 - Offer Self Contention Strategy No Bundling
H1. New Strategy - ApplyOfferSelfContentionStrategyNoBundlingForSimulation
Enable External Input
Create a filter component - “Eligible Offer Self Contention Strategy Treatments“ in the main path with the following condition
.GlobalRelevancy!="Irrelevant" && .BPRelevancy!="Irrelevant"
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with filter component “Eligible Offer Self
Contention Strategy Treatments“
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Offer Self Contention Strategy No Bundling“,
MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component “Eligible Offer Self Contention Strategy Treatments“
Connect to results
H2. Update Strategy - AllTreatmentsForEligibleOffers
After component “All Non Email Treatments“, replace the filter component “Eligible Offer Self Contention Strategy Treatments“ with the


new sub-strategy  ApplyOfferSelfContentionStrategyNoBundlingForSimulation.

I. Strategy Change for Step 11 - Channel Eligibility
I1. New Strategy - ApplyChannelEligibilityForSimulation
Enable External Input
Call Sub-strategy ApplyChannelEligibility in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyChannelEligibility
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Channel Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”


1589
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyChannelEligibility
Connect to results
I2. Update Strategy - IdentifyEligibleTreatmentsforIVRandSMS
After  component “AllIVRAndSMSTreatmentsForEligibleOffers“, replace the sub-strategy in component “ApplyChannelEligibility“ with the
new strategy  ApplyChannelEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
J. Strategy Change for Step 12 - Channel Contention
J1. New Strategy - ApplyChannelContentionForSimulation
Enable External Input
Call Sub-strategy ApplyChannelContention in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyChannelContention
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Channel Contention“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON


Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyChannelContention
Connect to results
J2. Update Strategy - AllIVRAndSMSTreatmentsForEligibleOffers
After  component “ApplyChannelEligibility“, replace the sub-strategy in component “ApplyChannelContention“ with the new strategy
ApplyChannelContentionForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
K. Strategy Change for Step 13 - Treatment Eligibility
K1. New Strategy - ApplyTreatmentEligibilityForSimulation
Enable External Input
Call Sub-strategy ApplyTreatmentEligibility in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with Sub-strategy component
ApplyTreatmentEligibility


1590
with join condition .pyName = .pyName
Do not enable  “exclude”
In Property Mapping, set ValueInteger = 1
In the alternate path, add a Set property component “Record Dropped Propositions” and set the following properties
AdhocText1 = @if(.ValueInteger=1,"",@AOMUtilities.CaptureSimulationDropOff(“Treatment Eligibility“, MyStepPage))
In the alternate path, add a filter component “Eligible Propositions” with filter condition as ValueInteger = 1
In the main path, add a Switch component “Simulation Mode Check”
Select component “Eligible Propositions”, if Simulation Mode is ON
(@String.equalsIgnoreCase(Primary.Context("IsSimulationMode"),"true"))
Otherwise, select component ApplyTreatmentEligibility
Connect to results
K2. Update Strategy - IdentifyEligibleWebTreatments
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
K3. Update Strategy - IdentifyEligibleIBCCTreatments
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
K4. Update Strategy - IdentifyEligibleAppTreatments
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.


ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
K5. Update Strategy - IdentifyEligibleTreatmentsforIVRandSMS
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
K6. Update Strategy - IdentifyEligibleRetailTreatments
After  component “ApplyChannelContention, replace the sub-strategy in component “ApplyTreatmentEligibility“ with the new strategy
ApplyTreatmentEligibilityForSimulation.
Please note that name of the sub-strategy component should not be updated as this name will be used in Pega OOTB Simulation Query
L. Strategy Change for Step 20 - Pick Best Treatment For Customer
L1. New Strategy - IdentifyBestTreatmentForGetNBAForSimulation
Enable External Input
Call Sub-strategy IdentifyBestTreatmentForGetNBA in the main path
Create an alternate path and set property component “Reset Tags For Matching”
set ValueInteger = 0
set AdhocText1 = ““
In the alternate path, add a data join component - Match Eligible Propositions and join with  component
IdentifyBestTreatmentForGetNBA
with join condition .pyName = .pyName