1663
Assisted Upgrade-Channel Reporting
Impacted Areas
DB Changes:
Create new column in IH Reporting table and also extend it to Reporting table view
App Changes:
Logic Changes:
Update SetIHForInboundCC Strategy
Populate related IH attributes from Context data
Please note that this strategy is used for GetRecommendation & Submit Basket flows
 640174 Channel Reporting
App Yes
DB Yes
Logic changes Yes
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
ParentDivision Varchar
ParentPosition VarcharProperty Name Data Type
Create new property in VFUK-FW-AOMFW-Data-InteractionHistoryReporting
ClassParentDivision and ParentPositionIH Reporting Class: VFUK-FW-AOMFW-Data-InteractionHistoryReporting
changesMap ParentDivision and ParentPosition property in the
external mapping tab
ParentPosition .Context("ParentPosition")ParentDivision Context("ParentDivision")


1664
Assisted Upgrade- Commission Tier- Part 2

HL Requirement

Current logic calculates  Net revenue (yearly) for ValidateBasket services
Business want to be able to
Configure monthly commission tiers for each team on PM tool
Provide tier details of the recommendation according to ranges
Also want to show tier details on Tariff tab so the user is aware of what will be the commission user will get if related tariff selected.
Change to Validate Basket Flow
Update Strategy-CalculateBasketFinancials
Current logic uses reuses CalculateNetRevenue strategy to re calculate yearly net revenue for some specific actions.
 Replace CalculateNetRevenue call with CalculateNetRevandCommissionTier
Validate basket should  populate CommissionTier to output (at basket level)
Update ReCalculate Financials component,
set CommissionTier, NetRevenue from CalculateNetRevandCommissionTier534307 Calculate the Tiers to present in the Tariff Tab532531 Recalculate the Commission Tier Indicator in the Edit screen
PM Tool Yes New screen to configure CommissionTierRanges & push to AOM
PM Tool KT Documentation Yes
Knowledge Transfer Yes
DB No
App Yes New Attribute on GetRecommendation ,GetProductList,ValidateBasket >
CommisionTier
Logic will populate CommisionTier
GetRecommendation,ValidateBasket  at Recommendation Level
GetProductList at Lineitem LevelArea Yes/No Comments


1665
Change to Get Product List Flow
Update Strategy -PopulateOutputPropertiesForTariff
Tariff list should include Commission Tier information in the output.
Net revenue calculation will  only include Tariff +  Promotional discount (if available) for each tariff listed.
make sub startegy call to CalculateNetRevandCommissionTier
Input to CalculateNetRevenue
“Child Items for AutoAddedDiscounts”
“Set Properties for Tariff”
Make sure SR attrbiutes need / used in for CalculateNetRevenue popualted before calling
Set RecommendationID=RankPosition
Output  of CalculateNetRevenue > will give tariff based CommissionTier
Populate CommissionTier to tariff records back using Tariff Id as key


1666
Assisted Upgrade-VF Together Reporting

HL Requirement
Recommendation made to customer / accepted deal should store details of VF Together offer for reporting
This information should be stored across the tariff row
Combi Offer id : VF Together offer ID in Siebel offer catalog (Single)
Asset Integration ID : The HBB line’s asset integration ID (The line gets the reward) (Single)
Reward ID= Product ID of the reward discount given to HBB line  (Multiple)

Impacted Areas

Extension on IHReporting  DB Table

Update Strategy- PopulateOutputPropertiesForNBAA
SetOutputPropertiesForVFTRewardData Strategy output
includes multiple List of Rewards that HBB line will get.592871 VF Together Recommendation Reporting
App Yes Update Class Definition
Logic Yes
PMTool No

UI No
DB Yes IH Reporting table and ExtractArea Yes/No Area
CombiOfferId Text max 50 OFF100018
AssetIntegrationId Text max 50 1222343435
RewardProductId Text max 50 1234455,1234434


1667
Also include VF together Offer ID & Asset Integration ID of HBB
Strategy output should be still connected to output
Add a new path , “Group by “ component ,aggregate on PromotionID and set below values
RewardProductId = Contact NewCoId values
AssetIntegrationId =first AssetIntegrationId
CombiOfferId = first CombiOfferId
Populate those values to Tariff Path   via data join on Product ID -PromotionId condition > so will be populated on Tariff records & stored
IH Reporting

Update Strategy -CaptureDealResponseForAssistedUpgrade
Import OffersDetails (VFUK-FW-AOMFW-Int-OfferDetail )
Which Include VF Together details Offer + Qualifying Criteria + Reward , available in the input of SaveResponse service
Set RewardProductId = Concat ProductID of  Reward
Set AssetIntegrationId = AssetIntegrationId of Subsc.  getting the  Reward
Set CombiOfferId  = VF Together Offer ID
Populate those attributes to Parent Offer Record  > so will be stored on Tariff record in IH reporting table


1668
Plans & Discounts to JSON in IH Reporting
Impact in Other areas
 Dependencies
