2201
Solution Approach
With this approach now Business wants to run 3 Different types of Batch with the following params (Names not yet confirmed by the
app)
Full   - this type of run is similar to the existing batch runs
Prepare - As part of this new run, Bussiness can run only DF1, which composes data from All spines
Process - As part of this run, now we can run only DF3   to make decisions, with the old data of DF1 and with the Latest IH Data
Logic Changes:
A. Create New  DataFlow  IdentifyBestOBTreatmentsByBatch1
Save as the Data flow ‘IdentifyBestOBTreatmentsByBatch' and name it as 'IdentifyBestOBTreatmentsByBatch1’
Add new Compose, to get the Latest IH Data


2202

Add new compose to get the AccountLevel IH
Add a new Compose to add TealiumAggregatedEvents
Add new compose to add CustomerAggregatedEvents


2203
The final data flow should like as below
Note: Once the New data flow is created, we will create a work item in the Data flow Landing page. Once that is created, the app team
will create a config in the Data type and Add this work item to it.
Make sure, a new config is added as part of the build log


2204
NBA-Consolidation of Priority GetNBA Response

Impact on Other Areas
Dependencies
Logic Changes:
Note: Make sure the Rank Column in IH is populated correctly after these changes
A. Update Strategy PopulateOutputPropertiesForTOBi
Add a SetProperty ‘MergeResults' and get it connected   from ‘In Potential Control’ filter and 'PopulateSquadSpecificOutputProperties’
Substrategy
Add 2 filters after the SetProperty 'MergeResults'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below 1443521 Consolidation of Priority GetNBA Response
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes
DB No  Area Yes/No Comments
PM Tool No
App Yes  Need App changes for E2E
DB No  Area Yes/No Comments


2205

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
B. Update Strategy PopulateOutputPropertiesForApp
Add a SetProperty ‘MergeResults' and get it connected   from ‘In Potential Control’ filter and 'PopulateSquadSpecificOutputProperties’
Substrategy
Add 2 filters after the SetProperty 'MergeResults'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below


2206

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
C. Update Strategy PopulateOutputPropertiesForIVRAndSMS
Add 2 filters after the SubStrategy 'PopulateSquadSpecificOutputProperties'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
D. Update Strategy PopulateOutputPropertiesForIBCC
Add 2 filters after the SubStrategy 'PopulateSquadSpecificOutputProperties'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below


2207

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
E. Update Strategy PopulateOutputPropertiesForRetail
Add 2 filters after the SubStrategy 'PopulateSquadSpecificOutputProperties'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
F. Update Strategy PopulateOutputPropertiesForWeb
Add 2 filters after the SubStrategy 'PopulateSquadSpecificOutputProperties'
Name the First one as 'Response Type - Actions' and add the below condition
.ResponseType = "Action"
Name the 2nd filter as 'Response Type - Other than Actions' and add the below condition and connect it to the Results component
.ResponseType != "Action"
After the First filter 'Response Type - Actions' add Prioritize Component as below


2208

Add a SetProperty 'SetRank' and set as below
.Rank = .pxRank
G. Update Dataflow GetBestTreatmentsByGetNBA
Update the Convert component  in the IH Path as below
.pxRank = .Rank
Add convert shape  in 'IH Validation CM' and as below
.pxRank = .Rank


2209
NBA-Ability to Cater for NULL Account Details

Impact on Other Areas
Dependencies
Logic Changes:
From ADO:
1. Get Multi-Level Subscription Details - Skip when OwnerAccountNumber is NULL in Subscription
2. Get Owner Account - Skip when OwnerAccountNumber is NULL in Subscription
3. Get Billing Account - Skip when BillingAccountNumber is NULL in Subscription
4. Get Service Account - Skip when ServiceAccountNumber is NULL in Subscription
A. Update DataFlow PrepareRealtimeData
Update 'Get Multi-Level Subscription Details' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Billing Account' compose component as below
update 'Skip compose operation' as below
.BillingAccountNumber = ""
Update 'Get Service Account' compose component as below
update'Skipcomposeoperation'asbelow1310065 Ability to Cater for NULL Account Details
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


2210
update Skip compose operation as below
.ServiceAccountNumber = ""
B. Update DataFlow PrepareBatchData
Update 'Get Multi-Level Subscription Details' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Billing Account' compose component as below
update 'Skip compose operation' as below
.BillingAccountNumber = ""
Update 'Get Service Account' compose component as below
update 'Skip compose operation' as below
.ServiceAccountNumber = ""
D. Update DataFlow PrepareRealtimeDataForTILSimulation
Update 'Get Multi-Level Subscription Details' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Billing Account' compose component as below
update 'Skip compose operation' as below
.BillingAccountNumber = ""
Update 'Get Service Account' compose component as below
update 'Skip compose operation' as below
.ServiceAccountNumber = ""
E. Update DataFlow PrepareRealtimeDataForProcessEvent
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
Update 'Get Service Account' compose component as below
update 'Skip compose operation' as below
.ServiceAccountNumber = ""
F. Update DataFlow PrepareDataForGetRecommendation
Update 'GetOwnerAccountDetails' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
G. Update DataFlow AssembleSubscriptionXCAR
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below


Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""


2211
Update 'Get Billing Account' compose component as below
update 'Skip compose operation' as below
.BillingAccountNumber = ""
Update 'Get Service Account' compose component as below
update 'Skip compose operation' as below
.ServiceAccountNumber = ""
H. Update DataFlow ApplyControlGroupsForT2S
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""
I. Update DataFlow ApplyControlGroups
Update 'Get Owner Account' compose component as below
update 'Skip compose operation' as below
.OwnerAccountNumber =""


2212
NBA - Seed Testing Capability of AOM Microsite

Impact in Other areas
 Dependencies
Logic Changes:
A. Create a new Strategy IdentifyBestMicrositeTreatmentsForSeedTest
Add SubStratgey 'ContextualPropositionsLookup'
Add a Set Property 'Request Data' and set
.OfferName=Primary.Context(OfferName)
.Channel="Microsite"
.TreatmentName= .OfferName+"_"+.Channel
Add a Data Join ‘Select Microsite Treatment From Context' and join on below and Exclude Unmatched  Records. Connect it from
SubStratgey 'ContextualPropositionsLookup' and reference from Set Property 'Request Data'
.OfferName
.Channel
.TreatmentName
Add ParentChild Child Treatments DD
Add a Data Join 'Identify Microsite Child Treatments' and connect it from ParentChildTreatments DD and reference from request Data
and join on below condition
.BundleParentTreatment=.TreatmentName975622 Seed Testing Capability of AOM Microsite
Area Yes/No Comments
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes
DB No  Area Yes/No Comments
PM Tool No
App Yes  Need App Changes For E2E test
DB No  Area Yes/No Comments


2213
Exclude the unmatched records
Add a Group By Component 'Childs Count'

Add a Set Property 'Set Parent', add below and connect from 'Select Microsite Treatment From Context' Data Join
.ParentChild="Parent"
.Hierarchy=@if(ChildCount.Count>1 ,"Parent","Independent")
Add a Data Join 'Select Microsite Child Treatments' and connect from 'ContextualPropositionLookup' SubStratgey and reference from
'IdentifyMicrositeChildTreatments' Data Join. Join on Below condition
.TreatmentName = .BundleChildtreatment
Exclude Unmatched records
Add a Set Property 'Set Child'
.ParentChild="Child"
.Hierarchy ="Child"
Add a SubStratgey 'PopulateOutputPropertiesForMicrositeSeedTest' and Connect it to Results and connect from 'SetParent' and
'SetChild' Set Properties


2214

B. Create a new Strategy PopulateOutputPropertiesForMicrositeSeedTest
Save as from ‘PopulateOutputPropertiesForMicrosite' and name it as 'PopulateOutputPropertiesForMicrositeSeedTest’
Update the Data Join 'Join Treatment Attributes'
Remove .Scenario check from Data Join
Update the Data Join 'Join Actions Data'
Remove .Scenario check from Data Join
Update the Data Join 'Join Treatment Attributes For Only Parent'
Remove .Scenario check from Data Join
Update the Data Join 'Join Actions Data For Only Parent'
Remove .Scenario check from Data Join
C. Create a new Dataflow IdentifyBestMicrositeTreatmentsForSeedTest
Add Dataflow 'PrepareRealtimeData' as Source
Add SubStratgey 'IdentifyBestMicrositeTreatmentsForSeedTest' after the source
Add Destination as Abstract


2216
Upgrades - Update to Cohorts Attributes

Impact on Other Areas

PM Tool changes :
Is3GCustomer label will be changed to IsCustomer3G label in the pm tool cohorts screen
The TariffDiscountFlag label will be changed to ActiveTariffDiscounts in the Pm tool cohorts screen.

new IsCustomer3G will be pushed to IsCustomer3G SR attribute, and  ActiveTariffDiscount will be pushed to TariffDiscountFlag SR
attribute.

Logic Changes
A. Changes for Decision Data
Update Decision Data CustomerCohorts
Delete Is3GCustomer boolean attribute.
Create below new SR Attributes with Text data type IsCustomer3G
B. Changes for  Logic Strategy.
 1463047 Modifying the existing fields (PM Tool) under cohorts screen impacting cohorts volume.
App/UI No
logic Yes Updating the Logic to manage Updated Cohort Attributes
PM Tool Yes  need a Cohorts screen update Area Yes/No Comments
Is3GCustomer - boolean IsCustomer3G -Text
  delete Existing attribute create new attribute


2217
1. Update strategy EvaluateCohortBy3GCustomer
update set property  SetIsValidandEligible
@if(.CohortType="Segmentof1" && .IsValid &&(@equalsIgnoreCase(.IsCustomer3G, “True“) || .IsCustomer3G=""),true,false)

no change is required for EvaluateCohortByActiveDiscount, but the dev test required for TariffDiscountFlag is changing in the pm tool.
validate data is pushed correctly and functionality is working as expected.
Note: 1. Please validate the Cohorts with 3g customer and Tariff Discount Flag validations in cohorts DD.
2. these strategies (EvaluateCohortByActiveDiscount EvaluateCohortBy3GCustomer) should be tested for e2e cohorts
implementations.
UNIT TESTING FOR BELOW JOURNEYS.
MBB IBCC/RETAIL/Pilot UI YES
Mobile service (INCLUDE WATCH) IBCC/RETAIL/WEB/Pilot UI YESJourney Channel Test


2218
Upgrades - Cohort Changes for Sim X plans

Impact on Other Areas
Logic Changes
Note: during the Dev Test of this story, we need to get Commercial recommendations DD data and 2 new Cohorts.
Below are some of the Sim X Tariffs1392810 PM Tool UI - New / Repurposed Attributes1393639 Logic - Use of New / Repurposed cohort attributes
App/UI No
logic Yes Updating the Logic to manage customer cohorts usage and configuration to alow
Sim X plans.
PM Tool Yes  Need a Cohorts screen update ( 1392810)Area Yes/No Comments
116096 SIMX 100GB Xtra 3
116153 SIMX 100GB Xtra 3 ENT
116050 SIMX 25GB Xtra 3
116108 SIMX 25GB Xtra 3 ENT
119721 SIMX 2GB Xtra 3
116066 SIMX 50GB Xtra 3
116069 SIMX 50GB Xtra 3 ENT
116492 SIMX 60GB Xtra 3
116150 SIMX 60GB Xtra 3 ENT
115957 SIMX 6GB Xtra 3
116040 SIMX 6GB Xtra 3 ENT
116085 SIMX Unl Max Xtra 3 VGR+
116000 SIMX Unl Max Xtra 3 VGR+ ENT
116029 SIMX 2GB Xtra 2 TariffCode Package Short Code


2219
Impacted channels :
Web - Digital upgrades
A. Update  CustomerCohorts Decision Data
Create below new SR Attributes
Add the above SR Properties in the Form tab of CustomerCohorts DD
B. Update strategy GetCurrenttariff
Update SetProperty 'Set for MobileService' as below
.CurrentDeviceCode= Handset.ProductCode
Update SetProperty 'Set for MBBService' as below
.CurrentDeviceCode = DataDevice.ProductCode
C. Create New  strategy EvaluateCohortByHandsetLoanTenureDuration
Add an ExternalInput116137 SIMX 6GB Xtra 2
116487 SIMX Unlimited Max Xtra 3
115984 SIMX Unl Max Xtra 3 ENT
119722 SIMX 100GB Xtra 2
116175 SIMX 25GB Xtra 2
115980 SIMX 50GB Xtra 2
116043 SIMX 60GB Xtra 2
116139 SIMX Unl Max Xtra 2
HandsetLoanTenureDurationType Text (single select) MonthsLeft / TotaLength /
ExpiryDate
MonthsLeftFrom Text Only integer values between 0 and
36 are allowed to be entered and the
To value should be higher than the
From value. MonthsLeftTo Text
TotalLengthFrom TEXT (single) 3 to 36 any number
TotalLengthTo TEXT (single) 3 to 36  any number
ExpiryDateFrom DateTime any calender date
ExpiryDateTo DateTime
CurrentSIMONetMAFFrom Number (single) Can be any Integer value (From
value is less than the To value)
CurrentSIMONetMAFFromTo Number (single)AttributeName Type sample data


