971
D3. Connect to results

E. New strategy - SetIHForDirectMail
E1. Enable External Input
E2. Create Set Property Component - Set IH Properties and connect from External Input
E3. Connect to results

F. New strategy - SetIHForOutboundCC
F1. Enable External Input
F2. Create Set Property Component - Set IH Properties and connect from External Input
F3. Connect to results

F. New strategy - SetIHForAppPush
F1. Enable External Input
F2. Create Set Property Component - Set IH Properties and connect from External Input
F3. Connect to results
 pyDirection “Outbound“
pyOutcome “Pending”
TargetSubChannel “Default“Property Name Value
pyDirection “Outbound“
pyOutcome “Selected”Property Name Value
pyDirection “Outbound“
pyOutcome “Selected”Property Name Value
pyDirection “Outbound“
pyOutcome “Selected”
TargetSubChannel @If(.PushNotificationJSON!="","PUSHNotification"+",","")+@If(.Inbox
NotificationJSON!="","InboxNotificationJSON"+",","")+@If(.InAppNotif
icationJSON!="","InAppNotificationJSON","")Property Name Value


972
G. New Strategy - SetIHPropertiesForAllChannels
G1. Enable External Input
G2. Call sub-strategy - SetCommonIHPropertiesForAllChannels
G3. Add filter components for each channel and call relevant SetIH sub-strategy -
G4. Connect all path to new call to sub-strategy  - SetDefaultValuesToIHProperties
G5. Connect to results

H. Update Strategy - PopulateOutputPropertiesForBatch
H1. Remove sub-strategy component - SetCommonIHPropertiesForBatch
H2. Remove set property component - Set IH for Control

I. Update Strategy - PopulateOutputPropertiesForAppPushBatch
I1. Update set property component - Set TreatmentDynamicExpiry
Remove set operations for - pyOutcome, CreateTs, pyChannelEmail SetIHForEmail
SMS SetIHForSMS
DirectMail SetIHForDirectMail
OutboundCC SetIHForOutboundCC
AppPush SetIHForAppPushFilter Component Sub-strategy


973

J. Update Strategy - IdentifyBestOBTreatmentsByBatch
J1. Call sub-strategy - SetIHPropertiesForAllChannels before Results component

K. Update Strategy - IdentifyBestEmailTreatmentForBatch
K1. Create SR property - ParentOfferName (Text)
K2. Update Set Property Component - Set Parent
Set property ParentOfferName = OfferName
K3. Update Set Property Component - Set MaxChildren
Set property ParentOfferName = EachParentTreatment.OfferName

L. Update strategy - ApplyTreatmentDataToTreatments
L1. Update data join component - All Treatments With Properties
Add the following mapping -
pyDirection
ChannelContentID
IVRRoutingRecommendation
ChannelConnectionID
StoreId


974
AgentUsername
ProspectFlag
EmailAddress
ClickedURL
ActedInCountryCode
ErrorRelation
ActedInAgent
SendIdentifier
Comment
HardBounce
Blocked
Source
Error
CreateTs
SubEventType
EventType
ProductRecommendationType
RampUpValue
RampUpFlag
TILResponse
DiallingCompletedFlg
CallCentreOutcome
CallCentrePhoneNo
CallerType
NTID
CellCode
pyPropensity
Mandatory
ExecutionMode
TargetSubChannel
ParentOfferName

M. Update Strategy - PopulateOutputPropertiesForSMSByBatch
M1. Rename set property component - Set IH to Set Control Group Flag
M2. Update set property component - Set Control Group Flag
Remove set operations for - .pyDirection, CreateTs

N. Update Strategy - PrepareSMSTreatments
N1. Call sub-strategy - SetDefaultValuesToIHProperties before Results

O. Update Pega Marketing Batch SMS Campaign
Re-configure the marketing strategy  PrepareSMSTreatments output to new SetDefaultValuesToIHProperties component.
Please note, if this step is not done, the Pega Marketing Batch SMS Campaign will fail.


975
P. Update Strategy - PopulateOutputPropertiesForEmailByBatch
P1. Rename set property component - Set IH to Set Control Group Flag
P2. Update set property component - Set Control Group Flag
Remove set operations for - .pyDirection, CreateTs
M3. Remove component - SetGenericIHReportingAttributes
P4. Remove component - Prioritize by RankingScore
Q. Update Strategy - PrepareEmailTreatments
Q1. Call sub-strategy - SetDefaultValuesToIHProperties after sub-strategy component -  PopulateOutputPropertiesForEmailByBatch
Q2. Add Prioritize component - Prioritize by RankingScore before Results

R. Update Pega Marketing Batch Email Campaign
Re-configure the marketing strategy  PrepareEmailTreatments output to new Prioritize by RankingScore component.
Please note, if this step is not done, the Pega Marketing Batch Email Campaign will fail.

S. Withdraw Strategy - SetCommonIHPropertiesForBatch


976
NBA FW - Business Purpose Level Contact Strategy
[AOM-2475] Business Purpose Level Contention Rules Within the NBA Framework
Clarified Requirements (User Story Update - Pending)
1. Each offer will have a new configuration - ApplyBusinessPurposeContactStrategy (Yes/No)
2. Each BusinessPurpose will have a new configuration - CrossOverRate (any values from -1, 0 or positive integer)
3. Each BusinessPurpose will have a new configuration - SaturationRateCount (positive integer including 0)
4. Each BusinessPurpose will have a new configuration - SaturationRatePeriod (any values from -1, 0 or positive integer)
5. Business Purpose Contact Strategy should be applied for Batch executions only
6. Business Purpose Contact Strategy should only be applied for offers if -
a. Mandatory is set to No
b. ApplyBusinessPurposeContactStrategy to Yes
c. Intent score (which resulted to the offer being selected for evaluation) is not High
7. In applying Business Purpose Contact Strategy - CrossOverRate -
a. Identify the date when the offer was “sent” to customer (across all OB channels) last for a Business Purpose
b. Calculate the number of days passed since the last communication (DaysSinceLastBPCommunicationDate)
c. Check against the CrossOverRate value
i. if CrossOverRate is -1, do not apply CrossOverRate check for the Business Purpose
ii. Else, offer is eligible by CrossOverRate only if DaysSinceLastBPCommunicationDate > CrossOverRate
8. In applying Business Purpose Contact Strategy - SaturationRate -
a. if SaturationRatePeriod is -1, do not apply SaturationRate check for the ExecutionMode
b. Else, do below -
c. Identify the count of “sent” communications for the offer for the Business Purpose within last SaturationRatePeriod days


(CountSinceSaturationRatePeriod)
d. Check against the SaturationRateCount value
i. offer is eligible by SaturationRate only if CountSinceSaturationRatePeriod < SaturationRateCount
9. The Business PurposeGlobal Contact Strategy will be applied after Global Contact Strategy step but before offer eligibility step in
decisioning funnel
10. For Parent-child bundle, this functionality should be applied to Parent only. Child treatments should be available to relevant Parent
irrespective of business purpose contact strategy

Design Approach
A. Update Offer proposition decision data structure for all Issues + PM Changes
Create a new SR property and add it to Offer DDS
ApplyBusinessPurposeContactStrategy (Text)
B. Update BusinessPurpose Decision Data with new config + PM changes
Create the below new SR properties and add them to BusinessPurpose DDS
CrossOverRate (Integer)
SaturationRateCount (Integer)
C. Update Strategy - GetIHAtCustomerLevel
Add a “group by” component “Get Latest Batch Selection By Subscription BP“ and connect with existing “set property” component “Save
Batch OutcomeDate By Subscription“. Add group output rows by .BusinessPurpose in the Group By component. Set .OutcomeDate to


977
max .OutcomeDate and select with Highest .OutcomeDate. Tick “include all model results in group”.
Add a “filter” component “Get Latest Batch Selection By Subscription Validation BP“ with a condition of .pyName != "" and connect to the
“group by” component
Add a “set property” component “Reset Batch OutcomeDate By Subscription BP“ and set .OutcomeDate equal to .ValueText and
connect it to the “filter” component
Add a “set property” component “Latest Batch Selection By Subscription BP“ and set “.DaysSinceLastBPCommunicationDate“ equal to
“@AOMUtilities.CalculateNumberOfDaysFromToday(.OutcomeDate)“ and connect to previous “set property” component
Connect to Results
D. New Strategy - ApplyBusinessPurposeContactStrategy
Start with external input
Add “No Contention” filter with logic (.Mandatory="Yes"||.ApplyBusinessPurposeContactStrategy="No"||.ConfidenceScoreRange="High")
and connect it to Results
Import “BusinessPurpose” decision data
Add “Apply Contention” filter with logic
(.Mandatory="No"&&.ApplyBusinessPurposeContactStrategy="Yes"&&.ConfidenceScoreRange!="High") and add 2 further filters as
below
Check Crossover Rate Filter
Add Sub Strategy “GetIHAtCustomerLevel“ and select component “Latest Batch Selection By Subscription BP“
Filter criteria:
@if(BusinessPurpose.CrossOverRate>=0,LatestBatchSelectionBySubscriptionBP.DaysSinceLastBPCommunicationDate>Busine
ssPurpose.CrossOverRate,true)
Connect to “Saturation Rate” Filter
Check Saturation Rate Filter
Add Sub Strategy “GetIHAtCustomerLevel“ and select component “CountSinceSaturationRatePeriod for Batch Selection By
Subscription“
Filter Criteria:


Subscription“
Filter Criteria:
@if(BusinessPurpose.SaturationRateCount>=0,CountSinceSaturationRatePeriodforBatchSelectionBySubscription.CountSinceSa
turationRatePeriod<BusinessPurpose.SaturationRateCount,true)
Connect to Results


978
E. Update strategy - IdentifyEligibleOffers
Call sub-strategy ApplyBusinessPurposeContactStrategy after calling ApplyGlobalContactStrategy for batch


979
NBA FW - Audit Log

HL Requirements

Feed IH reporting table for each decision made from AOM.
This data will be  used for audit log reporting
IH & IH reporting data will be used together for reporting. Attributes already available on IH will not be duplicated to IH reporting.

Feeding IH Reporting (DF changes)
IH Reporting Filter Criteria:
.ErrorMessage = ““
Convert Shape Fields:
It tiId It tiIdAOM-2378 AOM Decisioning Data Audit Log
ProcessSMS InteractionHistoryReporting
ApplyControlGroupsForT2S
ProcessAppPush
DF_OfferResultsExtension
GetNBA
IdentifyBestWebTreatments
IdentifyBestIBCCTreatments
ProcessBestOBTreatmentsAsTarget
(Only for OBCC, AppPush & DirectMail)
WriteIHAndBatchDecisionOutput
(for Control group records for all channel)DF to use to feed IHReporting Dataset to populate


980
.InteractionId = pxInteractionId
.OutcomeTime = pxOutcomeTime
.SubscriptionId = .pySubjectId
Final Destination
InteractionHistoryReporting (Data set)
Feeding IH Reporting (Strategy changes)
Create a New Strategy “SetGenericIHReportingAttributes“:
Start with external input
Add a “set property” component and set the below variables:PopulateOutputPropertiesForTrigger SetGenericIHReportingAttributes
PopulateOutputPropertiesForOutboundCC
SetIHProperties
SetIHForRetail
SetIHForWeb
SetIHPropertiesforIVR
SetIHForInboundCC
PopulateOutputPropertiesForBatch
SetIHPropertiesForAllChannels
Add the new sub-strategy between the sub-strategy component
SetCommonIHPropertiesForAllChannels and the channel specific
filter components
MarketingStrategyForT2SSMS
MarketingStrategyForGetNBASMSStrategy to add SubStrategy to SubStrategy Name
IHRId @Utilities.pxGetNewGUID()
PrepayPostpayType Primary.PrepayPostpayType
ConsumerEnterpriseFlag Primary.ConsumerEnterpriseFlag
MMSMarketingConsentFlag Primary.MMSMarketingConsentFlag
SMSMarketingConsentFlag Primary.SMSMarketingConsentFlag
OBCMarketingConsentFlag Primary.OBCMarketingConsentFlag
LocationDataConsentFlag Primary.LocationDataConsentFlag
TrafficDataConsentFlag Primary.TrafficDataConsentFlag
ProfilingConsentFlag Primary.ProfilingConsentFlagProperty Name Value


981
Connect to Results
Call the “SetGenericIHReportingAttributes“ strategy as a sub-strategy in the list of strategies in the above table listed under “Strategy to
add SubStrategy to“

Update Pega Marketing Strategies to get data from Treatment List
Update strategy ApplyTreatmentDataToTreatments
Update Data Join - “All Treatments With Properties“ to map following properties
 EmailMarketingConsentFlag Primary.CustomerAccount.Contact.EmailMarketingConsentFlag