App:
App provided the function ConvertTextToJSONString to convert text values into JSON format.
Logic Changes:
Update Strategy: PopulateOutputPropertiesForAdditionalLine
Modify the existing set property “Set Product Details“ for .ValueText with .ValueText =
"ParentProductId:"+.ParentProductId+","+"DiscountProductCode:"+.DiscountProductCode
Remove the join from the group by component “All Product Details“ with results component.
Connect the group by component “All Product Details“ to the new set property called “Set JSON for recommended plans“
In this set property , set .ProductDetails = @ConvertKeyValuePairsToJSONArray(.ProductDetails)
Connect the set property “Set JSON for recommended plans“ to the result component
Update Data flow: GetProductListForCustomer
Update the filter called “Response Type check for IH“ condition:(.ResponseType!="ProductDetailsforSecondLine" &&
@String.equalsIgnoreCase(.ResponseType,"UniqueTreatmentsList") && @String.equalsIgnoreCase(.OrderType,"In Life Sales"))||
((@String.equalsIgnoreCase(.ResponseType,"UniqueTreatmentsList")&&(@String.equalsIgnoreCase(.OrderType,"Flexi Upgrade")||
(@String.equalsIgnoreCase(.OrderType,"Upgrade")))) andalso keep the same condition as  .DVTMode != true
Update the filter called “Response Type check for IHReporting“ as
(@equalsIgnoreCase(.ResponseType,"ProductDetailsforSecondLine")&& @String.equalsIgnoreCase(.OrderType,"In Life Sales"))|| 711266 Recommended Plans - Write to IH Reporting in JSON Structure
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App Yes
DB No  Area Yes/No Comments
PM Tool No
App Yes
DB No  Area Yes/No Comments


1669
((@String.equalsIgnoreCase(.ResponseType,"UniqueTreatmentsList")&&(@String.equalsIgnoreCase(.OrderType,"Flexi Upgrade")||
(@String.equalsIgnoreCase(.OrderType,"Upgrade"))))) and also keep the same condition as .DVTMode!=true


1670
NBA FW - Conditional investigation
Impact in Other areas
 Dependencies
Data Flows in Scope
Data Flows in Scope
A. IdentifyBestT reatmentsByT riggers (TIL)
A1. New Data Flow - GetBestT reatmentsByT riggers
A2. New C* Data Set - DebugBestT reatmentsByT riggers
A3. New When rule - DebugBestT reatmentsByT riggers
Create a new when rule DebugBestT reatmentsByT riggers on subscription class and Local ruleset
A4. Update Data Flow - IdentifyBestT reatmentsByT riggers
B. ProcessEvent
B1. New Data Flow - GetBestT reatmentByProcessEvent
B2. New C* Data Set - DebugProcessEvent
B3. New When rule - DebugProcessEvent
B4. Update Data Flow - ProcessEvent
C. GetRecommendationList (GRPL)
C1. New C* Data Set - DebugGetRecommendationList
C2. New When rule - DebugGetRecommendationList
C3. Update Data Flow - GetRecommendationList
D. IdentifyBestMicrositeT reatments
D1. New C* Data Set - DebugBestMicrositeT reatments
D2. New When rule - DebugBestMicrositeT reatments
D3. New Data Flow - GetBestMicrositeT reatments
D4. Update Data Flow - IdentifyBestMicrositeT reatments
E. GetNextBestContent
E1. New C* Data Set - DebugGetNextBestContent
E2. New When rule - DebugGetNextBestContent
E3. New Data Flow - SelectNextBestContent
E4. Update Data Flow - GetNextBestContent
F. CaptureResponse


E4. Update Data Flow - GetNextBestContent
F. CaptureResponse
F1. New Data Flow - CaptureAOMResponse
F2. New C* Data Set - DebugCaptureResponse
F3. New When rule - DebugCaptureResponse
F4. Update Data Flow - CaptureResponse
G. GetCustomerNotifications
E1. New C* Data Set - DebugGetCustomerNotifications
E2. New When rule - DebugGetCustomerNotifications
E3. New Data Flow - SelectCustomerNotifications
E4. Update Data Flow - GetCustomerNotifications
H. GetCustomerUsageandAllowance
E1. New C* Data Set - DebugGetCustomerUsageandAllowance
E2. New When rule - DebugGetCustomerUsageandAllowance
E3. New Data Flow - SelectCustomerUsageandAllowance
E4. Update Data Flow - GetCustomerUsageandAllowance752910 User Story 752910: Extend conditional investigation for remaining AOM flows - Boards (mcas.ms)


1671
Impact in Other areas

 Dependencies

Data Flows in Scope

Data Flows in Scope
A. IdentifyBestTreatmentsByTriggers (TIL)
 PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments
IdentifyBestTreatmentsByTriggers(TIL) Non-Assisted
ProcessEvent(T2S) Non-Assisted
GetRecommendationList(GRPL) Non-Assisted
IdentifyBestMicrositeTreatments Non-Assisted
GetNextBestContent Non-Assisted
Capture Response Non-Assisted
GetCustomerNotifications Assisted Upgrade
GetCustomerUsageandAllowance Assisted UpgradeDataflow Name
 Area


1672
A1. New Data Flow - GetBestTreatmentsByTriggers
Create a new DF GetBestTreatmentsByTriggers by creating a copy of  DF IdentifyBestTreatmentsByTriggers
Update the Source from Data Flow to Abstract
A2. New C* Data Set - DebugBestTreatmentsByTriggers
Create a new C* Data Set DebugBestTreatmentsByTriggers on Subscription class with only one Key as CustomerID

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

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


1673
Add new Data Flow - GetBestTreatmentsByTriggers as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugBestTreatmentsByTriggers in the filter condition
in the branch, use new data set DebugBestTreatmentsByTriggers as the destination
B. ProcessEvent

B1. New Data Flow - GetBestTreatmentByProcessEvent
Create a new DF GetBestTreatmentByProcessEvent by creating a copy of  DF ProcessEvent
Update the Source from Data Flow to Abstract


1674

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

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

B4. Update Data Flow - ProcessEvent
Delete all components as highlighted below -

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


1675
C. GetRecommendationList (GRPL)

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

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

C3. Update Data Flow - GetRecommendationList
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugGetRecommendationList in the filter condition
in the branch, use new data set DebugGetRecommendationList as the destination

D. IdentifyBestMicrositeTreatments
D1. New C* Data Set - DebugBestMicrositeTreatments
Create a new C* Data Set DebugBestMicrositeTreatments on Subscription class with only one Key as CustomerID

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


1676
D3. New Data Flow - GetBestMicrositeTreatments
Create a new DF GetBestMicrositeTreatments by creating a copy of  DF IdentifyBestMicrositeTreatments
Update the Source from Data Flow to Abstract

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

Add new Data Flow - GetBestMicrositeTreatments as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - DebugBestMicrositeTreatments in the filter condition
in the branch, use new data set DebugBestMicrositeTreatments as the destination
E. GetNextBestContent
E1. New C* Data Set - DebugGetNextBestContent
Create a new C* Data Set DebugGetNextBestContent on Subscription class with only one Key as CustomerID


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

E3. New Data Flow - SelectNextBestContent
Create a new DF SelectNextBestContent by creating a copy of  DF GetNextBestContent
Update the Source from Data Flow to Abstract

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

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

F1. New Data Flow - CaptureAOMResponse
Create a new DF CaptureAOMResponse by creating a copy of  DF CaptureResponse


1678
Delete all components as highlighted below -

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

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

F4. Update Data Flow - CaptureResponse
Delete all components as highlighted below -


1679

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

G. GetCustomerNotifications
E1. New C* Data Set - DebugGetCustomerNotifications
Create a new C* Data Set DebugGetCustomerNotifications on Subscription class with only one Key as CustomerID

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


1680
E3. New Data Flow - SelectCustomerNotifications
Create a new DF SelectCustomerNotifications by creating a copy of  DF GetCustomerNotifications
Update the Source from Data Flow to Abstract
E4. Update Data Flow - GetCustomerNotifications
Delete all components as highlighted below -
Add new Data Flow - SelectCustomerNotifications as Primary Destination
Add a branch
In the branch, add a filter component “Debug” and call the new when rule - GetCustomerNotifications in the filter condition
in the branch, use new data set GetCustomerNotifications as the destination
H. GetCustomerUsageandAllowance
E1. New C* Data Set - DebugGetCustomerUsageandAllowance
Create a new C* Data Set DebugGetCustomerUsageandAllowance on Subscription class with only one Key as CustomerID

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


1681
E3. New Data Flow - SelectCustomerUsageandAllowance
Create a new DF SelectCustomerUsageandAllowance by creating a copy of  DF GetCustomerUsageandAllowance
Update the Source from Data Flow to Abstract
E4. Update Data Flow - GetCustomerUsageandAllowance
Delete all components as highlighted below -

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


1682
NBA FW - Inbound Seed Testing
Impact in Other areas
 Dependencies
Logic Changes:
Update Strategy - PrepareInboundNBAForSeedTest:
In the strategy called PrepareInboundNBAForSeedTest, update the filter called “Valid Channels“ with below condition
@String.equalsIgnoreCase(SetChannel.Channel,"IVR")|| @String.equalsIgnoreCase(SetChannel.Channel,"App")||
@String.equalsIgnoreCase(SetChannel.Channel,"Web")|| @String.equalsIgnoreCase(SetChannel.Channel,"InboundCC")||
@String.equalsIgnoreCase(SetChannel.Channel,"Retail")||@String.equalsIgnoreCase(SetChannel.Channel,"eCare")
In the existing set property called “Set Channel“ set .Channel=Primary(Channel)
In the same strategy, modify the existing set property name “Set Parent or Child“ to “Set Parent or Child, TargetSubchannel and Seed
Details“
In the set property “Set Parent or Child, TargetSubchannel and Seed Details“ , set additionally .ValueText="SeedTest"
Update Strategy - PopulateOutputPropertiesForWeb
Add an alternate path from filter component - “Execution Mode is GetNBA” and connect the filter called “Execution Mode is GetNBA“ to
the new filter component named “Additional Line Filter” and add the condition in this filter as @equalsIgnoreCase(.Intent,"Buy-Second-
Line")
Connect the new filter called “Additional Line Filter“ to the sub-strategy component - “Get Max Discount“ referencing strategy -
IdentifyMaxDiscountForTariffType
Add a switch component - “Check for eShop - SecondLine Private Pricing” -764882 Extend Channels for Inbound Seed Testing
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer Yes
App TBC
DB No  Area Yes/No Comments
PM Tool No
App TBC
DB No  Area Yes/No Comments


1683
Select component - “PopulateOutputProperties For eShop“, if @equalsIgnoreCase(ExecutionModeisGetNBA.Intent,"Buy-Second-
Line")
Otherwise, select component - “Execution Mode is GetNBA”
Connect the switch component - “Check for eShop - SecondLine Private Pricing” to sub-strategy component -
PopulateOutputPropertiesForGetNBA
Remove the line join between filter called “Execution Mode is GetNBA“ and sub strategy called “PopulateOutputPropertiesForGetNBA“
Connect the filter called “Execution Mode is GetNBA“ to the new filter component named “Non Additional Line Filter Records” and add
the condition in this filter as @notEqualsIgnoreCase(.Intent,"Buy-Second-Line") and then join this filter called “Non Additional Line Filter
Records” to an existing sub strategy called PopulateOutputPropertiesForGetNBA and join this sub strategy to the result component.
Update Strategy - PopulateOutputPropertiesForGetNBA
Remove alternate path (bottom) and the components -
Additional Line Filter
Get Max Discount
PopulateOutputPropetiesForGetNBAPrivatePricing
Remove filter component - “Not Additional Line Filter”
Connect External Input to components -
Product Code Check
ParentChild Check
Set Property for TreatmentActions
Disconnect data join component - “Join Treatment Attributes“ from Results
Join the data join component-“Join Treatment Attributes“ to the new filter component called “Not eShop“ and add the condition in this
filter as (!@equalsIgnoreCase(.Intent,"Buy-Second-Line"))&&
(!@String.equalsIgnoreCase(.TargetSubChannel,"Purchase")&&!@String.equalsIgnoreCase(.TargetSubChannel,"UpgradesAndOffers"))
Join the new filter component called “Not eShop“ to the result component


Join the new filter component called “Not eShop“ to the result component
Add an alternate path from External Input and add filter component - “Child Check - eShop SecondLine Private Pricing” with condition as
.ParentChild != “Parent”
Connect this filter component to the new filter component called “Check - Seed Test or eShop SecondLine Private Pricing Check“


1684
In the new filter called “Check - Seed Test or eShop SecondLine Private Pricing Check“ add the condition
@if(@String.equalsIgnoreCase(.ValueText,"SeedTest"),@if(@String.equalsIgnoreCase(.TargetSubChannel,"Purchase")||@String.equals
IgnoreCase(.TargetSubChannel,"UpgradesAndOffers"),true,false),@equalsIgnoreCase(.Intent,"Buy-Second-Line"))
Connect this filter “Check - Seed Test or eShop SecondLine Private Pricing Check“ to the new set property - Set Scenario and set
.Scenario =”Default”
Add another alternate path from data join component - “Join Treatment Attributes“ and add data join component - “Get Child Data To
Parent - eShop SecondLine” and join with component - “Set Scenario”
With Join Condition -
.TreatmentName = .BundleParentTreatment
Enable “Exclude”
Property mapping -
.DiscountType = .DiscountType
.DiscountAmount = .DiscountAmount
.DiscountCode = @replaceAll(.Identifier,"DP_","")
.AOMInteractionId = .AOMInteractionId
Join this data join “Get Child Data To Parent - eShop SecondLine” to the result component
Add a set property component - “Parent And Child - eShop SecondLine”. Do not set any properties.
Connect the new set property - Set Scenario and set .Scenario =”Default” to the new data join called “Get  Attributes Data for Child Path“
and join with component called “Get Child Data To Parent -  eShop SecondLine“ and add the below Join Condition -
.TreatmentName = .BundleParentTreatment
Dont enable “Exclude”
Property mapping -
.TreatmentAttributes = .TemplateDetails
Connect the above created data join called “Get  Attributes Data for Child Path“ to the new set property - “Set Property For Item“ and in
this set property component set below fields


this set property component set below fields
.ResponseType = "Item"
.ProductID = .ProductCode
.ProductType =
@If(.ProductCode!="",D_VFUKFWAOMFWDataProductReference[ProductCode:.ProductCode].ProductType,"Default")
.Description =
@If(.ProductCode!="",D_VFUKFWAOMFWDataProductReference[ProductCode:.ProductCode].ProductDescription,"Default")
Connect the below following components to the new empty set property component - “Parent And Child - eShop SecondLine” -
“Set Property For Item”
“Get Child Data To Parent - eShop SecondLine”
Connect the empty set property, “Parent And Child - eShop SecondLine” to the new filter component called “Only eShop or Seed Test“
and add the condition in this filter as
@if(@String.equalsIgnoreCase(.ValueText,"SeedTest"),@if(@String.equalsIgnoreCase(.TargetSubChannel,"Purchase")||@String.equals
IgnoreCase(.TargetSubChannel,"UpgradesAndOffers"),true,false),@equalsIgnoreCase(.Intent,"Buy-Second-Line"))
Join the filter component ,”Only eShop or Seed Test“ to the result component.


1686
Release 3.03


1687
Assisted Upgrade - Being able to understand that a customer has been
identified as a 3G customer
HL Requirement
Identify 3G customer and encourage to move to 4G plan.
Impacted Areas
Update Decision Data - CustomerCohorts
New attributes to add
 Update Strategy - EvaluateCohorts
Add a new Strategy call EvaluateCohortBy3GCustomer
New Strategy - EvaluateCohortBy3GCustomer
Set IsValid > if AOM_CUSTOM_CHAR_027 = “Y” True else False
Set Eligible > Check If Is3GCustomer=IsValid
 750993 Being able to understand that a customer has been identified as a
3G customer
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool Yes New Attribute in the ‘CustomerCohorts’ Decision Data
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
Is3GCustomer Boolean Single Value TRUE/FALSE Name  Type  Multiple/Single Possible Values


1688
Assisted Upgrade - Recording the Pilot 1 Interaction outside IH
HL Requirement
Ensure that the IH interactions can be differentiated for PilotUI and VADR.
Impacted Areas
Offer Catalog Change
Include Subchannel=PilotUI in TreatmentSubchannels.
Continue
 664902 Recording the Pilot 1 Interaction outside IH
App Yes Send SubChannel=”PilotUI” for PilotUI
DB No
Knowledge Transfer No
Logic Yes Update Offer Catalog
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


1689
Assisted Upgrade - Profiling
HL Requirement
Do not use Big Data Models when customer has opted out of profiling. However if the Agent selects the 'Refine by' at the request of the
customer, then the recommendations can be executed using Big Data Models.
Impacted Areas693590 Use of 'Refine by' to build a  Logic Recommendations  for a
customer that has opted out of profiling
693596 Storing the fact the customer that has opted out of profiling the AOM
Database
693598 Ensure that the Big Data Models are available for customers that
have opted out of profiling
693600 Discount for customers that have opted out of profiling
693602 Do not Store sensitive data in the AOM Database if the customer has
opted out of Profiling
686126 Edit package- Big Data not been used in the Device tab for
customers Opted out of profiling
684792 Edit package- Big Data not been used in the Tariff tab for customers
Opted out of profiling693585 Logic Recommendations for a customer that has opted out of
profiling
GetRecommendations  (NBA) No Recommendations Logic & Commercial Recommendations
GetRecommendations  (RefineBy) Use BDC models and return Logic
RecommendationsUse BDC models and return Logic
Recommendations
GetProductList (Tariff & Device) (Build Your
Own) Do not include BDC model output to output
indicator to output & do not duplicate records Include BDC model output
GetProductList (Tariff & Device) (NBA) NA Include BDC models
GetProductList (Tariff & Device)  (RefineBy) Do not include BDC model output to output
indicator to output & do not duplicate records Include BDC model output Opted out of Profiling Opted in for Profiling
App No


App No
DB No  Area Yes/No Comments


1690

Update Data Flow AssembleSubscriptionXCAR
Remove skip compose operation > ProfilingConsentFlag='N' from Get Model Scores compose configurations.
Update Strategy CalculateUpgradeDeal
Execute Logic Recommendation if NBAAMode=”NBA” and (ProfilingConsentFlag=Y || Primary.PrimarySubscriptionId!="")  ||
NBAAMode=”RefineBy”
Execute Commercial Recommendation if NBAAMode != ”RefineBy” and ProfilingConsentFlag=Y
In NoRecommendation path, set following information as empty if ProfilingConsentFlag=N
SIMOPathwayModelAttributes
SegmentStrategy
CustomerChurnBand
ModelDetails
https://miro.com/app/board/uXjVOAJ4vJI=/?moveToWidget=3458764522320577064&cot=14 -
Update Strategy GetTariffList, GetDeviceList
Ensure the BDC Models are not fetched if ProfilingConsentFlag=N
https://miro.com/app/board/uXjVOAJ4vJI=/?moveToWidget=3458764522320577294&cot=14 -
https://miro.com/app/board/uXjVOAJ4vJI=/?moveToWidget=3458764522320577298&cot=14 -
 Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool No
PM Tool KT Documentation No
UI/VADR No  Yes
NBA Y Yes Yes
NBA N No No
RefineBy Y Yes No
RefineBy N Yes NoNBAAMode ProfilingConsentFlag Logic Rec Commercial Rec
Connect your Miro account
Connect your Miro account
Connect your Miro account


1691
HBB Upgrade - Get Product List Integration (Tariffs)
HL Requirement
 As a part of the Digital HBB Upgrades Journey, business wants to make sure Digital Platform calls AOM and requests a prioritized list of
Eligible Plans and the personalized Retention discount.
·         Each call to GPL should be stored to IH & IH reporting as single record, containing details of product list in a single field
Impacted Areas751792 HBB - Select list of eligible Plans
751797 HBB - Customer Life Cycle Band
751811 HBB - Managing the HBB Life Cycle Band in PM Tool
751826 HBB - Being Able to Map HBB Plan to Plan Groups
751833 HBB - Being Able to Map HBB Plans to a Technology
751853 HBB - Managing the Plans Groups and the Plans Technologies in
PM Tool
751857 HBB - Plan From /To Eligibility Matrix
751861 HBB - Managing the from /to Eligibility Matrix in PM Tool
751864 HBB - Consuming the HBB Churn Model in AOM
751883 HBB - Managing the HBB Churn Bands
751891 HBB - Being able to manage the HBB churn bands in PM Tool
751899 HBB - Ensure that the recommended HBB Plans are sellable online
751926 HBB - Ensure that the HBB Plans recommended by AOM are eligible
with the eShop Channel751319 HBB - Providing a list of eligible prioritised plans and retention
discounts
App Yes
DB No
Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool Yes
PM Tool KT Documentation No  Area Yes/No Comments


1692
Configurations in PM Tool
New Product Attributes
New Decision Data – HBBTechnolgy.
New Decision Data - GetPackageRankForProductBand
GetPackageRankForProductBand - Data to configure in PMToolUI/VADR No
ProductLevelBan
dNumber Band for each
plan bandSingle Value empty Tariff 1
PlanBand Number Band to group
plans Based on
the speedSingle Value empty Tariff 3
Technology  Text Technology of the
plan Single Value empty Tariff SOGEA with
Speed 40 Name Type Description  Single/Multiple Default Product Type Sample Value
Technology Text Single Values SOGEA with Speed 40,
Description Text Single Value Single Order Generic Ethernet
Access
Enable Boolean Single Value True/False Field Type  Single/Multiple Sample Value
PlanBand Number Unique number for each
Product level band.Single Value 1
ProductLevelBand Number Based on Speed of the
Plan.Single Value 2
PlanGroup Text Description- about plan Text SF1 Essential
PackageRank Number Rank to derive the
eligibility of plan groupsSingle Value 12  Field Type Description  Single/Multiple Sample Value
1 1 SF1 Essential 12
2 1 SF1 Essential Xtra 10
3 1 SF1 Pro 8
4 1 SF1 Pro w/ Genie 6PlanBand ProductLevelBand PlanGroup PackageRank


1693
Update Decision Data - RangeMapping
New Decision Data - EligibleHBBPlans 5 1 SF1 Pro Extra 4
6 1 SF1 Pro Extra w/ Genie 2
1 2 SF2 Essential 11
2 2 SF2 Essential Xtra 9
3 2 SF2 Pro 7
4 2 SF2 Pro w/ Genie 5
5 2 SF2 Pro Extra 3
6 2 SF2 Pro Extra w/ Genie 1
HBBLifeCycleBand1 >6months left on
contract1 -180 -99999
HBBLifeCycleBand2 6 to 3 months left on
contract2 -90 -180
HBBLifeCycleBand3 <3 months left on
contract3 0 -90
HBBLifeCycleBand4 0-3 months Post EOC 4 0 90
HBBLifeCycleBand5 3 to 6 months Post EOC5 90 180
HBBLifeCycleBand6 >6 Post EOC 6 180 99999
     RangeName Description (new) BandID StartValue EndValue
From Plan Band Number Single Value 5
From Product level Band Number Single Value 2
To Plan Band Number Single Value 3
To Product level Band Number Single Value 5
HBB Life Cycle Band Text Single value HBBLifeCycleBand1
IsExclude Boolean Single value True Field Type  Single/Multiple Sample Value


1694
Logic Changes:
Update Strategy GetProductListForUpgrade
Create a new Strategy GetUpgradeTariffListforHBB, call this as a sub strategy based on below conditions.
If SubscriptionType = “Fixed Broadband Service” and Channel= Web
New Strategy GetUpgradeTariffListforHBB
This is the main strategy to provide list of Tariffs & associated discount details.
Step 1 > Map Division To Team
Requests coming from Eshop will be mapped to Eshop division. Make sub-strategy call to GetTeamforAgentDivision to populate Team
Step 2> Get the current plan and context details
Import ProductRoot. Filter ProductRoot with FulFillmentCode=Fixed Broadband Service. Fetch ContractStartDate,ContractEndDate and
ProductCode.
Set ContractDue=Number of days from today till ContractEndDate
Set PlanBand and ProductLevelBand for the ProductCode from D_Tariff Datapage.
Set ClassificationCode = SERVICE_LINE_CLASSIFICATION_CODE from context/Details section of request
Import GetPackageRankForProductBand Decision Data on PlanBand and ProductLevelBand and populate PackageRank.
Set CurrentPackageRank = PackageRank, CurrentProductLevelBand = ProductLevelBand.
Import HBBTechnolgy Decision Data on ClassificationCode = Technology then Populate Enable
Import DiscountBand Decision Data on CurrentProductLevelBand = ProductLevelBand then Set FromDiscountBand=DiscountBand
Import RangeMapping Decision Data on ContractDue between Initial and Final Value. Set CurrentHBBLifeCycleBand=RangeName
Set IsOOC = If CurrentHBBLifeCycleBand is HBBLifeCycleBand4 || HBBLifeCycleBand5 || HBBLifeCycleBand6
Note: Make all the decision data calls in a substrategy.
Step 3 > Get List of Eligible Tariffs
Execute only when Enable = True


Step 3 > Get List of Eligible Tariffs
Execute only when Enable = True
Call D_EligibleTariffs Datapage with required inputs (Division,Channel,OrderType from Context, Team from Step 1). Populate
ProductCode, Name, Duration, Cost From Product Attrributes (Technology,ProductLevelBand,PlanBand).
Import GetPackageRankForProductBand Decision Data on PlanBand and ProductLevelBand and populate PackageRank.
Filter HBB tariffs
if PlanBand!=”” and ProductlevelBand!=”” and Technology(from ProductAttributes) = ClassificationCode (from request) ) and
Duration=24.
Universal rules
SpeedDowngrade
Filter (CurrentProductLevelBand <= ProductLevelBand)
Lateral Renewal Plan
Filter If CurrentPackageRank = PackageRank only when the customer is in the last 6 months of the contract
Last 6 months condition : @CalculateNumberOfDaysFromToday(.LatestContractEndDate)
<0&&@CalculateNumberOfDaysFromToday(.LatestContractEndDate)>=-180
Else If CurrentPackageRank ! = PackageRankCheck then check RankDifferential (CurrentPakageRank - PakageRank > 0)
Exceptional Include cases
Import EligibleHBBPlans Decision Data (configured in pm tool for exceptional cases)


1695
Match the Current product details with EligibleHBBPlans DD based on CurrentProductLevelBand+CurrentPlanBand =
FromProductLevelBand+FromPlanBand (from DD)
Get values of EligibleProductLevelBand and EligiblePlanBand from DD.
Join the Eligible HBB tariffs based on PlanBand=EligiblePlanBand and ProductLevelBand=EligibleProductLevelBand and
IsExclude=False and IsOOC=HBBLifeCycleBand.
Exceptional exclude cases
Exceptional Exclude cases should be on all eligible plans(both exceptional include cases and universal eligible plans)
Filter out the Plans in the main flow by joining the Eligible HBB tariffs from universal rule based on PlanBand=EligiblePlanBand(from
EligibleHBBPlans DD) and ProductLevelBand=EligibleProductLevelBand(from EligibleHBBPlans DD) and IsExclude=True(from
EligibleHBBPlans DD) and IsOOC=HBBLifeCycleBand
When Enable = False or when there is no plans returned from the above cases. Set NoRecommendation=Yes,
LogicAttribute=NoEligiblePlan
Step 4 > Get the personalized retention discount
Make substrategy call to GetDiscountsForHBB.
Step 5 > Prioritize the HBB plans
Make substrategy call to GetRankForHBB
Step 6 > Populate Output properties
Make Substrategy call to PopulateOutputPropertiesHBBTariffsforWeb
Step 7 > Set IH Properties
Make Substrategy Call To SetIHPropertiesForAllChannels
IH reporting attributes to be populated > (beside other generic attributes ) Ensure these are passed till end of the strategy.
New Strategy PopulateOutputPropertiesHBBTariffsforWeb
This strategy is to populate required attributes for API and IH tables.
Step 1> Input list of ordered tariffs


This strategy is to populate required attributes for API and IH tables.
Step 1> Input list of ordered tariffs
Step 2> If NoRecommendation → No then
i) Set Index = pxRank,
ii) Set ResponseType=Item(Tariff properties) as mentioned in below table for tariff records, along with ProductDetails (make a
call to function ConvertTextToJSONString to populate Product details - {TariffId:<Value> , DiscountId:<Value>, TariffPosition:


1696
<Value>, ChurnPropensity:<Value>}
iii) Make a substrategy call to MatchHBBTariffWithPropositions and connect to results.
iv) From iii), group by the unique list of treatments (pyName)
                            ProductDetails <concat> ProductDetails
