I am using a Custom script post-function [ScriptRunner] that is triggered after clicking on the transition "MounaCompleted" located in my menu item (last item in the menu).
I am using the following code to transition an issue after clicking on the "Completed" menu item.
Initially, my issue is in the status "Open" and I would like to transition my issue from "Open" to "Fixed". I am using the following code which does not work. My problem is that
if (validationResult.isValid())
evaluates to false and I end up printing
Failed to transition subtask 7 com.atlassian.jira.bc.issue.IssueService$TransitionValidationResult@105aff4d
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.workflow.WorkflowManager
import org.apache.log4j.Logger
import com.atlassian.jira.component.ComponentAccessor
def log = Logger.getLogger("atlassian-jira.log")
log.warn("This is the last action ")
WorkflowManager workflowManager = ComponentAccessor.getWorkflowManager();
def issueService = ComponentAccessor.getIssueService()
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
if (issue.status.name == "Open") {
log.warn("Failed to transition subtask 1"+issue.status.name)
def issueInputParameters = issueService.newIssueInputParameters()
issueInputParameters.with {
log.warn("Failed to transition subtask 2")
setResolutionId("10001") // resolution of "Fixed"
setComment("*Resolving* as a result of the *Resolve* action being applied to the parent.")
setSkipScreenCheck(true)
}
// validate and transition subtask
log.warn("Failed to transition subtask 10 "+ user+" "+ issue.getId()+" "+ 10001+" "+ issueInputParameters)
def validationResult = null
try{
validationResult = issueService.validateTransition(user, issue.getId(), 10001, issueInputParameters)
}
catch(Exception e){
log.warn("Failed to transition subtask 3 "+e)
}
if (validationResult.isValid()) {
def issueResult = issueService.transition(user, validationResult)
log.warn("Failed to transition subtask 4")
if (!issueResult.isValid()) {
log.warn("Failed to transition subtask 5")
log.warn("Failed to transition subtask ${issue.getId()}, errors: ${issueResult.errorCollection}")
}else{
log.warn("Failed to transition subtask 6")
log.warn("success")
}
} else {
log.warn("Failed to transition subtask 7 "+validationResult)
log.warn("Could not transition subtask ${issue.getId()}, errors: ${validationResult.errorCollection}")
}
}else {
log.warn("Failed to transition subtask 8")
log.warn("Failed to transition subtask ")
log.warn("Failed to transition subtask3333 "+issue.getId())
}
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.Issue;
import java.util.HashMap;
import java.util.List;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.workflow.JiraWorkflow
import com.atlassian.jira.workflow.WorkflowManager
import org.apache.log4j.Logger
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.changehistory.ChangeHistoryItem
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.IssueInputParametersImpl
import com.atlassian.jira.bc.issue.IssueService.IssueValidationResult
import com.atlassian.jira.user.ApplicationUser
import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.workflow.WorkflowException;
import com.opensymphony.workflow.loader.ActionDescriptor;
import com.opensymphony.workflow.loader.StepDescriptor;
import com.opensymphony.workflow.spi.SimpleStep;
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.ConstantsManager
def log = Logger.getLogger("atlassian-jira.log")
if (issue.getStatus().getSimpleStatus().getId().equals("1")) {
log.warn("MOUNA 1");
int transitionFromOpentoFixed = 71;
int transitionFromFixedToTested = 111;
int transitionFromTestedToCompleted = 131;
log.warn("MOUNA 100 transitionFromOpentoFixed " + issue.getStatus());
transition(transitionFromOpentoFixed, "Fixed");
log.warn("MOUNA 101 transitionFromFixedToTested " + issue.getStatus());
transition(transitionFromFixedToTested, "Tested");
log.warn("MOUNA 102 transitionFromTestedToCompleted " + issue.getStatus());
transition(transitionFromTestedToCompleted, "Completed");
}
void transition(int transitionToBeDone, String destinationStatus) {
issue = ComponentAccessor.getIssueManager().getIssueObject(issue.id)
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
log.warn("MOUNA 5 STATUS " + issue.getStatus());
log.warn("MOUNA 6 ");
String issueKey = issue.getKey()
log.warn("MOUNA 7 ");
IssueService issueService = ComponentAccessor.getIssueService()
log.warn("MOUNA 8");
log.warn("MOUNA 9 ");
def issueInputParameters = issueService.newIssueInputParameters()
issueInputParameters.setComment("Transitioning issue from status "+ issue.getStatus().getName()+" to status "+ destinationStatus );
transitionValidationResult = issueService.validateTransition(currentUser, issue.id, transitionToBeDone, issueInputParameters)
log.warn("MOUNA 10");
if (transitionValidationResult.isValid()) {
log.warn("MOUNA 11 transition is valid");
def transitionResult = issueService.transition(currentUser, transitionValidationResult)
log.warn("MOUNA 12 ");
if (transitionResult.isValid()) {
log.warn("MOUNA 13 " + issue.getStatus());
} else {
log.warn("MOUNA 14 transitionResult not valid");
}
}
}