public void propertiesDeletedPostProcess(@Nonnull final Group group, @Nonnull final Map<String, String> originalProperties)
    {
        final Group updatedGroup;
        try {
            // By forcing the lookup, the cache will automatically receive the required refresh.
            updatedGroup = getGroup(group.getName(), true);
        } catch (GroupNotFoundException e) {
            Log.error("Group '{}' was not found after all its properties were removed from it. This is indicative of a bug in Openfire. Please consider reporting it.", group.getName(), e);
            return;
        }

        // Make sure that 'shared roster' changes are processed.
        for (final Map.Entry<String, String> entry : originalProperties.entrySet()) {
            GroupManager.getInstance().propertyChangePostProcess(group, entry.getKey(), entry.getValue());
        }

        // Fire event.
        final Map<String, Object> event = new HashMap<>();
        event.put("type", "propertyDeleted");
        event.put("propertyKey", "*");
        GroupEventDispatcher.dispatchEvent(updatedGroup, GroupEventDispatcher.EventType.group_modified, event);
    }
Updates the caches maintained by this manager and dispatches events that reflect a group having all of its
properties removed.

This method is intended to be invoked to update the internal state of GroupManager after a group has been
updated. It should rarely be invoked by code that is not part of the GroupManager implementation.

@param group The group that was modified.
@param originalProperties The properties of the group prior to the removal.
xmppserver/src/main/java/org/jivesoftware/openfire/group/GroupManager.java