Skip to content

Instantly share code, notes, and snippets.

@alexed1
Last active December 3, 2017 21:19
Show Gist options
  • Save alexed1/91c5db00fed3e0d9f9e345426dc10275 to your computer and use it in GitHub Desktop.
Save alexed1/91c5db00fed3e0d9f9e345426dc10275 to your computer and use it in GitHub Desktop.
<?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 &lt; (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 &lt; 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 &gt; (TODAY() - 60)",
"LoadExtendCurrentOffer":
"$Record.Contact.Offer_Changed_Date__c &gt; (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