v) Set ResponseType= UniqueTreatmentList,  LogicTraigeAttribute connect to results.
vi) From i), in a new path filter any discounts available(DiscountProductcode!=””) and set ResponseType= ChildItem(Discount
properties) as mentioned in below table and connect to results.
Step 3> If NoRecommendation → Yes then set below properties.
> ResponseType= UniqueTreatmentList,
> LogicTraigeAttribute
> connect to MatchHBBTariffWithPropositions substrategy.
New Strategy HBBPropositionsLookup
Step1 >
1. Make a substrategy call to ImportAllOffers > HBB Offers.
2. Filter active and enabled offers
3. Set Type = "Offers Data"
4. Make a substrategy call to ApplyOfferDataToOfferToOfferVariations
Step 2>
1. Make a substrategy call to ImportAllOfferToOfferVariations > HBBOfferToOfferVariations.
2. Filter active and enabled offer variations
3. Set Type = "Offer To Offer Variations Data"
4. Make a substrategy call to ApplyOfferDataToOfferToOfferVariations
Step 3>
1. Connect ApplyOfferDataToOfferToOfferVariations to a Set Property and Set Type = “"Offer Variations Data"
2. Connect SetProperty to Substrategy ApplyOfferVariationsDataToTreatments (Step 4, 4)
Step 4>


