1368
 Get the data according to a recent device used for Primary Subscription .
Get PrimarySubscrition.Device.Manufacturer.  which will give recent  used device manufacturer
If recent device used for Primary Subscription  not avaliable- No watch  recommendation will be made but tariff
recommendation will be made
Set RecommendedManufactorer
If no record available  matching criterias above record  set as ““
If there are any record  as “Apple”   product   Set as  “Apple”
 If there is not any record  as “Apple”  Set as “Samsung”
Identify Watch List
If Primary.Context(SecondaryContext) != “RefineBy“
Query D_Sellablepaymhandsets With devicetype=Watch
Filter
Manufactorer =RecommendedManufactorer
Sort on Cost (Desc)
Retrieve device details :
populate device attributes from PC (Same with handset except for Storage and additionally Size, check
GetRecommendedDevice  for exiting implementation do same calculation & populate same attributes)
If Primary.Context(SecondaryContext) = “RefineBy“
Call D_SellablePayMHandsets for DeviceType = “Watch”
Retrieve device details :
populate device attributes from PC (Same with handset except for Storage and additionally Size, check
GetRecommendedDevice  for exiting implementation)
Filter devices based on selected parameters in the context:
Manufacturer
Model
Device cost ( get details from ado 342427)
SIMO
Get Stock Details
Query Stock Details for list of SKUs -GetStockDetails
If it is RefineBy & no stock available for any record, set error message, return no device & no recommendation at all will be made
Select Top Watch
Select top 1 record which is most expensive & has stock
Filter devices with Stock Quantity > 0 || Quantity Status="Stock Details Unavailable"


Filter devices with Stock Quantity > 0 || Quantity Status="Stock Details Unavailable"
Set RecommendedDevice code with ProductCode

Update GetRecommendedDevice (new Name GetRecommendedHandset)
Add DeviceCost (as range ) to refine by filter condition.


1369
Assisted Upgrade - Watch Recommendation -Part2
HL Requirement:- Get Recommended Tariff and Discount for Watch

Watch is a new device falling under GetRecoomendation API, where we are identifying compatible Tariff and Discount Details based on
the business rules in this design.
PM Tool  Configuration for Tariff Business Meta Data:
It is possible to manage the following information in PM tool for Tariff products.
Watch Tariff Business Name ('As Is') -PlanName
'Watch Tariff Benefit': a new field for the watch tariff benefit -TEXT-PlanBenefit
The information is made available to the logic and/or VADR as required
New Strategy – GetRecommendedTariffForWatch
We will get Watch Device details if available from GetRecommendedWatch otherwise simo plan(one number connectivity) only pass in this
strategy.
Only one Tariff recommendation will be presented to a watch  customer
Select related tariff & populate tariff details for Watch customer from PC ( a sub strategy GetWatchTariffList)
Load PC Tariff Data
Populate tariff details > While populating tariff details (same as  in GetListofActiveTariffs) , populate BenefitsProduct from Product
Attributes (mentioned in pm task).
Filter watch tariff with below conditions
   Segment=Loan and sim-only =Y and catagory=Accessplan.
Prioritize on cost select top 1
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457362298323685&cot=14 -  483021 Watch: 50 % off a Smartwatch Connectivity Plan benefit
483059 PM Tool - Being able to manage watch metadata482990/483043 Watch: Logic Recommendation
Connect your Miro account


1370

New Strategy – CalculateDiscountForWatch
Only if the watch customer's primary CTN is on the relevant tariff, then we will present the 50% discount for the one number plan.
From PrimarySubscription attribute  of upgrading line  get RootProduct details ,
Import PrimarySubscription.RootProduct
Filter Fulfilment code =Mobile Service product
Get Tariff Details from D_Tariff > Get Tariff Benefit from PC  check if it contains "50% off Watch Connectivity" Keyword.
If available  (for each tariff available in the input )
Get the compatible discount code for the tariff eligible for one number Tariff (RecommendedTariff) from  D_DiscountsForTariff
Populate discount details needed in the output (similar in logic recommendation flow)
Filter Discount list on ProductName contains “50% off Smartwatch Connectivity”
Select the max discount value for Percentage Type discount from the list.
If not avaliable make recommendation without discount.
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457362299011918&cot=14 -

Update  Strategy – PopulateOutputPropertiesForNBAA
Skip VF together  eligiblity logic  for wacth customer which is not applicable.
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457357426640677&cot=14 -
Connect your Miro account
Connect your Miro account


1372
Assisted Upgrade - Get Device List for Watch
HL Requirement
If the incoming subscription is a watch subscription
Retrieve devices with DeviceType = “Watch” and filter by Manufacturer
Apply order specific for watch

Update Strategy - GetDeviceList
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457357273560272&cot=14 -

If upgrading   subscription is a watch subscription (Primary.Context(“PrimarySubscriptionId” ) <>"") set IsWatchSubscription=True
,DeviceType = "Watch" else DeviceType = "Handset"  (Inputs for SellablePayMHandsets)
Call D_SellablePaymHandsets with DeviceType  SR parameter populated in previous step and Populate attributes (add to existing list)
new mapping > DeviceSize (from ProductAttributes)
If watch customer , logic needs to calculate what is the recommended manufacturer should be , and device list should be filtered
according to
Make sub strategy call to IdentifyManufacturer (same logic with in recommendation flow)
After RecommendedDeviceIsFixed is set add 2 new filters
If iIsWatchSubscription=False > run as is flow
If iIsWatchSubscription=True
Make call to IdentifyManufacturer (will populate RecommendedManufacturer)
Use RecommendedManufacturer to filter device list
if RecommendedManufacturer = ""  do not filter on Manufacturer ,
if RecommendedManufacturer = "Apple" list watches  .Manufacturer = "Apple" ,
if RecommendedManufacturer <> "Apple" list watches  .Manufacturer <> "Apple"
Order by Watch Conditions (make sub strategy call to OrderWatchList)
Add  a switch component before “Populate Output Properties For Device “
If IsWatchSubscription =True > select Ordered WatchList
else select as is combined PC & BDC handset list.
New Strategy - OrderWatchList
Order by


else select as is combined PC & BDC handset list.
New Strategy - OrderWatchList
Order by
manufacturer
model,
size,
color478168 Edit deal-Device tab for Watch
Connect your Miro account


1373
Assisted Upgrade - Get Tariff List for Watch

HL Requirement
If the incoming subscription is a watch subscription
List the tariff(s) for watch, skip BDC and S15 controls
Calculate the max discount
Update Strategy - GetTariffList
Retrieve watch tariffs if IsWatchSubscription is true
If upgrading subscription is a watch subscription (Primary.Context(“PrimarySubscriptionId” ) <>"") set IsWatchSubscription=True in
context properties.
Replace the logic to select which tariff list to select according basket / CRE type (SelectHandsetonlyorSIMOAndHandsetTariff switch &
before it )- make call to GetListOfValidTariffsFromPC (Strategy optimisation) – Input is handset in basket
After GetListOfValidTariffsFromPC add 2 new filters
If iIsWatchSubscription=False > Run as is flow (CurrentTariffDetails)
If iIsWatchSubscription=True > Connect to CalculateMaxDiscountForTariff
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457357521486828&cot=14 -
New Strategy - GetListOfValidTariffsFromPC
Enable External Input = Provide Handset In Basket as input
Put the logic to select which tariff list to select according basket / CRE type (Select Tariff List logic )
Add a new path for Watch
Set Channel, Division, Team and IsFixedEnabled parameters for watch tariffs as inputs for GetWatchTariffList sub-strategy (similar
with SIMOTariffsInput component)
Call sub-strategy GetWatchTariffList (will be created as a part of GetRecommendation)
If IsWatchSubscription = True retrieve results from GetWatchTariffList else execute as-is (rename


If IsWatchSubscription = True retrieve results from GetWatchTariffList else execute as-is (rename
SelectHandsetonlyorSIMOAndHandsetTariff component as SelectTariffList). IsWatchSubscription check will be the first condition in the
switch.

Update Strategy - CalculateMaxDiscountForTariff
Check if the subscription is a watch subscription (IsWatchSubscription is True). If it’s a watch subscription skip existing logic and continue
with a new branch.
Set RecommendedTariffCode with the tariff codes coming from external input (It is used In CalculateDiscountForWatch)478173 Edit Deal: Tariff tab for Watch
Connect your Miro account


1374
Call CalculateDiscountForWatch and connect to results
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457359713413900&cot=14 -

Connect your Miro account


1375
Assisted Upgrade - Get Discount List for Watch
HL Requirement
If the incoming subscription is a watch subscription list the discounts for the selected tariff.
Update Strategy - GetDiscountList
If upgrading subscription is a watch subscription (Primary.Context(“PrimarySubscriptionId” ) <>"") set IsWatchSubscription=True.
(ContextProperties)
If it is a watch subscription skip the existing flow and call CalculateDiscountForWatch with tariff in basket (set Division parameter for
D_DiscountsForTariff data page)
If it is not a watch subscription, execute the existing flow.
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457359799628548&cot=14 -  478176 Edit Deal: Discount Tab for Watch
Connect your Miro account


1376
Extras Landing Page: Capture Response for Microsite
Only 447597 Capture all events in IH is in scope for R2.9
Impact in Other areas
Dependencies
Logic Changes:
Sample Request Body Examples:
Tracking Clicks and responses on Microsite Landing Page:
When Initially Sent SMS link(Which redirects to Microsite) through SMS Channel:
SMS CLICK:
"{
"InteractionId": "-119585767102077807",
"CustomerId": "1-HLZKOO39",
"Channel": "SMS",
"SubChannel": "",
"OfferName": "AddTablet",
"OfferVariant": "OfferVariantDefault",
"TreatmentName": "AddTablet_SMS",
"TreatmentVariant": "AdCons",
"Outcome": "",  //App Team sets the Outcome
"ClickedURL":""
}"      447597 Capture all events in IH
App Yes  It has App Dependency.
DB No
Knowledge Transfer Yes
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments


1377
2. When Child Offer is Accepted.
CTA Button:
Child Offer Click
"{
"InteractionId": "-119585767102077807",
"CustomerId": "1-HLZKOO39",
"Channel": "Microsite",
"SubChannel": "",
"OfferName": "AddTablet",
"OfferVariant": "OfferVariantDefault",
"TreatmentName": "AddTablet_Microsite",
"TreatmentVariant": "AdCons",
"Outcome": "Accepted", //App Team sets the Outcome
}"
3. T&C OR PRIVACY
"{
"InteractionId": "-119585767102077807",
"CustomerId": "1-HLZKOO39",
"Channel": "Microsite",
"SubChannel": "",
"OfferName": "AddTablet",
"OfferVariant": "OfferVariantDefault",
"TreatmentName": "AddTablet_Microsite",
"TreatmentVariant": "AdCons",
"Outcome": "Clicked", //App Team sets the Outcome
"ClickedURL":"Vodafone – Our Best Ever Network | Now With 5G " //vodafone.co.uk
}"

Update Strategy: CaptureResponse
Introduce the new path to feed Microsite Response in the IH.
A.  Join the set property component “SetTheChannel“ to the new filter.
Create the new filter “Microsite Channel check“. Add the condition in the filter as
@String.equalsIgnoreCase(.Channel,"Microsite")  && .EventType != "SetNBAResponse"
B. Connect the filter “Microsite Channel check“ to the new sub strategy “CaptureResponseForMicrosite“
C. Connect the sub strategy “CaptureResponseForMicrosite“ to the Error Message Null Check


C. Connect the sub strategy “CaptureResponseForMicrosite“ to the Error Message Null Check
Note: Connecting filter to Siebel logic(For Future specific). Currently Microsite responses are not written to Siebel.
Create new Strategy: CaptureResponseForMicrosite
D. In the CaptureResponseForMicrosite strategy,
Enable External Input.
D1. Connect the external input to the set property Set IH.
In the set property set the below properties
Property Name Property Value


