Workflow transition button missing for some users
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
Summary
In the multi-node cluster, some users complain that they can't view the workflow options after some maintenance activity.

Environment
Jira 8.x , 9.x
Diagnosis
In one of the cluster Nodes ( Node 1 ), the below error was found 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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2023-03-10 07:25:07,460+0000 http-nio-8080-exec-745 ERROR test@example.com 445x4426443x1 133vzrm 10.122.6.123,10.198.12.138 /browse/ABC-38 [c.a.jira.workflow.DefaultOSWorkflowConfigurator] Could not load class 'com.onresolve.jira.groovy.GroovyCondition'
java.lang.ClassNotFoundException: com.onresolve.jira.groovy.GroovyCondition
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
at com.atlassian.core.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:79)
at com.atlassian.core.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:48)
at com.atlassian.jira.workflow.DefaultOSWorkflowConfigurator$LegacyJiraTypeResolver.loadObject(DefaultOSWorkflowConfigurator.java:153)
at com.opensymphony.workflow.TypeResolver.getCondition(TypeResolver.java:73)
at com.atlassian.jira.workflow.DefaultOSWorkflowConfigurator$JiraTypeResolverDelegator.getCondition(DefaultOSWorkflowConfigurator.java:106)
at com.opensymphony.workflow.AbstractWorkflow.passesCondition(AbstractWorkflow.java:1041)
at com.opensymphony.workflow.AbstractWorkflow.passesConditions(AbstractWorkflow.java:1083)
at com.opensymphony.workflow.AbstractWorkflow.passesConditions(AbstractWorkflow.java:1107)
at com.opensymphony.workflow.AbstractWorkflow.getAvailableActions(AbstractWorkflow.java:106)
at com.atlassian.jira.workflow.IssueWorkflowManagerImpl.getAvailableActionIds(IssueWorkflowManagerImpl.java:166)
at com.atlassian.jira.workflow.IssueWorkflowManagerImpl.getAvailableActions(IssueWorkflowManagerImpl.java:57)
at com.atlassian.jira.workflow.IssueWorkflowManagerImpl.getSortedAvailableActions(IssueWorkflowManagerImpl.java:87)
at com.atlassian.jira.workflow.IssueWorkflowManagerImpl.getSortedAvailableActions(IssueWorkflowManagerImpl.java:82)
at com.atlassian.jira.issue.transitions.TransitionLinkFactory.getAvailableActions(TransitionLinkFactory.java:53)
at com.atlassian.jira.issue.transitions.TransitionLinkFactory.getItems(TransitionLinkFactory.java:43)
at com.atlassian.plugin.web.DefaultWebInterfaceManager.getDynamicWebItems(DefaultWebInterfaceManager.java:249)
at com.atlassian.plugin.web.DefaultWebInterfaceManager.getDisplayableWebItems(DefaultWebInterfaceManager.java:232)
at com.atlassian.jira.plugin.webfragment.DefaultSimpleLinkManager.getLinksForSection(DefaultSimpleLinkManager.java:120)
at com.atlassian.jira.plugin.webfragment.ThreadLocalCachingSimpleLinkManager.access$701(ThreadLocalCachingSimpleLinkManager.java:28)
at com.atlassian.jira.plugin.webfragment.ThreadLocalCachingSimpleLinkManager$3.load(ThreadLocalCachingSimpleLinkManager.java:149)
at com.atlassian.jira.plugin.webfragment.ThreadLocalCachingSimpleLinkManager$3.load(ThreadLocalCachingSimpleLinkManager.java:146)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3528)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2277)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2154)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2044)
at com.google.common.cache.LocalCache.get(LocalCache.java:3952)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
at com.atlassian.jira.plugin.webfragment.ThreadLocalCachingSimpleLinkManager.getLinksForSection(ThreadLocalCachingSimpleLinkManager.java:153)
at com.atlassian.jira.plugin.webfragment.ThreadLocalCachingSimpleLinkManager.getLinksForSection(ThreadLocalCachingSimpleLinkManager.java:140)
... 2 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
at com.sun.proxy.$Proxy558.getLinksForSection(Unknown Source)
... 2 filtered
The issue pointed to a specific plugin, "Adaptavist ScriptRunner for JIRA."
Cause
The below plugin was disabled on (in this case) Node 1, and users were facing issues when they connected to Node 1.
1
2
3
4
5
6
7
8
9
10
<plugin>
<key>com.onresolve.jira.groovy.groovyrunner</key>
<name>Adaptavist ScriptRunner for JIRA</name>
<version>7.12.0</version>
<vendor>Adaptavist.com Ltd</vendor>
<status>DISABLED</status>
<vendor-url>http://www.adaptavist.com</vendor-url>
<framework-version>2</framework-version>
<bundled>User installed</bundled>
</plugin>
The plugin was enabled on the other nodes (i.e. Node 2). Hence, users were not facing when they connected with any of those nodes.
1
2
3
4
5
6
7
8
9
10
<plugin>
<key>com.onresolve.jira.groovy.groovyrunner</key>
<name>Adaptavist ScriptRunner for JIRA</name>
<version>7.12.0</version>
<vendor>Adaptavist.com Ltd</vendor>
<status>ENABLED</status>
<vendor-url>http://www.adaptavist.com</vendor-url>
<framework-version>2</framework-version>
<bundled>User installed</bundled>
</plugin>
ℹ️ Typically, the plugin state should be the same across the node. However, we may result in such a situation due to local plugin cache issues/corruption.
Solution
Clear the local plugin cache and restart the node (in this case Node 1) where the plugin was disabled, and make sure the plugin is enabled on both nodes.
⚠️ If the issue is not resolved, don't hesitate to contact Atlassian Support via this link for further investigation.
Was this helpful?