UiPath Documentation
maestro
latest
false
Maestro Orchestrate user guide

Switch

The Switch node routes a workflow to one of several paths based on ordered case conditions.

What it does​

Routes a workflow to one of several paths based on ordered conditions. By default, the first condition that matches is taken. With Match all cases turned on, every case whose condition is true runs its branch.

Choosing between Switch and Decision​

Use Switch when...Use Decision when...
You have three or more outcomesYou have exactly two outcomes
You're routing by multiple distinct conditionsThe condition is a simple yes/no
You need a default/fallback branch

Configuration reference​

FieldRequiredDefaultDescription
Switch casesYes2 empty casesOrdered branch list, up to 10 cases. Each case has a label and a Condition, a JavaScript expression that returns true or false. The first case whose condition is true is taken.
Default branchNoOnAdds a Default path that runs when no other condition matches.
Match all casesNoOffWhen on, the flow continues down every case whose condition is true, not only the first. To continue after the matched branches, connect them to a Merge node, which waits only for the branches that ran.

Writing case expressions​

Each case expression uses the same JavaScript environment as the Script and Decision nodes:

// Case 1: high priority
$vars.ticket1.output.priority === "high"

// Case 2: medium priority
$vars.ticket1.output.priority === "medium"

// Case 3: low priority (or use Default to catch everything else)
$vars.ticket1.output.priority === "low"
// Case 1: high priority
$vars.ticket1.output.priority === "high"

// Case 2: medium priority
$vars.ticket1.output.priority === "medium"

// Case 3: low priority (or use Default to catch everything else)
$vars.ticket1.output.priority === "low"

More specific conditions should appear first. A broader condition higher in the list will match before a more specific one below it. With Match all cases turned on, the order doesn't decide which branch runs, because every matching case runs.

Examples​

Example 1: Route by HTTP status code​

CaseExpressionBranch
Success$vars.httpRequest1.output.code === 200process the response
Not Found$vars.httpRequest1.output.code === 404handle the missing resource
Default(fallback)handle the unexpected error

Example 2: Route by string value​

CaseExpressionBranch
Approved$vars.form1.output.status === "approved"continue the workflow
Rejected$vars.form1.output.status === "rejected"notify the rejection
Pending$vars.form1.output.status === "pending"wait for review
Default(fallback)handle the unknown status

Next steps​

Was this page helpful?

Connect

Need help? Support(opens in new window)

Want to learn? UiPath Academy(opens in new window)

Have questions? UiPath Forum(opens in new window)

Stay updated