SocialMediaConsentFlag Primary.CustomerAccount.Contact.SocialMediaConsentFlag
SurveyMarketingConsentFlag Primary.CustomerAccount.Contact.SurveyMarketingConsentFlag
WhitemailMarketingConsentFlag Primary.CustomerAccount.Contact.WhitemailMarketingConsentFlag
DeceasedFlag Primary.CustomerAccount.Contact.DeceasedFlag
DigitalFlag Primary.CustomerAccount.Contact.DigitalFlag
VoiceBiometricFlag Primary.CustomerAccount.Contact.VoiceBiometricFlag
IHRId
PrepayPostpayType
ConsumerEnterpriseFlag
MMSMarketingConsentFlag
SMSMarketingConsentFlag
OBCMarketingConsentFlag
LocationDataConsentFlag
TrafficDataConsentFlag
ProfilingConsentFlag
EmailMarketingConsentFlag
SocialMediaConsentFlag
SurveyMarketingConsentFlag
WhitemailMarketingConsentFlag
DeceasedFlag
DigitalFlag
VoiceBiometricFlagProperty Name


982
AssistedUpgrade- Integrating Logic Recommendation with Commercial
Recommendation
HL Req
As is main flow  is calculating logic recommendation for requested customer
Requirement is to
Calculate Commercial Rec and select single rec for a position (if multiple available)
Calculate Logic recommendation for remaining positions
Use Commercial Rec1 to calculate T4 logic rec.
Once Logic & Com. recommendations are  identified remove duplicated recommendations comparing Tariff/Discount/Services

(Reflects all  changes with 2.2 on Logic Rec. flow)AOM-2446 Recommendations displayed on Agent's screenAOM-2148 Being able for a commercial recomendation to a chort


983
Update Strategy -CalculateUpgradeDeal
Strategy will be updated to isolate Logic & Commercial recommendation logics
Make substragey call to IdentifyCommercialRecommendations
This logic will identify Products for each position,
Filter only tariff recommendations
Populate available RecommendedPosition & PostS15Maf of Rec1 to  single  row as 2 attributes
use group by condition for it
1th Variable to concat    RecommendedPosition > ComRecPostions
2th Variable to populate PostS15Maf of Rec1 -@if(.RecommendedPosition=1,.PostS15MaF, 0) > ComRec1PostS15MaF
Make sub stagey call to IdentifyLogicRecommendation>  with Commercial rec details ( above) & Current Tariff details.
IdentifyLogicRecommendation will calculate only the rec positions which are not available in commercial rec.
All Recommendations > Will contain Commercial Rec + Logic rec
Make sub-strategy call to DedupeSameRecommendations > which will remove duplicated recommendations with same tariff
,discount & addon.
New Strategy- DedupeSameRecommendations

Requirement = If the recommendations are the same (i.e. same tariff, same discount, same add on combination) then only display the
1st recommendation for example, if Rec 1 and Rec 2 have the same tariff and discount, then only display Rec 1 (regardless of the
recommendation being a Logic Recommendation or a Commercial Recommendation. Only Commercial Recommendation have add ons
at the moment. If a Logic Recommendation and a Commercial Recommendation with an Add On have the same Tariff and Discount,
then display both recommendations)
Solution


984

