@Override
  public <T extends AbstractConfiguration<?>> ClusterManagementRealizationResult create(T config) {
    // validate that user used the correct config object type
    ConfigurationManager configurationManager = getConfigurationManager(config);

    if (persistenceService == null) {
      return assertSuccessful(new ClusterManagementRealizationResult(StatusCode.ERROR,
          "Cluster configuration service needs to be enabled."));
    }

    lockCMS();
    try {
      try {
        // first validate common attributes of all configuration object
        commonValidator.validate(CacheElementOperation.CREATE, config);

        ConfigurationValidator validator = validators.get(config.getClass());
        if (validator != null) {
          validator.validate(CacheElementOperation.CREATE, config);
        }

        // check if this config already exists
        if (configurationManager instanceof CacheConfigurationManager) {
          memberValidator.validateCreate(config, (CacheConfigurationManager) configurationManager);
        }
      } catch (EntityExistsException e) {
        raise(StatusCode.ENTITY_EXISTS, e);
      } catch (IllegalArgumentException e) {
        raise(StatusCode.ILLEGAL_ARGUMENT, e);
      }

      // find the targeted members
      Set<String> groups = new HashSet<>();
      Set<DistributedMember> targetedMembers;
      if (config instanceof RegionScoped) {
        String regionName = ((RegionScoped) config).getRegionName();
        groups = memberValidator.findGroups(regionName);
        if (groups.isEmpty()) {
          raise(StatusCode.ENTITY_NOT_FOUND, "Region provided does not exist: " + regionName);
        }
        targetedMembers = memberValidator.findServers(groups.toArray(new String[0]));
      } else {
        final String groupName = AbstractConfiguration.getGroupName(config.getGroup());
        groups.add(groupName);
        targetedMembers = memberValidator.findServers(groupName);
      }
      ClusterManagementRealizationResult result = new ClusterManagementRealizationResult();

      // execute function on all targeted members
      List<RealizationResult> functionResults = executeCacheRealizationFunction(
          config, CacheElementOperation.CREATE,
          targetedMembers);
      functionResults.forEach(result::addMemberStatus);

      // if any false result is added to the member list
      if (result.getStatusCode() != StatusCode.OK) {
        result.setStatus(StatusCode.ERROR, "Failed to create on all members.");
        return assertSuccessful(result);
      }

      // persist configuration in cache config
      List<String> updatedGroups = new ArrayList<>();
      List<String> failedGroups = new ArrayList<>();
      for (String groupName : groups) {
        try {
          configurationManager.add(config, groupName);
          updatedGroups.add(groupName);
        } catch (Exception e) {
          logger.error(e.getMessage(), e);
          failedGroups.add(groupName);
        }
      }

      setResultStatus(result, updatedGroups, failedGroups);

      // add the config object which includes the HATEOAS information of the element created
      if (result.isSuccessful()) {
        result.setLinks(config.getLinks());
      }
      return assertSuccessful(result);
    } finally {
      unlockCMS();
    }
  }
each locator will have one instance of this running if enabled
geode-core/src/main/java/org/apache/geode/management/internal/api/LocatorClusterManagementService.java