To display external data in a connected Jira custom field, Elements Connect first executes a query to a data source (REST API or database) that returns a result set. These queries can be static (a fixed request) or dynamic (adapting to the issue context, the current user, or another field's value). Dynamic queries are how Jira admins build advanced features like multi-level cascading select-list fields in Elements Connect.
Static queries
Static queries are simple requests made to an API endpoint or a database following their specific syntax.
For example, let’s say you want to retrieve a list of continents from your data source. A static query to a REST API could look like this:
API request
{BaseURL}/continents
And a static query to a database could look like this:
SQL query
SELECT continent
FROM continents
These queries are set up in the “Fetch data from data source” step of the connected custom field or connected item configuration.
Dynamic queries
Dependencies
A key feature of Elements Connect is the ability to write dynamic queries using dependencies. This means that the query that is used to retrieve data from external sources can dynamically change depending on several factors, such as:
-
the value of other custom fields (native Jira fields or Elements Connect fields)
-
the current user editing the fields
-
the user input (what the user is typing in the select list)
Purpose
One of the main reasons to use dynamic queries is that they enable multi-level cascading fields, several select-list fields where each one's available options depend on the value selected in the previous one. This pattern is commonly used in Jira for:
-
Product catalog selection (category → subcategory → product reference)
-
Organizational hierarchies (region → country → office → team)
-
Asset selection (customer → site → asset → component)
-
Service desk routing (department → service → request type)
Here's a simple illustrative example with continents, countries, and cars:
-
First, the user can select a continent (“North America”)
-
Then, they can select a country among a dynamic list based on this continent (“Canada”)
-
Finally, they can select a car among a dynamic list of cars available in Canada
Each select-list here is an Elements Connect connected field, and the dependencies on each parent field (“Continent” and “Country”) are made directly in the connected field query. The appropriate syntax for your query can be found in the examples below.
Please note that all queries with dependencies won't be executed if their parent field has no value.
Examples
You will find many examples of how to create dependencies in the following pages.
Known limitations
For performance purposes, Elements Connect reads by default the first 1,000 rows of a result set returned by your query. To access subsequent rows, you have two options:
-
Increase the row limit in the Max suggestions field of your connected field configuration. Note that very high values may impact loading performance, especially with large datasets.
-
Use the $userInput parameter to filter the result set dynamically based on what the user is typing, this is the recommended approach for large datasets like a full customer list, product catalog, or Active Directory user base.
Frequently asked questions
Can I create cascading dropdowns in Jira with Elements Connect?
Yes. Elements Connect supports multi-level cascading select-list fields using dynamic queries with dependencies on other fields. Each select-list dynamically updates based on the value selected in its parent field.
What can a dynamic query depend on?
A dynamic query can depend on the value of other custom fields (native Jira or Elements Connect), the current user editing the issue, what the user is typing in the field, the issue context (priority, summary, project, etc.), or the request context in JSM portals.
Does cascading work in Jira Service Management portals?
Yes. See Handling dependencies in JSM projects for the specifics.
What happens if a parent field has no value yet?
Queries with dependencies on a parent field won't execute until that parent field has a value.