Update Strategy -IdentifyCommercialRecommendations
Updated logic to
Enable external input   (to consume current Tariff detail)
Filter out inactive recommendations (according to start/end date)
Populate product details from PC
Please see attached file for which attributes to populate.
For Discount product, Discount value is calculated with tariff & discount details. Please check excel “Attributes to Populate on
Discount from Tariff + Calculations” how to calculate it. This logic should be handled on Data join we have for Tariff- Discount.
Calculate Post S15Maf   & Calculate Weight of Rec
New Sub strategy , group by records on RecommendationID  and  calculates Post S15Maf & Weight(Calculate S15MAF &
Weight)
Requirement >
It is possible for a customer to be assigned several Commercial Recommendations if the customer belongs to several Cohorts
for which a valid Commercial Recommendation has been assigned. If the Commercial Recommendations conflict (for
example, the customer is assigned to 2 cohorts that both trigger a position 1 Commercial Recommendation, then display the
commercial recommendation with the largest PostS15 MAF . If the post MAF for both Recommendation are the same then,
choose the recommendation with the largest discount. If the MAF and the Discount is the same then choose the
recommendation with the largest total data
Implementation Logic  >
As per requirement picking best recommendation has 3 dimensions
PostS15
Discount Value
Total Data
Logic will calculate a Weight for each Recommendation ID with a formula & select the highest
Weight=(10000*PostS15MAf )+ (-1*1000*ComRecDiscount Value )+(ComRecTotalData/1024)
Pick Best recommendation according to Weight (in case multiple rec for same position)


985
Group by records by Recommendation Position & select the RecommendationID with highest weight
Pick Matching Records >
Join all elligible commercial recommendations with Pick Best recommendation logic output
Return only matching record  (this logic is to select single  record for same Recommendation Position)
Populate PostS15Maf from Pick Best recommendation to final set.

New Strategy-IdentifyLogicRecommendation  & DecomposeTariffandDiscount
This strategy it to encapsulate Logic Recommendation logic which was in CalculateUpgradeDeal.
External input to this stragey has
Current Tariff details
List of commercial rec. position Ids (concatenated in single attribute) (ComRecPostions)
S15Maf of Commercial recommendation Position 1  (if commercial rec has a rec. for position 1) (ComRec1PostS15MaF)
With new requirement T4 logic needs to be executed  :
if   Commercial Rec.  is available for Position 1 (means ComRec1PostS15MaF !=0 ) then  T4  logic should calculate   higher S15
tariff than  Commercial Rec.   available  Position 1
if Commercial Rec.  is not available for Position 1  (means  ComRec1PostS15MaF=0)  then T4 is higher S15 tariff than  Logic Rec.
Position  1
Tariff S115 Maf  Set Property Content
.Rec1TariffS15Maf = if ComRec1PostS15MaF !=0  then ComRec1PostS15MaF
else  if  Rec1.RecommendedTariffCode !=”” then Rec1.PostS15Maf
DecomposeTariffandDiscount strategy  will create different rows for tariff & discounts  and will populate related attributes available in
excel.


986

Update Strategy -GetRecommendedTariff
Update strategy to filter out positions to process
External input  has : List of commercial rec. position Ids (concatenated in single attribute)
After populating Tariff Blocks data, add a filter to drop the positions available  in commercial rec output (external input attribute) > this will
enable to  run the following logic only for remaining positions.
Filter condition will be  =!Contains( Commercial Recommended Positions, RecommendationBlocks. RecommendedPositions)

Update Strategy -PopulateOutputPropertiesForNBAA
With new structure output of the CalculateUpgradeDeal will be changed (RecommendationPosition-ProductType-ProductCode)
The mapping on data join should be updated with final attribute in the output.
RecommendedPosition
RecommendationType  (Commercial/Logic)
RecomendationSubType - (T1/Upsell  etc)
ProductRecommendationType - Tariff/Discount/Service
ProductCode  (code of the product)
ProductName
Duration
CostIncVat – for tariff & service positive value, for discount  negative value (it indicates discount value in GBP calculated in logic)
Minutes
Data
Type
amount
RecommendationSelectionBlock --T1/D3  etc
SegmentStrategy
PostS15MAF
PreS15MAF
Some of those attributes will be used by UI.
Some to enable test team to test.


987
The list will be extended  in future to support reporting requirements.(which will be feed to IH/IH reporting)

References

ComRec_Da
10 Feb 2021, 05:08 AMta.xlsx


988
Release 2.3


989
NBA FW - Interaction History Write Consolidation - TIL

This story requires a business-artefacts ruleset version for changes in output properties strategies

A. New Strategy - SetTILResponse
A1. Save Strategy SetIHAndTILResponse as - SetTILResponse
A2. Remove the components highlighted below -
B. Withdraw strategy - SetIHAndTILResponse

C. Update Strategy - PopulateOutputPropertiesForTrigger
C1. Remove sub-strategy component - SetCommonIHProperties
C2. Remove sub-strategy component - SetGenericIHReportingAttributes

D. Update Strategy - CheckForDefaultOffer
D1. Remove sub-strategy component - SetCommonIHPropertiesAOM-xxxx Log Parent Child relationship to Interaction History


990

E. Withdraw strategy - SetCommonIHProperties

F. Update Strategy - IdentifyBestTreatmentsByTriggers
Replace sub-strategy  SetIHAndTILResponse with sub-strategy - SetTILResponse
Call sub-strategy - SetIHPropertiesForAllChannels before Results component


991
NBA FW - Interaction History Write Consolidation - ProcessEvent

This story requires a business-artefacts ruleset version for changes in output properties strategies

Impact in Other areas

Dependencies
 New Properties for PegaMKT-Data-Event classAOM-xxxx Log Parent Child relationship to Interaction History
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes Update to PegaMKT-Data-Event class  & IH
View Class
DB Yes IH View updateArea Yes/No Comments
PM Tool No
App Yes E2E Testing can only be done after App
changes
DB Yes  Area Yes/No Comments
SubEventType Text
OfferName Text
OfferID Text
ProductCode Text
Priority Double
Rank Integer
Intent TextProperty Name Data Type


992

Add to IH View

A. Update Strategy - PopulateOutputPropertiesForT2S
A1. Add set property component - Set Contact Details before results component with following

B. Update Strategy - ProcessEvent
B1. Remove sub-strategy component - Set IH (SetIHProperties)
B2. Call sub-strategy - SetIHPropertiesForAllChannels after sub-strategy - ApplyRampUpRule
B3. Update Switch component - Final Checks to refer to new - SetIHPropertiesForAllChannels instead of ApplyRampUpRule in all relevant
places
Note - check population of ProductRecommendationType after the changes
C. Withdraw Strategy - SetIHProperties
D. New Strategy - SetIHForRTCampaignSMS
D1. Enable External Input
D2. Create Set Property Component - Set IH Properties and connect from External InputPropensity Double
OfferValue Decimal
IntentScore Double
IntentRelevance Decimal
BusinessPurposeScore Double
OfferWeight Decimal
Mandatory Text
pyPropensity PropensityColumn Name in IH Column Name in View
ContactId @if(.Channel="SMS"&&Primary.SubscriptionType="Mobile
Service",Primary.ServiceAccount.Contact.ContactId,@if(.Channel="
OutboundCC"||Primary.SubscriptionType="Mobile Broadband
Service",Primary.CustomerAccount.Contact.ContactId,""))
ContactDetail @if(.Channel="SMS",@if(Primary.SubscriptionType="Mobile
Service",Primary.ServiceNumber,Primary.CustomerAccount.OldestS
ubscription.ServiceNumber),@if(.Channel="OutboundCC",Primary.C
ustomerAccount.OldestSubscription.ServiceNumber,""))Property Name Value
Property Name Value


993
D3. Connect to results

E. New Strategy - ApplyEventPayloadToTreatments
E1. Enable External Input
E2. Add 2 filter components to External Input -
Treatments Proposition Import - condition - .Type= "Treatments Proposition Import"
Event Payload Import - condition - .Type= "Event Payload Import"
E3. Add Data Join component -  Treatments With All Properties to filter - Treatments Proposition Import and join with filter - Event Payload
Import
Join Condition - pyName = pyName
Enable - Exclude source component results that do not match join condition
Property Mapping - TargetSubChannel “Default“
InControlGroup “N”
ParentOfferName .OfferName
BusinessPurpose .pyIssue
ProductRecommendation ProductCode
ControlGroupLevel Offer
IntentRelevance
@divide(.IntentRelevance,1,2,"half_up")
InAOMControlGroup
"N"
AOMSelectionType
"NBA"
AOMJourneyStep
""
AOMJourneyID
""
CreateTs @getCurrentTimeStamp()
pxOutcomeTime @getCurrentTimeStamp()
TreatmentDynamicVariable1 TreatmentDynamicVariable1
TreatmentDynamicVariable2 TreatmentDynamicVariable2
OfferVariant OfferVariantTarget Source


994
E4. Connect to results

F. Update Strategy - MarketingStrategyForT2SSMS
F1. Add Set Property component - Treatments Proposition Import after Sub-strategy component - Import SMS Treatments
Set Type = "Treatments Proposition Import"
Set ExecutionMode="ProcessEvent"
F2. Update Data Import component - EventPayload and add the following mappings -
F3. Add Set Property component - Event Payload Import after Data Import component - EventPayload
Set Type = "Event Payload Import"
F4. Remove data join component - Data Join
F5. In place of data join component, add sub-strategy component -  ApplyEventPayloadToTreatments
F6. Connect Set Property component - Treatments Proposition Import and Event Payload Import to the sub-strategy
ApplyEventPayloadToTreatments
F7. Connect sub-strategy ApplyEventPayloadToTreatments to set property - set context parametersTreatmentVariant TreatmentVariant
EventType EventType
SubEventType SubEventType
OfferName OfferName
OfferID OfferID
ProductCode ProductCode
pxPriority pxPriority
pxRank pxRank
Intent Intent
pyPropensity pyPropensity
OfferValue OfferValue
IntentScore IntentScore
IntentRelevance IntentRelevance
BusinessPurposeScore BusinessPurposeScore
OfferWeight OfferWeight
Mandatory Mandatory
pxRank Rank
pyPropensity PropensitypxPriority Priority


995
F8. Remove component - Set IH Properties and instead add the following 2 sub strategies-
F9. Call sub-strategy - SetIHForRTCampaignSMS
F10. Call sub-strategy - SetDefaultValuesToIHProperties
F11. Remove sub-strategy SetGenericIHReportingAttributes

G. Update Pega Marketing Real-time SMS Campaign (T2S SMS)
Re-configure the marketing strategy MarketingStrategyForT2SSMS output to new SetDefaultValuesToIHProperties component.
Please note, if this step is not done, the Pega Marketing Real-time SMS Campaign will fail.

H. Update Data Flow - ProcessSMSForT2S
Update following parameters to primary destination activity - Trigger PM Event

I. New Strategy - ApplyControlGroupsForT2S
I1. Save Strategy ApplyControlGroups as ApplyControlGroupsForT2S
I2. Update filter component - Others Treatments
.Channel!="OutboundCC"
I3. Rename Filter component - OBCC Offers for ProcessEvent to OBCC TreatmentsSubEventType SubEventType
OfferName OfferName
OfferID OfferID
ProductCode ProductCode
Priority pxPriority
Rank pxRank
Intent Intent
Propensity pyPropensity
OfferValue OfferValue
IntentScore IntentScore
IntentRelevance IntentRelevance
BusinessPurposeScore BusinessPurposeScore
OfferWeight OfferWeight
Mandatory MandatoryEventType EventType


996
.Channel ="OutboundCC"
I4. Remove Set Property component - Set IH
I5. Add sub-strategy - SetDefaultValuesToIHProperties before Results component
I6. Add sub-strategy - SetGenericIHReportingAttributes before sub-strategy - SetDefaultValuesToIHProperties
I7. Connect Filter component - In Control Group to sub-strategy - SetGenericIHReportingAttributes
I8. Connect sub-strategy - PopulateOutputProperties to sub-strategy - SetGenericIHReportingAttributes

J. Update Strategy - PopulateOutputProperties
J1. Remove set property component - Set IH
J2. Connect filter component - Email Channel to Results
J3. Connect filter component - SMS Channel to Results

K. Update Strategy - PopulateOutputPropertiesForDirectMail
K1. Remove set property component - Set IH

L. Update Strategy - PopulateOutputPropertiesForOutboundCC
L1. Remove set property component - Set IH
L2. Remove sub-strategy component - SetGenericIHReportingAttributes

M. Update Data Flow - ApplyControlGroupsForT2S
Update Decision Strategy configuration to use strategy - ApplyControlGroupsForT2S


997
NBA FW - Interaction History Write Consolidation - IVR & Deflection SMS

This story requires a business-artefacts ruleset version for changes in output properties strategies

A. New Strategy - SetIHForIVR
A1. Save strategy - SetIHPropertiesforIVR as SetIHForIVR
A2. Rename set property component - Set IH Properties to Set IH
A3. Update set property component - Set IH with only the following -
A4. Remove sub-strategy SetGenericIHReportingAttributes

B. Update Strategy - SetIHPropertiesForAllChannels
B1. Add new filter component - IVR for IVR channel and call relevant sub-strategy -SetIHForIVR
B2. Connect sub-strategy  SetIHForIVR to sub-strategy - SetDefaultValuesToIHProperties

C. Update Strategy - IdentifyBestIVRTreatmentsForSubscription
C1. Replace sub-strategy - SetIHForIVRAndSMS with sub-strategy - SetIHPropertiesForAllChannelsAOM-xxxx Log Parent Child relationship to Interaction History
pyDirection “Outbound“
pyOutcome “Selected”
TargetSubChannel @if(.TargetSubChannel!="",.TargetSubChannel,"Default")
ChannelConnectionID ConnectionId.ValueText
ChannelContentID @if(@equalsIgnoreCase(.ResponseType,Action)&&.TreatmentAttrib
utes!="",@AOMUtilities.GetValueFromJSONObject(.TreatmentAttribu
tes,"MSG_ID"),"")
EventType @if(@equalsIgnoreCase(.ResponseType,Action)&&.TreatmentAttrib
utes!="",@AOMUtilities.GetValueFromJSONObject(.TreatmentAttribu
tes,"AppTag"),"")
IVRCallReason @if(@equalsIgnoreCase(.ResponseType,Action)&&.TreatmentAttrib
utes!="",@AOMUtilities.GetValueFromJSONObject(.TreatmentAttribu
tes,"Reason"),"")


utes!="",@AOMUtilities.GetValueFromJSONObject(.TreatmentAttribu
tes,"Reason"),"")
IVRRoutingRecommendation ResponseTypeTreatmentActions.IVRRoutingRecommendationProperty Name Value


998
C2. Update Switch component - Make Decision to refer to new - SetIHPropertiesForAllChannels instead of SetIHForIVRAndSMS in all
relevant places

D. Update Strategy - MarketingStrategyForGetNBASMS
D1. Add Set Property component - Treatments Proposition Import after Sub-strategy component - Import SMS Treatments
Set Type = "Treatments Proposition Import"
Set ExecutionMode="GetNBA"
D2. Update Data Import component - EventPayload and add the following mappings -
D3. Add Set Property component - Event Payload Import after Data Import component - EventPayload
Set Type = "Event Payload Import"
D4. Remove data join component - Data Join
D5. In place of data join component, add sub-strategy component -  ApplyEventPayloadToTreatments
D6. Connect Set Property component - Treatments Proposition Import and Event Payload Import to the sub-strategy
ApplyEventPayloadToTreatments
D7. Remove component - Set IH Properties
D8. Call sub-strategy - SetIHForRTCampaignSMS
D9. Call sub-strategy - SetDefaultValuesToIHProperties
D10. Connect sub-strategy ApplyEventPayloadToTreatments to SetIHForRTCampaignSMS
D11. Remove sub-strategy SetGenericIHReportingAttributes

E. Update Data Flow - GetNBA
Update following parameters to primary destination activity - Trigger PM EventpxRank Rank
pyPropensity PropensitypxPriority Priority
SubEventType SubEventType
OfferName OfferName
OfferID OfferID
ProductCode ProductCode
Priority pxPriority
Rank pxRank
Intent Intent
Propensity pyPropensityEventType EventType


999
F. Update Pega Marketing Real-time SMS Campaign (IVR Deflection SMS)
Re-configure the marketing strategy MarketingStrategyForGetNBASMS output to new SetDefaultValuesToIHProperties component.
Please note, if this step is not done, the Pega Marketing Real-time SMS Campaign will fail.

G. Withdraw strategy - SetIHPropertiesforIVR

I. Withdraw strategy - SetIHForIVRAndSMS

 OfferValue OfferValue
IntentScore IntentScore
IntentRelevance IntentRelevance
BusinessPurposeScore BusinessPurposeScore
OfferWeight OfferWeight
Mandatory Mandatory


1000
NBA FW - FUT Cohort for AOM Treatments
High Level Requirement
A list of customers who are flagged as FUT should only be getting treatments flagged for testing.
If a treatment is not flagged as FUT then the FUT call should not happen and logic not executed.
 Impact in Other areas
DDS Changes
Add “FUTList” property to the attached 8 DDS to enable the capability to activate/deactivate the treatment variant
for FUT testing:
Strategy Changes
New SR Property
.FUTList (Text) - Comma Separated Values of FUT GroupsAOM-2903 Provide ability to define and manage an effective FUT Cohort within AOM for Treatments
PM Tool Yes A new field on T2TV page
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App Yes New DataPage for Customer List in FUT group
DB Yes IH Extension to include “FUTList“ to IH viewArea Yes/No Comments
1 Care TreatmentToTreatmentVariations TreatmentToTreatmentVariations
2 Retain TreatmentToTreatmentVariations TreatmentToTreatmentVariations
3 Retention TreatmentToTreatmentVariations TreatmentToTreatmentVariations
4 Upsell TreatmentToTreatmentVariations TreatmentToTreatmentVariations
5 Service TreatmentToTreatmentVariations TreatmentToTreatmentVariations
6 CrossSell TreatmentToTreatmentVariations TreatmentToTreatmentVariations
7 Renew TreatmentToTreatmentVariations TreatmentToTreatmentVariations
8 TradeIn TreatmentToTreatmentVariations TreatmentToTreatmentVariationsIssue Group Decision Data


1001
New strategy ApplyFUTCheck
Add an external input
Add a filter to check if “FUT is not enabled”, if so, join to results
Filter condition: .FUTList = ““
Add a filter to check if “FUT is enabled, if so:
Filter condition: .FUTList != ““
Add another filter to “Apply FUT Check”
Filter condition: D_GetSeedUserFromTagList[ServiceNumber:Primary.ServiceNumber,SeedUserTags:.FUTList].ServiceNumber!=""
Join to results
Update strategies - IdentifyTreatmentVariations Squad Level strategies
Update the following squad level strategies as below -
Add a new sub-strategy call to “Apply FUT Check” after calling sub-strategy ImportAllTreatmentToTreatmentVariations
Connect to data join Identify Treatment Variants For Treatment
The above changes will be made for -

IdentifyRetentionTreatmentVariations
IdentifyUpsellTreatmentVariations
IdentifyTradeInTreatmentVariations
IdentifyCareTreatmentVariations
IdentifyCrossSellTreatmentVariations
IdentifyRenewTreatmentVariations
IdentifyRetainTreatmentVariationsIdentifyServiceTreatmentVariations


1002
Interaction History Updates
Execution Mode TIL:
Update strategy SetDefaultValuesToIHProperties
In set property “DefaultValuesforIH“ set .FUTList = “N/A”
In set property SetDefaultValuesforIHIfNotPopulated, set .FUTList = @if(.FUTList="",DefaultValuesforIH.FUTList,.FUTList)
Execution Mode ProcessEvent:
New Properties for PegaMKT-Data-Event class
Update Data Flow - ProcessSMSForT2S
Update following parameters to primary destination activity - Trigger PM Event
ApplyEventPayloadToTreatments
In Data Join component, map as below:
Execution Mode GetNBA (IVR and Deflection SMS):
Update Data Flow - GetNBA
Update following parameters to primary destination activity - Trigger PM Event
FUTList TextProperty Name Data Type
FUTList FUTListEventType EventType
FUTList FUTListTarget Source


1003
 FUTList FUTListEventType EventType


1004
Assisted Upgrade-S15 Enhancements

HL Requirement
Currently PreS15 value populated from flexi attribute. (Which is sourced from finance data)
Requirement is to calculate  PreS15 in logic if finance data is not accurate/ not available  & customer type  is SIMO.
Accuracy information is sourced from another flexi attribute.
There is a requirement to Include specific Addon for S15  calculation
PreS15 Calculation (AOM-2909) should use this information
Commercial Recommendation Post15 Calculation should use this information
Logic Recommendation Post15 Calculation > not impacted yet as no addon is recommended yet
Discount Value Prorating > Some discounts on customer or  recommended discounts may not be  available during the whole contract
period. In that case S15 calculation should use prorated discount value. (for both pre  / post S15 maf calculation)

Impact in Other areas

Update Decision Data -NetMafAddonListConfig
 Assisted Upgrades S15 net MAF AOM-2910 Including Specific Add Ons in the
S15 Net MAF
Assisted Upgrades S15 Net MAF AOM-2909 Calculating the Pre S15 Net MAF
when it is not available
Assited Upgrades S15 net MAF AOM-2911 Pro Rating Discount in the
Commercial Rec when
Calculating S15 Net MAF
PM Tool Yes  Change to Addon Group configuration
screen & data pushed back to AOM. Screen
will require read data from PC file.
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments


1005
This decision data will be used to hold Addon list indicating , if add-on is included in  calculation of NetMAf/S15.
Logic will only consider Flag=Y records in calculation.
2 new attribute to add

Impact to PreS15 Calculation

Pre S15 Formula = (Tariff Cost Ex Vat - Prorated Discount Value Ex Vat* )- Entertainment Cost + Addon Cost Ex Vat**
*Active & Inactive one with in latest contract period
**Included in S15 Calculation.
Update Strategy- CalculateTariffDiscount

Current strategy is populating MafTariffDiscount > which is used for Tariff Net Maf Calculation, calculation considers only active
discounts. (there is no change to it)
To Support S15 Discount Calculation:
Strategy should populate a new attribute S15TariffDiscount
This value is sum of  Active+Inactive (during contract period)  discounts
Also S15TariffDiscount calculation should prorate the discount to cover the discounts with shorter period than contract.
 NetMafFlag Text Y/N
S15Flag Text Y/N


1006

Update to Flow:
External Input >  strategy will receive CostExcludingVAT of tariff
Sub stagey call to GetInActiveDiscountList > Will populate list of discount on contract which is inactive but available within latest
contract period.
Set Status Active/Set Status InActive  > Which will indicate discount status  , will use this flag differentiate discounts for
MafTariffDiscount/ S15TariffDiscount calculation.
Set Discount Details  >
Populate discount details from PC (Amount/Type/Duration)
Set Contract Length = Latest Contract end date - Latest Contract StartDate (in month)
Set DiscountDurationForS15= if Discount Duration> Contract Length Then Contract Length  else Discount Duration
There can be cases Discount Duration is less,equal or bigger than contract length. If Discount Duration is bigger than contract
length calculation s15 calculation only the the prorated value with in contract length.
Set Discount Value
Keep logic same to populate Discount
Add logic to set S15Discount calculate prorated discount according to contract length. Discount should be calculated over Tariff
Const Excluding Vat
S15Discount= @if(.Type="Percentage",
(((ExternalInput.CostExcludingVAT*(.Amount/100)))*DiscountDurationForS15 )/Contract Length
,.Amount)
S15Discount = @if(.Type="GBP",
(.Amount*DiscountDurationForS15 )/Contract Length,
.Discount)
Total Discounts
MafTariffDiscount =Sum (Discount if Status =Active)
S15TariffDiscount= Sum(S15Discount)
Update Strategy -CalculateAddonCost
Update Strategy to calculate  different AddonCosts for NetMaf & S15
NetMafAddonListConfig contains  addon list with NetMaf & S15 flag indicating if they are included in calculation or not .


Import NetMafAddonListConfig records matching with GetAddonList.ProductCod (This will Populate NetMafFlag & S15Flag)
AggregatedAddonCost > sum the addon cost for NetMaf calculation & S15 calculation
AddonCost = Sum ( AddonCost) > if NetMafFlag=Y
S15AddonCost = Sum (AddonCostExVat) > if S15Flag=Y


1007
Update Strategy - GetAddonList
Set AddoncostExVat
Update Strategy -GetCurrentTariff
Attributes need for CalculateS15MafandBand :
Update  “Setting Product Fulfilment” -
CostExcludingVAT = CostIncludingVAT/(1+ VATCode)
Update “Tariff Details”
S15TariffDiscount =CalculateTariffDiscount.S15TariffDiscount
CurrentTariffEntertainmentCost =  if CurrentTariffGroup  contains  “Entertainment” expression. (Populate from AOM business
config) else 0
S15AddonCost =CalculateAddonCost.S15AddonCost
Update Strategy-CalculateS15MafandBand
Set PreS15Maf=0
If Flexi Attribute AOM_Custom_Num_207  = Y   (S15_ACCURACY_FLAG-Finance data)
Set PreS15Maf = AOM_Custom_Num_208 Flexi attribute
PreS15MafSource=”Flexi”
If Flexi  Attribute AOM_Custom_Num_207 != Y  and Customer Type =  SIMO
Set PreS15Maf = (CostExcludingVAT-S15TariffDiscount)-CurrentTariffEntertainmentCost+S15AddonCost
PreS15MafSource=”AOM”
If Flexi  Attribute AOM_Custom_Num_207 != Y  and Customer Type !=  SIMO
PreS15Maf=0
Keep the as is logic for Banding


1008
ImpactTo PostS15Calculation
Update Strategy- IdentifyCommercialRecommendation

Prorated Discount Value Calculation
For Discount path add logic to calculate prorated discount value
Set TariffTenure = > Populated from Tarif Details
Set DiscountDurationForS15= if Discount Duration> TariffTenure Then TariffTenure else Discount Duration
Set S15ProratedDiscount= -1*@if(.Type="Percentage",
(((TariffCostExVat*(.Amount/100)))*DiscountDurationForS15 )/TariffTenure
,(.Amount*DiscountDurationForS15 )/TariffTenure))
Flag Addons included with in S15 calculation
For Service path add logic to populated flag if the addon included in S15 calculation.
Add NetMafAddonListConfig decision data to path to populate NetMafFlag , S15Flag
Update S15 Calculation for commercial recommendation :
Use S15ProratedDiscount value instead of CostExVat for discount records. (Which indicates prorated discount value)
Include CostExVat  of addons which S15Flag=Y
 Update Weight Calculation
