In your example, Split3 loops to itself before the item gets passed on. In Set3 you are then not looking at the incoming data but at the value the corresponding Item from Split3. If you simply change the expression used in Set3 from {{$node["Split3"].json["Customers"]}} to {{$json["Customers"]}} to use the actual incoming data rather than whatever Split3 is currently looking at, you would have the desired output.
This also goes for Set5, you aren’t using the data coming in in Set5 but are referencing data from Split4 (which loops to the next item before Set5 is reached).
So just looking at the incoming items at each of your Set nodes (= using $json instead of $node) would avoid such trouble.
On a more general note, looping is often not required and complicates things a lot. So it’s always good to keep this list in mind.
Glad to hear this helps, thanks a lot for confirming!
On a side node, the input data can also be added through the expression editor, so you don’t have to type it manually. You can find it under Current Node > Input Data > JSON: