docs: public void createService(String domainProviderName, boolean force, Map<String, String> attributes) {
          // check if a domain has been chosen
          if (domainProviderName == null || domainProviderName.isEmpty()) {
              domainProviderName = selectDomainProvider();
          }
  
          // get domain provider Id
          String domainProviderId = "";
          List<DomainProvider> domainProvider = getDomainProvider();
          for (DomainProvider provider : domainProvider) {
              if (provider.getName().getString(Locale.getDefault()).equals(domainProviderName)) {
                  domainProviderId = provider.getId();
              }
          }
          // get the connector which should be created
          ConnectorProvider connectorProvider =
              getConnectorToCreate(domainProviderId, attributes.get(ServiceCommands.CONNECTOR_TYPE));
  
          String id;
          if (attributes.isEmpty() || !attributes.containsKey(org.osgi.framework.Constants.SERVICE_PID)) {
              OutputStreamFormater.printValue("Please enter an ID");
              id = readUserInput();
          } else {
              id = attributes.get(org.osgi.framework.Constants.SERVICE_PID);
          }
  
          ServiceDescriptor descriptor = connectorProvider.getDescriptor();
          OutputStreamFormater.printValue(String.format("Please enter the attributes for %s, keep empty for default",
              descriptor.getName().getString(Locale.getDefault())));
  
          // get attributes for connector
          Map<String, String> attributeMap = getConnectorAttributes(descriptor.getAttributes(), attributes);
          Map<String, Object> properties = new HashMap<String, Object>();
  
          ConnectorDescription connectorDescription =
              new ConnectorDescription(domainProviderId, connectorProvider.getId(), attributeMap, properties);
          if (force) {
              if (id != null && !id.isEmpty()) {
                  serviceManager.forceCreateWithId(id, connectorDescription);
              } else {
                  serviceManager.forceCreate(connectorDescription);
              }
              OutputStreamFormater.printValue("Connector successfully created");
          } else {
              OutputStreamFormater.printValue("Do you want to create the connector with the following attributes:", "");
              OutputStreamFormater.printValue("Connector ID", id);
              for (String key : attributeMap.keySet()) {
                  OutputStreamFormater.printValue(key, attributeMap.get(key));
              }
              OutputStreamFormater.printValue("Create connector: (Y/n)");
              if (!readUserInput().equalsIgnoreCase("n")) {
                  try {
                      if (id != null && !id.isEmpty()) {
                          serviceManager.createWithId(id, connectorDescription);
                      } else {
                          serviceManager.create(connectorDescription);
                      }
                      OutputStreamFormater.printValue("Connector successfully created");
                  } catch (RuntimeException e) {
                      e.printStackTrace();
                      OutputStreamFormater.printValue("Connector validation failed, creation aborted");
                  }
              } else {
                  OutputStreamFormater.printValue("Creation aborted");
              }
          }
      }