Use  S15ProratedDiscount value instead of CostExVat for discount records

Impact To S15 Threshold Check
Requirement = If the Customer_Type is Handset and the Pre S15 is not available then the S15 Threshold (if relevant) should be by-passed
i.e. the Pre S15 is not calculated
Update SkipS15Threshold condition to >
if CurrentTariffTenure <> RecommendedTariffTenure or CustomerType <>RecomendednTariffCustomerType or S15ThresholdValue =null
or PreS15Maf=0   true else false
Strategies Impacted = GetRecommendedTariff,T4Logic


1010
Assisted Upgrade-Include Data Usage to Segment Strategy

HL Requirement
The requirement is to be able to assign customer to different segment strategies according to customer data usage
Data Usage Formula is = (Last3MDataUsage/ TotalData)*100
Last3MDataUsage > Calculation logic available  in GetUsage
TotalData > Calculation logic available is available in GetCurrentTariff

Impact in Other areas
Update Decision Data -IntentToSegmentStrategy
Add new attribute
Add new config type  to  AOM Business Config
Data Usage Threshold Value= 60
 Absolute Data Usage Threshold Value  = 60 (in GB)

Update Strategy -SubscriptionInvoiceUsageData
Set AbsoluteDataUsage = sum of data usage in last 3 monthsAOM-2912 Updating the Customer Segment Strategy to add data usage
PM Tool Yes  Update to Segment Strategy configuration

PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
DataUsage Text Low/High


1011
Update Strategy -GetUsage
Populate Last3MAbsoluteDataUsage from SubscriptionInvoiceUsageData (in GB)
Update Strategy -IdentifySegmentStrategyforSubscription
Enable ExternalInput  (TotalData,Team,Channel,Division is available in external input)
Make sub strategy call to GetUsage
Set  .Last3MDataUsage=GetUsage.Last3MDataUsage  (indicates data usage average with in last 3 months in GB)
Set Last3MAbsoluteDataUsage=GetUsage.Last3MAbsoluteDataUsage(indicates total data usage  with in last 3 months in GB)
Set DataUsagePercentage= (Last3MDataUsage/ (ExternalInput.TotalData/1024))*100
Set DataUsage = if DataUsagePercentage>=Data Usage Threshold Value  or Last3MAbsoluteDataUsage >=Absolute Data Usage
Threshold Value    “High”  else  “Low”
Filter IntentToSegmentStrategy with DataUsage Value
Remove GetTeamforAgentDivision call , use data in external input to filter Team & Channel on IntentToSegmentStrategy decision data.
Populate Segment Strategy , Range ,Data usage to data coming from external Input.

Update Strategy- CalculateUpgradeDeal
Change the position of IdentifySegmentStrategyforSubscription call
Strategy need total data ,team and  channel info :
Make call to IdentifySegmentStrategyforSubscription between  InputForRecCal & IsTeamValid


1012
Add URL validation to Event Parameters
This story requires  AOMFW-Artifacts ruleset version for changes in IdentifyTreatmentVariantByBDCModel strategy.
Update Strategy-IdentifyTreatmentVariantByBDCModel
Update strategy to validate URL validation.
Add a filter component after External Input Component.
           1.Name it as URL validation to Event Parameters.
            2.Apply the below Validation in the filter.

if(@contains(@toUpperCase(.TreatmentVariant),"TOBI"),PopulateEventParameters.TobiURL!="",if(@contains(@toUpperCase(.Tre
atmentVariant),"WEBCHAT"),PopulateEventParameters.WebURL!="",if(@contains(@toUpperCase(.TreatmentVariant),"ONLINE"),P
opulateEventParameters.OnlineURL!="",false)))
Add the URL validation to Event Parameters Filter to BDCDeflectionCheck, DefaultRoutingOptionCheck Filters.
 AOM-2867 Add URL validation to Event Parameters


1013
Assisted Upgrade- Offer Hierarchy Changes

HL Requirement
Current Upgrade proposition will be aligned with business requirements.
Offers will reflect ToPathways,
Offer variants will reflect Cre types
Treatment variants
For Tariffs ,will reflect the tariff upgrade type (pick & mix tariff blocks)
For Discounts, will reflect the discount type
Treatment variants will be driven by output of Calculate upgrade dealAOM-2923 Managed Pro Hierarchy with appropriate Treatment Name and
Treatment Variant
AOM-2991 Update the Pathway Model Logic AOM-2922 Managed Pro Hierarchy with appropriate offer Name and Offer
Variant
PM Tool Yes  Extend Offer data to include new attributes
(only renew )
DefaultContractTenure
TariffSegment
TariffType
ProductRecommendationType
ToPathWay
Setting -1 as default value for
MaxChildTreatment
PM Tool KT Documentation No  ?
Knowledge Transfer No
App Yes Extend test harness to add PrimaryContext &
SecondaryContext defaulted to Upgrade &
NBA  for now.
UI should trigger with this default values a
well
DB No  Area Yes/No Comments


1014
Propositions  and eligibility will be configured according agreed offer catalog.
Eligible offers (Pathways) will drive the upgrade logic
Deal content / calculation will be part of upgrade logic
Proposition Bundling will serve presenting deal & deal details as different line items.

1. Funnel Updates
1.1 Intent Logic Change
Current intent logic serves only stated intents in case of a realtime context (event) , for upgrade flow. Logic needs both stated & inferred
intents for different steps of  decisoninng.
Update to EvaluateCustomerIntents  strategy>
Set IntentType=Stated > for Realtime Event case
Set  IntentType=Inferred> for other path
Return both Intents


1015
IdentifyOffersforIntent
If any Intent with IntentType=Stated  > consider that  intent to identify Offers
else consider IntentType=Inferred list  to identify Offers
GetContextDataforIntent
Extend logic to include NBAA

1.2 Offer  & Offer Variant Eligibility  Logic Changes
Each pathway will be presented as offer in proposition data. Pathway eligibility will be implemented as  offer variant eligibility, which will
source data from CRE & contract data.
1.2.1 Offer Data Extention
Extend Renew Offer data include below attributes
DefaultContractTenure
TariffSegment
TariffType
ProductRecommendationType
ToPathway
 Which will be used by logic rec while filtering tariffs & combining assisted deal with proposition data.
 Make sure they are populated until the treatment data.(Strategies to update
ApplyOfferDataToOfferToOfferVariations,ApplyOfferToOfferVariationsDataToOfferVariations,ApplyOfferVariationsDataToTreatments)
1.3 Bundling & Arbitration Logic Changes
1.3.1 New Strategy - IdentifyBestTreatmentForNBAA
This strategy will be used for NBAA execution mode to select best treatment according to the configuration “Offer Decision Mix”
configuration. (outcome of AOM-2994)
Enable external input
Import “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “NBAA” && .DecisionMixContext = “Default”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 1 filter for InboundCC channel
.Channel = “InboundCC”
Connect InboundCC channel filter to ApplyBundling substrategy call.
Connect to results


Connect InboundCC channel filter to ApplyBundling substrategy call.
Connect to results

IdentifyBestTreatmentForNBAA will be a sub-strategy with in  IdentifyBestTreatmentforSubscription, IdentifyBestTreatmentforSubscription
will be updated with in the scope of NBA arbitration Jira  (AOM-2994)


