Conditional Routing
Conditional routing lets a single template handle multiple document types, disciplines, or priorities by automatically skipping steps that are not relevant to a specific workflow run. Instead of maintaining a separate template for every possible combination, you write conditions that evaluate the workflow's metadata at runtime and decide whether each step executes.
How conditions work
Each step in a template can have an optional condition expression. When the workflow reaches that step:
- The system evaluates the condition against the current workflow's metadata (discipline, zone, stage, priority, and any custom metadata fields).
- If the condition is true: the step executes normally.
- If the condition is false: the step is skipped — it does not notify the assignee, does not count toward the outcome, and is marked as
Skippedin the workflow timeline.
Skipped steps are visible in the workflow history, with a note that they were skipped due to a condition.
Condition expression syntax
Conditions use a simple expression language:
Comparison operators
| Operator | Meaning | Example |
|---|---|---|
== | Equals | discipline == "STR" |
!= | Not equals | status != "draft" |
Values are case-sensitive for code fields and case-insensitive for text fields.
Logical operators
| Operator | Meaning | Example |
|---|---|---|
AND | Both must be true | discipline == "STR" AND stage == "CD" |
OR | Either must be true | zone == "ZA" OR zone == "ZB" |
NOT | Must not be true | NOT discipline == "GEN" |
Grouping with parentheses
Use parentheses to control evaluation order:
(discipline == "STR" OR discipline == "MEP") AND stage == "CD"
Without parentheses, AND takes precedence over OR. Add parentheses wherever the intended logic might be ambiguous.
Available fields
Any metadata field on the workflow or the routed document can be referenced:
| Field | Example values |
|---|---|
discipline | "STR", "MEP", "ARC", "CIV" |
zone | "ZA", "ZB", "Zone-1" |
stage | "DD", "CD", "FC", "AB" |
type | "drawing", "specification", "report" |
priority | "low", "medium", "high", "urgent" |
| Custom metadata field name | "Zone-A", "PKG-01" (any option code) |
Common condition patterns
Discipline-specific step
A structural-only review step that is skipped for all other disciplines:
discipline == "STR"
Multi-discipline step
A step for any civil or structural document:
discipline == "STR" OR discipline == "CIV"
Stage and discipline combined
Director sign-off only for issued-for-construction structural drawings:
discipline == "STR" AND stage == "FC"
Urgent escalation step
An additional escalation step that only runs if the workflow priority is Urgent:
priority == "urgent"
Exclude a category
All disciplines except General:
NOT discipline == "GEN"
Combining conditional steps with parallel steps
Conditional logic and parallel routing can be combined. A parallel group can have a condition — if the condition is false, the entire parallel group is skipped. Individual steps within a parallel group can also have their own conditions, allowing the system to selectively skip some parallel participants while running others.
Template design tips
- Test conditions before deploying: Use the template's Preview mode to simulate how the template behaves for different discipline/zone combinations.
- Avoid overly complex conditions: If a condition requires more than three clauses, consider whether the template should be split into two separate templates.
- Document conditions for maintainers: Use the step's Description field to explain the condition in plain language — future admins may not immediately understand the expression syntax.
- Default to no condition for universal steps: Steps that must always run (regardless of discipline or context) should have no condition.
What's next
- Routing Modes — sequential, parallel, and conditional at the template level
- Template Settings — outcome determination and rejection handling
- Step Types — what each step type captures from its assignee