I am Trying to clone issue(s) based on the number of a "custom field" values updated in a parent issue in a Custom script post-function as below::
I am getting the following error, using JIRA version 6.7.16 and script runner version 4.1.3.16.
com.atlassian.jira.exception.CreateException: Error occurred while creating issue. This could be due to a plugin being incompatible with this version of JIRA. For more details please consult the logs, and see: http://confluence.atlassian.com/x/3McB
at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:757)
at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:645)
at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssueObject(DefaultIssueManager.java:770)
at com.atlassian.jira.issue.IssueManager$createIssueObject$1.call(Unknown Source)
at Script1433$_run_closure1.doCall(Script1433.groovy:89)
at Script1433.run(Script1433.groovy:69)
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.MutableIssue
Issue issue = issue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
//assuming this is a multiple select list custom field
def componentCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Impacted Sub-Systems")
def selectedComponents = issue.getCustomFieldValue(componentCF)
/*
The following Required fields for creating a issue/clone has to be copied from parent to clone while clone issue creation....
Customer, Customer impact, Defect Source, Priority, Requirement id, Server Component, Server Release, Server Release tag, Severity, Test Case id.
'Customer' is a "Select List (single choice)"
'Customer impact' is a "Select List (single choice)"
'Defect Source' is a "Select List (single choice)"
'Priority' is a "Jira default field"
'Requirement id' is a "Text Field (multi-line)"
'Server Component' is a "Select List (single choice)"
'Server Release' is a "Select List (single choice)"
'Server Release tag' is a "Select List (single choice)"
'Severity' is a "Select List (single choice)"
'Test Case id' is a "Text Field (multi-line)"
*/
def Customer = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Customer")
def selectedCustomer = issue.getCustomFieldValue(Customer)
def CustomerC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Customer")
def CustomerImp = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Customer impact")
def selectedCustomerImp = issue.getCustomFieldValue(CustomerImp)
def CustomerImpC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Customer impact")
def defectsource = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Defect Source")
def selecteddefectsource = issue.getCustomFieldValue(defectsource)
def defectsourceC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Defect Source")
def Priority = issue.getPriority()
def Severity = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Severity")
def selectedSeverity = issue.getCustomFieldValue(Severity)
def SeverityC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Severity")
def Requirementid = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Requirement id")
def selectedRequirementid = issue.getCustomFieldValue(Requirementid)
def RequirementidC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Requirement id")
def ServerComponent = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Component")
def selectedServerComponent = issue.getCustomFieldValue(ServerComponent)
def ServerComponentC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Component")
def ServerRelease = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Release")
def selectedServerRelease = issue.getCustomFieldValue(ServerRelease)
def ServerReleaseC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Release")
def ServerReleasetag = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Release tag")
def selectedServerReleasetag = issue.getCustomFieldValue(ServerReleasetag)
def ServerReleasetagC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Server Release tag")
def TestCaseid = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Test Case id")
def selectedTestCaseid = issue.getCustomFieldValue(TestCaseid)
def TestCaseidC = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Test Case id")
//assuming this is a single choice custom field
def subSystemCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Subsystem")
selectedComponents?.each { LazyLoadedOption it ->
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager()
def newIssue = issueFactory.cloneIssue(issue)
// set the value of the custom sub-system and any other issue parameters you wish (project, assignee, etc)
//copying the "Impacted Sub-Systems" parent custom field values one by one into "Subsystem" custom field value of clone issue(s).
newIssue.setCustomFieldValue(subSystemCF, it.value)
newIssue.setCustomFieldValue(CustomerC, selectedCustomer)
newIssue.setCustomFieldValue(CustomerImpC, selectedCustomerImp)
newIssue.setCustomFieldValue(defectsourceC, selecteddefectsource)
//newIssue.setCustomFieldValue(PriorityC, selectedPriority)
newIssue.setPriority(Priority)
newIssue.setCustomFieldValue(SeverityC, selectedSeverity)
newIssue.setCustomFieldValue(RequirementidC, selectedRequirementid)
newIssue.setCustomFieldValue(ServerComponentC, selectedServerComponent)
newIssue.setCustomFieldValue(ServerReleaseC, selectedServerRelease)
newIssue.setCustomFieldValue(ServerReleasetagC, selectedServerReleasetag)
newIssue.setCustomFieldValue(TestCaseidC, selectedTestCaseid)
Map<String,Object> newIssueParams = ["issue":newIssue] as Map<String,Object>
issueManager.createIssueObject(currentUser, newIssueParams)
}