1016
1.3.2 New Strategy - ApplyBundling
This strategy will be used to create bundle for Inbound CC propositions ( To bundle Tariff & Service/Discount/HandsetOffers) >  similar
strategy to  IdentifyBestEmailTreatmentForBatch
Logic select  max number of  parent treatments configured in OfferDecisionMix  > MaxOffers . (data to  populated with in
IdentifyBestTreatmentForNBAA to MaxOffers)
Logic populates ParentOfferName,ParentChild  according to ParentChildTreatments decision data.
Logic  to populate ToPathway attribute from Parent offers to  child of same bundle.
Current logic is limiting count of child offers according to MaxChildren configured  on treatment data.  Logic need to be extended for
Inbound CC channel, because MaxChildren limit is not applicable InboundCC.
if MaxChildren =-1 do not filter any else .Rank <= .MaxChildren
1.4 Introducing CalculateDeal to InboundCC decisioning funnel
Currently Assisted logic is triggered at PopulateOutputPropertiesForIBCC step.
With new approach it will be triggered before treatment variation identification & will drive the treatment variation identification.
1.4.1 Update Strategy -  IdentifyBestInboundCCTreatmentsForSubscription
Move IdentifyTreatmentSubChannel call after IdentifyEligibleIBCCTreatments
Replace  IdentifyBestIBCCTreatments with IdentifyBestTreatmentforSubscription
 Add Sub Strategy call to CalculateDeal after IdentifyBestTreatmentforSubscription
1.4.2 New Strategy -CalculateDeal
For Execution Mode = NBAA
Make substrategy call to CalculateUpgradeDeal
Filter Parent Treatments  as input to CalculateUpgradeDeal
Join treatment data with  CalculateUpgradeDeal output ( on ProductRecommendationType,ToPathway)


Join treatment data with  CalculateUpgradeDeal output ( on ProductRecommendationType,ToPathway)
Populate all the attributes needed for UI , reporting  & treatment variation identification to treatment data.
1.4.3 Update Strategy-PopulateOutputPropertiesForIBCC
Remove logic to trigger CalculateUpgradeDeal, as it is move to CalculateDeal step.

1.5  Calculate Upgrade Deal Logic Changes
Logic Recommendation
Logic Recommendation tariff selection logic will be aligned with eligible treatments . (which shows ToUpgradePathways) . Logic will
make only  recommendation with eligible pathways.
Arbitrating between handset/simo  pathways will be part of upgrade deal logic using Pathway BDC model. (in future channel input
will also be considered)
Selecting tenure > for now logic recommendation will not make 30 days
Commercial Recommendation > should only consider eligible Pathways & do the recommendation according to.  > Not with in the scope
of 2.3  for now


1017

1.5.1 Update Strategy -CalculateUpgradeDeal
Enable External Input > logic to receive eligible ToPathway(s) from treatment data.
Make Sub strategy call to PickBestPathWay
Make Sub strategy call to PickBestTenure
Set below fields from results of PickBestTenure & provide as input to IdentifyLogicRecommendation
RecommendedTenure= PickBestTenure.RecommendedTenure
SIMOnly= if PickBestTenure.TariffType =”SIMOnly”  “Y” else “N”
SegmentofTariff= PickBestTenure.TariffSegment
Channel=  ExternalInput.Channel
ToPathway=PickBestTenure.ToPathway
1.5.2 New Strategy -PickBestPathWay
This strategy will filter eligible pathways according to Pathway model output. (it will be extended in future to consider channel input as
well)
Enable External Input
Import Model ID =9, filter valid records
Filter the Eligible Pathways (External Input)
With Pathway BDC model output
Select which  has the highest propensity  with in Pathway BDC model (P_HS  indicates propensity for Handset, P_SIMO
indicates propensity for SIMO )
If propensities are same select ToHandset
If filter on model propensity is not giving any record  or no model data > Return ToHandset pathway if available in the input else
return ToSimo,ToSimo30 pathways.
1.5.3 New Strategy -PickBestTenure
This strategy will filter eligible pathways according to tenure . (it will be extended in future to consider channel input as well, it will
override tenure  also will  enable selecting ToSIMO30 )
Select Top 1 record with the highest DefaultTenure


1018
Set RecommendedTenure  =max DefaultTenure  (comes from offer-treatment data)
1.6 Treatment Variant Logic Changes
Treatment variant Logic should change to drive variant eligibly with  RecommendationSubType provided in sr attribute.
(RecommendationSubType  provided by CalculateUpgradeDeal > CalculateDeal)
Pick best treatment variant logic should not run for each treatment instead should run for each treatment & DealID  (as treatment are
can be duplicated for different deals)
Current treatment variant logic is not supporting having same treatment multiple times , logic should be extended to cover it.
1.6.1 Update Strategy - IdentifyRenewTreatmentVariations
Logic should carry  RecommendationSubType from external input till  to RenewTreatmentVariationsEligibility proposition filter.  (through
data joins & group by)
Eligible Treatment Variants should carried over to treatment data with same keys.
1.6.2 Update Strategy-IdentifyBestTreatmentVariantForTreatment
Current logic is selecting single treatment variant according to Rank configured on “Treatment” data fro a treatment.
Logic should change to do this selection within a bundle
Group by & “For Each” iterations should be updated  to run for each Treatment -DealID  combination.
2. Offer Catalog Changes
Proposition data & rule definitions will be configured according to offer catalog for upgrade offers.
https://drive.google.com/drive/folders/1CSVD-455A2I1TzNfe4lY4cZWsF9chkG_ -

Connect your Google account


1019
NBA FW - Resolve Arbitration Steps in NBA Funnel
Clarified Requirements
Currently, the NBA funnel picks the top treatments per Channel per customer based on Channel Decision Mix (specifies the number of
non mandatory communication per channel)for Batch Execution Mode. There is no such functionality for Mandatory communications
where all mandatory communications are passed through. For other outbound modes, the top most treatments per Channel per
customer are selected.
The selection of top x is based on the arbitration functionality which calculates a priority score based on Offer level coefficients.
As the arbitration score is calculated at Offer level and because treatment is simply an offer presented through a channel then the same
top priority offer should be presented through all channels if the relevant treatments are available. However, as all offers are not setup
for all possible channels and the selection is made for each channel, it is possible that different top offers will be selected at channel
level based on availability of the treatments.
There is a secondary issue whereby a Treatment could be dropped from channel even after being selected as top treatment if there is
no eligible treatment variant. This is because treatment variant is currently picked after arbitration step of the funnel. If the NBA is
dropped because it has no treatment variant there is no way to pick the second best action.
To resolve the issues above, there are 2 new requirements for arbitration -
Select top x offer(s) first and then select the relevant treatments for the selected offer. This will ensure the same offer is sent via all
available channels while other offers are dropped
The above selection is done after identifying eligible treatment variations so that the scenario of selected top treatments not having
eligible treatment variants can be avoided
Use “Offer Decision Mix” instead of current “Channel Decision Mix” to limit the number of communications by channels and execution
mode


mode
The structure for the “Offer Decision Mix” will be as below:
**MaxOffers can have values as -1, 0 or any positive integer
-1 indicates there is no limit by priority
0 or positive numbers indicates indicates the limit of offers
*GetNBA Execution Mode for IVR channel has 2 separate contexts - TradeIn and Standard IVR which requires different MaxOffers
configuration and hence DecisionModeContext has been added as new dimension for this configuration. This can further to use such AOM-2994 Resolve arbitration steps in NBA Funnel so that channel output is consistent
1 Batch Default 1
2 TIL Default 1
3 ProcessEvent Default 1
4 GRPL Default 6
5 GetNBA Default 1
6 GetNBA TradeIn** 5
7 NBAA Default 2ExecutionMode DecisionMixContext MaxOffers*


1020
separation for all execution modes.
This new functionality should be applied for all Execution Modes both Inbound and Outbound
Design Approach
DDS Changes:
Create a new DDS “Offer Decision Mix” as per the structure in “Clarified Requirements”
pyLabel - Unique Generated ID same as pyName
pyName - Unique Generated ID for ExecutionMode & DecisionMixContext
pyIssue - NonPropositions
pyGroup - OfferDecisionMix
ExecutionMode - Text
DecisionMixContext - Text
MaxOffers - Integer
New SR Properties:
Create 2 new SR Properties:
DecisionMixContext (Text)
MaxOffers (Integer)
**MaxOffers can have values as -1, 0 or any positive integer
Strategy Changes:
Update strategy IdentifyBestTreatmentforSubscription
Enable external input
Add a sub-strategy call to “Calculate Priority”
Add 6 filters, one per Execution mode
.ExecutionMode = “TIL”
.ExecutionMode = “GRPL”
.ExecutionMode = “NBAA”
.ExecutionMode = “GetNBA”
.ExecutionMode = “ProcessEvent”
.ExecutionMode = “Batch”
Connect the filters to respective sub-strategy call for the execution mode
IdentifyBestTreatmentForTIL
IdentifyBestTreatmentForGRPL
IdentifyBestTreatmentForNBAA
IdentifyBestTreatmentForGetNBA
IdentifyBestTreatmentForProcessEvent
IdentifyBestTreatmentForBatch
Connect to results


1021

Update strategy IdentifyBestTreatmentForBatch
Remove filter for “Batch Mode” after external input
Remove call to “Calculate Priority” strategy after the filter
Connect external input to “Email Channel” and “Non Email Channel” filters
Replace “Channel Decision Mix” with “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “Batch” && .DecisionMixContext = “Default”
Add “Non Mandatory Comms” Set property (remove the data join), do the following:
Set: .MaxOffers = OfferDecisionMix.MaxOffers
In “Non Mandatory Communications” filter, update the condition:
Filter Condition: @if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))


1022
Update strategy IdentifyBestEmailTreatmentForBatch
Replace “Channel Decision Mix” with “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “Batch” && .DecisionMixContext = “Default”
Add “Non Mandatory Comms” Set property (remove the data join), do the following:
Set: .MaxOffers = OfferDecisionMix.MaxOffers
In “Non Mandatory Communications” filter, update the condition:
Filter Condition: @if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Create strategy IdentifyBestTreatmentForTIL
Enable external input
Import “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “TIL” && .DecisionMixContext = “Default”


1023
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 3 filters, 1 per channel for SMS, AppPush and OutboundCC channels
.Channel = “SMS”
.Channel = “AppPush”
.Channel = “OutboundCC”
Connect SMS channel filter to “Deprioritise NoOffer“ set property
Set: .pxPriority = @if(.OfferName="NoOffer",0,.pxPriority)
Connect “Deprioritise NoOffer” set property to “Prioritize SMS” (by .pxPriority - Highest, All)
Connect AppPush channel filter to “Prioritize AppPush” (by .pxPriority - Highest, All)
Connect OutboundCC channel filter to “Prioritize OutboundCC” (by .pxPriority - Highest, All)
Add a “Max Offers” filter and join to “Prioritize SMS”, “Prioritize AppPush“ and “Prioritize OutboundCC“ components with filter condition:
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
Create strategy IdentifyBestTreatmentForGetNBA
Enable external input
Add 2 filter to split between IVR and Trade In offers:
IVR Channel: .Channel=”IVR”
TradeIn Channels: .Channel!=”IVR”
For TradeIn Channels path, do the following:
Import “Offer Decision Mix” decision data as “Offer Decision Mix”
Import condition: .ExecutionMode = “GetNBA” && .DecisionMixContext = “TradeIn”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers


Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 3 filters, 1 per channel for Retail, Web and InboundCC channels
.Channel = “Retail”
.Channel = “Web”
.Channel = “InboundCC”
Connect Retail channel filter to “Prioritize Retail” (by .pxPriority - Highest, All)
Connect Web channel filter to “Prioritize Web” (by .pxPriority - Highest, All)
Connect InboundCC channel filter to “Prioritize InboundCC” (by .pxPriority - Highest, All)
Add a “Max Offers” filter and join to “Prioritize Retail”, “Prioritize Web“ and “Prioritize InboundCC“ components with filter condition:


1024
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
For IVR Channel path, do the following:
Import “Offer Decision Mix” decision data as “Offer Decision Mix IVR”
Import condition: .ExecutionMode = “GetNBA” && .DecisionMixContext = “Default”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 2 filters for IVR and SMS channels
.Channel = “IVR”
.Channel = “SMS”
Connect IVR channel filter to “Prioritize IVR” (by .pxPriority - Highest, All)
Connect SMS channel filter to “Deprioritise NoOffer“ set property
Set: .pxPriority = @if(.OfferName="NoOffer",0,.pxPriority)
Connect “Deprioritise NoOffer” set property to “Prioritize SMS” (by .pxPriority - Highest, All)
Add a “Max Offers” filter and join to “Prioritize IVR” with filter condition:
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
Create strategy IdentifyBestTreatmentForProcessEvent
Enable external input
Import “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “ProcessEvent” && .DecisionMixContext = “Default”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 2 filters, 1 per channel for SMS and OutboundCC channels
.Channel = “SMS”
.Channel = “OutboundCC”
Connect SMS channel filter to “Deprioritise NoOffer“ set property


