public void migrateProperty(String name) {
        final Lock writeLock = readWriteLock.writeLock();
        writeLock.lock();
        try {
            final String xmlPropertyValue = getProperty(name);
            if (xmlPropertyValue != null) {
                final String databasePropertyValue = JiveGlobals.getProperty(name);
                if (databasePropertyValue == null) {
                    Log.debug("JiveGlobals: Migrating XML property '" + name + "' into database.");
                    JiveGlobals.setProperty(name, xmlPropertyValue);
                    if (JiveGlobals.isXMLPropertyEncrypted(name)) {
                        JiveGlobals.setPropertyEncrypted(name, true);
                    }
                    deleteProperty(name);
                } else if (databasePropertyValue.equals(xmlPropertyValue)) {
                    Log.debug("JiveGlobals: Deleting duplicate XML property '" + name + "' that is already in database.");
                    if (JiveGlobals.isXMLPropertyEncrypted(name)) {
                        JiveGlobals.setPropertyEncrypted(name, true);
                    }
                    deleteProperty(name);
                } else {
                    Log.warn("XML Property '" + name + "' differs from what is stored in the database.  Please make property changes in the database instead of the configuration file.");
                }
                SystemProperty.getProperty(name).ifPresent(SystemProperty::migrationComplete);
            }
        } finally {
            writeLock.unlock();
        }
    }
Convenience routine to migrate an XML property into the database
storage method.  Will check for the XML property being null before
migrating.

@param name the name of the property to migrate.
xmppserver/src/main/java/org/jivesoftware/util/XMLProperties.java