protected void doValidation() {
    try {
      // just checking that the issue exists and that the user has permission to see it.
      getIssue();
    } catch (IssuePermissionException ipe) {
      return;
    } catch (IssueNotFoundException infe) {
      return;
    }

    final IssueInputParameters issueInputParameters =
        new IssueInputParametersImpl(ActionContext.getParameters());
    issueInputParameters.setRetainExistingValuesWhenParameterNotProvided(false);
    transitionResult =
        issueService.validateTransition(
            getRemoteUser(), getIssueObject().getId(), action, issueInputParameters);
    setFieldValuesHolder(transitionResult.getFieldValuesHolder());
    if (!transitionResult.isValid()) {
      addErrorCollection(transitionResult.getErrorCollection());
    }
  }