@Override
    public void writeExternal(ObjectOutput out) throws IOException {
        ExternalizableUtil.getInstance().writeSafeUTF(out, username);
        ExternalizableUtil.getInstance().writeSafeUTF(out, getName());
        ExternalizableUtil.getInstance().writeBoolean(out, email != null);
        if (email != null) {
            ExternalizableUtil.getInstance().writeSafeUTF(out, email);
        }

        // OF-2833/OF-1768: Handle null values. Here, we represent null with a zero (instead of the customary boolean) to retain backwards compatibility with cluster nodes that assume that these values are never null.
        ExternalizableUtil.getInstance().writeLong(out, creationDate == null ? 0 : creationDate.getTime());
        ExternalizableUtil.getInstance().writeLong(out, modificationDate == null ? 0 : modificationDate.getTime());
    }
Set implementation that updates the database when properties are deleted.
xmppserver/src/main/java/org/jivesoftware/openfire/user/User.java