2220
Import 'GetCurrentTariff' Substrategy
Import 'GetHandsetDetailsFromPC'
Import 'Loans Data' as below
Primary.Loans
Add aSetProperty 'Set Current Product Details' and add as below
.CurrentDeivceCode =GetCurrentTariff.CurrentDeviceCode
Use CurrentDeivceCode as input to GetHandsetDetailsFromPC and get the device details.
Add one more setProperty 'Set Device Details' and map as below
.HandsetloanTenure = @if(.CurrentTariffTenure =12,”12”,GetHandsetDetailsFromPC.MaxTenure)
.ValueText = @DateTime.addCalendar(@DateTime.getCurrentTimeStamp(
),0,.ValueInteger,0,0,0,0,0)
.IsEligible = @if(.HandsetLoanTenureDurationType = "", True,
@if(.HandsetLoanTenureDurationType = "MonthsLeft",(.HandsetloanTenure >=.MothsLeftFrom && .HandsetloanTenure
<=MonthLeftTo),
@if(.HandsetLoanTenureDurationType = "TotalLength",(.HandsetloanTenure >=.TotalLengthFrom && .HandsetloanTenure
<=TotalLengthTo),
(@CompareDates(.ValueText, ExpiryDateFrom) && @CompareDates(ExpiryDateTo,ValueText)))))
Connect the SetProperty to Results
C. Create New  strategy EvaluateCohortBySimNetMAFRange
Add External Input
Import 'GetCurrentTariff' Substrategy
Add a Set property 'Set TariffMAF ' after External input and as below
.TariffMAF = GetCurrentTariff.TariffMAF


.TariffMAF = GetCurrentTariff.TariffMAF
IsEligible = @if((.CurrentSIMONetMAFFrom =”” || CurrentSIMONetMAFTo = ““),true,(.TariffMAF >=.CurrentSIMONetMAFFrom &&
.TariffMAF <=CurrentSIMONetMAFTo))
Connect SetProperty to results
D. Update strategy EvaluateCohorts
Add 2 New sub-strategies
EvaluateCohortBySimNetMAFRange
EvaluateCohortByHandsetLoanTenureDuration
Connect them from 'SetGPSLFlag' SetProperty
and connect them to 'EvaluateCohorts'


2221

Unit Test
Given tariffs will be used to test for WEb channel and comm. recommendations. but logic will impact all channels based on the
configuration.
MBB IBCC/RETAIL/Pilot UI YES
Mobile service (INCLUDE WATCH) IBCC/RETAIL/WEB/Pilot UI YESJourney Channel Test


2222
Upgrades - Recommendation- Positioning of Recommendation in Card 1, 2 or 3
Impact on Other Areas
Dependencies
Logic Changes:
Impacted Channels :
The below channels need to be tested
Retail
InboundCC
Web
A. Update Strategy DedupeSameRecommendations
Add a SetProperty ‘Set RecommendedPosition'  after 'PrioritizebasedonRecPos’ Prioritize component and add as below
.RecommendedPosition = .pxRank785685 Recommendation- Positioning of Recommendation in Card 1, 2 or 3
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


2223

Mobile service(watch) IBCC/RETAIL/WEB YES
MBB IBCC/RETAIL YESJourney(* GET Rec Flow) channel Test


2224
Upgrades -MBB- Edit - Update Display Bars
Impact on Other Areas
Dependencies

Logic Changes:
Impacted Channels :
The below channels need to be tested
Retail
InboundCC
These changes are part GPL(GetBarList)
A. Configuration
Create a New Product Attribute for Bars only.
B. Update Strategy GetBarList1429991 PM Tool bars configuration1429661 MBB- Edit - Update Display Bars
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes  New product attribute configure journey level bars.
App Yes  d_sellable bars datapage will get updated with new paramater.
DB No  Area Yes/No Comments
ApplicableJourne
y(TBD)Text to identify the
applicable
journeyMulti select Empty Bars Mobile Broadband service,
Mobile ServiceName Type Description  Single/Multiple Default Product
TypeSample Lovs(should be
same as Subscription type)


2225
Update set property context properties
Set ApplicableJourney =  Primary.Context(SubscriptionType)
update the data page call with new parameter applicable journey.
D_SellableBars[Channel:ContextProperties.Channel,Team:ContextProperties.Team,OrderType:ContextProperties.OrderType,
ApplicableJourney:ContextProperties.ApplicableJourney,].pxResults

the data page should give
TEST JOURNEYS

Apply  MBB journey only for bar product id 100070 and test.
Mobile service IBCC/RETAIL YES
MBB IBCC/RETAIL YESJourney channel Test


2226
Upgrades - NET MAF value in Cohorts Screen
HL Requirement
Business want to Ensure handling multiple values for HandsetNetMAF and SIMONetMAF are now multi-select fields i.e. is possible to
select more than one value.
these are attributes in the Cohorts screen.
1. Upgrades  Flow:
Upgrades Strategy EvaluateCohortbyNetMafBand
Update condition in  SetEligible set properly
OLD condition
(((.PaymSIMONetMafBand=GetCurrentTariff.RangeId || .PaymSIMONetMafBand="") &&
(GetCurrentTariff.CustomerType="PaymSIMO"||GetCurrentTariff.CustomerType="MBBSIMO"))  ||
((.PaymHandsetNetMafBand=GetCurrentTariff.RangeId||.PaymHandsetNetMafBand="")  &&
(GetCurrentTariff.CustomerType!="PaymSIMO"||GetCurrentTariff.CustomerType!="MBBSIMO"))) ?"True":"False"
 Now PaymSIMONetMafBand/PaymHandsetNetMafBand value from DD will get multiple values DD CustomerCohorts.
