private void nodeConfigurationChanged() {
        if (!isNotifiedOfConfigChanges() || !savedToDB) {
            getLogger().trace("Node configuration changed. No notifications needed: node was just created and configured or notification of config changes is disabled");
            return;
        }

        // Build packet to broadcast to subscribers
        Message message = new Message();
        Element event = message.addChildElement("event", "http://jabber.org/protocol/pubsub#event");
        Element config = event.addElement("configuration");
        config.addAttribute("node", nodeID);

        if (deliverPayloads) {
            config.add(getConfigurationChangeForm(null).getElement()); // FIXME localize this form for each recipient.
        }

        getLogger().trace("Node configuration changed. Broadcast notification that the node configuration has changed.");
        broadcastNodeEvent(message, false);

        final CollectionNode parent = getParent();
        if (parent != null){
            getLogger().trace("Node configuration changed. Notify parent node '{}' so that it can notify subscribers with proper subscription depth.", parent);
            parent.childNodeModified(this, message);
        }
    }
The node configuration has changed. If this is the first time the node is configured
after it was created (i.e. is not yet persistent) then do nothing. Otherwise, send
a notification to the node subscribers informing that the configuration has changed.
xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/Node.java