@Override
    protected void process(ClusterDistributionManager dm) {
      AdminDistributedSystemImpl admin = AdminDistributedSystemImpl.getConnectedInstance();
      if (admin == null) {
        if (logger.isDebugEnabled()) {
          logger.debug("Ignoring message because there is no admin distributed system present: {}",
              this);
        }
        return; // probably shutting down or still connecting
      }
      List listeners = admin.getCacheListeners();
      Iterator itr = listeners.iterator();
      SystemMemberCacheListener listener = null;
      while (itr.hasNext()) {
        listener = (SystemMemberCacheListener) itr.next();
        if (regionPath == null) {
          SystemMemberCacheEvent event = new SystemMemberCacheEventImpl(getSender(), op);
          if (op == Operation.CACHE_CREATE) {
            listener.afterCacheCreate(event);
          } else {
            listener.afterCacheClose(event);
          }
        } else {
          SystemMemberRegionEvent event =
              new SystemMemberRegionEventImpl(getSender(), op, regionPath);
          if (op.isRegionDestroy()) {
            listener.afterRegionLoss(event);
          } else {
            listener.afterRegionCreate(event);
          }
        }
      }
    }
This class processes the message to be delivered to admin node. [This needs to be redesigned and
reimplemented... see 32887]

@since GemFire 5.0
geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheEventProcessor.java