Great question — and your confusion is completely understandable. Let me clarify exactly what's happening here.
Root Cause
Your diagnosis is correct. Issue deletes are only tracked if the authenticating user (i.e., the Jira account used during the OAuth "Sign into Jira" flow) has global admin permissions on the Jira instance. The issue_with_deletes table specifically relies on the Jira Audit Logs API, and that API is restricted to Jira global admins — it's a hard constraint enforced by Jira itself, not by Databricks.
So the problem is this: when your Databricks admin clicked "Sign into Jira," they authenticated with a Jira account that does not have Jira global admin privileges. Even though the OAuth app was configured correctly (with the right scopes), the actual Jira user identity behind that OAuth token lacks the Jira-side permission to call the audit logs API.
To answer your specific question about OAuth scopes
The OAuth app scopes and the authenticating user's Jira permissions are two separate layers — both must be satisfied:
- OAuth scopes define what the application is allowed to request on behalf of a user (e.g., read:audit-log:jira).
- Jira user permissions determine whether the specific authenticated user is actually authorized to access those APIs on the Jira server side.
Think of it like this: the OAuth scope is the key, and the user's Jira admin role is the lock. Even with the right key, if the authenticated user isn't a Jira global admin, Jira's API will reject the audit log calls — which is exactly the JIRA_ADMIN_PERMISSION_MISSING error you're seeing.
How to Fix It
Re-do the OAuth connection using a Jira account that has Jira global admin privileges. Specifically:
- Go back to the connection setup in Databricks Catalog.
- When you click "Sign into Jira," authenticate with a Jira account that has Jira global admin permissions (not just the Databricks admin account).
- Once the connection is re-established under a Jira-admin identity, re-run the pipeline.
The OAuth app itself should already have the required scopes including read:audit-log:jira, so you shouldn't need to touch the OAuth app configuration — just re-authenticate with the right Jira user.
Alternative if you can't grant Jira admin
If your organization can't grant admin-level scopes or permissions, you can still ingest the tables that don't depend on them — just exclude issue_with_deletes from your pipeline and use the regular issues table instead. You'd lose delete tracking, but the rest of the ingestion will work fine.