Create new SR Attributes with Text data type and update the condition will by using DoesStringExistsInList  function
new attributes are PaymHandsetNetMaf  and PaymSIMONetMaf
and updated condition will be
(
((@DoesStringExistsInList(.GetCurrentTariff.RangeId,PaymSIMONetMaf ||.PaymSIMONetMafBand="")&&
(GetCurrentTariff.CustomerType="PaymSIMO"||GetCurrentTariff.CustomerType="MBBSIMO"))
||


||
((@DoesStringExistsInList(.GetCurrentTariff.RangeId,PaymHandsetNetMaf ||.PaymHandsetNetMaf="")&&
(GetCurrentTariff.CustomerType!="PaymSIMO"||GetCurrentTariff.CustomerType!="MBBSIMO"))
)?"True":"False"

Notes: Test the functionality with changes and without changes the outcome should be the same for each test data.
 1329605Make HandsetNetMAF and SIMONetMAF multiselect in PM Tool Cohort Screen
Logic Yes  Logic update to include
PM Tool Yes pm tool screen will alow multiple values.Team Task Comments


2227
Upgrades - MBB Get Recommendations

Impact in Other Areas
HL Requirement
Business Would like to revise Giga/MBB simo journey. The products (Data Simo plans) should be displayed in the Get Recommendation
SIMO journey for MBB customers.
reason: the legacy SIMO plans are turned off. so no Simo plans are being appeared in Simo cards in MBB journey.
Logic Changes
A. Changes for Recommendation flow.
1.Update  to strategy GetRecommendedMBBTariff
1. Connect MoreTariffData set the property to a Decision Table EvaluateTariffTypes ( existing decision table to evaluate tariffs which give
Tariff type as output ) .
2. create two filters and connect from Decision table
a. Filter 1 as MBB Device Tariffs which will pass only tariffs needs to flow in the device journey.  Include Tariff types like Tablet,
BundleTablet,Dongle and Gigacube in the device journey.
@String.equalsIgnoreCase(.TariffType,"BundleTablet")||@String.equalsIgnoreCase(.TariffType,"Tablet")||@String.equalsIgnoreCase(.
TariffType,"Dongle")||@String.equalsIgnoreCase(.TariffType,"TabletAccess")||@String.equalsIgnoreCase(.TariffType,"Gigacube").
b. Filter 2 as MBB Simo Tariffs which will pass only tariffs needs to flow in the SIMO journey.Include Tariff types like Tablet, Simo, and
Data Simo only in the SIMO journey.
@String.equalsIgnoreCase(.TariffType,"SIMOnly")||@String.equalsIgnoreCase(.TariffType,"Tablet")||
@String.equalsIgnoreCase(.TariffType,"DataSIMOnly")
c. Connect Filter 1 to set property MBB Device plans where we will over ride SIMO flag to N


c. Connect Filter 1 to set property MBB Device plans where we will over ride SIMO flag to N
i. set SIMOnly = N
d. Connect Filter 2 to set property MBB Simo plans where we will over ride SIMO flag to Y
i. set SIMOnly = Y
e. Create two Data joins Simo tariffs and device tariffs which are connected with external input with Setproperty MBB Device plans and
MBB Simo plans with matching conditions
i. MBB flag (external input)  = mbb flag (Tariff Path)1469249 MBB Logic Recommendations
App/UI No
logic Yes Updating the Logic to manage Get recommendation flow for MBB journey.
PM Tool No  Area Yes/No Comments


2228
ii. SIMOnly (external input)  = SIMOnly (Tariff Path)
iii. RecommendedTenure (external input)  = RecommendedTenure (Tariff Path)
f. connect the data joins to set property All MBB Tariffs (existing set property).

2. Update strategy ApplyCREConditionForRecommendation
The below logic is to get GIGA SIMO plans only when the customer is currently with a GigaCube Product.
1. Create a new filter GigaSimoPlans which is connected from GetMostSoldTariffs data join. filter should be
(@contains(@string.toUpperCase(.PackageBand),"GIGACUBE"))
2. connect the GigaSimoPlans into two flows to get the top sold giga simo plan for position 1 and position 2
a. get TopGigaSimo with prioritize component select highest first (top 1).
b. set the rank position as 1 for this plan
c. connect the other path to select the second most sold product which should be more data than the first plan.
i. filter top giga simo 2
.RecommendedTariffCode!=TopGigaSimo.RecommendedTariffCode&&.RecommendedTariffData>TopGigaSimo.RecommendedTa
riffData
ii. get TopGigaSimo2 with prioritize component select highest first (top 1).
iii. set the rank position as 2 for this plan.
3. join both the plans to new set property top 2 Giga Simo plans.
4. call this top2 Giga Simo set proeprty from the switch which is connected to results.


2229
6. the switch condition should be like  //If it is Gigacube customer and CREType Normal
@String.equalsIgnoreCase(Primary.RetentionEligibility.Type,"Normal")&&
(@contains(@string.toUpperCase(GetCurrentTariff.CurrentPackageBand),"GIGACUBE"))&&@AOMUtilities.CalculateNumberOfDaysFromT
oday(Primary.LatestContractEndDate)>0
7. Remove the old condition which is related to gigacube (which is mentioned in step6)  in the top 2 simo selections in Switch.


2230

B.Testing should be done for MBB Get Recommendation flow as below.

Note :  Rules in above mentioned table are as below:
these are from existing implementation no change is required. current product Rec 1 rec2  Rec 1 rec2
Tablet top sold tablet with
rule2nd top sold tablet
with rule top sold tablet with
ruletop sold Air time plans
plan
Laptop top sold tablet with
rule2rd top sold tablet
with rule top sold tablet with
ruletop sold Air time plans
plan
Dongle top sold tablet with
ruleNo rec  MBB air time top sold
productMBB Air time plans
based on tariff rule
Wifi top sold tablet with
ruleno rec  MBB Air time plans
top sold productMBB Air time plans
based on tariff rule
Simoplans top sold tablet with
rule2rd top sold tablet
with rule MBB Air time plans
top sold productMBB Air time plans
based on tariff rule
30 day Simo plans N/A N/A  if contract end date <30
top sold tablet with
rule2nd top sold tablet
with rule
30 day Simo plans N/A N/A   if <90 account start date >30
MBB Air time plans
top sold productMBB Air time plans
based on tariff rule
Gigacube N/A N/A  top 1 giga Air time
plans plantop2 giga Air time
plans plan CREType = flexi upgrade/Air time plans flexi CREType =  Normal

Tariff RULE : Present an eligible tariff (compatible with the device selected if relevant) with equal to or greater than Data allowance compared


to current tariff data allowance (including add on allowances if applicable). Use 24month tariffs for recommendations
If customer is on the top of the ladder tariff select the top of the ladder tariff

Device Rule:
If coming from an Apple tablet – present an Apple tablet (the top selling Apple tablet over past 1 month)


2231
Refine by should work the same as existing functionality with new plans included.

 If coming from a non Apple tablet  – present a Samsung tablet (the top selling Samsung tablet over past 1 month)


2232
Backlog


2233
Upgrade - Managing Netflix Plans
HL Requirement
Business wants to Introduce
A new set of Netflix inclusive Plans are being created allowing the customer to enjoy Netflix as part of the plan line rental.
The cost of the Netflix fee must be used in the Post S15 calculation for the Netflix plans as opposed to the standard entertainment cost.
The Netflix Benefit is displayed in the Airtime Benefit as sourced in the product catalog ‘Advertised Benefits
Impacted Areas
Configurations in PM Tool
New Product Attributes

NetFlixCost will be a new parameter in the AOM business config. the value will be £7.33.862657 Display the Netflix Benefit Logo in the Basket Summary
862667 Being able to manage the Netflix cost in PM Tool
862670 Use the Netflix Cost in the S15 Calculation
862677 Add Netflix as a Cohort Variable
862683 Exclude Netflix Plans in the Logic Rec if Netflix is available on the Account
862688 Being able to identify a Netflix Plan in Business Metadata
880347 Update Net Rev Calculation to include Netflix Discount862654 Display the Netflix benefit in the Airtime Benefit Hover
App Yes getcustomer API will updated for account
opened line details.
Logic Yes Create /Update Existing Flow
PM Tool Yes  Config changes only
UI/VADR Yes Updates in Airtime Benefits section. account
opened line sectiion.Area Yes/No Comments
IsNetFlix Boolean NetFlixPlan Single Value False Tariff True Name Type Description  Single/Multiple Default Product Type Sample Value


2234
NetFlixAddons will be AOM business config. the value will be 117026.
NetFlix as a new cohort variable in CustomerCohorts With type Segmentof1.
Logic Changes:
 Assisted Upgrade Flow will be conditionally updated to make sure NetFlix Plan gets eligible.
Logic Recommendations:
Update Strategy getActiveListofTariffs
.

 S155 Calculation
CalculateS15MafandBand
include Netflix cost in place of Entertainment cost for Netflix
plans.
Netflix discount will be part of the Posts15 calculation.
Include the pro-rate length of the contract.ApplyS15Check
CheckUpgradeLifeCycleS15Rule
ApplyTariffMAFRules
GetListofActiveTariffs
Calculate basket financials
Logic Recomendations:
Logic will exclude Netflix plans if Netflix for any subscription at the
same account is available. (app team need to provide we can use
a new function), account number we need to provde as a input.
Account level GPSL addons should verify with 117026 is Netflix
Addon(busines config).(APP work)
else,we can give non NetFlix plansGetListofActiveTariffs (choose the best place to put Netflix logic)
Net Revenue Calculation.
Include Discount amount from Prod catalog data (amount in
TariffToDiscount Compatibility) in this calculation. where plan is
Netflix plan.Net revenue calculation
CalculateBasketFinancials
Benefit Adv details:
nclude Discount amount from Prod attr. in this calculation. where
plan is Netflix plan.
Logic to populate BenefitAdvertisement from Tariff PC data for netflix
plan.EvaluateHandsetCompatibility
GetHandsetDetailsFromPC.
Popullate output properties
IH and Reporting: AsIs like AULogic Change Impacted Strategies


2236
New CrossSell Model

Dependency:
This story requires to provide details of the following models e.g. Model ID, JSON Payload
New converged model
Smart watch model
A. Update strategy - CalculatePriorityScoreForBatch
Update filter component Treatments With ModelBasedPriority to include all offers for which model propensity score is available
B. Update strategy - SetModelBasedPriority
Update the model filter and propensity score assignment for all offers for which model propensity score is available
Please ensure the model validity logic is applied.AOM-1552 Integrate new cross sell models


2237
Bundle Event Tech Debt - Remove Outbound Call from MVP Flow

Impact in Other areas
Dependencies
Logic Changes
Note: App team need to Disable the Extractor run for TIL Execution Mode
A. Update Data Flow - GetBestTreatmentsByTriggers
Remove the OutboundCC Branch flow1026969 Bundle Event Tech Debt - Remove Outbound Call from MVP Flow
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App YES
DB No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments


2238

B. Update Strategy - AllTreatmentsForEligibleOffers
Remove the Connection from ‘OutboundCC Treatments' Filter to 'OutboundTreatmentsByTrigger’ SetProperty
C. Update Strategy - IdentifyBestTreatmentForTIL
Remove the OutboundCC path for Priortization


2239
D. Update Strategy - PopulateOutputPropertiesForTrigger
Remove the OutboundCC path for PopulateOutputProperties
E. Update Strategy - CheckForDefaultOffer
Remove OutboundCC Treatments Path


2240

F. Update Strategy - ApplyRampUpRule
Remove the OutboundCC Path in RampUp Rule Code


2241
Purge File
Requirement is to create a purge file to OBCC for the customers who
 Got eligible for T2S offer offer in last 30 days
But reactivated their contract after offer is made.
Purge file will be created for each offer & sub channel by extractor case and  send to OBCC channel so Agents will not call customers who
already extended their contract.
Update GenerateInferredOutcomesT2S  DF
Add 2 destination to DF. These destinations will be feed only
Channel =OBCC
Treatments Purge =True
Outcome= Inferred Postive
Destination 1  : WriteOfferbySubchannelPurge (DF)
Feeds OfferbySubchannelPurge dataset
This data set unique list of Offer-Subchannel
Destination 2 : WritePurgeData (DF)
Feeds to 2 different data set according to config parameter  ( Similar to ProcessOutboundCC)
Parameter TBC
This dataset will contain list of customer & offer that will be used to create purge file
Update GenerateInferredOutcomesT2S  Strategy
Create Different paths for Inferred negative & positive
Inferred negative flow will not change, we will wait 30 days to create Inferred negative records.
Inferred positive responses will be created without waiting 30 days ( if Contract StartDate is extended after offer is send to customer.
)
Inferred Negative/positive records should not  be created multiple times.
Import treatment data to populate “Purge” attribute
Update InteractionHistoryADM view
Change date condition , view will populate all IH data from today -30 to today
Update OBCC Treatment DDS
Add Purge  attribute
PM Tool Impact
Push Purge flag to DSS ( it is already available in PM tool screen)
 AOM-1302 Purge File


2243
NBA FW - Interaction History Write Consolidation - Web

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

A. Update Strategy - SetIHForWeb
A1. Update set property component - Set IH with only the following -
A2. Remove sub-strategy SetGenericIHReportingAttributes

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

C. Update Strategy - IdentifyBestWebTreatmentsForSubscription
C1. Replace sub-strategy - SetIHForWeb with sub-strategy - SetIHPropertiesForAllChannels
C2. Update Switch component - Make Decision to refer to new - SetIHPropertiesForAllChannels instead of SetIHForWeb in all relevant
places
 AOM-xxxx Log Parent Child relationship to Interaction History
pyDirection “Outbound“
pyOutcome “Selected”
TargetSubChannel “Default“Property Name Value


2244
Prospect-Customer Matching Process

Prospect data will be stored in Prospect AOM spine ( when getNBA call is made for a prospect)
Spine loader case will run a DF to match prospect & customers
This DF will check If prospect has matching subscription (matching details available in Jira)
If yes , will update the prospect data with matching customer Id & copy Prospect IH data customer.
When creating IH records for customer
 AOM-1858 Create Prospect to Customer Matching Framework


2245
App-Push RampUp
Apply Ramp-up filter  to Appush channel for  MVP flow.
SMS & App Push will use the same configuration in BundleEventNTIDMap.
1. Update Strategy -ApplyRampUpRule
Update SMS Treatments filter
.Channel = "SMS" or  .Channel = "Appush"
Update Event Data Present filter
.EventType!=""&&.SubEventType!="" && Channel=SMS
Remove “AppPush Treatments” filter
2. Update Strategy -ProcessAppPush
Update “Not In Control Group2” filter  add condition RampUpFlag=N


2246
NBA FW - Select winning email subject line in real time (Intra-day)
Process OverviewAOM-1449 Select winning email subject line in real time


2247

A. Setting up multiple subject line
A1. Update all “Email” decision data structure for all Squads to add a new property -
ApplyEmailSubjectLineMVT (text) Possible values - Yes/No


2248
ResetPeriod - Integer (positive integer only)

A2. Create new decision data - EmailSubjectLineMVT
pyName - generate unique ID
pyIssue - set to “NonPropositions”
pyGroup - set to “EmailSubjectLineMVT”
TreatmentName (text)
EmailSubjectLine (text)
Default (Text) Possible values - Yes/No
EmailSubjectLineTestID (text) - generate unique ID for every new setup of EmailSubjectLines for the TreatmentName (To be discussed)

Note - It is possible to setup same EmailSubjectLine multiple times for the same TreatmentName
Only one EmailSubjectLine for a TreatmentName will be allowed to be set as “Default” (Default = Yes)

A3. Update the Treatment Screen (For Email Treatments only) to add following 1 input (PM tool)
ApplyEmailSubjectLineMVT - Single select drop-down, optional
Possible value - Yes/No

When ApplyEmailSubjectLineMVT is set to “Yes” provide new “section”/”screen” (depending on VF) to setup multiple subject lines (2 or
more) for the treatment

Note - It is possible to setup same EmailSubjectLine multiple times for the same TreatmentName

B. Setting up Initial Volume
B1. Update decision data - VolumeConstraints - to add a new property -
InitialVolumeLimit - Integer (positive Integer only)

B2. PM Tool changes
In PM Tool, the InitialVolumeLimit will be set for Email Treatment (only applicable to Email) only if ApplyEmailSubjectLineMVT is set to “Yes”

C. Splitting the Email Volume
C1. Update - PopulateVolumeConstraints - strategy


C. Splitting the Email Volume
C1. Update - PopulateVolumeConstraints - strategy
to populate InitialVolumeLimit & VolumeLimit for Email treatments in data set TreatmentsForOB using VolumeConstraints decision data

The InitialVolumeLimit will be populated only if -


2249
Email Subject Line has never been run; This will be identified by calling the Data Page (Input Parameter - TreatmentName) to get the
Email SubjectLine with highest Open Rate and if the Data Page returns as “NotRun” (for the very first run)
OR
 Winning Email Subject Line has expired due to “ResetPeriod”; This will be identified by calling the Data Page (Input Parameter -
TreatmentName) to get the Email SubjectLine with highest Open Rate and if the Data Page returns as
“WinningEmailSubjectLineExpired” (for subsequent runs)
The VolumeLimit will be populated as follows -
If InitialVolumeLimit is available set as VolumeLimit = VolumeConstraints decision data.VolumeLimit - InitialVolumeLimit
Else VolumeLimit = VolumeConstraints decision data.VolumeLimit

In case the Email SubjectLine MVT is not required to be run, the Data Page (Input Parameter - TreatmentName) should return
“DoNotRunEmailSubjectLineMVT”. In this case, InitialVolumeLimit will not be populated.

C2. Update  volume constraints process
This process will consider the InitialVolumeLimit (new) and VolumeLimit property for Email treatments.
If InitialVolumeLimit is set (for the Email treatment in data set - TreatmentsForOB),
Volume constraints process will “tag” the respective Treatment records as SplitType = “InitialSplit” for set of customers upto
InitialVolumeLimit and will “tag” the respective Treatment records as SplitType = “RemainingSplit” for rest of customers upto VolumeLimit

If InitialVolumeLimit is not set (for the Email treatment in respective data set),
Volume constraints process will “tag” the respective Treatment records as SplitType = “NoSplit” for customers upto VolumeLimit

C. Splitting the Email Customer Segments


C. Splitting the Email Customer Segments
C1. Update table - subscription_campaign_flags to add 3 new columns
EmailInitialSplit - char(1)
EmailRemainingSplit - char(1)
EmailNoSplit - char(1)

C2. Update class - VFUK-FW-AOMFW-Data-SubscriptionCampaignFlags
C3. Update Data Flow - SetSubscriptionCampaignFlags
Remove the convert shapes which sets the EmailEligible & SMSEligible flags
Call new strategy SetSubscriptionCampaignFlags
Set the following flags based on the output of the strategy -
EmailEligible
EmailInitialSplit
EmailRemainingSplit
EmailNoSplit


2250
SMSEligible
C4. New strategy - SetSubscriptionCampaignFlags
Import TreatmentList from Primary
Set EmailEligible to Y if there is at least one Email Treatments in TreatmentList, set to N otherwise
Set EmailInitialSplit to Y f there is at least one Email Treatments in TreatmentList with SplitType = “InitialSplit”, set to N otherwise
Set EmailRemainingSplit to Y f there is at least one Email Treatments in TreatmentList with SplitType = “RemainingSplit”, set to N otherwise
Set EmailNoSplit to Y f there is at least one Email Treatments in TreatmentList with SplitType = “NoSplit”, set to N otherwise
Set SMSEligible to Y if there is at least one SMS Treatments in TreatmentList, set to N otherwise

C5. New Segment - EmailSegmentInitialSplit
All customers with
EmailEligible = Y
EmailInitialSplit = Y
C6. New Segment - EmailSegmentRemainingSplit
All customers with
EmailEligible = Y
EmailRemainingSplit = Y
C7. New Segment - EmailSegmentNoSplit
All customers with
EmailEligible = Y
EmailNoSplit = Y

D. Update Pega Marketing Strategy
D1. Update strategy - PrepareEmailTreatments
Replace Data Import  - Treatment List with External Input

D2. New strategy - PrepareEmailTreatmentsForInitialSplit
Create Data Import  - Treatment List
Add Filter component to select Email Treatments with SplitType = “InitialSplit”
Call sub-strategy - PrepareEmailTreatments
Call sub-strategy - ApplyEmailSubjectLineMVT
Add Prioritize component - rank by .RankingScore (same as Prioritize by RankingScore component in
PopulateOutputPropertiesForEmailByBatch )
Connect to Results


PopulateOutputPropertiesForEmailByBatch )
Connect to Results

D3. New strategy - PrepareEmailTreatmentsForRemainingSplit


2251
Create Data Import  - Treatment List
Add Filter component to select Email Treatments with SplitType = “RemainingSplit”
Call sub-strategy - PrepareEmailTreatments
Call sub-strategy - SelectWinningEmailSubjectLine
Add Prioritize component - rank by .RankingScore (same as Prioritize by RankingScore component in
PopulateOutputPropertiesForEmailByBatch )
Connect to Results

D4. New strategy - PrepareEmailTreatmentsForRemainingSplit
Create Data Import  - Treatment List
Add Filter component to select Email Treatments with SplitType = “NoSplit”
Call sub-strategy - PrepareEmailTreatments
Add Filter component to select Email Treatments with ApplyEmailSubjectLineMVT = “No” or NULL and connect to Prioritize component
Add Filter component to select Email Treatments with ApplyEmailSubjectLineMVT = “Yes”, Call sub-strategy -
SelectWinningEmailSubjectLine
Add Prioritize component - rank by .RankingScore (same as Prioritize by RankingScore component in
PopulateOutputPropertiesForEmailByBatch )
Connect to Results

D5. New strategy - ApplyEmailSubjectLineMVT
Enable External Input
For each treatment (using Embedded strategy)
Find the different subject lines from decision data - EmailSubjectLineMVT
Split the customers into equal groups based on the number of subject lines setup for the treatment. E.g. if 4 subjectlines are setup,
create 4 25% splits (similar pattern as used in apply control group strategy)
Set EmailSubjectLineNP property as relevant for the customer from decision data - EmailSubjectLineMVT without personalisation (this
will be written to IH)
Set EmailSubjectLine property to set the “personalised” version


will be written to IH)
Set EmailSubjectLine property to set the “personalised” version
set EmailSubjectLineTestID from relevant decision data to be stored in IH
Return results

