1743
Assisted Upgrade - Ensure that the stock check is performed for duplicated
devices when launching the device tab
HL Requirement
At present, stock is only displayed for the top 5 devices that are presented at the top of the list but the stock is not repeated in the long list of
devices for these handsets. Business like to ensure that the stock is presented in both places.
Impacted Areas
Update Strategy - PopulateOutputPropertiesForDevice
Rename “First5DevicesinBasketandBDC” to “BDCDevices”
Update “BDCDevices” filter to include only BDC devices i.e., .ValueText1 != "".
 816136 Ensure that the stock check is performed for duplicated devices
when launching the device tab
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  A r e a Y e s / N o C o m m e n t s


1744
Assisted Upgrade - Update the wording of the tariff incompatible warning icon
Impacted Areas
Update Strategy - ValidateBasket
Update Tariff incompatible message in StatusDetail to "The tariff is not compatible with the selected basket" (SetProperty:
TariffIsInCompatible)
 816139 Update the wording of the tariff incompatible warning icon
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  A r e a Y e s / N o C o m m e n t s


1745
HBB-Query Eligible VF Together Offers
HL Requirement
VT Together offers are discounts that customer can get incase of specific tariff or products they have if their HBB line is eligible.
Those rules are configured in Siebel & feed to AOM through offer catalog spines.
Platform team has already created a data page to calculate which VF Together offers customer can get, if customer change their tariff to
a specific tariff .
Requirement is to populate the discount provided by  VF Together offer for each tariff recommended from AOM .
Update Strategy – GetDiscountsForHBB
Include GetEligibleVFTogetherOffersforAccount as a substrategy to verify VFT for eligible tariffs.
If we have eligible VFT, The Retention discount will be updated else AsIs
New Strategy -GetEligibleVFTogetherOffersforHBB
 821140 Check if the HBB customer is eligible for VFT821168 Modify the HBB Discount to include the VFT discount
PM Tool No
Logic Yes
Knowledge Transfer No
App Yes  Populate New Property for the subscriptions
within the XCAR to define VFTQL or not.
DB No  Area Yes/No Comments


1746
This strategy is to query eligible VF Together offer details for a list of recommended tariffs
Check if the upgrading HBB subscription (promotion id from the GPSL Product Root with FIC "Mobile Service" subscription) is
associated with any of the calculated VFT offers.
If there is a VFT qualifyingline associated with the HBB subscription then,
Retrieve the value of the VFT discount using the offer details and the discount product catalogue. Reduce the retention discount value
by the value of the VFT discount.
e.g. if the retention discount is £7 and the VFT discount is £3, the retention discount is reduced to £4. If the retention discount is
reduced to zero or a negative value No Discount.
Check if Customer has CanQualifyVFTogether(will confirm by app team) attribute
Use XCAR data to access it
If Customer does not qualify - return no record
else Query D_CalculatedOffersForUpgrade data page for each RecommendedTariffCode
Input : Upgrading MSISDN, Account Number,(coming from context),Department, Channel, TariffId
Output : List of VT Together Offers customer eligible , with details of which subscription get a reward which subscription is the qualifying
line.
Populate Discount amount Sr attribute from data page. (SR attributes are the ones need service spec)
Set RecommendedTariffCode = with the tariff query is made.
Populate IncludesCombiBundleOffer sr attribute True from D_EligibleTariffsForDept if CanQualifyVFTogether attribute is true to show the
logo.
Populate output properties strategy should be populated with all necessary attributes.
Assumptions:
VF Together Offer indicator & “More Info Section”
VF Together offer details of the new tariff is provide with offer section > UI use this information & Shows VF Together logo & VF
Together offer details.


Together offer details.
If customer loose existing VF Together offer upgrading to new tariff, related message is shown on UI.
No need to display offer section in GPL response.


1747
Product visibility for different journeys and different channels
HL Requirement
Business wants AOM must be able to support different products for different journeys within the same channel as well as being able to
support different products for different channel.
To ensure that configuration is supported for all order types and journey combination the sales channel and order type configurations
need to be combined into a single configuration item.
Impacted Areas
 Changes:
Logic needs to update for all the impacted strategies which are consuming the below Datapages.
The Current logic implementation is considering the below parameters while importing datapages:
Updated logic will use as below:786049 Being able to support different product visibility for different journeys
and different channels
App Yes Modification to the AOM product catalogue
data pages to transform the sales channel
and order type input parameters to support
querying the new Sellable Channel Order
Type business owned metadata
configuration
Logic Yes Configuration of a new business owned
metadata for any impacted Strategies.
PM Tool YES Configuration of business meta data. on
product attributes.
the new combined property should be
NotSellableBy. Area Yes/No Comments
Tariff A TRUE InboundCC | Web Upgrade | Flex Upgrade | New
AcquisitionProduct  is Sellable Sellable Channel Order Type
Tariff A TRUE InboundCC_Upgrades |
InboundCC_FlexUpgrade | Product  is Sellable NotSellableBy


1748
logic need to feed  two properties as input parameters for all the datapages. So, we need to Identify the strategies where we dont have the
Sellable channel and order type as input parameters to access data page.
This is required for data pages supporting the following product types: 1. Tariffs (plans), 2. Add Ons, 3. Devices, 4. Discounts.
Sellable Configuration
Use PM tool to map listed attributes to Addon product
Impacted Datapages are below:
D_SellablePaymHandsetBySKU
D_SellablePaymHandsets
D_SellableBars
D_SellableAccessories
D_SellableAccessoriesByIdentifier
D_ServicesForTariff
D_DiscountsForTariff
D_EligibleTariffs
D_EligibleTariffsForHandset
D_InsurancesForHandset
Impacted Strategies with above change:InboundCC_Acquisition | Web_Upgrades |
Web_FlexUprgade | Web_Acquisition
Tariffs NotSellableBy
Addon NotSellableBy
Devices NotSellableBy
Discounts NotSellableByProp Type AttrbiuteName
D_SellablePaymHandsetBySKU GetRecommendedDevice
GetRecommendedHandset
GetUpgradeTariffListforWeb
GetWatchDevice
IdentifyManufacturer
D_SellablePaymHandsets GetDeviceList
GetRecommendedDevice
GetRecommendedHandsetData page Impacted Strategies


1749
GetRecommendedWatch
GetWatchDevice
TriggerDataPages
D_SellableBars GetBarList
D_SellableAccessories GetAccessoryList
D_SellableAccessoriesByIdentifier ValidateBasket
D_ServicesForTariff CalculateEntertainmentFlag
CalculateNetRevenue
CalculateSecureNet
EvaluateServiceCompatibility
GetAddOnListForEditDeal
GetAutoAddedAddonsListDetails
GetPromotionalAddonsListDetails
IdentifyAutoAddedAddons
IdentifyPromotinalAddons
D_DiscountsForTariff ApplyDiscountBlock
CalculateDiscountForWatch
CalculateDiscountListForWatch
CalculateMaxDiscountForTariff
EvaluateDiscountVisibilityCompatibility
GetAutoAddedDiscountsListDetails
GetAutoAddedFBBEOCDiscount
GetAutoAddedHBBDiscount
GetAutoAddedHBBDiscount
GetDiscountList
GetPromotionalDiscountsListDetails
IdentifyAutoAddedDiscounts
IdentifyAutoAddedHBBDiscount
IdentifyPromotinalDiscounts
SecondLineDiscountCompatibility
D_EligibleTariffs EvaluateTariffVisibility
GetAllTariffs


1750
List will increase- need to do more analysis on impacted strategies.GetDataSIMOTariffs
GetHandsetTariffs
GetListofActiveTariffs
GetListofEligibleHBBTariff
GetSIMOTariffs
GetWatchTariffList
D_EligibleTariffsForHandset EvaluateTariffToHandsetCompatibility
GetDongleTariffsForSKU
GetHandsetTariffsForSKU
GetTabletTariffsForSKU
D_InsurancesForHandset GetInsuranceList


1751
Create new Offer metadata items for use in logic
Impact in Other areas
 Dependencies
Logic Changes:
A. Update Offers decision data structure for all Issues + PM Changes810173 Create new Offer metadata items for use in logic
PM Tool Yes  Need new columns in Offer Screen
PM Tool KT Documentation No
Knowledge Transfer No
App No  Need to extend IH Class and Data Transforms
DB No  Need to extend IH view and ExtractArea Yes/No Comments
PM Tool Yes   Need new columns in Offer Screen
App No  End to End testing need this changes
DB No   End to End testing need this changesArea Yes/No Comments
Loyalty Offers
TradeIn Offers
Retain Offers
Retention Offers
Engagement Offers
Care Offers
Upsell Offers
Renew Offers
Service Offers
HBB Offers
CrossSell OffersBusiness Issue Group


1752
Create below 2 SR properties
OfferCategory (Text)
ProductGroup (Text)Create below 2 SR properties
Add the below new SR properties to Offers DDS
OfferCategory (Text)
ProductGroup (Text)
Note: Above are the Initial LOV’s ,which need to be configured in pm tool
B. Update Strategy ApplyOfferDataToOfferToOfferVariations
Update 'MapOfferDataToOfferToOfferVariations' Datajoin by mapping as below
.OfferCategory  = .OfferCategory
.ProductGroup = .ProductGroup
C. Update Strategy ApplyOfferVariationsDataToTreatments
Update 'MapOfferVariationsDataToTreatments' Datajoin by mapping as below
.OfferCategory  = .OfferCategory
.ProductGroup = .ProductGroup
D. Update Strategy PopulateOutputPropertiesForGetNBA
Update the Filter 'Additional Line Filter' with below Condition
@String.contains(.OfferCategory,"ADDITIONAL LINE") && @String.equalsIgnoreCase(.Channel,"Web") &&
@String.contains(.ProductGroup ,"Mobile")
Update the filter 'Not Additional Line Filter' with below condition
!(@String.contains(.OfferCategory,"ADDITIONAL LINE")) ||  !(@String.contains(.ProductGroup ,"Mobile"))
Note: Make sure 2ndline offers are updated with above offer data ,before testing
D. Update Strategy AdditionalLinePropositionsLookup
Add a filter Component 'Offer Category and ProductGroup Check' after Proposition Import and add below condition
@String.contains(.OfferCategory,"ADDITIONAL LINE") && @String.contains(.ProductGroup ,"Mobile")
 Additional Line Mobile Voice
Upgrade Mobile Broadband
Add On Home Broadband
Migration Fixed Landline
Campaign Other
Information
Functional
Trade In  Initial Offer Category LOV Initial Product Group LOV


1753
Channel Management -Email
Impact in Other areas
Dependencies

Logic Changes
A. New Data Set - BestEmailTreatmentsForChannelManagement
Create a new C* Data Set BestEmailTreatmentsForChannelManagement on SR class with following keys -
pySubjectID
pyName
OfferID
TargetSubChannel
OfferVariant
TreatmentVariant
SegmentKey840685 Bundling & Integration with App840685 Introduce new sub channel - IMI
App Yes  As per App design

DB No
Knowledge Transfer No
PM Tool Yes  As per PM
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool Yes  PM tool to create two new SubChannels Mailjet and IMI For Channel Email
App Yes  Logic E2E test can be done once app work is completed
DB No  Area Yes/No Comments


1754
B. New Data Set - UniqueListOfEmailCustomersForChannelManagement
Create a new C* Data Set UniqueListOfEmailCustomersForChannelManagement on Subscription class with only one Key as CustomerID
C. New Data Flow - ProcessEmailByBatch
Source - Abstract
Primary Destination - Data Set - BestEmailTreatmentsAfterControlGroups
Filter for Primary Destination - “Email By Pega Marketing“ and evaluate true if
TargetSubChannel= Mailjet otherwise returns false
Add Branch for secondary destination - Data Set - BestEmailTreatmentsForChannelManagement
Filter for Secondary Destination - “Email By Channel Management 1“ and evaluate true if TargetSubChannel= IMI otherwise returns
false
Add Branch for secondary destination - Data Set - UniqueListOfEmailCustomersForChannelManagement
Filter for Secondary Destination - “Email By Channel Management 2“ and evaluate true if TargetSubChannel= IMI otherwise returns
false
D. Update Data Flow - ProcessOutbound
Replace the destination on “Email Treatments” branch from Data set - BestEmailTreatmentsAfterControlGroups with new Data flow -
ProcessEmailByBatch


