code: @Override
      public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
  
          if (!context.isBooting()) {
              throw new OperationFailedException(HostControllerLogger.ROOT_LOGGER.invocationNotAllowedAfterBoot(operation.require(OP)));
          }
  
          if (context.getRunningMode() == RunningMode.ADMIN_ONLY) {
              throw new OperationFailedException(HostControllerLogger.ROOT_LOGGER.cannotStartServersInvalidMode(context.getRunningMode()));
          }
  
          final ModelNode domainModel = Resource.Tools.readModel(context.readResourceFromRoot(PathAddress.EMPTY_ADDRESS, true));
          context.addStep(new OperationStepHandler() {
              @Override
              public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
                  // start servers
                  final Resource resource =  context.readResource(PathAddress.EMPTY_ADDRESS);
                  final ModelNode hostModel = Resource.Tools.readModel(resource);
                  if(hostModel.hasDefined(SERVER_CONFIG)) {
                      final ModelNode servers = hostModel.get(SERVER_CONFIG).clone();
                      if (hostControllerEnvironment.isRestart() || runningModeControl.getRestartMode() == RestartMode.HC_ONLY){
                          restartedHcStartOrReconnectServers(servers, domainModel, context);
                          runningModeControl.setRestartMode(RestartMode.SERVERS);
                      } else {
                          cleanStartServers(servers, domainModel, context);
                      }
                  }
                  context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER);
              }
          }, OperationContext.Stage.RUNTIME);
      }
docs: {@inheritDoc}