1697
1. Make a substrategy call to ImportAllTreatments > ImportWebTreatments.
2. Filter active and enabled treatments
3. Set Type = "Treatments Data"
4. Make a substrategy call to ApplyOfferVariationsDataToTreatments
5. Connect to substrategy ApplyTreatmentToTreatmentVariationsDataToTreatments (Step 5, 4)
Step 5>
1. Make a substrategy call to ImportAllTreatmentToTreatmentVariations > HBBTreatmentToTreatmentVariations.
2. Filter active and enabled treatment variants
3. Set Type = "Treatment To Treatment Variations Data"
4. Make a substrategy call to ApplyTreatmentToTreatmentVariationsDataToTreatments
5. Connect to results
New Strategy MatchHBBTariffWithPropositions
1. List of plans
2. Make Substrategy call to HBBPropositionsLookup
3. Set
a. OfferID=HBBPropositionsLookup.OfferID
b. OfferName=HBBPropositionsLookup.OfferName
c. OfferVariant=HBBPropositionsLookup.OfferVariant
d. TreatmentID=HBBPropositionsLookup.TreatmentID
e. TreatmentName=HBBPropositionsLookup.TreatmentName
f. TreatmentVariant=HBBPropositionsLookup.TreatmentVariant
4. Connect to results
Offer Catalogue
Refer the updated offer catalog from here - HBB Proposition Catalog


1698
HBB Upgrade - Get Product List Integration (Discounts and Profiling)
HL Requirement
For each eligible tariff, perform the discount calculations and fetch the discount details (if any).
If customer has opted out of profiling, set the churn propensity to medium.
Impacted Areas

Configurations in PM Tool
New Product Attributes
New Decision Data - RetentionDiscount
 751937 HBB - Retention Price floor
752093 HBB - Maintaining the Price floor in PM Tool Metadata
752096 HBB - Maintaining the Retention Discount
752258 HBB -Create the Retention Discount's configuration
753120 HBB Digital Upgrades Customers that have Opted out of profiling751935 HBB - Calculate the Retention Discount
App No
DB No
Knowledge Transfer No
Logic Yes Update Existing Flow
PM Tool Yes
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
RetentionPriceFloor Number Plan group price floor Single Value Y Tariff 19 Name Type Description  Single/Multiple Mandtor
yProduct
TypeSample Value


1699
New Decision Data - DiscountBand
New Strategy GetDiscountsForHBB
Import RetentionDiscount decision data based on FromProductLevelBand =ExternalInput.FromProductLevelBand,
ToProductLevelBand=ToProductLevelBand, FromPlanBand=ExternalInput.FromPlanBand , ToPlanBand= ExternalInput.ToPlanBand
ChurnPropensity=SetChurnPropensity.ChurnPropensity else ChurnPropensity=All  and
HBBLifeCycleBand=ExternalInput.CurrentHBBLifeCycleBand
Note:
Make Substrategy call to CalculateChurnScoreRange and fetch ChurnPropensity .
C o m p o n e n t N a m e: S e t C h u r n P r o p e n s i t y > ChurnPropensity= if ProfilingConsentFlag=N OR
CalculateChurnScoreRange.ChurnPropensity=”” then Medium else CalculateChurnScoreRange.ChurnPropensity
Main flow
Input is the list of eligible HBB plans and the current plan details.
Set ChurnPropensity= SetChurnPropensity.ChurnPropensity, LogicTriageAttribute = CDNA when ChurnPropensity=””,
RetentionDiscount= RetentionDiscount.RetentionDiscount.
if RetentionDiscount=””, Set LogicTriageAttribute = if LogicTriageAttribute!=””, LogicTriageAttribute+”_”+”DNC” else LogicTriageAttribute
Make substrategy call to IdentifyAutoAddedHBBDiscounts to get the AcquisitionPrice.
RetentionPrice = AcquisitionPrice - RetentionDiscount
RetentionPrice = if RetentionPrice < RetentionPriceFloor then RetentionPriceFloor else RetentionPrice
DiscountAmount = AcquisitionPrice - RetentionPrice
Make substrategy call to GetAutoAddedFBBEOCDiscounts to retrieve the discounts matching with the DiscountAmount.


If DiscountCode=”” then
Make substrategy call to GetAutoAddedHBBDiscounts to retrieve the discounts. FromDiscountBand Text  Single Value Dband1
ToDiscountBand Text  Single Value Dband2
To Plan Band Number  Single Value 2
From Plan Band Number  Single Value 2
From Product level Band Number  Single Value 2
To Product level Band Number  Single Value 2
Retention Discount Number  Single Value 2
ChurnPropensity Text  Single Value High/Medium/Low/
All (default value)
HBBLifeCycleBand Text  Single Value HBBLifeCycleBand1 Field Type Description  Single/Multiple Sample Value
DiscountBand Text  Single Value DBand1
ProductLevelBand Text  Multiple Value 1,2 Field Type Description  Single/Multiple Sample Value


1700
HBB  - 4.5 update
New Strategy IdentifyAutoAddedHBBDiscounts
Input the list of eligible HBB plans (External Input).
Group the unique list of HBB plans and perform the below for each plan.
Query D_DiscountsForTariff with required inputs
Filter .DefaultIndicator="Y" OR .RexAutoAddIndicator="Y"
Set AcquisitionPrice = if DiscountType="Percentage" then TariffExcludingVAT*(Amount/100) else Amount.
Group by HBBplans and aggregate the AcquisitionPrice <SUM> AcquisitionPrice
Map the AcquistionPrice for each recommended HBB plan
New Strategy GetAutoAddedFBBEOCDiscounts
Note: Logic is similar to ApplyDiscountBlock (AU)
Input the list of eligible HBB plans (External Input).
Group the unique list of HBB plans and perform the below for each plan.
Query D_DiscountsForTariff with required inputs
Filter .DefaultIndicator="Y" OR .RexAutoAddIndicator="Y"  and ProductClass =FBB EOC Discount
Set Amount = if DiscountType="Percentage" then TariffExcludingVAT*(Amount/100) else Amount.
Filter the Amount=DiscountAmount
Fetch the highest Discount for each recommended code
Map all the required properties  for each recommended HBB plan
Amount, Discount Name, Discount Type, Discount code, Cost, Cost Ex VAT (Check PopulateOutputPropertiesHBBTariffsforWeb -
Child Line Items)
New Strategy GetAutoAddedHBBDiscounts
Note: Logic is similar to ApplyDiscountBlock (AU)
Input the list of eligible HBB plans (External Input).
Group the unique list of HBB plans and perform the below for each plan.
Query D_DiscountsForTariff with required inputs


Query D_DiscountsForTariff with required inputs
Filter .DefaultIndicator="Y" OR .RexAutoAddIndicator="Y"
Set Amount = if DiscountType="Percentage" then TariffExcludingVAT*(Amount/100) else Amount.
Fetch the highest Discount for each recommended code
Map all the required properties  for each recommended HBB plan
Amount, Discount Name, Discount Type, Discount code, Cost, Cost Ex VAT (Check PopulateOutputPropertiesHBBTariffsforWeb -
Child Line Items)


1701
HBB Upgrade - Get Product List Integration (Prioritization and Reporting)
HL Requirement
Prioritize the eligible HBB plans based on the Churn Propensity.
Store the required details for the Reporting.
Impacted Areas
New Decision Data HBBPlanPrioritisation
 New Strategy GetRankForHBB
E li illh llHBBTifPl ihDi d dil752659 HBB - Manage the plan ordering in PM Tool
752685 HBB Digital Upgrades Reporting
752692 HBB-  Extent the Logic Triage Field to include HBB fields752263 HBB - Order the Plans based on the business maintained priority
App No
DB No
Knowledge Transfer No
Logic Yes Create/update a DD and a strategy
PM Tool Yes Update existing screen
PM Tool KT Documentation No
UI/VADR No  Area Yes/No Comments
FromPlanBand Number Single Value 2
FromProductlevelBand Number Single Value 1
ToPlanBand Number Single Value 2
ToProductLevelBand Number Single Value 2
Rank Number Single Value 7
ChurnPropensity Text Sing Value Medium
LifeCycleBand Text Single value HBBLifeCycleBand1 Field Type  Single/Multiple Sample Value


1702
 External input will have all HBB Tarif Plans with Discounts and context details.
Step1: Import HBBPlanPrioritisation Decision data. Filter the records based on the Current plan details
If Externalinput.CurrentplanBand = FromPlanBand && Externalinput.CurrentProductlevelBand= FromProductlevelBand.
Populate Rank,FromPlanBand ,FromProductlevelBand , ToPlanBand and ToProductLevelBand, ContractEndPeriodEnd and
ContractEndPeriodStart.
 Step 2: Match the Results based on Churn propensity.
Churn propensity can be derived from CalculateChurnScoreRangeStrategy.
Make a sub-strategy call to CalculateChurnScoreRange (Existing Strategy)
Filter results based on the customer Churn value.
Step 3: Derive NoOfDaystoContractEndDate from Customer’s LatestContractEndDate.
step 4: Set LifeCycleBand based on the NoOfDaystoContractEndDate. (check if it is already derived earlier, so should be available )
Filter records based on the life cycle band.
Join the available records from HBBPlanPrioritisation DD with External input based on the ToPlanBand and ToProductLevelBand
Populate Rank = Rank (from DD) only if PlanBand = ToPlanBand and ProductLevelBand= ToProductLevelBand Matches.
if Rank=””, Set LogicTriageAttribute = if LogicTriageAttribute!=””, LogicTriageAttribute+”_”+”PNC” else LogicTriageAttribute
Update Strategy SetIHforWeb

RequestType New From GPL requestKey Existing/New Value


1703
Contact Rules - Introduce New Configuration at T2TV Level
Impact in Other areas
 Dependencies
Logic Changes:
A. Update T2TV decision data structure for all Issues + PM Changes
Add the below new SR properties to T2TV DDS
ApplyT2TVSelfContentionStrategy (Text)
FallowPeriodForDismissedResponse (Integer)
FallowPeriodForEngagedResponse (Integer)
SaturationRatePeriod
SaturationRateCount
B. Update GetIHAtCustomerLevel Strategy
Import T2TV SubStrategy
Add a Filter ‘Selection By Shown Outcome’ and
@String.toUpperCase(.Outcome)="SHOWN"&&@String.toUpperCase(.StandardOutcome)="PRESENTED" and connect from
StandardOutcome check Component
Add a Datajoin and connect from  Selection By Shown Outcome Filter Component and from T2TVSubstrategy as Reference and Match
based on OfferName ,Offervariant,TreatmentName,TreatmentVariant and map SaturationRatePeriod and SaturationRateCount and do
Exclude check
Create new Set Property Save Batch OutcomeDate By Shown Outcome and get connected from above Datajoin755144 Contact Rules - Introduce New Configuration at T2TV
Level
PM Tool Yes  Need new columns in T2TV Screen
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes   Need new columns in T2TV Screen
App No
DB No  Area Yes/No Comments


1704
Add new Filter Batch Selections By Shown Within SaturationRatePeriod and add below Condition
@if(.SaturationRatePeriod>=0,@CalculateNumberOfDaysFromToday(.OutcomeDate)<.SaturationRatePeriod,false) and get connected
from above Set Property
Add a GroupBy 'Get CountSinceSaturationRatePeriod for Batch Selection By Shown' and add as below and get Connected from Above
Filter

Add new Filter 'Get CountSinceSaturationRatePeriod for Batch Selection By Shown Validation' as .pyName != "" and connect from
Above Component
Add a SetProperty CountSinceSaturationRatePeriod for Selection By Shown and Connect to Results
C. Create new Strategy ApplyT2TVSelfContention
Start with external input and add 2 filter components
Add a Set Property
if  ConfidenceScoreRange=”High” then connect to Set Property
if  ConfidenceScoreRange !=”High” then connect to Datajoin
Add a Datajoin (Join with Shown Response) from above Filter and Call sub-strategy GetIHAtCustomerLevel, component
“CountSinceSaturationRatePeriod for Selection By Shown ” and Join it based on OfferName, Offer Variant, TreatmentName and
Treatment Variant   And map .CountSinceSaturationRatePeriod
and add filter Check Impression Rate and add below Condition and Connect to SetProperty
               .CountSinceSaturationRatePeriod <= .SaturationRateCount
