Convert a scripted multiple select issue picker field to a linked issue

Kimi Nakashima May 24, 2021

I am in charge of an internal IT helpdesk and an external customer support project. Sometimes one of the customer support requests will need to be handled by our IT dept so someone on our support team will put in a helpdesk request. More rarely, several support requests will be related to one helpdesk ticket. Since you can't put the "Linked issues" field on the customer portal, I wanted to use a scripted multi-select issue picker. The only problem with that is that it only provides a single direction link. I've figured out how to copy the value of my scripted issue picker to the linked issues field using automation, but it only works it there's only one issue picked.

I've seen what I think might be at least partial solutions to my problem (https://community.atlassian.com/t5/Jira-questions/Copy-Issue-Picker-value-s-to-Linked-Issue-Field/qaq-p/1112392) but as a ScriptRunner/programming novice, I have no idea how to begin implementing it. Is there someone out there who can help?

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Peter-Dave Sheehan
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
May 24, 2021

I don't think that this solution will help you.

I think a Scripted Listener will be better suited.

Project Automation configs are a form of listeners. When EVENT then do ACTION.

So, we can do the same thing with the scripted listener.

From your scriptrunner admin screen, go to the Listener Tab

Click create listener, then select Custom listener

Pick the project (JSM) where the initial issues are getting created.

Select the Evens: Issue Created

This is the code you need, just adjust lines 7-9

import com.atlassian.jira.issue.IssueImpl
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.link.IssueLinkTypeManager
def issueLinkManager = ComponentAccessor.issueLinkManager
def issueLinkTypeManager = ComponentAccessor.getComponent(IssueLinkTypeManager)

def issuePickerFielId = 123456
def runAsUsername = 'admin' //your portal users probably don't have permission to link issues
def linkTypeName = 'Dependency'

def issuePickerCf = ComponentAccessor.customFieldManager.getCustomFieldObject(issuePickerFielId)
def issuesPicked = event.issue.getCustomFieldValue(issuePickerCf)

def runAsUser = ComponentAccessor.userManager.getUserByName(runAsUsername)
def linkType = issueLinkTypeManager.getIssueLinkTypesByName(linkTypeName)[0] //this assumes only one with that name
issuesPicked.each{IssueImpl pickedIssue->
issueLinkManager.createIssueLink(event.issue.id, pickedIssue.id, 1L, linkType.id,runAsUser)
}
TAGS
AUG Leaders

Atlassian Community Events