1755
F. New Data Flow - ProcessEmailByChannelManagement
Source - UniqueListOfEmailCustomersForChannelManagement data set
Merge with Data Flow - PrepareDataForChannelManagement
Join on CustomerID
Default path = Secondary
Compose with Data set - BestEmailTreatmentsForChannelManagement
Join on pySubjectID = CustomerID
Into property TreatmentList
Call Strategy PrepareEmailTreatmentsByChannelManagement
Primary Destination data set EmailCustomersWithParentTreatmentsForChannelManagement
Filter for Primary Destination - “Email Parent Offers“ and evaluate true if (.BundleParent= true) || (.BundleParent= false && .Hierarchy=
"Independent") otherwise returns false
Add branch - secondary destination - data set - EmailCustomersWithChildTreatmentsForChannelManagement
Filter for Secondary Destination - “Email Child Offers“ and evaluate true if (.BundleParent= false && .Hierarchy != "Independent")
otherwise returns false
Add branch - secondary destination - data set - pxInteractionHistory
Add branch - secondary destination - data set - IH Reporting
G. New Strategy - PrepareEmailTreatmentsByChannelManagement
Copy strategy PrepareEmailTreatments and save it as PrepareEmailTreatmentsByChannelManagement.
Update filter component ‘Eligible Email Treatments’ to add condition .TargetSubChannel = "IMI".


1756
After component ‘Import Email Treatments’ import decision data "TreatmentToSubChannels" using Decision data component with
condition .pyName = TreatmentName. Uncheck Automapping to enable Additional mapping, map .TargetSubChannel =
TargetSubChannel.
Add Filter component with condition TargetSubChannel = “IMI”, to select only treatments assigned to subchannel IMI.
connect Filter condition to existing Set Property component ‘Treatments Proposition Import’.
Add Set Property component ‘Parent Without Child’ and set .Hierarchy= "Independent" , connect it to Data join
‘FindParentChildDuplicates’.
Replace import sub strategy ‘PopulateOutputPropertiesForEmailByBatch’ with new strategy
‘PopulateOutputPropertiesForEmailByChannelManagement’.
H. New Strategy - PopulateOutputPropertiesForEmailByChannelManagement
 Enable external Input.
Add a filter condition ‘Parent offers’ with condition  (.BundleParent= true) || (.BundleParent= false && .Hierarchy= "Independent").
Add a filter condition ‘Child offers’ with condition  (.BundleParent= false && .Hierarchy != "Independent").
In child Offers path add set Property ‘Set Child Rank’ and map .ChildRank = .Rank.
Call external strategy NameValidation.
Add Set Property component ‘Set Contact Details’ after Filter component ‘ParentOffer’, DeliveryDetails should only be updated for
Parent Offers.
Add properties
.FirstName NameValidation.FirstName
.Surname NameValidation.Surname
ServiceNumber Primary.ServiceNumber
BillingAccountNumber Primary.BillingAccountNumber
pyEmailAddress Primary.CustomerAccount.Contact.EmailAddress
Title Primary.CustomerAccount.Contact.Title
MMSMarketingConsentFlag Primary.MMSMarketingConsentFlag
SMSMarketingConsentFlag Primary.SMSMarketingConsentFlag
LocationDataConsentFlag Primary.LocationDataConsentFlagProperty Name Value


