Jira Inactive Users: Find & Remove to Save on Licenses

Jira License Audit: How to Find Jira Inactive Users Costing You Money

Jira License Audit: How to Find Jira Inactive Users Costing You Money

A 10-minute audit that could save you thousands on your Atlassian renewal

License Audit Guide

Last week, a Jira admin discovered 47 inactive users in their instance. Annual cost? $5,000+ for licenses nobody uses.

Your Atlassian renewal is coming. Before that call with your rep, here’s how to audit your licenses in under 10 minutes — and potentially save thousands.

The Hidden Cost of Inactive Users

According to the Zylo 2025 SaaS Management Index, the average organization uses only 47% of their SaaS licenses. Enterprise companies waste an average of $21 million per year on unused software.

For Jira specifically:

  • Only ~20% of users are concurrently active at any given time
  • Most teams find 15-30% of licenses assigned to inactive users
  • Potential savings from a proper audit: 10-40% of your license costs
PRICING CONTEXT

With Atlassian’s October 2025 pricing increase (+5-20% for Cloud) and February 2025 Data Center increase (+15-25%), every unused license hurts more than ever.

What Counts as “Inactive”?

Before deactivating anyone, you need clear criteria. Here’s the tiered approach recommended by the Atlassian Community:

Status Days Since Last Login Recommended Action
Green < 60 days Active user, no action
Yellow 60-90 days Send email asking if they still need access
Orange 90-180 days Email + schedule deactivation
Red > 180 days Deactivate with notification

Important Distinction

  • Deactivated user = account disabled, doesn’t count toward license
  • Inactive user = account active but user never logs in, still counts toward license

The standard Atlassian threshold is 90 days without login.

4 Checks Before Your Renewal Call

Run these checks to identify users costing you money:

1 Last Login > 90 Days

The most obvious indicator. If someone hasn’t logged in for 3+ months, they probably don’t need Jira.

2 Zero Issues Created or Updated (6 months)

Some users log in passively (dashboards, notifications) but never actually work in Jira.

3 No Comments or Work Logs

A user who logs in but never comments, logs work, or transitions issues is likely not actively using Jira.

4 No Dashboard or Filter Access

If they haven’t viewed any dashboards or saved filters, they’re probably not using Jira for reporting either.

How to Find Inactive Users: Data Center

For Jira Data Center, you’ll need to query the database directly. Here’s the SQL query for PostgreSQL:

POSTGRESQL
SELECT
    d.directory_name AS "Directory",
    u.user_name AS "Username",
    u.display_name AS "Display Name",
    u.email_address AS "Email",
    to_timestamp(CAST(ca.attribute_value AS BIGINT)/1000) AS "Last Login"
FROM cwd_user u
JOIN cwd_directory d ON u.directory_id = d.id
LEFT JOIN cwd_user_attributes ca
    ON u.id = ca.user_id
    AND ca.attribute_name = 'login.lastLoginMillis'
WHERE u.active = 1
    AND d.active = 1
    AND EXISTS (
        SELECT 1
        FROM cwd_membership m
        JOIN licenserolesgroup gp ON m.lower_parent_name = LOWER(gp.GROUP_ID)
        WHERE m.lower_child_name = u.lower_user_name
    )
    AND (
        ca.attribute_value IS NULL
        OR to_timestamp(CAST(ca.attribute_value AS BIGINT)/1000) <= current_date - INTERVAL '90 days'
    )
ORDER BY "Last Login" DESC NULLS LAST;

For MySQL, use this version:

MYSQL
SELECT
    d.directory_name AS "Directory",
    u.user_name AS "Username",
    u.display_name AS "Display Name",
    u.email_address AS "Email",
    FROM_UNIXTIME(CAST(ca.attribute_value AS UNSIGNED)/1000) AS "Last Login"
FROM cwd_user u
JOIN cwd_directory d ON u.directory_id = d.id
LEFT JOIN cwd_user_attributes ca
    ON u.id = ca.user_id
    AND ca.attribute_name = 'login.lastLoginMillis'
WHERE u.active = 1
    AND d.active = 1
    AND EXISTS (
        SELECT 1
        FROM cwd_membership m
        JOIN licenserolesgroup gp ON LOWER(m.parent_name) = LOWER(gp.GROUP_ID)
        WHERE m.lower_child_name = u.lower_user_name
    )
    AND (
        ca.attribute_value IS NULL
        OR FROM_UNIXTIME(CAST(ca.attribute_value AS UNSIGNED)/1000) <= (CURRENT_DATE - INTERVAL 90 DAY)
    )
ORDER BY "Last Login" IS NULL, "Last Login" DESC;
Pro tip: Users with NULL in "Last Login" have never logged in — they're your first candidates for deactivation.

Source: Atlassian Support KB

How to Find Inactive Users: Jira Cloud

