Hello experts,
I am trying to write a listener in order to copy a custom field value (planned version : version picker) from all sub tasks (concateneted) to a custom field (FT_planned_versions : multiple version picker) in Parent issue (issue type Bug).
I have a problem on my listener.
import com.atlassian.jira.issue.UpdateIssueRequest
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.CustomFieldManager
// get the custom field "FT_plannedversions"
def targetCustomFieldId = "customfield_14002"
def targetCustomField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(targetCustomFieldId)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
def issue = event.issue as MutableIssue
// if parent issuetype is Bug
def parentBug = issue.getParentObject()
if (parentBug?.issueType?.name == "Bug") {
// Get all the sub-tasks of parent issue (Bug)
def subTasks = parentBug.getSubTaskObjects()
// list that will store custom field values of "version_planifiée"
def plannedVersions = []
subTasks.each { subTask ->
// get value of custom field "version_planifiée" for each sub-task
def sourceCustomFieldId = "customfield_13201" // Remplacez "customfield_yyyyy" par l'ID de votre champ "version_planifiée"
def sourceCustomField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(sourceCustomFieldId)
def sourceValue = subTask.getCustomFieldValue(sourceCustomField)
if (sourceValue) {
plannedVersions.add(sourceValue)
}
}
//Update custom field FT_planned_versions of parent issue Bug
def mutableBug = issueManager.getIssueObject(parentBug.id)
mutableBug.setCustomFieldValue(targetCustomField, plannedVersions.join(", "))
issueManager.updateIssue(event.getUser(), mutableBug, EventDispatchOption.ISSUE_UPDATED, false)
}
This is not working with following error message :
2023-09-11 11:52:20,297 WARN [runner.ScriptBindingsManager]: ParentBug = ESADS2-1
2023-09-11 11:52:20,298 WARN [runner.ScriptBindingsManager]: version planifiée = V2.2
2023-09-11 11:52:20,298 WARN [runner.ScriptBindingsManager]: version planifiée = V2.2
2023-09-11 11:52:20,299 WARN [runner.ScriptBindingsManager]: version planifiée = V1.2
2023-09-11 11:52:20,299 WARN [runner.ScriptBindingsManager]: FT versions planifiée = V2.2, V2.2, V1.2
2023-09-11 11:52:20,302 ERROR [runner.AbstractScriptListener]: *************************************************************************************
2023-09-11 11:52:20,302 ERROR [runner.AbstractScriptListener]: Script function failed on event: com.atlassian.jira.event.issue.IssueEvent, file: null
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Collection (java.lang.String and java.util.Collection are in module java.base of loader 'bootstrap')
at com.atlassian.jira.issue.customfields.impl.AbstractMultiCFType.createValue(AbstractMultiCFType.java:39)
at com.atlassian.jira.issue.fields.ImmutableCustomField.createValue(ImmutableCustomField.java:701)
at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:414)
at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:400)
at com.atlassian.jira.issue.managers.DefaultIssueManager.updateFieldValues(DefaultIssueManager.java:716)
at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:667)
at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:653)
at com.atlassian.jira.issue.managers.RequestCachingIssueManager.updateIssue(RequestCachingIssueManager.java:217)
at com.atlassian.jira.issue.IssueManager$updateIssue$1.call(Unknown Source)
at Script18.run(Script18.groovy:46)
Any idea ?
Hi @Rash
Just wanted to check the background about taking this long route when you can do it using automation for jira ?
Hi Vishal,
Thanks for your support.
I already tried to create an automation but it was difficult for me to answer my need.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.