1025
Set: .pxPriority = @if(.OfferName="NoOffer",0,.pxPriority)
Connect “Deprioritise NoOffer” set property to “Prioritize SMS” (by .pxPriority - Highest, All)
Connect OutboundCC channel filter to “Prioritize OutboundCC” (by .pxPriority - Highest, All)
Add a “Max Offers” filter and join to “Prioritize SMS”, “Prioritize AppPush“ and “Prioritize OutboundCC“ components with filter condition:
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
Create strategy IdentifyBestTreatmentForGRPL
Enable external input
Import “Offer Decision Mix” decision data
Import condition: .ExecutionMode = “GRPL” && .DecisionMixContext = “Default”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = OfferDecisionMix.MaxOffers
Create 1 filter for Web channel
.Channel = “Web”
Connect Web channel filter to “Prioritize Web” (by .pxPriority - Highest, All)
Add a “Max Offers” filter and join to “Prioritize SMS”, “Prioritize AppPush“ and “Prioritize OutboundCC“ components with filter condition:
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
Create strategy IdentifyBestTreatmentVariationsForSubscription
Enable external input
Add 2 filters to check for “Parent” and “Child” offers
.ParentChild=”Parent”
.ParentChild=”Child”
Connect “Child” filter to “Get Child for Eligible Parent” data join
Join with “Parents Output” data join
Connect to Results
Connect “Parent” filter to “Select Parent Offer” group by


1026
Group By: .OfferName, Select: First
Add “Select Top Offer” prioritize component (by .pxPriority - Highest, All)
Add “Max Offer Limit“ filter: .pxRank<= .MaxOffers
Add “Parents Output” data join to join “Parents” with “Max Offer Limit” on:
.OfferName = .OfferName
Connect to Results
Update strategy IdentifyTreatmentVariations
Add sub-strategy call to IdentifyBestTreatmentVariationsForSubscription between “IdentifyBestTreatmentVariantForTreatment“ sub-
strategy call and Results component.
Strategy changes to call the updated “IdentifyBestTreatmentforSubscription“ in all execution modes:
Batch - in IdentifyBestOBTreatmentsByBatch strategy, update to call IdentifyBestTreatmentforSubscription instead of
IdentifyBestTreatmentForBatch
GRPL - in IdentifyBestWebTreatmentsForSubscription call IdentifyBestTreatmentforSubscription between IdentifyTreatmentSubChannel
and IdentifyTreatmentVariations
NBAA - in IdentifyBestInboundCCTreatmentsForSubscription call IdentifyBestTreatmentforSubscription instead of
IdentifyBestIBCCTreatments


1027
ProcessEvent - no update needed
TIL - no update needed
GetNBA - IVR - no update needed
GetNBA - TradeIn
Retail - in IdentifyBestRetailTreatmentsForSubscription call IdentifyBestTreatmentforSubscription between
IdentifyTreatmentSubChannel and IdentifyTreatmentVariations
Web - taken care of by GRPL
InboundCC - taken care of by NBAA
Withdraw the below strategies as they are redundant now:
IdentifyBestTreatment
IdentifyBestIBCCTreatments


1028
Assisted Upgrade-Multi CTN Cohort Variable

HL Requirement
Currently we have  Multiple CTN  control as eligibility criteria on cohorts. It is sourced from
Primary.CustomerAccount.PAYMSubscriptionCount
Integrating AOM with GCPL, we should use information coming from GCPL

Update Strategy -GetSubscriptionDetails
Access to GetLiveAccountInformation data page with owner account ID
 Populate NumberofPostPayMobileServices
Set  BelongsToMultipleCTNsAccount from data page if data available else from spine data ( as is).

 AOM-2734 Update the Multi CTN Cohort Variable to use GCPL


1029
Assisted Upgrade-Consume the New Handset BDC Model

HL Requirement
Handset Model will be consumed by a new file
This data will be feed to an Casandra Dataset by the fw App team developed.
With in scope of this Jira , Logic team will include this dataset to data preparation step.
 Data will be used in logic when we work on logic recommendation.
Update DF -GetRecommendationFromBDC
Change class to Subscription (withdrawn old one) (Use business artefacts ruleset)
Include new Dataset to DF & include composes with in this DF

Update DF -PrepareRealtimeData
Remove compose with GetRecommendationFromBDC
Add GetRecommendationFromBDC as destination
 AOM-2956 Consume the New Handset BDC Model


1031
NBA FW - IVR Repeated Intent
High Level Requirement
Populate app-tag information instead of intent in PreNLCS output.
 Impact in Other areas
IVR Offer Catalog V5 - Matt to send
Optimization Changes
Add a new rule for “repeated intent” eligibility as per “All rules” logic
Add a new “Offer Variant” for repeated intent under Service-Help offer
The new offer variant will be ranked higher than Default Offer Variant
Tidy up T2TV attributes to remove rows that are not needed
Capability Changes
Update ServiceRules1 strategy
Add data import for IH List (Primary.InteractionHistoryList)
Add filter limit PreNLCS records with an AppTag
Filter Condition: .EventType!="" && .OutcomeDate in Last24Hrs
Add prioritize to get the top record (by .OutcomeDate, Highest, Top 1)AOM-2846 Repeated Intent - IVR
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments


1032
Update ServiceOfferVariationsEligibility prop filter
Update PopulateOutputPropertiesForIVRAndSMS strategy
Add a call to “ServiceRules1” sub-strategy
Component: “SAX003 Repeated Intent“ (Rule Id TBC from Gayatri & Ritu)
Add “PopulateDataTokens“ set property between “PreNLCSCheck“ filter and “SetAppTagDynamicAttributes“ set property and set the
below values:
.ApptagNumber =
@if(Primary.Context(PrimaryContext)!="",D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:.ValueText,ConfigName:Apptag
Number].ConfigValue,"")
.DefaultDeflectionType =
@if(Primary.Context(PrimaryContext)!="",D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:.ValueText,ConfigName:Default
DeflectionType].ConfigValue,"")
.MessageID = "1"+.ApptagNumber+.IVRTreatmentCode - Check with Matt if needed
.AppTag = @if(Primary.Context(PrimaryContext)="",ServiceRules1.EventType,Primary.Context(PrimaryContext))
.DeflectionType = .DefaultDeflectionType - Check with Matt if needed


1033
NBA FW - Interaction History Write Consolidation - ProcessDiallerOutcome
Impact in Other areas

Dependencies
App Changes:
New Property for VFUK-FW-AOMFW-Data-DiallerOutcomes class
Create the Property "InteractionHistoryList"(Class:VFUK-FW-AOMFW-Data-InteractionHistory) of type Page List in the class "VFUK-FW-
AOMFW-Data-DiallerOutcomes".
Logic Changes:
A.Update DataFlow-ProcessDiallerOutcomes
To enrich the dataflow with InteractionHistory data, after the Get Subscription Data Compose, Add the new compose shape and name it
as Get InteractionHistory Data.
In the Dataset, give the class name as "VFUK-FW-AOMFW-Data-InteractionHistory" and the Data set as "InteractionHistory"
In the compose condition, Provide the property name, .InteractionHistoryList
and in the compose conditions, add SubscriptionID=.CustomerID
 PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes Update to VFUK-FW-AOMFW-Data-
DiallerOutcomes class
DB No  Area Yes/No Comments
PM Tool No
App Yes E2E Testing can only be done after App
changes
DB No  Area Yes/No Comments


1034
B.Update Strategy-ProcessDiallerOutcomes
Import the InteractionHistory data by using Data Import Component with Primary.InteractionHistoryList. and in the Properties mapping,
map TreatmentName=TreatmentName, Channel=TargetChannel.
Add the new filter after the DataImport Component and Join DataImport and the filter.
Name the filter as IH with Selected Outcome. Add the condition in the filter with Outcome=Selected and Channel=OutboundCC and Join
to the next filter.
Update the filter with the conditon "SetIH.PropositionName=.TreatmentName" and name the filter as "Match the PropositionName from
Context".
Add the Group By Component after the filter and Join the Group By Component and the filter.
Update the Group By Component with the condition, group records with InteractionId  and pxOutcome. And in Aggregrators, map the
Max of pxOutcometime to pxOutcometime as per the below image and name the group by as "Latest Interaction"
In the Set IH component,set .ValueDecimail = .pxInteractionID
Add the new DataJoin after set IH and name it as SetAdditionalIHproperties and Join with Last Interaction.
Uncheck the Exclude Source Compose results that do no match Join Condition.
Update the DataJoin with the condition, ValueDecimal=pxInteractionID.
In the properties mapping,
InMarketingTest InMarketingTest
ParentOfferName ParentOfferName
Mandatory Mandatory
ExecutionMode ExecutionMode
pxRank Rank
pxPriority Priority
Intent Intent
SubEventType SubEventTypePropertyName Value


1035
Join the data join SetAdditionalIHproperties to the filter OutcomeValidation.
 ProductRecommendationType ProductRecommendationType
RampUpValue RampUpValue
RampUpFlag RampUpFlag
TILResponse TILResponse
AccountID AccountID
ContactId ContactId
ParentChild ParentChild
InControlGroup InControlGroup
ProductRecommendation ProductRecommendation
NTID NTID
EventType EventType
ClickedURL ClickedURL
ProspectFlag ProspectFlag
AgentUsername AgentUsername
pyPropensity Propensity
FUTList FUTList
DealID DealID


1036
Assisted Upgrade- Reporting Requirements - (IH Write for InboundCC)
HL Requirement
Requirement is to store extensive list of attributes within IH & IH Reporting for reporting/ operational controls purpose.
 Attributes specific to assisted logic  will be  calculated within Assisted logic sub strategies.
Some of the attributes already available , some not  calculated/populated> which require  change  in related strategies.
Attached file contains details of attributes & how they are populated / should be populated.
Also Assisted flow will be aligned with new  IH set operation pattern.

Impact in Other areas
Populate Reporting Properties :
See the attached file “New” rows  requires related changes in assisted strategies.
Those updates will make all attributes needed for reporting populated in the output of CalculateUpgradeDeal.
Those attributes will be mapped back to Treatment data (coming from NBA funnel)  with in CalculateDeal strategy which will be
introduced with  Offer catalog Change scope.
With this way it will be  carried until the end of the funnel and feed to IH/IH reportingAOM-2477 Being able to report on the attributes used to generate a
Recommendation
AOM-2085 Report on the Pathway Model
AOM-2084 Report in the Pre and Post MAF Calculation
AOM-2376 Report on the Add on if included in the Net MAF Calculation
AOM-2924 IH UpdateAOM-2760 S15 Reporting
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes IH Reporting Extension & Class Update
Update on test harness to Include
AgentUserName in context  & In UI as well.
DB Yes IH & IH Reporting Extension
Include DealID to IH viewArea Yes/No Comments


1037
Pushing Data to  IH & IH reporting :
Update DF -IdentifyBestIBCCTreatments
Add a new destination for InteractionHistoryReporting .
Update Strategy- IdentifyBestInboundCCTreatmentsForSubscription
Replace SetIHForInboundCC with SetIHPropertiesForAllChannels
Update Strategy- SetIHPropertiesForAllChannels
Add Inbound CC Path & make call to SetIHForInboundCC
Update Strategy -SetIHForInboundCC
Remove exiting logic ,
Add SetChannelSpesificIH Attributes set component.
It is to set/override attributes which are not common, specific to channel.

Add Set Channel Specific IH Rep Attributes set component > It is to set any attribute that  needed to be stored in IHReporting.
For assisted corresponding logics mostly uses same SR attributes name with IHReporting attributes. So not need to do mapping for
all. (they will be automatically populated)
There are  exceptions need mapping
assistedReporti …
24 Feb 2021, 08:42 AMeq.xlsx
pyDirection “Inbound“
pyOutcome “Selected”
TargetSubChannel “Default“
SubEventType
Primary.Context(PrimaryContext)
EventType
Primary.Context(SecondaryContext)Property Name Value
PreTariffMAF .TariffMAF
UniversalTariffModelRecRank .RecRank
AgentToolkit .Team
AgentDivision .DivisionProperty Name Value


1038
Update  Strategy - SetDefaultValuesToIHProperties
Update strategy to include a new IH attribute

 SkipS15ThresholdInd if (SkipS15Threshold=true ,”Y”,””)
AddonNetMafIncFlag if(NetMafFlag=true,”Y”,””)
CustomerHasDiscountInd if(CustomerHasDiscount=true,”Y”,””)
ProductRecommendati
onType“N/A”DealID “N/A”


1039
Release 2.4


