Workflow action results in "Could not load FunctionProvider"
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Symptoms
Trying to perform issue workflow actions are resulting in an error similar to:
Could not load FunctionProvider class. Error when changing state from "In Progress"
The following appears in the atlassian-jira.log
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2013-01-09 08:21:30,201 http-8080-45 ERROR admin 501x234436x1 159scgv 172.18.5.19 /secure/CommentAssignIssue.jspa [atlassian.jira.workflow.DefaultOSWorkflowConfigurator] Could not load class 'com.googlecode.jsu.workflow.function.ClearFieldValuePostFunction'
java.lang.ClassNotFoundException: com.googlecode.jsu.workflow.function.ClearFieldValuePostFunction
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.atlassian.core.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:88)
at com.atlassian.core.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:50)
at com.atlassian.jira.workflow.DefaultOSWorkflowConfigurator$LegacyJiraTypeResolver.loadObject(DefaultOSWorkflowConfigurator.java:162)
at com.opensymphony.workflow.TypeResolver.getFunction(TypeResolver.java:87)
at com.atlassian.jira.workflow.DefaultOSWorkflowConfigurator$JiraTypeResolverDelegator.getFunction(DefaultOSWorkflowConfigurator.java:126)
at sun.reflect.GeneratedMethodAccessor1408.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$AbstractMultiTenantAwareInvocationHandler.invokeInternal(MultiTenantComponentFactoryImpl.java:181)
at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$MultiTenantAwareMethodInterceptor.intercept(MultiTenantComponentFactoryImpl.java:230)
at com.opensymphony.workflow.TypeResolver$$EnhancerByCGLIB$$f5787391.getFunction(<generated>)
at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1041)
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:894)
at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:850)
Cause
There is a third-party function on the workflows that the JIRA application expects to find there. When it goes to access that plugin, it fails, and throws the above exception. This happens as the Java Class Loader can't find the plugin - in this example it is the JIRA Suite Utilities plugin and the error is occurring as it is not installed. The suggestion JRASERVER-44732 - Improve error when workflow has missing add-on has been raised to improve this functionality.
Resolution
Re-install the plugin:
Log in as a Jira Administrator user
Navigate to the page ⚙ > Manage apps > Find new apps
Search for the add-on JSU Automation Suite for Jira Workflows
Install it
ℹ️ If you no longer want to make use of the plugin and its functions, it is still necessary to re-install the plugin. You will then access your workflow and remove all workflow functions associated with the plugin.
Was this helpful?