I used the following to set the FixVersion based on the ScriptRunner documentation available here:
import com.atlassian.jira.component.ComponentAccessor
def versionManager = ComponentAccessor.getVersionManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def project = issue.getProjectObject()
def targetVersion = "FixVersionNameHere"
def version = versionManager.getVersion(project.getId(), targetVersion.toString())
issue.setFixVersions([version])
It worked when placed before the Create Issue event (commit to the database), as expected. I see in the ScriptRunner docs that it says "If you need your function to run after that, you have to use a more complex method."
Any ideas what that "more complex method" looks like?
ScriptRunner version 5.6.2
You need to use update issue function
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import org.apache.log4j.Logger
def log = Logger.getLogger("com.onresolve.jira.groovy")
def userManager = ComponentAccessor.getUserManager()
def issueManager = ComponentAccessor.getIssueManager()
def user = userManager.getUserByName("UserName")
def versionManager = ComponentAccessor.getVersionManager()
def project = issue.getProjectObject()
def targetVersion = "FixVersionNameHere"
def version = versionManager.getVersion(project.getId(), targetVersion.toString())
issue.setFixVersions([versions])
//Lower level doesn't require permission
issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false)
Thank you! I think your example works, though admittedly I went a slightly different route and used a Script Listener. I assigned FixVersions to Epics (the relationship was one-to-one). Then, the Epic Links/Name were determined based on some criteria in my script. Towards the end of the script, with the Epic Key stored as strEpicKey, I set the FixVersion. The script ended up looking something like this:
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.version.Version
import com.atlassian.jira.project.version.VersionManager
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventType
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.event.issue.field.CustomFieldUpdatedEvent
def strEpicKey = "Some Epic Key (Ex:PROJ-123)"
def epicIssue = issueManager.getIssueObject(strEpicKey)
def epicLink = customFieldManager.getCustomFieldObjectsByName("Epic Link")[0]
def versionManager = ComponentAccessor.getVersionManager()
def project = issue.getProjectObject()
epicLink.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(epicLink), epicIssue),new DefaultIssueChangeHolder())
def targetVersion = issueManager.getIssueByCurrentKey(strEpicKey).getFixVersions()[0]
def field = ComponentAccessor.fieldManager.getOrderableField("fixVersions")
field.updateValue(null, issue, new ModifiedValue(issue.fixVersions, [targetVersion]),new DefaultIssueChangeHolder())
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.