Hello Team,
I am trying to automatically create multiples issues based on the selected options from a multi select custom field.
Please find my code below:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
Issue issue = issue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
int i = 0
//assuming this is a multiple select list custom field
def suppliers = ComponentAccessor.getCustomFieldManager().getCustomFieldObject('customfield_13401')
def selectedSuppliers = issue.getCustomFieldValue(suppliers) as Collection
def issueSummary = issue.summary
def issueDescription = issue.description
def issueReporter = issue.reporter
selectedSuppliers.each {
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager()
def newIssue = issueFactory.cloneIssue(issue)
newIssue.setIssueTypeId("11800")
newIssue.setSummary(issueSummary)
newIssue.setDescription(issueSummary)
newIssue.setReporter(issueReporter)
newIssue.setCustomFieldValue(suppliers, it.toString())
Map<String,Object> newIssueParams = [issue:newIssue] as Map<String,Object>
issueManager.createIssueObject(currentUser, newIssueParams)
}
Unfortunately I am getting this error:
Please help!!
2018-08-21 16:30:01,878 ERROR [workflow.ScriptWorkflowFunction]: ************************************************************************************* 2018-08-21 16:30:01,880 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: CR-425, actionId: 471, file: <inline script> 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:588) at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:494) at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssueObject(DefaultIssueManager.java:599) at com.atlassian.jira.issue.managers.RequestCachingIssueManager.createIssueObject(RequestCachingIssueManager.java:198) at com.atlassian.jira.issue.IssueManager$createIssueObject$2.call(Unknown Source) at Script279$_run_closure1.doCall(Script279.groovy:26) at Script279.run(Script279.groovy:14) Caused by: com.atlassian.jira.workflow.WorkflowException: 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.workflow.OSWorkflowManager.createIssue(OSWorkflowManager.java:766) at com.atlassian.jira.issue.managers.DefaultIssueManager.createIssue(DefaultIssueManager.java:580) ... 6 more Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Collection at com.atlassian.jira.issue.customfields.impl.AbstractMultiCFType.createValue(AbstractMultiCFType.java:39) at com.atlassian.jira.issue.fields.ImmutableCustomField.createValue(ImmutableCustomField.java:693) at com.atlassian.jira.workflow.function.issue.IssueCreateFunction.execute(IssueCreateFunction.java:81) at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1014) at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1407) at com.opensymphony.workflow.AbstractWorkflow.initialize(AbstractWorkflow.java:606) at com.atlassian.jira.workflow.OSWorkflowManager.createIssue(OSWorkflowManager.java:742) ... 7 more
Hi,
Just for test purpose, try to simply create 1 task without your customfield and collection.
Like this:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
Issue issue = issue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
int i = 0
/*assuming this is a multiple select list custom field/*
def issueSummary = issue.summary
def issueDescription = issue.description
def issueReporter = issue.reporter
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager()
def newIssue = issueFactory.cloneIssue(issue)
newIssue.setIssueTypeId("3")
newIssue.setSummary(issueSummary)
newIssue.setDescription(issueSummary)
newIssue.setReporter(issueReporter)
Map<String,Object> newIssueParams = [issue:newIssue] as Map<String,Object>
issueManager.createIssueObject(currentUser, newIssueParams)
See if it creates you an issue or not.
If it creates, then i think your exception is somewhere with your collection, maybe you are doing something wrong there.
Hello Nic,
I did try what you have said above. Unfortunately no issue is being created.
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.
Hi @Nir Haimov,
There is no failures reproduce . Please find the attached screenshot. It is the above code that I have used.
Is there any possible solution you can suggest?
Thanks,
Khushbu
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please replace my above code with this
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
Issue issue = issue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issueSummary = issue.summary
def issueDescription = issue.description
def issueReporter = issue.reporter
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager()
def newIssue = issueFactory.cloneIssue(issue)
newIssue.setIssueTypeId("3")
newIssue.setSummary(issueSummary)
newIssue.setDescription(issueSummary)
newIssue.setReporter(issueReporter)
Map<String,Object> newIssueParams = [issue:newIssue] as Map<String,Object>
issueManager.createIssueObject(currentUser, newIssueParams)
Let me know if it works
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Niv,
Nothing happens. I replaced the issue type id with the issue type id I want to create. I am trying to create issue of type sub task under the main issue.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The code i gave you should work.
It works for me, and create a regular task.
I wanted you try it just to see that it creates something for you.
Sounds weird for me that it does not create anything.
If you want to create sub-task, you need to use "issuetypeid" 5 (this is the issue type for sub-task in all instances coming by default with Jira)
You are trying different id and maybe the problem is there.
Furthermore, when creating sub-task you need to add another parameter to the code says who is the parent of the current sub-task you currently creating.
Any way,
Scriptrunner comes with a buildin script to create a sub-task (from post-function)
Use this will make your life easier i think
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes I was using the builtin script earlier but now I have 156 values in my multiselect custom field.
Instead of creating 156 post functions, I was trying to find a simpler way by writing a script.
If I select 3 options from the multiselect list, I want 3 sub tasks to be created.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I understand your case...
Well, i don't know what to tell you at this point.
My code should give you most of the way but you say it's not working for you =/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Niv,
Actually you were right I need to specify the parentId in the code since I am creating a subtask, it is now working.
Thanks a lot :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Great!
Please mark my answer as the solution so this case will be closed :)
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.
@Nir Haimov i would like to use it to create stories from the creation of epic based on a custom field value. does this script work for my requirement?
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.