1271
NBA FW - Model migration to new pipeline for batch
Impact in Other areas
 Dependencies
Logic Changes
For real time execution modes
No changes needed for now
In the future, keep adding a compose per model to the "GetRecommendationFromBDC" dataflow
For Batch execution mode
A. Update Data Flow - PrepareBatchData
Update "PrepareBatchData" dataflow to call "GetRecommendationFromBDC" dataflow at the end.
B. Update Data Flow - GetRecommendationFromBDC
 Add a new DataTransform (PreparePredictiveModelGroup)for Convergence model in "GetRecommendationFromBDC" dataflow and
pass input as “ConvergenceModel“.402416 Migrate Big Data models from old pipeline to new
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1272

C.Strategies to update to use the model from BDCRecommendationList
CrossSellRules1
CrossSellRules2
EligibleAdConsDiscountChildPropositions
GetBDCPropensity
ModelScoreRuleTemplates
SetModelBasedPriority
Make appropriate structure changes as per the new class definition for .BDCRecommendationList in all the above strategies
In all the above strategies, make the below changes:
Add Set Property and set all the required model data for Convergence model.
Access Data from PageGroup in below way


1273
   .SimoPropensity   ==Primary.PredictiveModelGroup(.ValueText1).OUTPUT(simo_propensity)
  .ModelId    ==Primary.PredictiveModelGroup(.ValueText1).MODEL_ID

Note:For DateTime Properties do the following ,inorder to convert Date value from request  to GMT format
 .ValueText3 ==Primary.PredictiveModelGroup(.ValueText1).VALIDITY_TS
           .ValidityTimestamp=@if(.ValueText3!="",@ConvertYYYYMMDDHHMMSSNoSpaceToPegaDateTime(.ValueText3),"")
.ValueText2==Primary.PredictiveModelGroup(.ValueText1).MODEL_RUN_TS
.ModelRunTimestamp=@if(.ValueText2!="",@ConvertYYYYMMDDHHMMSSNoSpaceToPegaDateTime(.ValueText2),"")


1274
NBA FW - Extend Target/Control Logic to GetNBA
Impact in Other areas
 Dependencies
Design Approach
A. Update strategy - IdentifyEligibleOffers
Call sub-strategy - ApplyBusinessPurposeQuarantineCheckForControl for the GetNBA execution mode only before the switch component -
Choose Offers By ExecutionMode.
B. Update strategy - PopulateControlGroupPercentage
Create new SR property TreatmentControlGroupPercentage.
Set .ControlGroupLevel=@if(.TreatmentControlGroupPercentage ="0","Offer","Treatment")
In set Property Set ControlGroupPercentage & ControlGroupLevel ,set the values in below order.413128 Extend Target/Control Logic to GetNBA
Area Yes/No Comments
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB NoArea Yes/No Comments


1275
C. Create new Strategy “SelectBetweenOfferORTreatmentPotentialControlSplit”(Vaibhav :Pls suggest the name )
Enable External Input
Add 2 Filters and connect from External Input
Name first filter as “OfferLevelControlGroupCheck“ and check .ControlGroupLevel=”Offer”. and Connect to
“ApplyPotentialControlSplit“ and connect to the results.
Name second filter as “TreatmentLevelControlGroupCheck“ and check .ControlGroupLevel=”Treatment”
For the Logic path ControlGroupLevel=”Treatment”, do the following
call sub-strategy ApplyBusinessPurposeQuarantineCheckForTarget
create 2 Filter component - ControlGroupToBeApplied = “N” & ControlGroupToBeApplied = “Y”
For the logic path for ControlGroupToBeApplied = “N”, do following -
Use Set Property to set the following -
PotentialControlFlag = “Target”
InMarketingTest = “Y”
Return to results
For the logic path for ControlGroupToBeApplied = “Y”, do following -(Similar to the offer level code)
create 2 filter - Ignore Control Group ( .ParentChild = "Child") & Apply Control Group ( (Channel != “Email“) OR (Channel =
“Email“ & .ParentChild = "Parent"))
For the logic path for Apply Control Group, do the following -
For each Treatment assign to control or target using Random number generation and set the following properties for
control/target
Control
PotentialControlFlag = “Control”
InMarketingTest = “Y”
Target


1276
PotentialControlFlag = “Target”
InMarketingTest = “Y”
For the logic path for Ignore Control Group, do the following -
Use data join component to apply control/target from parent treatment to all child treatments
Return to results

 D. Update Strategy - IdentifyBestIVRTreatmentsForSubscription
   call sub-strategy PopulateControlGroupPercentage after sub-strategy IdentifyTreatmentVariations
    call sub-strategy SelectBetweenOfferORTreatmentPotentialControlSplitafter sub-strategy PopulateControlGroupPercentage
E. Update Strategy - IdentifyBestAppTreatmentsForSubscription
  call sub-strategy PopulateControlGroupPercentage after sub-strategy IdentifyTreatmentVariations
