Jira JQL Best Practices for ACP Exam

I guess many Atlassian Certified Professionals, will agree that some JQL questions which we had in our ACP exams were tricky. These questions can be easier to answer, if you follow the Atlassian JQL Best Practices, which we often forget or simply do not know.

When preparing for one of the Jira related ACP exams, for example ACP-100 or ACP-120, you should expect a few questions relating to JQL. For example, in ACP-100 preparation topics you can find - Topic 1: Advanced User Features; 1.1: Given a business requirement, create, translate, critique, and optimize JQL queries.

Although you may work with JQL on a daily basis, some questions are really tricky and require more time to analyze. Do not underestimate these questions. Sometimes, even if you answer them correctly, you are not always 100% sure about that.

If you want an ACP Exam-hack from me, memorize this JQL Golden Best Practice:

Answer this question: is this JQL query easy to maintain, which means, will anybody has to modify it when some external conditions or data change?

If no - that is ok, if yes - optimize it.

It does not mean that it is always possible to optimize a JQL query, because not every query needs to be shared (in shared filters or dashboards). But on the ACP Exam, expect to select only this query which does not need to be updated once created.

Here are a few examples to illustrate it:

(1) Do not use individual user names, if you want to share the filter with others

JQL: reporter in membersOf("dev-ops-members") - when someone is added or removed from this group, this JQL will continue to work just fine, no need to update it

JQL: assignee = currentUser() - if you want to share a dashboard, which should work the same way for everyone, use the group or user related functions and not individual values

(2) Do not list all the task or sub-task issue types in one query, if you do not want to select only one or a few of them

JQL: project = ABC and standardIssueTypes() - this will select all task type issues, but not sub-tasks. Tricky question: will this also select Epics? Are Epics standard issue types? Check it out yourself.

JQL: project = ABC and subTaskIssueTypes() - this will select all sub-task type issues, but not standard tasks.

(3) In your Jira, if you create many new projects reqularly, configure project categories and use them in your JQL queries

JQL: category = “agile” and status = Open - this will list all issues in status Open from all projects, current and future, associated with the category “agile”

I hope you found these examples useful and this will bring you one step closer to your ACP Exam success. You will find a few more ACP Exam related articles on my blog: https://jlabnotes.com/jql/


Alexander Bondarev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 23, 2022

Easy to read and useful article!

Andrey Kiyanovskiy September 23, 2022

Not for ACP, but as we are talking about JQL best practices, I'd add.

1. Instead of GDPR nonsense nobody can decipher

assignee = 557058:f00b77d7-f6b7-4de1-9e9e-4e86fe5d85a5


assignee = "user@example.com"

2. Instead of

status in (Closed, Resolved)


statusCategory = Done


resolution is not empty

Like # people like this
Kristján Geir Mathiesen
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
November 14, 2022

Thanks so much for this @Bogdan Gorka 


Log in or Sign up to comment
AUG Leaders

Atlassian Community Events