1757
Add component Set Property ‘Set Property for Actions’ and add property Scenario = "Default"
Connect the Filter component ‘Child offers’ to Set Property Set Property for Actions.
Add a call to external strategy ImportAllT2TVAttributes ‘ImportT2TVariationAttributes’
Add Data Join component ‘Join Treatment Attributes’ with component ‘ImportAllT2TVAttributes’  and  check condition for
TreatmentName, OfferVariant, TreatmentVariant, TargetSubChannel and Scenario from ImportAllT2TVAttributes with source.
check the Exclude source component results that do not match join condition.
In Properties Mapping map TreatmentAttributes = TemplateDetails.TrafficDataConsentFlag Primary.TrafficDataConsentFlag
ProfilingConsentFlag Primary.ProfilingConsentFlag
EmailMarketingConsentFlag Primary.CustomerAccount.Contact.EmailMarketingConsentFlag
AccountPool "BatchNBA"
ValueInteger1 @AOMUtilities.GetCachedAOMConfigValue("ThrottlePartitionSize","
Email",false)
PartitionKey @AOMUtilities.GetNextPartitionKey("Email",.ValueInteger1)


1758
call External strategy PopulateSquadSpecificOutputProperties
Connect to Result component

H. Update Strategy - PrepareEmailTreatments
Update filter component ‘Eligible Email Treatments’ to add condition .TargetSubChannel = "Mailjet". updated condition will look like
After component ‘Import Email Treatments’ import decision data "TreatmentToSubChannels" using Decision data component with
condition .pyName = TreatmentName. Uncheck Automapping to enable Additional mapping, map .TargetSubChannel =
TargetSubChannel.
Add Filter component with condition TargetSubChannel = “Mailjet”, to select only treatments assigned to subchannel Mailjet.
connect Filter condition to existing Set Property component ‘Treatments Proposition Import’.
I. New Strategy - IdentifyTreatmentSubChannelForEmail
Enable External Input


1759
Import decision data "TreatmentToSubChannels" using Decision data component with condition .pyName = TreatmentName. Uncheck
Automapping to enable Additional mapping, map .TargetSubChannel = TargetSubChannel.
Connect to Result component.
J. Update Strategy - PopulateOutputProperties
Call sub-strategy - “Identify Treatment SubChannel For Email” between filter component - Email Channel and Result.


1760
Channel Management Email Seed Testing

Impact in Other areas
Dependencies

Logic Changes
A. Update Strategy - GetPropositionDataForTreatment
Remove connection from Filter component ‘SelectTreatment’  to  component ‘SetIsParentTreatmentFlag’  and create two separate paths
after Filter component ‘SelectTreatment’.
Add Filter component ‘Non Email’ with condition .Channel !="Email" in main path after Filter component ‘SelectTreatment’ and connect it
to component ‘SetIsParentTreatmentFlag’.
Add Filter component ‘Email’ with condition .Channel ="Email" in alternative path from Filter component ‘SelectTreatment’.
Call external strategy ‘IdentifyTreatmentSubChannelForEmail’ after filter component ‘Email’  and connect it to component
‘SetIsParentTreatmentFlag’.803541 Do not queue comms to seeds803540 Use seed testing
App Yes  As per App design

DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App Yes  Logic E2E test can be done once app work is completed
DB No  Area Yes/No Comments


1761

B. New Data Set - EmailCustomersWithParentTreatmentsForChannelManagementSeedTest
Save as existing Data Set  EmailCustomersWithParentTreatmentsForChannelManagement to
EmailCustomersWithParentTreatmentsForChannelManagementSeedTest
Make sure the keys mentioned for this data set are same as below

C. New Data Set - EmailCustomersWithChildTreatmentsForChannelManagementSeedTest
Save as existing Data Set EmailCustomersWithChildTreatmentsForChannelManagement to
EmailCustomersWithChildTreatmentsForChannelManagementSeedTest
Make sure the keys mentioned for this data set are same as below

D. New Data Flow- PrepareEmailTreatmentsByChannelManagementForSeedTest
Source : Abstract (Subscription)
Merge with Data Flow - PrepareDataForChannelManagement


1762
Join on CustomerID
Default path = Secondary
Call Strategy PrepareEmailTreatmentsByChannelManagement
Primary Destination data set EmailCustomersWithParentTreatmentsForChannelManagementSeedTest
Filter for Primary Destination - “Email Parent Offers“ and evaluate true if (.BundleParent= true) || (.BundleParent= false && .Hierarchy=
"Independent") otherwise returns false
Add branch - secondary destination - data set - EmailCustomersWithChildTreatmentsForChannelManagementSeedTest
Filter for Secondary Destination - “Email Child Offers“ and evaluate true if (.BundleParent= false && .Hierarchy != "Independent")
otherwise returns false


1763
pxPriority Changes

Impact in Other areas
 Dependencies
App Changes: Make relevant changes in the class and respective data transform for the new property PriorityScore
DB Changes:
Add new Column PriorityScore (Double) in the IH fact table
IH View Update - replace the source for Priority with new property PriorityScore
IH Extract Update - replace the source for Priority with new property PriorityScore
Logic Changes:
Create new property PriorityScore of Double type
Important Note: Never use OOTB property pxPriority in the framework anymore.
In all the below strategies replace pxPriority(or Priority) property with new property PriorityScore802864 Priority Changes
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes  Need to extend IH Class and Data Transforms
DB Yes  Need to add in IH Table , IH view and ExtractArea Yes/No Comments
PM Tool No
App Yes
DB Yes  Need to add in IH Table , IH view and ExtractArea Yes/No Comments
CalculatePriority VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForTIL VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForGRPL VFUK-FW-AOMFW-Data-Subscription
ApplyBundling VFUK-FW-AOMFW-Data-SubscriptionStrategy Names Class Names


1764
Note: Changes in ProcessDiallerOutcomes strategy is not needed

Data Flow Changes:
ProcessSMSForT2S Data flow Changes: In the destination TriggerPMEvent Activity: Pass the new parameter PriorityScore to the
activity and remove old property mapping.
GetBestTreatmentsByGetNBA Data flow Changes: In the destination TriggerPMEvent Activity: Pass the new parameter PriorityScore
to the activity and remove old property mapping.ApplyBundlingForGetNBA VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForIVRSMSOnGetNBA VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForAppOnGetNBA VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForeCareOnGetNBA VFUK-FW-AOMFW-Data-Subscription
ApplyDecisionMixAtDivisionLevel VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForProcessEvent VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentForBatch VFUK-FW-AOMFW-Data-Subscription
IdentifyBestEmailTreatmentForBatch VFUK-FW-AOMFW-Data-Subscription
ApplyBundlingForMicrositeTreatments VFUK-FW-AOMFW-Data-Subscription
IdentifyBestTreatmentVariationsForSubscription VFUK-FW-AOMFW-Data-Subscription
PopulateOutputPropertiesForGetNBA VFUK-FW-AOMFW-Data-Subscription
SetPriceForGetNBA VFUK-FW-AOMFW-Data-Subscription
PopulateOutputPropetiesForGetNBAPrivatePricing VFUK-FW-AOMFW-Data-Subscription
SetCommonIHPropertiesForAllChannels VFUK-FW-AOMFW-Data-Subscription
PopulateDedupeScore VFUK-FW-AOMFW-Data-Subscription


PopulateDedupeScore VFUK-FW-AOMFW-Data-Subscription
PopulateVolumeConstraintsPriority VFUK-FW-AOMFW-Data-Subscription
PopulateDedupeScoreForT2S VFUK-FW-AOMFW-Data-Subscription
PopulateOutputPropertiesForIVRInControlGroup VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForOutboundCC VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForEmail VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForAppPush VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForSetNBA VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForMicrosite VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForSMS VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForRCS VFUK-FW-AOMFW-Data-Subscription
CaptureResponseForMMS VFUK-FW-AOMFW-Data-Subscription
ApplyControlGroupsForT2S VFUK-FW-AOMFW-Data-Subscription


1766
NBA FW - MVA - Full Screen Promo

Impact in Other areas
 Dependencies
Note: This feature is actually developed in R3.5 initially but this code was moved into R3.4 release as VF wanted.
Logic Changes:

A. create new Strategy CheckFullScreenPromo
Add External Input
Import TreatmentToSubchannel DD and Add condition as below
          .Target Subchannel=”FullScreenTakeover”
Add a Data Join and connect it from External Input. Join with TreatmentToSubchannel DD and add condition as below
.TreatmentName=.TreatmentName. Enable exclude. Add the properties mapping .TargetSubChannel =.TargetSubChannel
Connect from TreatmentToSubchannel DD Component to FSPContentionRules SetProperty
Connect from FSPContentionRules SetProperty Component to ApplySubChannelControlByExecutionMode(Existing) SubStratgey
Add a Prioritize component and name it as Prioritize FSP Treatments and Prioritize based on Priority Score and Pick Top1
Connect Prioritize Component to a set Property and name it as FSP Treatments
Connect it to Set Rank  SetProperty and add to Results860989 Introduce Full Screen Promo sub channel to the strategy
framework
PM Tool Yes  Need to Add new Subchannel for MVA
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments


1767
                  Rank=1
From the External input add Alternate path and Add a Datajoin Join on FSP Treatments from FSP Treatments with below condition
                .TreatmentName = .TreatmentName
                and Set FSPFlag=True if Matched else False
Add 2 paths from Data Join as below
1st Path , add a Filter Name as FSP True Check and add below Condition
           .FSPFlag=True
Connect above Filter To SetProperty and Set Rank = 1
2nd Path , Add a Filter and name it as FSP False Check and Check .FSPFlag=True
connect above Filter to Prioritize Component and name it as Prioritize treatments and Prioritize based on Priority score and Pick Top All
Records
Add a SetProperty and set Rank As below
         @if(FSPTrueCheck.pyName!="",.pxRank+1,.pxRank)
B. Update Strategy IdentifyBestTreatmentForAppOnGetNBA
Add new SubStratgey “CheckFullScreenPromo“ and connect it from “MaxOffersApp” Component
and Connect it to the Results
C. Update IdentifyBestTreatmentVariantForTreatment
Update the Group By component “Unique List Of Treatments“ with TargetSubchannel as well


1768
Update the Data Join “Matched Multiple Eligible Treatment Variations“ with TargetSubchannel condition
Update the Datajoin “Treatment Variations For Each Treatment“ under Embeded Stratgey to add TargetSubchannel Condition


1769
D. Update Dataflow GetBestTreatmentsByGetNBA
Add Convert Shape in the First Path of the Dataflow and map as below
Note: This change to cover the Priority Score fix , where for GetNBA we need Rank in Response and in IH we need ProprityScore


1771
NBA FW Limit Number of Recommendations

Impact in Other areas
 Dependencies
Logic Changes:
This is R3.3 Story
Note:
if No of Recommendations is not provided in GPL Payload for additional line Second Line Private Pricing then return all eligible tariffs
if No of Recommendations is provided in GPL Payload for additional line Second Line Private Pricing as 0 then dont return any eligible
tariffs
if No of Recommendations is provided >0 for example: 5 Limit the number of plans returned by GPL call for additional line according to
max tariffs value in API payload.
Limit should be applied at Offer level, not Tariff Type.
GPL for additional line should always return single offer and its associated plans. GPL Invoke expects plans related to one offer.
Update strategy PrioritizePlans:
Remove the connection between set property RankPosition and result component
Rename the set property RankPosition to RankPosition and NoOfRecommendations
Connect the set property to new empty set property called “All Prioritized Plans“640693 Respond to numberOfRecommmendations on GRPL
(Logic)
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes
DB No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments


1772
Join the new set property to new filter “Limit Number Of Recommendations“ and update the condition as
@If(Primary.Context(NO_RECOMMENDATIONS)>0,.RankPosition<=Primary.Context(NO_RECOMMENDATIONS),true)
Create one more new filter called Zero Recommendations and add condition as false
Create new Switch component named ,”Choose All Tariffs or Limited Recommendations” and select component All Prioritized Plans if
the condition (Primary.Context(NO_RECOMMENDATIONS)="")||@IsNullOrEmpty(Primary.Context(NO_RECOMMENDATIONS)) is true
else select other component Limit Number Of Recommendations if the condition
@If(Primary.Context(NO_RECOMMENDATIONS)>0,.RankPosition<=Primary.Context(NO_RECOMMENDATIONS),true) else choose
Zero Recommendations filter
Join the switch component to new set property called “All Prioritized Tariff Plans“ and join it to the result component
Update the existing data join “Associating Index As Parent Offer“ to join with new set property called “All Prioritized Tariff Plans“ and
check the checkbox for Exclude source component results that do not match join condition.


1773
Release 3.05


1774
Upgrade - Assisted MBB - Get Recommendation API

HL Requirement
xxxx
Impacted Areas817340 Sourcing the Pre S15
816019 Pre S15 calculation for SIMO
803735 Calculating Pre S15 for a Legacy MBB Device customer
791226 Net Rev Calculation - VB, GPL
791552 Display Net Rev on Cards
833210 Eligibility for MBB Customers Except Gigacube and 30 day SIMO
834204 Additional Plan Discount
829782 30 Day SIMO Upgrade Eligibility
831612 Create A Commercial Recommendation Cohort
845094 Create a Commercial Recommendation For a Cohort
835012 Post S15 Legacy Calculations - Requires analysis for other flow
833247 Star Rating
827677 Reporting of MBB Recommendation
834607 Max Discount
847320 Promo Discount
853652 MBB Fix or Flex Commercial recommendation
850243 Display Device Upfront Cost in the Device tab on the Edit screen for bundled Device and Tariff
860621 MBB- Blackstone UI
857657 Logic Recommendation816026 Offer Catalogue
App Yes Blueprint changes
Logic Yes Create /Update Existing Flow
PM Tool No  Area Yes/No Comments


1775
Offer Catalogue Changes:
attached in VF location.
Product Attribute Changes:
Need Clarification > DeviceType in 3.6
Decision Data Changes:
1. Update Range Mapping
Add below ranges for MBB > MBBDeviceS15Banding, MBBSIMOS15Banding, MBBSimNetMafBanding, MBBDeviceNetMafBanding,
MBBDeviceAmortisationUI/VADR Yes MBB Upgrade UI changes
MBBDeviceS15Band
ing>50 to 60 6  50 60
MBBDeviceS15Band
ing>15 to 20 2  15 20
MBBDeviceS15Band
ing>20 to 30 3  20 30
MBBDeviceS15Band
ing>40 to 50 5  40 50
MBBDeviceS15Band
ing>60 7  60 9999999
MBBDeviceS15Band
ing>30 to 40 4  30 40
MBBDeviceS15Band
ing0 to15 1  0 15
MBBSIMOS15Bandi
ng>42 7  42 9999999
MBBSIMOS15Bandi
ng>32 to 42 6  32 42
MBBSIMOS15Bandi
ng>18 to 24 4  18 24
MBBSIMOS15Bandi
ng>24 to 32 5  24 32
MBBSIMOS15Bandi
ng>8 to 13 2  8 13RangeType RangeName RangeId BDCModelId InitialValue FinalValue


1776
MBBSIMOS15Bandi
ng>13 to 18 3  13 18
MBBSIMOS15Bandi
ng0 to 8 1  0 8
MBBSimNetMafBand
ing0 to 8 1  0 8
MBBSimNetMafBand
ing>8 to 13 2  8 13
MBBSimNetMafBand
ing>13 to 18 3  13 18
MBBSimNetMafBand
ing>18 to 24 4  18 24
MBBSimNetMafBand
ing>24 to 32 5  24 32
MBBSimNetMafBand
ing>32 to 42 6  32 42
MBBSimNetMafBand
ing>42 7  42 9999999
MBBDeviceNetMafB
anding0 to15 1  0 15
MBBDeviceNetMafB
anding>15 to 20 2  15 20
MBBDeviceNetMafB
anding>20 to 30 3  20 30
MBBDeviceNetMafB
anding>30 to 40 4  30 40
MBBDeviceNetMafB
anding>40 to 50 5  40 50
MBBDeviceNetMafB
anding>50 to 60 6  50 60
MBBDeviceNetMafB
anding>60 7  60 9999999
MBBDeviceAmortisat
ion35% 4  55.01 999
MBBDeviceAmortisat
ion60% 1  0 30
MBBDeviceAmortisat


ion60% 1  0 30
MBBDeviceAmortisat
ion45% 2  30.01 40
MBBDeviceAmortisat
ion40% 3  40.01 55


1777
2. Update CommercialRecommendations and CustomerCohorts
Need to create a new Cohort and respective Commercial Recommendation for MBB. (Business to give)
3. Update UpgradeLifeCycleS15RuleConfig DD
3.6
Logic Changes:
1. Update Strategy GetCurrentTariff
Separate Flow for MBB
From ProductRoot, filter MBB plans with FulfilmentItemCode=”Mobile Broadband Service” and For MBB Device,
FulfilmentItemCode=”Data Device”.
Update SettingProductFulfilmentCode
ProductCode as if(MobileService.ProductCode!="",MobileService.ProductCode,MBBService.ProductCode)
LatestContractEndDate as
if(MobileService.ProductCode!="",MobileService.LatestContractEndDate,MBBService.LatestContractEndDate)
LatestContractStartDate as
if(MobileService.ProductCode!="",MobileService.LatestContractStartDate,MBBService.LatestContractStartDate)
UpfrontCost = if(MobileService.ProductCode!="",@divide(Handset.UpfrontCost,100),@divide(MBBHandset.UpfrontCost,100))
BuyoutCost = if(MobileService.ProductCode!="",@divide(Handset.BuyoutCost,100),@divide(MBBHandset.BuyoutCost,100))
Update TariffPage
Change Value as SIMOnly, ValueText as MobileBroadbandIndicator, ValueText1 as SegmentOfTariff
Update SetCurrentTariffDetails
Change Value as SIMOnly = TariffPage.SIMonly
Change ValueText as MobileBroadbandIndicator = TariffPage.MobileBroadbandIndicator
Change ValueText1 as SegmentOfTariff = TariffPage.SegmentOfTariff
Set IsMBB if MobileBroadbandIndicator = “Y” then “Y” else “N”
Update TariffDetails
Update CustomerType as


Update TariffDetails
Update CustomerType as
if IsMBB=N then,
if SegmentOfTariff = Loan then "PaymLoan",
else if SIMOnly= Y and MobileBroadbandIndicator= N then "PaymSIMO"
else if SIMOnly= N and MobileBroadbandIndicator= N then "PaymHandset"
if IsMBB=Y then,
if SIMOnly= Y and MobileBroadbandIndicator= Y then "MBBSIMO"
else if SIMOnly= N and MobileBroadbandIndicator= Y then "MBBDevice"
else set empty
Update CurrentHandsetCost as
@if((.CustomerType="PaymHandset" || .CustomerType="MBBDevice")
&&.IsDirectCustomer,@divide((.BuyoutCost-.UpfrontCost),.CurrentTariffTenure),0)
RangeType => for AU
if CustomerType="PaymSIMO"  then "SimNetMafBanding" else  "HandsetNetMafBanding"
For MBB
 if CustomerType="MBBSIMO"  then "MBBSimNetMafBanding" else   "MBBDeviceNetMafBanding"


1778
RangeMapping > Mapping > Remap properties.
2. Update Strategy CalculateS15MafandBand
FlexiPreS15Maf >  PreS15Maf = Primary.SubscriptionFlexAttribute.CustomNumberField002 (S15_TOTRATE_INCDISCS_MGT)
For AU follow the same range type logic in above logic
Update RangeType => if CustomerType="PaymSIMO"  then "SIMOS15Banding" else "HandsetNetS15Banding"
For MBB
if CustomerType="MBBSIMO"  then "MBBSIMOS15Banding" else "MBBDeviceS15Banding" (In PreS15MafLoan, FlexiPreS15Maf,
PreS15MafSIMO, PreS15MafNotavailable, PreS15MafHandsetDirect, FinalPreS15MafHandsetIndirect)
Rename RangeMapping2 to Handset Amortisation Range
Update HandsetAmortisationRange (Component Rule) > if IsMBB =N then “HandsetAmortisation” else “MBBDeviceAmortisation”
Update SetPreS15Calculation >
//S15AccuracyFlag=Y and PreS15 in Flexi is not empty or zero
@if(
(Primary.SubscriptionFlexAttribute.CustomStringField207="Y"&&
Primary.SubscriptionFlexAttribute.CustomNumberField002!=""
&&Primary.SubscriptionFlexAttribute.CustomNumberField208!=0)
,"Flexi",
//S15AccuracyFlag=N or empty and PreS15 in Flexi is empty or zero
@if((Primary.SubscriptionFlexAttribute.CustomStringField207!="Y")||
(Primary.SubscriptionFlexAttribute.CustomNumberField002=""
||Primary.SubscriptionFlexAttribute.CustomNumberField002=0),
"Calculated",""))


||Primary.SubscriptionFlexAttribute.CustomNumberField002=0),
"Calculated",""))
Update SwitchforPreS15Maf
FlexiPreS15Maf > IsMBB = Y and SetPreS15Calculation.PreS15Calculation,"Flexi"
PreS15MafSIMO > (IsMBB = Y and SetPreS15Calculation.PreS15Calculation="Calculated" and CustomerType ="MBBSIMO") OR
(IsMBB = N and CustomerType ="PaymSIMO")
PreS15MafHandsetDirect > (IsMBB = Y and SetPreS15Calculation.PreS15Calculation="Calculated" and CustomerType
="MBBDevice" and IsDirectCustomer) OR (IsMBB = N and CustomerType ="PaymHandset" and IsDirectCustomer)
FinalPreS15MafHandsetIndirect > (IsMBB = Y and SetPreS15Calculation.PreS15Calculation="Calculated" and CustomerType
="MBBDevice" and !IsDirectCustomer) OR (IsMBB = N and CustomerType ="PaymHandset" and !IsDirectCustomer)
PreS15MafLoan > No change in condition
else PreS15MafNotavailable
Note: IsMBB, CustomerType, IsDirectCustomer fetch from external input)
3. Update Strategy GetCustomerStarRating
Update SetDefaultCustomerRating > CustomerRating
if(IsNullOrEmpty(.CustomerStarRating) || .CustomerStarRating=0,"1",.CustomerStarRating)
4.Update Strategy CalculateUpgradeDeal
Update Set Property (InputForRecCal)
Update -> MBB Flag = if GetCurrentTariff.IsMBB = Y then “Y” else “N”
Set → IsMBB= GetCurrentTariff.IsMBB


Set → IsMBB= GetCurrentTariff.IsMBB
Skip IdentifySegmentStrategyforSubscription for MBB Upgrade.
Update Switch Condition (GetRecommendations)


1779
  if InputForRecCal.IsMBB = Y and AvailableCommercialRecs.Count>=2 ||  if InputForRecCal.IsMBB = N and
AvailableCommercialRecs.Count>=3 then IdentifyCommercialRecommendations
5.Update Strategy PickBestPathway
 Update Filter(ToHandset)