all sub-strategy SelectBetweenOfferORTreatmentPotentialControlSplitafter sub-strategy PopulateControlGroupPercentage
F. Create New Strategy PopulateOutputPropertiesForIVRInControlGroup
Enable the External Input
Add 2 filters --PreNLCS subchannel check(.TargetSubChannel ="PreNLCS") and Other than PreNLCS (.TargetSubChannel
!="PreNLCS")
For PreNLCS path Set below data for ResponseType=”Actions”,ResponseType=”TreatmentActions”
G. Update strategy - PopulateOutputPropertiesForIVRAndSMS
After External Input Create 2 filter - In Potential Control (PotentialControlFlag = “Control”) & In Potential Target (PotentialControlFlag =
“Target”) after set property - Set Execution Mode
For the logic path for In Potential Control, Call new Strategy PopulateOutputPropertiesForIVRInControlGroup  return resultsActions ActionTemplateId IVRRecommendedRouting
Actions ActionType Routing
Actions ActionDetail [
{
"Name":"RecommendedRouting",
"Value":"deflect-nlcs"
}
]
Actions Outcome Shown
Attributes TemplateID IVR_PreNLCS_Template_No_MsgId
Attributes TemplateDetails {
"Reason":"NLCS",
"AppTag":"enquire-plan"


Attributes TemplateDetails {
"Reason":"NLCS",
"AppTag":"enquire-plan"
}Template Attribute Set to


1277
For the logic path for In Potential Target, call filter - Execution Mode is GetNBA
H. Update strategy - PopulateOutputPropertiesForApp
After External Input Create 2 filter - In Potential Control (PotentialControlFlag = “Control”) & In Potential Target (PotentialControlFlag =
“Target”) after set property - Set Execution Mode
For the logic path for In Potential Control, return results
For the logic path for In Potential Target, call sub-strategy - PopulateOutputPropertiesForGetNBA
I. Update Data Flow - GetNBA
 Update the first filter component as below
set true=@if(.Channel="App",@if(.PotentialControlFlag="Target",True+"",False+""),true+"")


1278
NBA FW - Add TPS Flag to AoM Audit Log
 Impact in Other areas
 Dependencies
Add to IH Reporting Table
New Properties for VFUK-FW-AOMFW-Data-InteractionHistoryReporting class
New Properties for PegaMKT-Data-Event class414633 Add TPS Flag to AoM Audit Log
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes Extend IH Reporting Class
Extend Event Class and Update TriggerPMEvent activity
DB Yes  Add “ConsumerBusinessTPSValue” to IH Reporting tableArea Yes/No Comments
PM Tool No
App Yes E2E testing needs App changes to be completed
DB Yes  E2E testing needs the new field to be added to IH Reporting tableArea Yes/No Comments
ConsumerBusinessTPSValue IH Reporting Yes No New TextIHReporting AttributeName Destination IH Extract IH View Status Type
ConsumerBusinessTPSValue TextProperty Name Data Type
ConsumerBusinessTPSValue TextProperty Name Data Type


1279
New parameter for TriggerPMEvent activity and relevant changes to populate EventPayload page
New SR Property
Create new SR Property
ConsumerBusinessTPSValue- Text
Update strategy - ApplyTreatmentDataToTreatments
Update data join component - All Treatments With Properties
ConsumerBusinessTPSValue
Update strategy - SetGenericIHReportingAttributes
Update Set Property component -Set IH Reporting Properties
ConsumerBusinessTPSValue=Primary.TelephonePreferenceService.ConsumerBusinessTPSValue
Update strategy - ApplyEventPayloadToTreatments
Update data join component - Treatments With All Properties to map the property
ConsumerBusinessTPSValue
Update Data Flow - ProcessSMSForT2S
Update following parameter to primary destination activity - Trigger PM Event
ConsumerBusinessTPSValue
Update Data Flow - GetNBA
Update following parameter to primary destination activity - Trigger PM Event
ConsumerBusinessTPSValue
Update Data Flow - ApplyControlGroupsForT2S
Add a “compose” block  after Merge Component and import TPS data, so that we can use
Primary.TelephonePreferenceService.ConsumerBusinessTPSValue mapping at extractor data flow level.ConsumerBusinessTPSValue TextProperty Name Data Type


1281
NBA FW - Squad level Intent to Offer mapping

Impact in Other areas
Dependencies
A. Squad level Intent to Offer Mapping(PM)
This new configuration should be applied for all the available Squads. New configuration should allow squads to map Intent to Offer as a
one to many relationship. New Configuration should allow to configure single or multiple intents per Squad. And Each Intent can have one
or multiple offers within each Squad.
B. New Strategy - ImportAllSquadLevelIntenttoOffers
B1. Import group SquadIntentstoOffer for all the available Business Issues. Join it to the result component.
C. New Strategy - CheckSquadLevelMatchedIntentOffers
This strategy will import the new ImportAllSquadLevelIntenttoOffers substrategy.
C1. Enable the external Input.
C2. Join external input to the data join
C3. In the data join, join the external input source with the new proposition import component.
Add the below conditions in the data join
pyName = Intent (Intent name from the new configuration import)
BusinessPurpose = BusinessPurpose(Squad name from the new configuration import)376612 Squad level Intent to Offer mapping
PM Tool Yes New Configuration is added for
NonPropositions Hierarchy
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool Yes  Once New configuration Squad level intent
to offer mapping is done. Need to test e2e
with new configuration
App No
DB No  Area Yes/No Comments


1282
C4. In the properties mapping of the datajoin,
map offername = offername
and set SquadIntentMatched =”Y”
C5. Uncheck the Exclude source component results that do not match join condition in the datajoin.
C6. Join the data join to the result component.
D. Update Strategy - AssignIntentToOfferOrBusinessPurpose
D1. Remove the connection line from the data join “JointogetBusinessPurpose“ to the set property “IntenttoBusinessPurpose“
D2. In the strategy AssignIntentToOfferOrBusinessPurpose, Add the newly created strategy CheckSquadLevelIntentOffers as
substrategy.
D3. Connect the data join  “JointogetBusinessPurpose“ to the sub strategy CheckSquadLevelIntentOffers and Join the sub strategy to the
set property “IntenttoBusinessPurpose“

E. Update Strategy - IdentifyOffersForEligibleIntents
E1. Join the filter “Intent to Business Purpose“ to the new filter.
E2. In the new filter, add the condition check to filter out only matched intent offers for the low confidence score. Add the condition in the
new filter SquadIntentMatched(TBC) =”Y”
E3. Join the external input records with the new filter using the data join. In the data join “Match source offers with low confidence squad
offers“,  add the below condition pyName = OfferName. Mark the check box for Exclude source component results that do not match join
condition. In the properties mapping, map all the properties which is same as the properties mapping in the data join
“JoinonBusinessPurpose“
E4. Join the above data join “Match source offers with low confidence squad offers“ to the new data join.
Name the new data join as “Join offers for top IntentConfidenceScore“


Name the new data join as “Join offers for top IntentConfidenceScore“
Add the condition check, Intent = Intent. And mark the check box for Exclude source component results that do not match join condition
E5. Remove the solid line connection connected from the data join “JoinonBusinessPurpose“ to the “IntentsWithBP“.
Add the new switch component named, ”Choose Squad Level Intent to Offers or Intent To BP”
Select “Join offers for top IntentConfidenceScore“ data join component if condition IntentsWithSquadlevelBP.pyName!=""
else select “JoinonBusinessPurpose“ data join.
E6. Join the switch to the data join component “IntentsWithBP“


1284
NBA FW - Inbound Seed Testing (IVR & App)
 Impact in Other areas
 Dependencies
Rename AllPropositionsForSimulationLookup strategy
Copy AllPropositionsForSimulationLookup strategy as AllPropositionsLookup327167 AOM MVA - Live UAT test
PM Tool Yes  Vaibhav to email requirements to Venkat
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App Yes Check with Russ (Vaibhav to email requirements to Suraj)
DB No  Area Yes/No Comments
PM Tool Yes  Triggering seed testing per offer will be validated in E2E run
App Yes Logic development has dependency on datapages
E2E Testing can only be done after App changes are done
DB No  Area Yes/No Comments


1285
Update InsertSimulationLookupData dataflow to call AllPropositionsLookup strategy instead of AllPropositionsForSimulationLookup
strategy
Withdraw AllPropositionsForSimulationLookup strategy
Create a new strategy PopulateOutputPropertiesForSeedTest
Enable external input
Add a call to sub-strategy PopulateOutputPropertiesForGetNBA
Connect to results


1286
Create a new strategy PrepareInboundNBAForSeedTest
Add a data import for Channel, Treatment, Treatment Variant and Offer Variant
Add a filter to select only IVR, SMS or App as valid channels
Add a call to sub-strategy “AllPropositionsLookup“
Add a call to sub-strategy “PopulateOutputPropertiesForSeedTest“
Connect to results
Create a new dataflow PrepareInboundNBAForSeedTest
Add a call to “PreRealtimeData” data flow
Add decision strategy call to “PrepareInboundNBAForSeedTest”
Output to SR Abstract


1287
NBA FW - Extend contact strategy to GetNBA
 Impact in Other areas
 Dependencies
Design Approach
A. Update IVR and App proposition decision data structure for all Issues + PM Changes
Create the below new SR properties and add them to IVR and App DDS
ApplyTreatmentSelfContentionStrategy (Text)
FallowPeriodForDismissedResponse (Integer)379947 Extend contact strategy to GetNBA
413133 Extend Contact Policy to Use Standardised Outcome Fields
PM Tool Yes
PM Tool KT Documentation Yes
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes  E2E testing needs PM changes to be completed
App No
DB No  Area Yes/No Comments


1288

B. Update GetIHAtCustomerLevel Stratgey
Keep the filter component "Selection By Subscription Negative" as it is
Connect to Data Import "Import Interaction History Records"
Keep the Condition .StandardOutcome="Rejected" || .StandardOutcome="Dismissed" as it is.
Add a new filter component "Selection By Subscription Dismissed"
Connect to Data Import "Import Interaction History Records"
.StandardOutcome="Dismissed"
Add  new set property components:
1. Save Batch Outcome Date By Subscription Dismissed
a. Set .ValueText = .OutcomeDate
b. Connect to new filter "Selection By Subscription Dismissed"
Add  new group by components:
Get Latest Batch Selection By Subscription Dismissed
Connect with "Save Batch Outcome Date By Subscription Dismissed" set property component
Group by “TreatmentName“
Set .OutcomeDate to Max of .OutcomeDate
With highest .OutcomeDate
Select "Include all model results in group"
Add  new set property components:
Reset Batch Outcome Date By Subscription Dismissed
Connect with "Get Latest Batch Selection By Subscription Dismissed" group by component
Set .OutcomeDate = .ValueText
Add  new set property components:
1. Latest Batch Selection By Subscription Dismissed
a. Connect with "Reset Batch Outcome Date By Subscription Dismissed" set property component
b. Set ..DaysSinceLastDismissedResponse= @AOMUtilities.CalculateNumberOfDaysFromToday(.OutcomeDate)
C. Create new Stratgey ApplyTreatmentSelfContention
Start with external input and add 2 filter components
If ApplyTreatmentSelfContentionStrategy != Yes then connect to Results
If ApplyTreatmentSelfContentionStrategy = Yes  then add  filter components in line as below:


If ApplyTreatmentSelfContentionStrategy = Yes  then add  filter components in line as below:
Check Fallow Period For Dismissed Response Filter - @if(.FallowPeriodForDismissedResponse >=0,
LatestBatchSelectionBySubscriptionDismissed.DaysSinceLastDismissedResponse > .FallowPeriodForDismissedResponse, true )
Call sub-strategy GetIHAtCustomerLevel, component “Get Latest Batch Selection By Subscription Dismissed”
Connect the last filter to Results
D. Update Strategy IdentifyBestIVRTreatmentsForSubscription


1289
Add new Strategy ApplyTreatmentSelfContention in-between IdentifyEligibleTreatmentsforIVRandSMS and
IdentifyTreatmentSubChannel

E. Update Strategy IdentifyBestAppTreatmentsForSubscription
Add new Strategy ApplyTreatmentSelfContention in-between Identify Eligible App Treatments and IdentifyTreatmentSubChannel


1290
Assisted Upgrade -Use the Enriched PC data in the logic

HL Requriement
Current Siebel PC does not contain all metadata needed.
PM tool will be used to enrich PC data.
This data will be stored in PM tool  & pushed back to AOM to a data page.
Existing data pages will include this information attached to PC data.
Attributes & Values  will be stores as Json format
Logic will access data pages and get  attributes with in text value group.
Attributes to be configured in PM tool:
 405271 Use the Enriched Proposition data  in the logic
DeviceName Device Text TextBox  Null
ConnectionType Device Text List 4G,5G 4G
NearlyNew Device Boolean  True-Means Nearly
New
False-Means NewFALSE
DeviceColour Device Text  Blue etc.. Null
DeviceData Device Text  64GB etc Null
DeviceType Device Text List Data Device
Watch
HandsetNull
PlanName Tariff Text Text Box  Null Attribute Name Related Product Type Attribute Type Input Type (PM tool) Possible Values Default
App Yes  Update Data pages to Include
ProductAttributes
D_PayMHandset
D_SellablePayMHandsets,
D_EligibleHandsetsForTariff
D_EligibleTariffsForDept
D_Tariff Area Yes/No Comments


1291
Update Data Pages
Configure listed data pages in AOM config  to include “ProductAttributes” & Manufacturer attributes
D_PayMHandset
D_SellablePayMHandsets,
D_EligibleHandsetsForTariff
D_EligibleTariffsForDept
D_Tariff
Changes for Get Recommendation
Update Strategy- EvaluateHandsetCompatibility & GetRecommendedDevice
Populate listed attributes from  PC data pages.
DeviceStorage (ProductAttributes(“DeviceStorage”))
DeviceColour (ProductAttributes(“DeviceColour”))
ConnectionType   (ProductAttributes(“ConnectionType”))
Manufacturer (Manufacturer )
DeviceName (ProductAttributes(“DeviceName”))
NearlyNew (ProductAttributes(“NearlyNew”))
Update Strategy -GetListofActiveTariffs,EvaluateTariffVisibility
Populate listed attributes from  D_EligibleTariffsForDept
RecommendedTariffDisplayName(ProductAttributes(“PlanName”))

Update Strategy -PopupulateOutputPropertiesforNBAA
For Tariff records, Set Display name = if  RecommendedTariffDisplayName  ! =null RecommendedTariffDisplayName else ProductName
For Handset records, Set Display name = if  DeviceName  ! =null DeviceName else ProductName
Update  Set RecommendationName  logic to use display names from Device & Tariff ( currently it is on product name)
Changes for  Get Product List
Update Strategy -GetDeviceList
Populate listed attributes from  D_SellablePayMHandsets data pages.Validate Basket Spec Update >Incluede
DisplayName to input attributes.(LineItems)
DB No
Knowledge Transfer No
PM Tool Yes  Separate USs for screens & AOM
integaration  are avaliable
PM Tool KT Documentation Yes  for new screens& integration


1292
DeviceStorage (ProductAttributes(“DeviceStorage”))
DeviceColour (ProductAttributes(“DeviceColour”))
ConnectionType   (ProductAttributes(“ConnectionType”))
Manufacturer (Manufacturer )
DeviceName (ProductAttributes(“DeviceName”))
NearlyNew (ProductAttributes(“NearlyNew”))
Remap those attributes to  device coming from BDC path as  well (from PC list path)
Update Strategy -PopulateOutputPropertiesForDevice
For Handset records, Set Display name = if  DeviceName  ! =null DeviceName else ProductName
Changes for Validate Basket
Update Strategy - CalculateBasketFinancials
Populate TariffName & DeviceName from display name of related basked item


1293
Assisted Upgrade-Device Tab Ordering

HL Requirement
Order device list with enriched device data.
Data extension to data pages is covered to  with in different Jira ( 405271-Use the Enriched Proposition data in the logic)
Select Unique list of recommended devices for top 5 recommendation.

Update Strategy-GetDeviceList

D_SellablePayMHandsets data page will contain new device attributes & populated with in scope of 405271
Introduce a new strategy OrderDeviceList
Order by Manufacturer, Model, Storage (lowest to highest), Colour (alphabetically), Nearly New
Same pattern used for GetAddOnListForEditDeal can be used as we have multiple sort dimentions
BDC recommandation path
After “Sellable BDC Devices” are identified ,select top 5 unique Manufacturer  & DeviceName
Populate all new device attributes to  BDC records from PC path.
Group by Manufacturer , DeviceName select the min RecRank record from each group
Order by RecRank and select top 5 record
 360008 Edit Offer: Device Tab Ordering Enhancement


1294
Assisted Upgrade-Refine By Update for Device

HL Requirement
With  new Business Owned Metadata attached to product data , we can enhance logic to filler according to different parameter for
Refine By Functionality.

RefineBy Parameters in Request

Update Decision Data -EventToIntent (Catalog data update)
Update Secondary context as RefinBy (not RefineDeal)342493 Manufacturer/Model and 5G Option366447 Refine By - Nearly New
HandsetModel String With in Scope of this Jira Empty or a string value
Has5G Boolean With in Scope of this Jira True or Empty
TariffTenure Boolean With in Scope of this Jira True or Empty
SIMO Boolean Delivered with 2.? True or Empty
Entertainment Boolean Delivered with 2.? True or Empty
NearlyNew Boolean With in Scope of this Jira True or Empty
Unlimited Boolean Delivered with 2.? True or EmptyHandsetManufacturer String With in Scope of this Jira Empty or a string value
App   New data page
D_SellablePAYMHandsetbySKU
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments


1295
Update Strategy -PickBestPathway

This strategy is to return Best ToPathway  according to
Customer RE Type  (delivered before)
BDC model  (delivered before)
Refine by parameters  (partially delivered )
With in scope of this Jira we introduce new device parameters to refine recommendation according the conditions.
Update strategy
 Add RefineByHandset path
if Refineby Handset parameters are selected  > select ToHandset pathway (if any one of the below conditions then select handset
path)
HandsetManufacturer (!Empty)
HandsetModel (!Empty)
Has5G (only if set as true)
NearlyNew (only if set as true)
Update RefineByNOTSIMO to 2 different path
1th NBAA –
2nd RefineByNoSelection
RefineBySIMO is already exits path


1296
Update Strategy -GetRecommendedDevice


1297

Logic on selecting recommended device from BDC will change
Use D_SellablePAYMHandsetbySKU data page to get details of handsets for list of SKUs (output of
GetDeviceRecommendationFromBDCModel)
All new attributes need for refine bu filter conditions + other attributes already populated  in logic (DeviceDetails set atrbiutes)
Remove DeviceDetails set component
Remove Sellable control in  existing logic  as  D_SellablePAYMHandsetbySKU returns only sellable record.
Configure D_SellablePAYMHandsetbySKU for related properties needed.
Filter output according to Refine by parameters (if provided)
HandsetManufacturer (!Empty)  >  Filter on Manufacturer with the value
HandsetModel (!Empty) > Filter on DeviceName with the value
Has5G (only if set as true) > Filter on ConnetionType , if Has5G  is True Select the records ConnetionType=”5G” else no filter
NearlyNew (only if set as true) > Filter on NearlyNew, NearlyNew is true Select the records NearlyNew is True else no filter
Selected Top 1 recommended device
Order By RecRank (Asc)
Select Top 1 record


1298
Assisted Upgrade- T4 logic to include entertainment

HL Requirement
Currently assisted logic Under T4 logic we are just uplifting the plan but not considered about its Tariff Group.
In this release we will ensure that the plan recommended in T4 goes up in S15 but also keeps the entertainment feature if it had been
recommended in Rec 1.

Update Strategy-CalculateUpgradeDeal
Make commercial recommendation Rec1 tariff Group available for IdentifyLogicRecommendation input. (Which will be used in T4 logic
later steps)
Update AvailableCommercialRecs components,
populate TariffGroup from Com Rec Tariffs > RecommendedTariffGroup
Update Set Input for Logic component
populate Rec1TariffGroup from AvailableCommercialRecs.RecommendedTariffGroup
Update Strategy - IdentifyLogicRecommendation
Update “Set Rec1 Details” component
set Rec1TariffGroup, either from Rec1 of logic recommendation or from External Input.
Update Strategy - T4
Update condition on > Higher than Rec1
Update condition:
a. Add condition to check if Rec1 has entertainmet the tariff selected has entertainment as well
i. if Rec1Tariff Group  not contains  ”Entertainment” true else (if RecommendedTariffGroup contains ”Entertainment” true else false)411284 Recommendation T4 logic to include entertainment.
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No
Logic Yes T4 impacted strategiesArea Yes/No Comments


1299
Release 2.8


1300
Assisted Upgrade - Record Deal Presentation

IH Option 2 - IH, IH Reporting & Recommendation Items (New)
Summary
Parent proposition will be written to IH
Deal level additional reporting details will be written to IH Reporting
New Recommendation Items table will be introduced to write all details of individual assisted propositions (Both Parent & Child)
including Product level additional reporting details
Product level additional reporting attributes will be removed from IH Reporting
If customer does not have any recommended Deal (from GetRecommendation API), the Parent proposition will be written to IH & IH
Reporting (only “Pre” details)
 IH RecordDeal 405196  Record Deal History:
Record the recommended
items that have been
presented to the agent
following a 'Refine By'
IH RecordDeal 453517  Store assisted upgrades
recommendation product
item level data in a
separate Table
IH RecordDeal 453545  Migrate all
recommendation item
product level data from
Interaction History
reporting to the new
Recommendation Items
table
IH RecordDeal 453550  Update the EDW
reporting extracts
IH RecordDeal 453559  reporting requirements for
the new
recommendations items
tableIH RecordDeal 405193  Record the recommended
items that have been
presented to the Agent
with a status of presented


1301
Table Structure
https://drive.google.com/file/d/1kuaUTKbpp0C_N37NHXrvJfKgC4AfdwUc/view?usp=sharing -

Use “Parent” proposition in IH & Recommendation Items
Write “Parent” proposition in IH & IH Reporting with Deal level information and write “Parent” proposition in new Recommendation Items
table with product level information along with all other child propositions

Impact in Other areas
 Dependencies

New Properties for IH Extension & pr_data_ih_fact table
Connect your Google account
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes IH Extension for new properties
IH Reporting extension for new properties
New Class for Recommendation Items table
Remove IH extension for DealID
Remove Deal Item level IH Reporting properties
Update to IH & IH Reporting extract process
New Extract process for Recommendation Items table
DB Yes IH Extension for new properties
IH Reporting extension for new properties
New table for Recommendation Items
Remove IH extension for DealID
Remove Deal Item level IH Reporting properties
Update to IH & IH Reporting extract
New Extract for Recommendation Items tableArea Yes/No Comments
PM Tool No
App Yes  Logic work is dependant on App changes (excluding changes to Extract process)
DB Yes  App work is dependant on DB changes Area Yes/No Comments
Property Name Class Data Type (Class) Data Type & Length (DB)


1302
To be removed from IH Extension & pr_data_ih_fact table
New Properties for IH Reporting & pr_data_ih_fact_reporting table
To be removed from IH Reporting & pr_data_ih_fact_reporting table

New DB table - pr_data_ih_recommendation_items and new class VFUK-FW-AOMFW-Data-RecommendationItems

Logic Design Approach
A. Add new SR property RecommendationID (text), OriginalRecommendationID (text) and RecItemID (text)
B. Replace DealID in the Assisted Strategy FW with RecommendationID including unique key generation at deal level
C. Remove all reference to DealID from Assisted Strategy FW
D. Delete/Withdraw DealID SR property
E. Update strategy - PopulateOutputPropertiesForInboundCC
For the Assisted Upgrade, generate unique key for RecItemID for each product recommendation (e.g. Tariff, Handset etc)

F. New Strategy - GetBDCRecommendationsForAssistedUpgradeRecommendationID Data-Decision-IH-Fact Text varchar(255)
OriginalRecommendationID Data-Decision-IH-Fact Text varchar(255)
DealID Data-Decision-IH-FactProperty Name IH Class
NetRevenue VFUK-FW-AOMFW-Data-
InteractionHistoryReportingDecimal numeric(10,2)Property Name  Class Data Type (Class) Data Type & Length (DB)
UniversalTariffModelRecRank VFUK-FW-AOMFW-Data-InteractionHistoryReporting
AddonNetMafIncFlag
CohortID
RecommendationSelectionBlock
RecommendationSubType
CostIncVat
HandsetLoanPrice
MinUpfrontCost
MaxTenure
MinTenureProperty Name Class


1303
Call sub-strategy GetBDCRecommendationList
Create a filter - Device Recommendation
Filter Condition - .ModelId=6
Create another filter - Tariff Recommendation
Filter Condition - .ModelId=8
Connect both filters to Results

G. Update strategy - GetListOfValidTariffsFromBDCModel
Replace the sub-strategy GetBDCRecommendationList and filter - Model Score 8  check with sub-strategy
GetBDCRecommendationsForAssistedUpgrade (only select component - Tariff Recommendation)

H. Update strategy - GetDeviceRecommendationFromBDCModel
Replace the sub-strategy GetBDCRecommendationList and filter - Model Score 6 with sub-strategy
GetBDCRecommendationsForAssistedUpgrade (only select component - Device Recommendation)

I. New Strategy - GetModelDetailsForNoRecommendation
Call sub-strategy GetBDCRecommendationsForAssistedUpgrade (use all results)
Use Group By component to select only one record per ModelID and populate ModelDetailsTemp as -"
["+"'"+.ModelId+"'"+":"+"'"+@FormatDateTime(.ModelRunTimestamp,"yyyyMMddhhmmss","","")+"'"+"]"
Use Iterator component to concatenate ModelDetailsTemp for all models

J. Update strategy - CalculateUpgradeDeal
Call sub-strategy GetModelDetailsForNoRecommendation
create a new path from Set Property - Set Input for Logic and connect to new set property component - No Recommendation
Set the following properties in new set property component - No Recommendation
ProductRecommendationType = “Tariff”
NoRecommendation = “Yes”
ModelDetails =
@if(.ModelDetailsTemp!="",@if(.ModelDetails="",.ModelDetailsTemp,.ModelDetails+","+.ModelDetailsTemp),.ModelDetails)


Add a new Switch component - Check For Recommendation before Results component
Configure new Switch component - Check For Recommendation as below -
If “Get Net Revenue” component return results, select “Get Net Revenue” component
Else, select “No Recommendation”

K. Update strategy - IdentifyBestInboundCCTreatmentForSubscription
Update the condition for setting ErrorMessage property in set property component - Set Error Message
consider the scenario that CalculateDeal will return a SR page with NoRecommendation = “Yes”  in case no recommendation is
available for the customer; the error message should only be set if recommendation is not available (NoRecommendation != “Yes”)
L. Update strategy - PopulateOutputPropertiesForNBAA
Populate the following properties as follows -


1304

M. Update strategy - SetIHForInboundCC
Update set property component - IH properties and set property pyOutcome as follows -
set to “Selected” if NoRecommendation != “Yes”
set to “NoRecommendation” if NoRecommendation = “Yes”
N. Create new data set - RecommendationItems on class - VFUK-FW-AOMFW-Data-RecommendationItems

O. Update Data Flow - IdentifyBestIBCCTreatments (To be updated by Zeynep)
Add a new Filter - Check for Recommendation for the Primary Destination
NoRecommendation != “Yes”
Update filter for secondary destination - InteractionHistory to write only the Parent record
Update filter for secondary destination - InteractionHistoryReporting to write only the Parent record
Add a new destination for RecommendationItems and add a convert shape to covert the data from SR class to RecommendationItems
class
Add new filter to the new new destination for RecommendationItems to write only when NoRecommendation != “Yes” and write all
parent & child recordsProductLevelRecommendationInd = NDealLevelRecommendationInd = Y


1305
NBA FW - Conditional investigation function for RT APIs
Impact in Other areas
 Dependencies
Summary
A. GetNBA  (TradeIn, IVR)
A1. New Data Flow - GetBestT reatmentsByGetNBA
A2. New C* Data Set - DebugGetNBA
A3. New When rule - DebugGetNBA
B. GetAssistedUpgrade (V ADR)
B1. New C* Data Set - DebugAssistedUpgrade
B2. New When rule - DebugAssistedUpgrade
B3. Update Data Flow - GetAssistedUpgrade
C. GetProductList (V ADR)
C1. New Data Flow - GetProductListForAssistedUpgrade
C2. New C* Data Set - DebugGetProductList
C3. New When rule - DebugGetProductList
C4. Update Data Flow - GetProductList
D. ValidateBasket (V ADR)
D1. New Data Flow - V alidateBasketForAssistedUpgrade
D2. New C* Data Set - DebugV alidateBasket
D3. New When rule - DebugV alidateBasket
D4. Update Data Flow - V alidateBasket
E. ValidateDelete (V ADR)
E1. New Data Flow - V alidateDeleteForAssistedUpgrade
E2. New C* Data Set - DebugV alidateDelete
E3. New When rule - DebugV alidateDelete
E4. Update Data Flow - V alidateDelete
Impact in Other areas

 Dependencies473870 Conditional investigation function for RT APIs - for assisted418512 Conditional investigation function for RT APIs - for non assisted
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments


1306

Summary
This new capability will enable easier debugging/investigation functionality for all real-time call to AOM by writing conditionally to new C*
Data Sets. The following DFs will be updated to provide this functionality -
For non-assisted (ADO 418512)
GetNBA (TradeIn, IVR)
For Assisted (ADO 473870)
GetAssistedUpgrade (VADR)
GetProductList (VADR)
ValidateBasket (VADR)
ValidateDelete (VADR)
The “conditional” part of the functionality will be managed by “When” rules (in Local Ruleset) which could be updated to do the following -
Enable writing to new C* Data Sets
Use additional conditions to narrow down the scope of the investigation

The funtionality will be used in production env or any test env on demand to investigate issues as well as in Dev env during dev-testing of
the changes in the Strategy FW.

A. GetNBA (TradeIn, IVR)

A1. New Data Flow - GetBestTreatmentsByGetNBA
Create a new DF GetBestTreatmentsByGetNBA by creating a copy of  DF GetNBA
Update the Source from Data Flow to Abstract PM Tool No
App No
DB No  Area Yes/No Comments


1307

A2. New C* Data Set - DebugGetNBA
Create a new C* Data Set DebugGetNBA on Subscription class with only one Key as CustomerID

A3. New When rule - DebugGetNBA
Create a new when rule DebugGetNBA on subscription class and Local ruleset
Switch on “expression” mode
Use the following expression -
1=1
/*
1. 1=1 or 1=2 : This enables or disables the debug
2. && TBC
*/
Please note that when rule should contain examples (commented) of additional conditions that are possible.

A4. Update Data Flow - GetNBA
Delete all components as highlighted below -


1308

Add new Data Flow - GetBestTreatmentsByGetNBA as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugGetNBA in the filter condition
in the branch, use new data set DebugGetNBA as the destination

B. GetAssistedUpgrade (VADR)

B1. New C* Data Set - DebugAssistedUpgrade
Create a new C* Data Set DebugAssistedUpgrade on Subscription class with only one Key as CustomerID

B2. New When rule - DebugAssistedUpgrade
Create a new when rule DebugAssistedUpgrade on subscription class and Local ruleset
Switch on “expression” mode
Use the following expression -
1=1
/*
1. 1=1 or 1=2 : This enables or disables the debug
2. && TBC
*/
Please note that when rule should contain examples (commented) of additional conditions that are possible.


1309

B3. Update Data Flow - GetAssistedUpgrade
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugAssistedUpgrade in the filter condition
in the branch, use new data set DebugAssistedUpgrade as the destination
C. GetProductList (VADR)

C1. New Data Flow - GetProductListForAssistedUpgrade
Create a new DF GetProductListForAssistedUpgrade by creating a copy of  DF GetProductList
Update the Source from Data Flow to Abstract

C2. New C* Data Set - DebugGetProductList
Create a new C* Data Set DebugGetProductList on Subscription class with only one Key as CustomerID

C3. New When rule - DebugGetProductList
Create a new when rule DebugGetProductList on subscription class and Local ruleset
Switch on “expression” mode
Use the following expression -
1=1
/*
1. 1=1 or 1=2 : This enables or disables the debug
2. && TBC
*/
Please note that when rule should contain examples (commented) of additional conditions that are possible.

C4. Update Data Flow - GetProductList
Delete all components as highlighted below -


1310

Add new Data Flow - GetProductListForAssistedUpgrade as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugGetProductList in the filter condition
in the branch, use new data set DebugGetProductList as the destination

D. ValidateBasket (VADR)

D1. New Data Flow - ValidateBasketForAssistedUpgrade
Create a new DF ValidateBasketForAssistedUpgrade by creating a copy of  DF ValidateBasket
Update the Source from Data Flow to Abstract

D2. New C* Data Set - DebugValidateBasket
Create a new C* Data Set DebugValidateBasket on Subscription class with only one Key as CustomerID

D3. New When rule - DebugValidateBasket
Create a new when rule DebugValidateBasket on subscription class and Local ruleset
Switch on “expression” mode
Use the following expression -
1=1
/*
1. 1=1 or 1=2 : This enables or disables the debug
2. && TBC
*/


1311
Please note that when rule should contain examples (commented) of additional conditions that are possible.

D4. Update Data Flow - ValidateBasket
Delete all components as highlighted below -

Add new Data Flow - ValidateBasketForAssistedUpgrade as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugValidateBasket in the filter condition
in the branch, use new data set DebugValidateBasket as the destination

E. ValidateDelete (VADR)

E1. New Data Flow - ValidateDeleteForAssistedUpgrade
Create a new DF ValidateDeleteForAssistedUpgrade by creating a copy of  DF ValidateDelete
Update the Source from Data Flow to Abstract

E2. New C* Data Set - DebugValidateDelete
Create a new C* Data Set DebugValidateDelete on Subscription class with only one Key as CustomerID

E3. New When rule - DebugValidateDelete
Create a new when rule DebugValidateDelete on subscription class and Local ruleset
Switch on “expression” mode


1312
Use the following expression -
1=1
/*
1. 1=1 or 1=2 : This enables or disables the debug
2. && TBC
*/
Please note that when rule should contain examples (commented) of additional conditions that are possible.

E4. Update Data Flow - ValidateDelete
Delete all components as highlighted below -

Add new Data Flow - ValidateDeleteForAssistedUpgrade as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugValidateDelete in the filter condition
in the branch, use new data set DebugValidateDelete as the destination


1313
Assisted Upgrade -Fix or Flex (Part 1)

HL Requirement
Business want ability to configure a Tarif /Devices as Fixed .
Also global level configurations will enable fix flow or not.
If deal contains any “Fixed” product
No additional discount will be recommended (promotional discounts are exception)
  Toolkit discounts can not be added in edit journey.
Commercial recommendation will always have priority over Fixed. A commercial recommendation can have additional discount
although tariff/hanset is Fixed.
Impact in Other Areas442432 Fix or Flex: Being able to enable Fix or Flex at Team level
442436 Fix or Flex: Being able to enable Fix or Flex at Order type
442057 Fix or Flex : Non Promo Tariff
442081 Fix or Flex: Promotional Tariff
442099 Fix or Flex: Reporting
442089 Fix or Flex: Commercial Recommendation442425 Fix or Flex: Being able to enable Fix or Flex at Channel level
PM Tool Yes  Configuration on product attributes (IsFixed),existing functionality
Dev impact to configure Team/Channel/OrderyType
PM Tool KT Documentation Yes
Knowledge Transfer No
App Yes GetRecommendations API Ouput> add IsFixed attribute Line Item level
GetProductList API Input & Output> add IsFixed to  attribute Line Item level
DB No
UI/VADR Yes Present If recommended Tariff/Handset is Fixed product
Present If  Tariff/Handset listed in Tariff/Handset list is a Fixed product
Remove non promo Discounts from basket
If Handset added/swapped and  Recent Product IsFixed

Provide whole basket details for GetProductList-Discount caseArea Yes/No Comments


1314
HL Flow
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457361105693410&cot=14 -
1. Configuring Fix & Flex
Product Level
Use PM tool  Business meta data functionality
Configure below attributes for Tariff & Device products
Global Level
User can enable Fixed Tariff/ Handset Flow at Channel/Team & Order type level.
 This configuration  will override product level IsFixed configuration according to request channel/team/Order type
New PM tool screen will be introduced to configure  Channels/Teams/Order type which Fixed flow is enabled.
PM tool will push data to AOM DecisonData.
New Decision Data - GobalFixedProductConfiguration

Unique Key FixedProductEnabledChannel, FixedProudctEnabledTeam. (Different Rows for each Channel-Team Combination)
Example data:
2. Get Recommendation Flow Update
Logic needs to calculate IsFixed attributes for Device &  Tariff products
Logic recommendation should not include Upgrade discount in case of Tariff or Device is fixed.Refresh Discount tap with any action on Device

Connect your Miro account
IsFixed Boolean True/False FalseAttribute Name Type Possible Values Default
FixedProductEnabledChannel Text Single Value
 AOM Channels,ALL
FixedProudctEnabledTeam Text Single Value Save ,SuperSave,Omni,ALL
FixedProductEnabledOrderTypes Text Multiple Value (comma
separated ) ?, ALL AttributeName   Possible Values
InboundCC Save ALL
InboundCC SuperSave Upgrade
Digital ALL ALLFixedProductEnabledChannel FixedProudctEnabledTeam FixedProductEnabledOrderTypes


1315
New Strategy -GetGlobalFixedProductConfiguration
Enable ExternalInput
Import GobalFixedProductConfiguration  filter  :
 FixedProductEnabledChannel is ALL or  equal to  Channel   AND
 FixedProudctEnabledTeam is ALL or  equal to  Team AND
FixedEnabledOrderTypes is ALL or FixedEnabledOrderTypes contains Request order type
if any record available Set IsFixedEnabled =true  to input Record
Update Strategy -CalculateUpgradeDeal
Make sub startegy call to GetGlobalFixedProductConfiguration after InputForRecCal
Update Strategy -GetRecommendedDevice

Update Strategy to set IsFixed flag for Device
Populate related ProductAttribiutes from data pages (D_SellablePaymHandsetBySKU,D_SellablePaymHandset)
RecommendedDeviceIsFixed=if ProductAttributes(IsFixed)= “True”  Then True else False
 if  RecommendedDeviceIsFixed =True & IsFixedEnabled=True else Set RecommendedDeviceIsFixed=True else set Set
RecommendedDeviceIsFixed=False
Update Strategy -GetListofActiveTariffs
Update Strategy to set IsFixed flag for Tariff
Populate related ProductAttribiutes from data pages (D_EligibleTariffsForDept)
RecommendedTariffIsFixed=if ProductAttributes(IsFixed)= “True”  Then True else False
If  RecommendedTariffIsFixed =True & IsFixedEnabled=True else Set RecommendedTariffIsFixed=True else set Set
RecommendedTariffIsFixed=False
Update Strategy -CalculateUpgradeDiscount


1316

Logic recommendation should not include upgrade discount if Tariff or Device is Isfixed
Update Filter “Tariffs Without Auto Added Products”  > rename it “Include Upgrade Discount”
Update condtion RecommendedTariffIsFixed
!.HasAutoAddedAddon && !.HasAutoAddedDiscount && !.RecommendedDeviceIsFixed && !.RecommendedTariffIsFixed
Update filter “Tariffs With Auto Added Products “ > rename it “Not Include Upgrade Discount”
.HasAutoAddedAddon ||.HasAutoAddedDiscount ||.RecommendedDeviceIsFixed || .RecommendedTariffIsFixed
Update EvaluateTariffVisibility & EvaluateHandsetCompatibility
Those updates are for commercial recommendation flow
There is no control on Commercial recommendation flow to block commercial discount
Changes are to populate flags for handset & tariff records  in commercial recommendation.
Use similar logic  in  GetListofActiveTariffs & GetRecommendedDevice , make sure IsFixed flag is populated for Tariff & Handset
records
Update Strategy-CalculateDeal
Update Strategy to include RecommendedTariffIsFixed & RecommendedDeviceIsFixed attributes populated from CalculateUpgradeDeal
Update Strategy-PopulateOutputPropertiesforNBAA
Populate IsFixed flag for Tariff & Handset records according to RecommendedTariffIsFixed/RecommendedDeviceIsFixed
Set IsFixedproduct= “Y” if IsFixed =True else “N”
Update Strategy-SetDefaultValuesToIHProperties
Set IsFixedproduct= “N” if IsProductFixed=””


1317
Assisted Upgrade - Commercial Recommendations- Update Very Early Upgrade
S15 controls

HL Requirement
GetRecommendation Flow applies EU-S15 check to commercial flow as well, with new requirement this control should be removed.
Currently GetTariffList strategy generates tariff list by checking S15 Grow rule (ApplyTariffMAFRules strategy) so tariffs which don’t meet
this rule are not listed in the result set. In the scope of this change, if the recommendation is a commercial recommendation, this rule will
be skipped for the tariff in the basket.
Populate code of the tariff in the basket to the tariff list generated in the GetTariffList strategy
Filter the tariff in the basket if it’s a Commercial recommendation and skip Grow S15 rule in ApplyTariffMAFRules strategy.
If commercial recommendation is updated (which convert commercial recommendation to EditedDeal)
PostS15 control should be applied to deal in case of Early Upgrade
Impact in Other areas

Changes For GetRecommendation
Update Strategy- IdentifyCommercialRecommnedation
Remove S15 check for commercial recommendation442493 Commercial Recommendation and Very Early Upgrade S15 Rules
App Yes Add Recommendation Type to Input  of GetProductList API (Header,LineItems &
ChildLineItems level)
Add Recommendation Type to Input of ValidateBasket API (Header,LineItems &
ChildLineItems level)
VADR Yes Add Tariff In basket to Input call to GetProductList for TariffArea Yes/No Comments


1318
Changes for Edit Deal
Update Strategy -  GetTariffList
1- Commercial Tariff In Basket
Populate  the Recommendation  RecommendationType from context (input data-Header)
Retrieve the tariff in basket
 If  Recommendation RecommendationType=Commercial  & Line Item RecommendationType= Commercial   set
.CommercialTariffInBasket = .ProductID
2- Populate this attribute to Tariff List  (This value will be used in ApplyTariffMAFRules sub strategy.)
Update Strategy -  ApplyTariffMAFRules

Split the the incoming records as commercial tariff and other tariffs, skip GrowS15 control for commercial tariff.
Split commercial tariff in basket and other tariffs to different paths :
Add a filter “Commercial Recommendation” > Filter  tariff .ProductID=CommercialTariffInBasket and provide the result in the output
skipping GrowS15 control.
Add a filter “Other Tariffs” > Filter out other tariffs and apply GrowS15 control. (As-Is)


1319

Update Strategy- Validate Basket

Add control to Tariff path  for  EU & edited Commercial deal  case >
 if  RecommendationType is not Commercial but Tariff is part of Commercial Recommendation(LineItem RecommendationType )
Check If customer fall in its EU rules
If customer is in EU    Check Basket S15PostMAFDelta> 0 , if   not satisfied mark tariff as incompatible.
Else run as is logic to  on Handset compatibility check.
To provide GrowS15 flag to Tariff path “CalculateMaxDiscountForBasket” strategy logic needs to be separated out
New Strategy > CheckEarlyUpgradeForBasket   - Use basket data & Current Tariff Details and check EU rules, populate details to
Tariff record
CalculateMaxDiscountForBasket - Use Basket data & details populated form CheckEarlyUpgradeForBasket & calculates Max
discount.
Make sub strategy call to CheckEarlyUpgradeForBasket  (place it before Set Operation)
Make sub strategy call to CalculateMaxDiscountForBasket, input is output of CheckEarlyUpgradeForBasket
Control to add Tariff PAth
If Recommendation RecommendationType  <> “Commercial” and  LineItem RecommendationType (for Tariff) = “Commercial”
If .GrowS15 is true, check  S15PostMAFDelta (outputs of CalculateBasketFinancials sub-strategy)
If  S15PostMAFDelta < 0 set .Status = “Incompatible”, .StatusMessage = “?“
Else Skip Pre / post S15 control , run as is logic on Handset compatibility check.
else Skip EU control,  run as is logic on Handset compatibility check.


1320
New Strategy -  CheckEarlyUpgradeForBasket


1321
Input is Basket Data
Set Inputs for CheckUpgradeLifeCycleS15Rule from Current Tariff & Basket
Make Sub strategy  call to CheckUpgradeLifeCycleS15Rule
Output > all records in the input. CustomerType,ContractDue,PreS15Maf ,GrowS15 populated on Tariff record

Update Strategy -CalculateMaxDiscountForBasket
Input Data > Basket data ( CustomerType,ContractDue,PreS15Maf ,GrowS15 populated to Tariff record)
Set Inputs for CalculateMaxUpgradeDiscount from GetCustomerStarRating , GetTeamforAgentDivision & Basket data
Make sub strategy  call to CalculateMaxUpgradeDiscount
Set Max Discount according to Max Toolkit Upgrade Discount  (output of  CalculateMaxUpgradeDiscount) vs Max discount will satisfy
S15 grow (in case of EU)
Update Strategy -CalculateBasketFinancials
Remove GetCurrentTariff call , as CheckEarlyUpgradeForBasket populate PreS15 to Tariff record
Populate PreS15 to “Set Reco Details” from “Tariff In Basket”
Update Strategy -GetDiscountList
Make sub strategy call to CheckEarlyUpgradeForBasket before CalculateMaxDiscountForBasket.


1323
Assisted Upgrade - Edit Commercial Recommendation-Discount List

HL Requirement
Currently GetDiscountList strategy generates the discount list by comparing the discount amount with the max discount amount that can
be offered to the customer and discounts over this amount are not listed. In the scope of this change, if the recommendation is a
commercial recommendation, this rule will be skipped for the discount in the basket.
Add the code of the discount in the basket to the discount list.
Filter the discount in the basket if it’s a Commercial recommendation and skip max discount amount control
(DiscountslessorequaltoMaxUpgradeDiscountAmount component).

Impact in Other areas
Update Strategy - GetDiscountList

 439263 Discount Tab - Commercial Recommendation Discount Display
App Yes Add RecommendationType To GetRecommendation API output (Header(as is) ,
LineItems & ChildLineITems level)
Add Recommendation Type to Input of GetProductList(Header,LineItems &
ChildLineItems level)
VADR Yes Add Discount In basket to Input call to GetProductList for DiscountArea Yes/No Comments


1324
Set CommercialDiscountinBasket
Call GetChildItems substrategy, filter out the discount >.ProductType = "Discount" & (Header)RecommendationType=Commercial &
(ChildLineItem)RecommendationType=Commercial
If any record available Set .CommercialDiscountInBasket (new property) with .ProductCode of the discount
Populate CommercialDiscountInBasketon discounts coming from DiscountsforTariff data page.
After  the “Except Additional Plan Discounts” path , split commercial discount in basket and other discounts to different paths and skip
Max Discount Amount control
Add a filter “Commercial Discount” > .ProductCode=.CommercialDiscountInBasket  skiping max discount amount control.
Filter out other discounts and apply max discount amount control. (As-Is)


1325
Assisted Upgrade - Edit Commercial Recommendation-Validations
Currently, for Delete-Addon, Delete-Insurance, and Swap-Insurance operations, max discount amount control is applied for discount in the
basket.  In the scope of this change, if the recommendation is a commercial recommendation, this rule will be skipped for the discount in the
basket.
HL Requirement
Some actions on Commercial recommendation will cover it to “Edited Deal”.
Commercial discounts on deal should be removed
Recommendation Type should be re calculated
User can add additional addons to commercial recommendation,in that case recommendation is still Commercial recommendation.
User can delete the add-on added in edit mode , in that case recommendation is still Commercial recommendation.Logic need to Skip
max discount amount control if commercial recommendation is edited
HL Flow : https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457360920960717&cot=14 -
Impact in Other areas
Update Strategy - ValidateBasket

 439861 Commercial Recommendation Discount when amending the package
Connect your Miro account
App Yes Add Recommendation Type to Input of ValidateBasket API (Header,LineItems &
ChildLineITems level)
VADR Yes Check if the deleted Addon/Insurance is a part of recommended package. If it is, Call
Validate Delete otherwise call ValidateBasket
Reset RecommendationType to EditedDeal for spesific action on basket.
Remove commercial discounts (non promotional)  from basket Area Yes/No Comments


1326
Set (header) .RecommendationType in ContextProperties and pass the value to discount path
On Discount Path
Validate Max discount If Recommendation Recommendation Type !=Commercial only  (If commercial any discount can be given by
commercial manager)


1327
Assisted Upgrade-Sellable Control
HL Requirement
Business want ability to configure Tariffs & Device which are sellable (General/Team Level/Channel Level)
Business want ability to configure Device type on PC data. Current logic only recommends Handset devices. In coming releases we
may introduce different device types to recommend.
This configuration will be done on PM tool with product meta data capability
Filtering will be done on data page level,Logic will provide  related data to data page fro filtering.
Impact in Other Areas
 439181 Being able to manage Business Meta Data in PM  - Part 2438971 Update how to  filter the list of current tariffs to display on screen and
use in the logic
PM Tool No  Configuration on product attributes ,existing functionality
PM Tool KT Documentation Yes
Knowledge Transfer No
App Yes Update Data Pages
D_SellablePayMHandsets,
D_EligibleHandsetsForTariff
D_PayMHandset
logic pass Device type as input . Data page will filter according to device type.

Update Data Pages
D_SellablePayMHandsets,
D_SellablePayMHandsetsbySKU
D_EligibleHandsetsForTariff
D_EligibleTariffsForDept

Logic access data pages with Team(optional),Channel(mandatory)  information.
 If channel is Inboundcc check team
Filtering is done at data page level
DB No
UI/VADR No  Area Yes/No Comments


1328
Sellable Configuration
Use PM tool to configure product attributes
 Device Device Data Device Type Data Device
Watch
HandsetDeviceType Text(List-Single
Select)Data Device
Watch
HandsetNull
Device Sellable  Flag Being able to
remove a
Device for all
channels/team
s (global
setting)Yes or No Sellable Boolean True /False TRUE
Device Sellable  Flag being able to
remove a
device for all
particular
channelRetail, Contact
Centre, DigitalSellableChann
elsText(MultiSelec
t)Retail,Inbound
CC   (All +
AOM
Channels)
(can be
multiple,
comma
seperated)All
Device Sellable  Flag being able to
remove a
device for a
particular teamOmni, Save,
SuperSaveSellableTeamsText(MultiSelec
tOmni, Save,
SuperSave
(All + Teams)
(can be
multiple,
comma
seperated)All
Tariff Sellable  Flag Being able to
remove a Tariff
for all
channels/Team
(Global
Setting)Yes or No Sellable   Yes
Tariff Sellable  Flag being able to
remove the
Tariff for all
particular
channelRetail, Contact
Centre, Digital
(AOM
Channels)SellableChann
els  All
Tariff Sellable  Flag being able to
remove a
Tariff for a
particular teamOmni, Save,
SuperSaveSellableTeams   Prop TypeMetadata
CategoryData Item
definitionComment AttrbiuteNameAttrbiuteType PossibleValuesDefault


1329
Logic Changes
Device Changes
Update the strategies that uses data pages listed .Pass  Device type parameters   to data page (Static = Handset for now) and  Team
& Channel
D_SellablePayMHandsets,D_EligibleHandsetsForTariff
Tariff Changes
Update the current logic developed to filter the current list of tariffs used for the recommendations.
Update the strategies that uses data pages  listed .  Pass Team & Channel  parameters to data page
D_EligibleTariffsForDept
Update GetActiveTariffList strategy , remove CTR filter as active tariff control will be managed with Business metadata.


1330
NBA FW - Add Benefits Spine to Data
Impact in Other areas
 Dependencies
Logic Development Tasks
Update dataflow PrepareBatchData
Add a new compose at the end and compose with SubscriptionID from Benefits table and Customerid from main path.
Add a new dataset import for Benefits dataset470876 Add benefits spine to data flow
App Yes Create class record for benefits_v dataset
Create benefits property on Subscription class
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes Logic Dev cannot start without App work is done
E2E testing needs App changes to be completed
DB No  Area Yes/No Comments


1331
Update dataflow PrepareRealtimeData
Add a new compose at the end and compose with SubscriptionID from Benefits table and Customerid from main path.
Add a new dataset import for Benefits dataset
Update dataflow PrepareRealtimeDataForProcessEvent
Add a new compose at the end and compose with SubscriptionID from Benefits table and Customerid from main path.
Add a new dataset import for Benefits dataset


1332
NBA FW - Move Intent to Offer Dedupe further down the funnel
Impact in Other areas
Dependencies
Logic Development Changes
 A. Update Strategy - IdentifyOffersForEligibleIntents
Connect the filter component, ”Only Matched Squad Level Intent” to the Group By Component. Name the group by component as
“Group by Intent and BP for matched Squad Intents“. Apply group by on .Intent and .BusinessPurpose465217 Move Intent to Offer Dedupe further down the funnel
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1333
Remove the connection between the data join “Join on Business Purpose“ and the Prioritize component “Top Intent based on
IntentConfidenceScrore“
Connect the data join “Join on Business Purpose“ to the new data join component. Name the new data join as “Join with Unique
Matched Squad Intents “. In the new data join, join the source components with the new group by component “Group by Intent and BP
for matched Squad Intents“ and add the below conditons.
1. .Intent = .pyName and
2. .BusinessPurpose = .BusinessPurpose
In the properties mapping, set .ValueText = "Match Found"
Connect the data join, “Join with Unique Matched Squad Intents “ to the new filter component. Name the filter component as “Only non
matched squad Intents“. In the filter add the condition: @AOMUtilities.IsNullOrEmpty(.ValueText)
Join the filter “Only non matched squad Intents“ to the new data join “Only non matched squad Intents“ to the new data join named
“Intent with Top BP“
In the data join , join with top intent Prioritize component “Top Intent based on IntentConfidenceScrore“ and add the condition check .Intent
= .Intent
Note: check the check box for Exclude source component results that do not match join condition.
Remove the data join component “Join offers for top IntentConfidenceScore“ which is connected from the data join called “Match source
offers with low confidence squad offers“. Join the data join, “Match source offers with low confidence squad offers“ to the new Prioritize
Component and name it as “Prioritize Squad Matched Intents on IntentConfidenceScore“. Add the expression in the Prioritize


component as @divide(.IntentConfidenceScore,100)  * .IntentWeight and select order by from Highest first and output by All.
Update the switch component “Choose Squad Level Intent to Offers or Intent To BP“. In the switch component ,
Choose the component “Prioritize Squad Matched Intents on IntentConfidenceScore“  if the condition
PrioritizeSquadMatchedIntentsonIntentConfidenceScore.pyName!=”” otherwise choose “Intent with Top BP”
Remove the data join “Intents With BP“ which is connected from the switch component, “Choose Squad Level Intent to Offers or Intent
To BP”.
Connect the switch component, “Choose Squad Level Intent to Offers or Intent To BP” to an empty set property named with Intents with
BP.
Join the set property named “Intents With BP & Offer“ to the existing data join “Intents With BP & Offer“
Update the existing switch component, IntentToOffer vs IntentToBP. In the otherwise dropdown choose the empty set property called
“Intents with BP“


1335
NBA FW - Introduce Revalidation Steps for Batch
Impact in Other areas
Dependencies
Logic:
Introduce two new config items in the AOMBusinessConfig DataType
Update Strategy: GetIHAtCustomerLevel
Add new set property component:
1. Save Batch Outcome Date
a. Set .ValueText = .OutcomeDate
b. Connect to group by component "Get Latest Batch Selection By Treatment"
Add new group by components:
Get Latest Batch Selection By Treatment
Connect set property component to the Group by component “Get Latest Batch Selection By Treatment“
Group by “TreatmentName“
Set .OutcomeDate to Max of .OutcomeDate370027 Revalidation Steps for Batch
App No
DB No
Knowledge Transfer Yes
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments
EmailRevalidationPeriod(TBC) Email 0
SMSRevalidationPeriod(TBC) SMS 0ConfigType ConfigName Value


1336
With highest .OutcomeDate
Select "Include all model results in group"
Add new set property component:
Reset Batch Outcome
Connect with "Get Latest Batch Selection By Treatment" group by component
Set .OutcomeDate = .ValueText
Add new set property component:
1. Latest Batch Selection By Treatment
a. Connect with "Reset Batch Outcome" set property component
b. Set .DaysSinceLastDismissedResponse= @AOMUtilities.CalculateNumberOfDaysFromToday(.OutcomeDate)
Connect this set property component to the Result.

Create New Strategy: RevalidateBatchTreatments
A. Enable External Input.
B. Join an External Input to the two new filters.
In the first filter, add the condition @String.equalsIgnoreCase(.Channel,"Email") and name the filter as "Email Eligible Treatments".
In the second filter, add the condition @String.equalsIgnoreCase(.Channel,"SMS") and name the filter as "SMS Eligible Treatments".
C. Import the Substrategy, GetIHAtCustomerLevel and select the component, "Latest Batch Selection By Treatment".
D. Join both the filters to the new empty set property, "Eligible Treatments" and join it to the new data join, "Latest Batch Selection By
Subscription".
D1. In the data join , join with substrategy GetIHAtCustomerLevel. Add the condition check .pyName = .pyName    and map the
.DaysSinceLastCommunicationDate =.DaysSinceLastCommunicationDate in the properties mapping tab map .IHCommunicationHistory =
@if(.pyName!="","Yes","No")
E. Join the Data Join to the two new set properties.
E1. Join to the set property, "Set Contention Period for Email"
Set .ContentionPeriod =


Set .ContentionPeriod =
@if(D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:EmailRevalidationPeriod,ConfigName:Email].ConfigValue!="",@ToInt(D_VF
UKFWAOMFWDataAOMBusinessConfig[ConfigType:EmailRevalidationPeriod,ConfigName:Email].ConfigValue),0)
E2. Join to the set property, "Set Contention Period for SMS"
Set .ContentionPeriod =
@if(D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:SMSRevalidationPeriod,ConfigName:SMS].ConfigValue!=""),@ToInt(D_VF
UKFWAOMFWDataAOMBusinessConfig[ConfigType:SMSRevalidationPeriod,ConfigName:SMS].ConfigValue),0)


