/**
   * Registers a {@code ActionInstance} with actionInstance service
   *
   * @param actionInstance
   */
  @Override
  public String register(ActionInstance actionInstance) {
    validate(actionInstance);

    actionInstanceDao.createActionInstance(actionInstance.getGroup(), actionInstance);
    if (actionInstance.getTrigger() != null) {
      actionInstance.setFenzoTrigger(
          actionInstance
              .getTrigger()
              .createFenzoTrigger(actionInstance.getContext(), InternalAction.class));
      try {
        triggerOperator.registerTrigger(
            actionInstance.getGroup(), actionInstance.getFenzoTrigger());
      } catch (SchedulerException e) {
        throw new ActionOperationException(
            String.format("Exception occurred while registering actionInstance %s", actionInstance),
            e);
      }
    }
    actionInstanceDao.updateActionInstance(actionInstance);

    logger.info("Successfully registered the actionInstance {}", actionInstance);
    return actionInstance.getId();
  }