1040
NBA FW - MVA - Add new channel and business purpose to NBA Funnel
High Level Requirement
Introduce new “App” channel and “Discover” sub-channel for MVA (My Vodafone App)
Introduce new “Engagement” business purpose for MVA offers
Make logic changes in line with GetNBA API request and response
Make logic changes in line with SetNBA API
 Impact in Other areas
PM Tool Impact
New Chanel - App
Sub Channel config for Discover
New Business Purpose - Engagement
My Vodafone App (MVA) Offer Catalogue
Link:
https://drive.google.com/drive/u/2/folders/1W03FvjfbVwY1wFx-J6j7DJKS-DwOACKO -
Notes:
Only 2 emergency offers built for R2.04
No eligibility applied to offers except Consumer Postpay and Prepay
New channel App and sub channel Discover to be added to NBA funnelUSER STORY 331335 Configure AOM Digital MVA Offer Catalogue
USER STORY 323323 Introduce emergency treatments
USER STORY 330815 Invoke GetNBA AOM API
USER STORY 327166 Submit NBA responsesUSER STORY 329652 NBA treatment configuration
PM Tool Yes
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB Yes  Area Yes/No Comments
Connect your Google account


1041
New business purpose Engagement to be added to NBA funnel
Adding a new Business Purpose (Engagement) to NBA funnel
Create below new proposition decision data for “Engagement” issue:
Update the below strategies to include new “Engagement” Business Purpose:
ImportAllOffersAppPush Engagement AppPush
DirectMail Engagement DirectMail
Email Engagement Email
InboundCC Engagement InboundCC
IVR Engagement IVR
OutboundCC Engagement OutboundCC
Retail Engagement Retail
SMS Engagement SMS
Web Engagement Web
App Engagement App
Offers Engagement Offers
OfferToOfferVariations Engagement OfferToOfferVariations
OfferVariations Engagement OfferVariations
T2TVActions Engagement T2TVActions
T2TVAttributes Engagement T2TVAttributes
T2TVCustomerInteractions Engagement T2TVCustomerInteractions
TreatementVariations Engagement TreatementVariations
TreatmentToTreatmentVariaions Engagement TreatmentToTreatmentVariaionsDecision Data Business Issue Group


1042
ImportAllOfferToOfferVariations
ImportAllOfferVariations


1043
ImportAllTreatmentVariations
ImportAllTreatmentToTreatmentVariations


1044
Create a new strategy ApplyEngagementOfferVariationsEligibility
Clone strategy ApplyTradeInOfferVariationsEligibility for Engagement business purpose
Update input sub-strategy for OfferToOfferVariations to be Engagement
Update input sub-strategy for OfferVariations to be Engagement
Create a new Proposition Filter “EngagementOfferVariationsEligibility“ with Default Variant
Update IdentifyOfferVariantsForEligibleOffers to include new “Engagement” Business Purpose:
Add a “Engagement” filter with @equalsIgnoreCase(.BusinessPurpose,Engagement) condition
Add a sub-strategy call to “ApplyEngagementOfferVariationsEligibility” strategy
Connect to set property “Set VariantRank For Each Offer Variants“


1045
Create a new strategy IdentifyEngagementTreatmentVariations
Clone strategy IdentifyTradeInTreatmentVariations for Engagement business purpose
Update input sub-strategy for TreatmentToTreatmentVariations to be Engagement
Update input sub-strategy for TreatmentVariations to be Engagement
Create a new Proposition Filter “EngagementTreatmentVariationsEligibility“ with Default Variant
Update IdentifyTreatmentVariations to include new “Engagement” Business Purpose:
Add a “Engagement” filter with @equalsIgnoreCase(.BusinessPurpose,Engagement) condition
Add a sub-strategy call to “IdentifyEngagementTreatmentVariations” strategy
Connect to set property “Eligible Treatment Variants“


1046
Create new Strategy ApplyEngagementTreatmentEligibility
Clone ApplyTradeInTreatmentEligibility strategy
Replace TradeIn proposition filters with Engagement proposition filters


1047
Update strategy ApplyTreatmentEligibility
Add a “Engagement” filter with @equalsIgnoreCase(.BusinessPurpose,Engagement) condition
Add a sub-strategy call to “ApplyEngagementTreatmentEligibility” strategy
Connect to results


1048
Create new Strategy IdentifyEligibleEngagementOffers
Enable external input
Add “EngagementOfferEligibility” proposition filter
Connect to results
Update IdentifyEligibleOffers to include IdentifyEligibleEngagementOffers
After “ApplyOfferSelfContentionStrategy“ sub-strategy call:
Add a “Engagement” filter with @equalsIgnoreCase(.BusinessPurpose,Engagement) condition
Add a sub-strategy call to “IdentifyEligibleEngagementOffers” strategy
Connect to set property “set execution Mode“


1049
Adding a new channel App to NBA funnel
New Top Level strategy will be introduced IdentifyBestAppTreatmentsForSubscription
Flow will be similar to Web treatment strategy
Treatment strategies will be updated include App channel
Update strategy - AllTreatmentsForEligibleOffers
Add a filter for “App Treatments” with condition: .Channel = “App”
Join the filter with “ApplyChannelControlByExecutionMode“ sub-strategy call and connect to Results
Create 9 new Squad specific proposition DDS for App Channel
Update squad specific ApplyXXXXXXTreatmentEligibility strategies
List of strategies to change:
ApplyUpsellTreatmentEligibility
ApplyRetentionTreatmentEligibility
App Care App
App CrossSell App
App Renew App
App Retain App
App Retention App
App Service App
App TradeIn App
App Upsell App
App Engagement AppDecision Data Issue Group


1050
ApplyServiceTreatmentEligibility
ApplyRetainTreatmentEligibility
ApplyRenewTreatmentEligibility
ApplyCrossSellTreatmentEligibility
ApplyTradeInTreatmentEligibility
ApplyCareTreatmentEligibility
ApplyEngagementTreatmentEligibility
Changes to make:
Add “App Channel” filter with condition: .Channel = “App”
Add “Apply App Treatment Eligibility Filter“ with “prop filter” call to the below:
UpsellAppTreatmentEligibility
RetentionAppTreatmentEligibility
ServiceAppTreatmentEligibility
RetainAppTreatmentEligibility
RenewAppTreatmentEligibility
CrossSellAppTreatmentEligibility
TradeInAppTreatmentEligibility
CareAppTreatmentEligibility
EngagementAppTreatmentEligibility
Connect to Results
Create strategy - IdentifyEligibleTreatmentsforApp
Make sub strategy call to
AllTreatmentsForEligibleOffer - Select “App Treatments” output
ApplyChannelEligibility
ApplyChannelContention
ApplyTreatmentEligibility
Update DDS TreatmentToSubChannels
Add an entry for “App-Discover”
Channel = App
TargetSubChannel = Discover
Update DDS OfferDecisionMix
Update strategy IdentifyBestTreatmentForGetNBA
In “Max Offer” set property update the logic to check API value (field TBC):
@if(Primary.Context(NoOfActions)>0,Primary.Context(NoOfActions),OfferDecisionMix.MaxOffers)
In “Max Offer for IVR” set property update the logic to check API value (field TBC):
@if(Primary.Context(NoOfActions)>0,Primary.Context(NoOfActions),OfferDecisionMix.MaxOffers)1 GetNBA MVA-App 10ExecutionMode DecisionMixContext MaxOffers*


1051
For App Channel path, do the following:
Import “Offer Decision Mix” decision data as “Offer Decision Mix App”
Import condition: .ExecutionMode = “GetNBA” && .DecisionMixContext = “MVA-App”
Add a “Set Property” component called “Get Max Offers” and connect to external input
Set: .MaxOffers = @if(Primary.Context(NoOfActions)>0,Primary.Context(NoOfActions),OfferDecisionMix.MaxOffers)
Create 1 filters for App channel
.Channel = “App”
Connect App channel filter to “Prioritize App” (by .pxPriority - Highest, All)
Add a “Max Offers App” filter and join to “Prioritize App” with filter condition:
@if(.MaxOffers<0,true,@if(.MaxOffers=0, false,.pxRank<=.MaxOffers))
Connect to results
Create strategy SetAppTokens
Enable external input
Add set property with below settings
Set .TreatmentAttributes = @String.replaceAll(.TreatmentAttributes,"[AppTag]",.AppTag) -TBC
Connect to results
Create strategy - PopulateOutputPropertiesForApp
Enable external input
Add a filter to check .ExecutionMode ="GetNBA"
Add sub-strategy call to PopulateOutputPropertiesForGetNBA
Add sub-strategy call to SetAppTokens
Connect to results


1052
Create strategy - SetIHForApp
Add an external input
Add set property component - Set IH with only the following:
Connect to results
Update strategy - SetIHPropertiesForAllChannels
After “SetGenericIHReportingAttributes” sub-strategy, add “App Channel” filter with condition:
.Channel = “App”
Call sub-strategy “SetIHForApp“ and connect to channel filter
Connect to SetDefaultValuesToIHProperties sub-strategy call
Create strategy - IdentifyBestAppTreatmentsForSubscription
Make sub strategy call to the below strategies:
IdentifyEligibleTreatmentsforApp
IdentifyTreatmentSubChannel
IdentifyBestTreatmentforSubscription
IdentifyTreatmentVariations
PopulateOutputPropertiesForApp
SetIHPropertiesForAllChannels
Add a “Set Error Message” set property with condition
.ErrorMessage = @if(SetIHPropertiesForAllChannels.pyName=="","NO Decision","")
Add a “Make Decision” switch with criteria
Select “Set Error Message” if SetErrorMessage.ErrorMessage!=””
Otherwise SetIHPropertiesForAllChannels
Connect to Result
Update strategy - GetNBA
Call sub-strategy IdentifyBestAppTreatmentsForSubscription for App channel
Update the switch to select “IdentifyBestAppTreatmentsForSubscription“ sub-strategy if the below condition is satisfied:
@equalsIgnoreCase(Primary.Context(Channel),"App")

 pyDirection “Inbound“
pyOutcome “Selected”
TargetSubChannel “Discovery“Property Name Value


1053
NBA FW - Offer Propensity Model Configuration
[AOM-3029] Assign models to Offer propensity through PM configuration
Impact in Other areas

Dependencies
New Properties for IH Extension

New Properties for PegaMKT-Data-Event class

New parameter for TriggerPMEvent class and relevant changes to populate EventPayload pagePM Tool Yes
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App Yes Update to PegaMKT-Data-Event class,
TriggerPMEvent activity, IH Extension & IH
View Class
DB Yes IH Extension & IH View updateArea Yes/No Comments
PM Tool Yes  Decision Data population will be validated
once PM changes are complete and passed
testing
App Yes E2E Testing can only be done after App
changes
DB Yes  App changes can only be done after DB
changesArea Yes/No Comments
PropensitySource Data-Decision-IH-Fact Text varchar(50)Property Name IH Class Data Type (Class) Data Type & Length (DB)
PropensitySource TextProperty Name Data Type
Property Name Data Type


1054

Add to IH View

Add to IH Extract

A. Update Offers decision data structures (for all Issues/Squads)
In total 8 offer decision data will be updated.
Add Properties
PropensitySource - Text
Possible Values -
BDC : Indicates that the propensity will be sourced from a BDC model
Default : StartingPropensity should be used as Offer Propensity. Default will work same as leaving it blank (i.e. not populated)
ModelId - Decimal
This should be populated if PropensitySource is BDC
PropensityAttribute - Text
This field is not mandatory and can be NULL
If populated, it should be the “key” name of ModelAttributes JSON and the respective propensity value from ModelAttributes will be
used for  Propensity
Multiple “key” values are allowed on this field which should be provided as comma (,) separated list. When multiple “key” is used, the
respective Max propensity value will be used for  Propensity
If left blank, Propensity column from Model Score table will be used for  Propensity

The following table details the currently used propensity models for the relevant offers and how they will be set up in the updated Decision
data
 PropensitySource Text
PropensitySource PropensitySourceColumn Name in IH Column Name in View
PropensitySourceColumn Name in IH
AddMobileSIMO BDC 967 simo_propensity
AddMobilewithhandset BDC 967 handset_propensity
AddTablet BDC 967 mbb_propensityOffer Name PropensitySource ModelId PropensityAttribute


1055

Note - relevant PM tool changes for the above decision data change will be discussed separately between Matt (VF) & Venkat (PM
tool team)

