Sometimes we need to transition issues from one status to other, but these issues can be from different projects and can be from different Workflows.
In this case, probably the Transition IDs will be different.
For this reason we need to develop a “discover transition” function.
See below an example of how we can start with the code…
String jqlSearch = "Some JQL Query" SearchService searchService = ComponentAccessor.getComponent(SearchService.class) SearchService.ParseResult parseResult = searchService.parseQuery(currentUserObj, jqlSearch) if (parseResult.isValid()) { def searchResult = searchService.search(currentUserObj, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) def issues = searchResult.issues.collect {issueMgr.getIssueObject(it.id)} for ( issue in issues ){ //Transition issue by transition name and not by transition id, very useful for queries with issues with different workflows def action = findTransition(issue,"Transition Name") if ( action != null ) executeTransition(issue,action,currentUserObj) //Do more changes to the issue... MutableIssue issue_aux = issue issue_aux.setAssigneeId(issue.getReporterId()) issue_aux.store() } } def ActionDescriptor findTransition(Issue issue, String actionNamePattern) { JiraWorkflow workflow = ComponentAccessor.getWorkflowManager().getWorkflow(issue) Status status = issue.getStatus() StepDescriptor sd = workflow.getLinkedStep(status) Iterator<ActionDescriptor> it = sd.getActions().iterator() ActionDescriptor action = null while ( it.hasNext() ) { ActionDescriptor ad = (ActionDescriptor)it.next() String actionName = ad.getName() if ( actionName==actionNamePattern ) { action = ad } } return action } def executeTransition(Issue issue, ActionDescriptor action, ApplicationUser user) { try { WorkflowTransitionUtil workflowTransitionUtil = ComponentAccessor.getComponent(WorkflowTransitionUtilFactory.class).create() ErrorCollection errors = null workflowTransitionUtil.setIssue((MutableIssue) issue) workflowTransitionUtil.setUserkey(user?.getKey()) workflowTransitionUtil.setAction(action?.getId()) errors = workflowTransitionUtil.validate() } catch (Exception e) { } }