The **Condition step** defines rules that determine the workflow path. It evaluates one or more conditions and outputs either **True** or **False**, directing the workflow along the corresponding path.

## Key properties

- A Condition step can be placed **anywhere** in a workflow.
- The result of the evaluation is stored as a **boolean variable** ( **True** or **False**).
- Both True and False paths can have subsequent steps defined.

## Configure a Condition step

1. Add the Condition step to your workflow, then click the step to open the side panel.
2. Define the **condition/rule**: Specify the criteria to evaluate.
3. Select the **Variable** field to display available operands, grouped as:

- **Input**: Data from the Input step.
   - **Output fields**: Results generated by Transformation, Condition, Rule Scorecard, Tag, etc.
   - **Enrichment data**: Values from data service APIs configured in Enrichment steps.
   - **Aggregation**: Velocity counters and aggregations configured for your instance.
4. Choose an **operator** (see catalog below).
5. Specify the **Value type**:

- **Value** → A static literal (string, number, date, etc.).
   - **Variable** → A dynamic reference to another field.
6. Define the **Output field**: The evaluation result will be stored here as a boolean.

### Available operators

#### Equality and comparison

- **`==` (equal to)**: True if two values are exactly the same.
- **`!=` (not equal to)**: True if two values are not the same.
- **`>` (greater than)**: True if the first value is greater than the second.
- **`>=` (greater than or equal to)**: True if the first value is greater than or equal to the second.
- **`<` (less than)**: True if the first value is less than the second.
- **`<=` (less than or equal to)**: True if the first value is less than or equal to the second.

#### String operators

- **`string contains`**: True if the input string includes the specified value.
- **`string contains ignore_case`**: Same as above, but ignores letter casing.
- **`string does not contain`**: True if the input string does _not_ include the specified value.
- **`string does not contain ignore_case`**: Same as above, but ignores letter casing.
- **`string starts with`**: True if the input string starts with the specified substring.
- **`string ends with`**: True if the input string ends with the specified substring.
- **`matches regex`**: True if the input string matches a given regular expression pattern.

#### Array operators

- **`array contains`**: True if the array contains the specified element.
- **`array contains ignore_case`**: Same as above, but ignores letter casing for string elements.
- **`array does not contain`**: True if the array does _not_ contain the specified element.
- **`array does not contain ignore_case`**: Same as above, but ignores letter casing for string elements.

#### List operators

- **`in A/D List`**: True if the value exists in the configured Allow/Deny list.
- **`not in A/D List`**: True if the value does not exist in the Allow/Deny list.

#### Presence operators

- **`is set`**: True if the field exists and is not null.
- **`is not set`**: True if the field is missing or null.

#### Reason code operators

- **`in Reason Code List all`**: True if all of the provided reason codes exist in the Reason Code list.
- **`in Reason Code List any`**: True if at least one of the provided reason codes exists in the Reason Code list.

### Grouping conditions

- Use **AND** or **OR** to combine multiple conditions.
- Click the **plus (+)** icon above the conditions list to add a new condition.
- Grouped conditions allow you to build complex evaluation logic.

### True / False paths

- The Condition step produces either **True** or **False**.
- Add downstream steps to each path by clicking the blue plus (+) icon.
- The workflow follows the branch based on the evaluation result.

### Error handling in conditions

- If a field referenced in a condition is **null**:

- That sub-condition evaluates to **False**.
  - A warning indicator appears in the path, showing that the input was null.
- If an operator fails due to invalid input types, the evaluation defaults to **False**.
- These warnings are visible in the **Decision Path** view during workflow testing and debugging.

### Notes

- You can customize the **Condition step label** by editing the text field at the top of the side panel.
- Use descriptive names for output fields to make downstream references easier to understand.

Updated 3 months ago