B. Update OfferToOfferVariations decision data structures (for all Issues/Squads)
In total 8 offertooffervariations decision data will be updated.
Add Properties
PropensitySource - Text
Possible Values -
BDC : Indicates that the propensity will be sourced from a BDC model
Default : StartingPropensity should be used as Offer Propensity. Default will work same as leaving it blank (i.e. not populated)
ModelId - Decimal
This should be populated if PropensitySource is BDC
PropensityAttribute - Text
This field is not mandatory and can be NULL
If populated, it should be the “key” name of ModelAttributes JSON and the respective propensity value from ModelAttributes will be
used for  Propensity
Multiple “key” values are allowed on this field which should be provided as comma (,) separated list. When multiple “key” is used, the
respective Max propensity value will be used for  Propensity
If left blank, Propensity column from Model Score table will be used for  Propensity

The following table details the currently used propensity models for the relevant offertooffervariations and how they will be set up in the
updated Decision data
Note - relevant PM tool changes for the above decision data change will be discussed separately between Matt (VF) & Venkat (PM
tool team)

C. Update all treatments decision data structures (for all Issues/Squads and all channels)
In total 8x8 (64) treatment decision data will be updated.SwitchMobilePlan BDC 967046 NULL
AddSmartwatch BDC 12 NULL


AddSmartwatch BDC 12 NULL
MobileAddmobile BDC 967 simo_propensity,
handset_propensity,
mbb_propensity
MobileAddmobile-SIMO BDC 967 simo_propensity
MobileAddmobile-Tablet BDC 967 handset_propensity
MobileAddmobile-Handset BDC 967 mbb_propensityOfferToOfferVariations Name PropensitySource ModelId PropensityAttribute


1056
Add Properties
InheritPropensityFrom - Text
Possible Values -
OfferToOfferVariations : Indicates that the propensity will be inherited from OfferToOfferVariations
Offer :  Indicates that the propensity will be inherited from Offer. “Offer” will work same as leaving it blank (i.e. not populated)

The following table details the currently used propensity models for the relevant treatments and how they will be set up in the updated
Decision data
Note - relevant PM tool changes for the above decision data change will be discussed separately between Matt (VF) & Venkat (PM
tool team)

D. Update ParentChildTreatments decision data structures
Add Properties
Rank - Integer
Possible Values - positive Integer, this indicates the default order of the child treatments for the parent
The following table details the currently used propensity models for the relevant treatments and how they will be set up in the updated
Decision data
Note - relevant PM tool changes for the above decision data change will be discussed separately between Matt (VF) & Venkat (PM
tool team)

E. New strategy - GetBDCPropensity
E1. Input - Either Offer or OfferToOfferVariations proposition data where PropensitySource = BDC & ModelID is populated
E2. From ModelScoresList pagelist, get the records for the ModelID along with ModelAttributes JSON string and other properties such as
Propensity, ValidityTimestamp, ModelRunTimestamp
and apply model validation rules (@if(IsNullOrEmpty(.ValidityTimestamp),
CalculateNumberOfDaysFromToday(.ModelRunTimestamp)<45,
.ValidityTimestamp> @DateTime.getCurrentTimeStamp()))MobileAddmobile_SMS OfferToOfferVariations
MobileAddmobile_OutboundCC OfferToOfferVariations
MobileAddmobile_Email Offer (or NULL)Treatment Name InheritPropensityFrom


MobileAddmobile_Email Offer (or NULL)Treatment Name InheritPropensityFrom
MobileAddmobile_Email AddMobileSIMO_Email 2
MobileAddmobile_Email AddMobilewithhandset_Email 3
MobileAddmobile_Email AddTablet_Email 1
MobileAddmobile_Email AddSmartwatch_Email 4BundleParentTreatment BundleChildTreatment Rank


1057
 E3. If Model is not valid or ModelID is not valid - set ModelPropensity = StartingPropensity of Offer & PropensitySource = “Default”
E4. Else
E4.1. if PropensityAttribute is NULL, set ModelPropensity = Propensity (from ModelScoresList)
E4.2. if PropensityAttribute is not NULL but has only one attribute (no comma separated list)
set ModelPropensity = @GetValueFromJSONObject(ModelAttributes, PropensityAttribute)
E4.3. if PropensityAttribute is not NULL but has multiple attributes (comma separated list)
then,
E4.3.1. extract each attributes
E4.3.2. for each Attribute
set ModelPropensity (individual)  = @GetValueFromJSONObject(ModelAttributes, Attribute)
E4.3.3. set ModelPropensity (final) = Max of ModelPropensity (individual)
E4.4. If ModelPropensity is 0 even after following any of the above 3 steps (4.1, 4.2 or 4.3),
set ModelPropensity = StartingPropensity of Offer & PropensitySource = “Default”
E3. Return the Offer or OfferToOfferVariations along with ModelPropensity & PropensitySource

F. New Strategy - SetOfferLevelPropensity
F1. Input - Eligible offer proposition data
F2. Check PropensitySource & ModelID properties
F3. If PropensitySource is Blank or “Default” OR (PropensitySource = BDC and ModelID is Blank)
set ModelPropensity = StartingPropensity of Offer & OfferPropensitySource = “Default”
F4. if PropensitySource = BDC and ModelID is not Blank, then


F4. if PropensitySource = BDC and ModelID is not Blank, then
F4.1. call sub-strategy GetBDCPropensity
F4.2. Set OfferPropensitySource = PropensitySource
F5. set OfferPropensity = ModelPropensity, PropensityLevel = Offer

G. Update Strategy - IdentifyEligibleOffers
Call sub-strategy SetOfferLevelPropensity before returning results

H. Update strategy - ApplyOfferDataToOfferToOfferVariations
Update the mapping from Offer Data to Offer To Offer Variations data to include the following properties -
OfferPropensity
OfferPropensitySource
PropensityLevel

I. New Strategy - SetOfferVariationLevelPropensity
I1. Input - Eligible offer variations proposition data


1058
I2. Check PropensitySource & ModelID properties
I3. If PropensitySource is Blank or “Default” OR (PropensitySource = BDC and ModelID is Blank)
Do Nothing
I4. if PropensitySource = BDC and ModelID is not Blank, then
I4.1. call sub-strategy GetBDCPropensity
I4.2. Set OfferVariationPropensitySource = PropensitySource
OfferVariationPropensity = ModelPropensity
PropensityLevel = OfferToOfferVariants

J. Update Strategy - IdentifyOfferVariantsForEligibleOffers
Call sub-strategy SetOfferVariationLevelPropensity before returning results

K. Update strategy - ApplyOfferVariationsDataToTreatments
Update the mapping from Offer Data to Offer To Offer Variations data to include the following properties -
OfferPropensity
OfferPropensitySource
OfferVariationPropensity
OfferVariationPropensitySource
PropensityLevel

L. New Strategy - SetPropensityForTreatments
L1. Input - Treatment proposition data
L2. Check InheritPropensityFrom property
L3. if PropensityLevel = Offer or Blank,
Set pyPropensity = OfferPropensity, PropensitySource = OfferPropensitySource
L4. if PropensityLevel = OfferToOfferVariations
Set pyPropensity = OfferVariationPropensity, PropensitySource = OfferVariationPropensitySource

M. Update strategy - CalculatePriority
Remove the highlighted components below -


1059
call sub-strategy SetPropensityForTreatments instead of the removed components

N. Update Strategy - IdentifyBestEmailTreatmentForBatch
N1. In “Matching Child Treatments“, map the following property ChildRank (new) with Rank from ParentChildTreatments decision data
N2. Within the embedded strategy (looping through each Parent Treatment and all child treatments for the parent)
N2.1 Identify if the pyPropensity for all child treatments for the Parent is same
N2.2. If Yes, order the child treatments by ChildRank ascending
N2.3 If No, order the child treatments by pyPropensity descending
Please note that above step removes the use of RankingScore

O. Update Strategy - ApplyBundling
O1. In “Matching Child Treatments“, map the following property ChildRank (new) with Rank from ParentChildTreatments decision data
O2. Within the embedded strategy (looping through each Parent Treatment and all child treatments for the parent)
O2.1 Identify if the pyPropensity for all child treatments for the Parent is same
O2.2. If Yes, order the child treatments by ChildRank ascending
O2.3 If No, order the child treatments by pyPropensity descending
Please note that above step removes the use of RankingScore

P. Update strategy - SelectBestRetainTreatmentVariation
Update component - Get SplitPercentage for Others Adaptive
PropensitySource = “Adaptive”

Q. Update Strategy - SetDefaultValuesToIHProperties
Q1. Update  Component - Default Values for IH
Property Name Default Value


1060
Q2. Update Component - Set Default Values for IH

R. Update strategy - ApplyTreatmentDataToTreatments
R1. Update data join component - All Treatments With Properties
PropensitySource

S. Update Strategy - PrepareEmailTreatments
S1. Rename Prioritize component - Prioritize by RankingScore to Priority Email Treatments
Prioritize by Rank
Note - This part in strategy ensures that the order of the child treatments are maintained as per requirement. Please test the changes so
that Rank property (set in strategy IdentifyBestEmailTreatmentForBatch) is passed through and business requirements are met.

T. Update strategy - ApplyEventPayloadToTreatments
R1. Update data join component - Treatments With All Properties to map the property
PropensitySource

U. Update Data Flow - ProcessSMSForT2S
Update following parameter to primary destination activity - Trigger PM Event
PropensitySource
V. Update Data Flow - GetNBA
Update following parameter to primary destination activity - Trigger PM Event
PropensitySource

W. Update strategy - ProcessDiallerOutcomes
Update data join component - Join with Latest Interaction to map the property
PropensitySource
 PropensitySource "Default"
PropensitySource if PropensitySource =  BLANK, then
DefaultValuesforIH.PropensitySource, else PropensitySourceProperty Name Value


1061
NBA FW - Automated Testing - Logic POC
Logic POC Scope

A. Rule Pattern 1 - TypeProductHoldingByProductCode
Pattern Input(s) TypeProductHoldingByProductCode USL001PH has 1GB
USL002PH has 2GB
USL010PH has 15GB
USL009Has Minutes Extra
TypeNoProductHoldingByProductCode USL005Not Basics SIMO customer (12mth SIMO Unlmin 500MB
Basics Plan, 12mth SIMO Unlmin 1GB Basics Plan, 12mth SIMO
Unlmin 3GB Basics Plan)
USL006Customer does not have an MMS extra (104944 SOC
Unlimited MMS;104934 SOC 100 MMS)
USL007Customer does not have a Non-geo extra (108157 SOC
Extra - 300 mins to 084 and 087)
TypeSubscriptionFlexAttributeStringCheck GBL009SubscriptionDoesNotHaveOpenCompliant
GBL017Not in universal control group
GBL036 Sky Customer
TypeUnicaHistoryByCampaignAndRecency XSL006Exclude those that have been marketed to by campaign
ACX4848 or ACX5322 within last 50 days unless part of control
groups for those campaigns
XSL009Customer has been selected for the Unica campaigns
ACX5217 or ACX4848 in the last month
TypeNoUnicaHistoryByCampaignAndRecency XSL007Exclude those warm leads that have been contacted as
part of campaign ACX5217 within the last 30 days
TypeProductHoldingByProductTypeAndDescription3 USL003Is on Basic Price Plans
TypeProductHoldingByProductTypeAndMobileDataDescription USL004Is on Unlimited Plan


TypeProductHoldingByProductTypeAndMobileDataDescription USL004Is on Unlimited Plan
TypeModelScoreExists XSL003Has product propensity score
TypeBestModelScoreExists XSL021Best second line offer is handset
XSL022Best second line offer is SIMO
XSL023Best second line offer is MBB
TypeIHByTreatmentOutcomeAndRecency XSL015Clicked CrossSell email SIMO URL within last 7 days
XSL016Clicked CrossSell email Handset URL within last 7 days
XSL017Clicked CrossSell email Tablet URL within last 7 days
XSL018Clicked CrossSell email Watch URL within last 7 daysRule Pattern Rules


1062

Pattern Description
This rule pattern uses the input ProductCode(s) and returns TRUE for the implemented rule if the customer has an Active (EffectiveEndDate
in future) ProductHolding for any of the ProductCode(s)

Example Rules for pattern
A1. USL001PH has 1GB
Rule Input

Test Scenario Configuration for STF
A2. USL002PH has 2GB
Rule Input
A3. USL010PH has 15GB
Rule Input
A4. USL009Has Minutes Extra
Rule InputProductCode Text product code as in product holding spineInput Data Type Description
ProductCode 105694Input Value
USL001 1 TRUE ProductHolding ProductCode 105694
ProductHolding EffectiveEndDate CurrentDate + 30
days
2 FALSE ProductHolding ProductCode 105694
ProductHolding EffectiveEndDate CurrentDate - 30
daysRule ID Scenario No Test Assertion Spine Column Value
ProductCode 105695Input Value
ProductCode 109353Input Value
Input Value