I think I know the issue, it’s a behavioral logic problem with how multi-branch node inputs work.
Let me explain using a simple workflow,
This workflow is a multi-branch workflow:
Node 3 takes two branches as input, so the execution flow will be:
- First: 1 → 3
- Second: 2 → 3
As a result, node 3 receives two inputs and outputs two items (two branches).
This can be confusing, because these aren’t just two normal items, they’re actually one item from each branch.
Now, when you execute this same logic inside a subworkflow:
You’ll notice that you only get one item! What the 
Actually, the item you get here is from the last branch executed in the subworkflow.
I’m not sure why it’s engineered or designed this way, but that’s how it currently works.
So, what’s the solution?
The lazy/easy fix is to add a “Nothing” loop
like this:
This ensures that all items (branches) are looped over.
Now, if we execute the subworkflow again:
We’ll get all the items from all branches.
However IMO the best approach is to avoid using branches altogether,
If you need to branch, do it using the Merge node instead, like this:
As you can see, we get the same two items:
Hope this explains everything!