This guide will help to walk you through building a complex if/then formula in order to perform Lead assignment by State.
Setup:
You really should perform the following steps in a programming text editor. Do not use MS Word. Download VS Code or Sublime or Notepad++ or something. If you must, use plain notepad/textedit.
Parameters:
In the workflow, create 2 parameters:
1. The State : {P0}
2. The currently assigned user id- Relation Parameter -> Assigned User -> ID : {R0}
The Steps:
Build an Equal Statement for each State:
Go ahead and break them up by User
//User 1 {equal({P0} ; IA)} {equal({P0} ; MN)} {equal({P0} ; WI)} //User 2 {equal({P0} ; KS)} {equal({P0} ; NE)} {equal({P0} ; SD)} {equal({P0} ; IL)} //User 3 {equal({P0} ; OH)} {equal({P0} ; IN)} {equal({P0} ; ND)} {equal({P0} ; PA)}
Combine the statements into Or pairs:
- Cut/paste the Equal statement into "ITEM1" or "ITEM2" in the template below
- If a user has an odd number of States, then place a "0" in "ITEM2"
// {or(ITEM1; ITEM2)} //User 1 (notice how the last pair has a zero) {or({equal({P0} ; IA)}; {equal({P0} ; MN)})} {or({equal({P0} ; WI)}; 0)} //User2 {or({equal({P0} ; KS)}; {equal({P0} ; NE)})} {or({equal({P0} ; SD)}; {equal({P0} ; IL)})} //User3 {or({equal({P0} ; OH)}; {equal({P0} ; IN)})} {or({equal({P0} ; ND)}; {equal({P0} ; PA)})}
Combine the groups again if needed:
- You must end up with one line per User.
- Again, if there are odd numbers of items, place a 0 in "Item2"
//Combine the groups until you end up with one statement per User //User 1 {or({or({equal({P0} ; IA)}; {equal({P0} ; MN)})}; {or({equal({P0} ; WI)}; 0)})} //User2 {or({or({equal({P0} ; KS)}; {equal({P0} ; NE)})}; {or({equal({P0} ; SD)}; {equal({P0} ; IL)})})} //User3 {or({or({equal({P0} ; OH)}; {equal({P0} ; IN)})}; {or({equal({P0} ; ND)}; {equal({P0} ; PA)})})}
Start building the If/Then blocks
- Use the Template below
- Place the User's Name in the "USERID" section
// Start building an IF/Then for each user {ifThenElse(CONDITION; USERID; ELSE)} {ifThenElse(CONDITION; Jared; ELSE)} {ifThenElse(CONDITION; Brad; ELSE)} {ifThenElse(CONDITION; Tim; ELSE)}
Set the Fallback value in the Final "ELSE" block:
- In our case, we're going to fallback to the currently set Assigned user id which we have saved as {R0}
{ifThenElse(CONDITION; Jared; ELSE)} {ifThenElse(CONDITION; Brad; ELSE)} {ifThenElse(CONDITION; Tim; {R0})}
Copy the OR statements into the "CONDITION" blocks:
- Make sure these are on one line per user (even if this webpage wraps the text)
{ifThenElse({or({or({equal({P0} ; IA)}; {equal({P0} ; MN)})}; {or({equal({P0} ; WI)}; 0)})}; Jared; ELSE)} {ifThenElse({or({or({equal({P0} ; KS)}; {equal({P0} ; NE)})}; {or({equal({P0} ; SD)}; {equal({P0} ; IL)})})}; Brad; ELSE)} {ifThenElse({or({or({equal({P0} ; OH)}; {equal({P0} ; IN)})}; {or({equal({P0} ; ND)}; {equal({P0} ; PA)})})}; Tim; {R0})}
Take the last line and cut/paste it into the "ELSE" block of the one above. Repeat until all are on one line:
{ifThenElse({or({or({equal({P0} ; IA)}; {equal({P0} ; MN)})}; {or({equal({P0} ; WI)}; 0)})}; Jared; {ifThenElse({or({or({equal({P0} ; KS)}; {equal({P0} ; NE)})}; {or({equal({P0} ; SD)}; {equal({P0} ; IL)})})}; Brad; {ifThenElse({or({or({equal({P0} ; OH)}; {equal({P0} ; IN)})}; {or({equal({P0} ; ND)}; {equal({P0} ; PA)})})}; Tim; {R0})})})}
Map this to the "Description" field and test:
After testing, replace the User names (Jared, Brad, Tim) with their ID's
Finally, map the formula to the Assigned User field and test.