Ultimate Guide

The main purpose of this article is to present the possibility of the Link Finder app and to show how to solve problems that often appear as a question of Jira users. In this article we show you how to use Link Finder with JQL (Jira Query Language) advanced searching.

In Jira we have three possibility of searching:

  • Quick Search
  • Basic Search
  • Advanced Search

Each of them has its purpose, possibilities and limitations.

Quick Search - the main purpose is quick issue search. In Quick Search you can jump to an issue, find free-text or use smart JQL query.

Basic Search (Issues → Search for issues) is used when you want to build query without using JQL. It is user friendly mechanism where you choose each elements of search query. If you have never used JQL before and you want in a simple way to find issues by criteria, this mechanism is for you. But this search has some limitations - in criteria definition you can choose only those that are predefined by JIRA. For more advanced search you must switch to Advanced mode.

Advanced Search is a search mode which allows you to search issues using JQL Query mechanism. This type of search is intended for advanced Jira users who know the JQL Query language. But this mechanism is most powerful when you want to search by advanced criteria. You can use in this mode logical operators, Jira fields and functions (predefined or extended by other apps). The last possibility is significant from the point of view of using Link Finder app. What is the JQL function? It is an extension of the JQL language, which allows you to extend the Jira search engine for more advanced capabilities. For example, you can search for data that can not be found using JQL query.


Link Finder

It is an app which is extension of Jira Query Language. It provides specialized JQL functions which allows you to realize more advanced query and finds data which you can not find using pure JQL Query. Link Finder focuses on linked issues, remote links and Agile type projects. Allows you to search for data such as linked issues, remote links, epics, issues.

Below we present the possibilities of this app with examples.


Linked Issues Queries


How to find linked issues using JQL Query?

When you have installed Link Finder app you can get linked issues using linkFinder function. This function takes two arguments query or filter and association (link type) which is optional. Example how to get in simple way all linked issues in given project is shown below.

issue in linkFinder("project = CRM")

When you want get linked issues in given association you must provide second argument. More information about associations in Jira you can find here. Below is an example that looks for all links for the given association (link type).

issue in linkFinder("project = CRM", "is blocked by")

Example above returns all issues which are blocked by other. More complicated example is shown below.

issue in linkFinder("project = CRM and issuetype = Story and assignee is EMPTY and resolution = Unresolved", "is blocked by")

Example above returns all issues which are blocked by other. Additionaly issues must be in project CRM, has to be user story, no one is assigned to them and must be unresloved. When you want to use create date or update date you can use it in this way.

issue in linkFinder("project = CRM and issuetype = Historia and createdDate <= now()", "is blocked by")


How to find issues which block other issues?

You can do that using linkFinder function. It is the same function like in question above. Simple use is shown below.

issue in linkFinder("project = CRM", "blocks")


How to search issues which are linked with given issue no matter how they are linked (all associations)?

To do that you must use Link Finder function - linkFinderForIssues. This function returns list of issues which are in association with issues given as list. This function takes three or more arguments. First argument is query or filter, second one is association or * and next one is a list of issues. Example below returns issues from project CRM which are linked (no matter how) with issue CRM-8.

issue in linkFinderForIssues("project = CRM", "*", "CRM-8") 


How to search issues which block given issues?

You can do that using function linkFinderForIssues. As I mentioned in previous question, this function as third argument takes list of issues. Example below shows how to find issues which block issues CRM-8 and CRM-6.

issue in linkFinderForIssues("project = CRM", "blocks", "CRM-8", "CRM-6")


How to find issues which are blocked by one or more issues?

Function linkFinderByCondition will be useful to answer that question. This function takes query or filter and condition as argument. Condition is a simple expresion with syntax: [link type][=,<, <=,>=, >][number]. Below is example which returns issues which have more than one issue with association "is blocked by".

issue in linkFinderByCondition("project = CRM", "is blocked by >= 1")


How to find issues which are blocked by one or more issues and they have status Done? 

You can use linkFinderByCondition. Below is example which returns issues which are in project CRM, have status Done and are blocked by more than one issue.

issue in linkFinderByCondition("project = CRM and status = Done", "is blocked by >= 1")


I want to find issues without links.

If you want to find issues without linked issues use function linkFinderForEmptyLinks. This function takes one argument query or filter and returns issues without associations (links). Simple example of use is shown below.

issue in linkFinderForEmptyLinks("project = CRM")

Below is more complicated example which shows how to get issues without linked issues. These issues must be in project CRM, be a Bug, have a status Done and realized in Sprint 1.

issue in linkFinderForEmptyLinks("project = CRM and status = done and Sprint = 1 and issuetype = Bug")


How to search issues which have all linked issues in To do status?

To find linked issues with given status or statuses use linkFinderForAllStatuses function. This function takes as arguments query or filter, association and list of statuses and returns list of issues which have linked issues with given association and all of them have given status. Example below returns all issues which linked issues have status To do - association doesn't matter.

issue in linkFinderForAllStatuses("project = CRM", "*", "to do")


How to find issues which are blocked by issues where all of them are done?

If you want to find issues blocked by others which are in Done state use function linkFinderForAllStatuses. Below is example which shows how to resolve problem described by this question.

issue in linkFinderForAllStatuses("project = CRM", "is blocked by", "done") 


I want to find all issues which block issues with status To do and In progress.

