@Override
  public String startPoolManagementProcess(String businessKey, Pool pool) {
    Map<String, Object> arguments = Maps.newHashMap();

    arguments.put(CoreProcessVariables.POOL, pool);
    arguments.put(CoreProcessVariables.PROVIDER, getId());
    arguments.put(CoreProcessVariables.POOL_BUSINESS_KEY, businessKey);
    arguments.put(
        CoreProcessVariables.BOOTSTRAP_TIMEOUT,
        convertTimeoutToISO8601TimeDuration(pool.getBootstrapTimeInSeconds()));

    /* needed because the Activiti EL doesn't work as expected and properties can't be read from the pool. */
    arguments.put(
        ProcessVariables.SPOT_BID, pool.getProvider().getOption(ProviderOptions.SPOT_BID));

    /* Authenticate as kermit to make the process visible in the Explorer UI */
    processEngine
        .getIdentityService()
        .setAuthenticatedUserId(CoreConstants.ACTIVITI_EXPLORER_DEFAULT_USER);

    ProcessInstance instance =
        processEngine
            .getRuntimeService()
            .startProcessInstanceByKey(MANAGEMENT_PROCESS_KEY, businessKey, arguments);

    return instance.getProcessInstanceId();
  }