Set Field Value to constant or Groovy expression with 3rd party label field?

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 9, 2017

I am using an addon called Label Manager that uses a CustomFieldType class which extends the Label Type "LabelsCFType". I cannot seem to get it to work using a script with an if statement.

If I have it like this it works:
Type = groovy expression
Value = ["my_label_1"]

Like this it doesn't:
if(issue.get("customfield_18275") ==
"ITAM-Request") {return ["Internal_Tools-RequestIT"];}

I do not see any errors or other information when looking at the logs.

2 answers

1 accepted

1 vote
Answer accepted
David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

Ok, so after all this back and forth, the answer is:

import com.atlassian.jira.issue.label.Label;
for (label in issue.get("customfield_18275"))
  if (label.getLabel() == "ITAM-Request")
    return [new Label(null, null, "Internal_Tools-RequestIT")] as Set;
return null;
Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 16, 2017

I have one follow up question to this. If I wanted to add another line, in addition to what I have already, where it sets this 3rd party label based on what the summary is, how would I do that?

I tried this:

import com.atlassian.jira.issue.label.Label;
for (label in issue.get("customfield_18275"))
  if (label.getLabel() == "ITAM-Request")
    return [new Label(null, null, "Internal_Tools-RequestIT")] as Set;
return null;
if (issue.get("summary") == "automated decommission process")return [new Label(null, null, "Security-Decommission")] as Set;
David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 16, 2017

Try this:

import com.atlassian.jira.issue.label.Label;
def res=[];
for (label in issue.get("customfield_18275"))
  if (label.getLabel() == "ITAM-Request")
    res.push(new Label(null, null, "Internal_Tools-RequestIT"));
if (issue.get("summary") == "automated decommission process")
  res.push(new Label(null, null, "Security-Decommission"));
return res as Set;
Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 16, 2017

I tried that, but the summary portion did not work. The original part still works. Nothing in the logs.

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 16, 2017

Disregard my previous comment. It is working properly. Careless mistake on my end. Thanks for your help!

1 vote
David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 9, 2017

Hi Cole, 

this is because your custom field is an extension of the LabelsCFType and if you look at https://innovalog.atlassian.net/wiki/display/KB/Using+issue.get%28%3Cfield_name%3E%29+in+scripts, you'll notice that issue.get() returns a Set<Label>, not a String. So you'll need to iterate over the set and, for each value, compare its getName() with "ITAM-Request" (using the equals() method, not "==" which returns true only if two Objects are the same):

for (label : issue.get("customfield_18275"))
  if (label.getName().equals("ITAM-Request"))
    return "Internal_Tools-RequestIT";
return null;

By the way, why are you returning an array? What kind of calculated field are you using?

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

Thanks for the reply, David. I tried what your code and got an error.

 

2017-02-10 09:17:13,939 ajp-nio-8009-exec-52 WARN adamsco 557x930187x1 ir9690 10.30.29.82 /secure/WorkflowUIDispatcher.jspa [c.i.j.plugins.functions.SetFieldValueFunction] Error while executing SetFieldValueFunction: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    Script1.groovy: 1: Java-style for-each statement requires a type declaration.;
       solution: Use the 'in' keyword, as for (x in y) {...} @ line 1, column 12.
       for (label : issue.get("customfield_18275"))
                  ^
    1 error
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: Java-style for-each statement requires a type declaration.;
   solution: Use the 'in' keyword, as for (x in y) {...} @ line 1, column 12.
   for (label : issue.get("customfield_18275"))
              ^