If ApplyT2TVSelfContentionStrategy != Yes OR ConfidenceScoreRange=”High” then connect to Results and get Connected from above
SetProperty
If ApplyT2TVSelfContentionStrategy = Yes and ConfidenceScoreRange !=”High”  then add filter components in line as below:
Add a Datajoin (Join with Dismissed Response) from above Filter and Call sub-strategy GetIHAtCustomerLevel, component “Get


Latest Batch Selection By Subscription Dismissed” and Join it based on OfferName, Offer Variant, TreatmentName and Treatment
Variant  And map .DaysSinceLastDismissedResponse, and .ValueText3 = "Dismissed IH Present"
Check Fallow Period For Dismissed Response Filter - @if(.ValueText3="Dismissed IH Present",
@if(.FallowPeriodForDismissedResponse>0,.DaysSinceLastDismissedResponse>.FallowPeriodForDismissedResponse,true),true)
Connect Above Filter to new Datajoin (Join with Engaged Response)


1705
Add a Datajoin from above Filter and Call sub-strategy GetIHAtCustomerLevel, component “Get Latest Batch Selection By
Subscription Engaged” and Join it based on OfferName, Offer Variant, TreatmentName and Treatment Variant   And map
.DaysSinceLastEngagedResponse and .ValueText3 = "Engaged IH Present"
Check Fallow Period For Engaged Response Filter - @if(.ValueText3="Engaged IH Present",
@if(.FallowPeriodForEngagedResponse >0, .DaysSinceLastEngagedResponse > .FallowPeriodForEngagedResponse, true ), true)
Connect to Results.
D. Update GetIHAtCustomerLevel Strategy
Add a new filter component "Selection By Subscription Engaged"
Connect to Data Import "Import Interaction History Records"
.StandardOutcome="Engaged"
Add new set property components:
1. Save Batch Outcome Date By Subscription Engaged
a. Set .ValueText = .OutcomeDate
b. Connect From new filter "Selection By Subscription Engaged"
Add new group by components:
Get Latest Batch Selection By Subscription Engaged
Connect with "Save Batch Outcome Date By Subscription Engaged" set property component
Group by “TreatmentName“
Set .OutcomeDate to Max of .OutcomeDate
With highest .OutcomeDate
Select "Include all model results in group"
Add new set property components:
Reset Batch Outcome Date By Subscription Engaged
Connect with "Get Latest Batch Selection By Subscription Engaged" group by component
Set .OutcomeDate = .ValueText
Add new set property components:
1. Latest Batch Selection By Subscription Engaged
a. Connect with "Reset Batch Outcome Date By Subscription Engaged" set property component
b. Set .DaysSinceLastEngagedResponse= @AOMUtilities.CalculateNumberOfDaysFromToday(.OutcomeDate)


E. Update IdentifyBestAppTreatmentsForSubscription Strategy
 Remove ApplyTreatmentSelfContention Strategy from Main Path
F. Update IdentifyBestIVRTreatmentsForSubscription Strategy
 Remove ApplyTreatmentSelfContention Strategy from Main Path
G. Update IdentifyTreatmentVariations Strategy
Add SubStrategy ApplyT2TVSelfContention
Connect it from Eligible Treatment Variants Component
and SubStrategy To ApplyAdditionalTreatmentVariationValidations SubStrategy
H. Update ApplyOfferVariationsDataToTreatments Strategy
Update data join “Map Offer Variations Data To Treatments”  to add mapping .ConfidenceScoreRange = .ConfidenceScoreRange
I. Update ApplyOfferDataToOfferToOfferVariations Strategy


1706
Update data join “Map Offer Data To Offer To Offer Variations”  to add mapping .ConfidenceScoreRange = .ConfidenceScoreRange
J. Update IdentifyCrossSellTreatmentVariations Strategy
Update data join “Eligible Treatment Variants For Eligible Treatment”  to add mappings
.ApplyT2TVSelfContentionStrategy = .ApplyT2TVSelfContentionStrategy
.FallowPeriodForDismissedResponse = .FallowPeriodForDismissedResponse
.FallowPeriodForEngagedResponse =.FallowPeriodForEngagedResponse
.SaturationRateCount = .SaturationRateCount
K. Update ApplyTreatmentToTreatmentVariationsDataToTreatments Strategy
Update data joins “Eligible Treatment Variants For Eligible Treatment” and “Eligible Treatment Variants For Eligible Treatment - Assisted”
to add mappings
.ApplyT2TVSelfContentionStrategy = .ApplyT2TVSelfContentionStrategy
.FallowPeriodForDismissedResponse = .FallowPeriodForDismissedResponse
.FallowPeriodForEngagedResponse =.FallowPeriodForEngagedResponse
.SaturationRateCount = .SaturationRateCount


1707
Validate NBA for eligible Treatment to Treatment Variant
Impact in Other areas
 Dependencies
PM Changes
While Working on the T2TV Screen ,We should get Warning ,if Default Treatment Variant is not tagged to the Treatments

 757764 Validate NBA for eligible Treatment to Treatment Variant

PM Tool Yes Kausik ,Matt To Discuss with Venkat
PM Tool KT Documentation No
Knowledge Transfer No
App No
DB No  Area Yes/No Comments
PM Tool Yes Kausik ,Matt To Discuss with Venkat
App No
DB No  Area Yes/No Comments


1708
Siebel Orders - Expose data to logic
Impact in Other areas
 Dependencies
Logic Changes:
 725027 Siebel Orders - Expose data to logic
PM Tool No
PM Tool KT Documentation No
Knowledge Transfer No
App Yes  Need Siebel order data feed related Data sets
DB No  A r e a Y e s / N o C o m m e n t s
PM Tool No
App Yes  Need Siebel order data feed related Data sets
DB No  A r e a Y e s / N o C o m m e n t s


1709
Channel Management - SMS

Impact in Other areas
Dependencies
Logic Changes
A. New Data Set - BestSMST reatmentsForChannelManagement
B. New Data Set - UniqueListOfSMSCustomersForChannelManagement
C. New Data Flow - ProcessSMSByBatch
D. Update Data Flow - ProcessOutbound
E. New Data Flow - PrepareDataForChannelManagement
F. New Data Flow - ProcessSMSByChannelManagement
G. New Strategy - SetSMSPropertiesForChannelManagement
H. Update Strategy - PrepareSMST reatment
Impact in Other areas
Dependencies

Logic Changes
A. New Data Set - BestSMSTreatmentsForChannelManagement
Create a new C* Data Set BestSMSTreatmentsForChannelManagement on SR class with following keys - 682821 Remove Pega Marketing for batch SMS
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


1710
pySubjectID
pyName
OfferID
TargetSubChannel
OfferVariant
TreatmentVariant
SegmentKey
B. New Data Set - UniqueListOfSMSCustomersForChannelManagement
Create a new C* Data Set UniqueListOfSMSCustomersForChannelManagement on Subscription class with only one Key as CustomerID
C. New Data Flow - ProcessSMSByBatch
Source - Abstract
Primary Destination - Data Set - BestSMSTreatmentsAfterControlGroups
Filter for Primary Destination - “SMS By Pega Marketing“ and evaluate true if when rule -
Toggle_ChannelManagement20220420T132037 (Created by App as part of Feature Toggle) returns false
Add Branch for secondary destination - Data Set - BestSMSTreatmentsForChannelManagement
Filter for Secondary Destination - “SMS By Channel Management 1“ and evaluate true if when rule -
Toggle_ChannelManagement20220420T132037 (Created by App as part of Feature Toggle) returns true
Add Branch for secondary destination - Data Set - UniqueListOfSMSCustomersForChannelManagement
Filter for Secondary Destination - “SMS By Channel Management 2“ and evaluate true if when rule -
Toggle_ChannelManagement20220420T132037 (Created by App as part of Feature Toggle) returns true
Add Convert after Filter - “SMS By Channel Management 2“ to convert from SR class to Subscription class

D. Update Data Flow - ProcessOutbound
Replace the destination on “SMS Treatments” branch from Data set - BestSMSTreatmentsAfterControlGroups with new Data flow -
ProcessSMSByBatch


1711

E. New Data Flow - PrepareDataForChannelManagement
Source - Subscription data set
Compose with Data Flow - PrepareAccountData
Join on AccountNumber = OwnerAccountNumber
Into property CustomerAccount
Compose with Data set - InteractionHistory
Join on SubscriptionId = .CustomerID
Into property InteractionHistoryList
Primary Destination - Abstract
F. New Data Flow - ProcessSMSByChannelManagement
Source - UniqueListOfSMSCustomersForChannelManagement data set


1712
Merge with Data Flow - PrepareDataForChannelManagement
Join on CustomerID
Default path = Secondary
Compose with Data set - BestSMSTreatmentsForChannelManagement
Join on pySubjectID = CustomerID
Into property TreatmentList
Call Strategy  PrepareSMSTreatment
Primary Destination data set - SMS Staging (To be confirmed by App)
Add Convert shape to convert from SR class to SMS Staging class as per the mapping below -
Add branch - secondary destination - data set - pxInteractionHistory
Add branch - secondary destination - data set - IH Reporting

G. New Strategy - SetSMSPropertiesForChannelManagement
Enable External Input queue_id QueueId
interaction_id pxInteractionID
treatment_name pyName
treatment_variant TreatmentVariant
offer_name OfferName
offer_variant OfferVariant
create_datetime pxDecisionTime
payload Payload
priority pxPriority
partition_key PartitionKey
account_pool AccountPool
destination_address ContactDetailSMS Staging (Target) SR (Source)


1713
Add set property component - “Set Channel Management Properties” and set the following properties
H. Update Strategy - PrepareSMSTreatment
Call sub-strategy  - “Set Channel Management Properties” between sub-strategy component -
PopulateOutputPropertiesForSMSByBatch and SetDefaultValuesToIHProperties
 QueueId @AOMUtilities.GenerateUniqueId()
MessageBody SMSBodyText
Payload @AOMUtilities.GetJSONOfArtifactsPage(myStepPage)
AccountPool "BatchNBA"SR property Population Notes


1714
Move output properties to Squad Zones

Impact in Other areas
Dependencies
Logic changes :
Populate Output Properties change
Create a new strategy with naming convention as Populate[squadname]OutputProperties for each Business Purpose, which should be
placed in AOMFW-Business-Artifacts rule set so that it can be updated by the different squad developers.  Following is the list of
strategies needs to be created.
1.  PopulateCareOutputProperties
2.  PopulateCrossSellOutputProperties
3. PopulateEngagementOutputProperties
4. PopulateHBBOutputProperties
5. PopulateLoyaltyOutputProperties
6. PopulateRenewOutputProperties
7. PopulateRetainOutputProperties
8. PopulateRetentionOutputProperties
9. PopulateServiceOutputProperties
10. PopulateTradeInOutputProperties
11. PopulateUpsellOutputProperties
These strategies will be place holders only with below structure.754957 Move output properties to Squad Zones
App No
DB No
Knowledge Transfer No
PM Tool No
PM Tool KT Documentation No  Area Yes/No Comments
PM Tool No
App No
DB No  Area Yes/No Comments


1715
Enable external Input.
Add a Set Property component with name ‘Set [SquadName] Specific Output Properties’ .
Connect Set Property component to Result component.

create new master strategy PopulateSquadSpecificOutputProperties  in Business Artefact and call all
Populate[squadname]OutputProperties strategies based on squad(Business Purpose) filter condition in it.
From external input connect it to squad specific filter condition e.g. For CrossSell Filter condition :
@equalsIgnoreCase(.BusinessPurpose,CrossSell) then call substrategy PopulateCrossSellOutputProperties finally connect the substrategy
to Result component.
Repeat above process for all existing squads.
Update each of the below existing strategy and add external subStrategy component to call substrategy -
PopulateSquadSpecificOutputProperties  just before the Result component.
PopulateOutputPropertiesForBatch
PopulateOutputPropertiesForEmailByBatch
PopulateOutputPropertiesForMicrosite
PopulateOutputPropertiesForSMSByBatch
PopulateOutputPropertiesForT2S
PopulateOutputPropertiesForT2SControlGroups
PopulateOutputPropertiesForApp
PopulateOutputPropertiesForIBCC
PopulateOutputPropertiesForIVRAndSMS
PopulateOutputPropertiesForWeb
PopulateOutputPropertiesForeCare                                                                      PopulateOutputPropertiesForTrigger
IH & IH Reporting change
Populating IH properties already have common properties and Default properties defined.
PopulateSquadSpecificOutputProperties


