App Data Annex
Soverain s.r.o. Last updated: 3 August 2026
This annex forms part of the Soverain Privacy Policy. It records, per app, exactly which personal data categories the app touches, whether the app merely accesses the data or durably stores it, and how long stored data is kept.
Everything below is derived from each app's source code, not from a questionnaire.
Apps in scope
| App | Platform | Host product | Distribution | Data location |
|---|---|---|---|---|
| Kanban+ | Atlassian Forge (Custom UI) | Jira Cloud | Atlassian Marketplace | Atlassian-hosted Forge storage, inside the customer's installation |
| Diagon | Electron desktop app (Windows, Linux; macOS in development) | None — it runs on its own | Download from soverain.cz | Your own computer. Files where you save them, plus the app's own application-data folder |
The two apps are shaped so differently that they are documented separately: sections 1–7 cover Kanban+, section 8 covers Diagon. Future Soverain apps will be added here rather than getting their own privacy policy.
1. Kanban+ — summary
| Soverain's role | Processor. The Atlassian customer is the controller. |
| Where the app runs | Atlassian-hosted compute only. No Soverain servers. |
| External network access | None. No remotes, no external permissions declared. |
| Sub-processors | Atlassian only. |
| AI / model inference | None. The previous AI assistant was removed in full, including the code that could store an API key. On an installation that saved one before the removal, the orphaned value is still reaped by the full purge in §6. |
| Payment data | Never seen. Atlassian is the seller of record. |
2. Permissions the app requests
You approve these at installation. They define what the app can read — a wider boundary than what it stores.
| Scope | Why the app needs it |
|---|---|
read:jira-work | Read issues, statuses, priorities, fields and versions to render boards, timelines and reports |
write:jira-work | Apply transitions, field edits, labels, due dates, subtasks and comments — the actions your automation and SLA rules perform |
read:jira-user | Power the user picker for board administrators, team rosters and assignee filters |
read:project:jira | List projects when configuring a board |
read:board-scope:jira-software | Import existing Jira boards and read their column configuration |
read:board-scope.admin:jira-software | Read the backing filter of an imported board |
write:board-scope:jira-software | Backlog view: create and update sprints, move issues between sprint and backlog |
storage:app | Persist board configuration in Forge hosted storage |
3. Data the app STORES
Everything in this table lives in Forge hosted storage, inside your Atlassian installation, subject to your data residency configuration.
| Record | Contents | Personal data? | Retention |
|---|---|---|---|
| Board configuration | Board name, projects, JQL, columns, colours, card settings, quick filters, saved views, automation rules, issue templates, custom pages | Yes — creator account ID; board administrator account IDs and display names; saved-view assignee account IDs; "assign" automation actions store an account ID and display name; automation rule names and comment templates are administrator free text | Until the board is deleted |
| Retrospective content (stored inside board configuration) | Retrospective column items: free text, vote list, author name | Yes — and the most sensitive text the app holds. Free text written by team members, attributed by display name, with account IDs recorded as votes. Retrospective text is where colleagues write about colleagues. | Until the board is deleted |
| Team roster | Team name, member list, creator | Yes — member account IDs and display names; creator account ID. A people directory. | Until the team is deleted |
| Cross-board blocker records | For each cross-board dependency: blocked and blocker issue keys, verbatim Jira issue summary text, blocker status, board names | Treat as yes. Issue summaries routinely contain customer names, employee names and confidential project detail. | Recomputed daily; deleted when the board is deleted |
| Automation audit log | Per automation run: timestamp, rule ID, rule name (free text), trigger type, issue key, actions attempted and their results, duration | Treat as yes. Rule names are administrator free text and often contain a person's name. | Newest 100 entries per board; deleted when the board is deleted; clearable on demand |
| Issue status timestamps | Issue ID, issue key, status ID, timestamp the issue entered that status | No person is named. It is a per-work-item timeline. | Life of the installation — see §5 |
| Daily analytics snapshots | Board ID, date, the time the snapshot ran, and three integer issue counts | No. Aggregate counts only. | 365 days, then deleted by a daily job |
| SLA alert cooldown markers | A timestamp, used to avoid sending duplicate alerts within 24 hours | No in the value. The record's key can embed an administrator-authored rule name where a rule has no ID. | 48 hours, then deleted by a daily job |
| Active-board pointer | Which board a user last had open | Yes — the Atlassian account ID is part of the record's key. | Cleared when the board it points at is deleted |
Browser storage
One key, kanban:collapsedCols, in the browser's local storage. It records which board columns you collapsed. No personal data. It never leaves your device.
4. Data the app ACCESSES but does NOT store
Read from Jira, rendered in your browser, then discarded. Never written to app storage, never transmitted anywhere.
| Category | Notes |
|---|---|
| Issue summaries, descriptions, comments | Rendered live. Exception: summaries of cross-board blockers are stored — see §3. |
| Assignees, reporters, avatars, display names | Rendered live. Exception: stored when an administrator explicitly saves someone as a board admin, team member or saved-view filter. |
| Changelogs, worklogs, sprints, versions, issue links | Rendered live |
| Projects, statuses, priorities, field definitions | Rendered live |
| Attachments | Not read by the app |
| Boards, columns, filters, backlog and ranking | Read and written to Jira; nothing persisted in app storage |
5. Retention decisions worth explaining
Analytics snapshots: 365 days. The product surfaces at most 90 days of history. A year is generous headroom while still being a real, statable number rather than "indefinitely".
SLA cooldown markers: 48 hours. The marker's purpose expires after 24 hours. 48 gives margin for clock skew and delayed scheduled runs.
Issue status timestamps: not aged out. Each record holds the moment an issue entered its current status — the input to every SLA calculation. A long-lived issue legitimately has a months-old timestamp, so age-based deletion would silently corrupt your SLA reporting instead of reclaiming dead data. The record names no person.
Known minimisation gap, disclosed rather than hidden. The app writes a status-timestamp record for every issue on the Jira site that changes status, not only issues on a Kanban+ board. An installation with one board covering one project still accumulates one small record per site-wide issue. Narrowing it to board-relevant issues is a product change rather than a retention one — issues would carry no timing history until a board covering them existed — and we would rather describe the current behaviour plainly here than quietly alter what your SLA reports are built on. As it stands, each record is a few fields naming no person, and it is removed by the full purge in §6 and by uninstallation.
Board deletion cascades. Deleting a board now also deletes its audit log, its snapshots, its cross-board blocker records, and any user's pointer to it. Earlier versions deleted only the board record itself, orphaning the rest.
6. Deletion and uninstall
| Event | What happens |
|---|---|
| Delete a board | That board's configuration, audit log, snapshots, blocker records and active-board pointers are deleted |
| Delete a team | The team roster record is deleted |
| Clear the audit log | That board's audit entries are deleted |
| Full erasure without uninstalling | Available via an admin-gated purge function. No UI has shipped yet — email support@soverain.cz and we will guide your site administrator through it |
| Uninstall the app | Atlassian deletes the data. Forge hosted storage is retained 28 days after uninstallation, soft-deleted then disposed of per Atlassian's retention policy. Within 21 days you can ask Atlassian to relink a reinstallation to your previous data. |
| Delete the Atlassian site | All associated app data is deleted with the site |
Kanban+ implements no uninstall-time cleanup hook, deliberately. Atlassian already performs the deletion; the only available hook is documented as non-blocking and could not support a reliable promise; and wiping storage eagerly would destroy your 21-day relink window.
7. Data residency — in scope and out of scope
Runs on Atlassian requires apps to support the host product's data residency. Here is what that covers for Kanban+.
IN SCOPE — pinned to your Atlassian data residency location
- All Kanban+ records listed in §3, stored in Forge hosted storage.
- All Jira data the app reads, which never leaves your Atlassian environment.
Because the app holds no data outside Forge storage, every piece of customer data the app handles is in scope for data residency. There is no second copy anywhere.
OUT OF SCOPE — not covered by data residency pinning
Stated because Runs on Atlassian obliges us to be specific, and because these are the items an enterprise reviewer will ask about:
| Item | Why it is out of scope |
|---|---|
| Application logs | Diagnostic log lines are collected by the Atlassian logging platform, not by Forge hosted storage, and are not covered by data residency pinning. Retained 30 days by Atlassian. A site administrator can disable app log access. See §5.2 of the Privacy Policy. |
| Compute location for individual invocations | Data residency pins where data is stored, not where every unit of compute runs. Kanban+ executes wholly on Atlassian's platform; Soverain neither chooses nor is told the region an individual invocation runs in, so we make no residency promise about it. Atlassian's own data residency documentation is the authoritative statement. Either way, nothing is written outside Forge hosted storage. |
| Marketplace licence and transaction records | Held by Atlassian as seller of record and shared with Soverain as a partner. Commercial records about your organisation, not app data. See §5.1 of the Privacy Policy. |
| Support correspondence | If you email us, that email is in our mailbox, not in Forge storage. |
Not applicable
Kanban+ has no realm-migration obligations of its own: it stores nothing outside Forge hosted storage, so when Atlassian moves your site between regions the app's data moves with it. There is no Soverain-side migration step.
8. Diagon — desktop app
Diagon is a different shape of product from Kanban+. You install it on your own computer and it runs there. There is no Soverain server holding your diagrams, because no server is involved in making them.
Summary
| Soverain's role | Controller, and only for your licence. Your diagrams never reach us. |
| Where the app runs | Your computer. |
| External network access | One request the app makes on its own: a licence refresh to soverain.cz. The only other outbound request is fetching an image your own diagram names by URL. See below. |
| Sub-processors | Paddle (purchase and billing) and Microsoft Azure Communication Services (the email that delivers your key). Neither touches a diagram. |
| AI / model inference | Local. The model file ships inside the app and runs on your machine. What you type into it, and what it writes back, stay there. |
| Payment data | Never seen. Paddle is the seller of record. |
| Telemetry | None. No analytics, no usage counters, no crash reporting, no "app was opened" ping. |
Data the app STORES on your computer
| Record | Contents | Personal data? | Where | Retention |
|---|---|---|---|---|
| Your diagrams | The plain-text diagram source you write, and anything you export from it | Whatever you choose to put in them | Files you name, in folders you pick | Yours. Keep or delete them like any other file — we hold no copy and cannot read them |
| Licence key | The signed key itself: the email address the licence was bought under, its issue and expiry dates, and the Paddle transaction reference used for support lookups | Yes — the buyer email is inside the key | The app's own application-data folder (the standard Electron userData directory for your operating system) | Until you clear it or remove the app |
| Trial and licence state | When the 30-day trial began, and when the current key expires | No | Same folder | Same |
| Editor preferences | Diagram language, light or dark theme, auto-colour settings | No | Same folder | Same |
Nothing in that folder is transmitted anywhere except the licence key, and only as described next.
Data the app SENDS
Licence refresh — the signed key, and nothing else. While the app is online with an active subscription, it sends its current licence key to soverain.cz so a fresh one can be issued for the new period. The request carries the key and nothing more: no diagram, no filename, no file path, no machine or hardware identifier, no account. Our server verifies the key's signature, asks Paddle whether the subscription is still running, and hands back a replacement key. As with any web request, our server sees the connecting IP address and a timestamp in its ordinary logs. Everyday licence checks — is this key genuine, has it expired — need no network at all: they are done against a public key built into the app.
Icon URLs you write yourself. If one of your diagrams references an image by URL, Diagon fetches that image from the host you named so it can be drawn and included in exports. That request goes to that third party, not to us, and only because your diagram asked for it. A diagram with no icon URLs makes no requests at all.
Deletion
Delete a diagram file and it is gone — it was only ever your file. Removing the app's application-data folder clears the licence key, the trial and licence state, and the preferences; your diagrams are untouched, because they were never inside it. The purchase records held by Paddle and by us — the buyer email and transaction identifiers — sit outside the app entirely and are covered by the Privacy Policy. Write to privacy@soverain.cz about those.
Related: Privacy Policy · Data Processing Agreement · Security Statement