The Merge node has a unique behavior in which it activates connected nodes independently (please also add an explanation in the documentation here: Merge | Docs). I think it’s something that should be configurable in the node.
My use case:
I had multiple cases in which the Merge node triggered nodes that were not supposed to be triggered (usually in an unused path of an IF node).
I think it would be beneficial to add this because:
It gives more control of the Merge node, in my personal experience it caused some really unexpected workflow behavior which was not consistent. By disabling this behavior the Merge node can be used more reliably.
However one short question regarding your use case. Would you really need a Merge-Node in this case? It sounds to me right now like in this case simply removing the Merge-Node and rather connecting directly to the node afterward is what you want and need.
For your question I tend to prefer using a single execution, it’s easier to keep track of and has less potential for bugs. (This may require a different thread but multiple executions in a Merge execute only once)
It also makes logical sense to use IF nodes to split a branch and use the Merge nodes to combine them together afterwards.
I have 2 examples of bugs occurring in relation to the Merge node and an IF node:
In this simplified workflow there the if node output is a single empty item on the true path. The merge node triggers the bottom node to activate and creates an extra unwanted entity in the system.
My 2nd example is a real use case which is more complex - I get a list of items to create/delete and my implementation requires that I first delete and then create. The nodes from from the IF to the Merge are set to always pass data and the delete node is set to continue on fail.
I tested a case with a single item that go to the false path on the IF and somehow the node on the true path used information that was only on the false path of the IF.
I mainly presented these cases to show potential bugs.
For case 1 it’s true it will work for a simple IF but if I’ll have more complex conditions it will start to get messy to try and find a workaround for each case. I wanted to present a case that Merge node always triggers a node that is on a situational path.
As for case 2 upon further testing it appears to be an issue with the SuiteCRM node ignoring a query when getting an empty value. For future reference the workaround was to add a Function Item node that set an empty string to the value if the item is empty.