1337
F. Join both the set property components to the new filter, Check Revalidation.
Add the condition, @if(.IHCommunicationHistory="Yes",.DaysSinceLastCommunicationDate>.ContentionPeriod,true)
G. Join filter to the Result.
Update PrepareEmailTreatments:
H. Remove the solid line joins from the filter,"Eligible Email Treatments" filter to the Data joins "Matching Parent Treatments" and "Matching
Child Treatments"
I. Join the filter ,"Eligible Email Treatments" to the new substrategy, "RevalidateBatchTreatments" and join this substrategy to the datajoins
"Matching Parent Treatments" and "Matching Child Treatments"

Update Strategy PrepareSMSTreatments
J. Introduce new substrategy, RevalidateBatchTreatments after the filter "Eligible SMS Treatments" and before the set property component,
"Treatments Data Import".


1338
Extras Landing Page - Strategy Framework Changes
Impact in Other areas
Dependencies
Logic Tasks
Create Data flow GetLandingPages:
Create the new dataflow GetLandingPages similar to the PrepareRealtimeData Data flow.
Source: Abstract
Destination: Add the dataflow GetRecommendationFromBDC
Create Data flow GetLandingPagesforMicrosite:
Input: GetLandingPages
Connect it to the strategy, GetLandingPageMicrositeTreatments
Destination: Abstract473873 Extras Landing Page - Strategy Framework Changes
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1339
SFW updates for new channel (Microsite)
Add “Microsite” channel to LandingPages Execution Mode
Treatment strategies will be updated to include Microsite channel
Create new strategy ImportMicorsiteTreatments
Similar to ImportUpsellTreatments structure (screenshot below)
Update ImportAllTreatments strategy
Add ImportMicrositeTreatments strategy
Update strategy - AllTreatmentsForEligibleOffers
Connect the set property, All Treatments After Applying Offer Contact Strategy (excl Email) to the new filter Treatments For
ExecutionMode - LandingPages.
Add a filter, Treatments For ExecutionMode - LandingPages and add the condition
@String.contains(@String.toUpperCase(.OfferExecutionMode),"LandingPages") and connect it to the Microsite Treatments filter.
Add a filter for “Microsite Treatments” with condition: @String.equalsIgnoreCase(.Channel,"Micorsite")


