I need help with creating a JQL query to locate tickets that are excluded from a particular filter in our system.
We have a scrum board that uses a custom filter to display certain tickets. However, some tickets from our project don’t appear on this board because they’re being filtered out. I want to create a search that will show me all these hidden tickets.
I’m working with JIRA version 6.4.5 and don’t have REST API access available.
Here are some approaches I’ve attempted:
project = OurProject AND issueFunction in expression("", "filter != 5678")
Also tried:
project = OurProject AND filter != 5678
This second attempt resulted in an error message:
Field 'filter' with value '5678' matches filter 'OurProject' and causes a cyclical reference, this query can not be executed and should be edited.
The actual JQL content of filter 5678 looks like this:
project = OurProject AND (component != "Custom Tasks" OR component is EMPTY) ORDER BY Rank ASC
What’s the correct way to find tickets that don’t match this filter criteria?
The cyclical reference error happens because JIRA gets confused when you reference a filter from within itself.
For your case, you want tickets that don’t match filter 5678. That filter shows tickets where component != “Custom Tasks” OR component is EMPTY, so you need the opposite:
project = OurProject AND component = "Custom Tasks"
This shows exactly what’s being excluded from your scrum board.
But crafting these inverse JQL queries gets messy fast, especially with complex filters. I’ve dealt with this before - constantly checking what’s falling through the cracks on project boards.
I ended up setting up automated monitoring that runs these inverse queries daily and sends team reports. Built it with Latenode since it connects to JIRA, runs custom queries, compares results, and notifies you when tickets get filtered out unexpectedly.
My workflow checks multiple filters, generates reports, and creates summary tickets when too many items get excluded. Saves tons of manual work and catches problems early.
JIRA can’t handle negative filter references like filter != 5678 - it creates a circular dependency mess. Don’t bother with filter negation syntax. Work backwards instead. Your filter 5678 excludes stuff using: component != "Custom Tasks" OR component is EMPTY. To find what’s getting excluded, flip the logic - you need tickets that fail both conditions. Use this query: project = OurProject AND component = "Custom Tasks" AND component is not EMPTY. This grabs tickets with “Custom Tasks” explicitly set, which is exactly what your original filter kicks out. The component is not EMPTY part makes sure you’re only getting tickets with actual component values. I’ve hit this same issue managing multiple project boards. When your original filter uses OR conditions, you need AND conditions in the inverse query to catch what’s excluded. Works every time, even on older JIRA versions.
You’re hitting a cyclical reference because JIRA can’t handle negative filter references in that syntax. The problem is you’re referencing the filter from within a query that might be part of that same filter’s logic. Skip the filter negation and build the inverse query manually. If filter 5678 shows tickets where component != “Custom Tasks” OR component is EMPTY, then the excluded tickets are where component = “Custom Tasks” AND the component field isn’t empty. Try this: project = OurProject AND component = “Custom Tasks”. This’ll show you exactly what’s getting filtered out from your scrum board. Your original filter excludes “Custom Tasks” tickets, so searching for tickets that DO have this component finds what’s missing. I’ve hit this same issue troubleshooting missing board tickets. Pro tip: save this inverse query as its own filter so you can check what’s excluded without rebuilding the logic every time.