Software companies
Jira issues to exclude before a data license: security, HR and legal
By SourceX Editorial · Reviewed by Noah Loul ·
Short answer
Before a data license, exclude Jira issues that describe unfixed or recent security vulnerabilities, HR matters, legal disputes and privileged advice, plus any issue under an issue security level and any comment restricted to a group or role. Work by project, then labels and security levels, then text search, saving each rule as a JQL filter.
Key takeaways
- Exclude whole projects first: HR service desks, legal request queues, security and finance projects rarely hold licensable engineering history.
- Issues with any issue security level set should be excluded by default, since someone deliberately restricted who could see them.
- Restricted comments can sit inside otherwise ordinary issues, so comment visibility must be checked separately from the issue.
- In JQL, a not in clause skips issues where the field is empty, so inclusion filters need an explicit is EMPTY condition.
- Fixed, released and long-disclosed security bugs can sometimes be included after review; open or recent ones cannot.
Why does Jira need an exclusion pass?#
Jira needs an exclusion pass because it becomes the catch-all system in most software companies. Alongside bugs, stories and epics, it often holds security reports, HR service requests, legal reviews, access requests and procurement approvals, sometimes in the same instance and occasionally in the same project.
The engineering records are worth licensing: an issue linked to the commits that fixed it and the release that shipped it is a complete problem-to-solution record. The exclusion pass protects the people, legal positions and security details that sit beside that history, and it is far easier to do with filters than by reading issues one by one.
Exclusion checklist by category#
Each category below has a default and a set of signals that help find it, even when it sits outside the project you would expect. Project keys, labels and issue types differ in every instance, so translate the signals into your own names before running any filter.
| Category | Where it shows up | Default | Signals |
|---|---|---|---|
| Security vulnerabilities | Security projects, restricted bugs, penetration test findings, bug bounty reports | Exclude open and recent; review old, fixed ones | Security labels, vulnerability issue types, CVE identifiers, a security level set |
| HR and people | HR service desk, recruiting, onboarding and offboarding, access removal for leavers | Exclude | Employee names with leave, termination, investigation or salary |
| Legal and compliance | Legal requests, contract reviews, litigation holds, privacy requests from individuals | Exclude | Legal project keys, privilege markings, counsel as assignee |
| Credentials and access | Access requests, temporary passwords, key rotation tasks | Exclude | Access request issue types, secrets in descriptions |
| Finance and procurement | Purchase approvals, vendor onboarding, invoice disputes | Exclude | Finance project keys, vendor names with amounts |
| Customer escalations | Escalation projects, issues tied to named accounts and contractual commitments | Review and pseudonymize | Customer fields, account names in summaries |
| Incidents with data exposure | Incident projects and postmortem tasks | Review; exclude if personal data was exposed | Incident issue types, data exposure labels |
Work in three passes: projects, then labels and security levels, then text#
Three passes catch most sensitive issues with the least reading. Each pass is a JQL query whose results go on an exclusion list, and the queries themselves become part of the preparation record.
Build the final inclusion filter as the inverse of the exclusions. One JQL detail matters here: a clause such as labels not in a list does not return issues with no labels at all, so write labels is EMPTY OR labels not in, followed by your list. The same applies to components and custom fields.
Plan the export in batches as well. Atlassian supports exporting up to 10,000 work items at a time through the asynchronous CSV export in the Jira Cloud issue navigator and recommends splitting larger sets into JQL batches, for example by created date. Add a date range to the final inclusion filter and run it range by range, so every batch applies the same exclusions.
- Pass 1, projects: project in (HR, LEGAL, SEC, FIN, IT) removes whole projects; replace the keys with your own.
- Pass 2, security levels: level is not EMPTY finds every issue with an issue security level set.
- Pass 2, labels and types: labels in (security, vulnerability, pentest, legal, hr, confidential), plus issue types your team uses for vulnerabilities.
- Pass 3, text: text ~ "termination" OR text ~ "subpoena" OR text ~ "lawsuit" OR text ~ "salary", extended with your own terms; read the hits rather than excluding automatically.
- Final inclusion filter: project in (your engineering projects) AND level is EMPTY AND (labels is EMPTY OR labels not in (your excluded labels)).
What about restricted comments and hidden fields?#
Restricted comments are the most common gap, because Jira lets a comment be visible only to a group or project role while the issue itself stays open to everyone. A support lead may add contract details or a customer complaint as a restricted comment on an ordinary bug. Depending on the export method and the exporting account's permissions, those comments can either be missing or included without any marker, so check comment visibility explicitly and strip restricted comments by default.
Fields need the same attention. Service management projects add reporter email and organization fields, custom fields may hold customer names, and the change history keeps old values of any field someone edited to remove sensitive text. Export the current values of the fields you need, and leave the change history out unless it adds clear value.
Attachments on issues follow the same logic as help desk attachments. Screenshots, log files and customer exports attached to bugs are excluded by default, and only file types that explain a fault and can be cleaned, such as stack traces, are brought back after review.
Can fixed security bugs ever be included?#
Fixed security bugs can sometimes be included, because the story of how a vulnerability was found, fixed and tested has real value for models that help engineers write secure code. The test is whether including the issue could help anyone attack a current system or embarrass a customer.
Include a security issue only if every condition below holds; otherwise exclude it and record the reason.
| Condition | Why it matters |
|---|---|
| Fixed and released in every supported version | No running customer deployment is still exposed |
| Disclosed or old enough under your own disclosure policy | The details are no longer useful to an attacker |
| No exploit code or step-by-step reproduction beyond what the fix shows | Limits the package to how the problem was solved |
| No customer, researcher or employee identified | Protects people and relationships |
| Not tied to an incident with legal or regulatory follow-up | Avoids material connected to legal advice or notifications |
Illustrative: an e-commerce platform vendor filters Jira#
Illustrative: a fictional e-commerce platform software company runs Jira Cloud with Jira Service Management. Its instance holds engineering projects, an HR service desk, a legal request queue, a security project and an IT project. Engineering bugs that involve vulnerabilities carry a restricted security level.
The CTO's team excludes the HR, legal and security projects in pass one and every issue with a security level in pass two. The text pass finds offboarding tickets in the IT project that name departing employees, so the whole IT project is excluded. A comment visibility check finds restricted comments from support leads quoting customer contract terms, and they are stripped. The final inclusion filter is saved, and counsel reviews a sample of included issues before the CTO approves the scope.
How SourceX approaches Jira exclusions#
SourceX agrees which projects and record types are in scope during the Rights step of the SourceX five-step transaction, and the supplier's team applies the exclusion filters during Preparation, inside its own environment. Nothing is exported during the fit check, which needs only metadata such as project types and years of history.
The saved JQL filters, the categories excluded and the sample review results are recorded in the privacy record of the SourceX Evidence Packet, so the scope can be explained and reproduced later.
Frequently asked questions
Should we exclude the whole issue or just redact parts of it?
Exclude whole issues when the subject itself is sensitive, such as an HR case or a legal dispute. Redact parts when the subject is ordinary engineering work and only a detail is sensitive, such as a customer name or an IP address in a log excerpt. Partial redaction of a sensitive subject rarely leaves anything useful.
Do issues that mention employees by name need to be excluded?
No. Engineering issues name assignees, reporters and commenters as a matter of course, and those names are replaced with consistent pseudonyms during preparation. Exclusion is for issues that are about a person, such as performance, leave or access removal, rather than issues worked on by a person.
What about commit messages that reference excluded issues?
Commit messages and branch names often include issue keys and sometimes issue titles. The key alone reveals little once the issue is excluded, but a title such as a fix for a named customer's data leak does. Check commits linked to excluded issues and redact revealing titles.
Can a Jira admin see every issue for the export?
Not necessarily. Issue security levels and project permissions can hide issues even from administrators who lack browse permission for them. Confirm the exporting account's access before running filters, or excluded issues may be missed in the review and appear later in an export run by someone else.
Does sharing a privileged legal issue waive privilege?
It can create that risk, which is why legal issues are excluded by default rather than reviewed for inclusion. Whether privilege attaches to a particular ticket, and what disclosure would mean, is a question for counsel in your jurisdiction.
Sources
- Exporting up to 10,000 work items with the asynchronous Export CSV feature from the Jira Cloud Issue Navigator is supported, and Atlassian recommends splitting larger exports into JQL batches of fewer than 10,000 work items each. Source
Related resources
- InsightCan mechanical contractors license project and service data to AI?
- InsightConstruction software companies: what project data you can and cannot license
- QuestionCan SaaS data be licensed?
- QuestionDo I need customer consent to license support tickets?
- InsightData licensing rules for construction companies
- IndustryBPO & contact centers data
See if your company qualifies
A short company assessment. No data uploads are needed.