1340
Join the filter with “Select Microsite Treatments“ set property and connect to Results
Create 11 new Squad specific proposition DDS for Microsite Channel
Update squad specific ApplyXXXXXXTreatmentEligibility strategies
List of strategies to change:
ApplyUpsellTreatmentEligibility
ApplyRetentionTreatmentEligibility
ApplyServiceTreatmentEligibility
ApplyRetainTreatmentEligibility
ApplyRenewTreatmentEligibility
ApplyCrossSellTreatmentEligibility
ApplyTradeInTreatmentEligibility
ApplyCareTreatmentEligibility
ApplyEngagementTreatmentEligibility
ApplyLoyaltyTreatmentEligibility
ApplyHBBTreatmentEligibility
Changes to make:
Microsite Care Microsite
Microsite CrossSell Microsite
Microsite Renew Microsite
Microsite Retain Microsite
Microsite Retention Microsite
Microsite Service Microsite
Microsite TradeIn Microsite
Microsite Upsell Microsite
Microsite Engagement Microsite
Microsite                        HBB Microsite
Microsite                      Loyalty MicrositeDecision Data Issue Group


1341
Add “Microsite Channel” filter with condition: @String.equalsIgnoreCase(.Channel,"Micorsite")
Add “ApplyMicrositeTreatmentEligibility Filter“ with “prop filter” call to the below:
UpsellMicrositeTreatmentEligibility
RetentionMicrositeTreatmentEligibility
ServiceMicrositeTreatmentEligibility
RetainMicrositeTreatmentEligibility
RenewMicrositeTreatmentEligibility
CrossSellMicrositeTreatmentEligibility
TradeInMicrositeTreatmentEligibility
CareMicrositeTreatmentEligibility
EngagementMicrositeTreatmentEligibility
Connect to Results
Update strategy IdentifyBestTreatmentForBatch
In the Non-Mandatory path:
After “MaxOffers” set property,
Create 1 filter for Microsite channel
@String.equalsIgnoreCase(.Channel,"Micorsite")
Connect MMS channel filter to “Prioritize Microsite” (by .pxPriority - Highest, All)
Connect to “NonMandatoryCommunications” filter
In the Mandatory path:
After “Mandatory” filter,
Create 1 filter for Microsite
@String.equalsIgnoreCase(.Channel,"Micorsite")
Connect MMS channel filter to “Prioritize Microsite Treatments” (by .pxPriority - Highest, All)
Connect to “PrioritisedMandatory” set property

