private Command<Void> getCreateCommand(final Map<String, Object> properties, final Map<String, String> requestInfoProps) {
    return new Command<Void>() {
      @SuppressWarnings("rawtypes")
      @Override
      public Void invoke() throws AmbariException {
        String rawRequestBody = requestInfoProps.get(Request.REQUEST_INFO_BODY_PROPERTY);
        Preconditions.checkArgument(!Strings.isNullOrEmpty(rawRequestBody), REQUEST_BODY_EMPTY_ERROR_MESSAGE);

        Map<String, Object> rawBodyMap = jsonSerializer.<Map<String, Object>>fromJson(rawRequestBody, Map.class);
        Object configurationData = rawBodyMap.get(CONFIGURATION_PROPERTY_ID);

        if (configurationData != null) {
          Preconditions.checkArgument(configurationData instanceof List, CONFIGURATION_LIST_CHECK_ERROR_MESSAGE);
          for (Object map : (List) configurationData) {
            Preconditions.checkArgument(map instanceof Map, CONFIGURATION_MAP_CHECK_ERROR_MESSAGE);
            Preconditions.checkArgument(((Map) map).size() <= 1, CONFIGURATION_MAP_SIZE_CHECK_ERROR_MESSAGE);
          }
        }
        SecurityConfiguration securityConfiguration = securityConfigurationFactory
          .createSecurityConfigurationFromRequest((Map<String, Object>) rawBodyMap.get(BLUEPRINTS_PROPERTY_ID), true);

        Blueprint blueprint;
        try {
          blueprint = blueprintFactory.createBlueprint(properties, securityConfiguration);
        } catch (NoSuchStackException e) {
          throw new IllegalArgumentException("Specified stack doesn't exist: " + e, e);
        }

        if (blueprintDAO.findByName(blueprint.getName()) != null) {
          throw new DuplicateResourceException(
              "Attempted to create a Blueprint which already exists, blueprint_name=" +
              blueprint.getName());
        }

        try {
          blueprint.validateRequiredProperties();
        } catch (InvalidTopologyException | GPLLicenseNotAcceptedException e) {
          throw new IllegalArgumentException("Blueprint configuration validation failed: " + e.getMessage(), e);
        }

        String validateTopology =  requestInfoProps.get("validate_topology");
        if (validateTopology == null || ! validateTopology.equalsIgnoreCase("false")) {
          try {
            blueprint.validateTopology();
          } catch (InvalidTopologyException e) {
            throw new IllegalArgumentException(e.getMessage());
          }
        }

        LOG.info("Creating Blueprint, name=" + blueprint.getName());
        String blueprintSetting = blueprint.getSetting() == null ? "(null)" :
                jsonSerializer.toJson(blueprint.getSetting().getProperties());
        LOG.info("Blueprint setting=" + blueprintSetting);

        try {
          blueprintDAO.create(blueprint.toEntity());
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
        return null;
      }
    };
  }
Create a create command with all properties set.

@param properties        properties to be applied to blueprint
@param requestInfoProps  request info properties

@return a new create command
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java