Skip to main content
Example scripts
arrow icon
To homepage
Jira
Data centre icon
Data Center

Copy an Issue to a New Project and Link to the Original

Created 1 year ago, Updated 2 month(s) ago
App in script
ScriptRunner For Jira
ScriptRunner For Jira
by Adaptavist
Compatibility
compatibility bullet
Jira (8.0 - 8.14)
compatibility bullet
ScriptRunner For Jira (6.18.0)
Language |
groovy
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.APKeys
import com.onresolve.scriptrunner.canned.jira.utils.AbstractCloneIssue
import com.onresolve.scriptrunner.canned.jira.utils.CannedScriptUtils
import com.onresolve.scriptrunner.canned.jira.utils.ConditionUtils
import com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.CloneIssue
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import groovy.xml.MarkupBuilder

def targetProjectKey = "PROJB"
def issueToCloneKey = "PROJA-1"

def issueToClone = ComponentAccessor.issueManager.getIssueByCurrentKey(issueToCloneKey)
def linkBetweenIssues = CannedScriptUtils.getAllLinkTypesWithInwards(true).find { it.value == "blocks" }?.key?.toString()

// Set the creation parameters/inputs (use clone issue with link type)
def params = [
    (CloneIssue.FIELD_TARGET_PROJECT)       : targetProjectKey,
    (CloneIssue.FIELD_TARGET_ISSUE_TYPE)    : null,
    (CloneIssue.FIELD_COPY_FIELDS)          : AbstractCloneIssue.COPY_ALL_FIELDS,
    (CloneIssue.FIELD_SELECTED_FIELDS)      : null,
    (CloneIssue.FIELD_COPY_COMMENTS)        : false,
    (CloneIssue.FIELD_USER_KEY)             : null,
    (ConditionUtils.FIELD_ADDITIONAL_SCRIPT): ["", ""],
    (CloneIssue.FIELD_LINK_TYPE)            : linkBetweenIssues
] as Map<String, Object>
def executionContext = [issue: issueToClone] as Map<String, Object>

def cloneIssueAction = ScriptRunnerImpl.scriptRunner.createBean(CloneIssue)
// Execute the clone action with the specified params
def updatedExecutionContext = cloneIssueAction.execute(params, executionContext)

// Return the link to the cloned issue
cloneIssueAction ? "Cloned issue: ${createHrefLinkToIssue(updatedExecutionContext.newIssue as String)}" :
    "Could not clone issue, check the logs for errors"

static String createHrefLinkToIssue(String issueKey) {
    def baseUrl = ComponentAccessor.applicationProperties.getString(APKeys.JIRA_BASEURL)
    def writer = new StringWriter()
    def html = new MarkupBuilder(writer)

    html.html {
        a href: "$baseUrl/browse/$issueKey", issueKey
    }

    writer
}
Having an issue with this script?
Report it here