Settings, Privacy & FAQ
Organization API Key
Most things work without the key. You can do Work Item Configuration scanning and cleanup, scheme management, role assignments, user listing, board management, attachments, components, releases, and the audit log analyser all without it. The key is optional — it unlocks a specific set of features that use the Atlassian Organization Admin API.
Without API Key
- Work Item Configuration — all tabs, full scan and bulk delete
- Jira Audit Log Analyser — search, filter, export
- Scheme management — all 4 scheme types
- Bulk role assignment and role membership report
- User listing, space overview, CSV export
- Board management, attachments, components, releases
- Automation Rules (uses a separate email + API token)
With API Key — additional features
- Suspend user access at the organization level
- Delete users via the Admin API
- Last Active dates per Atlassian product
- Inactive owner detection for dashboards and filters
- Group Management — bulk add/remove members, delete groups, usage analysis
- Product access revocation
How to configure
The key comes from admin.atlassian.com — not from id.atlassian.com. This is a frequent source of confusion. The token at id.atlassian.com is a personal API token for your individual account; what you need here is an Org-level API key, and only Organization Admins can create one.
-
Log in to admin.atlassian.com as an Org Admin If you can see the Settings menu there, you're an org admin. If you only see a list of sites without Settings, you're a site admin only — ask your org admin to create the key.
-
Create the key Go to Settings > API keys > Create API key. Name it something descriptive and set an expiry date. The app doesn't auto-rotate keys — set a calendar reminder to renew before the expiry, or key-dependent features will quietly stop working.
-
Copy the key immediately You only see it once. Copy it before closing the dialog.
-
Find your Organization ID It's in the URL at admin.atlassian.com — a UUID that looks like
d90a038j-62jc-18a6-jka2-1jjc17d23d75. -
Enter both in the app Go to Settings in the app, paste the key and Org ID, click Save. The app validates the key, shows whether it worked, and auto-detects your primary user directory.
The key is shared
All admins on the site share this key. If you delete it in Settings, everyone loses access to suspend/delete, last-active dates, and group management until a new key is configured. Don't remove it without a plan to replace it immediately.
Once saved, the key is encrypted in Forge's secret storage. The browser never sees the raw key — Settings only shows a "Configured" status indicator. The key isn't included in any server logs.
Bulk Operation Limits
Two settings control how many items can be processed per bulk operation:
- Max Delete — maximum items per delete operation (default 10, max 200)
- Max Update — maximum items per update or assign operation (default 10, max 200)
The default of 10 is conservative — it's there to prevent accidental large-scale deletions. For most admins who've spent a few sessions with the app, it's too low for actual cleanup work. Bumping it to 50 or 100 is reasonable once you're comfortable with how the confirmation dialogs work and what "In Use / Not In Use" means in context. Both the frontend and the server enforce the limit, so you can't bypass it from the browser console.
You can lower the limit back at any time. There's no penalty for changing it, and it only applies to operations going forward — it doesn't affect anything already done.
Activity Log Settings
The Activity Log is the app's own internal record of actions performed through this app: user deletes, suspends, board deletions, access revocations, scheme assignments. It's stored in Forge SQL (TiDB, MySQL-compatible) and has a configurable retention period — default 90 days, adjustable from 1 to 365 days. Entries older than the retention period are automatically cleaned up.
It's worth being clear about the difference between this and the Jira Audit Log Analyser:
- Activity Log (under Help & Settings) — this app's own history. Tracks what admins did specifically through this app. Stored in Forge SQL with configurable retention.
- Jira Audit Log Analyser (under Governance) — Jira's built-in audit log. Tracks everything that happened in the entire Jira instance from any source, including native Jira UI actions, API calls, other apps. Read-only via the app; not stored by the app.
Both are useful, but they answer different questions. "Did I bulk-delete those old workflows last month?" → Activity Log. "Who changed the permission scheme on PROJECT-X on March 15th?" → Jira Audit Log Analyser.
Privacy Policy
What Data We Access
| Access Level | Data |
|---|---|
| Read | Spaces, workflows, statuses, resolutions, fields, screens, priorities, schemes, agile boards, attachments, components, versions |
| Read | Users, groups, application roles, space roles, dashboards, filters |
| Read | Jira audit log records — read-only via Audit Log Analyser, no storage |
| Read | Organization data via Admin API (last-active dates, product access, directories) — only when API key configured |
| Write | Scheme assignments, role assignments, dashboard/filter ownership changes, automation rule enable/disable/transfer |
| Delete | Workflows, schemes, fields, screens, statuses, priorities, resolutions, users, dashboards, filters, boards, attachments, automation rules, components, versions, teams |
| Suspend | User access via Org API or JSM API |
What We Store
| Type | Data | Storage |
|---|---|---|
| Encrypted | Organization API key | Forge secret storage (setSecret) |
| Encrypted | Account ID of admin who configured the key | Forge secret storage (for GDPR deletion) |
| Config | Organization ID, directory ID, access level, bulk limits, audit retention | Forge KVS (not PII) |
| Audit | Activity Log entries (admin account ID, action type, target IDs, timestamp) | Forge SQL (TiDB) — configurable retention, default 90 days |
| Temporary | CSV export files | Forge KVS, 10-minute expiry, single-use, auto-deleted after download |
| Temporary | Scan caches (user setup, product group mapping) | Forge KVS, 5–10 minute TTL, auto-cleaned |
| Temporary | Nonce tokens for replay protection | Forge KVS — consumed immediately on use, ~50 bytes each |
No user data (names, emails, profile information) is permanently stored by this app. All scan data — spaces, users, schemes, boards, attachments, automation rules — lives in browser memory and disappears when you close the tab. The Jira Audit Log Analyser reads Jira's audit log live and stores nothing. Uninstalling the app automatically removes all stored data — both KVS and SQL are wiped on uninstall.
Security Practices
How the app is built to be safe
- Forge-native — runs entirely on Atlassian infrastructure, no external servers, no data leaves Atlassian's cloud except for optional Org Admin API calls to api.atlassian.com
- Server-side auth on every call — every resolver checks admin permission via
asUser()+mypermissionsAPI before doing anything; there's no way to bypass this at the UI level - Replay protection — all destructive operations require a one-time UUID nonce; submitting the same delete request twice rejects the second one
- Actions attributed to your account — write and delete operations run via
asUser()context, so they appear in Jira's audit log under your name, not the app's identity - API keys encrypted at rest — stored via Forge's
setSecret, never sent to the browser, never included in logs - Secure CSV exports — random UUID filenames, 10-minute TTL, single-use, deleted after download, 5MB maximum
- Formula injection prevention — CSV values starting with
=,+,-, or@are prefixed with a tab to prevent spreadsheet execution - No tracking — no third-party analytics, no cookies, no telemetry of any kind
External API Connections
| API | Purpose | When Used |
|---|---|---|
| Jira REST API v3 | All core operations | Always, within Forge sandbox |
| JSM REST API | Portal customer suspend | When suspending JSM customer accounts |
| Agile REST API | Board scanning, deletion, filter analysis | When using Agile Boards feature |
| Automation REST API (api.atlassian.com) | Scan, enable/disable, delete, transfer automation rules | When using Automation Rules (requires email + API token, per-session only) |
| Teams Public REST API (api.atlassian.com) | List, manage, archive, delete Atlassian teams | When using Teams feature (requires email + API token, per-session only) |
| Org Admin API (api.atlassian.com) | User suspend/delete, last active, groups, directories | Only when API key is configured |
GDPR Compliance
- Implements Atlassian's
report:personal-datalifecycle event scope - Personal data report: Returns any API key config record tied to the requesting user's account, and any Activity Log entries in both KVS and SQL that reference their account ID
- Personal data delete: If the requesting user configured the API key, it removes it. Redacts their account ID from all Activity Log entries. Cleans up any temporary caches that reference them.
- Uninstalling the app automatically removes all stored data — KVS and SQL are completely wiped on uninstall, with no manual cleanup needed
Frequently Asked Questions
General
Jira site admins only. That means you need the global ADMINISTER permission — not just project admin, not just JSM agent. The distinction that confuses people most: "project admin" in Jira is a per-project role, and it doesn't give you access to this app. You need site-level admin, which is what lets you into Jira's top-level Settings. If you can navigate to Jira Settings from the main nav (the gear icon at the top), you're a site admin and you'll have access.
Yes, most features work fine without it. You can do all of Work Item Configuration, Audit Log Analyser, scheme management, role assignment, user listing, board management, attachments, components, and releases. The key adds user suspend/delete, last-active dates, inactive owner detection, and group management. If you don't need those, skip the key setup.
They track different things. The Activity Log (under Help & Settings) is this app's own record — it shows actions performed through this app specifically: user deletes, suspends, board deletions, access revocations. It's stored in Forge SQL with configurable retention and is useful for "what did I do through this app last month?" The Jira Audit Log Analyser (under Governance) reads Jira's built-in audit log — everything that happened in your entire Jira instance from any source, including native Jira UI actions, API calls, and other apps. The app reads that log live and doesn't store any of it.
Yes. It's stored using Forge's setSecret — encrypted at rest, never sent to the browser, not included in logs. The browser only ever sees a "Configured" status indicator, not the key itself. It's shared across all admins on the site, so treat it like any other privileged credential.
Work Item Configuration
The main Work Item Configuration view has tabs for Workflows, Work Types, Fields, Permissions, Priorities, Notifications, and Screens. Each tab has an Overview sub-tab (summary stats) and a Details sub-tab (full list with search, filter, sort, and bulk delete). Additional sections — Spaces, Dashboards & Filters, Agile Boards, Attachments, Components, Releases, Automation Rules — are in the sidebar under their respective groups and work the same way.
Items marked "In Use" can't be deleted because they're still referenced by an active configuration. Check the Lookup dropdown or expand the row to see what's referencing them — usually it's a scheme that's assigned to a space, or another item further up the dependency chain. Fix the reference first (reassign the space, delete the parent scheme, etc.), then the item will show as "Not In Use" and can be deleted.
It uses Jira's built-in field usage tracking via the field search API. The date reflects the last time a value was written to that field on any issue. Not all field types are tracked by Jira's API — fields that aren't tracked show a dash. For the ones that are tracked, it's reliable: if a field shows Last Used in 2020 on an active instance, it genuinely hasn't been updated since then.
Jira processes the permanent deletion in the background — it's not instant. Projects with many issues can take several minutes to fully delete. You can monitor progress at Jira Settings > Projects > Trash. Once the deletion completes, rescan your workflow and scheme tabs — things that showed as "In Use" because of those trashed spaces will now show as unused and become eligible for cleanup.
Jira Audit Log Analyser
It reads Jira's built-in audit log via the /rest/api/3/auditing/record API. That includes all configuration changes: scheme updates, workflow modifications, user management actions, permission changes, and more — anything Jira itself records. It doesn't read content (issue fields, comments, attachments) — only configuration and admin actions.
No. Records are fetched live on each search. User display names are cached in server memory for 10 minutes to avoid redundant API calls during a session, but nothing is persisted to any storage. When you close the tab, it's all gone.
CSV export is capped at 5,000 records per export. For date ranges that produce more than 5,000 events, narrow the filters — add a category filter, reduce the date range, or search for a specific user or object type. You can run multiple exports and combine them in a spreadsheet if needed.
Scheme Management
Team-managed spaces control their own configuration — they don't participate in the global scheme library that company-managed spaces use. Jira's REST API doesn't support bulk scheme assignment for them. They show up in the space list so you can see them, but during Apply they're marked Skipped. To change scheme-equivalent settings on a team-managed space, do it from within that space's own Project Settings.
Jira requires a migration step. Each issue has a current status, and if the new workflow scheme has different statuses, Jira needs you to map old statuses to new ones. The app surfaces Jira's native migration page for that space — you complete the mapping there. Empty spaces update immediately without any migration. This is a Jira platform requirement; there's no way to skip it for spaces with issues.
Jira's REST API doesn't support notification scheme reassignment via REST for most scheme types — the endpoint simply doesn't exist. The app identifies which spaces need updating and provides direct links to each space's notification settings page so you can apply the change with one click in each space. It's an API limitation on Jira's side, not the app's side.
User Management
Probably not — that scan is genuinely slow on large instances because it has to check every user's product access and last login date. On 15,000 users expect about 8 minutes. The progress bar shows where it is, so you can tell whether it's still moving. As long as the counter is incrementing ("Scanning 4,500 of 15,000 users"), it's working. Don't close the tab while it's running — you'd lose all the data and have to start over.
Suspend blocks login while keeping the account and all its data intact — it's reversible by re-activating the account in Atlassian admin. Delete permanently removes the user from your directory — it's not reversible, and it affects them across all Atlassian products in your org, not just Jira. For someone who's left the company, suspend is usually the right first step; delete can come later once you've confirmed there's no data recovery needed.
Automation Rules
The Atlassian Automation REST API requires Basic authentication — your Atlassian email address and an API token generated at id.atlassian.com (not the Org API key). These credentials are used only for your current browser session and are never stored anywhere. When you close the tab or the session ends, they're gone. You'll need to re-enter them next time you use the Automation Rules feature.
Yes. Use the Transfer Ownership action and enter the account ID of the app user directly in the text field — don't use the dropdown, which only shows regular user accounts. App user account IDs usually look like 557058:f58131cb-b67d-43c7-b30d-6b58d40bd077 and can be found in Jira's audit log or by checking the automation rule's current owner in Jira's native Automation settings.
Jira only allows deletion of disabled rules. If you try to delete an active rule, it'll fail. Disable it first, then delete. If you're bulk-cleaning up rules, the typical workflow is: filter to the rules you want to remove, bulk-disable them, then bulk-delete. The app handles this in sequence if you select "disable and delete."
Teams
The Teams Public REST API requires Basic authentication with your Atlassian email and an API token from id.atlassian.com. Same pattern as Automation Rules — per-session only, never stored. The credentials are only sent to Atlassian's Teams API endpoint, nowhere else.
External teams are managed by an identity provider via SCIM. They show up in the team list as read-only — you can see their members but can't change them through the app. Changes to SCIM-managed teams have to be made in the identity provider (Azure AD, Okta, etc.), not in Jira or this app.
Components & Releases
For components, it checks whether any issues in the space are currently assigned to that component. For versions, it checks both fixVersion and affectedVersion fields across all issues in the space. Once checked, items with no issue assignments are marked "Not In Use" and become eligible for bulk deletion. The check has to be run before deletion — the app won't let you delete items you haven't checked yet.
Version deletion uses Jira's removeAndSwap API. If any issues reference the version being deleted, Jira removes those references from the issues rather than blocking the deletion. You won't get stuck trying to clean up a version that a few old issues are still using.
Attachments
Up to 5,000 per JQL search — that's a Forge platform constraint. For instances with more attachments than that in a given search, break it up: search by project, by date range, or by file type. For example, search for just PDFs in a project first, then images, then all other types. The client-side filters (file type, size range, author) let you narrow results further after each search loads without making additional API calls.
Dashboards & Filters
After loading dashboards or filters, the app checks each owner's account status via the Jira user API. Accounts that are deactivated get flagged as "Inactive" in the Owner Status column. Filter the list to "Inactive owners" to see the full set, then select them all and use Change Owner to bulk-transfer to an active admin.
Troubleshooting
| Problem | Solution |
|---|---|
| App not visible in Apps menu | You need Jira site admin permissions — the app is hidden from non-admins by Atlassian's platform condition. If you are an admin, try refreshing the page — Forge apps sometimes take a minute to appear after a fresh install. |
| "You don't have permission to view this app" | You need the global ADMINISTER permission in Jira. Project admin doesn't qualify. Contact your site admin to confirm your access level. |
| "License Required" screen | The app needs an active Marketplace subscription. Go to Apps > Manage apps to start or renew a trial, or purchase a subscription. |
| Scan is running slowly | Expected on large instances. The chunked scanning approach keeps the app within Forge's limits but takes longer proportionally. The progress bar tells you where it is. Don't close the tab while a scan is running. |
| API key errors or "API key invalid" | Double-check it's the Org API key from admin.atlassian.com (not a personal API token from id.atlassian.com). Check whether the key has expired — expired keys fail silently. Make sure both the key and Org ID are entered correctly in Settings. |
| Can't delete an item | The item is "In Use" — it's referenced by a space, scheme, or another configuration item. Use the Lookup dropdown or expand the row to see what's referencing it. Remove those references first. |
| CSV download fails or shows "expired" | Download links expire after 10 minutes and are single-use. Export again to get a fresh link. |
| Group operations fail | Confirm the Primary Directory is set in Settings (it should auto-detect on API key save, but can be changed manually). SCIM/IdP-managed groups are read-only — changes must go through the identity provider. |
| Audit Log Analyser shows no results | Try expanding the date range or clearing filters. Jira only retains audit log records for a limited period depending on your plan — older records may not be available regardless of what you search for. |
| "This operation was already executed" | Each delete operation can only be executed once (replay protection via one-time nonces). If you see this, the operation already ran. Refresh the page and check whether the items were deleted. If not, start a new operation. |
| Automation Rules not loading | Confirm you've entered a valid Atlassian email and an API token from id.atlassian.com (not the Org API key). These credentials are session-only and may need to be re-entered if the session has expired. |
Support
Email support@techclimbs.com for bug reports, feature requests, or questions. Response is typically within 24 hours on business days.
When you email, it helps to include:
- Your Jira instance URL (e.g.,
yourcompany.atlassian.net) - What you were trying to do
- What happened instead
- Any error messages you saw (screenshots are helpful)
- App version (shown in the top-right badge of every page)