How to transition an issue to a specified status on update of its custom fields?
Currently I implemented a Listener which transitions the ticket when it receives an Update event but realized there's a criticality in Jira's implementation whereby the issue might be in an inconsistent state just after having been updated and the transition fail, the result is that Jira returns an:
"It seems that you have tried to perform a workflow operation (some-transition) that is not valid for the current state of this issue"
Of course the transition is valid instead.
Someone suggested setting the workflow states which are null or 0 to "ACTIVATED" manually through the following code:
List<GenericValue> workflowEntries = ComponentAccessor.getOfBizDelegator().findByAnd("OSWorkflowEntry", FieldMap.build("id", issue.getWorkflowId()))
for (GenericValue workflowEntry : workflowEntries)
{
if (workflowEntry.getInteger("state") == null || "0".equals(workflowEntry.getInteger("state").toString()))
{
workflowEntry.set("state", new Integer(WorkflowEntry.ACTIVATED))
workflowEntry.store()
}
}
However this solution doesn't seem to work in this case.
What is the correct way to implement an automatic transition when a field is updated by the user?
Hi @Beppe Marcon ,
I have been using something like this in the beginning of the script :
def workflowEntries = ComponentAccessor.getOfBizDelegator().findByAnd("OSWorkflowEntry", FieldMap.build("id", issue.getWorkflowId())) // get workflow informations
def workflowState = workflowEntries[0].get("state")
def tryCounter = 0
while(workflowState==0) {
log.debug("Retry number " + tryCounter)
sleep(1000)
workflowEntries = ComponentAccessor.getOfBizDelegator().findByAnd("OSWorkflowEntry", FieldMap.build("id", issue.getWorkflowId()))
workflowState = workflowEntries[0].get("state")
log.debug("workflowState="+workflowState)
tryCounter++
if (tryCounter == 5) {
log.error("Too many retries...")
break
}
}
log.debug("now proceeding with the workflow transition...")
But I only have had issues in a create listener.
My guess is that you are trying to trigger a transition that cannot be executed in the current status. Are you sure you are triggering a valid transition ?
Antoine
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.