1 error
        at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309)
        at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:149)
        at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:119)
        at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:131)
        at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:359)
        at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:142)
        at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108)
        at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)
        at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:162)
        at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:912)
        at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:574)
        at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:550)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:527)
        at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258)
        at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613)
        at groovy.lang.GroovyShell.parse(GroovyShell.java:625)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:516)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:556)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:527)
        at com.innovalog.jmwe.plugins.functions.SetFieldValueFunction.executeFunction(SetFieldValueFunction.java:76)
        at com.innovalog.jmwe.plugins.functions.AbstractPreserveChangesPostFunction.execute(AbstractPreserveChangesPostFunction.java:124)
        at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1050)
        at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1446)
        at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:564)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowActionInsideTxn(OSWorkflowManager.java:826)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:786)
        at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:484)
        at com.atlassian.jira.web.action.workflow.SimpleWorkflowAction.doExecute(SimpleWorkflowAction.java:28)
        ... 1 filtered
        at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
        ... 7 filtered
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        ... 55 filtered
        at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59)
        ... 23 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 42 filtered
        at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70)
        ... 20 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 21 filtered
        at com.valiantys.jira.plugins.sql.service.servicedesk.ContextListenerServletFilter.doFilter(ContextListenerServletFilter.java:24)
        ... 3 filtered
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:169)
        at com.atlassian.servicedesk.internal.util.scala.ScalaJavaInterOp$1.apply(ScalaJavaInterOp.java:25)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil$.outOfCustomerContext(CustomerContextUtil.scala:48)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil.outOfCustomerContext(CustomerContextUtil.scala)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.outOfCustomerContext(CustomerContextServiceImpl.java:24)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:164)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:120)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:112)
        ... 12 filtered
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178)
        at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
        at net.bull.javamelody.JiraMonitoringFilter.doFilter(JiraMonitoringFilter.java:105)
        ... 44 filtered
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

 

I added an "in" instead of the colon and got a new error:

2017-02-10 09:18:54,731 ajp-nio-8009-exec-66 WARN adamsco 558x930296x1 ir9690 10.30.29.82 /secure/WorkflowUIDispatcher.jspa [c.i.j.plugins.functions.SetFieldValueFunction] Error while executing SetFieldValueFunction: groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.label.Label.getName() is applicable for argument types: () values: []
    Possible solutions: getLabel(), getAt(java.lang.String), getClass(), getId(), getIssue()
groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.label.Label.getName() is applicable for argument types: () values: []
Possible solutions: getLabel(), getAt(java.lang.String), getClass(), getId(), getIssue()
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
        at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at Script1.run(Script1.groovy:2)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:518)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:556)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:527)
        at com.innovalog.jmwe.plugins.functions.SetFieldValueFunction.executeFunction(SetFieldValueFunction.java:76)
        at com.innovalog.jmwe.plugins.functions.AbstractPreserveChangesPostFunction.execute(AbstractPreserveChangesPostFunction.java:124)
        at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1050)
        at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1446)
        at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:564)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowActionInsideTxn(OSWorkflowManager.java:826)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:786)
        at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:484)
        at com.atlassian.jira.web.action.workflow.SimpleWorkflowAction.doExecute(SimpleWorkflowAction.java:28)
        ... 1 filtered
        at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
        ... 7 filtered
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        ... 55 filtered
        at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59)
        ... 23 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 42 filtered
        at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70)
        ... 20 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 21 filtered
        at com.valiantys.jira.plugins.sql.service.servicedesk.ContextListenerServletFilter.doFilter(ContextListenerServletFilter.java:24)
        ... 3 filtered
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:169)
        at com.atlassian.servicedesk.internal.util.scala.ScalaJavaInterOp$1.apply(ScalaJavaInterOp.java:25)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil$.outOfCustomerContext(CustomerContextUtil.scala:48)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil.outOfCustomerContext(CustomerContextUtil.scala)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.outOfCustomerContext(CustomerContextServiceImpl.java:24)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:164)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:120)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:112)
        ... 12 filtered
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178)
        at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
        at net.bull.javamelody.JiraMonitoringFilter.doFilter(JiraMonitoringFilter.java:105)
        ... 44 filtered
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

 

I'm really not trying to return an array. I was just trying out different things to see what worked. Basically I want this 3rd party label field to auto-populate based on what is in the basic label field.

David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

Sorry about the errors, I didn't test the script but just wanted to point you in the right direction.

Just like the first error pointed you to the right solution, the second error also points to a solution: use getLabel() instead of getName().

So the Groovy script could look like:

for (label in issue.get("customfield_18275"))
  if (label.getValue() == "ITAM-Request")
    return "Internal_Tools-RequestIT";
return null;

Note that I replaced the equals method with == which works for Strings in Groovy (only in Groovy). I got confused before because I thought you were using JIRA Misc Custom Fields, which uses BeanShell (Java) instead of Groovy.

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

So I did try to use getLabel() instead of getName(), but I got another error.

