public synchronized void startOutbound()
    {
        Log.debug( "(room: '{}'): FMUC outbound federation is being started...", room.getJID() );

        final Collection<MUCOccupant> occupants = room.getOccupants();
        if ( occupants.isEmpty() ) {
            Log.trace("(room: '{}'): No occupants in the room. No need to initiate an FMUC join.", room.getJID());
        } else {
            Log.trace("(room: '{}'): {} occupant(s) in the room. Initiating an FMUC join for each of them.", room.getJID(), occupants.size());
            for ( final MUCOccupant occupant : occupants ) {
                try {
                    Log.trace("(room: '{}'): Making occupant '{}' join the FMUC room.", room.getJID(), occupant.getUserAddress());
                    join( occupant, false, true );
                } catch ( Exception e ) {
                    Log.trace("(room: '{}'): An exception occurred while making occupant '{}' join the FMUC room.", room.getJID(), occupant.getUserAddress(), e);
                }
            }
        }
        Log.debug( "(room: '{}'): Finished starting FMUC outbound federation.", room.getJID() );
    }
Starts federation, which will cause a federation attempt with the outbound ('joined') node, if one is configured,
and there currently are occupants in the room.
xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/FMUCHandler.java