Function linkFinderForAllStatuses has ability to take as third parameters list of statuses. Example below shows how to find issues which block other issues which have status To do and In progress.

issue in linkFinderForAllStatuses("project = CRM and status = Done", "blocks", "to do", "in progress")

Very important in this function is understanding that this function takes list of statuses and returned list of issues must have linked issues which all must have this statuses. In above example linked issues must have statuses To do and In progress (important in here is word and).


I want to find all issues which block issues with status To do or In progress

Function linkFinderForAnyStatuses returns all issues which have other issues link. This function is similar to linkFinderForAllStatuses but has one important difference related to the interpretation of statuses. In this function linked issues don't have to be exactly in given statuses. Example below returns all issues which have linked issues with status To do or In progress (important in here is word or).

issue in linkFinderForAnyStatuses("project = CRM", "blocks", "to do", "in progress") 


How to search issues which have linked issues with status To do?

Use function linkFinderForAnyStatuses as is shown in example below.

issue in linkFinderForAnyStatuses("project = CRM", "*", "to do")

More examples you can find here.


Remote Links Queries


How to add remote links?

You can define remote links in Jira using funtionality Web Link. In Link Finder we extends this mechanism by adding additional functionality - Remote Link. In Jira you can add remote link to issue from menu More and next select Link and next choose Web Link. When you want to use Link Finder Remote Links you must select Remote Link (look at screen below).

When you define Link Finder Remote Links you can add additional information to remote links like link type, url, link text, summary, application name and comment. Field Link Type (label This issue) allows you to describe relation between issue and remote link using defined in Jira relation type. You can define your own relation type  - how to do that is described in this article. If you define your own type you can use it in Link Finder Remote Link definition. In url fields you can define url to other systems (e.g. wiki, other ticket systems, project management systems). Next field is Link Text which will be shown as a description link on issue. Next field is Summary where you can put short descripton for link. Next field is Application when you can provide name of link application. You can search remote links by this fields using Link Finder functions. And next one field is Jira standard field Comment where you can provide your own comment to this link. Picture below shows example of defined remote link on issue to other systems - in this case it is TFS. If you click in link you should be moved to remote system. You can search issue using all this fields using Link Finder functions.

 


How to find remote links for given association?

When you add remote link to issue and you want to search them use linkFinderRemoteLinks function. It takes two arguments query or filter and second optional argument - association

issue in linkFinderRemoteLinks("project = CRM")

Example above returns all issues in project CRM which contain remote links.

Another example shows how to find links for given relation. Example below returns all issues which are in project CRM and have remote links in association - relates to.

issue in linkFinderRemoteLinks("project = CRM", "relates to")

You can also search links added by Web Links. Example below shows how to find Confluence links.

issue in linkFinderRemoteLinks("project = CRM", "mentioned in")


How to find remote links for given application name?

Use function linkFinderRemoteApp. It takes two arguments first is a query or filter and sconds is a application name. Notice that you must define application name when you create Link Finder Remote Link. 

issue in linkFinderRemoteApp("project = CRM", "TFS")


How to find remote links which in summary have given text?

In Link Finder library we have a function linkFinderRemoteSummary. This function takes two parameters query or filter and text to find in summary.

issue in linkFinderRemoteSummary("project = CRM", "Create window")


I defined remote links with url in issues. How to find issues which have URL with given text?

Response for this question is linkFinderRemoteUrl function. It takes two arguments first is a query or filter and second is a text to find in URL. In example below function linkFinderRemoteUrl returns list of issues in project CRM and that have text "limetrees" in URL.

issue in linkFinderRemoteUrl("project = CRM", "limetrees")

More examples you can find here.


Epic Queries 


How to search epics which have status done?

Function linkFinderEpicreturns epics for specified query or filter.

issue in linkFinderEpic("project = CRM and status = \'TO DO\'")


How to find epics which have issues assigned to user admin?

If you want to find epics for issues (user stories, bugs e.t.c) which meet given query or filter use function linkFinderEpicsForIssues. This function returns epics which have issues that satisfy the condition specified in the query. 

issue in linkFinderEpicsForIssues("project = CRM and assignee = admin")


I have epic and I want to find all issues for this epic.

If you want to find issues for given epic, use linkFinderIssuesForEpicKey. This functions takes one parameter epic key and returns list of issues (user stories/issues). Example below shows how to get issues for epic AS-24.

issue in linkFinderIssuesForEpicKey("AS-24")


How to find issues for epics in given project and assigned to user admin?

If you need to find issues for epics which meet a given condition, use linkFinderIssuesForEpics. This function takes as a parameter query or filter and returns issues (user stories/issues) for these epics which meet condition in query or filter.

issue in linkFinderIssuesForEpics("project = \'Audit software\' and assignee = admin")


How to find issues and their subtasks for epics in given project?

Use function linkFinderSubtasksForEpics which takes as parameter query or filter. This function returns all issues and subtasks for epics which meet query or filter condition. Below is example which is response for this question.

issue in linkFinderSubtasksForEpics("project = \'Audit Software\'") 

How to find issues and their subtasks for given epic?

Function linkFinderSubtasksForEpicKey returns all issues (user stories, issues) and subtasks that have been added to given epic. As argument function takes epic key. Below is example how to use this function to find all issues and sub-tasks in epic AS-24.

issue in linkFinderSubtasksForEpicKey("AS-24")

More examples you can find here.

If you need more Agile functions check out our Epic Finder app.