ToPathway =”ToHandset” || ToPathway =”ToMBBDevice”
Update Filter(ToSIMOSIMO30)
ToPathway="ToSIMO" || ToPathway="ToSIMO30"|| ToPathway="ToMBBSIMO"
6. Update Strategy CalculateNetRevenue
Update GroupByRecommendationID, add DeviceCost <SUM> if ProductRecommendationType=”Handset” then (CostExVat +
DeviceUpfront) else 0
Update NetRevenue formula, IsMBB is “Y” and SegmentofTariff is CBU then
NetRevenue = PlanCost+AddonCost+(InsuranceMonthlyCost*0.75*PricePlanTenure)+(DiscountedCost-
SecuredNetDiscountCost)+AccessoryCost - DeviceCost
else retain the same formula without the DeviceCost
7. Update Strategy IdentifyLogicRecommendation
Add new flow for MBB Upgrade. From external input Filter ToPathway="ToMBBSIMO" || ToPathway =”ToMBBDevice”
Rename NotToWatchPathway to PaymPathway, WatchStockisPresent to StockAvailable, WatchStocknotPresent to StockNotAvailable
Make substrategy call to IdentifyMBBRecommendation.
Connect to StockAvailable and StockNotAvailable Filter.
Update  PaymPathway (Filter) -> ToPathway="ToSIMO" || ToPathway="ToSIMO30" || ToPathway =”ToHandset”
8. New Strategy IdentifyMBBRecommendation


8. New Strategy IdentifyMBBRecommendation
Make substrategy call to GetRecommendedMBBDevice
Stock check? - No US in 3.5 but will come in 3.6
Make substrategy call to GetRecommendedMBBTariff
Make substrategy call to CalculateDiscountForMBB
9. New Strategy GetRecommendedMBBDevice (857657)
try to get device type in current product details
External input will have all Current ProductDetails.
Execute the Device logic for the ToMBBDevice pathway only else connect to results and move to Tariff Strategy.
Fetch All Sellable MBB Devices from D_SellablePaymHandsets Data page.( app team to get device type in output of this datapage)
Inputs will be Channel and team from external input and DeviceType will be “Data Device”.
Get all the Device details from the data page.
Make a sub-strategy call to IdentifyManufacturer to get the Current Product Manufacturer.
update UpgradingSubscriptionHandset Filter to get MBB Devices - FulfilmentItemCode=”MBBDevice”.
the result of this sub-strategy should give the current product manufacturer.
Verify the current manufacturer if it is Apple, recommended Apple Tablets, else Samsung Tablets.
The result of this filter should give a list of tablets respective to the current manufacturer.
Select the top sold Product in the last 30 days. (hold on this still discussing with the Business and app team )


1780
Create a Dataflow ProcessMBBOutcomes
input is an abstract dataset
Create an event strategy AggregateMBBOutcome.
 the output will be a dataset of DB type
ProcessMBBOutcomes df will be a new branch in CaptureDealResponseForAssistedUpgrade DF where we will load only when
outcome = “Accepted“
AggregateMBBOutcome event strategy should have a
sliding window for 30 days
Aggregations on Outcome
ProcessMBBOutcomes Df output will be a new dataset of type DB MBBAggregatedOutcomes.
get a Data page to work on this MBBAggregatedOutcomes dataset to give most selected outcome.the highest count of the accepted
product will be the outcome of this data page.
Process the recommended product code which matches with top selected Product code.
Make sure to get all device details for this product in this strategy.
10. New Strategy GetRecommendedMBBTariff(857657)
Call D_EligibleTariffs to get the eligible tariffs (provide the required inputs).
Flow A(Device): Join the above list to exclude tariffs that does not match below condition
SIMOnly = N, MBBFlag=MBBFlag, SegmentofTariff=SegmentofTariff and RecommendedTenure=RecommendedTenure
Eliminate HBB Tariffs
Flow B(SIMO): Join the above list to exclude tariffs that does not match below condition
SIMOnly = Y, MBBFlag=MBBFlag, SegmentofTariff=SegmentofTariff and RecommendedTenure=RecommendedTenure
Eliminate HBB Tariffs
Connect Flow A and B
if RecommendedDevicecode exists then make substrategy call to EvaluateTariffToHandsetCompatibility (Note: Update HandsetCost till
end of the flow) else skip this step.


end of the flow) else skip this step.
Make sub strategy call to CheckUpgradeLifeCycleS15Rule (Note: Update CheckUpgradeLifeCycleS15Rule >SetGrowS15 >
SkipS15Threshold → Skip this for MBB upgrade)
Make substrategy call to IdentifyPromotinalAddons
Set RecommendedTariffDatawithPromo = RecommendedTariffData+AutoAddedAddOnData
Filter RecommendedTariffDatawithPromo > TotalData
if RecommendedDevicecode exists and SIMOTariff exists then
Priortize Device tariffs by RecommendedTariffDatawithPromo and Group by highest cost (ExVATcost - Entertainment Cost)
Set SelectionRank=1

Priortize SIMO tariffs by RecommendedTariffDatawithPromo and Group by highest cost (ExVATcost - Entertainment Cost)
Set SelectionRank=2
if RecommendedDevicecode does not exist and only  SIMOTariff exists then
Priortize SIMO tariffs by RecommendedTariffDatawithPromo and Group by highest cost (ExVATcost - Entertainment Cost) and
select the top 2 tariffs for each card. card 1 with selection rank 1 will be with top1 and card 2 with selection rank 2 is the top 2
respectively from priority.
Connect all the SelectionRank and select the top 2 records based on RecommendedTariffDatawithPromo and cost (highest)


1781
11. New Strategy CalculateDiscountForMBB
Check if Tariff is promotional, if yes make substrategy call to IdentifyPromotionalDiscounts and connect to results.
If Tariff is not promotional, check if customer is eligible for additional plan discount by making a substrategy call to
CheckAdditionalPlanDiscountEligibility (CheckAdditionalPlanDiscountEligibility.IsRecommended)(Note: Update
CheckAdditionalPlanDiscountEligibility to include Discount percentage.)
Set IsAPD = True
if customer is not eligible for additional plan make substrategy call to CalculateMaxUpgradeDiscount(Note: Update
CalculateMaxUpgradeDiscount to include only PriceMatrix and Segmentof1 for MBB Upgrade)
Filter only Discount > 0 (if discount is not > 0 connect to results)
Fetch the list of eligible discounts for each recommended tariff
if APD = true, return only the APD discounts that is matching with current APD discount percentage from the above list (APD discounts
are configured in PM tool)
if APD = false, return only the discounts that are nearest to max discount.
Set PostS15 as per the below formula (moving from above step to here )
 Post S15= (((Upgrade Tariff Cost- Upgrade Discount)-((Upgrade Device cost-Upgrade Upfront Cost)/Upgrade Tariff Tenure)))
Note : 1) Subtract Entertainment cost from Upgrade Tariff Cost, if Tariff is entertainment
2)Upgrade Device cost-Upgrade Upfront Cost applies only Legacy Handset and not SIMO.
12. Update Strategy DecomposeRecommendation
Verify if all the properties for MBB Upgrade are updated.
13. Update Strategy EvaluateHandsetCompatibility
In the data import map DeviceUpfrontCost = HandsetCost and flow this until the end of the strategy.
14. Update Strategy IdentifyCommercialRecommendations


14. Update Strategy IdentifyCommercialRecommendations
Update SetProperty (SetCohortType) > CohortType = if ExternalInput.IsMBB=Y then “MBBCommercial” else “Commercial”
Update GroupByRecID > PostS15Maf > include condition to check Handset product (ProductRecommendationType=Handset) then
CostExVat - DeviceUpfrontCost
15. Update Strategy EvaluateCohortByPreS15Maf
Update SetEligible > Eligible as (
((.PaymSIMOPreS15MafBand=GetCurrentTariff.RangeId||.PaymSIMOPreS15MafBand="")&&
(GetCurrentTariff.CustomerType="PaymSIMO" || GetCurrentTariff.CustomerType="MBBSIMO"))
||
((.PaymHansetPreS15MafBand=GetCurrentTariff.RangeId||.PaymHansetPreS15MafBand="")&&
(GetCurrentTariff.CustomerType!="PaymSIMO" || GetCurrentTariff.CustomerType!="MBBSIMO"))
)?"True":"False"
16. Update Strategy EvaluateCohortbyNetMafBand
Update SetEligible > Eligible as (((.PaymSIMONetMafBand=GetCurrentTariff.RangeId || .PaymSIMONetMafBand="") &&
(GetCurrentTariff.CustomerType="PaymSIMO" ||GetCurrentTariff.CustomerType="MBBSIMO"))  ||
((.PaymHandsetNetMafBand=GetCurrentTariff.RangeId||.PaymHandsetNetMafBand="")  &
(GetCurrentTariff.CustomerType!="PaymSIMO" ||GetCurrentTariff.CustomerType!="MBBSIMO"))) ?"True":"False"


1782
17. Update Strategy PopulateOutputPropertiesForNBAA
Update NotWatchSubscription, (IsMBB=N or IsMBB= empty/null ) or !(.IsWatchSubscription)
(Note: Updatte IsMBB in CalculateDeal properties mapping)


1783
Upgrade - Assisted Upgrade -Re code -Multi CTN Cohort Variable
HL Requirement
As part of 2.3 for cohorts, implementation requirement is
Multiple CTN control as eligibility criteria on cohorts. It is sourced from Primary.customer account.PAYMSubscriptionCount
Integrating AOM with GCPL, we should use information coming from GCPL.
Update Strategy -GetSubscriptionDetails
Test only story
in this strategy setproperty:
  BelongsToMultipleCTNsAccount value and set with new Attribute from XCAR.
Make sure the cohort functionality is working as expected.
all cohorts-related flows in AU should work AsIs.

 889676 Cache GCPL as part of account data on to avoid issues in GPL
PM Tool No
Logic Yes  logic to use XCAR and remove old code.
UI No
App Yes  remove the function and make variable at
XCAR for logic
DB No  Area Yes/No Comments


1784
Upgrade - Digital Paym Upgrade - Make the Lead Plan selection conditional
HL Requirement
If PM Tool has been set to Flexi for selecting Lead Plan and if the Flexi field is populated, then the plan populated in flexi is used as the
lead plan(as is). If the flex field for the subscription is not populated, then BDM is used to source the Lead Plan(new).
Update Strategy - OrderUpgradeTariffsForWeb
Update (IsFlexi) >
Set FlexiValue = Primary.SubscriptionFlexAttribute.CustomStringField026
Update (UTMTariff) >
(.RecRank!=0 && @String.equalsIgnoreCase(LeadPlanfromAOMConfig.ValueText1,"UTM")) || (.RecRank!=0 &&
@String.equalsIgnoreCase(LeadPlanfromAOMConfig.ValueText1,"Flexi") && FlexiValue = ““)
 863006 Make the Lead Plan selection conditional
PM Tool No
Logic Yes  Update Existing flow
UI No
App No
DB No  Area Yes/No Comments


1785
Upgrade - Assisted Upgrade -Source the Right customers churn
HL Requirement
Business want The Customer's propensity to churn is sourced from Churn_Rank in the Pathway Model (Model 09).
We are currently using P_Churn but  Business advised to use Churn_Rank instead
Update Strategy - P i c k B e s t P a t h w a y
update ImportModelScore data import:
 Remove source from value decimal and update with
old value to remove:   ModelAttributeGroup(P_CHURN)
The new value to update:  ModelAttributeGroup(Churn_Rank)

 851326 Source the customers churn value from Churn_Rank instead of
P_Churn
PM Tool No
Logic Yes update existing logic to map right attribute
UI No
App Yes  need to configure the right attribute in aom
config
DB No  Area Yes/No Comments


1786
Upgrades-HBB-Managing eligibility based on Technology
Impacted Areas

Business Requirement:

AOM Should pass all the HBB Plans which match same technology associated with SERVICE_LINE_CLASSIFICATION_CODE and all
the plans which are equal or lesser than the MAX Speed requested in HBB GPL Request.
With the above implementation we are maintaining relation between SLCC and Technology and speed with all the Tariff Plans.
Configurations in PM Tool
Product Attributes
Update Decision Data – HBBTechnolgy. 912153 HBB - Provide all eligible plans for the requested technology up to
the requested max speed.751853 Parent story
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing flow
PM Tool Yes  Only configuration and new property HBB
Technology Screen
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
Technology Update Text Technology Single Value N/A Tariff SOGEA
Technology
SpeedNew Number Speed of the
TechnologySinge Value N/A Tariff 30 Name  Type Description  Single/MultipleDefault Product Type Sample Value
 Field Type   Single/Multiple Sample Value


1787
Logic Changes:
Update Strategy
GetUpgradeTariffListforHBB
Places, where we are checking technology from SERVICELINE_CLASSIFICATION_CODE, will be updated.
Set ClassificationCode = SERVICE_LINE_CLASSIFICATION_CODE from context/Details section of request.
Import HBBTechnolgy Decision Data on ClassificationCode = Plan Technology then Populate Enable and Technology.
Get List of Eligible Tariffs:
Call D_EligibleTariffs and import new product attributes introduced above.
Filter HBB tariffs (update technology condition)
Technology (from ProductAttributes) = Technology (from HBBTechnolgy DD)  and MAX_SPEED (from API request property)<=Technology
Speed (from Product Attributes).

Notes for unit testing:
-while testing- if we pass SOGEA with speed 80 as SLCC, we should return all Sogea eligible plans with speed =< 80.
-the MAX_Speed value be in kpbs like 76000. we should be comparing the same value in our configuration.
 Plan Technology Text New Single Value SOGEA with Speed 40
(SAME AS
CLASSIFICATION CODE
FROM GPL REQUEST)
Description Text old Single Value Single Order Generic
Ethernet Access
Enable Boolean  Single Value True/False
Technology  Old/update Single Value SOGEA


1788
Upgrade - Apple Lovers
HL Requirement
Introducing a new multi-line offer where a customer with both a watch access plan and a tablet access plan will receive a discount on
the tablet access plan.
this will be implemented using the existing Vodafone together multi-line discount framework.
Those rules are configured in Siebel & feed to AOM through offer catalog spines.
 platform team has already created a data page to calculate which VF Together offers customer can get if customer changes their tariff
to a specific tariff.
The requirement is to populate the discount provided by  VF Together offer for each Watch tariff recommended from AOM.
Update Strategy - PopulateOutputPropertiesForNBAA
Remove the filter NotWatchSubscription, so that we will include VFT logic for watch Customer also.
 Strategy -GetEligibleVFTogetherOffersforAccount
This strategy should work as is.
VFT Framework should work as is for watch customers also.

Validate the below statements for watch customer.
Populate Sr attributes from the data page and Retrieve the value of the Tablet discount using the offer details and the discount product
catalog. (check with APPTeam about Properties should be the same)
SetOutputPropertiesforVFTOffers,SetOutputPropertiesforVFTQualifierData and SetOutputPropertiesforVFTRewardData will be AsIs
with the provided details.826891 Disolay the Apple Lover offer message in the 'More' Drop down. 862883 Using the VFT Framework to identify if a customer is eligible for
Apple Lover.
PM Tool No
Logic Yes
UI YES  Display More drop down with Apple offer
details.
App Yes  Populate New Property for the subscriptions
within the XCAR to define VFTQL or not.
DB No  Area Yes/No Comments


1789
VF Together Offer indicator & “More Info Section” will be updated by UI team. ADO-862 919/891/964.


1790
NBA FW - Extend Discount Management to Batch
Impact in Other areas
Dependencies
Logic Changes:
A.Update PrarentChildTreatments DD
Create ChildType Sr Property of Text.
Add it in the ParentChildTreatments DD.
Update AppPush/SMS(Crosss) Treatments
Add MaxChildren
B.Create new  Stratgey ApplyFrameworkBundling
Save as the 'ApplyBundlingForMicrositeTreatments' Stratgey and name it as ‘ApplyFrameworkBundling’
Update 'Matching Child Treatments' Data join component by mapping Child Type in the Properties Mapping.
Update 'Matching Parent Treatments' Data join component by mapping Child Type in the Properties Mapping.769889 Validate output using dummy SMS
864257 Extend Offer Bundling To SMS and AppPush channels
864161 Incorporate Private Pricing Into Populate Output Properties for Batch769551 Use discount matrix within batch framework to determine product
group max % 2nd line discount
PM Tool Yes  Need PM changes for End to  End runs
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes   Need PM changes for End to End runs
App No
DB No  Area Yes/No Comments


1791
From the  Matching Child Treatments' Data join component Add 2 filters
              1)Name First Filter  as ‘ChildType Package Check' and add .ChildType=”Package” and connect it to
                  'Children of Eligible Parents' Datajoin Component.
              2)Name Second Filter as ' ‘ChildType not Equal to  Package Check' and add .
                 @contains(.ChildType,”Content”) || ChildType=”” and Connect it to the results.

C.Update  Stratgey IdentifyBestTreatmentForBatch
Remove Connection  between ‘Email Channel'  Filter Component and 'Reset ParentChild For Email Treatments' SetProperty
component.
Update Filter ‘Email Channel' to 'Email/AppPush/SMS’ and update the condition as below
        .Channel="Email" || .Channel="SMS" || .Channel="AppPush"
Update Filter ‘Non Email Channel' to 'Non email,SMS,Appush’ and add below Condition
              .Channel!="Email" && .Channel!="SMS" && .Channel!="AppPush"
Connect the ‘Email/AppPush/SMS’ Filter Component to new SubStratgey 'ApplyFrameworkBundling’
Add 2 filter from 'ApplyFrameworkBundling’ SubStratgey
          1)Name First Filter  as ‘ChildType Package Check' and add .ChildType=”Package” and connect it to
              Results
           2)Name Second Filter as ' ‘ChildType not Equal to  Package Check' and add .
                 @contains(.ChildType,”Content”) || ChildType=”” || .ParentChild='Parent'
From Filter ChildType not Equal to  Package Check' Add filters as below
           1)Name first Filter as “Email check“ and  add .Channel=”Email” and connect it to 'Reset ParentChild


For Email Treatments'
            2)Name 2nd filter as “SMS and AppPush Check“ and add .Channel =”AppPush” || .channel=”SMS”
                 Connect it to ‘Mandatory' and 'Not Mandatory' Filter Component


1792

D.Update  Stratgey PopulateCrossSellOutputProperties
After the ExternalInput Add 2 Filters
 1)Name first Filter as “non SMS ,Email and AppPush Check“ and  add ..Channel !=”AppPush” && .channel !=”SMS”   && .Channel
!=”Email” and connect it to 'Set Squad Specific Properties' Component
  2)Name 2nd filter as “SMS ,Email and AppPush Check“ and add .Channel =”AppPush” || .channel=”SMS”
     || .Channel =”Email”
From Filter “SMS,Email and AppPush Check“ Add 2 Filters
            1)Name First Filter  as ‘ChildType Package Check' and add
               @String.contains(.OfferCategory,"Additional Line")&&@String.contains(.ProductGroup,"Mobile")
              && . @contains(.childtype,Package) and connect it to
              a)Add New SubStratgey Component 'AssignDiscountToAdditionalLineOffers'  and connect to it from
                above Filter
              b)Connect this SubStratgey to 'Set Squad Specific Properties' SetProperty
           2)Name Second Filter as ' ‘ChildType not Equal to  Package ' and add .
             (.ChildType ="Content" || ChildType="")
From Filter ‘ChildType not Equal to  Package ' Add 2 Filters
           1)name First Filter as ‘Content Child Treatments' and add .ParentChild=”Child” and connect it to 'Set
              Squad Specific Properties’
           2)name Second Filter as 'Parent Treatments check' and add .ParentChild=”Parent”
           3)Add a Data Join and name it as 'Join on Bundle Parents' and connect directly from  'Parent


Treatments check' Filter and Reference from ChildType Package Check' Filter and if the BundleParent
              Matches , set ValueText=Matched , else ValueText=””


1793
              .pyName = .BundleParentTreatment
            4)Add 2 Filters from Data join
                    1)Name the first one as 'BundleParent Matched' and add .valueTexct=”Matched” and Connect it
                       to 'AssignDiscountToAdditionalLineOffers' Substrategy
                     2)Name2nd filter as 'BundleParent Not Matched' and add .valueTexct=”” and Connect it
                       to 'Set Squad Specific Properties' SetProperty.
E.Update Stratgey AssignDiscountToAdditionalLineOffers
update Data join Component 'Assign CellCode and TestGroupExpiry to Parent' Properties mapping as below

Update SetProperty Component 'Compatible Max Discount per Tariff' and set as below
     .ProductDetails ="DiscountPercenatage:"+.MaxDiscountAmount
F.Update Stratgey GetAllTariffs
Update 'Set Context Data' Component as below
      .OrderType =@If(Primary.Context(ExecutionMode)="GetNBA" || .ExecutionMode=Batch,"In Life
       Sales",Primary.Context(OrderType))
G.Update DataFlow IdentifyBestOBTreatmentsByBatch
Add 3 paths after the 'IdentifyBestOBTreatmentsByBatch' Stratgey
     1)in 1st Path Add a filter and name it as “Content Treatments“


1794
       .ChildType!="Package" and connect to 'BestOBTreatmentsByBatch'
     2)in 2nd path add a filter and name it as 'PackageTreatments To IHReproting table'
    .ChildType ="Package" and connect to 'InteractionHistoryReporting'
    3)in 3rd path add a filter and name it as 'PackageTreatmentsTo IH able'
    .ChildType="Package" and connect to 'InteractionHistory'
H.Update Strategy PopulateCrossSellOutputProperties
Update the SetProperty Component 'Set CrossSell Specific Properties' as below
     TreatmentDynamicVariable1 =           @String.replaceAll(.TreatmentDynamicVariable1,"[MaxDiscountAmount]",.MaxDiscountAmount)


1795
NBA FW - Add New Channel TOBi to GetNBA
Impact in Other areas
Dependencies
Change Description
Logic Changes
A. New Decision Datas for TOBi Channel
B. New Strategy  - ImportT OBiT reatments
C. Update Strategy - ImportAllT reatments
D. Update strategy - AllTreatmentsForEligibleOf fers
E. New Proposition Filters - XXXXXX TOBiT reatmentEligibility
F. Update strategy - Apply XXXXXX TreatmentEligibility
G. New Strategy - IdentifyEligibleT OBiT reatments
H. New Strategy - IdentifyBestT reatmentForT OBiOnGetNBA
I. Update Strategy - IdentifyBestT reatmentForGetNBA
J. New Strategy - PopulateOutputPropertiesForT OBi
K. New Strategy - IdentifyBestT OBiT reatmentsForSubscription
L. Update Strategy - GetNBA
M. New Strategy - SetIHForT OBi
N. Update Strategy - SetIHPropertiesForAllChannels
O. Update Strategy - PrepareInboundNBAForSeedT est
P. Update Existing GetNBA  simulation query
Impact in Other areas
Dependencies857488 Configure AoM Logic
857495 Extend seed testing for TOBi
857501 Add TOBi channel to exisiting simulation solution857482 Add TOBi channel to AoM
PM Tool Yes Add new channel - TOBi
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool Yes Configure new channel in PM Tool for E2E testingArea Yes/No Comments


1796
Change Description
Add “TOBi” channel to GetNBA Execution Mode along with SubChannel “Sales”
Strategy FW will be updated to include TOBi channel

Logic Changes
A. New Decision Datas for TOBi Channel
B. New Strategy  - ImportTOBiTreatments
Save ImportAppTreatments structure as new strategy ImportTOBiTreatments
Update the proposition import components to import new “TOBi” group from respective Issues as below (screenshot from App strategy)App No
DB No
TOBi Care TOBi
TOBi CrossSell TOBi
TOBi Engagement TOBi
TOBi HBB TOBi
TOBi Loyalty TOBi
TOBi Renew TOBi
TOBi Retain TOBi
TOBi Retention TOBi
TOBi Service TOBi
TOBi TradeIn TOBi
TOBi Upsell TOBiDecision Data Issue Group


1797
C. Update Strategy - ImportAllTreatments
Add ImportTOBiTreatments sub-strategy and connect to results
D. Update strategy - AllTreatmentsForEligibleOffers
Connect sub-strategy component - “Apply Channel Control For GetNBA“ to a new channel filter  - “TOBi Treatments” with condition:
.Channel = “TOBi”
connect to Results

E. New Proposition Filters - XXXXXXTOBiTreatmentEligibility
Create proposition filters as per the table below and set default behaviour as true
Care TOBi CareTOBiTreatmentEligibility
CrossSell TOBi CrossSellTOBiTreatmentEligibility
Engagement TOBi EngagementTOBiTreatmentEligibility
HBB TOBi HBBTOBiTreatmentEligibility
Loyalty TOBi LoyaltyTOBiTreatmentEligibility
Renew TOBi RenewTOBiTreatmentEligibility
Retain TOBi RetainTOBiTreatmentEligibility
Retention TOBi RetentionTOBiTreatmentEligibility
Service TOBi ServiceTOBiTreatmentEligibility
TradeIn TOBi TradeInTOBiTreatmentEligibility
Upsell TOBi UpsellTOBiTreatmentEligibilityIssue Group Proposition Filter


1798
F. Update strategy - ApplyXXXXXXTreatmentEligibility
For each of the strategies as per the table below, make the following changes -
Add “TOBi Channel” filter with condition: .Channel = “TOBi”
Add a new filter - “Apply TOBi Treatment Eligibility” and configure to use respective proposition filer as per the table below
Connect to main path

