blog-post

Our top 5 go-to JQL queries for surfacing risky issues

12 October, 2024 | 3 Min Read

JQL is tremendously powerful and it doesn’t take long to get good at writing your own queries to use in searches, filters and dashboards.

In this article, we’re going to cover our top 5 queries for surfacing risky issues in your project. Feel free to remix these to suit your teams’ ways of working!

Orphaned issues

For the most part, issues are fine being without an Assignee. Except when those issues are in flight and being worked on. Many teams go through their Jira board person by person which means that Unassigned issues can sometimes avoid being discussed, even when needed.

Additionally, when there’s no assignee, it’s not necessarily clear who to reach out to to discuss, at least without wading through comments or the change-log.

Adding a Quick Filter with the following JQL makes it easy to spot these: statusCategory = 'In Progress' AND assignee IS EMPTY

Moss

Issues that are in flight but haven’t been touched in a week might have been forgotten about. And if they aren’t rolling, they are likely gathering moss.

Use this in a Quick Filter to find moss and either keep it rolling or toss it through the great window of Done: Won’t do: statusCategory = 'In Progress' AND updatedDate < -7d

Overdue or No Due Date

In Kanban or Scrumban, Late issues or issues without a firm commitment represent a delivery risk.

I like to use the configure Card Colors for cards in Jira Boards to show different colours depending on the status of the due date

  • Green for issues that are well-before their due date: statusCategory != 'Done' AND duedate > 2d
  • Yellow for issues that are within 2d of being due: statusCategory != 'Done' AND duedate > startOfDay() AND duedate <= 2d
  • Red for issues that are overdue: statusCategory != 'Done' AND duedate < startOfDay()
  • Dark Red for issues that have no due date: duedate IS EMPTY

Or for a plain old filter that will find the troublesome issues, use: statusCategory = 'In Progress' AND (duedate IS EMPTY OR duedate < startOfDay())

Crusty

If Moss is an In Progress issue that hasn’t seen any love for a week, Crusty is an issue in any status that hasn’t been touched in a year.

Which begs the question; do you really need it? Find out: statusCategory != 'Done' AND updatedDate < -365d

This is usually best-used with a follow-up bulk action to either delete or change status to Done.

High-touch, low-value

Nothing wastes more time than low-value work that keeps coming up time and time again in backlog refinement and planning sessions.

If there were ever candidates for deletion, it’s these low-priority time-sinks. Search and destroy: watchers >= 4 AND priority <= Low

In summary

Use JQL to discover high-value work that is running off the rails so you can get things running smoothly, as well as low-quality, highly-binnable issues that you can get rid of to free up time, energy and mental cycles.

Got some go-to JQL queries that you think we should know about? Contact us

Photo by Daniel Lerman

Related posts