I can get it to join if I wait till the machines are imaged and then un-tick and re-tick the box to send the command again.
This doesn’t send the command again. The FOG Client gets it’s information via polling the server every x amount of seconds, default is five minutes. The server doesn’t initiate a send, the client does. On every single pole, the FOG Client is given all configuration the host should have from the server - similar to how Puppet works in a way. It sounds to me like you’re probably experiencing a server bug in what is probably an older version of FOG - The latest is 1.4, I strongly suggest you upgrade to it.
The only things the FOG Server initiates a send of are WOL and Multicast and pings, replication, maybe a couple other minor things. Most client side activities is completely controlled either by the FOG Client or network booting via some method at the client.