Currently the Join node will use the last message to arrive a the “template” for the outgoing message. The payload contains the joined up parts of the message. What this means is that any properties above payload (i.e. directly on msg.) will ONLY come from the last message to arrive. If the user adds any other top level properties on any but the last message to arrive they will be lost.
This has be reported as an issue - https://github.com/node-red/node-red/issues/1782
As this is the join node after all - it would probably make sense to also merge as many top level properties as well - with newer arrivals overwriting any older ones. The net result would be that the outgoing msg would still contain the last properties to arrive - but would also include any other top level properties from other parts. (i.e. a superset).
Question : should this be the default behaviour ? (or indeed the only behaviour). Or should it be an option that has to be selected ?
I would like to make it the default/only behaviour - BUT this is a change that could cause breakage if someone is relying on other properties NOT to be there… so a bit niche… but…
Any thoughts appreciated please.