G. New Strategy - IdentifyEligibleTOBiTreatments
Save existing strategy - IdentifyEligibleAppTreatments as IdentifyEligibleTOBiTreatments
Rename sub-strategy component - “All App Treatments For Eligible Offers“ as “All TOBi Treatments For Eligible Offers“ and configure it
to use component - “TOBi Treatments” from sub-strategy AllTreatmentsForEligibleOffers
H. New Strategy - IdentifyBestTreatmentForTOBiOnGetNBA
Save existing strategy IdentifyBestTreatmentForAppOnGetNBA as IdentifyBestTreatmentForTOBiOnGetNBA
Change Decision Data component name from ‘OfferDecisionMix App’  to ‘OfferDecisionMix TOBi’ and update the condition with ApplyCareTreatmentEligibility CareTOBiTreatmentEligibility
ApplyCrossSellTreatmentEligibility CrossSellTOBiTreatmentEligibility
ApplyEngagementTreatmentEligibility EngagementTOBiTreatmentEligibility
ApplyHBBTreatmentEligibility HBBTOBiTreatmentEligibility
ApplyLoyaltyTreatmentEligibility LoyaltyTOBiTreatmentEligibility
ApplyRenewTreatmentEligibility RenewTOBiTreatmentEligibility
ApplyRetainTreatmentEligibility RetainTOBiTreatmentEligibility
ApplyRetentionTreatmentEligibility RetentionTOBiTreatmentEligibility
ApplyServiceTreatmentEligibility ServiceTOBiTreatmentEligibility


ApplyServiceTreatmentEligibility ServiceTOBiTreatmentEligibility
ApplyTradeInTreatmentEligibility TradeInTOBiTreatmentEligibility
ApplyUpsellTreatmentEligibility UpsellTOBiTreatmentEligibilityStrategy Proposition Filter


1799
Change the set Property component name from ‘Max Offers for App’ to ‘Max Offers for TOBi’
Update the condition against MaxOffers like
‘@if(ContextualDecisionMix.MaxOffers>0,ContextualDecisionMix.MaxOffers,OfferDecisionMixTOBi.MaxOffers)’
Update the Filter component names accordingly.
Update the Decision Data OfferDecisionMix with below record for TOBi

I. Update Strategy - IdentifyBestTreatmentForGetNBA
Create a Filter component with name as ‘TOBi’ and update condition to filter TOBi channel
@String.equalsIgnoreCase(.Channel,"TOBi").
Connect External Input to new Filter Component ‘TOBi’
Call sub Strategy IdentifyBestTreatmentForTOBiOnGetNBA after Filter component ‘TOBi’ and connect it to Result component.

GetNBA TOBi 0 TOBiExecutionMode DecisionMixContext MaxOffers Channel


1800
J. New Strategy - PopulateOutputPropertiesForTOBi
Save existing strategy PopulateOutputPropertiesForApp as PopulateOutputPropertiesForTOBi
Remove the sub-strategy - SetAppTokens.

K. New Strategy - IdentifyBestTOBiTreatmentsForSubscription
Save existing strategy - IdentifyBestAppTreatmentsForSubscription as IdentifyBestTOBiTreatmentsForSubscription
Replace sub-strategy - PopulateOutputPropertiesForApp with PopulateOutputPropertiesForTOBi
Configure SubChannel “Sales” in TreatmentToSubChannels decision data for TOBi treatments for sub-strategy
IdentifyTreatmentSubChannelForGetNBA
L. Update Strategy - GetNBA
Add new sub-strategy component - IdentifyBestTOBiTreatmentsForSubscription
Update switch component - “Select Channel“ to add a new “Else Select” step before “Otherwise” as below -
Select component - IdentifyBestAppTreatmentsForSubscription if @equalsIgnoreCase(Primary.Context(Channel),"TOBi")

M. New Strategy - SetIHForTOBi
Save existing strategy - SetIHForApp as SetIHForTOBi


1801
N. Update Strategy - SetIHPropertiesForAllChannels
After “SetGenericIHReportingAttributes” sub-strategy, add “TOBi Channel” filter with condition:
.Channel = “TOBi”
Call sub-strategy “SetIHForTOBi“ and connect to channel filter
Connect to SetDefaultValuesToIHProperties sub-strategy call
Connect to Results
O. Update Strategy - PrepareInboundNBAForSeedTest
Update Filter component ‘Valid Channels’ to add filter for TOBi channel.
@String.equalsIgnoreCase(SetChannel.Channel,"TOBi")
P. Update Existing GetNBA simulation query
Need to update existing GetNBA simulation query to accommodate new strategy names for TOBi
All three kind of simulation needs to be dev tested - Customer, Distribution and Funnel simulations


1802
NBA FW - Capture responses from TOBi
Impact in Other areas
Dependencies
Change Description
Logic Changes
Impact in Other areas
Dependencies
Change Description
Add “TOBi” channel to GetNBA Execution Mode along with SubChannel “Sales”
Strategy FW will be updated to include TOBi channel

Logic Changes
Response from TOBi will use the existing SetNBAResponse API and there is no logic change required (as the current story does not specify
any additional data to be recorded) other than configuring the OutcomeMapping decision data for TOBi channel. However, the
setNBAResponse API and the logic will be dev-tested to validate that the new channel works.

The following responses/outcomes will be written to IH - 857496 Capture responses from TOBi
PM Tool No Add new channel - TOBi
PM Tool KT Documentation Yes
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool Yes Configure new channel in PM Tool for E2E testing
App No
DB No  Area Yes/No Comments
Response/Outcome Description API


1803
Outcome mapping DD should be updated : Selected Offer is returned to Channel by AOM GetNBA
Shown Offer is presented on TOBi channel SetNBAResponse
Clicked Customer has clicked on ‘Find out More’ button on TOBi SetNBAResponse
Dismissed Customer has clicked on 'Not Today'  button on TOBi  i.e.
Customer Rejected the offer.SetNBAResponse
TOBi Dismissed Dismissed
TOBi Clicked Engaged
TOBi Selected Selected
TOBi Shown PresentedChannel Outcome StandardOutcome


1804
NBA FW - Email Channel Management - Response Capture
Design Considerations
Impact in Other areas
Dependencies
Logic Changes
A. New Outcome Mapping  in PM tool
B. New DF - PrepareAccountDataForBatch
C. Update DF - PrepareBatchData

Design Considerations
Email Outcomes from IMI will be sent to AOM via existing CaptureResponse API with values as detailed below. All these outcomes will
be written to Interaction History
The “HardBounce” response from IMI will be written to separate  email_ blacklist table
This process will be managed by App
App will provide a new data set on email_ blacklist table to be consumed by relevant Data Flows
App will provide a new Page property (of type Email Blacklist)  on Contact class

Impact in Other areas827760 Persist email hard bounces to a table available to logic826502 Record Email Outcomes in Interaction History
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App Yes Write to email_ blacklist tableArea Yes/No Comments


1805
Dependencies
Logic Changes
A. New Outcome Mapping  in PM tool
The following entries should be added -
B. New DF - PrepareAccountDataForBatch
Save existing PrepareAccountData DF as PrepareAccountDataForBatch
Add new Compose for secondary data set Contact
Select the new data set EmailBounced as the new secondary data set for the new compose with Contact data set
In the new Compose shape named “Get Email Blacklist”,
set the new EmailBlacklist data in to new page property  EmailBlacklist on Contact class
Compose on EmailAddress propertyNew data set on email_ blacklist table
New Page property (of type Email Blacklist)  on Contact class
DB Yes email_ blacklist table
PM Tool Yes Configure new channel in PM Tool for E2E testing
App Yes  App changes (data set, class update) should be completed before Logic work
All app changes should be completed before end-to-end logic testing
DB Yes  DB changes should be completed before App workArea Yes/No Comments
Email Delivered Other
Email Opened Other
Email Clicked Engaged
Email HardBounce Failed
Email InvalidEmailAddress Failed
Email Bounced Failed
Email InvalidRequest FailedChannel Outcome StandardOutcome


1806
C. Update DF - PrepareBatchData
Replace the call to DF PrepareAccountData with new DF PrepareAccountDataForBatch


1807
Release 3.06


1808
Assisted 2nd Line Private Pricing Stories

Impact in Other areas
Dependencies
Change Description
Introduce Multiple Discount capability in AdditionalLine GPL855211 GRPL Request changes
808422 Get Customers Holdings and Orders (using GPSL)
856063 Determine VFT Additional Line Discount Eligibility
856114 Determine VFT HBB Discount Eligibility
856136 Determine Household Additional Line Discount Eligibility
856718 Return List of Prioritised Plans and Associated Discounts (GRPL response)
855718 Map Account to Subscription
856013 Select Sellable Plans
856043 Retrieve ATL Discounts for each Sellable Plan
856161 Determine Reward Plans for VFT Additional Line Discount
856195 Determine Reward Plans for Household Additional Line Discount
856225 Determine Personalised Household Additional Line Max Discount Per Reward Plan
856246 Determine Other Household Additional Line Discounts Per Reward Plan
856276 Calculate Monthly Saving Per Discount For Each Plan
856406 Determine Default Discount Per Plan
856430 Prioritise List of Plans
856447 Make Prioritisation Logic Flexible to Use BDC Models
856736 Prioritise List of Discounts
855390 Create Unique Session Id
855551 Check if account exists in AOM
855735 Create Temporary Prospect Record
856512 Create IH Record(s)
856790 Changes to AOM EDW Feed
856814 Removed Temporary Prospect Records807544 New Channel for Assisted 2nd Line


1809
Introduce Discount Eligibility in AdditionalLine GPL  at Of fer/Of fer variant level along with Treatment Level eligibility
Enable AdditionalLine GPL  for InboundCC & Retail
Update Bundling in AdditionalLine GPL  to cater for Multiple Discount
Update Prioritise Plan strategy into Standardised format
Introduce Prioritise Discount Strategy
Introduce SessionID creation
Update IH Creation
Logic Changes
New SR Properties
Update Strategy GetAllT ariffs
New Strategy GetEligibleT ariffsForSKU
Update Decision Table EvaluateT ariffTypes
New Strategy EvaluateInterestedServiceT ype
Update GetProductListForAdditionalLine GPL  Strategy Flow
Update Strategy AdditionalLinePropositionsLookup
Create New Strategy ApplyDiscountT reatementEligibility
Update Strategy ManageAdditionalLineDiscount
Create New Decision Data : AdditionalLineDiscount
Create New Strategy : GetHouseHoldDiscounts
Update Strategy : IdentifyPromotinalDiscounts
Update Strategy : GetDiscountProductDetails
Update Strategy : IdentifyDiscountPerT ariff
Update Strategy : ApplyBundlingForAdditionalLine
Update Strategy : SecondLineDiscountCompatibility
Update Strategy : CrossSellPlanPriority
Update Strategy : PrioritizePlans
New Strategy : PrioritiseDiscounts
New Strategy : GetEligibleVFT ogetherOf fersForASLPP
New Strategy : SetOutputPropertiesForVFT OffersASLPP
Update Srategy : PopulateOutputPropertiesForAdditionalLine

Impact in Other areas
DependenciesPM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes
DB No  Area Yes/No Comments
PM Tool No  Area Yes/No Comments


1810
Change Description
Introduce Multiple Discount capability in AdditionalLine GPL
Introduce Discount Eligibility in AdditionalLine GPL at Offer/Offer variant level along with Treatment Level
eligibility
Enable AdditionalLine GPL for InboundCC & Retail
Update Bundling in AdditionalLine GPL to cater for Multiple Discount
Update Prioritise Plan strategy into Standardised format
Introduce Prioritise Discount Strategy
Introduce SessionID creation
Update IH Creation

Logic Changes
New SR Properties App Yes  App needs to provide Data page to get VF Together offers.
DB No
IsBasicsPlan TrueFalse
DiscountGroup Text
HasPromoDiscount TrueFalse
HasDefaultDiscount TrueFalse
InterestedServiceType Text
ContractTariffRefreshIndicator Text
MaxDiscountCode Text
IsDefault TrueFalse
ParentProductDuration Integer
ServiceType Text
Saving decimalName Type


1811
Update Strategy GetAllTariffs
In Data Import component ‘EligibleTariffs’ add the properties mapping for below two properties as mentioned below
Update Data import  component ‘EligibleTariffs’ mapping to set Promotion Indicator flag as below  PromotionInd =
@if(.PromotionStartDate!=""&&.PromotionEndDate!=""&&@AOMUtilities.CalculateNumberOfDaysFromTodayInYYYYMMDDFormat(.Pr
omotionStartDate)>=0&&@AOMUtilities.CalculateNumberOfDaysFromTodayInYYYYMMDDFormat(.PromotionEndDate)<=0,"Y","N")
RecommendedTariffHasPromotion= @if(@String.equals(.PromotionInd,"Y"),true,false).
Update Data import  component ‘EligibleTariffs’ mapping to set Category from tariff table to new SR property IsBasicsPlan, set to true
when Category contains 'Basic' else false.
Remove all Filter compnents based on TariffType before Results component and connect data join ‘Join Offers with non SIMO eligible
tariffs’ and Join Offers with SIMO tariffs’ to Results component.
update the data join component ‘Join Offers with SIMO tariffs’ in properties mapping map RecommendedTariffHasPromotion =
RecommendedTariffHasPromotion, ServiceType =TariffType and  IsBasicsPlan = IsBasicsPlan.
update the data join component ‘Join Offers with non SIMO eligible tariffs’ in properties mapping map RecommendedTariffHasPromotion
= RecommendedTariffHasPromotion                                           IsBasicsPlan = IsBasicsPlan
ServiceType = @If((.TariffType="Dongle"||.TariffType="Gigacube"),"MBB",.TariffType)