1378
E. Use the data import component and name it as IH. Import the page as Primary.InteractionHistoryList and in the properties map the
properties as per the below image..ValueText Primary.Context(SubEventType)
.pxOutcomeTime Primary.Context(EventTimestamp)
.ValueDecimal Primary.Context(pxInteractionId)
.pxInteractionID Primary.Context(pxInteractionId)
.pySubjectID Primary.CustomerID
.CreateTs @getCurrentTimeStamp()
.SendIdentifier Primary.Context(SendIdentifier)
.ActedInCountryCode Primary.Context(ActedInCountryCode)
ActedInAgent Primary.Context(ActedInAgent)
.ClickedURL Primary.Context(ClickedURL)
.Blocked @if(@toUpperCase(Primary.Context(Blocked))="TRUE","Y",@if(@toUpperCase(Pri
mary.Context(Blocked))="FALSE","N",""))
.HardBounce @if(@toUpperCase(Primary.Context(HardBounce))="TRUE","Y",@if(@toUpperCase
(Primary.Context(HardBounce))="FALSE","N",""))
.ErrorRelation Primary.Context(ErrorRelation)
.Error Primary.Context(Error)
.Comment Primary.Context(Comment)
.Source Primary.Context(Source)
.pyChannel Primary.Context(Channel)
.ServiceId Primary.ServiceNumber
.EventType Primary.Context(EventType)
.pyOutcome @If((@String.equalsIgnoreCase(.EventType,"Microsite")&&@String.equals(.Val
ueText,"Unsubscribe"))||
(@String.equalsIgnoreCase(.EventType,"Webhook")&&@String.equals(.ValueT
ext,"unsub")),"AOM_Unsubs",.ValueText)
.PropositionName Primary.Context(TreatmentName)
.TargetSubChannel @if(Primary.Context(SubChannel)!="",Primary.Context(SubChannel),"Default")
.pyDirection @if((@String.equalsIgnoreCase(.pyChannel,"InboundCC")||@String.equalsIgno
reCase(.pyChannel,"App"),"Inbound","Outbound")


1379
F. Import the decision data called “Standard Outcomes“. In this component select Define on as Strategy class radio and provide the
decision data as OutcomeMapping
G. Connect the Data Import IH to the data join called “Get Standard Outcome“. In the data join , join with Standard outcomes and add the
condition .Channel = .Channel and .pyOutcome = .Outcome and in the properties mapping tab map .StandardOutcome =
.StandardOutcome
Note: Uncheck Exclude source component results that do not match join condition.
H. Join the data join called “Get Standard Outcome“ to the set property called “Standard Outcome check“
and in the set property , set .StandardOutcome = @if(.StandardOutcome="","Other",.StandardOutcome)
I. Connect the set property “Standard Outcome check“ to filter named “IH with outcome“. In this filter check .StandardOutcome="Selected"
J. Connect the filter  “IH with outcome“ to the other filter,”Match the PropositionName from Context”
Add the condition in this filter as SetIH.PropositionName=.TreatmentName
K. Join the filter ”Match the PropositionName from Context” to the group by component,”Latest Interaction”
do group by on .InteractionId and by .pxOutcomeTime as below.
L. Join the set property “Set IH“ to the data join named as “Set IH properties“.
join this with LatestInteraction group by component. In the data join add the condition check as
.ValueDecimal = .InteractionId and in the properties mapping tab map properties as per below image.


1381
M. Connect this data join “Set IH properties“ to the existing sub strategy SetDefaultValuesToIHProperties
N. Connect this sub strategy “SetDefaultValuesToIHProperties“ to the two filters.
1. Name the first filter as “Match Found“ and add the condition as .AdhocText1!="" and connect this filter directly to the result component.
2. Second filter as “Match Not Found“ and add the condition as .AdhocText1="" and connect this filter to set property named “Set Error
Message“ and set the .ErrorMessage = "Unable to find InteractionID : "+.ValueDecimal+" in the Interaction History."  and connect it to the
result component.


1382
Extras Landing Page: Offer revalidation for Microsite
Impact in Other areas
Dependencies
Logic Changes:
Note: Skip Contention related strategies check for Microsite. Skip below strategies check for Microsite Offers
1.IdentifyOffersForEligibleIntents
2. ApplyBusinessPurposeQuarantineCheckForControl
3. ApplyGlobalRulesForBatchOffers
4. ApplyGlobalContactStrategy
5. ApplyBusinessPurposeContactStrategy
6. ApplyOfferSelfContentionStrategy
7. ApplyChannelContention
8. ApplyChannelContention(Remove it from funnel)

Note: Below eligibility checks for the Microsite Offers 447590 Offer Revalidation for Microsite
App No
DB No
Knowledge Transfer Yes
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments
OfferEligibility Yes
OfferVariations YesFunnel Yes/No


1383
Update Strategy: IdentifyEligibleTreatmentsforMicrosite
C1. Remove Substrategy “ApplyChannelContention“ in the strategy IdentifyEligibleTreatmentsforMicrosite.
Connect ApplyChannelEligibility to the substrategy ApplyTreatmentEligibility
Update Strategy: GetLandingPageMicrositeTreatments will be renamed to IdentifyBestMicrositeTreatments:
Following validations should be checked in the strategy IdentifyBestMicrositeTreatments
After the switch component add one more switch component and name it as “Check Active and OfferExpiry“ and apply the below validations
for D1 and D2.
Set all the error message details for Inactive , OfferExpired and Ineligible Offer in the AOM Business Configuration Data Type.
Import all offers and compare with realtime context offer. When the realtime offer is inactive or disabled in Offers Decision data then set
error message in the set property(fetch error message from data type and set it)
D1. Choose set error message component for Inactive offer check if Offer is Inactive else
Call new Substrategy OfferExpiry and check whether offer is expired or not. If offer is expired then set then set error message in the set
property(fetch error message from data type and set it)
D2. Choose set error message component for offer expiry check if Offer is expired else
D3. choose the existing Make Decision switch component.
if error message is “NO Decision“ then also set error message defined in AOM Business Configuration data type and assign to it.

 ApplyChannelEligibility Yes (Can have default rules which can be eligible but no contention rules should
be present for Microsite which makes ineligible)
ApplyTreatmentEligibility Yes
IdentifyBestTreatmentforSubscription Yes
IdentifyTreatmentVariations Yes
PopulateOutputPropertiesForMicrosite Yes


IdentifyBestTreatmentforSubscription Yes
IdentifyTreatmentVariations Yes
PopulateOutputPropertiesForMicrosite Yes
SetIHPropertiesForAllChannels Yes


1384
Extras Landing Page: Multiple offers presented on the landing page
Impact in Other areas
Dependencies
Design Approach
A. Update strategy: IdentifyBestTreatmentforSubscription
Remove the connections from the filter,”ExecutionModeLandingPages” to the substrategies IdentifyBestTreatmentForTIL and
IdentifyBestTreatmentForBatch
Connect the filter ,”ExecutionModeLandingPages” to the set property component named “Reset ParentChild for Microsite Treatments“
and add the condition check .ParentChild=""
Connect the set property to the new sub strategy called “ApplyBundlingForMicrosite“
B.Create New Strategy: ApplyBundlingForMicrositeTreatments
B1. Enable External Input.
B2. Import the existing decision data “ParentChildTreatments“ and join it to the group by component named “List of Parents“ and do group
by .BundleParentTreatment485334 Multiple Offers Presented on the Landing Page
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1385
B2. Join the external input to the data join, ”Matching Parent Treatments”. In this data join , join it with List of Parents with the condition
.pyName =.BundleParentTreatment. In the properties mapping, set .IsParentTreatment ="True"
B3. Join the external input to the other data join, “Matching Child Treatments“. In this data join , join it with “ParentChildTreatments“ data
join. Add the condition .pyName =..BundleChildTreatment. In the properties mapping, set .BundleChildTreatment =.BundleParentTreatment
Note: Enable the checkbox for Exclude source component results that do not match join condition.
B4. Join the data join “Matching Parent Treatments“ to the two filters.
1. Name the first filter as “Parents without children“. Add the condition in filter as !.IsParentTreatment
2. Second filter ,”Parents With Children”. Add the condition as .IsParentTreatment
Join the first filter “Parents without children“ to the data join “Find Parent Child Duplicates“.
Join the data join “MatchingChildTreatments“ to the data join “Children of Eligible Parents“
In this data join , join with second filter called ”Parents With Children”. Add the below condition .BundleParentTreatment=.pyName
Note: Enable the checkbox for Exclude source component results that do not match join condition.
Join the data join ,”Children of Eligible Parents” to the set property “Input to For Each“. In the set property
set .ValueDecimal = .pyPropensity and set .ValueDecimal2 = .pxPriority
In the data join “FindParentChildDuplicates“ join with “Input to For Each“.
Add the condition check .pyName= .pyName and in the properties mapping map
.ParentChild = "Parent As Well As Child"


1386
B5. Join the data join “Find Parent Child Duplicates“ to the filter named ,”Drop Parent If it is Eligible as Child”
add the condition in the filter as .ParentChild= ""
B6. Connect this filter ”Drop Parent If it is Eligible as Child” to the set property component “Set Parent“
In the set property, .ParentChild = "Parent" and .ParentOfferName = .OfferName
B7. Connect the filter component “Parents With Children“ directly to the above set property “Set Parent“
B8. Connect the set property ,”Set Parent” to the Prioritize component called ”Prioritize Offer”
In this prioritize component , prioritize by “.pxPriority“ in the descending order and choose Output as All.
B9. Join this prioritize component ”Prioritize Offer” to the filter component,”MaxOffer”. In the filter, add the condition
@if(.MaxOffers<0,true,@if(.MaxOffers=0,false,.pxRank<=.MaxOffers))
B10. Connect the filter component ”MaxOffer” to the other filter component named “Has Children“. In this filter add the condition check as
.IsParentTreatment
C.  Import Substrategy as Embedded strategy : For each ParentTreatment in HasChildren
Iterate over HasChildren
and access the data as ParentTreatment and add the below conditions check only iterate over when
.BundleParentTreatment = .pyName


1387
C1. Join the set property “Input to For Each“ to the embedded strategy.
C2. In the embedded strategy, use data import component and name it as “Each ParentTreatment“
In the data Import , mention pages as ParentTreatment
C3. join the embedded input to the set property “Set MaxChildren“
In the set property , set .MaxChildren = EachParentTreatment.MaxChildren
.ParentOfferName = EachParentTreatment.OfferName
C4. Join this set property “Set MaxChildren“ to the two group by components.
1. First Group By component, ”Max Propensity”. Do group by With highest .pyPropensity
2. Second Group By Component, “Min Propensity“. Do group by with lowest .pyPropensity
C5. Join the group by component ”Max Propensity” to the filter and name as “Propensity Same for All Childs“. Add the below condition
@equals(MaxPropensity.pyPropensity,MinPropensity.pyPropensity)
C6. Join the group by component ”Min Propensity” to the filter and name as “Propensity  not Same for All Childs“. Add the below condition in
the filter as @notEquals(MaxPropensity.pyPropensity,MinPropensity.pyPropensity)
C7. Join the filter “Propensity Same for All Childs“ to the Prioritize component “Prioritize By ChildRank“
Prioritize by .ChildRank with Ascending Order by output as All.
C8. Join the filter “Propensity  not Same for All Childs“ to the Prioritize component “Prioritize By Propensity“
Prioritize by .pyPropensity with Descending Order by output as All.
C9. Connect both this Prioritize components to the set property named “Save pxRank“
In the set property, set .Rank=.pxRank


In the set property, set .Rank=.pxRank
C10. Connect the set property to the filter “Limit by MaxChildren“. Add the below condition in the filter
.Rank <= .MaxChildren
C11. Join the filter to the end point of embedded strategy.
D. Outside of embedded strategy, create new property named “Output For Each“ and set
.pyPropensity =.ValueDecimal and .ParentChild ="Child"
E. Connect the set property “Output For Each“ and the filter “MaxOffer“ to the result component


1388
Extras Landing Page: Offer Expiry
Impact in Other areas
Dependencies
DB Changes: Create new column in IH table and also extend it to IH View
App Changes:
Logic Changes:
1. Create two new properties in the form tab in all the offers decision data (All BusinessPurposes)
2. OfferExpiry(Text) and OfferExpiryInterval(Text)
Create new Strategy: SetExpiryPeriod(TBC)
Enable External Input
Join external input to two filters500539 Build Offer Expiry Date validation into Strategy Framework
App Yes
DB Yes  Extend IH and IH View with new column
Knowledge Transfer Yes
PM Tool Yes
PM Tool KT Documentation Yes  Area Yes/No Comments
PM Tool Yes
App Yes
DB Yes  e2e testing is done once column is created in IH tableArea Yes/No Comments
OfferExpiry DatetimeProperty Name Data Type
Data Transform Changes Map new property in the data transform
“pyInteractionHistoryConfiguration“
Create new property in Data-Decision-IH-Fact class OfferExpiryIH Class changes(VFUK-FW-AOMFW-Data-InteractionHistory) Map OfferExpiry property in the external mapping tab


1389
In the first filter, “Only Batch and TIL execution modes“ check if
@String.equalsIgnoreCase(.ExecutionMode,TIL)||@String.equalsIgnoreCase(.ExecutionMode,Batch)
In the second filter, check @String.notEqualsIgnoreCase(.ExecutionMode,TIL)&&@String.notEqualsIgnoreCase(.ExecutionMode,Batch)
and connect it to the result component
Import the sub strategy “GetIHAtCustomerLevel“ and to fetch the Latest OfferExpiry value for the Offer
Create new SR Property ExpiryPeriod(DateTime)
Connect the first filter “Only Batch and TIL execution modes“ to the data join and name it as, ”Join the Offers from IH to get OfferExpiry”.
In this data join , join with sub strategy GetIHAtCustomerLevel with condition pyName=Offername and in the properties mapping, map
.ExpiryPeriod = .OfferExpiry.
When .ExpiryPeriod is not null and .ExpiryPeriod is in future and .ExpiryPeriod > Currentdate then
set OfferExpiry = .ExpiryPeriod  else
When ExpiryPeriod is null then set the below conditions
a) if OfferExpiryInterval=””, ““
a) else if OfferExpiryInterval =”Years” then set OfferExpiry = @DateTime.addCalendar(@getCurrentTimeStamp(),.OfferExpiry,"","","","","","")
b) else if OfferExpiryInterval =”Months” then set OfferExpiry =
@DateTime.addCalendar(@getCurrentTimeStamp(),"",.OfferExpiry,"","","","","")
c) else if OfferExpiryInterval =”Days” then set OfferExpiry = @DateTime.addCalendar(@getCurrentTimeStamp(),"","","",.OfferExpiry,"","","")
d) else OfferExpiryInterval =”Set” then set OfferExpiry =
@DateTime.getCurrentTimeStamp()+.OfferExpiry
Update Strategy: ApplyTreatmentDataToTreatments


