linkedIssuesOfRecursive

The linkedIssuesOfRecursive function allows you to delve into the web of dependencies within your projects to uncover not just direct links but also the intricate network of indirect relationships between issues.

This function is essential for:

  • Mapping out complex dependency chains to foresee potential project roadblocks

  • Revealing the full scope of project interdependencies

  • Identifying and addressing indirect dependencies early

Consider a real-world scenario: You're using the function to trace all issues related to a critical epic, EPIC-123. By executing issueFunction in linkedIssuesOfRecursive("epic = EPIC-123"), you uncover not just the tasks directly linked to EPIC-123, but also tasks linked to those tasks, and so on. This might reveal that a seemingly unrelated task in another team’s backlog is actually a crucial piece of the puzzle.

Syntax and parameters

linkedIssuesOfRecursive(Subquery, [Link name])
  • Subquery: A JQL query to identify the initial set of issues. This is enclosed in double quotes.

  • Link name: Specifies the type of issue link to traverse. If this parameter is not used, all link types are considered, which we don’t recommend.

linkedIssuesOfRecursive demo video

Examples

  1. Mapping out all dependencies of an issue:

    To visualise all direct and indirect dependencies of a particular issue, you might use:

    issueFunction in linkedIssuesOfRecursive("issue = DEMO-1")

    This query helps in understanding the full extent of dependencies for DEMO-1, aiding in thorough planning and risk assessment.

  2. Focusing on specific link types:

    To concentrate on a specific type of dependency, such as "blocks", the query can be refined:

    issueFunction in linkedIssuesOfRecursive("issue = DEMO-1", "blocks")

    By focusing on blocking issues, teams can prioritise work to clear these critical paths.

  • Understand the impact of recursive searches: Recursive searches can be resource-intensive. Be mindful of the number of issues your query will search through, as this can impact system performance.

  • Use specific link types for efficiency: Narrowing your search to specific link types can make your queries more efficient and the results more relevant.

  • Beware of circular dependencies: Our built-in protection mechanisms prevent infinite loops in search queries, enhancing reliability and stability.

We have protection mechanisms built in to deal with circular dependencies in your issue links. For example, if DEMO-1 links to DEMO-2, DEMO-2 links to DEMO-3 and DEMO-3 links to DEMO-1, then we will notice that we have already seen DEMO-1 and stop processing. 

Time limited search

If you have thousands of indirectly linked issues, traversal of all of the links will take a long time or may time out. A two-minute time limit is imposed on queries that run in the search bar to avoid a) overwhelming Jira with search requests and b) search results taking a long time to keep up to date. However, a lower timeout limit of 30 seconds exists for automatic syncing.

Using the NOT keyword

When using a negative search, you can use the not keyword before or after issueFunction as shown in the following examples:

project = "KEY" and not issueFunction in linkedIssuesOfRecursive("component='componentName'", "depends on")

project = "KEY" and issueFunction not in linkedIssuesOfRecursive("component='componentName'", "depends on")

On this page