Method 1: JQL Function

Jira Cloud has a built-in JQL function for finding issues assigned to inactive users:

JQL
assignee in inactiveUsers()

This works for any User Picker field. Use it to find issues that need reassignment.

Method 2: Export from Admin Console

  1. Go to admin.atlassian.com
  2. Navigate to Directory > Users
  3. Export users to CSV (includes "Last Active Time" column)
  4. Sort by Last Active Time in Excel/Sheets
  5. Filter for users inactive 90+ days

Method 3: REST API (Atlassian Guard required)

REST API
GET https://api.atlassian.com/admin/v1/orgs/{orgId}/directory/users/{accountId}/last-active-dates

This gives you precise activity data but requires Atlassian Guard (formerly Atlassian Access).

Source: Atlassian Developer Docs

What This Means in Dollars

Let's calculate the impact for a typical 500-user Jira instance:

Scenario Inactive Users Annual Waste
Conservative (10%) 50 users $5,400 (Cloud) / $5,100 (DC)
Average (20%) 100 users $10,800 (Cloud) / $10,200 (DC)
High (30%) 150 users $16,200 (Cloud) / $15,300 (DC)

Based on Jira Cloud Standard at $9/user/month and DC at $8.50/user/month

For larger instances (1000+ users), savings can reach $20,000-50,000 per year.

Automate Your License Audits

Manual audits work, but automation prevents the problem from recurring.

Option 1: ScriptRunner for Jira

ScriptRunner from Adaptavist includes a built-in script to automatically deactivate users after N days of inactivity.

GROOVY
// Example: Deactivate users inactive for 100+ days
// Available in ScriptRunner's Script Services

See: Adaptavist Library - Deactivate Idle Users

Option 2: Marketplace Apps

App Platform What It Does
Manage Inactive Users Cloud/DC Bulk deactivation based on inactivity
License Monitoring for Jira DC Monitors concurrent usage, recommends tier
User Auditor for Jira DC Permission audits, Excel exports
Microscope Cloud Instance cleanup, inactive detection

Option 3: SCIM Provisioning (Best for Cloud)

If you use Azure AD, Okta, or OneLogin, set up SCIM provisioning through Atlassian Guard:

  • Users removed from IdP are automatically deactivated in Atlassian
  • No manual cleanup required
  • Works across all Atlassian Cloud products

Best Practices: Don't Break Things

Before you start deactivating users:

1. DEACTIVATE, DON'T DELETE

Deleting users breaks issue history and @mentions. Always deactivate instead.

2. NOTIFY BEFORE DEACTIVATING

Send an email 7-14 days before: "Your Jira access will be removed on [date]. Reply if you still need it."

3. CHECK FOR AUTOMATIONS

Some users might be service accounts running automations. Verify before deactivating.

4. REASSIGN THEIR ISSUES

Use bulk change to reassign open issues from deactivated users.

5. DOCUMENT YOUR POLICY

Create a formal policy: "Users inactive for 90+ days will be deactivated after notification."

6. AUDIT MONTHLY

Set a calendar reminder. One audit per month prevents buildup.

Why This Matters Now

Atlassian Pricing Changes (2025-2026)

Date Change
February 2025 Data Center prices +15-25%
October 2025 Cloud prices +5-20%
March 2026 No new DC sales (new customers)
March 2028 No new DC sales (existing customers)
March 2029 Data Center End of Life

Source: Atlassian DC EOL Announcement

If You're Planning a Cloud Migration

Every inactive user you migrate to Cloud becomes a monthly cost. Clean up your user base before migration to avoid paying for users who don't need access.

The math is simple:

  • 100 inactive users × $9/month × 12 months = $10,800/year wasted
  • 10 minutes of audit work = potentially $10,000+ in savings

Quick Start Checklist

  • Run the SQL query (DC) or export users (Cloud)
  • Identify users with no login in 90+ days
  • Send notification emails to inactive users
  • Wait 7-14 days for responses
  • Deactivate non-responders
  • Reassign their open issues
  • Document the number of users removed
  • Calculate and report savings to management
  • Set up monthly audit reminder
  • Consider automation (ScriptRunner or Marketplace app)

The Bottom Line

Most Jira instances have 15-30% of licenses assigned to users who don't need them. With Atlassian prices increasing and Data Center approaching end-of-life, now is the time to audit.

A 10-minute audit today could save your organization thousands of dollars per year.


Automate Your Audits with Home Directory Database Browser

Tired of running SQL queries manually? Home Directory Database Browser lets you:

  • Audit 1,000+ users in seconds — no SQL knowledge required
  • Export inactive user lists to CSV for management review
  • See license cost impact before and after cleanup
  • Schedule regular audits with saved queries

Used by 2,400+ Jira admins. Average reported savings: $18,000/year from removing inactive users.

Try free for 30 days →

Scroll to Top