App Data Annex

Soverain s.r.o. Last updated: 6 September 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

AppPlatformHost productDistributionData location
Kanban+Atlassian Forge (Custom UI)Jira CloudAtlassian MarketplaceAtlassian-hosted Forge storage, inside the customer's installation
DiagonElectron desktop app (Windows, Linux; macOS in development)None — it runs on its ownDownload from soverain.czYour own computer. Files where you save them, plus the app's own application-data folder
OnTaskAtlassian ForgeJira CloudAtlassian Marketplace (listing pending approval)Atlassian-hosted Forge storage, inside the customer's installation

The apps are shaped differently enough that each is documented separately: sections 1–7 cover Kanban+, section 8 covers Diagon, section 9 covers OnTask. Each Soverain app is documented here rather than getting its own privacy policy.


1. Kanban+ — summary

Soverain's roleProcessor. The Atlassian customer is the controller.
Where the app runsAtlassian-hosted compute only. No Soverain servers.
External network accessNone. No remotes, no external permissions declared.
Sub-processorsAtlassian only.
AI / model inferenceNone. 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 dataNever 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.

ScopeWhy the app needs it
read:jira-workRead issues, statuses, priorities, fields and versions to render boards, timelines and reports
write:jira-workApply transitions, field edits, labels, due dates, subtasks and comments — the actions your automation and SLA rules perform
read:jira-userPower the user picker for board administrators, team rosters and assignee filters
read:project:jiraList projects when configuring a board
read:board-scope:jira-softwareImport existing Jira boards and read their column configuration
read:board-scope.admin:jira-softwareRead the backing filter of an imported board
write:board-scope:jira-softwareBacklog view: create and update sprints, move issues between sprint and backlog
storage:appPersist 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.

RecordContentsPersonal data?Retention
Board configurationBoard name, projects, JQL, columns, colours, card settings, quick filters, saved views, automation rules, issue templates, custom pagesYes — 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; the account ID of the administrator who last verified the board's permissions, with the time of that check; automation rule names and comment templates are administrator free textUntil the board is deleted
Retrospective content (stored inside board configuration)Retrospective column items: free text, vote list, author nameYes — 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 rosterTeam name, member list, creatorYes — member account IDs and display names; creator account ID. A people directory.Until the team is deleted
Cross-board blocker recordsFor each cross-board dependency: blocked and blocker issue keys, verbatim Jira issue summary text, blocker status, board namesTreat as yes. Issue summaries routinely contain customer names, employee names and confidential project detail.Recomputed daily; deleted when the board is deleted
Automation audit logPer automation run: timestamp, rule ID, rule name (free text), trigger type, issue key, actions attempted and their results, durationTreat 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 timestampsIssue ID, issue key, status ID, timestamp the issue entered that statusNo person is named. It is a per-work-item timeline.Life of the installation — see §5
Daily analytics snapshotsBoard ID, date, the time the snapshot ran, and three integer issue countsNo. Aggregate counts only.365 days, then deleted by a daily job
SLA alert cooldown markersA timestamp, used to avoid sending duplicate alerts within 24 hoursNo 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 pointerWhich board a user last had openYes — the Atlassian account ID is part of the record's key.Cleared when the board it points at is deleted
Personal-data reporting stateWhich account IDs were reported to Atlassian and when; pending erase/refresh actionsYes — account IDsUntil acted on; removed by the full purge

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.

CategoryNotes
Issue summaries, descriptions, commentsRendered live. Exception: summaries of cross-board blockers are stored — see §3.
Assignees, reporters, avatars, display namesRendered live. Exception: stored when an administrator explicitly saves someone as a board admin, team member or saved-view filter.
Changelogs, worklogs, sprints, versions, issue linksRendered live
Projects, statuses, priorities, field definitionsRendered live
AttachmentsNot read by the app
Boards, columns, filters, backlog and rankingRead 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

EventWhat happens
Delete a boardThat board's configuration, audit log, snapshots, blocker records and active-board pointers are deleted
Delete a teamThe team roster record is deleted
Clear the audit logThat board's audit entries are deleted
Full erasure without uninstallingAvailable 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 appAtlassian 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 siteAll 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.


Closed accounts. A weekly job reports every stored account ID to Atlassian's Personal Data Reporting API (manifest scope report:personal-data); a daily job then erases closed accounts from board configuration, team rosters and the active-board pointer, and refreshes changed display names from Jira. Its state lives under the privacy: key prefix and is included in the full purge. Neither job is licence-gated: a lapsed subscription does not pause erasure.

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:

