I was thinking the request from Z to get the cluster listeners should block on Y until it installs the new topology, so if the cluster listener is added after that, it will see Z as a member (e.g. like StateTransferRequestCommand, or any TopologyAffectedCommand). But since DistributedExecuteCommand is not a TopologyAffectedCommand, and this is not done automatically, I guess your solution is just as good.