public void saveToDB() {
        // Make the node persistent
        final PubSubPersistenceProvider persistenceProvider = XMPPServer.getInstance().getPubSubModule().getPersistenceProvider();
        if (!savedToDB) {
            getLogger().trace("Create node in persistence provider.");
            persistenceProvider.createNode(this);
            // Set that the node is now in the DB
            setSavedToDB(true);
            // Save the existing node affiliates to the DB
            for (NodeAffiliate affiliate : affiliates) {
                persistenceProvider.createAffiliation(this, affiliate);
            }
            // Add new subscriptions to the database
            for (NodeSubscription subscription : subscriptionsByID.values()) {
                persistenceProvider.createSubscription(this, subscription);
            }
            // Add the new node to the list of available nodes
            getService().addNode(this);
            // Notify the parent (if any) that a new node has been added
            if (parentIdentifier != null) {
                getParent().childNodeAdded(this);
            }
        }
        else {
            getLogger().trace("Update node in persistence provider.");
            persistenceProvider.updateNode(this);
        }
    }
Saves the node configuration to the backend store.
xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/Node.java