@DateTime.getCurrentTimeStamp()+.OfferExpiry
Update Strategy: ApplyTreatmentDataToTreatments
In the data join, “AllTreatmentsWithProperties“ in the properties mapping tab, map .OfferExpiry = .OfferExpiry
Update Strategy: ApplyOfferVariationsDataToTreatments
Update the data join, MapOfferVariationsDataToTreatments, in the properties mapping tab, map .OfferExpiry = .OfferExpiry
Update Strategy: ApplyOfferDataToOfferToOfferVariations
Update the data join, MapOfferDataToOfferToOfferVariations in the properties mapping tab, map .OfferExpiry=.OfferExpiry
Create new Strategy: OfferExpiry
Get latest OfferExpiry from IH and if it not null then compare if Current date < OfferExpiry then return true else set error message. (Fetch
error message from AOMBusinessConfig data type)
Update Strategy: IdentifyEligibleOffers
After the set property , set execution Mode import the sub strategy SetExpiryPeriod and connect it to the substrategy called
“SetOfferLevelPropensity“


1390
Extras Landing Page: Send Offer SMS
Impact in Other areas
Dependencies
DataType Changes AOMConfig:

Note: Current requirement is that Microsite link in SMS Channel must be sent from Batch and TIL execution modes only.
Logic Changes:
Create New Strategy: SetLandingPageCTA
If TreatmentDynamicVariable1 property contains [LandingPageCTA]
then perform the below steps.
Connect the external input to the set property and in the set property
1. From the AOMConfig data type fetch Microsite URL( example : http://vodafone.co.uk/id=) )
and set it to one temperory variable lets say MicrositeURL(TextType)
2. Create Metadatacode SR property of Text Type
3. Then in the same set property set .Metadatacode= call new function SaveOffersMetadata(TBC) (
Primary.CustomerID,"pxInteractionID,Channel,OfferName,OfferVariant,TreatmentName,TreatmentVariant”,myStepPage)
4. Create LandingPageCTA SR property447589 Send Offer SMS
App Yes  It has App Dependency.
DB No
Knowledge Transfer Yes
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments
Microsite OffersURL https://pega.data.dev1.vodafoneaws.co.uk/MS/index.html?Site=OffersConfigType ConfigName ConfigValue


1391
5.  Set .LandingPageCTA = MicrositeURL + .Metadatacode
6. Assign .TreatmentDynamicVariable1 = @String.replaceAll(.TreatmentDynamicVariable1,"[LandingPageCTA]",.LandingPageCTA)
else if .TratmentDynamicVariable1 does not contains [LandingPageCTA]
then connect directly to the result component.
Update Strategy: PopulateOutputPropertiesForSMSByTrigger
Remove the connection between set property “UseDataTokensforTariffMigration” and set property “
SetDataTokenNameandErrorMessage“
Connect the set property,”UseDataTokensforTariffMigration” to the new sub strategy “SetLandingPageCTA“
Connect the sub strategy “SetLandingPageCTA“ to the set property “SetDataTokenNameandErrorMessage“
Update Strategy: PopulateOutputPropertiesForSMSByBatch
Remove the connection between set property,”UseDataTokens” to the set property,”SetSMSBodyText”
Join the set property,”UseDataTokens” to the new strategy “SetLandingPageCTA“
Connect the sub strategy “SetLandingPageCTA“ to the set property to the set property,”SetSMSBodyText”
Note: Updating ProcessEvent and GetNBA execution modes so in future Microsite link can be sent in other execution modes also.
Update Strategy: SetSMSDataTokens
Remove the connection between Set Property and SMSBodytext components.
Connect the set property to the new sub strategy SetLandingPageCTA and connect this sub strategy to the SMSBodytext component.
Update Strategy: SetSMSTokensForIVR
Remove the connection between set property “ReplaceDataTokens“ to the result component.
Join the set property “ReplaceDataTokens“ to the new sub strategy SetLandingPageCTA  and connect it the result.


1392
ApplyFUTCheck Optimization

Impact

Update Strategy: A p p l y F U T C h e c k
Remove the connection from the filter, “Apply FUT Check“ to the result component.
Connect the filter “Apply FUT Check“ to the switch component. Name the switch component as “Choose ApplyFUTCheck or Not“
In the switch component , choose filter “Apply FUT Check“ if the condition FUTisenabled.FUTList != "" is satisfied else choose False
Filter(Add the condition as false).
Connect the switch component to the result component.
 511949 Optimize AppyFuTCheck Strategy
Logic Yes  A r e a Y e s / N o C o m m e n t s


1393
Extend Target/Control Logic at Treatment Level for Batch and TIL Execution
Modes
Impact in Other areas
 Dependencies
Logic Changes:
Note:
Control Group percentage can be defined at Offer Level and Treatment Level.
Control Group defined at Treatment Level overrides the control group defined at Offer Level.
Control Group Percentage must be defined only for Independent Parents and Parents Treatments (which has child treatments)
Control Group Percentage should not be defined for Child Treatments

Below Strategy need Changes:
PopulateControlGroupPercentage
 SelectBetweenOfferORTreatmentPotentialControlSplit
IdentifyBestOBTreatmentsByBatch
IdentifyBestTreatmentsByTriggers
Update strategy: PopulateControlGroupPercentage
Remove the connection between the external input to the set property ,”Set ControlGroupPercentage & ControlGroupLevel”
Rename the set property ,”Set ControlGroupPercentage & ControlGroupLevel” to “Set
TreatmentControlGroupPercentage,ControlGroupPercentage & ControlGroupLevel“
Connect the External Input to the two filters.502913 Extend Control Group Feature at Treatment Level for Batch and TIL
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB NoArea Yes/No Comments


1394
A. Connect it to the filter and name it as “Parent Treatments“ and add the condition as @String.equalsIgnoreCase(.ParentChild,"Parent")
B. Connect the filter, “Parent Treatments“ to the set property, “Set TreatmentControlGroupPercentage,ControlGroupPercentage &
ControlGroupLevel“
C. Connect the External Input to other filter and name this filter as “Child Treatments“ and add the condition in the filter as
@String.equalsIgnoreCase(.ParentChild,"Child")
D. Join this filter to the data join, “Map Parent Data to Child“ and join this with the set property, “Set
TreatmentControlGroupPercentage,ControlGroupPercentage & ControlGroupLevel“ and check the below condition as
.BundleParentTreatment = .pyName and in the properties mapping map the below properties as
.TreatmentControlGroupPercentage = 0
.ControlGroupPercentage = 0 and .ControlGroupLevel = .ControlGroupLevel
Note: Check the check box for Exclude source component results that do not match join condition.
E. Join the data join and set property to the result component.
Update strategy: SelectBetweenOfferORTreatmentPotentialControlSplit
For the data join, ”Join Child Treatments with ParentTreatments” component, in the properties mapping map below properties
.PotentialControlFlag=”Target” and .InControlGroup=”N”
Update Strategy: IdentifyBestOBTreatmentsByBatch
Remove the sub strategy “ApplyPotentialControlSplit“ which is in between sub strategy “PopulateControlGroupPercentage“ and the
sub strategy “PopulateDedupeScore“
Connect the sub strategy “PopulateControlGroupPercentage“ to the existing sub strategy called
“SelectBetweenOfferORTreatmentPotentialControlSplit“ and the sub strategy “PopulateDedupeScore“


1395
Update Strategy: IdentifyBestTreatmentsByTriggers
Remove the sub strategy “ApplyPotentialControlSplit“ which is in between sub strategy “PopulateControlGroupPercentage“ and the
sub strategy “PopulateDedupeScore“
Connect the sub strategy “PopulateControlGroupPercentage“ to the existing sub strategy called
“SelectBetweenOfferORTreatmentPotentialControlSplit“ and the sub strategy “PopulateDedupeScore“


1396
NBA FW - Model migration to new pipeline for HBB
Impact in Other areas
 Dependencies
Update Dataflow: PrepareRealtimeData
Add the Data Transform called PreparePredictiveModelGroupFromMS after the compose “Get Model Scores“ and before the
compose shape “Get Subscription Invoice“
Update Strategy: CalculateChurnScoreRange
A. In the strategy, CalculateChurnScoreRange, remove the data import component, ”Import Model Score”
In the set property, ”Populate Model Data” set below properties
 .ValueText1=”M_7”
.pyPropensity = Primary.PredictiveModelGroup(.ValueText1).OUTPUT(experimental_probability)
.ModelId = Primary.PredictiveModelGroup(.ValueText1).OUTPUT(ModelId)
.ValidityTimestamp = Primary.PredictiveModelGroup(.ValueText1).OUTPUT(ValidityTimestamp)
.ModelRunTimestamp = Primary.PredictiveModelGroup(.ValueText1).OUTPUT(ModelRunTimestamp)
 B. Connect this set property to the existing filter called “Valid Model Scores“

 AOM-2859 Consume Model 7 in AOM via new pipeline
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1397
Release 2.10


1398
Assisted Upgrade - Record Deal Response

Impact in Other areas
 Dependencies
Summary of changes to APIs (For reference only)
Changes in Strategy FW
A. Update to strategy call for GetRecommendation API
A1. New Strategy - PopulateDecisionMetadataAttributes
A2. Update strategy - PopulateOutputPropertiesForNBAA
B. Update to strategy call to GetProductList API
B1. Of fer Catalog Update
B2. New strategy - AssistedPropositionsLookup
B2. Update strategy - PopulateOutputPropertiesForDevice
B4. Update strategy - PopulateOutputPropertiesForT ariff
B5. Update strategy - PopulateOutputPropertiesForInsurance
B6. Update strategy - PopulateOutputPropertiesforAddOn
B7. Update strategy GetDiscountList
B8.Update strategy - PopulateOutputPropertiesForDiscounts
B8. Update strategy - PopulateOutputPropertiesForAccessories
C. New strategy call for SubmitBasket API
C1. New Strategy - CaptureDealResponse
C2. Update data set - RecommendationItems
C3. New Data Flow - CaptureDealResponse (Subscription class)
Impact in Other areasIH RecordDeal-Response 406051 Net Rev: ReportingIH RecordDeal-Response 405201 Record Deal History: Record the
item part of the deal that has
been Accepted
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes Changes to SubmitBasket API
Changes to GetRecommendation API
Changes to GetProductList API
Update to Class VFUK-FW-AOMFW-Data-InteractionHistory
Create new page property InteractionHistoryReporting of class VFUK-FW-
AOMFW-Data-InteractionHistoryReporting
Create new pagelist property RecommendationItemsList of class VFUK-FW-
AOMFW-Data-RecommendationItemsArea Yes/No Comments


1399
 Dependencies

Summary of changes to APIs (For reference only)
LineItems object (as well as ChildLineItems object) in relevant Request/Response of the VARD APIs will introduce a new Text Value Group
property - DecisionMetadata to hold any proposition level data. This property will be populated by VADR app from proposition level property
- DecisionMetadataAttributes which will only contain comma separated list of SR property names (populated in the SR pages returned by
strategy) that will be held in the Text Value Group.
The proposition level property - DecisionMetadataAttributes should be returned by the strategy for the following API calls -
GetRecommendation (Ref - https://vodafone.sharepoint.com/sites/AoMProgramme/_layouts/15/Doc.aspx?
OR=teams&action=edit&sourcedoc={CFBE4A7E-4829-400D-B028-772B11CFD7E5} )
GetProductList (Ref - https://vodafone.sharepoint.com/sites/AoMProgramme/_layouts/15/Doc.aspx?
OR=teams&action=edit&sourcedoc={151CEA24-A586-49B9-B50D-C1C129A9583B} )

The text Value Group property - DecisionMetadata will be used to map the LineItems/ChildLineItems to match the proposition data for the
following API calls -
SubmitBasket (Ref - https://vodafone.sharepoint.com/sites/AoMProgramme/_layouts/15/Doc.aspx?OR=teams&action=edit&sourcedoc=
{F74039F3-8C0B-44B4-8487-9A7236ED7D93} )

Any number of SR property names can be passed to DecisionMetadataAttributes as required per LineItems/ChildLineItems SR pages.


Changes in Strategy FW
A. Update to strategy call for GetRecommendation API
Update flow to populate   DecisionMetadataAttributes with the attribute names to Pass VDAR.
VDAR will store those attributes with Values populated  and send back to AOM when deal is accepted.

A1. New Strategy - PopulateDecisionMetadataAttributes
Populate each SR page input with the following -
Set common SR property names  for all product types
Set DecisionMetadataAttributes = “OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID“
Create forks for each product type (e.g. Tariff, Handset,Fee etc.) that gets returned as LineItems or ChildLineItemsDB No
PM Tool No
App Yes  Logic work is dependant on App changes
DB No  Area Yes/No Comments


1400
For Addon  set addtionaly AddonNetMafIncFlag
For Discount  set additionally CohortID,RecommendationSubType
For Handset Set Deviceloans15benefit
For each fork have the option to append more SR property names to PopulateDecisionMetadataAttributes specific to each types of
propositions
A2. Update strategy - PopulateOutputPropertiesForNBAA
Call sub-strategy PopulateDecisionMetadataAttributes for LineItems and ChildLineItems
B. Update to strategy call to GetProductList API
Update flow to
Map Products  to Assisted upgrade propositons.
populate   DecisionMetadataAttributes with the attribute names to Pass VDAR. (also populate the values for SR attributes available in
DecisionMetadataAttributes)
B1. Offer Catalog Update
Add UpgradeAccessory ,UpgradeInsurance  Offer+Treatment data to proposition data.
Configure related Parent-Child relations.
B2. New strategy - AssistedPropositionsLookup
create a strategy similar to AllPropositionsLookup strategy to return treatment SR page with all relevant details of Offer
Import only Assisted propositions - by Squad Only Renew offers
Create forks for ProductRecommendationType (e.g. Tariff, Handset,Fee etc.) just before the Results so that  each types of propositions
can be referenced individually by calling strategies
B2. Update strategy - PopulateOutputPropertiesForDevice
Populate  value to Deviceloans15benefit  =.HandsetLoanPriceExVAT-(.HandsetCostExVAT+.UpliftCost)
.HandsetCostExVAT=@divide(.HandsetCost,(1+.VATCode))
HandsetLoanPriceExVAT=@divide(.HandsetLoanPrice,(1+.VATCode))
parameters need for formula should be populated in upper strategy (GetDeviceList)


parameters need for formula should be populated in upper strategy (GetDeviceList)
Create as Substrategy for Device Matching >MatchTariffswithPropsotions
Import only device propositions from sub-strategy AssistedPropositionsLookup
Match to list device data in strategy  to proposition data and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID and all other relevant
Matching Condition
Currently there is only one TTV combination for Handset, which will come  in the output of AllPropositionsLookup for handset.
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
call sub-strategy PopulateDecisionMetadataAttributes
connect to ResultsUpgradeHandset_InboundCC DefaultOfferVariant DefaultTreatmentVariant


1401
B4. Update strategy - PopulateOutputPropertiesForTariff
Create as Substrategy for Tariff Matching >MatchTariffswithPropsotions
Import only tariff propositions from sub-strategy AssistedPropositionsLookup
Match to list of tariff data in strategy to related proposition data  and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID and all other relevant
Tariff Matching Condition
Offer Matching :There are different Tariff offers according to ToPathway customer is moving to
If Watch Customer > Select Proposition where  ToPathway=ToWatch
If not Watch Customer>  Use SegmentofTariff , SIMOnly &  Duration attributes to match to tariff propositions
ToPathway<> “ToWatch”
Tariff.SegmentofTariff= Proposition.TariffSegment
Tariff.SIMOnly=  Proposition.TariffType (Please consider that Tariff.SIMOnly has Y/N values , but Proposition.TariffType  has
SIMOnly/Handset  values, do related conversion before matching . SIMOnly=Y means SIMOnly  ,SIMOnly=N means Handset
)
If Tariff.Duration= 30 select  Promotion.DefaultContractTenure=30 else Promotion.DefaultContractTenure!=30
Offer Variant Matching : Different offer variant according to customer CRE type. Select related Offer variant name according to
customer CRE type.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
Make Sub strategy call to MatchAddonswithPropsotions,MatchDiscountswithPropsotions to match promotional addons/discounts to
related proposition data. (which are child item of tariff)
Make Sub strategy call to MatchFeeswithPropsotions, to match fees to related proposition data. (which are child item of tariff) (fee


calculation logic will be introduced with sprete us)
call sub-strategy PopulateDecisionMetadataAttributes
connect to Results
New Strategy - MatchFeeswithPropsotions
Matching condition
Currently there is only one TTV combination for Fee, which will come  in the output of AllPropositionsLookup for Fee. No matching
condition needed.
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
B5. Update strategy - PopulateOutputPropertiesForInsurance
Create as Substrategy for Insurance Matching >MatchInsuranceswithPropsotions
Import only insurance propositions from sub-strategy AssistedPropositionsLookup
Match to list of  insurance data in strategy  to proposition data and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID and all other relevant
Matching condition
Currently there is only one TTV combination for Insurance, which will come  in the output of AllPropositionsLookup for insurance. No
matching condition needed.
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
call sub-strategy PopulateDecisionMetadataAttributes
connect to Results


1402
B6. Update strategy - PopulateOutputPropertiesforAddOn
Populate value  to AddonNetMafIncFlag from NetMafAddonListConfig decision data for all addons if available, else by default it is false.
Create as Substrategy for Addon Matching> MatchAddonswithPropsotions
Import only AddOn propositions from sub-strategy AssistedPropositionsLookup
Match to list of AddOn data in strategy  to proposition and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID and all other relevant
Matching condition
Currently there is only one TTV combination for Addon, which will come come in the output of AllPropositionsLookup for Addon . No
matching condition needed.
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
call sub-strategy PopulateDecisionMetadataAttributes
connect to Results
B7. Update strategy GetDiscountList
Populate  value to CohortID,RecommendationSubType  > this information will be part of DecisionMetadata and will be used for Submit
basket flow to store in IH.
Add an Set operation after “Discounts less or equal to Max Upgrade Discount Amount” filter , populate attributes from
CalculateMaxDiscountForBasket
RecommendationSubType=CalculateMaxDiscountForBasket.DiscountType
CohortID=CalculateMaxDiscountForBasket.CohortID
B8.Update strategy - PopulateOutputPropertiesForDiscounts
Create as Sub-strategy for Discount Matching> MatchDiscountswithPropositions
Import only Discount propositions from sub-strategy AssistedPropositionsLookup
Match to list of Discount data in strategy  to proposition data and set SR properties -


Match to list of Discount data in strategy  to proposition data and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID and all other relevant
Matching condition
Currently there are different  TTV combination for Discount , which will come come in the output of AllPropositionsLookup for
Discount . as discount type not applicable for this flow select  DefaultTreatmentVariant
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
call sub-strategy PopulateDecisionMetadataAttributes
connect to Results

B8. Update strategy - PopulateOutputPropertiesForAccessories
Create as Substrategy for Accessories Matching> MatchAccessorieswithPropsotions
Import only Accessories propositions from sub-strategy AssistedPropositionsLookup
Match to list of Accessories data in strategy  to proposition data and set SR properties -
OfferName,OfferVariant,TreatmentName,TreatmentVariant,OfferID,TreatmentID  and all other relevant
Matching condition
Currently there is only one   TTV combination for Accessories , which will come come in the output of AllPropositionsLookup for
Accessories .


1403
Offer /Offer Variant Matching : No matching condition needed for offer/offer variant.
Treatment Matching:   Filter only related channel  proposition according to Channel information in request.
Treatment Variant Matching : Select DefaultTreatmentVariant
call sub-strategy PopulateDecisionMetadataAttributes
connect to Results
C. New strategy call for SubmitBasket API
AU IH

C1. New Strategy - CaptureDealResponse
Get proposition details from DecisionMetadata text value group from API Request - LineItems & ChildLineItems
Call sub-strategy - AssistedPropositionsLookup to get all assisted propositions.
Import LineItem & Child LineItem Details coming from Submit basket Input.
Match Line items/Child line items to  propositions with proposition details from DecisionMetadata text value to select the treatment
proposition along with all proposition details .  (Match  on OfferName,OfferVariant,TreatmentName,TreatmentVariant)
Please note that the SR page from proposition import should be returned by the strategy as it is required for IH write.
Parent proposition  will be written to IH, IH Reporting and RecommendationItems while all propositions will be written to
RecommendationItems
3 types of deal should be identified - Original Deal or Edited Deal and Build your Own deal (from No Recommendation as per the logic
below -

Import  IH & IH Reporting & Recommendation details for original deal.
RecommendationType> LOGIC / COMMERCIAL/EDITED>  use RecommendationId in request to filter IH record
RecommendationType > empty (BYO) , Select latest  IH record. (outcome =Selected or Norecommendation  and ?)
Populate the IH properties as per table below - (Single Record will be stored, Reflecting Tariff Record details)

Original Deal Not NULL LOGIC or COMMERCIAL
Edited Deal Not NULL EDITED


Original Deal Not NULL LOGIC or COMMERCIAL
Edited Deal Not NULL EDITED
Build Your Own NULL Not applicable - any value will be ignoredScenario Input.RecommendationID Input.RecommendationType
pxfactid Yes Yes Auto Populated Wil be generated
by PegaAuto Populated Wil be generated
by Pega
pxinteractionid Yes Yes Auto Populated Wil be generated Auto Populated Wil be generated AOM IH Column
NameStore for Edit
DealStore for BYO What to
populate  for
Response
(Accepatance
of  Original
Rec.  or Edited
Rec.)Details What to
populate  for
Response
(Accepatance
of  BuildYour
Own)Details-BYO


1404
by Pega by Pega
pysubjectid Yes Yes Input Data from Subscription
dataInput Data from Subscription
data
serviceid Yes Yes Input Data from Subscription
dataInput Data from Subscription
data
contactid Yes Yes Input Data from Subscription
dataInput Data from Subscription
data
contactdetail Yes Yes Input Data from Subscription
dataInput Data from Subscription
data
accountid Yes Yes Input Data from Subscription
dataInput Data from Subscription
data
businesspurpose Yes Yes Proposition Data Proposition Data
offerid Yes Yes Proposition Data Proposition Data
offername Yes Yes Proposition Data Proposition Data
offervariant Yes Yes Proposition Data Proposition Data
treatmentid Yes Yes Proposition Data Proposition Data
pyname Yes Yes Proposition Data Proposition Data
treatmentvariant Yes Yes Proposition Data Proposition Data
cellcode No No not set & default
values will be
populated not set & default
values will be
populated
pyoutcome Yes Yes Set  Value “Accepted” Set Fixed Value “Accepted”
pxoutcometime Yes Yes Set  Value Current Date Set Fixed Value Current Date
pychannel Yes Yes Input Data Context data Input Data Context data
targetsubchannel Yes Yes Input Data Context data Input Data Context data
incontrolgroup No No not set & default
values will be
populated not set & default
values will be
populated
productrecommend
ationYes Yes Input Data ID of the product
in LineItems
/ChildLineItems  Input Data ID of the product
in LineItems
/ChildLineItems
pxdecisiontime Yes Yes Auto Populated Will be generated
by PegaAuto Populated Wil be generated
by Pega
pydirection Yes Yes Input Data Use Input
channel info Input Data Use Input


by Pega
pydirection Yes Yes Input Data Use Input
channel info Input Data Use Input
channel info
callertype No No not set & default
values will be
populated Not set & default
values will be
populated


1405
callcentrephoneno No No not set & default
values will be
populated Not set & default
values will be
populated
callcentreoutcome No No not set & default
values will be
populated Not set & default
values will be
populated
diallingcompletedflgNo No not set & default
values will be
populated Not set & default
values will be
populated
ntid No No not set & default
values will be
populated Not set & default
values will be
populated
tilresponse No No not set & default
values will be
populated Not set & default
values will be
populated
rampupflag No No not set & default
values will be
populated Not set & default
values will be
populated
rampupvalue No No not set & default
values will be
populated Not set & default
values will be
populated
productrecommend
ationtypeYes Yes Input Data Type of the
product in
LineItems
/ChildLineItemsInput Data Type of the
product in
LineItems
/ChildLineItems
eventtype Yes Yes From
OriginalDeal
(Upgrade) From
OriginalDeal
subeventtype Yes Yes From
OriginalDeal
(NBA/RefineBy) From
OriginalDeal
prospectflag No No not set & default
values will be
populated not set & default
values will be
populated
agentusername Yes Yes Input Data Context Input Data Context
storeid Yes Yes Input Data Context Input Data Context
ihrid Yes Yes Set  Value Use pega


storeid Yes Yes Input Data Context Input Data Context
ihrid Yes Yes Set  Value Use pega
functionSet  Value Use pega
function
channelconnectioni
dNo No not set & default
values will be
populated not set & default
values will be
populated


1406
ivrroutingrecommen
dationNo No not set & default
values will be
populated not set & default
values will be
populated
channelcontentid No No not set & default
values will be
populated not set & default
values will be
populated
pypropensity Yes No From
OriginalDeal (if
Product avaliable
in original deal)
/not set & default
values will be
populated((if
Product is not
avaliable in
original deal)) not set & default
values will be
populated
clickedurl No No not set & default
values will be
populated not set & default
values will be
populated
blocked No No not set & default
values will be
populated not set & default
values will be
populated
hardbounce No No not set & default
values will be
populated not set & default
values will be
populated
intent Yes Yes From
OriginalDeal From
OriginalDeal
aomjourneyid No No not set & default
values will be
populated not set & default
values will be
populated
aomjourneystep No No not set & default
values will be
populated not set & default
values will be
populated
aomselectiontype No No not set & default
values will be
populated not set & default
values will be
populated
offervalue Yes No From
OriginalDeal (if
Product avaliable
in original deal)
/not set & default
values will be


Product avaliable
in original deal)
/not set & default
values will be
populated((if
Product is not  not set & default
values will be
populated


1407
available in
original deal))
intentscore Yes Yes From
OriginalDeal From
OriginalDeal
intentrelevance Yes Yes From
OriginalDeal From
OriginalDeal
businesspurposesc
oreYes Yes From
OriginalDeal From
OriginalDeal
offerweight Yes No From
OriginalDeal (if
Product avaliable
in original deal)
/not set & default
values will be
populated((if
Product is not
avaliable in
original deal)) not set & default
values will be
populated
inaomcontrolgroup No No not set & default
values will be
populated not set & default
values will be
populated
controlgrouplevel No No not set & default
values will be
populated not set & default
values will be
populated
parentchild Yes Yes Set Value P Set Value P
parentoffername Yes Yes not set  not set
executionmode Yes Yes Set Value NBAA Set Value NBAA
mandatory No No not set & default
values will be
populated not set & default
values will be
populated
pxrank Yes No From
OriginalDeal (if
Product avaliable
in original deal)
/not set & default
values will be
populated((if
Product is not
avaliable in
original deal)) not set & default
values will be
populated
pxpriority Yes No From
OriginalDeal (if
Product avaliable
in original deal)
/not set & default  not set & default
values will be
populated


1408

Populate the IH Reporting properties as per table below (Single Record -represent Tariff data/deal level data)
 values will be
populated((if
Product is not
avaliable in
original deal))
createts Yes Yes Set Value  Set Value
futlist No No not set & default
values will be
populated not set & default
values will be
populated
caseid Yes Yes Input Data Context Data Input Data Context Data
RecommendationIDYes Yes InputData/Set
ValueIf original Deal,
Use
Recommendatio
nID in context
If edited deal set
in logic with Pega
functionSet Value set in logic with
Pega function
OriginalRecommen
dationIDYes Yes InputData Use
Recommendatio
nID in contextFrom
OriginalDealPopulate with
latest
recommendation
ID
ihrid Yes Yes  Set Value Generated in
previous StepSet Value Generated in
previous Step
pysubjectid Yes Yes  Input Data  Input Data
currentaddonlistYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
recommendedad
donlistN/A N/A  N/A
simopathwaymo
delattributesYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
ivrcallreason No No  not set &
default values
will be
populated not set &
default values
will be
populated
prepay_postpay
_typeNo No  N/A Currently not
set for
repsonse flows N/A  AOM IH
Reporting
Column NameStore for Edit
DealStore for BYO Reporting Data
is Pre/Post


Column NameStore for Edit
DealStore for BYO Reporting Data
is Pre/Post
UpgradeWhat to
populate  for
Response
(Accepatance
of  Original
Rec.  or Edited
Rec.)Details What to
populate  for
Response
(Accepatance
of  BuildYour
Own)Details-BYO


1409
in non assisted
part.. We may
need to verify
with Amarpreetconsr_enterprise
_flgNo No  N/A N/A
mms_mktg_cons
ent_flgNo No  N/A N/A
sms_mktg_cons
ent_flgNo No  N/A N/A
obc_mktg_conse
nt_flgNo No  N/A N/A
location_data_co
nsent_flgNo No  N/A N/A
traffic_data_con
sent_flgNo No  N/A N/A
profiling_consent
_flgNo No  N/A N/A
email_mktg_con
sent_flgNo No  N/A N/A
whitemail_mktg_
consent_flgNo No  N/A N/A
deceased_flg No No  N/A N/A
survey_mktg_co
nsent_flgNo No  N/A N/A
digital_flg No No  N/A N/A
voice_biometric_
flgNo No  N/A N/A
social_media_co
nsent_flgNo No  N/A N/A
pres15maf Yes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
pres15mafsourc
eYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
s15thresholdvalu
eYes No PreUpgradeDe
tailsFrom
OriginalDeal N/A
universaltariffmo
delrecrankN/A N/A
posts15maf Yes Yes PostUpgradeD
etailsSet Value
S15NetMAFDel
ta+pres15ma
fSet Value S15NetMAFDel
ta+pres15ma
f


1410
s15selectionrankYes No  From
OriginalDeal (if
Product
avaliable in
original deal)
/not set &
default values
will be
populated((if
Product is not
avaliable in
original deal)) N/A
skips15threshold
indYes No  From
OriginalDeal (if
Product
avaliable in
original deal)
/not set &
default values
will be
populated((if
Product is not
avaliable in
original deal)) N/A
pretariffmaf Yes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
preaddoninclude
dnetmafcalcYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
recommendation
typeYes Yes  Set Value Get from
Original
Recommendat
ion
if it is
changed  add
"Edited"
keyword at the
endSet Value BuildYourOwn
segmentstrategyYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
customerhasdisc
ountindYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
customerchurnb
andYes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
hastrigger Yes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal


1411
Populate the RecommendationItems properties as per table below (for each item in deal)
 recommendedpo
sitionYes No  From
OriginalDeal N/A
agenttoolkit Yes Yes  Set Value  User Division
to calculate
TeamSet Value Division to
calculate Team
agentdivision Yes Yes  Input Data  Input Data
modeldetails Yes Yes PreUpgradeDe
tailsFrom
OriginalDeal From
OriginalDeal
netrevenue Yes Yes PostUpgradeD
etailsInput Data Input Data Input Data
RecItemID Yes Yes  Set Value  Use Pega
function to
generate
unique ID for
each rowSet Value  Use Pega
function to
generate
unique ID for
each row
Recommendati
onIDYes Yes  Set Value Generated in
previous
StepSet Value Generated in
previous
Step
subscriptionid Yes Yes  Input Data  from
Subscription
data Input Data
serviceid Yes Yes  Input Data  from
Subscription
dataInput Data
accountid Yes Yes  Input Data  from
Subscription
dataInput Data
businesspurpos
eYes Yes  From
OriginalDeal
(IH) From
OriginalDeal
(IH)
offerid Yes Yes  Proposition
Data Proposition
Data
offername Yes Yes  Proposition
Data Proposition
Data
offervariant Yes Yes  Proposition
Data Proposition
Data  AOM IH
Column NameStore for
Edit DealStore for
BYOReporting
Data is
Pre/Post
UpgradeWhat to
populate  for
Response
(Accepatanc
e of  Original
Rec.  or
Edited Rec.)Details What to


e of  Original
Rec.  or
Edited Rec.)Details What to
populate  for
Response
(Accepatanc
e
of  BuildYour
Own)Details-BYO


1412
treatmentid Yes Yes  Proposition
Data Proposition
Data
treatmentname Yes Yes  Proposition
Data Proposition
Data
treatmentvariantYes Yes  Proposition
Data Proposition
Data
outcome Yes Yes  Set Value “Accepted“ Set Value “Accepted“
outcomedate Yes Yes  Set Value  Current
Date-timeSet Value  Current
Date-time
targetchannel Yes Yes  Input Data  Sub
channel Input Data  Sub
channel
productrecomm
endationYes Yes  Input Data ID of the
product in
LineItems
/ChildLineIte
ms  Input Data ID of the
product in
LineItems
/ChildLineIte
ms
decisiondate Yes Yes  Auto
Populated Auto
Populated
channeldirectio
nYes Yes  Set Value Use Input
channel info Set Value  Use Input
channel info
productrecomm
endationtypeYes Yes  Input Data  Type of the
product in
LineItems
/ChildLineIte
ms  Input Data   Type of the
product in
LineItems
/ChildLineIte
ms
parentchild Yes Yes  Proposition
Data Proposition
Data
parentoffernam
eYes Yes  SetValue Offer name
of Tariff
productOffer name
of Tariff
product
createts Yes Yes  SetValue  Current
Date-timeSetValue  Current
Date-time
modeldetails No No PreUpgrade
DetailsN/A  N/A
universaltariffm
odelrecrankNo No UpgradeDet
ailsN/A  N/A
addonnetmafinc
flagYes Yes UpgradeDet
ailsInput DataExtract
from
DecisionMe


addonnetmafinc
flagYes Yes UpgradeDet
ailsInput DataExtract
from
DecisionMe
tadataInput DataExtract
from
DecisionMe
tadata
cohortid Yes Yes UpgradeDet
ailsInput DataExtract
from From Input  Extract
from


1413
DecisionMe
tadataDecisionMe
tadata
recommendatio
nselectionblockNo No UpgradeDet
ailsN/A  N/A
recommendatio
nsubtypeYes Yes UpgradeDet
ailsInput DataExtract
from
DecisionMe
tadataFrom Input  Extract
from
DecisionMe
tadata
costincvat Yes Yes UpgradeDet
ailsInput Data  If  Handset
>
TotalCostI
ncludingVA
T
If Accessory
or Fee >
UpfrontPri
ceIncludin
gVAT
else  ,
MonthlyPri
ceIncludin
gVAT
 Input Data  If  Handset
>
TotalCostIncl
udingVAT
If Accessory
or Fee >
UpfrontCost
else  ,
MonthlyPrice
IncludingVA
T
handsetloanpric
eYes Yes UpgradeDet
ailsInput Dataif Product
type =
Handset
TotalCostI
ncludingVA
TInput Dataif Product
type =
Handset
TotalCostI
ncludingVA
T
minupfrontcostYes Yes UpgradeDet
ailsInput Data  Line
item/Child
Line item
detailsInput Data  Line
item/Child
Line item
details
maxtenure Yes Yes UpgradeDet
ailsInput Data  Line
item/Child
Line item
detailsInput Data   Line
item/Child
Line item
details
mintenure Yes Yes UpgradeDet
ailsInput Data  Line
item/Child
Line item
detailsInput Data   Line
item/Child
Line item
detailst
ispromo Yes Yes UpgradeDet
ailsInput Data Line
item/Child


detailst
ispromo Yes Yes UpgradeDet
ailsInput Data Line
item/Child
Line item Input Data   Line
item/Child
Line item


1414
C2. Update data set - RecommendationItems
Add new key - RecommendationID in addition to RecItemID

C3. New Data Flow - CaptureDealResponse (Subscription class)
Source - Abstract (App need to populate Subscription page)
Compose with InteractionHistory data set on CustomerID
Compose InteractionHistory data set with InteractionHistoryReporting data set on IHRId > populate to page InteractionHistoryReporting
Compose InteractionHistory data set with RecommendationItems data set on RecommendationID >  populate to pagelist
RecommendationItemsList
Call strategy - CaptureDealResponse
Primary destination - pxInteractionHistory with filter for Parent SR page only (tariff)
Secondary destination - InteractionHistoryReporting with relevant filter and convert shape to covert SR page to
InteractionHistoryReporting page for Parent SR page only (tariff)
3th destination - RecommendationItems with relevant convert shape to covert SR page to RecommendationItems page  for Parent &
Child SR pages (all SR pages)details - if
Classificatio
n
=”Promotion
al” Y else Ndetails - if
Classificatio
n
=”Promotion
al” Y else N
deviceloans15b
enefitYes Yes UpgradeDet
ailsInput Dataif Product
type =
Handset
extract
from
DecisionMe
tadataInput Dataif Product
type =
Handset
extract
from
DecisionMe
tadata
deallevelrecom
mendationindYes Yes UpgradeDet
ailsSet Value Compare
with Original
deal items  &
Input  deals
items set as
Y for
matchign
records Set Value Will be set to
N
productlevelrec
ommendationin
dYes Yes UpgradeDet
ailsInput DataIsRecommen
ded


ommendationin
dYes Yes UpgradeDet
ailsInput DataIsRecommen
ded
indicator on
del itemsInput Data IsRecomme
nded
indicator on
del items
caseid Yes Yes  Input Data  Context
DataInput Data  Context
Data
isfixedproduct Yes Yes UpgradeDet
ailsInput Data  Line item
details -if
FixedPrice=
True Y else
FInput Data  Line item
details -if
FixedPrice=
True Y else
F


1416
Assisted Upgrade -CRE Control Changes

HL Requirement
Existing recommendation flow takes care of CRE type -Upgrade pathway eligibility
Offer To Offer Variant Eligibility
CRE type check in device recommendation flow
Lifecycle S15 Rules
Change with new requirement  is to
Align Edit flow to use same controls
Update Lifecycle S15 Rules meta data , current S15 grow requirement is applicable only on scenario.
mpacted Areas
Update Decision Data -UpgradeLifeCycleS15RuleConfig configuration
Update configuration, only below configuration will remain508928 Ensuring that the Agents are not able to sell ineligible deals if a
Recommendation was presented
509219 Ensuring that the Agents are not able to sell ineligible deals if No
Recommendations were presented508898 Ensuring that the correct propositions are displayed based on the
CRE results
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation Yes  update EU  Life cycles rule configuration
UI/VADR No  A r e a Y e s / N o C o m m e n t s
PaymHandset PaymLoan WithDevice -99999 -75FromCustomerType ToCustomerType RecommendedDeviceSta
tusContractEndDateFrom ContractEndDateTo


1417
Update Strategy GetListOfValidTariffsFromPC
Add Filter After “Active Handset Tariffs” for valid HSP cases (This filter will satisfy that Handset tariffs will be listed only if CRE type
eligible & There is a handset şn the basket.)
Handset In basket = "" and (CRE Type = Normal or NormalSimoFlex  )
or
Handset In basket != ""
Add Filter After “Active SIMO Tariffs” for Valid cases (This filter will satisfy that SIMO tariffs will be listed only if CRE type eligible & There
is no handset in the basket.)
Handset In basket = "" and (CRE Type = Normal or NormalSimoFlex)
Remove “CREType Check” component
update “Select Tariff List” component to “SIMO & Handset Tariffs“
Connect Handset & Tariff path to “SIMO & Handset Tariffs“ after filters
Update switch condition
ContextProperties.IsWatchSubscription > GetWatchTariffList
else SIMO & Handset Tariffs


1418
Assisted Upgrade- Early Upgrade S15 Control Changes

HL Requirement
Configure the tariff to skip EU S15 Control
Configure Lifecycle Rules at Team Level

Impacted Areas
Configure Product Attributes for Tariff
Use PM tool to configure product attributes
Add a new attribute to Tariff Products .
This attribute is to flag Tariffs to enable/disable  EU S15 control.508847 PM Tool: Being able to manage the list of tariff to exclude from the
Tariff MAF rules in Early Upgrade
508869 Being able to restrict what team will be subject to Tariff MAF Rule in
early upgrade
508880 PM Tool: Being able to manage the Tariff MAF rule in early upgrade
at Team Level508844 Excluding some tariffs from the Tariff MAF rules in Early Upgrade
App No
DB No
Knowledge Transfer No
PM Tool Yes  Add Team as configuration for Life Cycle Rules
Push data to UpgradeLifeCycleS15RuleConfig
PM Tool KT Documentation Yes  Configure EnableEUMafControl product attribute for Tariff
UI/VADR No  Area Yes/No Comments
EnableEUMafControl Boolean True Type Default


1419
Update Decision Data -UpgradeLifeCycleS15RuleConfig
Add a new attribute as Team

Update Strategy-GetListofActiveTariffs
Populate EnableEUMafControl flag form product attributes for tariff records
if ProductAttributes(EnableEUMafControl) =”False”   > False
else True
Update Strategy- CheckUpgradeLifeCycleS15Rule
If EnableEUMafControl =False > skip the logic to  check Life cycle rules , return input record as output.
Team check
Populate Team coming from  UpgradeLifeCycleS15RuleConfig another attributes (Make sure Team coming from input is not override
while matching records from )UpgradeLifeCycleS15RuleConfig.
Update GrowS15 condition add  team check to “True” case ,
Check if UpgradeLifeCycleS15RuleConfig.Team is All (ignore case ) or UpgradeLifeCycleS15RuleConfig.Team contains  the
team coming from input
Update Strategy- ValidateDelete
Populate Team property using AgentTeamfromDivision strategy and reference it into ValidateDelete top path. LineItem path must have
the team property because this path is followed by  “CheckUpgradeLifeCycleS15Rule”
Make sure Team property reaches “CheckUpgradeLifeCycleS15Rule“ strategy
Update Strategy- GetTariffDetailsFromPc
Populate EnableEUMafControl flag form product attributes for tariff records in the Data Import
if ProductAttributes(EnableEUMafControl) =”False”   > False
else True
Add EnableEUMafControl to the Property Mapping of Data Join and make sure it passes through the result.
Update Strategy -CheckEarlyUpgradeForBasket,CalculateMaxDiscountForBasketTeam Text (Multiple) Omni, Saves, SuperSaves,All Type Possible values


1420
Assisted Upgrade -Price Matrix Discount Update

HL Requirement
Current Price Matrix logic consume  configuration from different decision datas.
This change is to use single decision which has Team as indicator.

New Decision Data-PriceMatrix
Create unified single decision data
As is decision data contains some additional tariff attributes which logic does not use, we can clean up them as well
Unique Key is Team-TariffCode-CustomerStarRating
Withdrawn team based as is decision datas509160 Discount Toolkit ( Logic Design Update)
App No
DB No
Knowledge Transfer No
PM Tool Yes  Change push method for price matrix. Push to single decision data (not 3).
Less attributes to push
 Change to PM tool screen where we configure price matrix.
Remove DataAllowance, Tenure,TariffGroup as input.
And remove from export.
PM Tool KT Documentation Yes
UI/VADR No
A r e aY e s / N o C o m m e n t s
Team Text (Single Value)
CustomerStarRating Text (Single Value)
Discount Decimal
TariffCode Text (Single Value)


1421

Update Strategy -CalculatePriceMatrixDiscount
Remove as is  decision datas and place with new decision data
Remove switch component
While importing data to strategy canvas, import only records for Team coming from external input


1422
Assisted Upgrade-Early Upgrade Fee

HL Requirement
In case of Early upgrade , customer need to pay additional fee for upgrade
This fee is calculated in Chordiant & served to AOM though CRE.
Recommendation details should include Fee as Child Item of tariff & it will be fulfilled like other products in deal.

Offer Catalog Changes
Include fee as a new offer
Fee product ID will be a configuration in Ofer To Offer Variant
 508973 Display the Early Upgrade Fee in the selected deal
508994 Being able to report on the Early Upgrade Fee 508953 Displaying the Early Upgrade Fee in the Recommendation Card
App Yes No Change to get recommendation /get
product List APIs

Logic Yes
PMTool no
PMTool KT Documentation Yes Change to offer catalog
UI Yes Recommendation/Selected Deal
New Section to present Fee (Product Type
Fee)
If classification NoDelete Delete button not
shown
If tariff swapped or added to basked fee
comes with child items if applicable.Area Yes/No Area
2.10VFUK - Ass…
08 Sep 2021, 10:21 AMue.xlsx


1423
Source of EU Fee
CRE Provide the details of EU fee datils.
This information is populated to Subcrtion data
Price is in Pence

Update to GetRecommendation Flow
Update Strategy -CalculateUpgradeDeal
New step after DedupeSameRecommendations - CalculateEarlyUpgradeFee
New Strategy - CalculateEarlyUpgradeFee
Input > List of recommendations with product details.
If early upgrade fee <>”” & 0 > add a new SR row to output for  each Tariff
Filter  Tariff Records, (Filter by ProductType=Tariff)
If  early upgrade fee <>”” & 0
Set attributes as
ProductRecommendationType=”Fee”
CostIncludingVAT=FeeIncludingVAT/100
CostExVAT=FeeExcludingVAT/100
DisplayName=”Early Upgrade Fee”
Connect result to output
Non Tariff records > Connect result to output
Output > All Input records  + List of fees
Update Strategy -PopulateOutputPropertiesForNBAA
Update ChildItems Check condition -Add Fee to child item path
@equalsIgnoreCase(.ProductRecommendationType,"Discount")||@equalsIgnoreCase(.ProductRecommendationType,"AddOn")
||@equalsIgnoreCase(.ProductRecommendationType,"Fee")
Update “Set Output properties for Child Item”
Set Classification > extend existing logic  & set as “NoDelete” if  ProductType = Fee
Set PriceType > extend existing logic  & set PriceType= “ONE_OFF_COST” if  ProductType = Fee


1424
Update Strategy -CalculateDeal
ProductCode for Fee offer will be populated from Offer-OfferVariant data , so CalculateUpgradeDeal output should not override it for
ProducTupe=Fee records
Update to GetProductList flow
Update Strategy -PopulateOutputPropertiesForTariff
New Path for Child Products , to populate Fee as child product of Tariff.
Add a filter   after “Set ParentProductId”
If early upgrade fee <>”” & 0 > add a new SR row to output for  each Tariff
Set attributes as
ProductRecommendationType=”Fee”
CostIncludingVAT=FeeIncludingVAT/100
CostExVAT=FeeExcludingVAT/100
DisplayName=”Early Upgrade Fee”
ProductName=”Early Upgrade Fee”
PriceType= “ONE_OFF_COST”
Classification=”NoDelete”
Update Strategy -GetAddonList
Make sure EU fee is not returned    >solution will come in 2.11 with Sellable configuration on addons
Update to Validate Basket flow
No validation for fee
Make sure ProductType=Fee child records returned from output.


1425
Assisted Upgrade-Customer Profile-Usage Data
HL Requirement
Customer profile screen having a section to present
Customer Current Allowance
Customer usage fro past 12 moth
This is going to be a new API from AOM to VADR

Configure Product Attributes
Currently PC for addons does no include International and Roaming Minutes allowance.
It will be configured as business metadata
Configure 2 new Product attributes for Addons
RoamingMinutes-Integer
InternationalMinutes-Integer509146 Being able to manage the number of International and Roaming
Minutes for Add ons in PM tool508818 Usage Table
App Yes New Api (GetCustomerUsage).
New Dataset CustomerUsageHistory.
populate aggregated Data to
CustomerUsageHistory.
Update Subscription Class New attribute
UsageHistory
Logic yes new DF and New Strategy created to
populate response.
PMTool no Task to configure new Product Attributes.
UI Yes new tab/Section
do the related formatting for the data
provided while presenting.

do 3 moths aggregationArea Yes/No Area


1426
GetCustomerUsage Service Spec
https://vodafone.sharepoint.com/:x:/r/sites/AoMProgramme/_layouts/15/Doc.aspx?sourcedoc=%7B4407CD14-0137-4ECB-AEC7-
48A8CDFB3BDA%7D&file=GetCustomerUsage_v1.0_R2.10.xlsx&action=default&mobileredirect=true&cid=cb522d5c-c2f5-418f-9f67-
2283eb929144

New DF-GetCustomerUsageandAllowance
Input - PrepareDataForGetUsage DF
Strategy -GetCustomerUsageandAllowance
SR-Abstract

New DF - PrepareDataForGetUsage
Similar to PrepareDataForGetRecommendation, additionally add compose for CustomerUsageHistory to UsageHistory (PageList)
attribute of Subscription
New Strategy -GetCustomerUsageandAllowance
2 different logic to populate Allowance & History- It can be implemented as 2 different Strategy . called from
GetCustomerUsageandAllowance. Result will contain both.
GetCustomerCurrentAllowance
Use GPSL Addon & Tariff data + PC data to populate customer usage details in rows.
This data will be present in Usage table as first row
Logic will create different SR rows for each Type.
ResponseType=USAGE
UsageType = Data/Mins/Texts/Roaming Mins/Int Mins
Allowance = Calculated as in below
Data Get Active addons from GPSL
Get the data allowance from PC for products
Calculate Sum of Addons Data (Data
Column)

CalculateAddOnData - has this logic we can
make sub strategy call to this.if >= 9437184  Unlimited  else convert from
MB to GB


make sub strategy call to this.if >= 9437184  Unlimited  else convert from
MB to GB
Mins From Tariff Data  (Minutes Column)
FulfilmentItemCode="Mobile Service”
PromotionId > is the Tariff ID
Query PC & get Minutes allowance  for tariff if >= 999999999  Unlimited  else show the
value UsageType Source UI formating


1427
GetCustomerUsageHistory
Import UsageHistory of subscription
See the data structure for Usage history data set  https://vodafone.sharepoint.com/sites/AoMProgramme/_layouts/15/Doc.aspx?s
ourcedoc=%7B437d28d5-c1b5-4cf9-968b-d41286710173%7D&action=edit&wd=target%28Data.one%7CB4DAFF12-56DA-4634-B
936-A60B00F07201%2FUsage%20History%7Ce27de858-d923-4309-86e4-a94f81d644b1%2F%29 -
   >
History table will have multiple records , by date & usage category  & sub category
Map usage category  & sub category values to UsageType  according to the below  logic
Data: usage cat id= 23 and usage sub cat id= 10 ( National Data)
 Mins: usage cat id = 21  and the usage sub cat id = 1 ('National Voice') or 4 ('Special Number mins beginning 08/09)
or 5 ('Premium Voice').
 Texts: usage cat id = 22 and the usage sub cat id = 6 ('National SMS') or 7 ('Roaming SMS') or 8 ('International SMS') or 9
('Premium SMS').
Roaming Mins: the usage cat id = 21 and the usage sub cat id = 2 ('Roaming Voice').
Int Mins: the usage cat id = 21 and the usage sub cat id = 3 ('International Voice').
Aggregate usage data by InvoiceDate, UsageType
Create History records under each type
SET ResponseType=HISTORY
 Texts From Tariff  Data (SMS Column)


SET ResponseType=HISTORY
 Texts From Tariff  Data (SMS Column)

FulfilmentItemCode="Mobile Service”
PromotionId > is the Tariff ID
Query PC & get SMS allowance  for tariff if >= 999999999  Unlimited  else show the
value
Roaming Mins Product Attributes for Addon
update CalculateAddOnData to source
product attributes & sum the value ,make
sub strategy call to this.show the value
Int Mins Product Attrbiutes for Addon

update CalculateAddOnData to source
product attributes & sum the value ,make
sub strategy call to this.show the value
Connect your OneDrive accou
nt


1428
Assisted Upgrade -Design Change for SecureNet

HL Requirement
If swapped tariff includes Secure net as a service ,”Airplan Benefit”  on Select Deal should indicates this information.
Logic will amend BenefitProduct attributes of tariff, by  checking  if selected tariff has secure net addon included or not. (This logic will
run only for swap tariff case)

Impacted Areas
Update Strategy-CalculateBasketFinancials
update “ReCalculate Financials” set operation
If Operation=”Swap-Tariff” Set HasSecureNet=CalculateNetRevenue.HasSecureNet
else Set HasSecureNet=False
Update Strategy -PopulateOutputPropertiesforValidateBasket
Update Tariff Path to attach secure net indicator to product benefit if HasSecureNet is True.
Add an Set operation after “LineItems Check Tariff” - “Populate Secure Net Indicator”
 if RecoResponseType.HasSecureNet=True BenefitProduct =BenefitProduct+”Secure Net: Included in airtime plan, free for the first 3
months”
else no action520177 Design Change For Secure Net (Edit Deal Flow)
App Yes  Update Validate Basket API Spec
Include  BenefitProduct to input & output
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No
UI/VADR No  A r e a Y e s / N o C o m m e n t s


1429
Assisted Upgrade-Second Line Pricing-Upgrade impact
HL Requirements:
Second lien pricing will use existing data pages created for assisted.
But list of Tariff to be presented changes according to Order type .
Some of the existing data pages need update

Configure Business Meta Data
Add OrderType as new product attribute to Tariff product
It is Multi Select and defaulted to empty
Possible values = TBC
Change to D _ E l i g i b l e T a r i f f s F o r H a n d s e t
add Channel, Team, OrderType  to input parameters
This data page is used in both GetRecommendation/GetroductList/ValidateBasket
Strategy Impact
EvaluateTariffToHandsetCompatibility-Pass order type coming from external input to data page
ValidateBasket > Populate ordet type from context (Set Operation)

Change to D_EligibleTariffsForDept
data page will be renamed as D_EligibleTariffs
Add    OrderType  to input parameters
This data page is used in both GetRecommendation/GetroductList
Strategy Impact
EvaluateTariffVisibility
GetListofActiveTariffs
GetWatchTariffList525242 Data Page Changes for Second Line Pricing-Upgrades Impact


1430
2nd Line Private Pricing - GetProductList

Impact in Other areas
Dependencies
Logic Changes
A. New DF - GetProductListForCustomer
B. Update DF - GetProductList
C. New Strategy - GetProductListForUpgrade
D. Update strategy - GetProductList
E. New strategy - AdditionalLinePropositionsLookup
F. New Strategy - GetDataSIMOT ariffs
G. New Strategy - GetSIMOAndHandsetT ariffs
H. New Strategy - GetSIMOT ariffs
I. New Strategy - GetHandsetT ariffs
J. New Strategy - GetHandsetT ariffsForSKU
K. New Strategy - GetT abletT ariffsForSKU
L. New Strategy - CalculateT ariffScore
M. New Strategy - AssignT ierToTariffs
N. New Strategy - IdentifyDiscountPerT ariff
O. New Strategy - GetProductListForAdditionalLine
Impact in Other areas
DependenciesPM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes New Data Page - D_EligibileTariffs, D_EligibileTariffsForHandset
DB No  Area Yes/No Comments
PM Tool No
App Yes  Logic work is dependant on App changes
DB No  Area Yes/No Comments


1431
Logic Changes
A. New DF - GetProductListForCustomer
Save GetProductListForAssistedUpgrade DF as GetProductListForCustomer
B. Update DF - GetProductList
Update Primary destination to new DF - GetProductListForCustomer
Withdraw DF - GetProductListForAssistedUpgrade
C. New Strategy - GetProductListForUpgrade
Save GetProductList strategy as GetProductListForUpgrade
D. Update strategy - GetProductList
D1. Remove all existing component
D2. Add a new set property to get OrderType from Context
D3. Add sub-strategy component for new strategy - GetProductListForUpgrade
D4. Add sub-strategy component for new strategy - GetProductListForAdditionalLine (create blank strategy at this point)
D5. Add set property component - Invalid Order Type (confirm with App team about Error return value)
D6. Add Switch component - Check Order Type
D6.1. Select sub-strategy component - GetProductListForUpgrade if OrderType = Upgrade (check ignore  case)
D6.2. Select sub-strategy component - GetProductListForAdditionalLine if OrderType = Additional Line (check ignore  case)
D6.2. Otherwise, select Invalid Order Type
Confirm the values for OrderType from App team.
D7. Connect to results
E. New strategy - AdditionalLinePropositionsLookup
E1. create a strategy similar to AllPropositionsLookup strategy to return treatment SR page with all relevant details of Offer
E2. Import only Additional Line propositions - CrossSell and then filter by ExecutionMode = GetNBA
F. New Strategy - GetDataSIMOTariffs
F1. Get all tariffs by calling data page D_EligibileTariffs by passing OrderType (Dept should be kept NULL)


F2. Filter only Data SIMO tariffs using conditions below -
Segment = CBU
SIMOnly = Y
MBBFlag = Y
F3. Call strategy - AdditionalLinePropositionsLookup and select proposition where TariffType = DataSIMOnly
F4. Assign the tariffs returned by F2 to the proposition SR page
F5. return results


1432
G. New Strategy - GetSIMOAndHandsetTariffs
G1. Call strategy - GetSIMOTariffs
G2. Call strategy - GetHandsetTariffs
G3. connect both to results
H. New Strategy - GetSIMOTariffs
H1. Get all tariffs by calling data page D_EligibileTariffs by passing OrderType (Dept should be kept NULL)
H2. Filter only SIMO tariffs using conditions below -
Segment = CBU
SIMOnly = Y
MBBFlag = N
H3. Call strategy - AdditionalLinePropositionsLookup and select proposition where TariffType = SIMOnly
H4. Assign the tariffs returned by H2 to the proposition SR page
H5. return results
I. New Strategy - GetHandsetTariffs
I1. Get all tariffs by calling data page D_EligibileTariffs by passing OrderType (Dept should be kept NULL)
I2. Filter only Handset tariffs using conditions below -
Segment = Loan
SIMOnly = N
MBBFlag = N
I3. Call strategy - AdditionalLinePropositionsLookup and select proposition where TariffType = Handset
I4. Assign the tariffs returned by I2 to the proposition SR page
I5. return results
J. New Strategy - GetHandsetTariffsForSKU
J1. Get all handset tariffs by calling data page D_EligibileTariffsForHandset by passing SKU & OrderType (SKU = LineItem.ProductId)
compatible with the SKU
J2. Call strategy - AdditionalLinePropositionsLookup and select proposition where TariffType = Handset
J3. Assign the tariffs returned by J2 to the proposition SR page
J4. return results
K. New Strategy - GetTabletTariffsForSKU


J4. return results
K. New Strategy - GetTabletTariffsForSKU
K1. Get all tablet tariffs by calling data page D_EligibileTariffsForHandset by passing SKU & OrderType (SKU = LineItem.ProductId)
compatible with the SKU
K2. Call strategy - AdditionalLinePropositionsLookup and select proposition where TariffType = Tablet
K3. Assign the tariffs returned by K2 to the proposition SR page
K4. return results


1433
L. New Strategy - CalculateTariffScore
This strategy should be in business-artefacts ruleset.
For each input SR page (Tariff propositions), calculate TariffScore as follows -
Please annotate the TariffTiers from RangeMapping decision data in this strategy.
M. New Strategy - AssignTierToTariffs
M1. For each input SR page (Tariff propositions), calculate TariffScore by calling strategy CalculateTariffScore
M2. Import RangeMapping decision data with the following condition -
RangeType = “TariffTier”
This should return 3 records with the following properties -
RangeName
InitialValue
FinalValue

The following entries should be added to RangeMapping decision data -
M3. Map the TariffScore to ranges for TariffTiers and identify TariffTier (High, Medium or Low)
M4. Return results
N. New Strategy - IdentifyDiscountPerTariff
N1. Use the Tariff SR pages as Input
N2. From N1, call decision data - AdditionalLineDiscountMatrix
N3. From N2, create and alternate path and identify the unique CellGroup using a group by component
N4. From N3, Call sub-strategy AssignCustomerToTestCell (design - 2nd Line Private Pricing - Assign Customer To Test Cell) to get the
“CellCode” for the customer. Please note that this strategy call should not be in the main path
N5. In main path in N2, use a data join with output of N4 to identify the SR pages for the CellCode & TariffType and use the following 3 SR
properties - < 20GB 10
>= 20GB and <= 100GB 50
> 100GB or Unlimited 80Tariff Data Allowance TariffScore


> 100GB or Unlimited 80Tariff Data Allowance TariffScore
U-123456781 RangeMapping NonPropositions TariffTier High 1 30
U-123456782 RangeMapping NonPropositions TariffTier Medium 31 60
U-123456783 RangeMapping NonPropositions TariffTier Low 61 100pyName pyGroup pyIssue RangeType RangeName InitialValue FinalValue


1434
DiscountForTariffTierHigh
DiscountForTariffTierMedium
DiscountForTariffTierLow
N6. Based on TariffTier in SR page, select relevant discount from -
DiscountForTariffTierHigh
DiscountForTariffTierMedium
DiscountForTariffTierLow
N7. For each discount product codes, call data page D_Discount and and get the discount %
N8. Call strategy - AdditionalLinePropositionsLookup and select proposition where ProductRecommendationType = Discount
N9. Attach discount information to the Discount proposition page
N10. return all proposition SR pages (Tariffs & Discounts)
O. New Strategy - GetProductListForAdditionalLine
M1. Add a new set property to get SubscriptionType from Context & LineItem.ProductId
M2. Add following sub-strategy components for new strategies (create blank strategy at this point) -
GetDataSIMOTariffs
GetSIMOAndHandsetTariffs
GetHandsetTariffsForSKU
GetTabletTariffsForSKU
M3. Add set property component - Invalid Additional Line Context (confirm with App team about Error return)
M4. Add Switch component - Check Additional Line Context as following
M5. Call sub-strategy AssignTierToTariffs
M7. Call sub-strategy IdentifyDiscountPerTariff
M8. Call Sub-strategy ApplyBundling
M9. Populate the output as relevant for GetProductList API response (may need new strategy)
M10. Connect to results
 GetDataSIMOTariffs LineItem.ProductId = NULL
and Subscription Type = Mobile BroadTier Service
GetSIMOAndHandsetTariffs LineItem.ProductId = NULL
and Subscription Type = Mobile Service
GetHandsetTariffsForSKU LineItem.ProductId = NOT NULL
and Subscription Type = Mobile Service


GetHandsetTariffsForSKU LineItem.ProductId = NOT NULL
and Subscription Type = Mobile Service
GetTabletTariffsForSKU LineItem.ProductId = NOT NULL
and Subscription Type = Mobile BroadTier Service
Invalid Additional Line Context OtherwiseSelect Component Condition


1436
2nd Line Private Pricing - GetNBA

Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - PopulateOutputPropertiesForGetNBA
B. New Strategy - IdentifyMaxDiscountForT ariffType
C. New decision data - AdditionalLineDiscountMatrix (SR class)
Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - PopulateOutputPropertiesForGetNBA
A1. Add filter component to separate out “TradeIn” specific components
A2. Add filter component to separate out non “TradeIn” components
A3. On non “TradeIn” path, add filter for context - Additional Line (actual expression - TBC)
A4. For Additional Line path, call sub-strategy IdentifyMaxDiscountForTariffType to get the max discount and associate with AddDiscount
child proposition
B. New Strategy - IdentifyMaxDiscountForTariffType
B1. From input Parent/Child proposition SR pages (External Input), split 2 paths - Parent (for Tariffs) and Child (for Discount)
B2. Assign the CellCode (from B1) to all SR pages for the Child (for Discount) pathPM Tool Yes New PM screen for Additional Line Discount Matrix
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1437
B3. Assign the TariffType from the respective Parent SR page to Child SR page
B4. From the Child (for Discount) path, call decision data - AdditionalLineDiscountMatrix
B5. From B4, create and alternate path and identify the unique CellGroup using a group by component
B6. From B5, Call sub-strategy AssignCustomerToTestCell (design - 2nd Line Private Pricing - Assign Customer To Test Cell) to get the
“CellCode” for the customer. Please note that this strategy call should not be in the main path
B7. In the Child (for Discount) main path, use a data join with output of B6 to identify the SR pages for the CellCode & TariffType and use
the following 3 SR properties -
DiscountForTariffTierHigh
DiscountForTariffTierMedium
DiscountForTariffTierLow
B8. For each discount product codes, call data page D_Discount and and get the discount %
B9. Find the discount code (along with discount % ) with the max discount % and attach to the Child (Discount) SR page
B10. Populate Parent/Child SR page as relevant for GetNBA output (similar to IVR or other channels used by GetNBA)
B11. Connect to results

C. New decision data - AdditionalLineDiscountMatrix (SR class)
pyName - Unique key for each CellCode and TariffType
pyGroup - “AdditionalLineDiscountMatrix”
pyIssue - “NonPropositions”
CellCode (Text)
TariffType (Text)
DiscountForTariffTierHigh (Text)
DiscountForTariffTierMedium (Text)
DiscountForTariffTierLow (Text)
Example Data -
U-12345 AdditionalLi
neDiscount
MatrixNonProposi


Example Data -
U-12345 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 1 SIMOnly DISC-0001DISC-0011DISC-0111
U-12346 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 2 SIMOnly DISC-0002DISC-0012DISC-0112
U-12347 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 3 SIMOnly DISC-0003DISC-0013DISC-0113
U-12348 AdditionalLi
neDiscountNonProposi
tionsRandom 4 SplitRandom 4 Split 4 SIMOnly DISC-0004DISC-0014DISC-0114pyName pyGroup pyIssue CellGroup CellCode TariffType DiscountFo
rTariffTierHi
ghDiscountFo
rTariffTierM
ediumDiscountFo
rTariffTierLo
w


1438

Please note that the requirement for relevant new PM screen for this decision data are yet to be provided by VF.Matrix
U-12349 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 1 Handset DISC-1001DISC-1011DISC-1111
U-12350 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 2 Handset DISC-1001DISC-1011DISC-1111
U-12351 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 3 Handset DISC-1001DISC-1011DISC-1111
U-12352 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 4 Handset DISC-1001DISC-1011DISC-1111
U-12353 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 1 Tablet DISC-2001DISC-2011DISC-2111
U-12354 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 2 Tablet DISC-2001DISC-2011DISC-2111
U-12355 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 3 Tablet DISC-2001DISC-2011DISC-2111
U-12356 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 4 Tablet DISC-2001DISC-2011DISC-2111
U-12357 AdditionalLi
neDiscount
MatrixNonProposi


U-12357 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 1 DataSIMOn
lyDISC-3001DISC-3011DISC-3111
U-12358 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 2 DataSIMOn
lyDISC-3001DISC-3011DISC-3111
U-12359 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 3 DataSIMOn
lyDISC-3001DISC-3011DISC-3111
U-12360 AdditionalLi
neDiscount
MatrixNonProposi
tionsRandom 4 SplitRandom 4 Split 4 DataSIMOn
lyDISC-3001DISC-3011DISC-3111


1439
2nd Line Private Pricing - Assign Customer To Test Cell

Impact in Other areas
Dependencies
Logic Changes
A. New Strategy - GetIHAtAccountLevel
B. New Strategy - AssignCustomerT oTestCell
Impact in Other areas
Dependencies
Logic Changes
A. New Strategy - GetIHAtAccountLevel
A1. Import Account level IH from Primary.CustomerAccount.InteractionHistoryList
A2. Filter IH records for ExecutionMode = GetNBA
A3. Use group by component to get SR pages with unique list of CellCodes
A4. Filter SR pages where CellCode != NULL
A5. If there are still multiple SR pages (i.e. multiple CellCodes have been allocated to the account), select the CellCode with is most recent
by OutcomeTime
A6. Return resultsPM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1440
B. New Strategy - AssignCustomerToTestCell
B1. Call sub-strategy GetIHAtAccountLevel and component - LatestCellCodeAtAccountLevel (name the sub-strategy component as
LatestCellCodeAtAccountLevel) to get the CellCode assigned to at least one Subscription on the Account on previous execution
B2. From Input CellGroup (only one SR page should be passed), call sub-strategy IdentifyTestCell (design - NBA FW - Test Cell Manage
ment )
B3. Add a switch component - Existing Test Cell Check with the following condition -
Select component LatestCellCodeAtAccountLevel, if LatestCellCodeAtAccountLevel.CellCode != ““
Otherwise,  select component IdentifyTestCell
B4. connect to results


1441
NBA FW - Test Cell Management

Impact in Other areas
Dependencies
Logic Changes
A. New Strategy - IdentifyT estCell
B. New Decision Data - TestCells (SR class)
Impact in Other areas
Dependencies
Logic Changes
A. New Strategy - IdentifyTestCell
A1. Create a set property component - Customer Random Number and generate a random integer from 1 to 100 (using
GetRandomNumberInRange() function)
A2. From Input CellGroup, identify the ranges for the cells by calling decision data - TestCells with the following import condition -
CellGroup = .CellGroup
this should return all cells in the group and the ranges in the following properties -
CellCode
InitialValue
FinalValue
A3. Using the output of the random Integer from set property component - Customer Random Number, select the relevant cell using the
range PM Tool Yes
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments


1442
A4. return the results

B. New Decision Data - TestCells (SR class)
pyName - Unique key for each CellGroup & CellCode
pyGroup - “TestCells”
pyIssue - “NonPropositions”
CellGroup (text)
CellCode (Text)
InitialValue (integer)
FinalValue (integer)
Example Data -
 U-1231 TestCells NonPropositions Random 4 Split Random 4 Split 11 20
U-1232 TestCells NonPropositions Random 4 Split Random 4 Split 221 40
U-1233 TestCells NonPropositions Random 4 Split Random 4 Split 341 60
U-1234 TestCells NonPropositions Random 4 Split Random 4 Split 461 100pyName pyGroup pyIssue CellGroup CellCode InitialValue FinalValue