Use Decision Table in Workflows
Updated
Overview
Decision Tables can be used in process‑engine workflows to dynamically evaluate conditions and return results at runtime. This allows workflows to make decisions—such as assigning priority, routing to teams, or displaying results—without relying on complex nested conditions.
Currently, Decision Tables are supported in process‑engine workflows, including:
Guided Workflows
Interactive Voice Response (IVR)
After‑Call Work (ACW)
Conversation AI
Journey Facilitator
Decision Tables are not supported in the Rules Engine at this time.
When to Use a Decision Table in a Workflow
Use a Decision Table in a workflow when you want to:
Evaluate multiple conditions centrally
Reuse the same logic across workflows
Dynamically determine outcomes such as priority, routing, or categorization
Avoid complex IF–ELSE logic in workflows
Add a Decision Table Node
Open a supported workflow (for example, a Guided Workflow).
Click the plus (+) icon to add a new node.
Under Data Management, select Decision Table.
A new Decision Table node is added to the workflow canvas.

Configure the Decision Table Node
Basic Configuration
In the Decision Table node configuration:
Enter a Name for the node.
Select the Decision Table you want to use.

Input Mapping
Input mapping determines how workflow data is passed to the Decision Table.
Under Input Mapping, select the Entity Name.
Map the Record ID or workflow variable that contains the entity record ID.
For System Entity, the input for decision tables will be the Asset ID.
User will need to define input mapping for all the Entites used in Condition Columns for the Decision Table
This allows the Decision Table to evaluate condition fields using runtime data from the workflow.
Choose an Evaluation Mode
The Fetch Result for option defines how the Decision Table evaluates matching rows.
First Conditions Match
Evaluation stops at the first matching row, based on top‑to‑bottom order.
Only one result is returned.
Use this when:
Row order defines priority
You want a single outcome
All Conditions Match
All rows that match the input conditions are evaluated.
Multiple results may be returned.
Use this when:
You want to capture all applicable outcomes
The workflow needs to process multiple results
How Evaluation Works (Simple Explanation)
If a Decision Table has three condition columns (A, B, and C):
If the workflow provides values for only A and B, any value of C is considered valid.
In First Conditions Match, the first matching row is returned.
In All Conditions Match, all matching rows are returned.

Store the Output in a Variable
Enter a Variable Name.
The Decision Table results are stored in this variable.
You can use this variable later in the workflow to:
Display results on a screen
Drive routing or logic
Pass values to other nodes
Getting Results & Conditions from Decision Table Output Variable
You can use the below mentioned groovy code to get the results from the Decision Table variable.
Variable Name - decision_table_output
First Result Column Groovy
def decision_table_output_str = String.valueOf(decision_table_output)def objList = JSON_UTILS.parseJsonList(decision_table_output_str)if (objList instanceof List && !objList.isEmpty()) {def firstRule = objList[0]def resultCells = firstRule?.get('resultCells')if (resultCells instanceof List && !resultCells.isEmpty()) {return resultCells[0]?.get('result')}}return null
All Result Column Groovy
def decision_table_output_str = String.valueOf(decision_table_output)def objList = JSON_UTILS.parseJsonList(decision_table_output_str)if (objList instanceof List && !objList.isEmpty()) {return objList[0]?.resultCells?.collect { it?.result }}return null
First Condition Column Groovy
def decision_table_output_str = String.valueOf(decision_table_output)def objList = JSON_UTILS.parseJsonList(decision_table_output_str)if (objList instanceof List && !objList.isEmpty()) {return objList[0]?.conditionCells?.getAt(0)?.filter?.values?.getAt(0)}return null
All Condition Column Groovy
def decision_table_output_str = String.valueOf(decision_table_output)def objList = JSON_UTILS.parseJsonList(decision_table_output_str)if (objList instanceof List && !objList.isEmpty()) {return objList[0]?.conditionCells?.collect {it?.filter?.values?.getAt(0)}}return null

Use Decision Table Results in the Workflow
Once configured, the Decision Table node can be followed by other nodes such as:
Screen nodes to display results
Routing logic
End workflow actions
The workflow uses the evaluated results exactly as returned by the Decision Table.
Execute and Validate the Workflow
To validate the workflow behavior:
Select a workflow context (for example, a Case).
Click Execute.
Review the results returned by the Decision Table.
The output reflects the evaluated conditions and results based on the workflow input.
Key Notes
Decision Tables work only in process‑engine workflows.
Evaluation happens at runtime, using workflow input data.
Row order matters when using First Conditions Match.
The output returned matches exactly what is defined in the Decision Table.
Best Practices
Test the Decision Table before using it in workflows.
Use First Conditions Match when priority matters.
Use All Conditions Match when multiple outcomes are required.
Store results in clearly named workflow variables.
Keep Decision Table logic centralized and workflows simple.
Key Takeaway
Using Decision Tables in workflows allows you to apply consistent, reusable logic while keeping workflows clean and easy to maintain. This approach improves scalability, reduces configuration effort, and ensures predictable outcomes at runtime.