Cannot browse nor create Workflows due to Passed List had more than one value exception in Jira
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
When the user navigate to the Workflows administration screen, no workflows are displayed, and the error below can be found in atlassian-jira.log
:
1
2
3
4
5
6
7
8
9
10
11
12
13
2013-12-26 14:35:02,847 http-bio-8080-exec-19 ERROR sysadmin 875x161x1 ewvg6u 0:0:0:0:0:0:0:1%0 /secure/admin/workflows/ListWorkflows.jspa [webwork.util.ValueStack] query="inactiveWorkflows" {[id="inactiveWorkflows" type="8" values=""]}
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70)
(...)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.IllegalArgumentException: Passed List had more than one value.
at org.ofbiz.core.entity.EntityUtil.getOnly(EntityUtil.java:62)
at com.atlassian.jira.workflow.DefaultWorkflowSchemeManager.getWorkflowScheme(DefaultWorkflowSchemeManager.java:175)
(...)
ℹ️ The error above is also displayed when trying to create a new workflow.
Environment
Any version of Jira Software Data Center and Server.
Any version of Jira Service Management Data Center and Server.
Cause
This error might be thrown when there is an inconsistency in the database in which more than one workflow scheme is associated to the same project.
Diagnosis
To identify which additional workflow schemes are associated to which projects, run the SQL query below, which will return the IDs of the affected projects and workflow schemes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
na.source_node_id AS PROJECT,
na.sink_node_id AS WORKFLOW_SCHEME
FROM
nodeassociation na
WHERE
association_type = 'ProjectScheme'
AND sink_node_entity = 'WorkflowScheme'
AND na.source_node_id = (
SELECT
source_node_id as source_project
FROM
nodeassociation
WHERE
association_type = 'ProjectScheme'
AND sink_node_entity = 'WorkflowScheme'
GROUP BY source_node_id HAVING count(*) > 1
);
Example output:
1
2
3
4
PROJECT WORKFLOW_SCHEME
---------- ---------------
53503 65700
53503 65701
Resolution
Always back up your data before making any database modifications. If possible, test any alter, insert, update, or delete SQL commands on a staging server first.
The solution consists of manually deleting the additional workflow schemes so that there is only one scheme associated per project.
The query below may help determining which Scheme is the best candidate for disassociation (based on whatever hint their names can give):
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
select
na.source_node_id as "Project Id",
p.pkey as "Project Key",
na.sink_node_id as "Workflow Scheme Id",
ws.name as "Workflow Scheme Name",
wse.id as "Workflow Scheme Entity Id",
wse.workflow as "Workflow Scheme Entity Workflow Name",
jw.id as "Workflow Id",
it.pname as "Issue Type Name (optional)"
from
nodeassociation na
join
project p on p.id = na.source_node_id
left join
workflowscheme ws on ws.id = na.sink_node_id
left join
workflowschemeentity wse on wse.scheme = ws.id
left join
issuetype it on it.id = wse.issuetype
left join
jiraworkflows jw on jw.workflowname = wse.workflow
where
na.association_type = 'ProjectScheme'
and na.sink_node_entity = 'WorkflowScheme'
and na.source_node_id = 53503 /* REPLACE BY THE "PROJECT" FROM THE DIAGNOSIS QUERY */
and na.sink_node_id in (65700, 65701); /* REPLACE BY THE "WORKFLOW_SCHEME" FROM THE DIAGNOSIS QUERY */
Advised steps
You should first run this on a non-prod environment to validate the solution.
Shut down Jira
Execute the DB command below to delete the Workflow Scheme ID which you would like to disassociate. The source_node_id should be the Project ID and the sink_node_id the Workflow Scheme ID (as an example, 53503 and 65700 were used):
1
DELETE FROM nodeassociation WHERE source_node_id = 53503 AND sink_node_id = 65700;
Start Jira
It's always safer to perform DB deletions while the whole application's down (including all nodes in Data Center), but it may also work by performing the DB deletions then rolling restarting the nodes (restart one by one).
It's crucial you validate this behavior in a lower environment first. If you need to refresh a lower environment with data from the environment you're observing the issue, please refer to our Creating a test environment for Jira article.
Was this helpful?