ItemWhy it is out of scope
Application logsDiagnostic 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.3 of the Privacy Policy.
Compute location for individual invocationsData 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 recordsHeld 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 correspondenceIf 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 roleController, and only for your licence. Your diagrams never reach us.
Where the app runsYour computer.
External network accessOne 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-processorsFastSpring (purchase and billing) and Microsoft Azure Communication Services (the email that delivers your key). Neither touches a diagram.
AI / model inferenceLocal. 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 dataNever seen. FastSpring is the seller of record.
TelemetryNone. No analytics, no usage counters, no crash reporting, no "app was opened" ping.

Data the app STORES on your computer

RecordContentsPersonal data?WhereRetention
Your diagramsThe plain-text diagram source you write, and anything you export from itWhatever you choose to put in themFiles you name, in folders you pickYours. Keep or delete them like any other file — we hold no copy and cannot read them
Licence keyThe signed key itself: the email address the licence was bought under, its issue and expiry dates, and the FastSpring order reference used for support lookupsYes — the buyer email is inside the keyThe 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 stateWhen the 30-day trial began, and when the current key expiresNoSame folderSame
Editor preferencesDiagram language, light or dark theme, auto-colour settingsNoSame folderSame

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 FastSpring 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 FastSpring and by us — the buyer email and order identifiers — sit outside the app entirely and are covered by the Privacy Policy. Write to privacy@soverain.cz about those.


9. OnTask — personal work clock

OnTask is a personal work clock for Jira Cloud. A global page (Apps → OnTask) lists your own assigned issues, ranked by a deterministic score; you start a clock on one; stopping it writes a native Jira worklog authored by you. An OnTask panel also appears on every issue view. There is no team view, no manager report and no aggregate: the app never shows one person's OnTask data to another person.

It is a Forge app, like Kanban+, and shares the same platform boundary: no Soverain servers, Atlassian as the only sub-processor, all data in Forge hosted storage inside your installation. Where sections 1–7 already give the answer, this section points at them instead of repeating them. Where OnTask differs — no display names stored, no write to Jira except the one you confirm, nothing generated — it says so.

Summary

Soverain's roleProcessor. The Atlassian customer is the controller.
Where the app runsAtlassian-hosted compute only. No Soverain servers.
External network accessNone. No remotes, no external permissions, no content delivery network; even the typefaces are bundled with the app. It calls nothing but Atlassian.
Sub-processorsAtlassian only.
Generated contentNone. The ranking is a deterministic score. Everything the app writes into Jira is your own words verbatim, plus a duration and an issue key.
Payment dataNever seen. Atlassian is the seller of record.
TelemetryNone. No analytics, no usage counters. Log lines carry counts and durations only — never a storage key, a stored value, an account ID or a raw error. The one addition is a line stating the licence state, which contains no personal data.
Acting identityEvery Jira call made on your behalf is made as you (asUser), with your own permissions. The app sees only what you can see and can write only what you could write yourself.

Permissions the app requests

OnTask requests five scopes. As with Kanban+, they define what the app can read — a wider boundary than what it stores.

ScopeWhy the app needs it
read:jira-workRead your assigned issues and their fields to build the ranked list; read issue comments to spot mentions of you that are still unanswered; read existing worklogs; check whether you may log work on an issue
write:jira-workCreate the worklog you confirm, and the optional issue comment. Used only from the stop screen, after you press Log it — never in the background
read:jira-userRead your own profile (your timezone sets the worklog start time), and check whether an account still exists, which drives automatic erasure
storage:appPersist the running clock, session history and preferences in Forge hosted storage
report:personal-dataReport stored account IDs to Atlassian's Personal Data Reporting API. Required because account IDs are stored

Data the app STORES

Everything in this table lives in Forge hosted storage, inside your Atlassian installation, subject to your data residency configuration.

RecordContentsPersonal data?Retention
Running clockIssue key and summary, start time, paused totalYes. It records what you are working on right now. The issue summary is verbatim Jira text, which routinely names customers and colleagues.Until you stop or discard the clock
Session historyIssue key, duration, the summary you typed when you stopped the clockYes — and the most sensitive text the app holds. A per-person, timestamped record of what you worked on, in your own words.12 months; a month holds at most 400 entries
Submission recordYour account ID, issue key, duration, and the ID of the worklog that was createdYes — account ID30 days — see below
Unsent draftA summary you started typing and have not submittedYes — your own free text7 days
User preferencesComment default, daily-total threshold, six ranking slidersYes — they are held against your account. The values themselves are settings and name no one.Until erased
Site settingWhether issue comments are allowed anywhere on the siteNo. One switch for the whole site, set by a site administrator.Until erased
Personal-data reporting stateWhen each stored account ID was last reported to Atlassian; which accounts are queued for erasureYes — account IDsUntil erased

