Hi @CU11121951-0
About the last error you mentioned:
“The expression contains dynamic functions, variables or parameters that cannot be resolved in the debugger” shows when you use advanced expressions in a Condition. The debugger in Power Automate can’t evaluate dynamic references like triggerOutputs()?['body/...'] or result('ActionName') at design time, so it throws that warning. It doesn’t mean your expression is wrong; it just means the designer can’t preview it.
The condition will be evaluated correctly at runtime when the flow executes. It issues a false positive warning simply because it can’t resolve dynamic values while you’re editing. You can ignore the debugger warning — it’s normal for dynamic expressions. Just run and test the flow ans see history - it works fine.
One of the solutions @Pstork1 mentioned.
In my point of view, what else you can do is in the expression (advanced expressions to evaluate conditions):
Condition-1: We can simplify with an expression instead of stacking multiple “is not equal to Reject” checks in the designer
and(
or(empty(variables('Approver1Response')), not(equals(variables('Approver1Response'),'Reject'))),
or(empty(variables('Approver2Response')), not(equals(variables('Approver2Response'),'Reject'))),
or(empty(variables('Approver3Response')), not(equals(variables('Approver3Response'),'Reject')))
)
Note: empty - checks "not needed" case, not(equals(...,'Reject')) guards against "approved" case and outer and confirms all stakeholders(approvers) should meet the condition inside.
Condition-2: We need to make sure at least one approver is/has "Approved"
or(
equals(Approver1Response,'Approve'),
equals(Approver2Response,'Approve'),
equals(Approver3Response,'Approve')
)
Combine them (two conditions): Condition passes if no one rejects AND at least one approves
and(
// Condition 1: No Rejects
and(
or(empty(variables('Approver1Response')), not(equals(variables('Approver1Response'),'Reject'))),
or(empty(variables('Approver2Response')), not(equals(variables('Approver2Response'),'Reject'))),
or(empty(variables('Approver3Response')), not(equals(variables('Approver3Response'),'Reject')))
),
// Condition 2: At Least One Approve
or(
equals(variables('Approver1Response'),'Approve'),
equals(variables('Approver2Response'),'Approve'),
equals(variables('Approver3Response'),'Approve')
)
)
The above combined checks ensures no approver rejects, at least one aprover approves and nulls are treated as "no needed".
Please note that in expressions, empty() function is the safest way to check for nulls. The check empty(variables('Approver1Response')) returns true if approver1Response is null or blank - just for your reference.
Tip: Replace variables('ApproverXResponse') with the actual dynamic content fields you’re using (e.g., items('Apply_to_each')?['Approver1Response']).
Now complete these test scenario if you have implemented expressions:
Test Scenario
| Approver1 |
Approver2 |
Approver3 |
Expected Outcome |
| Approve |
null |
null |
✅ Pass |
| Approve |
Approve |
null |
✅ Pass |
| Approve |
Approve |
Approve |
✅ Pass |
| Reject |
Approve |
null |
❌ Fail |
| null |
null |
null |
❌ Fail |
Please let me know if this helps.
I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!