com.atlassian.jira.issue.label.Label cannot be cast to java.util.Set

 

 

Using your script with the getValue I an error suggesting I use getLabel().

 

2017-02-10 09:47:06,198 ajp-nio-8009-exec-57 WARN adamsco 587x930979x1 ir9690 10.30.29.82 /secure/WorkflowUIDispatcher.jspa [c.i.j.plugins.functions.SetFieldValueFunction] Error while executing SetFieldValueFunction: groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.label.Label.getValue() is applicable for argument types: () values: []
    Possible solutions: getIssue(), getClass(), getLabel(), getAt(java.lang.String), getId()
groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.label.Label.getValue() is applicable for argument types: () values: []
Possible solutions: getIssue(), getClass(), getLabel(), getAt(java.lang.String), getId()
David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

Can you post the full stack of the "com.atlassian.jira.issue.label.Label cannot be cast to java.util.Set" error?

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

Sure.

2017-02-10 09:50:30,988 ajp-nio-8009-exec-52 ERROR adamsco 590x931119x1 ir9690 10.30.29.82 /secure/WorkflowUIDispatcher.jspa [c.a.jira.workflow.OSWorkflowManager] Caught exception while attempting to perform action 31 from workflow 745075 on issue 'ITSD-33835'
java.lang.ClassCastException: com.atlassian.jira.issue.label.Label cannot be cast to java.util.Set
        at rs.codecentric.customfield.LabelITCFType.createValue(LabelITCFType.java:39)
        at com.atlassian.jira.issue.fields.CustomFieldImpl.createValue(CustomFieldImpl.java:731)
        at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:448)
        at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:434)
        at com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction.execute(GenerateChangeHistoryFunction.java:54)
        at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1050)
        at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1446)
        at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:564)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowActionInsideTxn(OSWorkflowManager.java:826)
        at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:786)
        at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:484)
        at com.atlassian.jira.web.action.workflow.SimpleWorkflowAction.doExecute(SimpleWorkflowAction.java:28)
        ... 1 filtered
        at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
        ... 7 filtered
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        ... 55 filtered
        at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:59)
        ... 23 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 42 filtered
        at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70)
        ... 20 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 3 filtered
        at org.kantega.atlaskerb.AtlasKerberosFilter.doFilter(AtlasKerberosFilter.java:80)
        ... 21 filtered
        at com.valiantys.jira.plugins.sql.service.servicedesk.ContextListenerServletFilter.doFilter(ContextListenerServletFilter.java:24)
        ... 3 filtered
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:169)
        at com.atlassian.servicedesk.internal.util.scala.ScalaJavaInterOp$1.apply(ScalaJavaInterOp.java:25)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil$.outOfCustomerContext(CustomerContextUtil.scala:48)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil.outOfCustomerContext(CustomerContextUtil.scala)
        at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.outOfCustomerContext(CustomerContextServiceImpl.java:24)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:164)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:120)
        at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:112)
        ... 12 filtered
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178)
        at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
        at net.bull.javamelody.JiraMonitoringFilter.doFilter(JiraMonitoringFilter.java:105)
        ... 44 filtered
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

This means that this particular custom field type expects a Set<Label> as a value, but it has a buggy implementation of the getValueFromCustomFieldParams method. So, instead of returning a String, you should return a valid Label inside a Set:

for (label in issue.get("customfield_18275"))
  if (label.getValue() == "ITAM-Request")
    return ["Internal_Tools-RequestIT"] as Set;
return null;

I haven't tested it though (can't without that add-on)

David _old account_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

This means that this custom field type expects a Set<Label> as a value but doesn't provide a proper implementation of the getValueFromCustomFieldParams method.

In that case, you need to return a Set<Label> from the Groovy script:

import com.atlassian.jira.issue.label.Label;
for (label in issue.get("customfield_18275"))
  if (label.getValue() == "ITAM-Request")
    return [new Label(null, null, "Internal_Tools-RequestIT")] as Set;
return null;

I haven't tested this script though (can't without the add-on that provides that special Labels type).

Cole
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 10, 2017

That works!

All I had to do was change the getValue() to getLabel() and it set the value on transition.

 

I appreciate your help David!

Suggest an answer

Log in or Sign up to answer