Trying to implement that if a sub-task moves to IN WORK that the parent also moves to IN WORK.
I found the following code from https://community.atlassian.com/t5/Jira-Core-questions/Script-Runner-Transition-parent-issue-based-on-subtask-status/qaq-p/63722
import com.opensymphony.workflow.WorkflowContext;
import com.atlassian.jira.config.SubTaskManager;
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Logger
import org.apache.log4j.Level
def log = Logger.getLogger(getClass())
log.setLevel(Level.DEBUG)
String currentUser = ((WorkflowContext) transientVars.get("context")).getCaller()
WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class)
MutableIssue parent = issue.getParentObject() as MutableIssue
def issueTypeName = issue.issueTypeObject.name
def parentTypeName = parent.issueTypeObject.name
log.debug "issue: "+issue.key
log.debug "issue id: "+issue
log.debug "issue type: "+issueTypeName
log.debug "parent: "+parent.key
log.debug "parent id: "+parent
log.debug "parent type: "+parentTypeName
log.debug "currentUser: "+currentUser
String originalParentStatus = parent.getStatus().getSimpleStatus().getName()
def isDevBacklogStatus = originalParentStatus in [ 'Open' ]
log.debug "parent status: >>"+originalParentStatus+"<<"
if (isDevBacklogStatus) {
log.debug "In set status"
workflowTransitionUtil.setIssue(parent)
workflowTransitionUtil.setUserkey(currentUser)
workflowTransitionUtil.setAction(11)
if (workflowTransitionUtil.validate()) {
workflowTransitionUtil.progress()
}
}
My project has three issue types 'Task','Production Issue' and 'Sub-Task'. All three issue types use the same workflow.
The following script works if you move a 'Sub-Task' of a task to IN WORK, it moves the parent 'Task' to IN WORK, however if the 'Sub-Task' is under the 'Production Issue' it fails with the following:
2019-01-29 13:28:45,659 DEBUG [Script58]: issue: SCR-10
2019-01-29 13:28:45,659 DEBUG [Script58]: issue id: SCR-10
2019-01-29 13:28:45,659 DEBUG [Script58]: issue type: Sub-task
2019-01-29 13:28:45,659 DEBUG [Script58]: parent: SCR-9
2019-01-29 13:28:45,659 DEBUG [Script58]: parent id: SCR-9
2019-01-29 13:28:45,659 DEBUG [Script58]: parent type: Production Issue
2019-01-29 13:28:45,659 DEBUG [Script58]: currentUser: dburns
2019-01-29 13:28:45,660 DEBUG [Script58]: parent status: >>Open<<
2019-01-29 13:28:45,660 DEBUG [Script58]: In set status
2019-01-29 13:28:45,661 DEBUG [Script58]: has screen
2019-01-29 13:28:45,664 WARN [common.UserScriptEndpoint]: Script console script failed:
java.lang.IllegalArgumentException: Issue Type for issue with id '77232' is null.
at com.atlassian.jira.workflow.OSWorkflowManager.getWorkflow(OSWorkflowManager.java:284)
at com.atlassian.jira.permission.PermissionContextImpl.getRelevantStepDescriptor(PermissionContextImpl.java:67)
at com.atlassian.jira.permission.WorkflowPermissionFactory.getWorkflowPermissions(WorkflowPermissionFactory.java:33)
at com.atlassian.jira.security.WorkflowBasedPermissionManager.workflowPermissionCheck(WorkflowBasedPermissionManager.java:196)
at com.atlassian.jira.security.WorkflowBasedPermissionManager.workflowPermissionCheck(WorkflowBasedPermissionManager.java:172)
at com.atlassian.jira.security.WorkflowBasedPermissionManager.workflowPermissionCheck(WorkflowBasedPermissionManager.java:137)
at com.atlassian.jira.security.WorkflowBasedPermissionManager.hasPermission(WorkflowBasedPermissionManager.java:83)
at com.atlassian.jira.security.DefaultPermissionManager.hasPermission(DefaultPermissionManager.java:103)
at com.atlassian.jira.security.WorkflowBasedPermissionManager.hasPermission(WorkflowBasedPermissionManager.java:76)
at com.atlassian.jira.security.ApplicationRequiredPermissionManager.lambda$hasPermission$0(ApplicationRequiredPermissionManager.java:71)
at com.atlassian.jira.security.ApplicationRequiredPermissionManager.checkUserHasApplicationOrFalse(ApplicationRequiredPermissionManager.java:187)
at com.atlassian.jira.security.ApplicationRequiredPermissionManager.hasPermission(ApplicationRequiredPermissionManager.java:71)
at com.atlassian.jira.security.PublicAccessPermissionManager.lambda$hasPermission$0(PublicAccessPermissionManager.java:75)
at com.atlassian.jira.security.PublicAccessPermissionManager.checkPublicAccessEnabledOrDelegate(PublicAccessPermissionManager.java:193)
at com.atlassian.jira.security.PublicAccessPermissionManager.hasPermission(PublicAccessPermissionManager.java:75)
at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:22)
at com.sun.proxy.$Proxy11.hasPermission(Unknown Source)
at com.atlassian.jira.issue.fields.AbstractOrderableField.hasPermission(AbstractOrderableField.java:274)
at com.atlassian.jira.issue.fields.FixVersionsSystemField.isShown(FixVersionsSystemField.java:61)
at com.atlassian.jira.issue.fields.screen.AbstractFieldScreenLayoutItem.isShown(AbstractFieldScreenLayoutItem.java:75)
at com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItemImpl.isShow(FieldScreenRenderLayoutItemImpl.java:65)
at com.atlassian.jira.workflow.WorkflowTransitionUtilImpl.progress(WorkflowTransitionUtilImpl.java:341)
at com.atlassian.jira.workflow.WorkflowTransitionUtil$progress$3.call(Unknown Source)
at Script58.run(Script58.groovy:53)
Scrapped the idea of trying to do this as a post-function and created a listener to move it instead and it is now working...
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.