Jira (7.7 - 8.6)
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueFieldConstants
import com.atlassian.jira.issue.fields.FieldManager
// the name of the field whose value we want to copy from parent to subtask
final String fieldNameToCopy = "Component/s"
FieldManager fieldManager = ComponentAccessor.fieldManager
if (!issue.isSubTask()) {
return
}
def fieldToCopy = fieldManager.allAvailableNavigableFields.find { it.name == fieldNameToCopy }
if (!fieldToCopy) {
log.info "Could not find field with name $fieldNameToCopy"
return
}
def parentIssue = issue.parentObject
def fieldToCopyId = fieldToCopy.id
switch (fieldToCopyId) {
case fieldManager.&isCustomFieldId:
def customField = ComponentAccessor.customFieldManager.getCustomFieldObject(fieldToCopyId)
def linkedIssueCustomFieldValue = parentIssue.getCustomFieldValue(customField)
issue.setCustomFieldValue(customField, linkedIssueCustomFieldValue)
break
case IssueFieldConstants.COMPONENTS:
issue.setComponent(parentIssue.components)
break
case IssueFieldConstants.FIX_FOR_VERSIONS:
issue.setFixVersions(parentIssue.fixVersions)
break
case IssueFieldConstants.AFFECTED_VERSIONS:
issue.setAffectedVersions(parentIssue.affectedVersions)
break
default:
issue[fieldToCopyId] = parentIssue[fieldToCopyId]
}