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)

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.