Update strategy PopulateOutputPropertiesForMicrosite(TBC)
To be confirmed what properties need to be mapped(TBC)


1342
  Update strategy PopulateOutputProperties(TBC)
Create strategy - SetIHForMicrosite(TBC)
Add an external input
Add set property component - Set IH with only the following:
Connect to results
Update strategy - SetIHPropertiesForAllChannels
After “SetGenericIHReportingAttributes” sub-strategy, add “Microsite Channel” filter with condition:
.Channel = “Microsite”
Call sub-strategy “SetIHForMicrosite“ and connect to channel filter
Connect to SetDefaultValuesToIHProperties sub-strategy call
Connect to Results

 pyDirection “Outbound“
pyOutcome “Selected”Property Name Value


1343
Assisted Upgrade -Fix or Flex (part 2)

HL Requirement
Business want ability to configure a Tarif /Devices as Fixed .
Also global level configurations will enable fix flow or not.
If deal contains any “Fixed” product
No additional discount will be recommended (promotional discounts are exception)
  Toolkit discounts can not be added in edit journey.
Commercial recommendation will always have priority over Fixed. A commercial recommendation can have additional discount
although tariff/hanset is Fixed.
Impact in Other Areas442078 Fix or Flex - Indicate that the tariff or the device is fixed in the UI
442060 Fix or Flex Edit Journey
442086 Fix or Flex: Promotional Tariff - Agent Edit's Journeys
442094 Fix or Flex: Commercial Recommendation Agent's journey442059 Fix or Flex Edit Discount Tab
PM Tool Yes  Configuration on product attributes (IsFixed),existing functionality
Dev impact to configure Team/Channel/OrderyType
PM Tool KT Documentation Yes
Knowledge Transfer No
App Yes GetRecommendations API Ouput> add IsFixed attribute Line Item level
GetProductList API Input & Output> add IsFixed to  attribute Line Item level
DB No
UI/VADR Yes Present If recommended Tariff/Handset is Fixed product
Present If  Tariff/Handset listed in Tariff/Handset list is a Fixed product
Remove non promo Discounts from basket
If Handset added/swapped and  Recent Product IsFixed