D6. New strategy - SelectWinningEmailSubjectLine
Enable External Input
For each treatment (using Embedded strategy)
Call new Data Page (Input Parameter - TreatmentName) to get the Email SubjectLine with highest Open Rate
If the Data Page returns “NoWinningEmailSubjectLine”,
Set EmailSubjectLineNP property using  the “Default” EmailSubjectLine from the decision data
If the Data Page returns a EmailSubjectLine
Set EmailSubjectLineNP property using Email SubjectLine as returned by the data page


2252
Set EmailSubjectLine property to set the “personalised” version
set EmailSubjectLineTestID from relevant decision data to be stored in IH
Return results
D7. new Data Page (Input Parameter - TreatmentName) to get the Email SubjectLine with highest Open Rate
For the Input TreatmentName -
To be confirmed by App Team -
In case the Email SubjectLine MVT is not required to be run, the Data Page (Input Parameter - TreatmentName) should return
“DoNotRunEmailSubjectLineMVT”. This can be based on a Engine Config Parameter in the app layer.

Check if WinningEmailSubjectLine is available (stored in a separate data store/type)
If WinningEmailSubjectLine is available and it has not expired (has not passed the ResetPeriod), return as WinningEmailSubjectLine and
skip further processing
If If WinningEmailSubjectLine is available but has expired (has  passed the ResetPeriod),return “WinningEmailSubjectLineExpired” and skip
further processing
If If WinningEmailSubjectLine is not available do the following -
LatestEmailSubjectLineTestID = Identify EmailSubjectLineTestID for the latest IH (by OutcomeTime) for the TreatmentName for
Outcome = “Pending”
If no records are found in IH, return “NotRun” and skip further processing
LatestEmailSubjectLineTestStartDate = Identify the earliest IH (by OutcomeTime) for the TreatmentName for Outcome = “Pending”  for
the LatestEmailSubjectLineTestID (this identifies when the latest subject line testing was run for the first time
Identify all email Open IH records after LatestEmailSubjectLineTestStartDate
If there are no “Open” records, return “NoWinningEmailSubjectLine” and raise an alert (because it is likely that No “open” records are


due some issue in email delivery)
Calculate OpenRate for each EmailSubjectLineNP (in IH) for the LatestEmailSubjectLineTestID as
Count of Open for EmailSubjectLineNP / Count of all Open
Check if there is a EmailSubjectLineNP with highest OpenRate, then
return the Email Subject Line
Store Winning Email Subject Line with date stamp in a different store (so that until it resets, no IH query is required)
If all subject lines are with same OpenRate, return “NoWinningEmailSubjectLine” but do not raise alert

To be confirmed by App Team -
How to provide the ResetPeriod to App?

E. Setup split campaigns
E1. Create Pega Marketing Campaign - EmailCampaignForInitialSplit
Use Segment - EmailSegmentInitialSplit
Use strategy - PrepareEmailTreatmentsForInitialSplit

E2. Create Pega Marketing Campaign - EmailCampaignForRemainingSplit
Use Segment - EmailSegmentRemainingSplit


2253
Use strategy - PrepareEmailTreatmentsForRemainingSplit

E3. Create Pega Marketing Campaign - EmailCampaignForNoSplit
Use Segment - EmailSegmentNoSplit
Use strategy - PrepareEmailTreatmentsForNoSplit

F. Executing split campaigns (App Team)
F1. “Prepare BatchNBA Extract” should be updated to -
1. Trigger the new campaign - EmailCampaignForInitialSplit when “Set Subscription Campaign Flags” finishes
2. Trigger the new campaign - EmailCampaignForNoSplit when the campaign - EmailCampaignForInitialSplit finishes
F2. Create a process to trigger the new campaign -
 EmailCampaignForRemainingSplit after x hours (configurable) from the completion of campaign - EmailCampaignForInitialSplit
To be confirmed by App Team -
Whether it is possible to run the segments and trigger the campaigns only if the segment has customers.

G. Extend IH
Extend Fact table to add new property
EmailSubjectLineNP - varchar2 (4000)
EmailSubjectLineTestID - varchar2 (1000)

Update IH View to include EmailSubjectLineNP, EmailSubjectLineTestID


2254
NBA FW - Select winning email subject line in real time (next-day)
Pass ResetPeriod to data page
Update to Capture Response for Email to store TestID & SubjectLine

Process OverviewAOM-xxxx Select winning email subject line in real time (next day)


2255

A. Setting up multiple subject line
A1. Update all “Email” decision data structure for all Squads to add a new property -
ApplyEmailSubjectLineMVT (text) Possible values - Yes/No
ResetPeriod - Integer (positive integer only)

A2. Create new decision data - EmailSubjectLineMVT


2256
pyName - generate unique ID
pyIssue - set to “NonPropositions”
pyGroup - set to “EmailSubjectLineMVT”
TreatmentName (text)
EmailSubjectLine (text)
Default (Text) Possible values - Yes/No
EmailSubjectLineTestID (text) - generate unique ID for every new setup of EmailSubjectLines for the TreatmentName (To be discussed)

Note - It is possible to setup same EmailSubjectLine multiple times for the same TreatmentName
Only one EmailSubjectLine for a TreatmentName will be allowed to be set as “Default” (Default = Yes)

A3. Update the Treatment Screen (For Email Treatments only) to add following 1 input (PM tool)
ApplyEmailSubjectLineMVT - Single select drop-down, optional
Possible value - Yes/No

When ApplyEmailSubjectLineMVT is set to “Yes” provide new “section”/”screen” (depending on VF) to setup multiple subject lines (2 or
more) for the treatment

Note - It is possible to setup same EmailSubjectLine multiple times for the same TreatmentName

A4. PM Tool changes
In PM Tool, the InitialVolumeLimit will be set for Email Treatment (only applicable to Email) only if ApplyEmailSubjectLineMVT is set to “Yes”

B. new Data Page (Input Parameter - TreatmentName) to get the Email SubjectLine with highest Open Rate (to be done by App
Team)
For the Input TreatmentName -
To be confirmed by App Team -
In case the Email SubjectLine MVT is not required to be run, the Data Page (Input Parameter - TreatmentName) should return


“DoNotRunEmailSubjectLineMVT”. This can be based on a Engine Config Parameter in the app layer.

Check if WinningEmailSubjectLine is available (stored in a separate data store/type)
If WinningEmailSubjectLine is available and it has not expired (has not passed the ResetPeriod), return as WinningEmailSubjectLine and
skip further processing
If If WinningEmailSubjectLine is available but has expired (has  passed the ResetPeriod),return “WinningEmailSubjectLineExpired” and
skip further processing
If If WinningEmailSubjectLine is not available do the following -


2257
LatestEmailSubjectLineTestID = Identify EmailSubjectLineTestID for the latest IH (by OutcomeTime) for the TreatmentName for
Outcome = “Pending”
If no records are found in IH, return “NotRun” and skip further processing
LatestEmailSubjectLineTestStartDate = Identify the earliest IH (by OutcomeTime) for the TreatmentName for Outcome = “Pending”  for
the LatestEmailSubjectLineTestID (this identifies when the latest subject line testing was run for the first time
Identify all email Open IH records after LatestEmailSubjectLineTestStartDate
If there are no “Open” records, return “NoWinningEmailSubjectLine” and raise an alert (because it is likely that No “open” records
are due some issue in email delivery)
Calculate OpenRate for each EmailSubjectLineNP (in IH) for the LatestEmailSubjectLineTestID as
Count of Open for EmailSubjectLineNP / Count of all Open
Check if there is a EmailSubjectLineNP with highest OpenRate, then
return the Email Subject Line
Store Winning Email Subject Line with date stamp in a different store (so that until it resets, no IH query is required)
If all subject lines are with same OpenRate, return “NoWinningEmailSubjectLine” but do not raise alert

To be confirmed by App Team -
How to provide the ResetPeriod to App?

C. Update Pega Marketing Strategy
C1. New strategy - SelectEmailTestSubjectLines
Enable External Input
For each treatment (each input records)
Find the different subject lines from decision data - EmailSubjectLineMVT
Split the customers into equal groups based on the number of subject lines setup for the treatment. E.g. if 4 subjectlines are setup,


create 4 25% splits (similar pattern as used in apply control group strategy)
Set EmailSubjectLineNP property as relevant for the customer from decision data - EmailSubjectLineMVT without personalisation (this
will be written to IH)
Set EmailSubjectLine property to set the “personalised” version
set EmailSubjectLineTestID from relevant decision data to be stored in IH
Return results

C2. New strategy - SelectWinningEmailSubjectLine
Enable External Input
For each treatment (each input records)
Set EmailSubjectLineNP property using Email SubjectLine as returned by the data page
Set EmailSubjectLine property to set the “personalised” version
set EmailSubjectLineTestID from relevant decision data to be stored in IH
Return results
C3. New strategy - SelectDefaultEmailSubjectLine
Enable External Input


2258
For each treatment (each input records)
Set EmailSubjectLineNP property using  the “Default” EmailSubjectLine from the decision data
Set EmailSubjectLine property to set the “personalised” version
set EmailSubjectLineTestID from relevant decision data to be stored in IH
Return results
C4. New strategy - ApplyEmailSubjectLineMVT
Enable External Input
Add Filter component to select Email Treatments with ApplyEmailSubjectLineMVT = “No” or NULL and connect to Results component
Add Filter component to select Email Treatments with ApplyEmailSubjectLineMVT = “Yes”
For each treatment with ApplyEmailSubjectLineMVT = “Yes” (using Embedded strategy)
Call new Data Page (Input Parameter - TreatmentName) to get the Email SubjectLine with highest Open Rate
if the Data Page returns “WinningEmailSubjectLineExpired” or “NotRun“
call sub-strategy SelectEmailTestSubjectLines
if the Data Page returns “DoNotRunEmailSubjectLineMVT” or “NoWinningEmailSubjectLine“
call sub-strategy SelectDefaultEmailSubjectLine
if the Data Page returns a SubjectLine (NOT “WinningEmailSubjectLineExpired” and “NotRun“ and
“DoNotRunEmailSubjectLineMVT” and “NoWinningEmailSubjectLine“ and NULL )
call sub-strategy SelectWinningEmailSubjectLine
Add Prioritize component - rank by .RankingScore (same as Prioritize by RankingScore component in
PopulateOutputPropertiesForEmailByBatch )
Connect to Results

C5. Update strategy - PrepareEmailTreatments
After sub-strategy PopulateOutputPropertiesForEmailByBatch
Call sub-strategy - ApplyEmailSubjectLineMVT
Connect to results

D. Extend IH
Extend Fact table to add new property


Connect to results

D. Extend IH
Extend Fact table to add new property
EmailSubjectLineNP - varchar2 (4000)
EmailSubjectLineTestID - varchar2 (1000)

Update IH View to include EmailSubjectLineNP, EmailSubjectLineTestID


2259
NBA FW - DF2 Performance Changes

A. Create a new C* data set - EligibleIntentsByCustomer
Class - VFUK-AOMFW-SR
Keys -
pySubjectID
pyName

B. Update Data Flow - IdentifyCustomerIntents
B1. Update the Decision Strategy Component to return “All Results” from the decision strategy call as below -
B2. Replace the destination data set - SubscriptionDataForBatchNBA with the new data set - EligibleIntentsByCustomer
C. Truncate the new data set - EligibleIntentsByCustomer before the above data flow is executed from the case (App Team)
D. Update Data Flow - IdentifyBestOBTreatmentsByBatch
Add a new compose shape - Get Customer Intents after source data set - SubscriptionDataForBatchNBA   to join with new data set -
EligibleIntentsByCustomer
Join condition - .pySubjectID = .CustomerID and populate pagelist - CustomerIntentListAOM-2638 DF2 Performance Changes


2261
Batch Funnels
NBA Framework Funnels Description:
IdentifyEligibleOffers1 IdentifyEligibleOffers
ImportAllOffers
EvaluateCustomerSegment
IdentifyOffersForEligibleIntents
ApplyGlobalRulesForBatchOffers
ApplyBusinessPurposeQuarantineCheckForControl
ApplyGlobalContactStrategy
ApplyBusinessPurposeContactStrategy
ApplyOfferSelfContentionStrategy
IdentifyEligibleCrossSellOffers
SetExpiryPeriod
SetOfferVariationLevelPropensityOrder NBA Framework
ImportAllOffers Import all offers and and process for only active offers.
EvaluateCustomerSegment Offers which have customer segment configured is evaluated
with CustomerSegmentsEligibility PF
Offers which does not have customer segment configured will be
return without PF check
IdentifyOffersForEligibleIntents Based on eligible Intents and its confidence score respective offers
are returned either through with intent to offer path or intent to bp or
squad intent path and dedupe is also applied
ApplyGlobalRulesForBatchOffers Some Global rules like Subscription is Consume post pay and
Subscription is active and other GlobalEligibilityRulesForBatch
are evaluated in this strategy.
ApplyBusinessPurposeQuarantineCheckForControl This is specific to control group feature. If CG is enabled for any
control group and customer is in control for that offer then all the
offers associated with that business purpose should be in control
mode until control quarantine period is over.
ApplyGlobalContactStrategy Global Contact Strategy feature is applied when
ApplyGlobalContactStrategy is enabled and Mandatory is not
equals to yes and ConfidenceScoreRange is not equals to "High"
Global Contact Strategy is not applied when
ApplyGlobalContactStrategy is not applied OR Mandatory = yes
OR ConfidenceScoreRange="High"
Exposure Rate (days between contacts - equivalent of Unica


OR ConfidenceScoreRange="High"
Exposure Rate (days between contacts - equivalent of Unica
1MKT4) ·
Saturation Rate (max contacts per month) ·Strategy Explaination


2262
Intent based exceptions - waive contact rules if intent confidence
above x
ApplyBusinessPurposeContactStrategy Apply Business Purpose Contact Strategy feature is applied
when GlobalRelevancey =Relevant and
ApplyBusinessPurposeContactStrategy=yes and Mandatory is
not equals to yes and ConfidenceScoreRange is not equals to
"High"
Do not apply business purpose contact strategy if
Mandatory="Yes" || ApplyBusinessPurposeContactStrategy is not
equals to "Yes" || .ConfidenceScoreRange,"High"
Do not apply business purpose contact strategy if
GlobalRelevancy is not relevant
Configure the following at Business Purpose level:
• Saturation Rate - Max number of contacts with a customer
per month
• Crossover Rate - Minimum number of days that must elapse
between changing from one offer to another within the same
business
ApplyOfferSelfContentionStrategy ApplyOfferSelfContentionStrategy feature is applied when
ApplyOfferSelfContentionStrategy="Yes" and
ConfidenceScoreRange is not "High" and GlobalRelevancy =
"Relevant" and BPRelevancy = "Relevant"
ApplyOfferSelfContentionStrategy feature is not applied when
ApplyOfferSelfContentionStrategy!="Yes"||
ConfidenceScoreRange="High" and GlobalRelevancy =
"Relevant" and BPRelevancy = "Relevant"
Re-presentation rate - How many days must elapse before an
offer can be repeated? Valid for 'live' offers.
Fallow period - How many days must elapse before an Offer has
been presented after it has been rejected or is successful · Intent
based exceptions - As per Offer applicable when Intent
Confidence is above the configured level


based exceptions - As per Offer applicable when Intent
Confidence is above the configured level
IdentifyEligibleCrossSellOffers CrossSellOffersEligibility PF is executed in this strategy which
helps to assess whether offer is eligible or ineligible
Offer Eligibility rules and some global rules are evaluated.
Only Eligible Offers are returned to the result.
SetExpiryPeriod This use case is introduced for Microsite purpose but it can be used
across other channels if needed.
It helps in setting offer expiry and applies contention (for n number of
days based on the cofiguration) once the offer is expired to send
again the same offer next time.
It sets the Offer Expiry for an offer if it is configured PM tool for
that offer.
if FallowPeriodForOfferExpiry=-1 then offer is permanently not
sent
Based on the configuration in the PM for the field
FallowPeriodForOfferExpiry the contention is applied for an


2263
IdentifyOfferVariantsForEligibleOffersexpired offer
SetOfferLevelPropensity OfferPropensity is set to StartingPropensity if PropensitySource
="" || PropensitySource ="Default" ||(PropensitySource ="BDC"
and ModelId ="")
OfferPropensity is set to ModelPropensity and
PropensityLevel=Offer if PropensitySource ="BDC" and ModelId
is not equals to null
2 IdentifyOfferVariantsForEligibleOffers
IdentifyEligibleOffers
ApplyCrossSellOfferVariationsEligibility
IdentifyBestOfferVariantForOffer
SetOfferVariationLevelPropensity
 Order NBA Framework
IdentifyEligibleOffers Imported as sub strategy. It inputs eligible offers.
ApplyCrossSellOfferVariationsEligibility OfferVariants are identified for an eligible Offer
OfferVariants are evaluated using PF
CrossSellOfferVariationsEligibility
Multiple OfferVariants can be eligible for the same offer.
Example: 1GB,2GB can be configured as offer variants
IdentifyBestOfferVariantForOffer This Strategy identifies best Variant
Multiple OfferVariants can be eligible for an offer. Top VariantRank
Offer Variant is returned in the result.
If Rank is configured in OffertoOfferVariations Decision data then
VariantRank configured to 1 will be returned to the result.
Example: Based on the requirement if 1GB,2BG, 3GB offer
variants are eligible and if 3BG offer variant is configured with
Rank as 1 then 3GB offer variant is returned in the result.
SetOfferVariationLevelPropensity  if PropensitySource ="" || PropensitySource ="Default" ||
(PropensitySource ="BDC" and ModelId ="") then its offervariants


(PropensitySource ="BDC" and ModelId ="") then its offervariants
for eligible offers (which is now at offer to offervariant level) is
returned to the result
OfferPropensity is set to ModelPropensity and
PropensityLevel=OfferToOfferVariants if PropensitySource
="BDC" and ModelId is not equals to null and
3 AllTreatmentsForEligibleOffers
ApplyOfferVariationsDataToTreatments
ImportAllTreatments
IdentifyOfferVariantsForEligibleOffersOrder NBA Framework


2264

ApplyOfferVariationsDataToTreatments Imported as sub strategy. It inputs eligible Offer Variants for eligible
Offers.
ImportAllTreatments This strategy result gives the active treatments present in all the
business purposes.
IdentifyOfferVariantsForEligibleOffers Strategy output is at treatment level with eligible offer variant
information
Treatment is associated with an Offer.
Only Eligible Offer Treatments are returned to the result.
All the eligible offer variants for the eligible offers data is copied to
the treatments data for the matched offers.
Email, SMS, OutboundCC and DirectMail treatments are returned
for the batch.
4 IdentifyEligibleOBTreatments
AllTreatmentsForEligibleOffers
ApplyChannelEligibility
ApplyChannelContention
ApplyTreatmentEligibilityOrder NBA Framework
AllTreatmentsForEligibleOffers Imported as sub strategy. It inputs Treatments for eligible offers.
ApplyChannelEligibility The purpose of this strategy is to check whether channel per
businesspurpose is eligible or not.
This strategy evaluates the proposition filter called
ChannelBusinessPurposeEligibility.
For the eligible treatment records it identifies unique list of
channel business purpose records and evaluates eligibility rules
configured in the PF ChannelBusinessPurposeEligibility.
ApplyChannelContention Use case is to apply contention after an initial communication is
sent for n number of days configured for channel in the decision
data.
If ApplyChannelContention is true then channel contention
feature is applied.
If ApplyChannelContention is false then channel contention
feature is not applied.
Decision data called ChannelContention is used in this strategy
where number of contention days per channel is configured.


2265
Example: If the contention period is defined as 5 in
ChannelContention Decision Data for an OutboundCC channel,
then after the first initial communication of OutboundCC treatment
it restricts (Applies contention) for 5 days. Until 5 days, even if
treatment is eligible also it is dropped because of contention.
Next communication is done once the contention period is over
for this channel.
ApplyTreatmentEligibility This is important step in the NBA framework
Treatment eligibility is checked in this strategy using respective
channel treatment proposition filters like
CrossSellOutboundCCTreatmentEligibility,CrossSellEmailTreatm
entEligibility,CrossSellSMSTreatmentEligibility.
Ineligible treatments are dropped in this strategy
5 IdentifyBestOBTreatmentsByBatch
IdentifyBestTreatmentsForOffers
IdentifyBestTreatmentforSubscription
IdentifyTreatmentVariations
PopulateControlGroupPercentage
SelectBetweenOfferORTreatmentPotentialControlSplit
PopulateDedupeScore
PopulateVolumeConstraintsPriority
PopulateOutputPropertiesForBatch
SetIHPropertiesForAllChannelsApplyTreatmentEligibilityOrder NBA Framework
IdentifyEligibleOBTreatments Imported as sub strategy. It inputs eligible Outbound Treatments.
IdentifyBestTreatmentsForOffers This strategy identifies best treatments for offers based on
PickBestTreatmentsMethod
If PickBestTreatmentsMethod is null then this feature
PickBestTreatmentsMethod feature is not applied and all the
eligible treatments are returned
If PickBestTreatmentsMethod is not null then based on the type
configured for PickBestTreatmentsMethod best treatments are
identified.
Types of PickBestTreatmentsMethod are
ChannelHierarchy,BestChannelModel,TreatmentRank


identified.
Types of PickBestTreatmentsMethod are
ChannelHierarchy,BestChannelModel,TreatmentRank
If PickBestTreatmentsMethod is ChannelHierarchy then eligible
treatments are ordered by channel rank configured in channels
dd
If PickBestTreatmentsMethod is BestChannelModel then eligible
treatments are propensity
If PickBestTreatmentsMethod is TreatmentRank then eligible
treatments are ordered by rank


2266
IdentifyBestTreatmentforSubscription This strategy invokes CalculatePriority
,IdentifyBestTreatmentForBatch,IdentifyBestEmailTreatment
ForBatch,ConsumeCapacityUnitForTreatment  strategies.
 CalculatePriority : It calculates priority value and it uses the
decision data called “ArbitrationControlParameters“
IdentifyBestTreatmentForBatch: For non email channels when
Mandatory = yes then all treatments are sent to output. For
Mandatory = no , it uses OfferDecisionMix decision which set
max offers per execution mode. only configured max offer count
number of treatments will be sent to result.
IdentifyBestEmailTreatmentForBatch: For email channel ,
bundling logic is done in this strategy. ParentChildTreatments
decision data is used here.
ConsumeCapacityUnitForTreatment : This strategy is created
as part of the reconfigure volume constraints in batch mode
feature. this feature is invoked when rule is enabled.
@Utilities.callWhen(tools,"IsReconfigureVolumeEnabled",Primary
)
IdentifyTreatmentVariations This strategy invokes
IdentifyCrossSellTreatmentVariations,ApplyAdditionalTreatm
entVariationValidations,IdentifyBestTreatmentVariantForTrea
tment,IdentifyBestTreatmentVariationsForSubscription
strategies.
IdentifyCrossSellTreatmentVariations: It identified eligible
treatment variations. PF’s used in this strategy are
CrossSellTreatmentVariationsEligibility,CrossSellTreatmentToTre
atmentVariationEligibility. Non Email eligible treatments with
eligible treatmentvariants are sent to result. Non email eligible
treatments with eligible treatmentvariants records are passed to
the sub strategy PrioritiseCrossSellTreatmentVariants and this
prioritise treatment variants based on model data and some other
rules.


prioritise treatment variants based on model data and some other
rules.
ApplyAdditionalTreatmentVariationValidations: Some
additional validations are done for treatment variants if
@contains(@toUpperCase(.TreatmentVariant),"TOBI")||@contain
s(@toUpperCase(.TreatmentVariant),"WEBCHAT")||@contains(
@toUpperCase(.TreatmentVariant),"ONLINE") in
IHAndTealiumValidation strategy. In the strategy
IHAndTealiumValidation , IH and telium validation and
substrategy called IdentifyTreatmentVariantByBDCModel is
invoked.
 The treatment variants without patterns
!@contains(@toUpperCase(.TreatmentVariant),"TOBI")&&!@cont
ains(@toUpperCase(.TreatmentVariant),"WEBCHAT")&&!@conta
ins(@toUpperCase(.TreatmentVariant),"ONLINE") are joined to
the result directly.
IdentifyBestTreatmentVariantForTreatment: Finds out the top
variant rank 1 and sent to the result
IdentifyBestTreatmentVariationsForSubscription: Identifies
the best variant for parent offer based on max limit and childs


2267
PopulateControlGroupPercentage This strategy finds whether control group percentage should be
applied at Offer level or treatment level if Control group
percentage is configured and enabled
SelectBetweenOfferORTreatmentPotentialControlSplit This strategy invokes ApplyPotentialControlSplit,
ApplyBusinessPurposeQuarantineCheckForTarget strategies.
This strategy calculates target and control modes
PopulateDedupeScore This strategy sets dedupescore using pxPriority
PopulateVolumeConstraintsPriority This strategy sets VolumeConstraintsPriority using pxPriority
PopulateOutputPropertiesForBatch The strategy sets all the required fields which is necessary in the
output
SetIHPropertiesForAllChannels This strategy invokes
SetCommonIHPropertiesForAllChannels,
SetGenericIHReportingAttributes and relevant channel sub
strategies.
This strategy sets required IH properties


2268
Inbound Seed Testing (GetNBA) - Enable channels Web, InboundCC & Retail
Logic Changes
A. Update Strategy - PopulateOutputPropertiesForWeb
Add an alternate path from filter component - “Execution Mode is GetNBA” and add sub-strategy component - “Get Max Discount“
referencing strategy - IdentifyMaxDiscountForTariffType
Add a switch component - “Check for eShop - SecondLine Private Pricing” -
Select component - “Get Max Discount“, if @equalsIgnoreCase(.Intent,"Buy-Second-Line")
Otherwise, select component - “Execution Mode is GetNBA”
Connect the switch component - “Check for eShop - SecondLine Private Pricing” to sub-strategy component -
PopulateOutputPropertiesForGetNBA
B. Update Strategy - PopulateOutputPropertiesForGetNBA
Remove alternate path (bottom) and the components -
Additional Line Filter
Get Max Discount
PopulateOutputPropetiesForGetNBAPrivatePricing
Remove filter component - “Not Additional Line Filter”
Connect External Input to components -
Product Code Check
ParentChild Check
Set Property for TreatmentActions
Disconnect data join component - “Join Treatment Attributes“ from Results
Add an alternate path from External Input and add filter component - “Child Check - eShop SecondLine Private Pricing” with condition as
.ParentChild != “Parent”
Add another alternate path from data join component - “Join Treatment Attributes“ and add data join component - “Get Child Data To
Parent -  eShop SecondLine” and join with component - “Child Check - eShop SecondLine Private Pricing” -
With Join Condition -
.TreatmentName = ..BundleParentTreatment
Enable “Exclude”
Property mapping -
.DiscountType = .DiscountType
.DiscountAmount = .DiscountAmount


Property mapping -
.DiscountType = .DiscountType
.DiscountAmount = .DiscountAmount
.DiscountCode = @replaceAll(.Identifier,"DP_","")
Add a set property component - “Parent And Child -  eShop SecondLine”. Do not set any properties.
Connect the following components to set property component - “Parent And Child -  eShop SecondLine” -
“Child Check - eShop SecondLine Private Pricing”
“Get Child Data To Parent -  eShop SecondLine”
Add a switch component - “Check for eShop - SecondLine Private Pricing” -
Select component - “Parent And Child -  eShop SecondLine”, if @equalsIgnoreCase(.Intent,"Buy-Second-Line")
Otherwise, select component - “Join Treatment Attributes”
Connect the switch component - “Check for eShop - SecondLine Private Pricing” to Results


2269
Add annotation next to filter - “Product Code Check“ and mention how this is used for IVR & TradeIN the populate “Items”
C. Update Strategy - PrepareInboundNBAForSeedTest
Update Filter component - “Valid Channels” with expression as below - @String.equalsIgnoreCase(SetChannel.Channel,"IVR")||
@String.equalsIgnoreCase(SetChannel.Channel,"App")|| @String.equalsIgnoreCase(SetChannel.Channel,"Web")||
@String.equalsIgnoreCase(SetChannel.Channel,"InboundCC")|| @String.equalsIgnoreCase(SetChannel.Channel,"Retail")


2270
Hotfix - PopulateOutputPropetiesForGetNBAPrivatePricing
Update Strategy - PopulateOutputPropetiesForGetNBAPrivatePricing
Disconnect data join component - “Join Attributes Data” from component - “Child Check” and Results
Move data join component - “Join Attributes Data” between component - “Set Property for Action“ and  component - “Join Discount Data“
Update data join component - “Join Discount Data“ -
join with component - “Child Check”
remove property mapping - .TreatmentAttributes = .TreatmentAttributes
Connect component - “Child Check” to Results


2271
Assisted Upgrade – Sellable Flags for Discount
DiscountALLHL Requirement:
Businesses want the ability to configure sellable capability for Discount via PMTool.
Impacted Areas
Logic Changes:
Current logic implementation to call D_DiscountsForTariff remains the same.

Need to configure below product attributes for Discount in pm tool

NOTE: SELLABLE ATTRIBUTES ARE OLD ONES we need to reuse them.552430 Being able to manage Discount Sellable flag in PM Tool
App Yes Update Data Page D_DiscountsForTariff
Logic access data pages division and tariff
code as identifiers.

Filtering should happen at data page level
based on the saleability
Logic
PMTool No
 Configuration on product attributes for
Discount, existing functionality

UI No  Area Yes/No Area
Discount Sellable  Flag IsSellable Boolean True /False TRUE
Discount Sellable  Flag SellableChannels Text(Multi
Select ALL
Discount Sellable  Flag SellableTeams Text(Multi
Select ALL
Discount Sellable  Flag OrderType Text(Multi
Select ALLProp Type Metadata Category AttrbiuteName AttrbiuteTy
pePossibleValues Default


2272
changes for maintenance and reusability :
while developing getproduct list api we used/Need values for Division, Channel and few customer propertis which are coming from context.
so, we would like to place all of them together and make them flow to entire Home  part of this we need to create/update like below
New Strategy - GetContextProperties
introduce logic to derive Team from devision by using - Substrategy GetTeamforAgentDivision
- New Setcomponent GetContextProperties
Set Channel=Primary.Context(Channel)
IsWatchSubscription=@if(Primary.PrimarySubscriptionId!="",true,false)
DeviceType=@If(.IsWatchSubscription="True","Watch","Handset")
OrderType=Primary.Context(OrderType)
RecommendationType=Primary.Context(RecommendationType)
CREType=Primary.RetentionEligibility.Type
Division=Primary.Context(Division)
Team=GetTeamforAgentDivision.Team
Impacted Strategies

GetDeviceList Add   - Susbstrategy GetContextProperties

Dataimport Sellable Devices get the inputs
from Substartegy GetContextProperties (as
is properties)Remove   - Substrategy
GetTeamforAgentDivision,
      Setcomponent ContextProperties
GetAccessoryList Add   - Susbstrategy GetContextProperties
Dataimport   SellableAccessories to get the
inputs from Substartegy
GetContextProperties(as is properties)Remove   - Substrategy
GetTeamforAgentDivision,
      Setcomponent ContextProperties
      Setcomponent InputsforDataPage
GetBarList Add   - Susbstrategy GetContextProperties
Dataimport   SellableBars to get the inputs
from Substartegy GetContextProperties Substrategy   GetTeamforAgentDivision,
      Setcomponent ContextProperties
GetListOfValidTariffsFromPC Add   - Susbstrategy GetContextProperties


Setcomponent ContextProperties
GetListOfValidTariffsFromPC Add   - Susbstrategy GetContextProperties
Connect   - Substrategy
GetContextProperties to Substrategies
InputsForTariffListIdentificationRemove   - Substrategy
GetTeamforAgentDivision,
      Setcomponent ContextProperties
GetDiscountList Add   - Susbstrategy GetContextProperties.
make sure details passed ot substragies like
CalculateDiscountForWatch.Update SetInputs component to remove
division details.Strategy   Name create/update Notes


2273
NBA FW: Priority Score changes
Priority Score Changes
For Web, InboundCC, Retail, IVR, App, eCare, ToBi channel the priority score mapping should be removed in below places
1. PopulateOutputPropertiesForGetNBA -> SetPropertyforAction
2. PopulateOutputPropertiesForGetNBA -> SeteShopActiondetails
3. SetPriceForGetNBA -> SetPriceForChild
4. SetPriceForGetNBA → SetPriceForBBGandPG

For IVR channel, the priority score mapping should be removed in
1. PopulateOutputPropertiesForIVRInControlGroup -> SetPropertyforAction
Rank Changes
Execution mode= TIL → Update IdentifyBestTreatmentForTIL
         → Add set property(SetRank) and map .Rank=.pxRank after MaxOffersforChannels component
Execution Mode = GRPL → Update IdentifyBestTreatmentForGRPL
         → Add set property(SetRank) and map .Rank=.pxRank after PrioritizeWeb component
Execution Mode = NBAA → Update IdentifyBestTreatmentForNBAA
          → Add set property(SetRank) and map .Rank=.pxRank after ApplyBundling sub-strategy
Execution Mode = GetNBA
 For TradeIn → Update  IdentifyBestTreatmentForTradeInOnGetNBA
Add a set property(SetRank) and map .Rank=.pxRank after ApplyBundlingforGetNBA  sub- strategy
 For IVR & SMS → Update IdentifyBestTreatmentForIVRSMSOnGetNBA
Add a set property(SetRank) and map .Rank=.pxRank after PrioritizeIVR component and        PrioritizeSMS
For eCare Channel → Update IdentifyBestTreatmentForeCareOnGetNBA
 Add a set property(SetRank) and map .Rank=.pxRank after the component MinOffersCheck


Add a set property(SetRank) and map .Rank=.pxRank after the component MinOffersCheck
For Web Channel → Update IdentifyBestTreatmentForWebOnGetNBA
Add a set property(SetRank) and map .Rank=.pxRank after ApplyBundlingforGetNBA sub-strategy
For ToBi Channel → Update IdentifyBestTreatmentForTOBiOnGetNBA
Add a set property(SetRank) after MaxOffersTOBi and map .Rank=.pxRank
Execution Mode = PROCESSEVENT → Update IdentifyBestTreatmentForProcessEvent
         → Add set property(SetRank) and map .Rank=.pxRank after MaxOffersforChannels component
Execution Mode = BATCH → Update IdentifyBestTreatmentForBatch
        →  Add set property(SetRank) and map .Rank=.pxRank in set property PrioritizedTreatments component
Execution Mode = LANDINGPAGES → Update IdentifyBestTreatmentforSubscription
         →  Add set property(SetRank) and map .Rank=.pxRank after ApplyBundlingForMicrositeTreatments sub-strategy


2274
NBA FW - Introduce Medium Confidence Intent Band
Impact in Other areas
Dependencies
Logic Changes:
A.Update Stratgey ValidateIntentsWithEvents
Update Component “Aged Confidence Score“ as below
       .ConfidenceScore = @if(@CalculateNumberOfDaysFromToday(.LastEventTimestamp)
<=24,ConfidenceScore,confidenceScore*0.5)
B.Update Stratgey ValidateIntentsWithIH
Update Component “Aged Confidence Score“ as below
       .ConfidenceScore = @if(@CalculateNumberOfDaysFromToday(.pxOutcomeTime)
<=24,ConfidenceScore,confidenceScore*0.5)
C.Update Stratgey ValidateIntentsWithTealium
Update Component “Aged Confidence Score“ as below
       .ConfidenceScore = @if(@CalculateNumberOfDaysFromToday(.LastAccessTimeStamp)
<=24,ConfidenceScore,confidenceScore*0.5)857496 Introduce Medium Confidence Intent Band
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


2275
D.Update DecisionData RangeMapping
Add new Entry for Medium Band
below are the Range values to be updated

E.Update DecisionData EventToIntent
Need to update the ConfidenceScore values for Tealium ,Event Store and IH related intents
Note: Matt need to provide Latest confidence score values
Note: As part of this changes , we need to make sure Medium range intents should go through the Contentions path similar to Low Score
Range Paths.High >=51
Medium 21 - 50
Low <21RangeName Range Value


2276
Upgrades -Removing Airtime plans in MobileService Journey - Duplicate page

Impact in Other Areas
HL Requirement
Logic Changes
A. Introduce the EvaluateTariffTypes Decision table for Upgrades. 1329615/1329670
B. Create New Strategy GetListOfTariffsbyTariffTypes. (ADO-1329615/1329670)
C. Update strategy GetListOfActiveTariffs 1329615/1329670
D. Edit Screens
Assisted Upgrade Business Config: 1329650
E. Digital GPL flow DD (1329664)
E. Renegotiation (1329632)
Impact on Other Areas
HL Requirement
Business wants to remove Evo Airtime Plans from the below flows in a SIMO Mobile journey in Assisted.
Recommendation flow
and Edit Screen(GPL)
This will be for both inbound cc and Retail channels.1329626 Remove Evo Airtime Plans from the Edit Screen in a SIMO Mobile journey in Assisted
1329632 Being able to Renegotiate a SIMO or SIMO Xtra Deal
1329650 Remove Evo Airtime Plans from the Edit Screen in a SIMO Mobile journey in Assisted Business Go Live
1329664 Ensure that only SIMO or SIMO Xtra Plans are sent as part of the ordered List of Plans when the digital platform
requests a SIMO pathway
1329670 Ensure that only SIMO or Xtra Plans are sent to the Digital Platform as part of a bundled recommendation when the
SIMO pathway is used1329615 Remove Evo Airtime Plans from Simo Logic Recommendations in the Assisted Mobile journey
App/UI No
logic Yes Updating the Logic to remove airtime plans in simo journey for mobile service in
upgrades.
PM Tool Yes  Business Configuration required. no new screenArea Yes/No Comments


2277
Logic Changes
A. Introduce the EvaluateTariffTypes Decision table for Upgrades. 1329615/1329670
As part of the new implementation, we will refer EvaluateTariffTypes Existing Decision table to identify Tariff Types.
All the tariffs with tariff type SIMOnly are SIMO tariffs.
 and Tariff type Handset are Airtime plans for Mobile journeys.
Note: the configuration is being updated as part of 1337752 in 4.6 Release by 2nd line private pricing logic no need to update by upgrades.
B. Create New Strategy GetListOfTariffsbyTariffTypes. (ADO-1329615/1329670)
Add External input will have all list of tariffs.
Add 2 Filters After the External input
Name the first one as “MobileServiceType Check“ and add the below conditions
.SubscriptionType = “MobileService“
Name the 2nd filter as Not MobileServiceType Check' and add the below conditions
.SubscriptionType != “MobileService“
and connect it to the results
Add Decision table ‘EvaluateTariffType' and get it connected from the filter 'MobileServiceType Check’
Add 2 filters after the decision table
Name the first one as “SIMOnly TariffType Check“ and add the below conditions
.TariffType = “SIMOnly“
Name the 2nd filter as 'Airtime Plans Check' and add the below conditions
.TariffType != “Handset“
Connect Both filters to the Results
Note: we will use this strategy in different places to retrieve SIMO or Airtime plans based on business requirements. and in the future, we
can extend this to multiple tariff types for other journeys.
.


2278
C. Update strategy GetListOfActiveTariffs  - ADO-1329615/1329670
 Add two new sub-strategies after GetEligibleTariffs data join
 For the first Sub-strategy refer SIMO Tariffs component from Strategy GetListOfTariffsbyTariffTypes.
 and for the 2nd sub-strategy refer AllTariffs component from Strategy GetListOfTariffsbyTariffTypes.
 Add a Switch with the conditions below and name it as  'Check SIMO Plans'
Select  SIMO  Substratgey when
.ToPathway = “ToSIMO“ && .subsciptionType=”MobileService”
Otherwise, Select All Plans Substratgey
 D. Edit Screens


2279
Assisted Upgrade Business Config: 1329650

Update strategy GetTariffList :1329626
Add two new sub-strategy after “GetListofValidTariffsFromPC“
Add the First strategy 'SIMO' and select only SIMOnly plans component from GetListOfTariffsbyTariffTypes
Add 2nd strategy 'Airtime Plans' and select the Airtime Plans component GetListOfTariffsbyTariffTypes
Add Switch component to call three different paths as below
Select 'GetLisyOfValidTariffsFromPC' when
.subscriptionType != “MobileService“ ||
D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:.EnableSimoXtraPlans,ConfigName:EnableSimoXtraPlans].ConfigVal
ue =False
Select  “SIMOOnly“ when
.subscriptionType = “MobileService“ &&
D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:.EnableSimoXtraPlans,ConfigName:EnableSimoXtraPlans].ConfigVal
ue =True && HandsetinBasket.ProductID="
Otherwise, Select 'AirtTimePlans'

E. Digital GPL flow DD (1329664)
Update strategy GetUpgradeTariffListforWeb.
add a new sub-strategy to Call SIMO tariff only in GetListOfTariffsbyTariffTypes After the 'EVO and SIMO plans' SetProperty
update the switch component , to select the New sub-strategy , 'Simonly TraiffTypes'
 EnableSimoXtraPlans EnableSimoXtraPlans True Logic This config is used to
enable to Simo extra
logic in Edit screens.ConfigType ConfigName ConfigValue Logic/App Usage


2280
 F. Renegotiation (1329632)
 validate the renegotiated deal.
If a deal is resumed on the same or a day other than the last saving one, the GetCustomer API will be invoked to refresh customer
and account data. VADR must check that the deal is still valid. If the deal is still valid, the renegotiated deal will be displayed in the
Rec screen with a Saved Banner whereas if the renegotiated deal is no longer valid. Business wants to display an Error message to
an agent with a Valid reason.
The renegotiated deal is based on the below.
Product Pricing Validation
Product Eligibility Validation
Product Sellable Validation
Product Compatibility Validation - Handset to Tariff Validation, Handset to Insurance Validation, Tariff to Discount Validation, Tariff to
Discount Validation, Tariff to Add On Validation, Add on to Add On Validation
Promotion Expiry Date  and element validation (if the original deal had a promo)
ValidateBasketForRenegotiation Strategy is built for all product types and Tariff is one in that.
Note: dev-test needs to apply on all product validations for simoXtra plans. ( end-to-end test required for this flow).


2281
Upgrades - MBB Cohorts

Impact on Other Areas
Logic Changes
A. Changes for Decision Data

Update Decision Data CustomerCohorts
Create below new SR Attributes with Text data type
MBBSIMOS15Band and MBBDeviceS15Band and MBBSimNetMafBand and MBBDeviceNetMafBand
B. Changes for  Logic Strategy.

1. Update strategy EvaluateCohortByPreS15Maf
update set property Set Eligibility

(//paym simo check
((@AOMUtilities.DoesStringExistsInList(GetCurrentTariff.RangeId ,.PaymSIMOPreS15Maf,",") ||.PaymSIMOPreS15Maf="")&&
(GetCurrentTariff.CustomerType="PaymSIMO"))
||//MBB simo check
((@AOMUtilities.DoesStringExistsInList(GetCurrentTariff.RangeId,.MBBSIMOS15Band,",") ||.MBBSIMOS15Band="") &&
(GetCurrentTariff.CustomerType="MBBSIMO"))
||//paym Handset check
((@AOMUtilities.DoesStringExistsInList(GetCurrentTariff.RangeId,.PaymHandsetPreS15MafBand,",")
||.PaymHandsetPreS15MafBand="")&&(GetCurrentTariff.CustomerType="PaymHandset"))831612 MBB Create A Commercial Recommendation Cohort
App/UI No
logic Yes Updating the Logic to manage CRE Eligibility for MBB in GPL  Flow/Edit
screens(1394623 defect to track logic changes)
PM Tool Yes  need a Cohorts screen update (Task 1393528)Area Yes/No Comments


2282
||//MBBDevice check
((@AOMUtilities.DoesStringExistsInList(GetCurrentTariff.RangeId,.MBBDeviceS15Band,",") ||.MBBDeviceS15Band="")&&
(GetCurrentTariff.CustomerType="MBBDevice"))
)
?"True":"False"
Update EvaluateCohortbyNetMafBand
update set property Set Eligibility
(
//paym simo check
((@DoesStringExistsInList(GetCurrentTariff.RangeId,.PaymSIMONetMafBand,",") ||.PaymSIMONetMafBand="")&&
(GetCurrentTariff.CustomerType="PaymSIMO"))
||//MBB simo check
((@DoesStringExistsInList(GetCurrentTariff.RangeId,.MBBSimNetMafBand,"'") ||.MBBSimNetMafBand="") &&
GetCurrentTariff.CustomerType="MBBSIMO")
||//paym Handset check
((@DoesStringExistsInList(GetCurrentTariff.RangeId,.PaymHandsetNetMafBand,",") ||.PaymHandsetNetMafBand="")&&
(GetCurrentTariff.CustomerType!="PaymHandset"))
||//MBBDevice check
((@DoesStringExistsInList(GetCurrentTariff.RangeId,.MBBDeviceNetMafBand,",")
||.MBBDeviceNetMafBand="")&&GetCurrentTariff.CustomerType="MBBDevice")
)
?"True":"False"

Note: Please validate the Customer Type values which we derived in Strategy.

Note: these strategy changes needs to be done in all higher rulesets also based on the time of implementation and given ruleset

Note: found below condition is not behaving as expected so correct one is below
GetListOfValidTariffsFromPC


Note: found below condition is not behaving as expected so correct one is below
GetListOfValidTariffsFromPC
(
(@String.equalsIgnoreCase(.CREType,"NORMALSIMOFLEX")||
@String.equalsIgnoreCase(.CREType,"NORMAL"))&&
(@String.notEqualsIgnoreCase(ExternalInput.ProductType,"Handset") ||
@String.notEqualsIgnoreCase(ExternalInput.ProductType,"Data Device"))
)
||
(@String.equalsIgnoreCase(ExternalInput.ProductType,"Handset") || @String.equalsIgnoreCase(ExternalInput.ProductType,"Data
Device"))


2283
Upgrades - Updates to One number Watch Flow

Impact on Other Areas
Business requirement:
As part of One number watch implementation tariff list is restricted based on the loan tenure(device Tenure).
and tenure validations are included based on the device tenure in the basket when swap-tariff and add-tariff operations.
Now these restrictions are removed and new logic will be implemented to handle the loan tenure compatibility similar to Handset flow.
Logic Changes
A. Changes for Edit Screen Flow

1. Update strategy GetTariffList

Step 1: Remove the Tenure verification logic in the Get tariff list strategy.
remove filters DeviceTenureCheck,HandsetinBasket1 and  set property PropertiesfromHandsetinBasket
Step 2:  update the sub-strategy name from EvaluateTariffToHandsetCompatibilitywithNoDeviceCode  to
EvaluateTariffToWatchCompatibility which is being used in the watch flow.
Step 3: update the Switch selection to sub-strategy.
if HandsetinBasket.ProductID=""&&Primary.PrimarySubscriptionId!=" “ then select Device in basket set property.
else select EvaluateTariffToWatchCompatibility sub-strategy.
 1449786 Align watch journey edit screen behaviour with handset journey
App/UI No
logic Yes update to tariff tab and validate basket for watch flow.
PM Tool No  Area Yes/No Comments


2284

B. Changes for  Validate Basket Flow.

1. Update strategy ValidateBasketforWatch

step 1 : Remove the DeviceTenureCheck filter in the add-Handset / swap-Handset flow.
connect the reset status set the property with sub-strategy EvaluateTariffToHandsetCompatibility
step 2: update set property TariffIncompatible
@if(EvaluateTariffToHandsetCompatibility.RecommendedTariffCode="",
"The tariff is not compatible with the selected basket","")
step 3: Remove the DeviceTenureCheck filter in the SwapTariff flow.
remove filters SwapTariff, DeviceTenureCheckforSwapTariff,TariffIncompatibleforSwapTariff and switch
SelectTariffPathforSwapTariff

Step 4:  update the filter Allotheroperations
remove the old condition and update the new below condition.
 @String.notEqualsIgnoreCase(.Operation,"Add-Handset")&&
@String.notEqualsIgnoreCase(.Operation,"Swap-Handset")&&
@String.notEqualsIgnoreCase(.Operation,"Delete-Handset")
Step 5: update set property PropertiesfromHandsetinBasket
  set RecommendedDeviceCode =.ProductCode
StatusDetail=@if(@String.equalsIgnoreCase(.Operation,"Swap-Tariff")&&TariffinBasket.Tenure=12&&.MaximumTenure<>12,"Device
must be paid back within 12 months with the selected tenure","")
ValueInteger=@toInt(D_PaymHandset[Identifier:"H_"+.ProductID].Page.MaxTenure)
MaximumTenure=@if(@String.equalsIgnoreCase(.Operation,"Swap-
Tariff")&&TariffinBasket.Tenure=12&&.MaximumTenure<>12,12,@if(@String.equalsIgnoreCase(.Operation,"Swap-


Tariff")&&TariffinBasket.Tenure!=12,.ValueInteger,.MaximumTenure))
Tenure=@if(.Tenure>12&&TariffInBasket.Tenure=12,12,.Tenure)
Status=@if(.StatusDetail!="","Warning","")


2286
NBA-AOS Logic changes


2287
AU UAT Defects


2288
Special Package 01


2289
Assisted Upgrade - Create a list of FIC to exclude or include add on FICs from
the logic processing

Impacted Areas

New AOM Business Config parameter
ConfigType = FICList
ConfigName = AddOn
Config Value = Sharer Parent, Sharer Child, Secure Network,Add On, Data Add On, Post-Pay Roaming Add On
Logic Changes:
Update Strategy- GetProductChildsForTariff
Update AddOnProducts Filter
@contains((D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:"FICList",ConfigName:"AddOn"].ConfigValue), .FulfilmentItemCode)
 809516 Create a list of FIC to exclude or include add on FICs from the logic  processing
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments


2290
Assisted Upgrade - Pick & Mix Update for Promo

Impacted Areas
Logic Changes:
Update GetRecommendedTariff
After CheckUpgradeLifeCycleS15Rule(Set Property), make a substrategy call to IdentifyPromotionalAddons.
Remaining flow as-is.
Update IdentifyPromotionalAddons
In GroupByTariffCode(Group by), add aggregate for AutoAddedAddOnData <SUM> Data.
In GetAutoAddedAddonList(Data Join), map AutoAddedAddOnData.
Update T1 ,T2 &T3
&fter ExternalInput set RecommendedTariffDatawithPromo = RecommendedTariffData + AutoAddedAddOnData
Change the components to use RecommendedTariffDatawithPromo instead of RecommendedTariffData (T1 Components:
HigherDataFeature, HigherData, PickMinData) (T2 Components: HigherorEqualDataPlans, PickMinData) (T3 Components:
TariffswithData, PickMinData)
Update CalculateUpgradeDiscount
Remove IdentifyPromotionalAddons.
Execute the flow as is for TariffBlock = T1 OR T2 OR T3
For TariffBlock T4 do not execute IdentifyPromotionalDiscounts, remaining flow as is.
Update T4
After CheckUpgradeLifeCycleS15Rule(Sub  Strategy), make a substrategy call to IdentifyPromotionalAddons,
IdentifyPromotionalDiscounts.
Set RecommendedTariffDatawithPromo = RecommendedTariffData + AutoAddedAddOnData814798 Include the promo discount in the Plan S15 when selecting a plan as part of the T4 logic 814792 Include the Promo Add on data allowance into the Tariff total data allowance in the Pick & Mix logic
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No


Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments


2291
Set RecommendedTariffS15Maf= RecommendedTariffS15Maf-AutoAddedDiscountCostExVat
Update HigherthanRec1(Filter). Replace RecommendedTariffData with RecommendedTariffDatawithPromo and Rec1TariffData with
Rec1TariffDatawithPromo
After CalculateUpgradeDiscount,
if SkipS15Threshold = false, continue the flow as-is.
if SkipS15Threshold = true, Prioritize by RecommendedTariffDatawithPromo (highest) and group by RecommendedPosition with
lowest RecommendedTariffS15Maf
Update IdentifyLogicRecommendation
Update SetRec1Details
Set Rec1TariffDatawithPromo =if
(Rec1.RecommendedTariffDatawithPromo!="",Rec1.RecommendedTariffDatawithPromo,ExternalInput.Rec1TariffDatawithPromo)
Update GetProductDetailAndEvaluateCompatibility
In Tariff path, After EvaluateTariffVisibility, make substrategy call to IdentifyPromotionalAddons, IdentifyPromotionalDiscounts.
Remaining Flow as-is.
Update CalculateUpgradeDeal
Update AvailableCommercialRecs
Update RecommendedTariffS15Maf = @if(.RecommendedPosition=1,.RecommendedTariffS15Maf-AutoAddedDiscountCostExVat,0)
Add Rec1TariffDatawithPromo = @if(.RecommendedPosition=1,.TariffData+AutoAddedAddOnData,"")
Rec1TariffDatawithPromo=AvailableCommercialRecs.Rec1TariffDatawithPromo (Set Property :SetInputForLogic)
Update ApplyS15Check
Update AscendingTariffData and AscTariffData with Highest RecommendedTariffDatawithPromo


2292
Assisted Upgrade - PreS15
Impacted Areas
Update Range Mapping Decision Data
Update the initial values for below829185 AU C UAT: PreS15 Maf Source is Blank829188 AU C UAT: PreS15 is Blank/Zero
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
HandsetS15Banding >50 to 60 6  50 60
HandsetS15Banding >15 to 20 2  15 20
HandsetS15Banding >20 to 30 3  20 30
HandsetS15Banding >40 to 50 5  40 50
HandsetS15Banding >60 7  60 9999999
HandsetS15Banding >30 to 40 4  30 40
HandsetS15Banding 0 to15 1  0 15
SIMOS15Banding >42 7  42 9999999
SIMOS15Banding >32 to 42 6  32 42
SIMOS15Banding >18 to 24 4  18 24
SIMOS15Banding >24 to 32 5  24 32
SIMOS15Banding >8 to 13 2  8 13
SIMOS15Banding >13 to 18 3  13 18RangeType RangeName RangeId BDCModelId InitialValue FinalValue


2293
Logic Changes:
Update CalculateS15MafandBand
Set PreS15MafSource = AOM (Set Property: PreS15MafHandsetDirect, FinalPreS15MafHandsetIndirect)
Update PreS15MafRange (Filter)
.TariffMAF>.InitialValue&& .TariffMAF<=.FinalValue

Update GetCurrentTariff
Update getRange (Filter)
.TariffMAF>.InitialValue&& .TariffMAF<=.FinalValue
 SIMOS15Banding 0 to 8 1  0 8
SimNetMafBanding 0 to 8 1  0 8
SimNetMafBanding >8 to 13 2  8 13
SimNetMafBanding >13 to 18 3  13 18
SimNetMafBanding >18 to 24 4  18 24
SimNetMafBanding >24 to 32 5  24 32
SimNetMafBanding >32 to 42 6  32 42
SimNetMafBanding >42 7  42 9999999
HandsetNetMafBanding 0 to15 1  0 15
HandsetNetMafBanding >15 to 20 2  15 20
HandsetNetMafBanding >20 to 30 3  20 30
HandsetNetMafBanding >30 to 40 4  30 40
HandsetNetMafBanding >40 to 50 5  40 50
HandsetNetMafBanding >50 to 60 6  50 60


HandsetNetMafBanding >50 to 60 6  50 60
HandsetNetMafBanding >60 7  60 9999999


2294
Assisted Upgrade - Remove Subscription Spine End Date
Impacted Areas
Logic Changes:
Update CalculateUpgradeDeal
Remove Contract Due from SetInputForLogic (SetProperty)
Update EvaluateCohortByContractDate
Update LatestContractStartDate= (@substring(MobileService.FromContractStartdate,0,9)+"000000.000 GMT") (SetProperty:
ResetStartDateTimes)
Update EvaluateCohortByCustomerLifeCycle
Import Primary.ProductRoot
Filter .ProductCode!="" && @String.equalsIgnoreCase(.FulfilmentItemCode,"Mobile Service")
Update SetTenure(Set Property)
Tenure = @AOMUtilities.CalculateNumberOfDaysFromToday(MobileService.FromContractStartdate)
Update GetCurrentTariff
Set LatestContractEndDate = MobileService.LatestContractEndDate
Set Primary.LatestContractStartDate = MobileService.LatestContractStartDate
Update ContractDue= @AOMUtilities.CalculateNumberOfDaysFromToday(.LatestContractEndDate) (SetProperty:
SettingProductFulfilmentCode)
Update CalculateTariffDiscount
Update ContractLength = DateTimeDifference(ExternalInput.LatestContractStartDate,ExternalInput.LatestContractEndDate,"M")
(SetProperty: SetDiscountandDiscountDetails)822538 AU C UAT: Contract_Enddate Source Clean up
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments


2295
Special Package 02


2296
Assisted Upgrade - Special Package 02
Impacted Areas
Logic Changes:
US 870353:
HL Requirement
Currently logic is referring to incorrect pre S15 field. Until correct S15 via Flexi is identified by business, AOM should calculate the Pre S15
for all customer regardless of the fact the Pre S15 is missing or the accuracy flag.
Update Strategy – CalculateS15MafandBand
Use a set property(Set PreS15Calculation) to set PreS15Calculation as  below
@if(
//S15AccuracyFlag=Y and PreS15 in Flexi is not empty or zero
(Primary.SubscriptionFlexAttribute.CustomStringField207="Y"&&
Primary.SubscriptionFlexAttribute.CustomNumberField208!=""
&&Primary.SubscriptionFlexAttribute.CustomNumberField208!=0)
,"Flexi",
//S15AccuracyFlag=N or empty and PreS15 in Flexi is empty or zero
@if((Primary.SubscriptionFlexAttribute.CustomStringField207!="Y")||
(Primary.SubscriptionFlexAttribute.CustomNumberField208=""
||Primary.SubscriptionFlexAttribute.CustomNumberField208=0),
"Calculated",""))
Update Switch cases (in SwitchforPreS15Maf)
FlexiPreS15Maf>850040 SIT Defect - Unable to see entertainment tick icon under entertainment column in edit deal for entertainment plans
883166 UAT Defect - Upfront Cost should be excluded VAT in S15 Calculations870353 Calculate the Pre S15 for all Customers
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments