Skip to content

JQL Filter Configuration Guide

Overview

JQL (Jira Query Language) filters provide powerful and precise control over which issues are affected by Out of Office Assistant rules. Instead of targeting all projects or manually selecting specific projects, JQL filters allow you to create sophisticated targeting criteria based on any combination of Jira fields, conditions, and relationships.

Understanding JQL in Out of Office Assistant

What JQL Filters Enable

Precision Targeting: Target specific subsets of issues based on complex criteria rather than broad project-level rules.

Dynamic Scope: Rules automatically adapt to changing issue sets without manual reconfiguration.

Advanced Logic: Combine multiple conditions using AND, OR, and NOT operators for sophisticated targeting.

Field-Based Selection: Target issues based on any Jira field including custom fields, labels, components, and relationships.

When to Use JQL Filters

Complex Project Scenarios:

  • Cover only specific issue types within projects

  • Target issues assigned to specific teams or components

  • Handle only high-priority or urgent issues

  • Focus on issues in specific workflow states

Cross-Project Coverage:

  • Cover similar issue types across multiple projects

  • Target issues with specific labels regardless of project

  • Handle customer-facing issues across the organization

  • Coordinate coverage for shared components

Conditional Coverage:

  • Cover issues only during specific time periods

  • Target issues with specific custom field values

  • Handle escalated or flagged issues differently

  • Apply rules based on issue relationships

JQL Filter Interface

Accessing JQL Configuration

Screenshot: JQL filter configuration interface showing query editor and live results preview

jira_jql_query_interface.webp

Navigation Path:

  1. Create Rule: Click “Add rule for myself” in Out of Office Assistant

  2. Select Scope: Choose “JQL Issue Filter” radio button

  3. Access Editor: Click “Create a custom filter” to open JQL editor

  4. Configure Query: Enter JQL syntax in the query field

JQL Editor Components

Query Input Field:

  • Syntax Highlighting: Visual indicators for valid/invalid syntax

  • Auto-completion: Suggestions for field names, operators, and values

  • Real-time Validation: Immediate feedback on query syntax errors

  • Syntax Help Link: Direct link to Atlassian JQL documentation

Live Results Preview:

  • Issue Count: Shows total number of matching issues

  • Result Table: Displays actual issues that would be affected

  • Column Customization: Adjust displayed fields for better analysis

  • Refresh Option: Update results after query modifications

Query Controls:

  • Search Button: Execute query and update results

  • Save/Cancel: Confirm or discard JQL filter configuration

  • Field Reference: Access to available field names and syntax

Always use the pre-populated User ID (assignee = "your user ID") and not current user

Basic JQL Syntax for Out of Office Assistant

Core JQL Structure

Basic Query Format:

  1. field operator value

Example Queries:

  1. assignee = "user.account.id" # Issues assigned to specific user
  2. project = "DEMO" # Issues in specific project
  3. status = "In Progress" # Issues in specific status
  4. priority = "High" # Issues with specific priority

Essential Fields for Absence Rules

User-Related Fields:

  1. assignee = "user.account.id" # Issues assigned to user
  2. reporter = "user.account.id" # Issues reported by user
  3. assignee in (user1, user2, user3) # Issues assigned to any listed user
  4. assignee != "user.account.id" # Issues NOT assigned to user

Project and Issue Fields:

  1. project = "PROJECT_KEY" # Specific project
  2. project in ("PROJ1", "PROJ2") # Multiple projects
  3. issuetype = "Bug" # Specific issue type
  4. status != "Done" # Exclude completed issues
  5. resolution = "Unresolved" # Only unresolved issues

Priority and Timing Fields:

  1. priority in ("High", "Highest") # High priority only
  2. created >= "-7d" # Created in last 7 days
  3. updated >= "2024-01-01" # Updated since specific date
  4. duedate <= "7d" # Due within 7 days

Common Operators

Equality Operators:

  • = : Equals (exact match)

  • != : Not equals

  • > : Greater than

  • >= : Greater than or equal

  • < : Less than

  • <= : Less than or equal

Set Operators:

  • IN : Matches any value in list

  • NOT IN : Doesn’t match any value in list

Text Operators:

  • ~ : Contains text (fuzzy matching)

  • !~ : Doesn’t contain text

Special Operators:

  • IS EMPTY : Field has no value

  • IS NOT EMPTY : Field has a value

  • WAS : Historical value matching

Common JQL Patterns for Absence Rules

Project-Specific Patterns

Single Project Coverage:

  1. project = "SUPPORT" AND assignee = "601c08cb3b1af00069ec6922"

Covers only support project issues assigned to the user

Multiple Project Coverage:

  1. project IN ("SUPPORT", "BUGS", "FEATURES") AND assignee = "user.account.id"

Covers specific projects assigned to current user

Project Exclusion:

  1. assignee = "user.account.id" AND project NOT IN ("ARCHIVE", "TEMPLATES")

Covers all user’s issues except archived projects

Issue Type and Priority Patterns

High Priority Only:

  1. assignee = "user.account.id" AND priority IN ("High", "Highest")

Covers only high and highest priority issues

Customer-Facing Issues:

  1. assignee = "user.account.id" AND issuetype IN ("Bug", "Support Request")

Covers bugs and support requests only

Development Work Only:

  1. assignee = "user.account.id" AND issuetype IN ("Story", "Task", "Sub-task")

Excludes bugs and support work

Status and Workflow Patterns

Active Work Only:

  1. assignee = "user.account.id" AND status IN ("To Do", "In Progress", "In Review")

Covers only issues in active workflow states

Unresolved Issues:

  1. assignee = "user.account.id" AND resolution = "Unresolved"

Covers only unresolved issues

Recently Updated:

  1. assignee = "user.account.id" AND updated >= "-7d"

Covers issues updated in the last week

Component and Label Patterns

Component-Based Coverage:

  1. assignee = "user.account.id" AND component = "Backend API"

Covers only issues in specific component

Label-Based Targeting:

  1. assignee = "user.account.id" AND labels IN ("urgent", "customer-facing")

Covers issues with specific labels

Team-Based Coverage:

  1. assignee = "user.account.id" AND labels = "team-alpha"

Covers issues assigned to specific team

Date and Time Patterns

Recent Issues:

  1. assignee = "user.account.id" AND created >= "-14d"

Covers issues created in last 2 weeks

Due Soon:

  1. assignee = "user.account.id" AND duedate <= "7d"

Covers issues due within 7 days

Long-Running Issues:

  1. assignee = "user.account.id" AND created <= "-30d" AND status != "Done"

Covers old unfinished issues

Advanced JQL Techniques

Complex Boolean Logic

AND Combinations:

  1. assignee = "user.account.id"
  2. AND project = "SUPPORT"
  3. AND priority IN ("High", "Highest")
  4. AND status != "Done"

Multiple conditions all must be true

OR Combinations:

  1. assignee = "user.account.id"
  2. AND (priority = "Highest" OR labels = "urgent" OR duedate <= "3d")

Any of the priority conditions triggers inclusion

Nested Logic:

  1. assignee = "user.account.id"
  2. AND (
  3. (project = "SUPPORT" AND priority = "High")
  4. OR
  5. (project = "DEVELOPMENT" AND labels = "customer-facing")
  6. )

Complex nested conditions with grouped logic

Custom Field Integration

Custom Field Filtering:

  1. assignee = "user.account.id" AND "Customer Impact" = "High"

Filter by custom field values

Multi-Select Custom Fields:

  1. assignee = "user.account.id" AND "Affected Systems" IN ("API", "Database")

Filter by multi-select custom field options

Custom Field Presence:

  1. assignee = "user.account.id" AND "Customer ID" IS NOT EMPTY

Include only issues with customer information

Relationship-Based Queries

Epic Filtering:

  1. assignee = "user.account.id" AND "Epic Link" = "PROJ-123"

Cover only issues in specific epic

Sprint Filtering:

  1. assignee = "user.account.id" AND sprint IN openSprints()

Cover only issues in currently open sprints

Issue Linking:

  1. assignee = "user.account.id" AND issue IN linkedIssues("CRITICAL-456")

Cover issues linked to critical issues

Historical and Time-Based Queries

Recently Assigned:

  1. assignee WAS EMPTY AND assignee = "user.account.id" AND assignee CHANGED AFTER "-3d"

Cover recently assigned issues

Status History:

  1. assignee = "user.account.id" AND status WAS "In Progress" DURING ("-7d", "now()")

Issues that were in progress during last week