Provide whole basket details for GetProductList-Discount case
Refresh Discount tap with any action on Device
 Area Yes/No Comments


1344
3. Changes to Get Product List Flow
Update Device & Tariff List to include IsFixed attribute in the output
Update Discount list logic to exclude toolkit discounts in case of any Fixed product in the basket
Update Strategy -GetTariffList

Make Sub Strategy Call to GetTeamforAgentDivision to populate Team
Make Substrategy call to GetGlobalFixedProductConfiguration (Make sure Team,Channel,OrderType is populated in the input)
 Populate to  result  of GetGlobalFixedProductConfiguration to “Handset Tariffs Input” & “SIMO Tariffs Input”  -
Set IsFixedEnabled  (will be input to GetListofActiveTariffs)
Set Team
GetListofActiveTariffs is updated to output return tariff level RecommendedTariffIsFixed attribute (Section 2)
Populate RecommendedTariffIsFixed & Team to BDC path (“Exclude Ineligible Tariffs” data join)

Update Strategy -CalculateMaxDiscountForTariff
Remove GetTeamforAgentDivision call, as call moved to upper in flow.
Update Strategy -PopulateOutputPropertiesForTariff
Populate IsFixed flag for Tariff records according to RecommendedTariffIsFixed


1345
Update Strategy -GetDeviceList


1346

Make Sub Strategy Call to GetTeamforAgentDivision to populate Team
Make Substrategy call to GetGlobalFixedConfiguration (Make sure Team,Channel,OrderType is populated in the input)
Populate related ProductAttribiutes from data pages (D_SellablePaymHandset)
RecommendedDeviceIsFixed=if ProductAttributes(IsFixed)= “True”  Then True else False
 if  RecommendedDeviceIsFixed =True & IsFixedEnabled=True else Set RecommendedDeviceIsFixed=True else set Set
RecommendedDeviceIsFixed=False
Populate RecommendedDeviceIsFixed to BDC path (Sellable BDC Devices data join)
Update Strategy -PopulateOutputPropertiesForTariff
Populate IsFixed flag for Handset records according to RecommendedDeviceIsFixed

Update Strategy -GetDiscountList

Set IsFixedDeal Flag


1347
Check list items in basket , if any of the list item has “IsFixed” attribute as True, set IsFixedDeal=True
Update Auto Added Product Filter → The discount list should Include any promotional discount    and any optional discount
 ((DefaultInc = N && Rex Auto Added = N) ||  (Promotional Inc =Y) ) &&  Relationship type !=M
 Commercial Discount Filter
