This workflow is inherited, and that will become pretty obvious when you see it, as I'm most a button click admin and this critter has a lot of advanced formulas in it. That said it's my job to update and maintain this guy so here are some thoughts on doing that.
Customer Journey Flow
For each user we have a series of landmarks across the length of their "year" long contract that represent touch points with the customer we want to make. That is the purpose of this flow, to schedule tasks when an Opportunity is "Paid" that track the customer journey.
This flow determines the types of touch points based on an Opportunity classification:
- Raven-small opportunity
- Falcon-medium sized opportunity
- Owl-large opportunity
- Eagle-high touch opportunity.
And extra layer of complication is added to this because they have setup the flow to have different firing criteria if the Opportunity is New and Paid verses already Open and transitioned into a Paid status.
The end result of all this is that when an Opportunity is marked "paid" the process flow fires and assigns, based on a team designation, a series of future dated tasks to the appropriate CSL for that team/vertical.
Oh and did I mention they are different processes for a our SaaS and our traditional product lines?
Modifying the flow
To this point most of the modifications have been updating users and moving around verticals. Pretty easy stuff.
But now I've been asked to bifurcate the flow:
- Journey 1: Current process - New customers
- Journey 2: Simplified process- Current customers.
Fortunately for me, we already have a field that qualifies whether a customer is new or current for the purpose of commission payments, called Biz Dev on Opp. This picklist field has many options but only one for current customer, which makes it somewhat easier to make this separation.
The current formula looks like:
NOT(ISNEW()) && (PRIORVALUE([Opportunity].StageName ) <> 'Paid') && (ISPICKVAL([Opportunity].Type, 'IMPLAN Online')) && (ISPICKVAL([Opportunity].StageName, 'Paid') && [Opportunity].Orientation_Count__c >= 1) && (ISPICKVAL([Opportunity].Classification__c , 'Owl') || ISPICKVAL([Opportunity].Classification__c , 'Falcon'))
And I'm adding:
&& (NOT(ISPICKVAL([Opportunity].Biz_Dev_on_Opp__c , "Current Customer") ))
Now I also need to add on the process for the when the picklist is current customer.
Another Option
If I didn't have this field, another way I could attempt to analyze this would be to look at whether or not the contact had at least one previous opportunity.
The downside...Salesforce doesn't natively support rollups for Lookup filters so I can't create a rollup field on the Contact to count opportunities.
The upside...there is a great, free, managed package that will allow us to do this. https://github.com/afawcett/declarative-lookup-rollup-summaries