Comment Activity:

  1. assignee = "user.account.id" AND comment ~ "currentUser()" AND updated >= "-2d"

Issues with recent comments from user

Special JQL Functions for Out of Office

Out of Office Specific Functions

Current User Reference:

  1. assignee = "user.account.id"

Automatically references the rule creator’s account

Out of Office Status Checking:

  1. assignee.outofoffice.today = 1

Identifies issues assigned to users currently out of office

Out of Office Date Range:

  1. assignee.outofoffice.date >= "2024-12-01" AND assignee.outofoffice.date <= "2024-12-31"

Issues assigned to users out of office in date range

Practical Implementation Examples

Customer Support Scenario

Support Agent Coverage:

  1. assignee = "user.account.id"
  2. AND project = "HELPDESK"
  3. AND (
  4. priority IN ("High", "Highest")
  5. OR labels = "escalated"
  6. OR "Customer Tier" = "Premium"
  7. )

Benefits:

  • Covers only high-priority customer issues

  • Includes escalated tickets regardless of priority

  • Covers premium customer issues automatically

  • Excludes routine support tasks

Development Team Scenario

Developer Coverage:

  1. assignee = "user.account.id"
  2. AND project IN ("BACKEND", "API", "CORE")
  3. AND status IN ("In Progress", "Code Review", "Testing")
  4. AND (
  5. priority = "Highest"
  6. OR labels IN ("security", "performance")
  7. OR component = "Critical Infrastructure"
  8. )

Benefits:

  • Focuses on active development work

  • Prioritizes security and performance issues

  • Covers critical infrastructure components

  • Excludes backlog and planning items

Project Manager Scenario

PM Coverage:

  1. assignee = "user.account.id"
  2. AND issuetype IN ("Epic", "Story")
  3. AND (
  4. status = "Blocked"
  5. OR priority = "Highest"
  6. OR "Stakeholder Impact" = "High"
  7. OR duedate <= "7d"
  8. )

Benefits:

  • Covers strategic planning items

  • Includes blocked work requiring intervention

  • Prioritizes stakeholder-facing issues

  • Covers time-sensitive deliverables

Service Desk Agent Scenario

JSM Agent Coverage:

  1. assignee = "user.account.id"
  2. AND project = "SERVICEDESK"
  3. AND (
  4. "Request Type" IN ("Incident", "Problem")
  5. OR priority IN ("High", "Highest")
  6. OR "SLA Time to Resolution" <= "4h"
  7. OR labels = "vip-customer"
  8. )

Benefits:

  • Focuses on critical service requests

  • Includes time-sensitive SLA commitments

  • Covers VIP customer requests

  • Excludes routine fulfillment requests

Testing and Validation

Pre-Deployment Testing

Test Query Construction:

  1. Start Simple: Begin with basic assignee filter

  2. Add Conditions: Incrementally add each condition

  3. Verify Results: Check that results match expectations

  4. Test Edge Cases: Verify behavior with empty result sets

  5. Performance Check: Ensure query executes quickly

Sample Test Approach:

  1. # Step 1: Base query
  2. assignee = "user.account.id"
  3. # Step 2: Add project filter
  4. assignee = "user.account.id" AND project = "DEMO"
  5. # Step 3: Add status filter
  6. assignee = "user.account.id" AND project = "DEMO" AND status != "Done"
  7. # Step 4: Add priority filter
  8. assignee = "user.account.id" AND project = "DEMO" AND status != "Done" AND priority = "High"

Rule Testing Methodology

Validation Checklist:

  • ✅ Query returns expected issue count

  • ✅ All returned issues should be covered by rule

  • ✅ No unintended issues are included

  • ✅ Query works with current and future issues

Test Scenarios:

  1. Test Case 1: Normal Working Hours
  2. - Create test issues matching filter criteria
  3. - Verify issues appear in query results
  4. - Confirm rule would apply to these issues
  5. Test Case 2: Edge Cases
  6. - Test with zero matching issues
  7. - Test with very large result sets
  8. - Test with recently created/updated issues
  9. Test Case 3: Negative Testing
  10. - Verify excluded issues don't appear
  11. - Test with invalid field values
  12. - Confirm proper handling of empty fields


Configuration Status: ✅ COMPLETE
Next Stepshttps://resolution.atlassian.net/wiki/spaces/OoO/pages/4848353590