Will be covered in Commercial Discount Edit Flow  - any commercial discount  in basket should be available in the output list (if
recommendation is Commercial Recommendation and discount in basket is a part of commercial recommendation)
Promotional Discount Filter
Filter Discounts ( .PromotionInd ="Y") > No condtion on them ,any promotional discount attached to Tariff in basket should be
available in the list.
Set Classification=”Promotional”
Tool Kit Discounts Filter
Any discount other than Commercial Discount & Promotional Discount
If selected deal is Is fixed deal, no Toolkit discounts  will be returned
else Toolkit discounts should be filtered according to Max Discount for basket
Update Strategy -GetAddonList (As a fix to previous implementation)
Update Filter out Optional AutoAdded Products  > The add-on list should Include any promotional addon  but  not other mandatory
addons
 ((DefaultInc = N && Rex Auto Added = N) ||  (Promotional Inc =Y) ) &&  Relationship type !=M


1348
Assisted Upgrade -Refine By Update
HL Requirement
 The logic is only checking if the 'Refine by' manufacturer and model is available in big data device model. If the device is not in the BDC
model, the logic is not returning any recommendations. This Story is to extend this logic and to ensure that the uses the PC Handset
Data to make recommendation

Update Strategy -GetRecommendedDevice

Differentiate Refine By &  NBA executions (SecondaryContext) to select  recommended device
NBA
Use as is flow, remove Refine By Filters (BDC model)
Add Refine by Path:
Get all sellable handsets from PC (D_SellablePayMHandsets with inputs recently added Team,Channel,DeviceType)
Get all device attributes need for Handset (same attributes in NBA path)
Filter by Refine by parameters
Filter Record has Stock (Condition TBC)
order by  Model (asc) ,device storage(ASC) , Colour (ASC)  (TBC, can we use for on SKU and select the recent launched product)
Select Top 1 device
 439209 Update the logic to include the product catalogue


1349
Release 2.9


1350
Trade In - Payment Methods & When Bought With (WBW) Offers
List of Logic Specific Jira Tickets:
Impact in Other areas
Dependencies
Logic Changes:
Create new Decision Data “WBWDeviceMultiplierMatrix”
pyName - combination of FromDevice & ToDevice (unique)
pyLabel - combination of FromDevice & ToDevice (unique)
pyIssue - Default to “NonPropositions”
pyGroup - Default to “WBWDeviceMultiplierMatrix”
FromDevice(Text)
ToDevice(Text)
MultiplierType(Text)
GradeAMultiplierValue
GradeBMultiplierValue
GradeCMultiplierValue
GradeDMultiplierValue
GradeZMultiplierValueADO-497400 TradeIn PhaseB2 - Arbitration rules
ADO-497383 TradeIn PhaseB2 - Enable cohort eligibilityADO-497376 TradeIn PhaseB2 - Consume WBW device multiplier matrix
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments


1351
CohortID(Text)
Transactiontype(Text)
TypeOfCustomerDoingTradeIN(Text)
StartDate(DateTime)
EndDate(DateTime)
Enabled(Boolean)
Override(Boolean)
Create New Strategy EnhancedPriceForWBWDeviceOffers
Enable ExternalInput
Add 3 Filters ,and Connect From ExternalInput
For First Filter  Name Non AUP And other  Offers, Check .ParentChild=”Parent” && .OfferName Doesn't Contain WBW , and Connect
to Results
For Second Filter Name AUPOfferCheck ,Check ParentChild=”Child” && .OfferName  Contain WBW, and Connect to Results
For Third Filter Name WBWDevice Offer Check ,Check  ParentChild=”Parent”&&.OfferName  Contain WBW
Import the new DD (WBWDeviceMultiplierMatrix)
Add 2 new filter and in firs filter check From ad to Device does not contain Any and in 2nd filter check if either From or to contain any
From the fiter which contain Any connect to datajoin Match From and To Device  Any Records and connect to Set the Grade Value
component
From the fiter which does  not contain Any connect to datajoin Match From and To Device  Not Any Records and connect to
SettheGrade Value component
Connect WBWDevice Offer Check Filter to new SetProprty(Set RequestData) and populate
FromDevice,ToDevice,TransactionTypeFromRequest,TypeOfCustomerDoingTradeINFromRquest,Grade
Connect SetRequestData  to new 2 data Datajoin(Match From and ToDevice Records)  ,join records from SetRequestData component
and DD based  on From and To device Condition ,if the condition matched pls map below properties from DecisionData to main path
Multiplier Type
GradeAMultiplierValue
GradeBMultiplierValue
GradeCMultiplierValue
GradeDMultiplierValue


