Our Power Automate cloud flows are failing when decision tables encounter null values in lookup conditions. The flows handle invoice approval routing based on amount, department, and vendor category, but when vendor category is null (which is valid for some suppliers), the entire decision table throws an error and the flow terminates.
Current decision table structure:
IF Amount > 5000 AND Department = "IT" AND VendorCategory = "Software"
THEN Route to IT Director
When VendorCategory is null, we get: “Expression evaluation failed: Unable to process template language expressions in action ‘Decision_Table_Lookup’”
I’ve tried adding a default rule at the bottom of the table, but it doesn’t catch the null scenario - the error occurs during the lookup evaluation itself before reaching any default. The branching logic validation seems to require non-null values for all conditions, which breaks our workflow for legitimate cases where vendor category isn’t assigned yet.
How should decision table null handling be configured in Power Platform? Is there a way to make the lookup tolerant of null values without restructuring the entire decision logic?
I like the coalesce approach for simplicity. Testing it now with a few fields to see if it resolves the evaluation errors without breaking the routing logic.
Make sure your default rule configuration accounts for the coalesced values. If you’re using ‘UNASSIGNED’ as the null replacement, you need explicit rules for that value, not just a catch-all default at the end of the table.
The coalesce approach works but can get messy with complex tables. Another option: restructure your decision table to use separate evaluation paths. Create a condition that checks for null values first, then routes to either the full decision table or a simplified null-handling table. This keeps your main logic clean.
This is a common issue with Power Automate decision tables. The expression engine evaluates all conditions before matching rules, so null values cause evaluation failures. You need to add null checks before the decision table action, not within it.
Instead of pre-processing every field, use the coalesce function within your decision table expressions. Modify your conditions to handle nulls inline: coalesce(VendorCategory, 'UNASSIGNED'). This way the expression engine always has a valid value to evaluate. You can then add specific rules for the ‘UNASSIGNED’ category in your table logic.