Summary
When an If/Else has a step that is shared by both branches (a merge / convergence node) — i.e. the merge node is the direct target of one branch and is reached downstream of the other branch — that merge node (and everything after it) is silently SKIPPED when the other branch is taken. The run then reports COMPLETED, so it looks successful while having done nothing past the branch.
See test example here:
Minimal reproduction (3 nodes)
Structure:
If/Else
├ (branch A) → Update Record #1 → Update Record #M
└ (branch B / else) ───────────────→ Update Record #M (#M is shared by both)
Trigger so that branch A is taken.
Actual (run steps):
If/Else → SUCCESS
Update Record #1 (on branch A) → SUCCESS
Update Record #M (shared merge) → SKIPPED
- Run status → COMPLETED
So the branch that was taken ran its first step, then the shared node was skipped even though branch A flows into it.
Expected: Update Record #M runs (it is reachable from the taken branch). The run should reflect that the merge node executed.
Workaround
A workaround that can be used is this. We add an intermediate fake step for "else" so it's not skipped by the "if"
Expectd behaviour
We should be able to have if / else with only a step for the if but not for the else (and other way around)
Summary
When an
If/Elsehas a step that is shared by both branches (a merge / convergence node) — i.e. the merge node is the direct target of one branch and is reached downstream of the other branch — that merge node (and everything after it) is silently SKIPPED when the other branch is taken. The run then reports COMPLETED, so it looks successful while having done nothing past the branch.See test example here:
Minimal reproduction (3 nodes)
Structure:
Trigger so that branch A is taken.
Actual (run steps):
If/Else→ SUCCESSUpdate Record #1(on branch A) → SUCCESSUpdate Record #M(shared merge) → SKIPPEDSo the branch that was taken ran its first step, then the shared node was skipped even though branch A flows into it.
Expected:
Update Record #Mruns (it is reachable from the taken branch). The run should reflect that the merge node executed.Workaround
A workaround that can be used is this. We add an intermediate fake step for "else" so it's not skipped by the "if"
Expectd behaviour
We should be able to have if / else with only a step for the if but not for the else (and other way around)