1716
Create a new strategy with naming convention as Set[squadname]IHProperties for each Business Purpose, which should be placed in
AOMFW-Business-Artifacts rule set so that it can be updated by the different squad developers.  Following is the list of strategies needs
to be created.
1. SetCareIHProperties
2. SetCrossSellIHProperties
3. SetEngagementIHProperties
4. SetHBBIHProperties
5. SetLoyaltyIHProperties
6. SetRenewIHProperties
7. SetRetainIHProperties
8. SetRetentionIHProperties
9. SetServiceIHProperties
10. SetTradeInIHProperties
11. SetUpsellIHProperties
These strategies will be place holders only with below structure.
Enable external Input.
Add a Set Property component with name ‘Set [SquadName] Specific IH Properties’ .
Connect Set Property component to Result component.

create new master strategy SetSquadSpecificIHProperties in Business Artefact and call all Set[squadname]IHProperties strategies
based on squad(Business Purpose) filter condition in it.
From external input connect it to squad specific filter condition e.g. For CrossSell Filter condition :
@equalsIgnoreCase(.BusinessPurpose,CrossSell) then call substrategy SetCrossSellIHProperties finally connect the substrategy to Result
component.
Repeat above process for all existing squads.
SetSquadSpecificIHProperties


1717
Update existing strategy SetIHPropertiesForAllChannels and add external subStrategy component to call strategy -
SetSquadSpecificIHProperties just before the Result component.


1718
Priority Cutoff Score Changes

Impact in Other areas
Dependencies

Logic Changes
Withdraw property PriorityCutOffScore from application
Create New Property PriorityScoreCutOff of type Double
Update all Offers Decision Data for all businesspurposes in the form tab with new property PriorityScoreCutOff and remove
property PriorityCutOffScore in the form tab.
Strategy Changes:
Update Strategy ApplyOfferDataToOfferToOfferVariations:
In the data join “Map Offer Data To Offer To Offer Variations“ in the properties mapping tab remove mapping PriorityCutOffScore and
map PriorityScoreCutOff
Update Strategy ApplyOfferVariationsDataToTreatments
Update the data join called “Map Offer Variations Data To Treatments“ in properties mapping with PriorityScoreCutOff and remove
mapping PriorityCutOffScore
Update Strategy IdentifyBestEmailTreatmentForBatch
Update the existing set property called “PriorityCutOffScore“ with new condition.723762 PriorityCutOff Score Changes (CR)
App No
DB No
Knowledge Transfer No
PM Tool Yes
PM Tool KT Documentation Yes  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments


1719
Remove Condition
PriorityCutOffScore = @if(.PriorityCutOffScore!="",.PriorityCutOffScore,0)
Update with new condition
.PriorityScoreCutOff = @if(.PriorityScoreCutOff!="",.PriorityScoreCutOff,0)
Change set property component name from “PriorityCutOffScore“ to PriorityScoreCutOff
Update the filter “Apply Priority Cut Off Score“ condition to .pxPriority> PriorityScoreCutOff.PriorityScoreCutOff
Update Strategy IdentifyBestTreatmentForBatch
Update the set property called “PriorityCutOffScore“ with new condition.
Remove Condition
.PriorityCutOffScore= @if(.PriorityCutOffScore!="",.PriorityCutOffScore,0)
Add new condition
.PriorityScoreCutOff = @if(.PriorityScoreCutOff!="",.PriorityScoreCutOff,0)
Change set property component name from “PriorityCutOffScore“ to PriorityScoreCutOff
Update the filter “Apply Priority Cut Off Score“ condition to .pxPriority> PriorityScoreCutOff.PriorityScoreCutOff


1720
NBA FW - Redesign Outbound 2nd line PP

Impact in Other areas
 Dependencies
Logic Changes:
Create New Strategy: AssignDiscountToAdditionalLineOffers
Enable External Input
Connect External Input to existing Substrategy called “GetAllTariffs“
And also connect external to new filter “Discount“ and add condition in the filter as @String.equalsIgnoreCase(.ParentChild,"Child")
Join this filter to new set property “Set Product from O2OV“ , In this set property set .DefaultDiscountProductCode=.ProductCode
Connect the above set property to data join , “Get Duration and Data for Eligible TariffType“ and in this data join , join with existing sub
strategy GetAllTariffs with match  as .OfferCategory=.OfferCategory and .ProductGroup=.ProductGroup and mark exclude check box to
true(consider only matched records) and map below properties 769551 Use discount matrix within batch framework to determine
product group max % 2nd line discount
769675 Cross sell legal compliance - Extend logic to batch
framework
769889 Validate output using dummy SMS764882 Test cell management - Extend capability to batch
framework
PM Tool Yes
PM Tool KT Documentation No
Knowledge Transfer Yes
App No
DB No  Area Yes/No Comments
PM Tool Yes
App No
DB No  Area Yes/No Comments


1721
Connect the above data join, “Get Duration and Data for Eligible TariffType“ to new sub strategy called “ManageAdditionalLineDiscount“
Connect the substrategy , “ManageAdditionalLineDiscount“ to substrategy “DiscountCompatibilityCheck“
Join the sub strategy  “DiscountCompatibilityCheck“ to sub strategy called “GetDiscountProductDetails“
Connect the sub strategy “GetDiscountProductDetails“ to new sub strategy called “GetHeadlineDiscount“
Join the new sub strategy “GetHeadlineDiscount“ to an empty set property called “Compatible Max Discount per Tariff“ and join this
empty set property component to result component
Connect an existing external input component to new filter called “Tariffs“ and add condition as
@String.equalsIgnoreCase(.ParentChild,"Parent")
Join the Tariffs filter to group by component, “Select Unique Parent Treatments“ and apply group by .pyName
Connect to above added group by component to new data join , “Assign CellCode and TestGroupExpiry to Parent“ and join this with an
existing empty set property “Compatible Max Discount per Tariff“ and join on condition with .pyName=.BundleParentTreatment and in
properties map tab below properties
Note: Dont check Exclude source component results that do not match join condition.
Connect the data join , “Assign CellCode and TestGroupExpiry to Parent“ to result component


1722
New Strategy: ManageAdditionalLineDiscount
Enable External Input
Connect an external input to new set property called “Set TariffScore and TariffTier“ and set below properties
Import existing decision data called “AdditionalLineDiscountMatrix“
Connect set property , “Set TariffScore and TariffTier“ to new data join called “Match with Eligible Tariff Types“ and join it with existing
decision data “Set TariffScore and TariffTier“ and join it with below conditions
and in the properties mapping tab, map .DiscountIdentifier=.DiscountIdentifier
Connect the data join to new set property called “Set Discount Details“ and set below details
Join the set property “Set Discount Details“ to result component.ValueDecimal @divide(.RecommendedTariffData,1000000,5,ceiling)
.TariffScore @if((.ValueDecimal<20),10,@if((.ValueDecimal>=20&&.ValueDecima
l<=100),50,@if(.ValueDecimal>100,80,0)))
.TariffTier @if(.TariffScore=10,"Low",@if((.TariffScore=50),"Medium","High")).DefaultDiscountProductCode @if(@String.startsWith(.DefaultDiscountProductCode,"DP_"),.Defaul
tDiscountProductCode,"DP_"+.DefaultDiscountProductCode)
.Identifier .DiscountProductCode.DiscountProductCode @if(.DiscountIdentifier!="",.DiscountIdentifier,.DefaultDiscountProduc
tCode)


1723
Create New Strategy: DiscountCompatibilityCheck
Enable external input and connect it to set property called “Tariffs“ and set below properties as
In embedded strategy “For each Tariff in Tariffs“ iterate over Tariffs as Tariff
In embedded strategy, import data import called “Each Tariff“ with page called “Tariff“ and
Connect above data import called Each Tariff to new set property called “Tariff Data“ and set
.ValueText3=@substring(.DiscountProductCode,3)
In embedded strategy, import new data import component called “Eligible Discount For Tariff“ with page
D_DiscountsForTariff[Identifier:@if(EachTariff.Identifier!="",EachTariff.Identifier,"NA"),Channel:@if(EachTariff.Channel!="",EachTariff.Cha
nnel,"NA"),OrderType:@if(EachTariff.OrderType!="",EachTariff.OrderType,"NA")].pxResults and in properties mapping tab map below
properties as
Connect above data import “Eligible Discount For Tariff“ to an empty set property “Discounts for Tariff“
Connect an existing set property ,”Tariff Data” to new data join called “Match with Compatible Discounts Data“ and join this with an
empty set property called “Discounts for Tariff“ with matching condition as .ValueText3=DiscountsforTariff.ProductCode and in properties
mapping tab map .IsDiscountCompatible=”Yes”
Connect output of embedded strategy to an empty set property called “Output All Tariffs“ and set .ValueText3=””
Join the data join “Output All Tariffs“ to two new filters called “Tariffs with Compatible Discounts“ and “Tariffs with Non Compatible
Discounts“