New Strategy GetEligibleTariffsForSKU


New Strategy GetEligibleTariffsForSKU
Save as existing strategy GetHandsetTariffsForSKU to GetEligibleTariffsForSKU
Update Data Import of data page D_EligibleTariffsForHandset and remove the filter components before the Results component and
connect Data Join ‘Eligible Tariffs Data’ to Results component.
Update Data import  component ‘EligibleTariffsforHandset’ mapping to set Promotion Indicator flag as below  PromotionInd =
@if(.PromotionStartDate!=""&&.PromotionEndDate!=""&&@AOMUtilities.CalculateNumberOfDaysFromTodayInYYYYMMDDFormat(.Pr
omotionStartDate)>=0&&@AOMUtilities.CalculateNumberOfDaysFromTodayInYYYYMMDDFormat(.PromotionEndDate)<=0,"Y","N")
RecommendedTariffHasPromotion= @if(@String.equals(.PromotionInd,"Y"),true,false).
Update Data import  component ‘EligibleTariffsforHandset’ mapping to set Category from tariff table to new SR property IsBasicsPlan,
set to true when Category contains 'Basic' else false.
update the data join component ‘JoinEligible Tariff Data’ in properties mapping map RecommendedTariffHasPromotion =
RecommendedTariffHasPromotion, IsBasicsPlan = IsBasicsPlan and
ServiceType=@If((.TariffType="Dongle"||.TariffType="Dongle"||.TariffType="Dongle"),"MBB",.TariffType).ServiceCategory Text


1812
Update filter component ‘Tariff Type-Handset’ name to ‘TariffTypes’ and update the condition to ‘.TariffType ="Handset"|| .TariffType
="Tablet" || .TariffType ="Dongle"’.

Update Decision Table EvaluateTariffTypes
 In Results tab add new entry for Gigacube as below
Add new entry for Gigacube Tariff Type as below
New Strategy EvaluateInterestedServiceType
Import LineItems in data import component ‘LineItems’
Add a filter component ‘Handset Check’ with condition ‘.ProductType ="Handset"’.
Add set property component ‘ContextData’ and set below mentioned properties with reference from HandsetCheck component.
    set context data
1. SubscriptionType = Primary.SubscriptionType
2. ProductCode =HandsetCheck.ProductCode
3. ServiceCategory/ SubCatgory = Primary.Context(serviceCategory)
Add two filter components in separate paths 1. ‘Web channel’  Filter based on condition Channel ="Web"


1813
   2.  ‘Assisted Channels’ filter based on Channel = "Retail" || Channel = "InboundCC".
Add Decision Table in ‘Web Channel’ path which decides InterestedServiceType based on input of SubscriptionType and SKU
information for Digital channel.
Add Decision Table in 'Assisted Channels’ path which decides InterestedServiceType based on input of Service Category and
SubcriptionType information for Assisted channels
Connect both decision tables to Result component.

Update GetProductListForAdditionalLine GPL Strategy Flow
Remove the all sub strategies called to get the Tariff with Proposition.
Remove the Data Import component ‘LineItems’, Filter component ‘Handset Check’ and Set property component ‘Context Data’.
Call two Sub Strategies GetAllTariffs , GetEligibleTariffsForSKU and EvaluateInterestedServiceType.
Update the Switch component ‘Check Additional Line Context’ with below condition format.
Select GetAllTariffs equalsIgnoreCase(EvaluateInterestedServiceType.InteresstedServiceType,GetA
llTariffs.TariffType) && ProductCode=""
Else Select GetEligibleTariffsForSKU equalsIgnoreCase(EvaluateInterestedServiceType.InteresstedServiceType,GetE
ligibleTariffsForSKU.TariffType) && ProductCode!=""
Otherwise InvalidAdditionalLineContext   Component Condition


1814

Update Strategy AdditionalLinePropositionsLookup
Add filter component ‘Not Discount Offers’ with condition ‘.ProductRecommendationType != "Discount"’ and connect it from filter
component ‘Additional Line Offers’ and connect to set Property component ‘Type - Offers Data’.
Add filter component ‘Discount Offers’ with condition ‘.ProductRecommendationType = "Discount"’ and connect it from filter component
‘Additional Line Offers’ and connect to set Property component ‘Type - Offers Data’.
In Discount Offer path add Proposition Filter component ‘Offer Eligibility’ with CrossSellOfferEligibility PF and connect this to set Property
component ‘Type - Offers Data’.
Add filter component ‘Active Offer To Offer Variation’ with condition ‘.pyIsActive && .Enabled’ after substrategy component
‘ImportAllOfferToOfferVariations’.
Add filter component ‘Active Treatments’ with condition ‘.pyIsActive && .Enabled’ after substrategycomponent ‘ImportAllTreatments.
Add filter component ‘Active Treatment To Treatment Variations’ with condition ‘.pyIsActive && .Enabled’ after substrategy component
‘ImportAllTreatmentToTreatmentVariations.
Add filter component ‘ Non Discount Offer To Offer Variation’ with condition ‘.ProductRecommendationType != "Discount"’ and connect it
to set property component ‘Type - Offer Variations Data’.
Add filter component ‘ Non Discount Offer To Offer Variation’ with condition ‘.ProductRecommendationType != "Discount"’ after
substrategy 'Apply OfferData To OfferToOfferVariations' and connect it to set property component ‘Type - Offer Variations Data’.
Add Propostion Data component ‘CrossSell Offer Variation’ and import all CrossSell offer variations.
After Propostion Data component ' CrossSell Offer Variation' add filter component ‘Active Offer Variation’ with condition ‘.pyIsActive &&
.Enabled’.


.Enabled’.
After Filter component ‘Active Offer Variation’  add Proposition Filter component ‘OfferVariationEligibility’ and call PF
'CrossSellOfferVariationsEligibility’.
After sub strategy component ‘Apply OfferData To OfferToOfferVariations’ add filter component ‘Discount Offer To Offer Variation’ with
condition ‘.ProductRecommendationType ="Discount"’.
Add Data join component ‘Data Join on Offer Variant’ performing join on pyName from OfferVariationEligibility component with
OfferVariant


1815

After Data join component ‘Data Join on Offer Variant’ Set VariantRank = Rank after Data join component ‘Data Join on Offer Variant’.
Call substrategy ‘IdentifyBestOfferVariantForOffer’ after setting VariantRank.
Add filter component ‘EligibleOfferVariants’ with condition .ValueText = "Matched" and connect it to set property component
‘TypeOfferVariationsData’.

Create New Strategy ApplyDiscountTreatementEligibility
Enable External Input
Add 3 Filter components to filter channel based treatments for Web,Retail and InboundCC channels
After respective channel filter call the CrossSell treatments proposition filters like CrossSellWebTreatmentEligibility,
CrossSellRetailTreatmentEligibility, CrossSellInboundCCTreatmentEligibility.
Connect it to Results component.

Update Strategy ManageAdditionalLineDiscount
Get all the details from Decision Data ‘AdditionalLineDiscount’ using Decision Data component.
After Decision Data component filter records based if those are default discounts or not using filter component ‘Is Default Discount’ with
condition IsDefault = “True”.
After external input component perform Data Join on Tenure from IsDefault component against Duration of tariff and set
DefaultDiscountcode = ProductCode, Value = Value in properties mapping.
 Add Group by component after Data join and group based on RecommendedTariffCode and get Max of eligible  Default discount code
per tariff plan and pick up max based on ‘Value’ from DD.
Connect it to existing set property component ‘SetTariffScoreandTariffTier’.


1816
Create New Decision Data : AdditionalLineDiscount
Create new Decision Data with Name AdditionLineDiscount with below mentioned columns and data
Create New Strategy : GetHouseHoldDiscounts
Enable External Input.
Use Decision Data component to get the data from AdditionalLineDiscount DD.
Add Data join on tenure from AdditionalLineDiscount DD and duration of tariff from external input and set DiscountProductcode =
ProductCode in properties mapping.
Connect to Results component.

Update Strategy : IdentifyPromotinalDiscounts
Set property DiscountProductCode = ProductCode in data join component ‘GetAutoAddedDiscountList’  properties mapping.


1817

Update Strategy : GetDiscountProductDetails
Remove the filter component ‘DiscountPercentage’ from Embedded strategy ‘ForeachEachRecordinSetDiscountTier’.

Update Strategy : IdentifyDiscountPerTariff
Replace filter component CrossSellWebTreatmentEligibility with sub strategy ‘ApplyDiscountTreatementEligibility’.
Update the name of Data Join ‘Join Childs’ to ‘Join child to Parent’.
Set DiscountGroup = "Default" in properties mapping of Data Join ‘SetDiscountData’.
Add filter component ‘Assisted Channels' with condition .Channel = “Retail” || .Channel=”InboundCC” in separate path from Data join
‘SetDiscountData’
Call sub strategy ‘IdentifyPromotinalDiscounts’ in separate path from filter component ‘Assisted Channels’.
Set property  DiscountGroup ="Promotion” in set property component ‘setPromoDiscountGroup’ after sub strategy
‘IdentifyPromotinalDiscounts’.
call Substrategy ‘GetDiscountProductDetails’ after set property component ‘setPromoDiscountGroup’.
In separate path from filter component ‘AssistedChannels” call sub strategy ‘GetHouseHoldDiscounts’ and connect it to sub strategy
component 'GetDiscountProductDetails’.
Add filter component ‘IsPromoDiscounts’ with condition ‘DiscountGroup = “Promotion’ in separate path from sub strategy
'GetDiscountProductDetails’ and connect this to Results component.
Add filter component ‘NonPromoDiscounts’ with condition ‘DiscountGroup != “Promotion’ in separate path from sub strategy
'GetDiscountProductDetails’.
Add Data join after filter component ‘NonPromoDiscounts’  based on offerName,Duration and set MaxDiscountAmount =
DiscountAmount and MaxDiscountCode = DiscountProductCode in properties mapping.


DiscountAmount and MaxDiscountCode = DiscountProductCode in properties mapping.
Add filter component ‘MaxDiscountAmount’ with condition 'DiscountProduct != MaxDiscountCode &&
DiscountAmount < MaxDiscountAmount' and connect this to Results component.


1818

Update Strategy : ApplyBundlingForAdditionalLine
Remove embedded strategy ‘ForeachParentTreatmentinHasChildren’.
Update the name of set property ‘Input to For Each’ to ‘Set child’  and set property ParentChild = “Child”.
In Data Join component ‘ChildrenofEligibleParents’ in properties mapping set ParentProductDuration= Duration and
RecommendedTariffMAF = RecommendedTariffMAF.
Connect the set property component ‘Set Child’ to Results component.
Update Strategy : SecondLineDiscountCompatibility
In embedded strategy ‘For each Tariff in Tariffs’  in compatibility path  of filter ‘ReturnCompatibleDiscount’
     add a 3 filter components
First filter component ‘SIMO Plan and NOT Promotional’ with condition TariffType = “SIMOnly” && DiscountGroup!="Promotion".
In first path add a filter component ‘Recommended Tariff is Not a Basic Plan’ with condition ‘!IsBasicsPlan' and connect it to Results
component.
Second filter component ‘SIMO Plan And Promotional Discount’  with condition TariffType = “SIMOnly” && DiscountGroup="Promotion"
and connect it to Results component.
Third filter component ‘Not SIMO Plans’  with condition TariffType != “SIMOnly”  and connect it to Results component.
Update Strategy : CrossSellPlanPriority
Enable external input.
Create 6 separate paths to pick the details which are required to prioritize plans with current sort order
In first path add set property component ‘Define Sort Value 0’ and set below properties.
     HeroPlanId = Primary.Context(HEROPLANID)
     ValueInteger= @if(@String.equals(.ProductID,.HeroPlanId),0,1)


1819
     SortText = ValueInteger
After set property component ‘Define Sort Value 0’ add another set property component ‘Set Sort Order 0’ and set value
ValueText="Asc".
In second path add set property component ‘Define Sort Value 1’ and set below properties.
     ValueInteger1= @if(.RecommendedTariffData>9000000,0,1)
     SortText1 = ValueInteger1
After set property component ‘Define Sort Value 1’ add another set property component ‘Set Sort Order 1’ and set value
ValueText="Asc".
In third path add set property component ‘Define Sort Value 2’ and set below properties.
     ValueInteger2= @if(@String.equalsIgnoreCase(.SegmentofTariff,"Loan"),0,1)
     SortText2 = ValueInteger2
