Workflow action results in "Could not load FunctionProvider"
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
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
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
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
:
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 - JRA-44732Getting issue details... STATUS 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.