Posted: 2 Oct 2020 9:30 EDT Last activity: 23 Oct 2020 13:28 EDT
Determine container for inbound channel
In our current implementation for inbound channel, We receive the request with channel and page via rest service and accordingly determine the Best proposition and Treatment. Further, we have container rule(multiple rules like validity,Synergy and conflict) which determines the best container for each treatment. For this we maintained a mapping of NBA->Channel->page->container->template(each with 1:n cardinality).
We are in process of migrating in Pega 8.4. Now when I see the OOTB inbound process, I see we need to define the Realtime container and in our rest service(request service to initiate decisioning) we receive the container id. So as a result it will only check the relevant treatment corresponding to that container.
Now question is
Instead of fixing container id and then determine treatment Can I do the other way around? like first select the qualified treatment and then determine Container for each of the treatment in strategy based on rules like (validity,synergy conflict etc.)?
Where is the mapping of Channel-Page-container? Like I want Top and buttom for Web but Top and Middle for Mobile?
A Container is meant to provide a logical mapping or abstraction between channel (web) and any context info (page) the channel might provide. The Container service also allows you to specify the Placements (Hero, Tile, etc) the calling web page needs. Within the NBA Designer Channels tab, you map the Container to the top level, across all issues, or a specific Issue/Group.
On the Action rule, you can specify Eligibility, Applicability and Suitability criteria that determines when and for which channel, container and context this action will be relevant.
It sounds like you are using a container to represent a specific location on a web page which we refer to as a placement.
You got it right, we are using a container to represent a specific location on a web page which we refer to as a placement.
Now in Pega 8.4 real-time container process is quite clear to me. Though I have one question:
You mentioned, to write logic related to container rule use Action rule, where I can specify Eligibility, Applicability and Suitability criteria. But I want those container rules to be written after arbitration as it is dynamic and we don't now which Action will get the higher priority.
For example,lets say there are 3 placement type(Hero,Tile,Footer) in account page of web channel and as part of the conflict rule Some Propositions/Proposition Groups do not work well together so we need to keep them apart.So If credit card proposition are shown in Hero banner then savings proposition should not be shown in any of the placement in account page in the same request.
So clearly, rules should be written after arbitration and between all prioritize Proposition.
Should we use any channel extension strategy to implement this requirement or is there any better approach you suggest?
Understood, so in that case you can use the InboundChannelProcessing sub-strategies to implement this type of confliction logic. In 8.5, with the introduction of support for multi-level decisioning in NBA Designer, this changes slightly and you'll likely want to move your extension logic to the FinalLimitsAndBundlingPreExt. This will allow you to apply confliction rules across all contexts (ie Multiple Subscriptions on an Account).