GradeAMultiplierValue
GradeBMultiplierValue
GradeCMultiplierValue
GradeDMultiplierValue
GradeZMultiplierValue
CohortID
Transactiontype
TypeOfCustomerDoingTradeIN
StartDate
EndDate
Enabled
Override
Add new Set Property(Set the Grade Value) and find which Grade Value To use
Set
.ValueInteger1=@if(@contains(.Grade,"A"),.GradeAMultiplierValue,@if(@contains(.Grade,"B"),.GradeBMultiplierValue,@if(@contain
s(.Grade,"C"),.GradeCMultiplierValue,@if(@contains(.Grade,"D"),.GradeDMultiplierValue,@if(@contains(.Grade,"Z"),.GradeDMultipli
erValue,0)))))
Calculate the Enhancedprice
,.ValueInteger=@if(.MultiplierType=”Static”,.ValueInteger1,@if(.MultiplierType=”Bonus”,sum(.ValueInteger1,.ValueInteger2),@if(.Multi
plierType=”Multiplier”,sum(divide(.ValueInteger2,.ValueInteger1),.ValueInteger2),””)


1352
Set Price="PriceExclVAT="+.ValueInteger+";"
Add a filter and check the TransactionType and TypeOfCustomerDoingTradeIN From the request and from DD
.TransactionType =TransactionTypeFromRequest && TypeOfCustomerDoingTradeIN=TypeOfCustomerDoingTradeINFromRequest
Add one more filter and Check Enabled and Start and End Dates Check,.pyIsActive&& .Enabled
Add SetPropety(Set CohortType) and set .CohortType=”TradeIN”
Create new SubStratgey EvaluateCohortsForTradeIN
Enable External Input
Add CustomerCohorts Decision data and connect from External input.and use ChortType=ChortTypeCheck
Add a new Filter(Active Cohorts) and check
@AOMUtilities.CalculateNumberOfDaysFromToday(.CohortActivenessStartDate)>=0&&@if(@AOMUtilities.IsNullOrEmpty(.CohortA
ctivenessEndDate),true,@AOMUtilities.CalculateNumberOfDaysFromToday(.CohortActivenessEndDate)<0)
Create new SubStrategy EvaluateChortsByContractDates and connect from above filter
Enable ExtrnalInput
Add new Set Property and Set .Eligibile=Check both start and end dates are valid
and connect to the results
Add 2 filters ,if CohortID is null directly connect to set property component
2nd filter check if cohortID not null connect to EligibleCohorts
Add a new Datajoin and connect between PyActive check filter and EvaluateCohortsForTradeIN and Match with CohortID ,if matches
move forward ,else make it as in Eligible
Add 2 filters ,first filter check overide==True ,2nd Filter check overrid==False
Add a switch ,and add below condtion
OverrideAvailable.pyName!="" --Override available ,else override not available


OverrideAvailable.pyName!="" --Override available ,else override not available
Add a Grop By component and pick the top WBW rule whose enhanced price is more
Add a Priortize  component ,to Achieve ArbitrationRules
Priortize based on the Enhanced Price(.ValueIntenger) and pick 1 the one with highest enhanced price.
Update  PopulateOutputPropertiesForGetNBA Strategy
Add new Substratgey and connect from “SetPriceForGetNBA“ Component
Update the Datajoin (Match the PaymentMethod),in the property mapping  ,map .ValueInteger2=.ValueText1
Connect the new SubStrategy To the results


1353
Assisted Upgrade -Stock Control for Device Recommendation

HL Requirement
Logic recommendation & Commercial recommendation flows should include stock check for device
If stock is not avaliable for device, device should not recommended.
But if there is an error calling GSA, device can still be presented but Stock status will set as Unknow.
For Refine by scenarios, if no device with stock is found, no recommendation should be made; an error message should be set
/presented.

Impacted Areas
Logic Recommendation Flow Update
Update Strategy -GetRecommendedDevice
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457361044688995&cot=14 -
Update Strategy - GetRecommendedDevice (new name: GetRecommendedHandset)
Sort all devices coming from BDC and PC
By RecRank for BDC (As-Is)
By Model, Storage and Colour for RefineBy (PC). 439216 Display a message if the device selected in the ‘Refine by’ is out of
stock
484075 GSA Fails  in the Recommendation Screen when 1st loading the
application or when performing a Refine By439194 Recommendation - ensuring that devices that are out of stock are
not recommended
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No
UI/VADR Yes Present “?” icon in case of error calling GSA. Area Yes/No Comments
Connect your Miro account


1354
Call substrategy GetStockDetails. Stock details will be populated for BDC branch if NBAAMode is “NBAA” else for RefineBy branch.
Filter devices with a Stock Quantity Value > 0 || Quantity Status="Stock Details Unavailable" || (Quantity Value = 0 && (Quantity
Status="Preorderable“ || Quantity Status="Backorderable“ ))
Select the Top 1 device by rank with stock.
Set Error Messages based on records coming from GetStockDetails
Get max Stock Quantity
Set Error Messages depending on NBAAMode, Quantity and Quantity Status
( if(NBAAMode="RefineBy" & .QuantityStatus <> "Stock Details Unavailable" & .Max Quantity=0 & Quantity Status <> "Preorderable“
& Quantity Status <> "Backorderable“ ,"Out of Stock",""))
Populate device information from ResetModelDetailsTemp component for selected top device.
Set .ErrorMessage in the output
Update Strategy - OrderDeviceListForRecommendedDevice
Order devices by Model, Storage and Colour (similar to OrderDeviceList)
Update Strategy - IdentifyLogicRecommendation
Check GetRecommendedDevice (GetRecommendedHandset) output,
if error message is set, do not run tariff & discount logic connect to Result
Update Strategy -CalculateUpgradeDeal
if error returned from “IdentifyLogicRecommendation” is set,  “no recommendation”  record should be retuned.  Error message populated
in IdentifyLogicRecommendation should be available in the output.
do not run DedupeSameRecommendations & CalculateNetRevenue logics .
return “No recommendation “ with error message coming from IdentifyLogicRecommendation

Update Strategy-IdentifyBestInboundCCTreatmentsForSubscription
if “no recommendation” from CalculateUpgradeDeal & error message is set, pass error message coming from CalculateUpgradeDeal (
do not override)


do not override)
No recommendation case should always be available in the output
Update Strategy -DecomposeRecommendation
Remove GetStockDetails as stock details populated in CalculateUpgradeDeal.
Remove “Stock Data is Provided“ filter
(Simulation data transform (GSA Simulation Response) should be set accordingly for tests, In case of GSA Service error Stock Location
will be set as “Stock Details Unavailable” for all the provided product codes - GetStockDetails)

Commercial Recommendation Flow Update
In the case of a Commercial Recommendation, if the recommended device is out of stock, then drop the related commercial
recommendation.


1355
Update IdentifyCommercialRecommendations
Remove GetStockDetails Substrategy
Remove StockDataisProvided filter

Update GetProductDetailAndEvaluateCompatibility
In the Handsetpath, after CheckHandsetLoanEligibility add GetStockDetails strategy to get the Stock details and
Add Filter to check Stock availability if GSA Service is successful or if GSA Service is failed
Stock Quantity Value > 0 || Quantity Status="Stock Details Unavailable" || (Quantity Value = 0 && (Quantity Status="Preorderable“ ||
Quantity Status="Backorderable“ ))


1356
Assisted Upgrade -Exclude APD from Update Max Discount Calculation

HL Requirement
The Max discount calculation in Logic recommendation flow should not pick additional plan discount.As this discount has differs eligibility
criteria.
The Max discount calculation on Tariff Tab should also ignore additional plan discount. (No metter customer is eligible for APD or not)

Update Strategy CalculateMaxDiscountForTariff & ApplyDiscountBlock

https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457359713413900&cot=14 -

Update Strategies to exclude Additional plan discount from the  D_DiscountsForTariff list.
Additional plan discount product code  is a AOM business config.  Access AOM business config to get product code. (Configuration can
have multiple product codes comma separated)
 442372 Additional Plan Max Discount
Connect your Miro account


1357
Assisted Upgrade-Display Secure Net

HL Requirement
UI to present related icon & message if tariff in recommendation has secure net.
Logic will include this information to Airtime Plan  benefit details for GetRecommendation & GetProductList Flows

Impacted Areas

Get Recommendation Flow Update
New Strategy -CalculateSecureneNet
Create a new strategy for the logic that calculates secure net cost for list of tariff in CalculateNetRevenue strategy
Update Strategy-CalculateNetRevenue
Remove secure net cost calculation & make sub startegy call to CalculateSecureneNet
Update “Get SecuredNetDiscountCost” data join  Set HasSecureNet=True or matching records.

Update Strategy-CalculateUpgradeDeal
Update “Get Net Revenue” data join489658 Secure Net in the 'Airtime Benefit'439914 Display secure Net
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No
UI/VADR Yes Show related icon on UI if BenefitProducts contains
“Secure Net: Included in airtime plan, free for the first 3 months”Area Yes/No Comments


1358
if HasSecureNet =true Set HasSecureNet BenefitProduct= BenefitProduct +”?” +”Secure Net: Included in airtime plan, free for the first 3
months”  (separator is TBC)
Get Product List Flow Update
Update Strategy -PopulateOutputPropertiesForTariff
Update strategy to query secure net details for Tariffs.
Make sub strategy call to CalculateSecureneNet for list of tariffs
Populate HasSecureNet flag to Tariff records for matching records
if HasSecureNet =true Set HasSecureNet BenefitProduct= BenefitProduct +”?” +”Secure Net: Included in airtime plan, free for the first 3
months”   (separator is TBC)

Update Strategy -GetListOfActiveTariffs  (Bug fix)
populate BenefitProduct from Product catalog

Update Strategy-GetTariffList (Bug fix)
populate BenefitProduct & BenefitAdvt   on to BDC record from PC data (Exclude Ineligible Tariffs data join)


1359
Assisted Upgrade -Add Bars Tab

Impacted Areas
Configure Product Attributes for Bars
Use PM tool to configure product attributes
Assign Sellable, SellableChannels,SellableTeams product attributes to Bar product.
New Strategy -GetBarList
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457361862653147&cot=14 -
Get Sellable List of bars from D_SellableBars
Populate
ProductName
ProductCode
Import Mobile Service Root product for Customer & Get list of child product > If customer has an bar activated it will be available in the
child product list.
Match list of Sellable bars & with customer child products
set IsCurrentlyActive=true for matching records
PopulateOutputPropertiesforBars
ResponseType=”Item”
ProductRecommendationType=”Bars”
DisplayName=ProductName
Update Strategy- GetProductList
If product Type =”Bars” make sub strategy call to GetBarList402460 Add Bars tab
PM Tool No
PM Tool KT Documentation Yes  Configure  sellable bars
Knowledge Transfer No
App Yes  New data page for Bars
IsCurrentlyActive attribute added to Get product list output.
DB No
UI/VADR Yes New TabA r e a Y e s / N o C o m m e n t s
Connect your Miro account


1361
Assisted Upgrade -Add Accessories Tab

Impacted Areas
HL Requirement
Current upgrade recommendation  (commercial or Logic) doesn’t to include Accessories > no change to it.
But user will be able to add Accessories in edit mode.
List of sellable  Accessories should be listed & Accessories should be include in Nerrevenue.
Configure Product Attrbiutes for Accessories
Use PM tool to configure product attributes
Assign Sellable, SellableChannels,SellableTeams product attributes to Accessories product.
Create new Attribute “PromotionDetail” → will be used to configure offer details for Accessories.(Free text attribute)
New Strategy -GetAccessoryList
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457361869666081&cot=14 -
Get Sellable List of Accessories from  T B C
Populate
ProductName -PC
ProductCode -PC
Classification- PC -acc_type486199 Being able to to maintain accessory offer in PM Tool465033 Edit tab- Accessories
PM Tool No
PM Tool KT Documentation Yes  Configure sellable Accessories  (checks product attributes for sellable flags)
Configure Offer Name for Accessories
Knowledge Transfer No
App Yes New data page for list of sealable Accessories
New data page - get Accessories details coma separated list is input
Update GetProductList output  to include  PromotionDetail,

DB No
UI/VADR Yes New TabA r e a Y e s / N o C o m m e n t s
Connect your Miro account


1362
PromotionDetail -Product Attributes (PromotionDetail)
CostIncludingVAT-PC
CostExVAT-PC
PopulateOutputPropertiesforAccessory
ResponseType=”Item”
ProductRecommendationType=”Accessory”
DisplayName=ProductName
Update Strategy- GetProductList
If product Type =”Accessory” make sub strategy call to GetAccessoryList

Update Strategy - CalculateNetRevenue
Update Group By RecommendationID-
Set AccessoryCost = if ProductRecommendationType ="Accessory" Sum(CostExVAT-EquipmentcostToVodafone)
Upddate NetRevenue formuala add AccessoryCost
Update Strategy - CalculateBasketFinancials
Add Path for Accessory > @String.equalsIgnoreCase(.ProductType,"Accessory")  (Line item )
Populate  EquipmentcostToVodafone   from data page ( T B C ) for list of accessories in the input.
Connect to “Inputs for CalculateNetRevenue”  > so will be considered for net rev calculation
Update Strategy -ValidateBasket
Add Path for Accessory > @String.equalsIgnoreCase(.ProductType,"Accessory")  - No validation yet, (Line item )connect to Whole
basket.


1363
Assisted Upgrade- Max Discount Presentation for Fixed Tariffs

HL Requirement
If a tariff presented is fixed tariff or there is device in the deal as fixed, customer can not  get to any toolkit discount.
The max discount calculation should be skipped for this case and logic should return as MaxDiscount as “-1”
UI will  present Max discount according to Tariff is promo or not
İf promo > show promo discount
İf not > show max tool kit discount
UI will present hover message conditionally

Update Strategy  -GetTariffList
Update “RecommendedDeviceCode” set operation
Set HasFixedDevice =True > if Handset in Basket > F i x e d P r i c e = True
Update -CalculateMaxDiscountForTariff
Skip logic to calculate Max discount 442106 Fix or Flex - Max Discount
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No
UI/VADR Yes Show related message & value on UIA r e a Y e s / N o C o m m e n t s


1364
if .RecommendedTariffIsFixed =True  or HasFixedDevice
Set MaxDiscountAmount =-1
Set DiscountType=”Percentage”


1365
Assisted Upgrade - Watch Recommendation -Part1
HL Requirement
Get Recommended Device for Watch
 Watch is a new device type falling under GetRecommendation API. Only logic recommendations will trigger this flow. A separate path is
identified based on the watch customer flag. This design page will define how to identify the watch device details.
Impacted Areas
Update To Offer Catalog
Introduce a new Tariff offer for Watch Journey & related configurations.
Recent offer catalog link
PM Tool Configuration for Watch :
It is possible to manage the following information in PM tool as business meta data.483065Watch - Refine By
478221Selected Deal- Watch
483062Watch - Business Rules
3 4 2 4 2 7 Add Cost to refine by482990/483043 Watch: Logic Recommendation
App Yes GetRecommendation/GetProductList API will
provide
PrimarySubscriptionId: Type: String
Update Subscription class add a new
attribute PrimarySubscrition type:
Subscription

DeviceCost(as range) will be Refineby
parameter added to GetRecommendation
API
Logic yes update to existing flow
PMTool Yes PC Meta data – Configure Product catalog.
UI Yes Conditionally show different attributes for
watch journey.Area Yes/No Area


1366
Watch & Handsets will be stored in Handsets data coming from PC data.
So existing product attributes configured for Handset Product will be re used for Watch as well.
Watch Business  Name  ('As Is') - DeviceName
Watch Colour ('As Is')-DeviceColour
Watch Size:  a New field used to detail the watch size if relevant (44 mm, 40 mm etc..) -TEXT-DeviceSize
Device Type ('As Is') -TEXT-DeviceType
Device Sellable flags ('As Is') -Boolean
Update Data Flow -PrepareDataForGetRecommendation
DF need update to include Primary subscription details for watch subscription .
Primary subscription product holding (coming form GPSL) & recent used device data data will be used   in logic to identify which device
to offer & which discount to offer.
GetCustomer service will query GPSL at account level & will store all details of each subscription to Subscription XCAR data at
subscription level.
For watch customers Primary subscription & watch subscription will be separate records.
Watch upgrade process will start for Watch subscription, if PrimarySubscriptionId is populated for upgrading line , it will indicate it is a
Watch subscription.
DF will use this indicator & conditionally  compose with XCAR data set to populate PrimarySubscrition data form Subscription XCAR
Add a new Compose
Skip Skip compose operation if  PrimarySubscriptionId= ““
Compose when conditions
Subscription XCAR.SubscriptionId= PrimarySubscriptionId
Add a new source Subscription XCAR
Example Subscription XCAR  data :
Each subscription will hold it’s own product details in RootProduct.
Update Strategy - CalculateUpgradeDeal
Skip CommercialRecommendation calculation if it’s a Watch subscription.
Set IsWatchSubscription flag based on the PrimarySubscriptionId <>""
Select IdentifyLogicRecommendation strategy if IsWatchSubscription and don’t Execute CommercialRecommendations for this flow.


Select IdentifyLogicRecommendation strategy if IsWatchSubscription and don’t Execute CommercialRecommendations for this flow.
else condition will be AsIs.
Miro Reference:https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457355568798744&cot=14 -

 RootProduct(2) Handset Handset product -
handset  details (optinal)
Watch Subscription
 Sub2
 RootProduct(1) Mobile Service Watch Tariff
RootProduct(2) Handset Handset product  -Watch
details- (optional)Primary Subscription
 Sub1
 RootProduct(1) Mobile Service Tariff Details  (Simo
/handset/bingo Tariff)
Connect your Miro accou
nt


1367
Update Strategy - PickBestPathway
If it’s a Watch subscription pick the “ToWatch” pathway else execute  as is flow

https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457360546837687&cot=14 -
Update Strategy - IdentifyLogicRecommendation
Create a new sub strategy IdentifyDeviceRecommendation (future we may add new device types to this strategy) Logic
recommendation strategy is updated to place a separate path for IdentifyDeviceRecommendation  (where we will get Watch-related
device/tariff/discount Details.
Rename “GetRecommendedDevice” as “GetRecommendedHandset”
Update logic to skip existing flow for Watch customer
Check Topathway =ToWatch.  if Yes, Execute IdentifyDeviceRecommendation otherwise Execute AsIs.
IdentifyDeviceRecommendation will connect to decompose. (Use switch before decompose section to avoid execution of unnecessary
components)
Miro Refrence: https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457355571451203&cot=14 -

New Strategy – IdentifyDeviceRecommendation
Created this strategy to identify deal details for  for Watch, Tab, etc.
This strategy will calculate Device,Tariff & Discount for the deal.
Currently, it will have only watch flow as below
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457362294295217&cot=14 -

New Strategy – GetRecommendedWatch
https://miro.com/app/board/o9J_lQFRbIs=/?moveToWidget=3074457362294442011&cot=14 -

Check Loan Eligibility


Check Loan Eligibility
If not eligible for loan skip Identify Manufacturer & Identify Watch list steps & no watch will be recommended but still Tariff will be
recommended  .(use CheckHandsetLoanEligibility sub strategy)
Identify Manufacturer (only executed If Primary.Context(SecondaryContext) <> “RefineBy“ )
Identify the manufacturer of the watch by checking if the upgrading line has a handset
Import RootProduct for upgrading line (subscription in context),
 filter with Handset fulfilment item code,
Group by PromotionID- will give all handset products.
Set this list as SKU list and get the manufacturer details from data page  D_Sellablepaymhandsetsbysku.
If no handset for upgrading line  from GPSL
Check Primary Subscrition Handset Details from GPSL
Use PrimarySubscrition.RootProduct , apply similar flow described for upgrading line in above
If no handset details available for Primary Subscription
Connect your Miro account
Connect your Miro accoun
t
Connect your Miro account
Connect your Miro account