No display names, and no other profile data, are ever persisted. Every name OnTask shows is looked up from Jira per response and discarded. This is a real difference from Kanban+ (§3), which does store display names.

Data the app ACCESSES but does NOT store

Read from Jira as you, rendered in your browser, then discarded. Never written to app storage, never transmitted anywhere.

CategoryNotes
Your assigned issues and their fieldsRendered live and ranked in the response. Exception: the key and summary of the issue you have a clock on are stored while the clock runs — see above.
Issue commentsRead only to detect mentions of you that you have not answered. Nothing from a comment is stored
Existing worklogsRead to reconcile against Jira before a worklog is written. Nothing from them is stored
Your profileYour timezone, read when a worklog start time is computed; whether an account still exists, read by the daily retention job. Nothing from a profile is stored
Display namesLooked up per response, shown, discarded. Never persisted
Other people's OnTask dataNever read to show to you. There is no team, manager or aggregate view

Retention decisions worth explaining

Session history: 12 months, at most 400 entries a month. The history is what the Today list and the daily-total check are built from. Twelve months is a real, statable number rather than "indefinitely"; the cap of 400 entries a month bounds how much any one account can accumulate. The worklogs themselves live in Jira and are unaffected by the history expiring.

Submission record: 30 days. This record exists to make "you confirmed once" mean "exactly one worklog exists". It is written before the worklog call is made; if the outcome of that call is ever unclear, the app reconciles against the record and against the small ontask property carried by the worklog itself, rather than retrying blind. Thirty days is far longer than any reconciliation needs, and after that the record has no job left.

Unsent draft: 7 days. A half-written summary is kept for a week so that an interruption does not lose it. After a week it is stale rather than useful, and it goes.

Running clock: not aged out. It is deleted when you stop or discard it, not on a timer.

Retention is enforced by a daily job. The job can read Jira — to ask whether an account still exists — but it is structurally unable to write to Jira. No background process in OnTask can.

Deletion and uninstall

EventWhat happens
Delete my OnTask data (Settings & privacy)Everything the app holds about you is deleted. Any user, their own data, no administrator needed
Delete everyone's (Settings & privacy)Everything the app holds, for every account on the site, is deleted. Site administrators only; the check is made server-side and fails closed
A closed accountErased automatically — see below
Uninstall the appAtlassian deletes the data, exactly as for Kanban+ in §6: retained 28 days after uninstallation, soft-deleted then disposed of per Atlassian's retention policy; within 21 days a reinstallation can be relinked to the previous data
Delete the Atlassian siteAll associated app data is deleted with the site

None of these touches Jira. The worklogs and comments OnTask created are ordinary Jira data authored by you; they stay in Jira after any OnTask erasure and after uninstallation, and are removed, if at all, the way any other worklog or comment is removed in Jira. Neither delete button is disabled when a subscription lapses.

Like Kanban+, OnTask implements no uninstall-time cleanup hook, deliberately, for the reasons given in §6. Anyone who wants the data gone before uninstalling uses the delete buttons first.

Closed accounts. A weekly job reports every stored account ID to Atlassian's Personal Data Reporting API (manifest scope report:personal-data); a daily job then erases the accounts Atlassian reports as closed. Failures stay queued and are retried; accounts whose data is already gone are dropped from the bookkeeping. Atlassian's "updated" signal — a profile changed — is deliberately not acted on, because OnTask holds no copy of any profile to refresh. As a backstop, the daily job also makes a bounded per-account check of whether the account still exists. Neither job is licence-gated: a lapsed subscription does not pause erasure.

Data residency — in scope and out of scope

Section 7 applies to OnTask unchanged.

IN SCOPE — pinned to your Atlassian data residency location: every OnTask record listed above, and all Jira data the app reads. The app holds nothing outside Forge hosted storage, so every piece of customer data OnTask handles is in scope. There is no second copy anywhere.

OUT OF SCOPE: no app data. The four items in the §7 table — application logs, compute location for individual invocations, Marketplace licence and transaction records, support correspondence — sit outside pinning for OnTask for exactly the reasons given there. On logs specifically: OnTask's log lines carry counts and durations only, so what Atlassian's logging platform holds about an OnTask installation names no person.

Not applicable: OnTask has no realm-migration obligations of its own. When Atlassian moves your site between regions, its data moves with it; there is no Soverain-side step.


Related: Privacy Policy · Data Processing Agreement · Security Statement