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; 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; 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.