Discounts“
Add the condition as @String.equalsIgnoreCase(.IsDiscountCompatible,"Yes") in the filter called “Tariffs with Compatible Discounts“ and
connect it to result component
Add the condition as @String.notEqualsIgnoreCase(.IsDiscountCompatible,"Yes") in the filter called “Tariffs with Non Compatible
Discounts“ and connect it to new empty set property called “Override DiscountCode for InCompatible Tariffs“ and set
.DiscountProductCode=”” and .Identifier=”” and join this to set property to result component
.Channel "Web"
.OrderType @If(Primary.Context(ExecutionMode)="GetNBA","In Life
Sales",Primary.Context(OrderType)).Identifier "P_"+.RecommendedTariffCode


1724
New Strategy: GetDiscountProductDetails
Save as an existing strategy called “CalculateDiscountPerTariff“ and update strategy
Disconnect external input and existing set property called Set Discount Tier
Connect external input to two new filters called “GetNBA Execution Mode“ and “Not GetNBA Execution Mode“
In the filter called “GetNBA Execution Mode“ add condition as @String.equalsIgnoreCase(Primary.Context(ExecutionMode),"GetNBA")
and join it with two new filters called “Tariffs with Non Compatible Discounts“ and “Tariffs with Compatible Discounts“
In the filter “Tariffs with Non Compatible Discounts“, add condition as @String.notEqualsIgnoreCase(.IsDiscountCompatible,"Yes") and
The above filter join it to new set property called Override DiscountCode for InCompatible Tariffs and set below properties and connect it
to result component
In the filter, “Tariffs with Compatible Discounts“ add the condition as @String.equalsIgnoreCase(.IsDiscountCompatible,"Yes") and
connect this to an existing set property called “Set Discount Tier“ and in this set property set .Identifier = .DiscountProductCode and no
changes in existing embedded strategy.
Create New Strategy: GetHeadlineDiscount
Enable external input to two new group by components
In first group by component named “Group by Tariff Propositions“ do group by based on below properties


1725
In second group group by called “Group by Tariff Propositions and DiscountAmount“ apply group by based on below properties
Join the above group by “Group by Tariff Propositions and DiscountAmount“ to new data join component called “Match Unique Tariffs
with unique tariffs and discounts“ and in this data join component, join it with below conditions and map properties
Connect above data join “Match Unique Tariffs with unique tariffs and discounts“ to new set property called “Calculate Coverage“ and set
.LegalCoverage=@divide(.TotalTariffCount1,.TotalTariffCount2,8)
Import new set property component called “Set Legal Compliance“ and set
.LegalCompliance=@if(D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:LegalRequirement,ConfigName:SecondLine].Config


1726
Value!="",@ToInt(D_VFUKFWAOMFWDataAOMBusinessConfig[ConfigType:LegalRequirement,ConfigName:SecondLine].ConfigValue),
0)
Join the set property called “Calculate Coverage“ to new filter component named , “Only Legal Compliance records“ and update filter
condition as .LegalCoverage>=SetLegalCompliance.LegalCompliance
Connect the filter “Only Legal Compliance records“ to new group by component called “Max Discount“ and add below conditons
Connect the group by “Max Discount“ to new set property called “Set Max Discount Amount“ and set
.MaxDiscountAmount=.DiscountAmount and also set .ProductCode=@If(.MaxDiscountAmount!=0,.Identifier,"") and connect this set
property component to result component
Update Existing Strategy: GetAllTariffs
Disconnect the sub strategy “AdditionalLinePropositionsLookup“ and existing filter called “TariffType Validation“
Enable external input and connect external input to switch component called “Choose Tariffs By Execution Mode“ and select external
component if Primary.Context(ExecutionMode) = "GetNBA" is satisfied otherwise chose AdditionalLinePropositionsLookup component
Connect the switch component to filter called “Second Line Offers“ and update condition as @String.contains(.OfferCategory,"Additional
Line")&&@String.contains(.ProductGroup,"Mobile")
Join the filter called  “Second Line Offers“ to two data joins called “Join Offers with non SIMO eligible tariffs“ and “Join Offers with SIMO
tariffs“
Remove the data join from Join Eligible Tariff Data with decision table EvaluateTariffTypes join
In the data join called “Join Offers with non SIMO eligible tariffs“ match with below conditions


1727

join the data join “Join Offers with non SIMO eligible tariffs“ to existing filters DataSIMOnly Tariff Propositions, Handset Tariff
Propositions, Tablet Tariff Propositions and Dongle Tariff Propositions
Connect the existing table EvaluateTariffTypes to two new filters called “All AirTime Plans“ and “Exclude SIMO plans“
In the filter called “Exclude SIMO plans“ add the condition as @String.notEqualsIgnoreCase(.TariffType,"SIMOnly")
In the filter called “All AirTime Plans“, add the condition as
@String.equalsIgnoreCase(.TariffType,"SIMOnly")||@String.equalsIgnoreCase(.TariffType,"Handset")
Connect the filter, “All AirTime Plans“ to new set property called “Merge SIMO with Handset plans“ and set .TariffType="SIMOnly"
Connect the existing filter called “Second Line Offers“ to new data join called “Join Offers with SIMO tariffs“ and in this data join, join it
with set property “Merge SIMO with Handset plans“ with below join condition
Connect the data join, “Join Offers with SIMO tariffs“ to existing filter called “SIMOnly Tariff Propositions“


1728
Update Strategy: GetSIMOAndHandsetTariffs
Remove existing sub strategy Handset Tariffs (GetAllTariffs to invoke Handset TariffPropositions)
Note: Removed separate Handset tariff sub strategy, because as part of EVO story 813198 - the handset tariffs will be sent as
TariffType as SIMOnly.
Update Strategy: AdditionalLinePropositionsLookup
Remove Offerexpiry from set property called AllTreatmentsWithOfferandOfferVariationsandTreatmentVariations
update set property name to “Set Product Code from O2OV“ and set .DefaultDiscountProductCode=.ProductCode
Update Strategy:PopulateOutputPropertiesForAdditionalLine
In existing set property “ResponseType for Unique Treatments“, set .OfferExpiry=@AOMUtilities.GetCurrentPegaTimestamp()
Update Strategy: GetProductListForAdditionalLine
Remove sub strategy AssignTierToTariffs from GetProductListForAdditionalLine strategy


1729
Connect switch component “Check Additional Line Context“ to new group by component called “Group by Unique Propositions“ and
apply group by on .OfferName and connect this group by to new set property called “Override PyName“ and set .pyName=.OfferName
Connect the set property, “Override PyName“ to an existing sub strategy TestCellManagement
Join switch component, “Check Additional Line Context“ to new data join, “Map Test Group Details“ and in this data jon , join it with
TestCellManagement
Connect the data join “Check Additional Line Context“ to an existing sub strategy IdentifyDiscountPerTariff
Update Strategy: IdentifyDiscountPerTariff
Remove components below highlighted in image

Connect external input to new set property, “Set Discount Product Code from Discount Treatment“ and set .DefaultDiscountProductCode
= ProductRecommendationTypeDiscount.ProductCode
Join this set property to new sub strategy called “ManageAdditionalLineDiscount“ and connect this strategy to
GetDiscountProductDetails sub strategy


1730
Connect sub strategy GetDiscountProductDetails to new set property called “Set Discount Tier and Discount and Type“ and set below
details and connect it to result component
Connect existing data join, “Set  Discount Data“ to new data join called “Set  Discount Data“ and join with “Set Discount Tier and
Discount and Type“ and add below conditions and connect this data join to result component


1731

Update Strategy: TestCellManagement
Remove highlighted components in below image
Import TestGroups decision data from non proposition group and connect it to new filter called “Active Test Groups“ and in the filter
update condition as @String.equalsIgnoreCase(.Enabled,"True")
Enable external input and join it to new empty set property called “TestGroup Path for offer“ and set .ValueText=””
Connect the filter called “Active Test Groups“ to new data join called “Match TestGroup with Offer with TestGroup Configured“. Join it
with set property called “TestGroup Path for offer“ with below conditions
Connect data join “Match TestGroup with Offer with TestGroup Configured“ to group by component named “Unique Test Groups“ and
apply group by on .pyName and connect this group by component to new proposition filter called “TestGroupEligibility“. In this
proposition filter refer exising TestGroupEligibility PF rule
Join data join , “Match TestGroup with Offer with TestGroup Configured“ to new data join and name it as “Match Active TestGroups with
Offers with Eligible TestGroup“. Join it with TestGroupEligibility with below condition


1732
Connect existing set property called “TestGroup Path for offer“ to new data join called “Match All Input Offers with Eligible TestGroups
configured for Offers“ and join it with “Match Active TestGroups with Offers with Eligible TestGroup“ with below condition
Join the existing data join called “Match All Input Offers with Eligible TestGroups configured for Offers“ to two new filters “Matched
Offers“ and “UnMatched Offers“
Update the condition as @String.equalsIgnoreCase(.ValueText,"Matched") in “Matched Offers“ filter and join it to existing data join called
“Fetch Cell code “
In the filter called “UnMatched Offers“ add the condition as !@String.equalsIgnoreCase(.ValueText,"Matched") and join it to new set
property called “No Test Cell Allocation“ and set below properties and join this set property to result component


1733
Update Strategy: Identify EligibleOffers
Disconnect all connections from an existing sub strategy “Apply Offer Self Contention Strategy“ to all businesspurpose filters
Connect an existing sub strategy “Apply Offer Self Contention Strategy“ to “TestCellManagement“ substrategy and connect this sub
strategy to all businesspurpose filters

Update strategy:PopulateOutputPropertiesForWeb
Create new strategy called “PopulateOutputPropertiesForGRPL“ and copy all components selected in below image from
strategy:PopulateOutputPropertiesForWeb
Update existing filter called “Non Additional Line Offers“ by conditon (!(@String.contains(.OfferCategory,"Additional
Line")||@String.contains(.ProductGroup,"Mobile")))
Update another existing filter called “Additional Line Offers“ with condition @String.contains(.OfferCategory,"Additional
Line")&&@String.contains(.ProductGroup,"Mobile")
In sub strategy component “Get Max Discount“ refer new sub strategy AssignDiscountToAdditionalLineOffers


1734
Release 3.04


1735
Assisted Upgrade - Renegotiation
Update Validate Basket logic for Renegotiation Flow
HL Requirement
Business wants to validate the renegotiated deal.
If a deal is resumed on the same or a day other than the last saving one, the GetCustomer API will be invoked to refresh customer and
account data. VADR must check that the deal is still valid. If the deal is still valid, the renegotiated deal will be displayed in the Rec
screen with a Saved Banner whereas if the renegotiated deal is no longer valid. Business wants to display an Error message to an
agent with a Valid reason.
The renegotiated deal is based on the below.
Product Pricing Validation
Product Eligibility Validation
Product Sellable Validation
Product Compatibility Validation - Handset to Tariff Validation, Handset to Insurance Validation,Tariff to Discount Validation, Tariff to
Discount Validation, Tariff to Add On Validation, Add on to Add On Validation
Promotion Expiry Date  and element validation (if the original deal had a promo)
Impacted Areas780767 Renegotiation - Early Upgrade Fee
780779 Recalculate the Number of days left in contract
780784 Refresh the Existing Package Information
780868 Renegotiation: Revalidate the Vodafone Together Offers
780901 Renegotiation: Validate the Saved Deal and display a dynamic error
for the 1st error
780884 Renegotiation: Display a dynamic message if the 1st renegotiation
validation error is about device that is no longer in stock
781004 Renegotiation: EUF if the deal is no longer valid for a renegotiation
that has failed validation
781012 Renegotiation -Discount is not available in the toolkit
750595 Recommended package- Display Error message for customers who
have opted out of personalised offers with Renegotiated deal


have opted out of personalised offers with Renegotiated deal
749710 Renegotiation -Agent experience if the deal is no longer valid750494 Renegotiation -The deal is still valid
App Yes EUF calculations and context attribute to
identify Renegotiation Flow will be providing Area Yes/No Comments


1736
Logic Changes:
Update Strategy – ValidateBasket to ValidateBasketForEditDeal.
Rename existing logic for validating deal to ValidateBasketForEditDeal.
Remove LineItemListBasket and GetChildItems.
Enable externalinput and connect to Tariff(Filter) , SetOperationforChildİtems(SetProperty) and
CheckEarlyUpgradeForBasket(Substrategy)
New Strategy – ValidateBasket.
This strategy will be the main strategy that will call both ValidateBasketForEditDeal and ValidateBasketForRenegotiation.
This strategy will have basket details and the path can be differentiated based on the secondary context parameter from the Validate
Basket API request.
If Secondary context is Renegotiation, then route to Renegotiation flow(ValidateBasketForEditDeal) else Edit deal
flow(ValidateBasketForEditDeal).
New Strategy - ValidateBasketForRenegotiation
This Strategy will have basket details in API request details(Similar to the existing Validate Basket for Edit Deal Strategy)
This strategy will be validating the basket in three modules.
Product Validations.  New strategy RenegotiationProductValidations.
Which will validate the products in a sequence and display the error for the invalid basket. The valid basket will flow to the next
module with all the basket details
EUF Validations: New strategy RenegotiationEUFValidation
EUF FEE validation is implemented in this module. Inputs are from CRE(RetentionEligibility.Type) and API(Childline item=Fee)
requests.
VFT Validations: Existing strategy PopulateOutputPropertiesforValidateBasket
The logic for VFT logic is revalidated and the refreshed VFT offers are displayed in the Renegotiation cards.to logic.
Logic Yes Create /Update Existing Flow
PM Tool No
UI/VADR Yes Updates in Customer Details Banner,
Disabling the action on Renegotiation card.


UI/VADR Yes Updates in Customer Details Banner,
Disabling the action on Renegotiation card.
Display a dynamic error in invalid scenario.
Stock check for renegotiated deal.


1737
Product Validations:
Note: For which LineItem to set the StatusDetail, refer to dynamic messages artifact in US780901 (Column Error Icon)
New Strategy - RenegotiationProductValidations.
Input to the strategy are lists of line items and child line items.
Parallel Execution Step A: If the ProductType in basket is a Handset.
Step1: Handset price and sellability check
Query D_SellablePaymHandsetBySKU data page to retrieve sellable handsets(Input: handset in basket, Channel and Team
from context) . Fetch the cost,product name and sku.
Join the handset in basket with handset from datapage.
Compare the PriceExcludingVAT from the LineItem with the cost from data page.
If the cost is changed then
 Set StatusDetail as “The price for <product name> has changed”.
else if there is no product returned from the datapage then
Set StatusDetail as “The following product <product name> is no longer for sale”.
Step2: Handset to Tariff compatibilty check
Proceed to this check only if the StatusDetail is empty else pass the StatusDetail till end of the flow.
Query D_EligibleTariffsForHandset datapage to retrieve eligible tariffs(Input:handset in basket, OrderType, Channel, Team from
context). Fetch compatible tariffs along with the product name.
Compare the tariff in the line item with the compatible tariffs from datapage.
If the tariff is not available in the list of compatible tariffs.
Set StatusDetail as “The Device <Product name> is no longer compatible with tariff <Product Name>”.
Step3: Handset to Insurance compatibilty check
Proceed to this check only if the StatusDetail is empty from previous and insurance is available in basket else pass the


Proceed to this check only if the StatusDetail is empty from previous and insurance is available in basket else pass the
StatusDetail till end of the flow.
Query D_InsurancesForHandset datapage to retrieve eligible tariffs(Input:handset in basket, OrderType, Channel,
Team,Division from context). Fetch compatible insurance along with the product name.
Compare the insurance in the line item with the compatible tariffs from datapage.
If the tariff is not available in the list of compatible tariffs.


1738
Set StatusDetail as “The Device <Product name> is no longer compatible with insurance <Product Name>” and ValueText as
“Ineligible Insurance”
Step4: Handset Stock check
Proceed to this check only if the StatusDetail is empty else pass the StatusDetail till end of the flow.
Make Substrategy call to GetStockDetails (ensure all the required inputs are sent to substrategy)
If below condition is satisfied then send the stock details and Set StatusDetail as empty.
.Quantity>0||@String.equalsIgnoreCase(.QuantityStatus,"Stock Details Unavailable")||(.Quantity=0&&
(@String.equalsIgnoreCase(.QuantityStatus,"Preorderable")||@String.equalsIgnoreCase(.QuantityStatus,"Backorderable")))
else set StatusDetail as “The device <Device Name> is now end of life” .
Parallel Execution Step B: If the ProductType in basket is a Tariff.
Step1: Tariff price and sellability check
Query D_Tariff datapage to retrieve tariff details (Input: Tariff identifier) . Fetch the cost, product name, productcode and
IsSellable flag.
Join the tariff in basket with tariff from datapage.
Compare the PriceExcludingVAT from the LineItem with the cost from data page.
If the cost is changed then
 Set StatusDetail as “The price for <product name> has changed”.
else if IsSellable flag is false from the datapage then
Set StatusDetail as “The following product <product name> is no longer for sale”.
Step2: Tariff eligibility check
if IsSellable is true and StatusDetail is empty, query D_EligibleTariffs  datapage (Input: OrderType, Channel, Team,Division from
context) and compare the list of eligible tariffs with the tariff in basket.


context) and compare the list of eligible tariffs with the tariff in basket.
For the matched record set IsPromo=PromotionStartDate and PromotionEndDate is not null. PromotionStartDate is <= today
and PromotionEndDate >= today
if no tariffs are matched then
. Set StatusDetail as “The following product <product name> is not eligible with the agent's division“
Step3: Tariff to discount compatibilty check
Proceed to this check only if the StatusDetail is empty and discount is available in the basket else pass the StatusDetail till end of
the flow.
Query D_DiscountsForTariff datapage (Input: Tariff in basket, OrderType, Channel, Team,Division from context). Fetch
compatible discounts along with the productname, DefaultIndicator, RexAutoAddIndictor, PromotionStartDate,
PromotionEndDate.
Compare the discount in the child line item with the compatible discounts from datapage.
For the matched record set IsDiscountPromo=DefaultIndicator="Y" OR RexAutoAddIndictor ="Y" ) and (PromotionStartDate and
PromotionEndDate is not null. PromotionStartDate is <= today  and PromotionEndDate >= today)
If the discount is not available in list of compatible discounts. Set StatusDetail as “The Tariff  <Product name> is no longer
compatible with discount <Product Name>” and ValueText as “Ineligible Discount”
Step4: Tariff to AddOn(s) compatibilty check
Proceed to this check only if the StatusDetail is empty and AddOn(s) is available in the basket else pass the StatusDetail till end
of the flow.
Query D_ServicesForTariff datapage (Input: Tariff in basket, OrderType, Channel, Team,Division from context). Fetch


compatible discounts along with the productname, DefaultIndicator, RexAutoAddIndictor, PromotionStartDate, PromotionEndDate
and RelationshipType.
Compare the AddOn(s) in the child line item with the compatible discounts from datapage.
For the matched records set IsAddOnPromo=( RelationshipType="O"and (DefaultIndicator="Y" OR RexAutoAddIndictor ="Y" ))
and (PromotionStartDate and PromotionEndDate is not null. PromotionStartDate is <= today  and PromotionEndDate >= today)


1739
If the AddOn(s) are not available in list of compatible AddOn(s). Set StatusDetail as “The tariff  <Product name> is no longer
compatible with add on <Product Name>”  and ValueText as “Ineligible AddOn”
Step5: Tariff Promo validations
If the StatusDetail from previous step is not empty, pass it as-is till end of the flow.
else if IsPromo is false(from previous step) and Classification from lineitem is Promotion then set StatusDetail as “The Promo is
no longer valid”
else if IsPromo is true and IsDiscountPromo is false and Classification from discount child line item is Promotion then set
StatusDetail as “The Promo is no longer valid”
else if IsPromo is true and IsAddOnPromo is false and Classification from AddOn(s) child line item is Promotion then set
StatusDetail as “The Promo is no longer valid”
else StatusDetail as empty.
Parallel Execution Step C: If the ProductType in basket is a Discount.
Step1: Discount price and sellability check
Query D_Discount(TBD) datapage to retrieve discount details (Input: Discount identifier) . Fetch the cost, product name,
productcode and IsSellable flag.
Join the discount in basket with discount from datapage.
Compare the PriceExcludingVAT from the child line item with the cost from data page.
If the cost is changed then
 Set StatusDetail as “The price for <product name> has changed”.
else if IsSellable flag is false from the datapage then
Set StatusDetail as “The following product <product name> is no longer for sale”.
Step2: Discount eligibility check


Step2: Discount eligibility check
If IsSellable is true and If ValueText is  “Ineligible Discount” from above tariff parallel execution then set StatusDetail as “The
following product <product name> is not eligible with the agent's division”
Parallel Execution Step D: If the ProductType in basket is a AddOn(s)/Insurance.
Step1: AddOn(s)/Insurance price and sellability check
Query D_AccountService(TBD) datapage to retrieve AddOn(s)/Insurance details (Input: AddOn(s)/Insurance identifier) . Fetch
the cost, product name, productcode and IsSellable flag.
Join the AddOn(s)/Insurance in basket with AddOn(s)/Insurance from datapage.
Compare the PriceExcludingVAT from the child line item with the cost from data page.
If the cost is changed then
 Set StatusDetail as “The price for <product name> has changed”.
else if IsSellable flag is false from the datapage then
Set StatusDetail as “The following product <product name> is no longer for sale”.
Step2: AddOn(s)/Insurance eligibility check
If IsSellable is true and If ValueText is  “Ineligible AddOn” from above tariff parallel execution then set StatusDetail as “The
following product <product name> is not eligible with the agent's division”
else if IsSellable is true and If ValueText is  “Ineligible Insurance” from above handset parallel execution then set StatusDetail as
“The following product <product name> is not eligible with the agent's division”
Step3: AddOn to AddOn compatibility check
Proceed to this check only if the StatusDetail is empty else pass the StatusDetail till end of the flow.
Select the first AddOn and query D_InCompServiceIdsForService (AddOn Identifier) datapage and fetch in compatible


AddOn(s) along with the product name. Compare each of the other AddOn(s) in the child line item with the in compatible
AddOn(s) from datapage.
If the AddOn(s) is available in list of compatible AddOn(s). Set StatusDetail as “The add on  <Product name> is no longer
compatible with add on  <Product Name>”


1740
Note: There can be multiple AddOn(s), therefore for each AddOn(s), above validations needs to be checked.
Parallel Execution Step E: If the ProductType in basket is a Accessory.
Step1: Accessory price and sellability check
Query D_SellableAccessoriesByIdentifier data page to retrieve sellable accessories(Input: accessory in basket, Channel and
Team from context) . Fetch the cost,product name and accessory id.
Join the accessory in basket with accessory from datapage.
Compare the PriceExcludingVAT from the LineItem with the cost from data page.
If the cost is changed then
 Set StatusDetail as “The price for <product name> has changed”.
else if there is no product returned from the datapage then
Set StatusDetail as “The following product <product name> is no longer for sale”.
Note: There can be multiple accessories, therefore for each accessory above validations needs to be checked.
Step2: Accessory Stock check
Proceed to this check only if the StatusDetail is empty else pass the StatusDetail till end of the flow.
Make Substrategy call to GetStockDetails (ensure all the required inputs are sent to substrategy)
If below condition is not satisfied for the first accessory then StatusDetail as “The device <Device Name> is now end of life” . for the
first accessory else perform the check for next accessory.
.Quantity>0||@String.equalsIgnoreCase(.QuantityStatus,"Stock Details Unavailable")||(.Quantity=0&&
(@String.equalsIgnoreCase(.QuantityStatus,"Preorderable")||@String.equalsIgnoreCase(.QuantityStatus,"Backorderable")))
else set send the stock details for all the accessories and Set StatusDetail as empty .
Execution Step F: Connect all the results to set property/Decision Tree/Table and check


Execution Step F: Connect all the results to set property/Decision Tree/Table and check
if ProductType=Handset and StepA.StatusDetail not empty then set StatusDetail as is.
else if ProductType=Tariff and StepB.StatusDetail not empty then set StatusDetail as is.
else if ProductType=Discount and StepC.StatusDetail not empty then set StatusDetail as is.
else if ProductType=AddOn and StepD.StatusDetail not empty then set StatusDetail as is.
else if ProductType=Insurance and StepD.StatusDetail not empty then set StatusDetail as is.
else if ProductType=Accessory and StepE.StatusDetail not empty then set StatusDetail as is.
else StatusDetail = empty.
Also Set Status as “INCOMPITABLE” when StatusDetail is not empty.
3.4 MBB and Renego
EUF Validations:
New Strategy - RenegotiationEUFValidation.
Fetch the EUF Details from Child line item (ProductType = Fee)
The new EUF amount will be available in the CRE which can be accessed via
Primary.RetentionEligibility.EarlyUpgradeFee.FeeIncludingVAT.
If the fee(cost inc vat) from CRE is not same as the EUF fee  from ChildLineItem of the Validate Basket response and
CRE FEE is >0,then flag “Status” as “CHANGE”.
CRE FEE is =0,then don’t send the EUF in child line item..
The new EUF(if available) amount will be returned in the response payload of the API under child line items. else old value remains As
Is.


1741

VFT Validations:
Update Strategy -PopulateOutputPropertiesforValidateBasket
Make sure existing VFT logic in Validate basket will suffice this flow.
Attributes support need to maintain VFT logo in saved card should work as-is.
Make sure secondary context is updated in output properties.
Add a new SR page for ResponseType=Stock (refer PopulateOutputPropertiesForNBAA) and connect to results
More details about that story can be found here
https://adqura.atlassian.net/wiki/spaces/VODKB/pages/2768207954/Assisted+Upgrade+-Validate+Basket+VF+Together+Details


1742
Assisted Upgrade - Update IH Recommendations Table to include Pac/Stac
Request
HL Requirement
Ensure that the IH Recommendation Reporting includes the fact that the customer has requested a PAC or a STAC.
Impacted Areas
Update Strategy - IdentifySegmentStrategyforSubscription
Update HasTrigger > @if(.ConfidenceScoreRange="High" && Intent =”Leave-Mobile”,"Y","N") (Component: GetSegmentStrategy)
 664942 Update IH Recommendations Table to include Pac/Stac Request
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