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

Navigation Path:
Create Rule: Click “Add rule for myself” in Out of Office Assistant
Select Scope: Choose “JQL Issue Filter” radio button
Access Editor: Click “Create a custom filter” to open JQL editor
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:
- field operator value
Example Queries:
- assignee = "user.account.id" # Issues assigned to specific user
- project = "DEMO" # Issues in specific project
- status = "In Progress" # Issues in specific status
- priority = "High" # Issues with specific priority
Essential Fields for Absence Rules
User-Related Fields:
- assignee = "user.account.id" # Issues assigned to user
- reporter = "user.account.id" # Issues reported by user
- assignee in (user1, user2, user3) # Issues assigned to any listed user
- assignee != "user.account.id" # Issues NOT assigned to user
Project and Issue Fields:
- project = "PROJECT_KEY" # Specific project
- project in ("PROJ1", "PROJ2") # Multiple projects
- issuetype = "Bug" # Specific issue type
- status != "Done" # Exclude completed issues
- resolution = "Unresolved" # Only unresolved issues
Priority and Timing Fields:
- priority in ("High", "Highest") # High priority only
- created >= "-7d" # Created in last 7 days
- updated >= "2024-01-01" # Updated since specific date
- 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 listNOT 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 valueIS NOT EMPTY
: Field has a valueWAS
: Historical value matching
Common JQL Patterns for Absence Rules
Project-Specific Patterns
Single Project Coverage:
- project = "SUPPORT" AND assignee = "601c08cb3b1af00069ec6922"
Covers only support project issues assigned to the user
Multiple Project Coverage:
- project IN ("SUPPORT", "BUGS", "FEATURES") AND assignee = "user.account.id"
Covers specific projects assigned to current user
Project Exclusion:
- 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:
- assignee = "user.account.id" AND priority IN ("High", "Highest")
Covers only high and highest priority issues
Customer-Facing Issues:
- assignee = "user.account.id" AND issuetype IN ("Bug", "Support Request")
Covers bugs and support requests only
Development Work Only:
- assignee = "user.account.id" AND issuetype IN ("Story", "Task", "Sub-task")
Excludes bugs and support work
Status and Workflow Patterns
Active Work Only:
- assignee = "user.account.id" AND status IN ("To Do", "In Progress", "In Review")
Covers only issues in active workflow states
Unresolved Issues:
- assignee = "user.account.id" AND resolution = "Unresolved"
Covers only unresolved issues
Recently Updated:
- assignee = "user.account.id" AND updated >= "-7d"
Covers issues updated in the last week
Component and Label Patterns
Component-Based Coverage:
- assignee = "user.account.id" AND component = "Backend API"
Covers only issues in specific component
Label-Based Targeting:
- assignee = "user.account.id" AND labels IN ("urgent", "customer-facing")
Covers issues with specific labels
Team-Based Coverage:
- assignee = "user.account.id" AND labels = "team-alpha"
Covers issues assigned to specific team
Date and Time Patterns
Recent Issues:
- assignee = "user.account.id" AND created >= "-14d"
Covers issues created in last 2 weeks
Due Soon:
- assignee = "user.account.id" AND duedate <= "7d"
Covers issues due within 7 days
Long-Running Issues:
- assignee = "user.account.id" AND created <= "-30d" AND status != "Done"
Covers old unfinished issues
Advanced JQL Techniques
Complex Boolean Logic
AND Combinations:
- assignee = "user.account.id"
- AND project = "SUPPORT"
- AND priority IN ("High", "Highest")
- AND status != "Done"
Multiple conditions all must be true
OR Combinations:
- assignee = "user.account.id"
- AND (priority = "Highest" OR labels = "urgent" OR duedate <= "3d")
Any of the priority conditions triggers inclusion
Nested Logic:
- assignee = "user.account.id"
- AND (
- (project = "SUPPORT" AND priority = "High")
- OR
- (project = "DEVELOPMENT" AND labels = "customer-facing")
- )
Complex nested conditions with grouped logic
Custom Field Integration
Custom Field Filtering:
- assignee = "user.account.id" AND "Customer Impact" = "High"
Filter by custom field values
Multi-Select Custom Fields:
- assignee = "user.account.id" AND "Affected Systems" IN ("API", "Database")
Filter by multi-select custom field options
Custom Field Presence:
- assignee = "user.account.id" AND "Customer ID" IS NOT EMPTY
Include only issues with customer information
Relationship-Based Queries
Epic Filtering:
- assignee = "user.account.id" AND "Epic Link" = "PROJ-123"
Cover only issues in specific epic
Sprint Filtering:
- assignee = "user.account.id" AND sprint IN openSprints()
Cover only issues in currently open sprints
Issue Linking:
- assignee = "user.account.id" AND issue IN linkedIssues("CRITICAL-456")
Cover issues linked to critical issues
Historical and Time-Based Queries
Recently Assigned:
- assignee WAS EMPTY AND assignee = "user.account.id" AND assignee CHANGED AFTER "-3d"
Cover recently assigned issues
Status History:
- assignee = "user.account.id" AND status WAS "In Progress" DURING ("-7d", "now()")
Issues that were in progress during last week
Comment Activity:
- 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:
- assignee = "user.account.id"
Automatically references the rule creator’s account
Out of Office Status Checking:
- assignee.outofoffice.today = 1
Identifies issues assigned to users currently out of office
Out of Office Date Range:
- 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:
- assignee = "user.account.id"
- AND project = "HELPDESK"
- AND (
- priority IN ("High", "Highest")
- OR labels = "escalated"
- OR "Customer Tier" = "Premium"
- )
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:
- assignee = "user.account.id"
- AND project IN ("BACKEND", "API", "CORE")
- AND status IN ("In Progress", "Code Review", "Testing")
- AND (
- priority = "Highest"
- OR labels IN ("security", "performance")
- OR component = "Critical Infrastructure"
- )
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:
- assignee = "user.account.id"
- AND issuetype IN ("Epic", "Story")
- AND (
- status = "Blocked"
- OR priority = "Highest"
- OR "Stakeholder Impact" = "High"
- OR duedate <= "7d"
- )
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:
- assignee = "user.account.id"
- AND project = "SERVICEDESK"
- AND (
- "Request Type" IN ("Incident", "Problem")
- OR priority IN ("High", "Highest")
- OR "SLA Time to Resolution" <= "4h"
- OR labels = "vip-customer"
- )
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:
Start Simple: Begin with basic assignee filter
Add Conditions: Incrementally add each condition
Verify Results: Check that results match expectations
Test Edge Cases: Verify behavior with empty result sets
Performance Check: Ensure query executes quickly
Sample Test Approach:
- # Step 1: Base query
- assignee = "user.account.id"
- # Step 2: Add project filter
- assignee = "user.account.id" AND project = "DEMO"
- # Step 3: Add status filter
- assignee = "user.account.id" AND project = "DEMO" AND status != "Done"
- # Step 4: Add priority filter
- 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:
- Test Case 1: Normal Working Hours
- - Create test issues matching filter criteria
- - Verify issues appear in query results
- - Confirm rule would apply to these issues
- Test Case 2: Edge Cases
- - Test with zero matching issues
- - Test with very large result sets
- - Test with recently created/updated issues
- Test Case 3: Negative Testing
- - Verify excluded issues don't appear
- - Test with invalid field values
- - Confirm proper handling of empty fields
Configuration Status: ✅ COMPLETE
Next Steps: https://resolution.atlassian.net/wiki/spaces/OoO/pages/4848353590