Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Add issue to epic in Postfuntion step script

Alex Cumberland
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
February 19, 2020

System specs:

  • JIRA Server 8.42
  • Adaptavisit Scriptrunner for Jira - 5.6.8.1-jira8

 

What I am trying to get to work is linking a newly cloned issue to an Epic Issue that is the parent of the sub-task that we are cloning information from to create the new Issue.

I have found several examples on the web but have not seemed to be able to get any to work.   I double checked that the issue type that I am creating has the "Epic Link" field on its create screen and it does.   I have managed to get the epic link key but can not set it on the new issue.

 

So we have a transition that when fired does the following:

  • Creates a new issue via clone of type "Task"  via a postscript step 1 (works fine)
  • Based on Field on original issue (that is copied to new issue) will create appropriate sub-tasks on the new issue via a second postscript step 7 (works fine for sub-tasks but not doing epic link to main issue created in step 1)

 

image.png

I finally deleted and rewrote the script in step 7 without actually setting the value on the new issue and it shows no errors.   But any time I had option of setting the epic link it would just fail.  So I am getting my subtasks but the new issue is not being linked under the epic it should.

 

Tried the following:

  • newissue.setCustomFieldValue(epicLinkField ,epicLinkKey.toString())  -- did nothing 
  • Same as above with changing it to use the issueboject of the epic
  • epicLink.updateValue(null, newissue, new ModifiedValue(newissue.getCustomFieldValue(epicLinkField ), epicIssue),new DefaultIssueChangeHolder())  -- this also did nothing based on examples that I found and copied.
  • Also tried moving the location of the script in step 7 to different order of the postfuction steps but that tends to just break everything even the new sub-task creations.

 

Here is relevant part of my script:

 

def newissue = (MutableIssue) issue

for (IssueLink link : relatedOutLinks)
{log.debug "outlink: " + link
log.debug "issue: " + link.getSourceObject()
log.debug "status: " + link.getSourceObject().getStatus()
log.debug "status name: " + link.getSourceObject().getStatus().name
}

for (IssueLink link : relatedLinks)
{log.debug "inLink: " + link
log.debug "issue: " + link.getSourceObject()
log.debug "status: " + link.getSourceObject().getStatus()
log.debug "status name: " + link.getSourceObject().getStatus().name

if (link.getSourceObject().getStatus().name == "Open") {
newissue = link.getSourceObject()
log.debug "New Issue: " + newissue}
}

// Here we are going to attempt to get epic link if it exists for the linked issues Parent
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
IssueManager epicIssueManager = ComponentAccessor.getIssueManager();
CustomField epicLinkField = customFieldManager.getCustomFieldObject('customfield_10006'); // cf[10006] = Epic Link

def epicLinkKey = issue.getParentObject().getCustomFieldValue(epicLinkField) // gets value of Parent of original issue that has epic link

// If we find the epic key then we need to update newissue with this epic link
if (epicLinkKey != null) {
log.debug "newissue = " + newissue.key + " epicLinkKey = " + epicLinkKey
}

 

Here is log output showing that I am getting the new Issue number and the original master epic issue

 

console] inLink: com.atlassian.jira.issue.link.IssueLinkImpl@68aa28b5[id=85659,sourceId=98862,destinationId=98864,issueLinkType=10100]
[console] issue: ABC-47
[console] status: IssueConstantImpl[[GenericEntity:Status][sequence,1][statuscategory,2][name,Open][iconurl,/images/icons/statuses/open.png][description,The issue is open and ready for the assignee to start work on it.][id,1]]
[console] status name: Open
[console] New Issue: ABC-47

[console] inLink: com.atlassian.jira.issue.link.IssueLinkImpl@6143c41d[id=85707,sourceId=98911,destinationId=98864,issueLinkType=10001]
[console] issue: ABC-96
[console] status: IssueConstantImpl[[GenericEntity:Status][sequence,1][statuscategory,2][name,Open][iconurl,/images/icons/statuses/open.png][description,The issue is open and ready for the assignee to start work on it.][id,1]]
[console] status name: Open
[console] New Issue: ABC-96

[console] newissue = ABC-96 epicLinkKey = ABC-40

[console] Custom Field Value for Related I/O contains [JAVA05B]

[console] Creating Java Coding Subtask


ABC-47 - Task that has Epic Link to ABC-40
ABC-96 - New Issue Task cloned from sub-task linked to ABC-47

 

So in the step where there is an epic I just need to update ABC-96 with the Epic Link to ABC-40 and then just keep moving into the script to create the needed sub-tasks.

 

 

 

 

 

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events