After set property component ‘Define Sort Value 2’ add another set property component ‘Set Sort Order 2’ and set value
ValueText2="Asc".
In fourth path add set property component ‘Define Sort Value 3’ and set below properties.
     ValueInteger3= .RecommendedTariffData
     SortText3 = ValueInteger3
After set property component ‘Define Sort Value 3’ add another set property component ‘Set Sort Order 3’ and set value
ValueText3="Asc".
In fifth path add set property component ‘Define Sort Value 4’ and set below properties.
     ValueDecimal4=
@if(.DiscountAmount<=0,.RecommendedTariffMAF,@if(.DiscountType="GBP",.RecommendedTariffMAF-.DiscountAmount,@if(.DiscountTy
pe="Percentage",.RecommendedTariffMAF*(1-.DiscountAmount),.RecommendedTariffMAF)))
     SortText4 = ValueDecimal4


SortText4 = ValueDecimal4
After set property component ‘Define Sort Value 4’ add another set property component ‘Set Sort Order 4’ and set value
ValueDecimal4="Asc".
In sixth path add set property component ‘Define Sort Value 5’ and set below properties.
     ValueInteger5= @toInt(.ProductID)
     SortText5 = ValueInteger5
After set property component ‘Define Sort Value 5’ add another set property component ‘Set Sort Order 5’ and set value
ValueText5="Asc".


1820

Update Strategy : PrioritizePlans
Update the set property component  ‘All Plans’ and set below properties
      ValueDecimal4 =0, ValueInteger4 =0, ValueInteger5 =0, ValueText=””, ValueText1=””, ValueText2=””,            ValueText3=””,
ValueText4=””, ValueText5=””, SortValue=999999999.
create 6 separate paths for each sort order and call substrategy ‘GetTariffPlanPriority’ with component from ‘Set Sort Order 0’  to ‘Set
Sort Order 5’.
In all 6 paths after substrategy create two separate paths to check Ascending and descending sort value of ValueText.
In ascending path prioritze plans based on SortText and Lowest first.
In ascending path prioritze plans based on SortText and Highest first.
In each path add Switch component ‘Set Rank’ and give precedence to Ascending plans over decending.
From set property component ‘All Plans’  add a data join component ‘Build Final Sort Value’  and do a join on  ‘Set Rank 0’ add a
condition ProductCode = ProductCode and set value SortValue = SetRank0.pxRank*100000.
From data join component ‘‘Build Final Sort Value’ add a data join component ‘Build Final Sort Value 1’ and do a join on ‘Set Rank 1’ add
a condition ProductCode = ProductCode and set value SortValue = .SortValue+(SetRank1.pxRank*100).
From data join component ‘‘Build Final Sort Value1’ add a data join component ‘Build Final Sort Value 2’ and do a join on ‘Set Rank 2’
add a condition ProductCode = ProductCode and set value SortValue = .SortValue+SetRank2.pxRank.


From data join component ‘‘Build Final Sort Value2’ add a data join component ‘Build Final Sort Value 3’ and do a join on ‘Set Rank 3’
add a condition ProductCode = ProductCode and set value SortValue = .SortValue+(SetRank3.pxRank/100).
From data join component ‘‘Build Final Sort Value3’ add a data join component ‘Build Final Sort Value 4’ and do a join on ‘Set Rank 4’
add a condition ProductCode = ProductCode and set value SortValue = .SortValue+(SetRank4.pxRank/100000).
From data join component ‘‘Build Final Sort Value4’ add a data join component ‘Build Final Sort Value 5’ and do a join on ‘Set Rank 5’
add a condition ProductCode = ProductCode and set value SortValue = .SortValue+(SetRank5.pxRank/100000000).
After  data join component ‘‘Build Final Sort Value 5’  add  prioritize component ‘Final Prioritization’ and prioritize based on .SortValue in
Lowest first (1 to 9) order.
connect Prioritize component ‘Final Prioritization’ to set property component 'All Prioritized Plans’.


1821

New Strategy : PrioritiseDiscounts
Enable External Input.
Filter Non Discount Treatments based on condition ProductRecommendationType != “Discount”  and connect External Input to this filter
then connect it to Results component.
In a separate path from External Input add a filter component ‘Discount Treatments’ based on condition ProductRecommendationType =
“Discount”.
Add Groupby  component ' unique discount treatments'  based on ParentProductId(TariffID) and
Set two new properties:
HasPromoDiscount = True if ANY DiscountGroup="Promotion"
HasDefaultDiscount = True if ANY DiscountGroup="Default"
Add Embedded strategy to loop over Tariffs.
In embedded strategy Import all Tariffs in data import.
Add a set property component ‘Calculate Saving’ and set below properties using mentioned formulas
   check if DiscountAmount =0 or Duration =0 then set Saving =0 otherwise calculate Saving based on below formula :
1. If discount type is percentage;
Z = y / b * x (corrected - MPR)
Saving = Duration/ParentProductDuration* DiscountAmount
2. If discount type is monetary;
Z = (y / b) * (x / a)
Saving =( Duration/ParentProductDuration) * (DiscountAmount /RecommendedTariffMAF)
where :
Saving (Z) = monetary saving value (£)
Duration(y) = discount tenure (i.e. the length of the discount promotion in months)
ParentProductDuration(b) = plan tenure (i.e. the contract length of the plan)
DiscountAmount ( x ) = discount amount (either monthly monetary value or % value)


1822
RecommendedTariffMAF(a) = monthly gross acquisition price for plan(RecommendedTariffMAF)
Add Prioritize component ‘Prioritize Discounts’ to priorities discounts based on calculated Savings value of Saving(Z)  in Ascending
order( checking Lowest first in prioritize component).
After prioritize component add set property component ‘Set Rank’ and set below properties as mentioned :
              Set rank for discounts Rank =pxRank
              Set IsRecommended using the following logic:
              If HasPromoDiscount Then
             (If DiscountGroup="Promotion" Then True Else False)
              Else If HasDefaultDiscount Then
              (If DiscountGroup="Default" Then True Else False)
               Else False
Connect to output of embedded strategy
Add empty set Property component ‘output for each’ to collect results from embedded strategy.
in separate path from filter component ‘Discount Treatments’ add a Data join component ‘Get Discount Rank’  and join on
DiscountProductCode= DiscountProductCode  reference from set property component ‘Output for each’ and set the Rank = Rank.
New Strategy : GetEligibleVFTogetherOffersForASLPP
Save existing strategy ‘GetEligibleVFTogetherOffersForAccount’ as ‘GetEligibleVFTogetherOffersForASLPP’.
After External Input in embedded strategy path add Filter component ‘Is eligible For VFT’ to allow only plans which are eligible for VFT
offers based on condition .IncludesCombiBundleOffer = "True".
In embedded strategy ‘For each RecommededTariff’ call new Data page [TBC] which will not have MSISDN as Mandatory, APP will
provide the details of it.


1823

New Strategy : SetOutputPropertiesForVFTOffersASLPP
Save existing strategy ‘SetOutputPropertiesForVFTOffers’ as ‘SetOutputPropertiesForVFTOffersASLPP’.
update the filter condition ‘@equalsIgnoreCase(.AssetIntegrationId,"UpgradingLine")' the string ‘UpgradingLine’ with the value of
AssetIntegrationID which needs to be confirmed by App team.

Update Srategy : PopulateOutputPropertiesForAdditionalLine
Add FIlter component  ‘Tariff Records’ in separate path from filter component ‘ParentTreatments’  with condition
@equalsIgnoreCase(.ProductRecommendationType,"Tariff")
call sub strategy  new Strategy GetEligibleVFTogetherOffersForASLPP to get VFT eligibility and details connect from filter component
‘Tariff Records’.
Call 3 sub strategies SetOutputPropertiesForVFTOffersASLPP, SetOutputPropertiesForVFTQualifierData and
SetOutputPropertiesForVFTRewardData and connect all of them to set Property component ‘Set sessionId’ .
In Child Treatments path after filter component ‘Child Treatments’ add group by  component on ParentProductId and concatenate all the
discounts associated by with it by delimiter ','


1824
Add Set property component “Generate AOMInteractionId“
.AOMInteractionId = @AOMUtilities.GenerateUniqueId()
Add Set property component “Get AOMInteractionId From Context”
.AOMInteractionId = Primary.Context(AOMInteractionId)
Add switch component “Check For AOMInteractionId“
Select component “Get AOMInteractionId From Context” if GetAOMInteractionIdFromContext.AOMInteractionId!=""
Otherwise, select component “Generate AOMInteractionId“
Add set property component “Set AOMInteractionId“
.AOMInteractionId = CheckForAOMInteractionId.AOMInteractionId
Connect the following components to set property component “Set AOMInteractionId“ and disconnect from Results component, if
relevant
SetOutputPropertiesForVFTOffersASLPP
SetOutputPropertiesForVFTQualifierData
SetOutputPropertiesForVFTRewardData
item
Child Item
Set JSON for recommended plans
ResponseType for Unique Treatments
Connect Set Property component “Set AOMInteractionId“ to Results component.


1826
Introduce Execution Mode for GPL

Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - IdentifyExecutionMode
B. Update Strategy - AdditionalLinePropositionsLookup
Impact in Other areas
Dependencies
Logic Changes
A. Update Strategy - IdentifyExecutionMode
Add a SetProperty component and name it as 'ExecutionMode - GPL' and set .ExecutionMode = "GPL"
Update the Switch Component 'Evaluate Execution Mode'  as below
      960691 Introduce Execution Mode for GPL
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes
DB No  Area Yes/No Comments
PM Tool No
App Yes  App changes required to run E2E Logic
DB No  Area Yes/No Comments


1827

B. Update Strategy - AdditionalLinePropositionsLookup
Import Sub strategy 'IdentifyExecutionMode'
Add a Filter Component ‘ExecutionMode check' after the filter 'Additional Line Offers’ and add condition as below
       @String.equalsIgnoreCase(.OfferExecutionMode,IdentifyExecutionMode.ExecutionMode)

Add label


1828
Upgrades - Basic Plans
HL Requirement
Introducing a list of plans as Basic plans, which won’t be recommended. But during edit screen, based on the visibility rules we have to
show in the list.
Basic plans will be eligible if customer is currently holding a basic plan or respective Agent is applicable to show basic plans.
 Assisted Upgrade Business Config:922035Manage the list of Divisions that have access to Basics Plan if the customer is not already on Basics
922031Exclude Basics Plan from the Recommendation Logic
922039/922029Basics Plans Visibility Rules
934644basic plans restrict addon922033Manage the list of basics plans
Logic Yes  Logic update to include basic plans in
recommendation and edit flows.
PM Tool Yes  Need to implement screen for Addon
restriction. -934644. Pm tool config is
required in business config screen to
manage basic plans and divisions.
Logic Yes  Logic update to include basic plans in
recommendation and edit flows.
DB No  Team Task Comments
BasicPlanCodes BasicPlanCodes TBC Logic 922033This config Identifies
if the customer has
one of these relevant
Basic plan Code for
the CTN
BasicPlanDivisionLis
tBasicPlanDivisionLis
tOutbound
Telesales,Outbound
Welcome,Outbound
Retention AOM
Pilot,Outbound
Telesales AOM
Pilot,Outbound
Welcome AOM Logic 922035This config Identifies
if the Division is
applicable for  Basic
plansConfigType ConfigName ConfigValue Logic/App US Usage


1829
New Decision Data -IdentifyRestrictedAddonsforBasicplans

Recommendation Screen:

Update strategy GetListOfBDCandCatalogTariffsForPickNMix (922029)
Filter out basic plans from logic recommendations:
-Add Filter component (NoNBasicPlans)
-compare available plans with list of plans provided in BasicPlanCodes config value.
-if matches, filter out the plans.
Note: from above, we should never recommend basickplans from logic recommendation flow.
Possibility from commercial rec can be possible. But not now.

1.Edit Screen:
 Tariff tab (922039/922029)
Update Strategy GetTariffList
CurrentTariffDetails-
 If current plan id is available in basic plan- Set IsCurrentlyActive = True,else false. And
If Agent division is available in BasicPlanDivisionList- Set .ValueText=”AllowBasicPlans”
After CombineAllTariffs set property – add filter VerifyBasicPlans.
If IsCurrentlyActive=True || ValueText=”AllowBasicPlans” allow basic plans in eligible plans.
 Like   .RecommendedTariffCode in BasicPlanCodes  config value.
 Else, don’t allow basic plans in tariff tab.

2.AddonScreen 934644
Addon Tab
Import DD IdentifyRestrictedAddonsforBasicplans.
Which give list of addons to restrict, for division + plan combination Pilot,Outbound
Retention
TariffId Text New Single Value 112233
Division Text New Single Value Outbound Retention
RestrictedAddons Text New Multiple Value 121212/123456 Field Type   Single/Multiple Sample Value


1830
Join Initialisetemporaryattributes set property with IdentifyRestrictedAddonsforBasicplans
Match the following using datajoin
plan in basket with plan in DD and AgentDivision with division in DD.
Then, skip the addons available from source if they matched with addons in DD.
Skip if available addon in matched with RestrictedAddons