Last active
December 3, 2017 21:19
-
-
Save alexed1/91c5db00fed3e0d9f9e345426dc10275 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<RecommendationStrategy xmlns="http://soap.sforce.com/2006/04/metadata"> | |
<description>Telecom Call-in Strategy</description> | |
<recommendationStrategyName>telecomCallin</recommendationStrategyName> | |
<masterLabel>SomeMasterLabel</masterLabel> | |
<!-- Root --> | |
<strategyNode> | |
<name>RootNode</name> | |
<description>the root</description> | |
<parentNode></parentNode> | |
<type>2<!--Union--></type> | |
<definition>{ removeDuplicates: true }</definition> | |
</strategyNode> | |
<!-- Payment Past Due --> | |
<strategyNode> | |
<name>IfPaymentPastDueElseChurnNode</name> | |
<description>If payment is past due request payment else churn</description> | |
<parentNode>RootNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"LoadPpd": "$Record.Contact.Payment_Due_Date__c < (TODAY() - 30)", | |
"LowCsatIfNode": "true"}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadPpd</name> | |
<description>load payment past due</description> | |
<parentNode>IfPaymentPastDueElseChurnNode</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='Payment Past Due'"}</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LowCsatIfNode</name> | |
<description>If node which only does churn if CSAT is less than 7</description> | |
<parentNode>IfPaymentPastDueElseChurnNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"ChurnExtendIfNode": "$Record.Contact.CSAT__c < 7", | |
"CrossSellUnionNode": true | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<!-- Churn --> | |
<strategyNode> | |
<name>ChurnExtendIfNode</name> | |
<description>If node to select one churn extend prop</description> | |
<parentNode>LowCsatIfNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"LoadExtendPromoRate": | |
"$Record.Contact.Promotion_Ended_Date__c > (TODAY() - 60)", | |
"LoadExtendCurrentOffer": | |
"$Record.Contact.Offer_Changed_Date__c > (TODAY() - 60)" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadExtendPromoRate</name> | |
<description>load extend promo rate</description> | |
<parentNode>ChurnExtendIfNode</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='ExtendPromoRate'"}</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadExtendCurrentOffer</name> | |
<description>load extend current offer</description> | |
<parentNode>ChurnExtendIfNode</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='ExtendCurrentOffer'"}</definition> | |
</strategyNode> | |
<!-- Cross Sell --> | |
<strategyNode> | |
<name>CrossSellUnionNode</name> | |
<description>Union node for cross sell</description> | |
<parentNode>LowCsatIfNode</parentNode> | |
<type>2<!--Union--></type> | |
<definition>{ removeDuplicates: true }</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>HasAdslIfNode</name> | |
<description>If node to select cross sell if has adsl</description> | |
<parentNode>CrossSellUnionNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"NoMobileIfNode": "$Record.Contact.Has_ADSL_Service__c == true", | |
"NoTvBundleIfNode": "$Record.Contact.Has_ADSL_Service__c == true" | |
}, | |
onlyFirstMatch: false | |
} | |
</definition> | |
</strategyNode> | |
<!-- Cross Sell Mobile Service --> | |
<strategyNode> | |
<name>NoMobileIfNode</name> | |
<description>If node to select mobile service if no mobile</description> | |
<parentNode>HasAdslIfNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"LoadMobileService": "$Record.Contact.Has_Mobile_Service__c == false" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadMobileService</name> | |
<description>load cross sell mobile service</description> | |
<parentNode>NoMobileIfNode</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='Mobile Service'"}</definition> | |
</strategyNode> | |
<!-- Cross Sell TV Bundle --> | |
<strategyNode> | |
<name>NoTvBundleIfNode</name> | |
<description>If node to select tv bundle if no tv bundle</description> | |
<parentNode>HasAdslIfNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"HasMobileIfNode1": "$Record.Contact.Has_TV_Bundle__c == false" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>HasMobileIfNode1</name> | |
<description>If node to select tv bundle if mobile</description> | |
<parentNode>NoTvBundleIfNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"LoadTvBundle": "$Record.Contact.Has_Mobile_Service__c == true" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadTvBundle</name> | |
<description>load cross sell tv bundle</description> | |
<parentNode>HasMobileIfNode1</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='TV Bundle'"}</definition> | |
</strategyNode> | |
<!-- Cross Sell ADSL Service --> | |
<strategyNode> | |
<name>NoAdslIfNode</name> | |
<description>If node to select adsl service if no adsl</description> | |
<parentNode>CrossSellUnionNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"HasMobileIfNode2": "$Record.Contact.Has_ADSL_Service__c == false" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>HasMobileIfNode2</name> | |
<description>If node to select adsl service if mobile</description> | |
<parentNode>NoAdslIfNode</parentNode> | |
<type>4<!--If--></type> | |
<definition> | |
{ | |
expressions: { | |
"LoadAdslService": "$Record.Contact.Has_Mobile_Service__c == true" | |
}, | |
onlyFirstMatch: true | |
} | |
</definition> | |
</strategyNode> | |
<strategyNode> | |
<name>LoadAdslService</name> | |
<description>load cross sell adsl service</description> | |
<parentNode>HasMobileIfNode2</parentNode> | |
<type>1<!--SoqlLoad--></type> | |
<definition>{soql: "SELECT Name, Description, ActionReference FROM Proposition WHERE Name='ADSL Service'"}</definition> | |
</strategyNode> | |
</RecommendationStrategy> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment