What PrivacyOps is
Link to section “What PrivacyOps is”PrivacyOps in 30 seconds
Link to section “PrivacyOps in 30 seconds”PrivacyOps is the day-to-day operation of a privacy programme: keeping an accurate record of which personal data the organisation processes, why, where and for how long; answering people who ask to see, correct, delete or stop the use of their data, within legal deadlines; assessing risky processing before it starts; and deciding, with evidence, whether a breach must be reported and to whom.
The unit of work is a person, not a system or dataset. One customer’s erasure request becomes tasks in a CRM, a billing system, a warehouse, two processors and a backup store, and closes only when every task has evidence. Features are assessed, and breaches judged, by their effect on people.
Who this page is for. Beginners: start with the glossary and Lab 1. Engineers who own systems: the workflow and reference implementation. Privacy leads and data protection officers (DPOs): the operating model, metrics and decision framework. Nothing here is legal advice; the dated legal facts tell you what to ask counsel.
At a glance
Link to section “At a glance”| Question | Short answer |
|---|---|
| Goal | Rights honoured on time, risky processing assessed before launch, breach decisions defensible, personal data known and minimised |
| In scope | Records of processing, lawful bases, rights requests (DSARs), DPIAs, consent policy, retention, vendor and transfer reviews, breach decisions, privacy-by-design reviews |
| Handed off | Technical controls, incident handling, audit evidence, consent plumbing, legal advice: see the neighbour table |
| Prerequisites | None; spreadsheet and basic scripting skills help |
| Key outputs | Record of processing (RoPA), evidenced cases, DPIAs, retention schedule, vendor and breach registers, scorecard |
| Term status | Vendor-specific label for an established practice (below) |
What PrivacyOps is not: boundaries and naming
Link to section “What PrivacyOps is not: boundaries and naming”The work is mainstream under other names: the IAPP’s CIPM body of knowledge (v4.2.0) calls it the “Privacy Program Operational
Life Cycle”;[6] NIST has a Privacy Framework;[7] ISO/IEC 27701 specifies a privacy management system;[8] job
adverts often say “privacy operations” (our observation; postings expire). So the label is vendor-specific; the page teaches
the practice under its standard names.
PrivacyOps is not a product (a platform cannot decide a lawful basis or an exemption), not data security (privacy also asks whether you should hold the data at all), not audit evidence and not cookie banners: the neighbour table says who owns those.
The problem it solves
Link to section “The problem it solves”The “before” column is a composite of common failure patterns, not a report about a company.
| Area | Without a working operation | With one |
|---|---|---|
| Inventory | Nobody can list where customer data lives | A record of processing tied to named systems and owners |
| Requests | Forwarded emails; deadlines found too late | A case per request with a computed due date and tasks per system |
| Erasure | Deleted in the CRM, still in the warehouse, the email tool and backups | Fan-out to every system and processor, with confirmations |
| Launches | Privacy hears about a feature after release | Screening at design time; DPIA where the criteria say so |
| Breaches | Debate about whether to notify while the 72 hours run | A decision record with the awareness time and the reasoning |
Failures are enforced. In 2025 California’s privacy agency fined Honda $632,500, partly for demanding at least eight data fields before processing opt-outs that need no verification;[9] in 2022 Sephora paid $1.2 million to settle the Attorney General’s allegations, including that it ignored Global Privacy Control signals.[10] Manual work costs too: Gartner put the average cost of handling a request, often manually, at roughly US$1,400, and its 2019 survey found two-thirds of respondents took two weeks or more (reported 2020; old and second-hand: an order of magnitude only).[11]
Where it comes from and where it sits
Link to section “Where it comes from and where it sits”Origins and evolution
Link to section “Origins and evolution”The obligations predate the label. The GDPR (adopted 2016, applied from 2018) made records of processing, one-month answers to rights requests, DPIAs, 72-hour breach notification and data protection by design legal duties.[12] California’s CCPA, amended in 2020 by Proposition 24, the California Privacy Rights Act (CPRA),[13] added an enforcement agency, now called “CalPrivacy”.[14] Volume and deadlines turned privacy into an operation, and vendors named the shift.[1]
Recent milestones:
- 14 October 2025: ISO/IEC 27701 became a stand-alone management system standard.[8][15]
- 14 November 2025: India notified its Digital Personal Data Protection (DPDP) Rules; most duties start 18 months later, in May 2027 (clocks).[16][17]
- 1 January 2026: California’s updated CCPA regulations added risk assessments and automated-decision rules.[18]
- 5 February 2026: most UK Data (Use and Access) Act 2025 changes took effect, including statutory request time limits and a new lawful basis.[19][20][21]
- 19 June 2026: UK controllers must handle data protection complaints and acknowledge each within 30 days.[22]
- Pending: the EU “Digital Omnibus” proposal, still in committee on 18 October 2026 (advanced topics).[23]
Glossary and mental model
Link to section “Glossary and mental model”| Term | Meaning | Example |
|---|---|---|
| Personal data | Information about an identified or identifiable person (GDPR); laws define it differently | Email address, device ID, purchase history |
| Controller / processor | Decides why and how data is processed / processes on a controller’s behalf (CCPA: business / service provider) | A retailer / its email delivery vendor |
| RoPA | Record of processing activities: the inventory required by GDPR Art. 30 | “Support tickets: purpose, data, recipients, retention” |
| Principles | GDPR Art. 5: lawfulness, fairness and transparency; purpose limitation; data minimisation; accuracy; storage limitation; integrity and confidentiality; and accountability, being able to show compliance (5(2))[12] | Deleting idle trial accounts after 90 days applies storage limitation |
| Lawful basis | One of six GDPR grounds: consent, contract, legal obligation, vital interests, public task, legitimate interests;[12] the UK added a seventh, recognised legitimate interest, in 2026.[21] How to choose: playbook | Invoicing: contract and legal obligation |
| DSAR / DSR | Data subject access request / any rights request (erasure, correction, objection, portability) | “Send me everything you hold about me” |
| Verification | Checking that the requester is the person (or an authorised agent) | A one-time code to the account’s phone |
| DPIA | Data protection impact assessment, required before high-risk processing (Art. 35) | Assessing staff monitoring |
| Breach register | The record of every personal-data breach, notified or not (Art. 33(5)) | Misdirected email logged with the risk decision |
| Opt-out preference signal | A browser or device signal meaning “do not sell or share”, such as Global Privacy Control | HTTP header Sec-GPC: 1[24] |
Who’s who. EDPB: EU regulators’ board; ICO: UK regulator (legally the Information Commission since 30 September 2026);[25] CPPA or CalPrivacy: California’s agency; CJEU: EU Court of Justice; WP29: the EDPB’s predecessor, author of WP248; the Board: India’s Data Protection Board.
Abbreviations. DPO: data protection officer; SCC: standard contractual clauses; TIA: transfer impact assessment; LIA: legitimate-interest assessment; IDTA: the UK’s International Data Transfer Agreement; ADMT: automated decision-making technology; IAPP: International Association of Privacy Professionals, which awards the CIPM (Certified Information Privacy Manager); GRC: governance, risk and compliance.
Mental model: three registers and one rule. A privacy operation keeps three registers current: an inventory (what data, why, where, how long), cases (each person’s requests with clock and evidence) and decisions (lawful bases and LIAs, DPIAs, transfer and vendor assessments, breach decisions). The rule: no case closes and no decision is final without evidence someone else can check.
How PrivacyOps relates to other Ops
Link to section “How PrivacyOps relates to other Ops”Diagram source (Mermaid)
flowchart TB L["LegalOps"] -->|advice, contract clauses| P R["RiskOps"] -->|risk appetite, acceptance| P S["ResponseOps"] -->|breach facts and times| P M["MarTechOps"] <-->|consent policy out, test results back| P P["PrivacyOps: inventory, rights cases, DPIAs, breach decisions"] P -->|what must be minimised or masked| D["DataSecOps"] P -->|records and decisions as evidence| C["ComplianceOps"] P -->|erasure log, beyond use| B["BackupOps"] P -->|requests touching HR records| H["PeopleOps"] classDef core fill:#e8f3f2,stroke:#16756f,color:#122029 classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029 class P core class L,R,S,M,D,C,B,H neutral
Text equivalent: PrivacyOps sits in the middle. LegalOps sends it advice and contract clauses, RiskOps risk appetite and acceptance, and ResponseOps breach facts and times. With MarTechOps the exchange runs both ways: PrivacyOps sends consent policy and the GPC rule and gets consent records and test results back. PrivacyOps tells DataSecOps what to minimise or mask, gives ComplianceOps records as evidence, gives BackupOps an erasure log, and asks PeopleOps for HR records.
| Neighbour | Shared scope | Neighbour’s focus | Handoff |
|---|---|---|---|
| DataSecOps | Masking, minimisation, access | Technical controls on datasets | PrivacyOps decides that a field must be minimised; DataSecOps decides how and proves it |
| ComplianceOps | Privacy law as obligations | Control evidence and audits | PrivacyOps keeps records and decisions; ComplianceOps keeps them audit-ready |
| ResponseOps | Breaches | Containment, forensics, the multi-regime clock map | Responders supply timestamped facts; PrivacyOps assesses risk to people and drafts notices |
| LegalOps | Contracts, advice | Running the legal function | Counsel signs off exemptions and novel bases; PrivacyOps runs the process |
| MarTechOps | Consent | Consent platforms, tags, signals | PrivacyOps sets consent policy; MarTechOps implements and tests it |
| RiskOps | Risk registers | Appetite and acceptance | High residual DPIA risks go to the risk owner |
| PeopleOps · EndpointOps | Employee data, device monitoring | HR records; what device tools can see | PrivacyOps owns notices, DPIAs and employee requests |
| BackupOps | Erasure | Immutable copies and restores | Erasure log re-applied after restores |
Principles and operating model
Link to section “Principles and operating model”Charter and principles
Link to section “Charter and principles”Principles (proposals):
- The person is the unit of work: cases, not tickets per system.
- Inventory before automation: a connector cannot reach a system nobody listed; the record is a legal duty (Art. 30).[12]
- Clocks are designed in: a due date computed on receipt, an alert at half-time.
- Proportionate verification: reuse existing authentication; the EDPB calls an ID copy disproportionate for an authenticated requester and inappropriate unless necessary, suitable and lawful nationally.[26]
- Minimise your own data: case files are a new store of personal data.
- Evidence or it did not happen: controllers must “be able to demonstrate compliance” (Art. 5(2)).[12]
- Design-time gate: Art. 25 applies “at the time of the determination of the means”.[12]
Fundamentals and building blocks
Link to section “Fundamentals and building blocks”| Building block | What it holds | Used by |
|---|---|---|
| Record of processing | Activities, purposes, lawful bases, data, recipients, transfers, retention | Requests, DPIAs, regulators |
| System register | Systems and processors with owner and export/delete path | Request orchestration |
| Rights cases | Identity, scope, clock, tasks, evidence, response | Metrics, audits, complaints |
| Assessments | DPIAs, legitimate-interest, transfer and vendor assessments | Launch gates, risk owners |
| Consent and preference store | What each person agreed to or opted out of, when and how | Marketing and analytics systems |
| Retention schedule | Periods, triggers, disposal methods, legal holds | Deletion jobs, erasures |
| Breach register | Every breach with facts, risk decision and notices | Regulators, lessons learned |
Roles, ownership and RACI
Link to section “Roles, ownership and RACI”R = responsible, A = accountable, C = consulted, I = informed. A proposal: adapt names to your organisation.
| Activity | Privacy lead | Privacy ops analyst | System owner | Legal | Security |
|---|---|---|---|---|---|
| Maintain the record of processing | A | R | R (own systems) | C | I |
| Lawful basis, LIA and notice for a purpose | A | R | C (describes the purpose) | C (novel bases) | — |
| Intake and verify a rights request | A | R | — | C (agents, disputes) | C (fraud signs) |
| Find, export or delete data | A | R (orchestrate) | R (execute) | — | — |
| Apply exemptions and redactions | A | R | C | R (sign-off) | — |
| DPIA for a new feature | A | R | R (describes processing) | C | C |
| Breach risk decision and notices | A | R | C | R | R (facts) |
| Vendor and transfer assessment | A | R | C | R (contract) | R (security review) |
Customer support is the front door: responsible for logging requests made in any wording, informed of breach notices.
A DPO (mandatory in some cases, Art. 37) advises and monitors, takes no instructions on those tasks and holds no conflicting role (Art. 38(3), 38(6)),[12] so where one exists, keep the DPO consulted, not accountable, on these decisions.
Lifecycle: Day 0, Day 1, Day 2
Link to section “Lifecycle: Day 0, Day 1, Day 2”- Day 0 (build): inventory, lawful bases and notices (playbook), retention schedule, runbooks per request type, intake and a case tracker.
- Day 1 (launch): open the intake channels; train support to recognise requests in any wording; run the first cases end to end with system owners watching.
- Day 2 (operate): cases to the clock; change screening; yearly record review; erasure and signal tests; breach drills with ResponseOps; monthly metrics.
Operating model and governance
Link to section “Operating model and governance”| Cadence | Forum | Inputs | Decisions |
|---|---|---|---|
| Daily | Case stand-up (15 min) | Cases past half their clock, stuck tasks | Escalate to system owners; extend with reasons |
| Weekly | Change intake triage | New systems, vendors, features | Screen out, light review, or full DPIA |
| Monthly | Privacy operations review | Scorecard, complaints, regulator news | Fix the top two causes of late cases |
| Quarterly | Privacy steering (DPO, legal, security, product, data) | DPIA residual risks, transfer changes | Accept, mitigate or stop; budget |
| Yearly | Record of processing review | Owner attestations, discovery scans | Retire or correct entries |
Escalation: case owner → privacy lead → DPO or general counsel. High residual DPIA risks go to the accountable executive through RiskOps and, under the GDPR, to prior consultation with the supervisory authority (Art. 36).[12]
Architecture and workflow
Link to section “Architecture and workflow”Reference architecture
Link to section “Reference architecture”Every box can start as a spreadsheet or a shared mailbox.
Diagram source (Mermaid)
flowchart TB I["Intake: form, email, phone, agents, signals"] --> C["Case management: clock, identity, scope"] C --> O["Orchestration: one task per system and processor"] O --> S["Systems and processors: find, export, delete, suppress"] S --> E["Evidence store: actions, approvals, response"] E --> R["Response to the person"] E --> K["Metrics and audit"] N["Change intake: systems, vendors, features"] --> A["Assessments: DPIA, transfer, vendor"] A --> V["Inventory and record of processing"] D["Discovery and classification scans"] --> V V --> O P["Consent and preference store"] --> S classDef core fill:#e8f3f2,stroke:#16756f,color:#122029 classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029 class C,O,V core class I,S,E,R,K,N,A,D,P neutral
Text equivalent: Requests from any intake channel become cases with a clock, an identity check and a scope. Orchestration creates one task per system and processor, which find, export, delete or suppress the data; results go to an evidence store that produces the response and feeds metrics and audit. Change intake sends new systems, vendors and features to assessments, which update the inventory; discovery scans update it too. Orchestration uses the inventory to choose systems, and the consent store tells systems what each person allowed.
Trade-offs: a ticketing tool can hold cases if it restricts access and computes due dates; connectors fail silently when a schema changes, so test them monthly with a synthetic person; scanners find unlisted data but produce false positives and cannot judge purpose. The evidence store, holding exports and identity data, is a trust boundary: restrict, encrypt and expire it.
End-to-end workflow: one rights request
Link to section “End-to-end workflow: one rights request”Diagram source (Mermaid)
%%{init: {"flowchart": {"rankSpacing": 26, "nodeSpacing": 24, "padding": 8}}}%%
flowchart TB
A["Request received: clock starts"] --> O{"Opt-out or marketing objection?"}
O -->|yes| P["Act without verifying identity; confirm and log"]
O -->|no| B{"Identity and scope clear?"}
B -->|no| C["Ask for proportionate ID or a clarification"]
C --> B
B -->|yes| F{"Manifestly unfounded or excessive?"}
F -->|yes| G["Refuse or charge: reasons and complaint rights"]
F -->|no| X{"Complex, or a temporary surge?"}
X -->|yes| M["Extend: tell the person why within the first month"]
X -->|no| H["Find the person in every system and processor"]
M --> H
H --> J["Redact others' data; withhold under exemptions; record why"]
J --> K["Act: export, correct, delete or stop"]
K --> N["Respond securely; close with evidence"]
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
class O,B,F,X decision
class G,M risk
Text equivalent: The clock starts on receipt. Opt-outs and objections to direct marketing are acted on without identity verification, then confirmed and logged. For other requests the team asks for proportionate identity information or a clarification until identity is reasonably certain and the scope is clear. A manifestly unfounded or excessive request may be refused or charged for, with reasons. The extension is decided next: for a complex request or a temporary surge, the team extends and tells the person why within the first month. It then finds the person in every system and processor, redacts other people’s data and withholds what an exemption covers, recording why, then acts, responds securely and closes with evidence.
Happy path (illustrative): a logged-in customer asks for a copy; the login is the identity check; eleven systems return exports; another customer’s name is redacted; the export lands in the account on day 9. Exception paths behind most late cases: identity loops, silent system owners, vague requests, requests hidden in complaints, and erasures that hit legal holds.
Case law shapes the export: the first copy is free whatever the person’s motive (CJEU, C-307/22),[27] and a “copy” is a faithful and intelligible reproduction of all the data, including extracts or whole documents where essential (C-487/21).[28] It must not adversely affect others (Art. 15(4)), so redaction is a step, not an afterthought.[12] Decide extensions early: Art. 12(3) requires telling the person, with reasons, within the first month;[12] effort or routine volume alone does not justify one, a temporary surge may (EDPB).[26]
The clocks behind the workflow
Link to section “The clocks behind the workflow”Rights-request deadlines as of October 2026; not legal advice and not complete (other US states, sector laws and contracts add more). Breach clocks are mapped on ResponseOps.
| Regime | Requests | Answer within | Extension | Does identity checking pause the clock? |
|---|---|---|---|---|
| EU GDPR[12] | Arts. 15–22 (access, erasure, correction, objection…) | One month of receipt | Up to two more months, announced in the first month | EDPB: suspended while awaiting identity information or scope clarification[26] |
| UK GDPR, Art. 12A since 5 February 2026[29][20] | Subject access | One month | Up to two more months | Starts when requested ID arrives; pauses for clarification |
| UK complaints to the controller, since 19 June 2026[22] | Any data protection complaint | Acknowledge within 30 days; then act without undue delay | — | — |
| California CCPA[18] | Know, delete, correct (ADMT access and appeal from 2027) | Confirm in 10 business days; answer in 45 calendar days | 45 more days with notice | No: 45 days “regardless of time required to verify the request” |
| California CCPA[18] | Opt-out of sale or sharing | As soon as feasible, ≤ 15 business days | None | Must not require verification |
| India DPDP Rules 2025, from about May 2027[17] | Access, correction, erasure, grievances | 90 days (government summary); Rule 14(3): a published period of at most 90 days[16][30] | Not stated | Not stated |
| US HIPAA[31] | Health record access | 30 days | One 30-day extension with reasons | See HealthOps |
The EDPB counts GDPR months using Regulation 1182/71: a request received on 5 March is due by 5 April, and a deadline falling on a weekend or public holiday moves to the next working day.[26][32] Lab 2 computes these dates.
India, as of 17 October 2026: Rules 3 and 5–16 (notices, security, breaches, children, rights) apply 18 months after Gazette publication, about mid-May 2027; Consent Manager registration (Rule 4) about mid-November 2026.[17] We found no notified version of a January 2026 proposal to cut 18 months to 12, which would bring most duties forward to November 2026; re-check the Gazette in November 2026.[33]
Practices, frameworks and tools
Link to section “Practices, frameworks and tools”Core practices and playbooks
Link to section “Core practices and playbooks”Owners are in the RACI; routine checks are in the checklists.
Playbook: lawful basis, consent records and notices
Link to section “Playbook: lawful basis, consent records and notices”- Choose before processing. Record a basis for each purpose in the record of processing before the data is used; a new purpose needs its own.[21]
- Legitimate interests: three tests, written down. Purpose (a legitimate, specific interest?), necessity (does the processing achieve it; is there a less intrusive way?) and balancing (do people’s interests override yours, starting with what they reasonably expect?). Record the outcome as an LIA before you start (template); an opt-out offered as a safeguard is not consent.[34] The EDPB’s draft guidelines set the same three cumulative conditions.[35] UK only: recognised legitimate interest (Art. 6(1)(ea)) covers five pre-approved conditions, such as preventing crime or safeguarding; it needs necessity but no balancing test.[36]
- Consent: keep the proof. The controller must “be able to demonstrate” consent (Art. 7(1)).[12] Record who, when, what they were told (form and notice versions), how, and any withdrawal (consent record).[37] Children: for information society services offered directly to a child on the basis of consent, a parent consents below 16 (member states may set 13–15), with reasonable efforts to verify (Art. 8); India requires verifiable parental consent before processing any child’s data (Rule 10, from May 2027).[12][38]
- Notices. Inform people when you collect their data, or at the latest within one month if it came from elsewhere (Arts. 13, 14(3)); again before any new purpose (Arts. 13(3), 14(4)); and name any legitimate interest (Art. 13(1)(d)).[12]
- Private by default. Process only the data each purpose needs, and do not make it accessible to “an indefinite number of natural persons” without the person’s intervention (Art. 25(2)).[12]
Playbook: erasure that reaches everywhere
Link to section “Playbook: erasure that reaches everywhere”- Verify identity; check exceptions such as legal obligations and legal claims (Art. 17(3)(b), (e)) and legal holds.[12]
- Create one task per system and processor in the record. Processors must assist (Art. 28(3)(e)); other recipients are told unless impossible or disproportionate (Art. 19).[12] Data kept under an exception is restricted to that purpose.
- Backups: “The key issue is to put the backup data ‘beyond use’, even if it cannot be immediately overwritten”, and the person must be told what happens to backups (ICO).[39] Re-apply an erasure log after any restore (an Atlas and BackupOps recommendation, not regulator text).
- If the person also objected to marketing, a minimal suppression entry stops re-import; agree the design with counsel.
- Close only when every task has evidence; tell the person what was erased, what remains and why.
Playbook: retention and minimisation
Link to section “Playbook: retention and minimisation”- Give every record category a period (or criteria), a trigger (account closed, last activity, contract end) and its reason. Storage limitation makes this a duty (Art. 5(1)(e)); the record and notices state it (Arts. 30(1)(f), 13(2)(a); California §7012(e)(4)).[12][18]
- Run each period as a scheduled deletion or anonymisation job owned by the system owner; a legal hold suspends it for named people or matters and is reviewed for release.
- Keep evidence: each run logs what it deleted and any errors; a failed run is chased like a late case.
India, from May 2027: erase once the purpose is deemed served (for listed classes, after a period set in the rules), warn the person 48 hours before, and keep processing logs for at least a year (Rule 8, unofficial text).[40]
Playbook: opt-outs and preference signals
Link to section “Playbook: opt-outs and preference signals”California requires online businesses that sell or share personal information to accept an opt-out preference signal plus
another method; a cookie banner “is not by itself an acceptable method for submitting requests to opt-out of sale/sharing”.
Opt-outs need no verification (clocks).[18] The usual signal is Global
Privacy Control (Sec-GPC: 1), a W3C Working Draft (latest dated 24 September 2026).[24] PrivacyOps writes the rule (“GPC equals
opt-out for this browser and any known profile”); MarTechOps wires the tags; both test monthly. In the EU, device
storage and access need consent unless strictly necessary (ePrivacy Art. 5(3)).[41]
Playbook: DPIA screening and assessment
Link to section “Playbook: DPIA screening and assessment”Screen every change against the nine WP248 criteria (the worksheet lists them): “In most cases, a data controller can consider that a processing meeting two criteria would require a DPIA to be carried out”, though one can be enough.[42] Processing on the authority’s published Art. 35(4) list, or an Art. 35(3) case, needs a DPIA whatever the count. Write it up with the Art. 35(7) contents (DPIA record) and review it when the risk changes (Art. 35(11)).[12] California’s own risk assessments are due by 31 December 2027 for processing begun before 2026 and are kept for five years or while processing continues.[18] Write one assessment that answers both.
Playbook: vendors and international transfers
Link to section “Playbook: vendors and international transfers”Before data flows to a processor: Art. 28 contract terms, a security review and a record entry.[12] For transfers out of the EU, follow the EDPB’s six steps: know your transfers, identify the tool, assess its effectiveness in the destination, add supplementary measures, take procedural steps, re-evaluate.[43] Standard contractual clauses are the 2021 modules.[44] The General Court dismissed a challenge to the EU–US Data Privacy Framework on 3 September 2025;[45] we found no judgment on the appeal (C-703/25 P, lodged 31 October 2025) by 17 October 2026; re-check curia.europa.eu every quarter[46] and keep a fallback for critical flows. UK exports use the UK’s own clauses, the IDTA or the Addendum to the EU clauses, which the ICO says to keep using while it updates them in 2026.[47] India: transfers abroad must meet any conditions the government sets by order (Rule 15, from May 2027).[48]
Playbook: the privacy side of a personal-data breach
Link to section “Playbook: the privacy side of a personal-data breach”ResponseOps runs the incident and supplies facts; PrivacyOps owns the decisions below. The 72-hour GDPR clock runs from awareness, which the EDPB defines as “a reasonable degree of certainty that a security incident has occurred that has led to personal data being compromised”.[49]
Diagram source (Mermaid)
flowchart TB
A["Facts from ResponseOps: what, whose, since when"] --> B{"Personal data affected?"}
B -->|no| Z["Security incident only: no privacy notice"]
B -->|yes| C["Record the awareness time"]
C --> D{"Unlikely to result in a risk to people?"}
D -->|yes| R["Breach register: facts, effects, decision"]
D -->|no| E["Notify the authority: 72 hours, where feasible"]
E --> F{"Likely high risk to people?"}
F -->|no| R
F -->|yes| G{"Data unintelligible, or risk since removed?"}
G -->|yes| R
G -->|no| G2{"Individual notices disproportionate?"}
G2 -->|no| H["Tell people without undue delay, in plain language"]
G2 -->|yes| Q["Public communication instead"]
Q --> R
H --> R
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
class B,D,F,G,G2 decision
class E,H,Q risk
class R core
Text equivalent: Given ResponseOps’s facts, PrivacyOps asks whether personal data is affected; if not, no privacy notice is needed. If so, it records the awareness time. A breach unlikely to result in a risk goes in the register only; otherwise the authority is notified within 72 hours where feasible. If high risk is likely, people are told without undue delay in plain language, unless the data was unintelligible to others or later measures removed the risk (Art. 34(3)(a)–(b)); if individual notices would take disproportionate effort, a public communication replaces them (Art. 34(3), point c). Every path ends in the register.
Thresholds come from GDPR Arts. 33–34; information may go to the authority in phases, and every breach is documented.[12][49] Other regimes differ: HIPAA requires notices to individuals without unreasonable delay and no later than 60 calendar days after discovery;[50] India, from May 2027, requires telling affected people and the Board without delay, then a detailed report to the Board within 72 hours (Rule 7, unofficial text).[51][17]
Playbook: monitoring staff
Link to section “Playbook: monitoring staff”Behaviour analytics, data-loss prevention and insider-risk tools process data about staff. WP248’s example “A company systematically monitoring its employees’ activities” meets two criteria (systematic monitoring, vulnerable people), enough for a DPIA in most cases.[42] The ICO requires telling workers about monitoring except in very exceptional covert cases, and advises seeking and documenting their views.[52] AI that monitors and evaluates workers’ performance and behaviour is high-risk under the EU AI Act (Annex III 4(b)).[53] PrivacyOps owns purpose, retention, who may see a named person’s risk score, and the notice; the tools belong to AIOps for Security and EndpointOps.
Methods, standards and frameworks
Link to section “Methods, standards and frameworks”| Source | Type | Use it for |
|---|---|---|
| GDPR (EU) and UK GDPR | Law: mandatory where it applies | Duties, deadlines, lawful bases |
| EDPB guidelines (access 01/2022, breaches 9/2022, transfers 01/2020; legitimate interest 1/2024, draft) | EU regulators’ guidance, not law | How regulators read the duties[26][49][43][35] |
| CCPA and its regulations (California) | Law and regulation | Request handling, opt-outs, risk assessments[18] |
| India DPDP Act 2023 and Rules 2025 | Law; most duties from May 2027 | Consent notices, rights requests, breach reports[16][17] |
| NIST Privacy Framework 1.0 | Voluntary framework | Programme structure (Identify-P, Govern-P, Control-P, Communicate-P, Protect-P);[7] 1.1 still a draft in October 2026[54] |
| ISO/IEC 27701:2025 | Certifiable management system standard | An auditable privacy management system[8] |
| IAPP CIPM body of knowledge | Professional certification syllabus | Skills map for the team[6] |
Tooling landscape
Link to section “Tooling landscape”As of October 2026; names are examples, not endorsements; verify features yourself.
| Category | Job | Examples | Selection criteria |
|---|---|---|---|
| Privacy management platforms | Records, assessments, rights cases, consent, vendor reviews | OneTrust, TrustArc, Securiti (Veeam), Transcend, DataGrail, Ketch, Osano | Connectors for your systems; case access control; data residency; full export if you leave |
| Data discovery and classification | Find personal data the record missed | BigID, platform-native scanners | False-positive rate on your data; cost per scanned terabyte |
| PII detection and redaction (open source) | Find and redact identifiers in text for exports | Presidio (MIT; moved to data-privacy-stack/presidio)[55] |
Accuracy in your languages; human review step |
| Code and data-flow scanning (open source) | Find personal data flows in code before release | Privado (LGPL-3.0)[56] | Language support; noise in CI |
| Privacy as code (open source) | Declare data uses in code and check them | Fides; its GitHub repository was archived when checked[57] | Maintenance status before adoption |
| Ticketing and workflow | Case tracking when volumes are low | Existing service desk | Restricted access, due-date fields, audit trail |
Automation and AI
Link to section “Automation and AI”Automate what is repetitive and checkable: due dates, tasks from the record, chasing owners, connector exports and deletes, discovery scans, draft redactions. Humans decide identity doubts, exemptions, lawful bases, DPIA conclusions and breach notifications, and review every disclosure. Treat vendor AI agents, such as Veeam’s “PrivacyOps agents”,[5] as drafters. AI tools are processors too: prompts can hold personal data, so they need a record entry, retention and a vendor review.
PrivacyOps in practice
Link to section “PrivacyOps in practice”Reference implementation: operating artefacts
Link to section “Reference implementation: operating artefacts”Assumptions: a 400-person software company with customers in the EU, UK and California, about 60 systems holding personal data, one privacy lead and two analysts. The artefacts are tool-neutral.
1. Record-of-processing entry. One entry per activity, owned by a named person; the fields follow GDPR Art. 30(1) plus three operational fields (owner, lawful basis, systems).[12]
Example status: syntax-checked by the Atlas validator, not executed (a data format, not a program).
id: PA-03
name: Customer support tickets
owner: Head of Support
controller_contact: "Example Ltd, privacy@example.com"
purposes: [Answer customer questions]
lawful_basis: contract
data_subjects: [customers]
data_categories: [contact details, ticket text, attachments]
recipients: [HelpdeskCo (processor)]
transfers:
- country: US
mechanism: "SCCs 2021/914 module 2 + transfer assessment TIA-2026-07"
retention: "3 years after ticket closure, then delete"
security_measures: "SSO with MFA; attachment scanning; access by support role only"
systems: [support_desk]
dpia: {criteria: [], status: not needed}
last_reviewed: 2026-03-15
2. Rights-request intake form. Ask only what you need to find and verify the person; requests in any other wording or channel are still valid.
Example status: syntax-checked, not executed (a form definition for a generic case tool).
form: rights-request
fields:
- {id: request_type, type: choice, required: true,
options: [access, erasure, correction, objection, opt_out, portability, other]}
- {id: email, type: email, required: true,
help: "We use this to find your records and contact you"}
- {id: account_id, type: text, required: false}
- {id: details, type: textarea, required: false,
help: "Optional: which products, dates or records you mean"}
- {id: agent, type: boolean, required: false,
help: "Are you acting for someone else?"}
rules:
- "opt_out requests: no identity verification; process the signal or request directly"
- "signed-in users: the session is the identity check; do not ask for documents"
- "case created on submit; due date computed from the received timestamp"
3. Case record. The evidence trail a regulator or auditor will ask for.
Example status: syntax-checked, not executed (illustrative schema).
{
"case": "DSR-2026-0142",
"type": "erasure",
"jurisdiction": "EU",
"received": "2026-10-01T09:12:00Z",
"due": "2026-11-02",
"identity": {"method": "account one-time code", "verified": "2026-10-01T09:20:00Z"},
"tasks": [
{"id": "T1", "system": "crm", "action": "delete",
"done": "2026-10-03", "ref": "crm-audit-5521"},
{"id": "T3", "system": "support_desk", "action": "processor delete",
"done": "2026-10-06", "ref": "HC-9012"}
],
"exceptions": [{"system": "billing", "basis": "Art. 17(3)(b)", "approved_by": "legal"}],
"response_sent": null,
"case_file_retention": "case closure + period set by counsel"
}
4. Consent record. One record per person and purpose, holding the five things the ICO says it must show (who, when, what they were told, how, withdrawal);[37] a withdrawal is added to the record, not written over it.
Example status: syntax-checked, not executed (illustrative schema).
{
"consent_id": "CON-2026-55102",
"who": {"customer_id": "C-88812"},
"purpose": "product newsletter by email",
"when": "2026-09-14T10:02:11Z",
"told": {"form": "signup-form-v3", "notice": "privacy-notice-v7"},
"how": {"method": "unticked box ticked by the user", "submission_ref": "web-77120"},
"withdrawn": null,
"withdraw_via": ["unsubscribe link", "account settings"]
}
Hands-on labs
Link to section “Hands-on labs”Three labs on synthetic data only: Python 3.8 or later and bash, standard library only, no accounts, no cost. Each lab was run on 2026-10-17 exactly as printed (Python 3.8.10, Ubuntu Linux); expected outputs are copied from those runs.
Lab 1 (beginner): find the gaps in a record of processing
Link to section “Lab 1 (beginner): find the gaps in a record of processing”Objective. Check a small record of processing for the Art. 30 fields, lawful-basis evidence, overdue reviews and missing DPIAs. Prerequisites. Python 3.8+. Time. 20 minutes. Risk. None.
- Create the folder and the record.
Example status: verified by execution on 2026-10-17 (bash, Linux).
mkdir -p ~/privacyops-labs/lab1 && cd ~/privacyops-labs/lab1
cat > ropa.json <<'EOF'
{
"controller_contact": "Example Ltd, privacy@example.com, DPO: dpo@example.com",
"activities": [
{
"id": "PA-01", "name": "Customer accounts and billing", "owner": "Head of Finance",
"purposes": ["Provide the service", "Invoice and collect payment"],
"lawful_basis": "contract", "data_subjects": ["customers"],
"data_categories": ["contact details", "billing address", "invoices"],
"special_categories": false, "recipients": ["payment processor"],
"transfers": [],
"retention": "Account: contract + 2 years; invoices: per tax law",
"security_measures": "Encryption at rest, role-based access, access reviews",
"systems": ["crm", "billing"], "dpia": {"criteria": [], "status": "not needed"},
"last_reviewed": "2026-06-30"
},
{
"id": "PA-02", "name": "Product analytics", "owner": "Head of Product",
"purposes": ["Improve product features"], "lawful_basis": "legitimate_interests",
"data_subjects": ["customers", "trial users"],
"data_categories": ["user ID", "feature events", "IP address"],
"special_categories": false, "recipients": ["analytics processor"],
"transfers": [], "retention": "",
"security_measures": "Pseudonymous user IDs; IP truncated at ingest",
"systems": ["warehouse"], "dpia": {"criteria": [], "status": "not needed"},
"last_reviewed": "2025-07-01"
},
{
"id": "PA-03", "name": "Customer support tickets", "owner": "Head of Support",
"purposes": ["Answer customer questions"], "lawful_basis": "contract",
"data_subjects": ["customers"],
"data_categories": ["contact details", "ticket text", "attachments"],
"special_categories": false,
"transfers": [{"country": "US", "mechanism": ""}],
"retention": "3 years after ticket closure",
"security_measures": "SSO, MFA, attachment malware scan",
"systems": ["support_desk"], "dpia": {"criteria": [], "status": "not needed"},
"last_reviewed": "2026-03-15"
},
{
"id": "PA-04", "name": "Security monitoring of staff (UEBA)", "owner": "CISO",
"purposes": ["Detect account compromise and insider threats"],
"lawful_basis": "legitimate_interests", "lia_ref": "LIA-2026-04",
"data_subjects": ["employees", "contractors"],
"data_categories": ["sign-in events", "device telemetry", "risk scores"],
"special_categories": false, "recipients": ["SOC provider"],
"transfers": [], "retention": "Raw events 90 days; risk scores 12 months",
"security_measures": "Access limited to SOC; four-eyes rule to unmask a person",
"systems": ["siem", "ueba"],
"dpia": {"criteria": ["systematic monitoring", "vulnerable data subjects",
"evaluation or scoring"], "status": "in progress"},
"last_reviewed": "2026-09-01"
}
]
}
EOF
- Save the checker as
ropa_check.py.
Example status: verified by execution on 2026-10-17 (Python 3, standard library).
"""Check a record of processing activities (RoPA) for gaps. Standard library only."""
import json
from datetime import date
AS_OF = date(2026, 10, 17) # fixed so the output is reproducible
REVIEW_DAYS = 365 # Atlas practice: every entry reviewed yearly
ART30 = ["purposes", "data_subjects", "data_categories", "recipients",
"transfers", "retention", "security_measures"] # GDPR Art. 30(1)(b)-(g)
OPERATIONAL = ["owner", "lawful_basis", "systems", "last_reviewed"] # Atlas additions
with open("ropa.json") as f:
ropa = json.load(f)
gaps_total, complete = 0, 0
if not ropa.get("controller_contact"):
print("REGISTER: missing controller contact (Art. 30(1)(a))")
for a in ropa["activities"]:
gaps = []
for field in ART30 + OPERATIONAL:
if field not in a or a[field] in ("", None):
gaps.append(f"missing {field}")
for t in a.get("transfers", []):
if not t.get("mechanism"):
gaps.append(f"transfer to {t['country']} has no transfer mechanism")
if a.get("lawful_basis") == "legitimate_interests" and not a.get("lia_ref"):
gaps.append("legitimate interests without an assessment reference")
reviewed = a.get("last_reviewed")
if reviewed and (AS_OF - date.fromisoformat(reviewed)).days > REVIEW_DAYS:
gaps.append(f"review overdue (last {reviewed})")
dpia = a.get("dpia", {})
if len(dpia.get("criteria", [])) >= 2 and dpia.get("status") != "completed":
n_crit = len(dpia["criteria"])
gaps.append(f"DPIA {dpia.get('status')}: {n_crit} WP248 criteria met")
status = "OK " if not gaps else "GAP"
complete += not gaps
gaps_total += len(gaps)
print(f"{status} {a['id']} {a['name']}")
for g in gaps:
print(f" - {g}")
n = len(ropa["activities"])
print(f"Complete entries: {complete}/{n} = {100 * complete / n:.0f}% Gaps: {gaps_total}")
- Run
python3 ropa_check.py.
Expected output.
OK PA-01 Customer accounts and billing
GAP PA-02 Product analytics
- missing retention
- legitimate interests without an assessment reference
- review overdue (last 2025-07-01)
GAP PA-03 Customer support tickets
- missing recipients
- transfer to US has no transfer mechanism
GAP PA-04 Security monitoring of staff (UEBA)
- DPIA in progress: 3 WP248 criteria met
Complete entries: 1/4 = 25% Gaps: 6
Validation. PA-04 meets three WP248 criteria (two normally suffice), so processing should wait for the DPIA. PA-02 needs a
written legitimate-interest assessment (template). Add
"recipients": ["HelpdeskCo"] to PA-03 and re-run: its “missing recipients” line disappears. Troubleshooting.
json.decoder.JSONDecodeError: a comma or quote was lost when pasting; run python3 -m json.tool ropa.json to find the line.
Teardown. rm -rf ~/privacyops-labs/lab1
Lab 2 (intermediate): compute rights-request deadlines
Link to section “Lab 2 (intermediate): compute rights-request deadlines”Objective. Compute due dates under the GDPR (with Regulation 1182/71 rules, an identity pause and an extension) and the CCPA regulations, and see where the regimes differ. Prerequisites. Python 3.8+. Time. 30 minutes. Risk. None; a planning aid, not legal advice.
Save as ~/privacyops-labs/lab2/clocks.py (create the folder with mkdir -p ~/privacyops-labs/lab2) and run
python3 clocks.py there.
Example status: verified by execution on 2026-10-17 (Python 3, standard library).
"""Rights-request clocks (planning aid, not legal advice). Standard library only."""
import calendar
from datetime import date, timedelta
HOLIDAYS = {date(2026, 4, 6), date(2027, 1, 1)} # supply your own calendar
def add_months(d, months):
"""Same date N months later; the month's last day if that date does not exist."""
y, m = divmod(d.month - 1 + months, 12)
year, month = d.year + y, m + 1
return date(year, month, min(d.day, calendar.monthrange(year, month)[1]))
def is_working(d):
return d.weekday() < 5 and d not in HOLIDAYS
def roll_forward(d):
while not is_working(d):
d += timedelta(days=1)
return d
def business_days_after(d, n):
while n:
d += timedelta(days=1)
n -= is_working(d)
return d
def gdpr_due(received, extended=False, asked=None, answered=None):
"""Art. 12(3) with Reg. 1182/71 Art. 3; pause while waiting for ID (EDPB 01/2022)."""
due = add_months(received, 3 if extended else 1)
if asked and answered:
due += timedelta(days=(answered - asked).days) # conservative pause count
return roll_forward(due)
def ccpa_due(received, extended=False):
"""45 calendar days from receipt (90 if extended); verification does not pause it."""
return received + timedelta(days=90 if extended else 45)
CASES = [
("GDPR access, EDPB example 32", gdpr_due(date(2026, 3, 5))),
("GDPR, received Sat 31 Jan", gdpr_due(date(2026, 1, 31))),
("GDPR, ID asked 2 Oct, got 9 Oct", gdpr_due(date(2026, 10, 1),
asked=date(2026, 10, 2),
answered=date(2026, 10, 9))),
("GDPR, extended (complex)", gdpr_due(date(2026, 10, 1), extended=True)),
("CCPA know/delete: confirm by", business_days_after(date(2026, 10, 1), 10)),
("CCPA know/delete: respond by", ccpa_due(date(2026, 10, 1))),
("CCPA know/delete: extended", ccpa_due(date(2026, 10, 1), extended=True)),
("CCPA opt-out: stop selling by", business_days_after(date(2026, 10, 1), 15)),
("India DPDP (when in force)", date(2026, 10, 1) + timedelta(days=90)),
]
for label, due in CASES:
print(f"{label:<32} {due.isoformat()} {due.strftime('%a')}")
Expected output.
GDPR access, EDPB example 32 2026-04-07 Tue
GDPR, received Sat 31 Jan 2026-03-02 Mon
GDPR, ID asked 2 Oct, got 9 Oct 2026-11-09 Mon
GDPR, extended (complex) 2027-01-04 Mon
CCPA know/delete: confirm by 2026-10-15 Thu
CCPA know/delete: respond by 2026-11-15 Sun
CCPA know/delete: extended 2026-12-30 Wed
CCPA opt-out: stop selling by 2026-10-22 Thu
India DPDP (when in force) 2026-12-30 Wed
Validation. The EDPB’s example gives 5 April 2026,[26] a Sunday before Easter Monday, so Regulation 1182/71 moves it
to Tuesday 7 April[32] (plan for 5 April anyway). 28 February 2026 is a Saturday, so it rolls to 2 March. The identity case
pauses the EU clock for seven days; the UK instead starts the month when the ID arrives,[29] which here also gives
9 November. CCPA dates are not rolled past weekends. Troubleshooting. HOLIDAYS (two samples) serves both regimes here; in real use keep one calendar each: the member state’s for the GDPR (Reg. 1182/71 Art. 2(1)),[32] and one agreed with counsel for CCPA business days, which the regulations do not define. Teardown. rm -rf ~/privacyops-labs/lab2
Lab 3 (advanced): plan an erasure and check the evidence
Link to section “Lab 3 (advanced): plan an erasure and check the evidence”Objective. Fan one erasure request out to every system, apply exceptions, backups and processors, then refuse to reply until every task has evidence. Prerequisites. Python 3.8+. Time. 30 minutes. Risk. None.
- Create the system register, the request and the evidence log.
Example status: verified by execution on 2026-10-17 (bash, Linux).
mkdir -p ~/privacyops-labs/lab3 && cd ~/privacyops-labs/lab3
cat > systems.json <<'EOF'
[
{"system": "crm", "holds_subject": true, "action": "delete"},
{"system": "billing", "holds_subject": true, "action": "retain",
"exception": "Art. 17(3)(b), invoices per tax law",
"minimise": "restrict to invoicing"},
{"system": "support_desk", "holds_subject": true, "action": "delete",
"processor": "HelpdeskCo"},
{"system": "email_platform", "holds_subject": true, "action": "delete",
"processor": "MailCo", "keep_suppression": true},
{"system": "warehouse", "holds_subject": true, "action": "delete"},
{"system": "backups", "holds_subject": true, "action": "beyond_use",
"expires_days": 35, "covers": ["crm", "warehouse"]},
{"system": "hr", "holds_subject": false, "action": "delete"}
]
EOF
cat > request.json <<'EOF'
{"case": "DSR-2026-0142", "type": "erasure", "received": "2026-10-01",
"subject_ids": {"customer_id": "C-88812", "email": "a.person@example.com"},
"legal_hold": false}
EOF
cat > evidence.json <<'EOF'
{"T1": {"done": "2026-10-03", "ref": "crm-audit-5521"},
"T2": {"done": "2026-10-03", "ref": "billing-restriction-77"},
"T3": {"done": "2026-10-06", "ref": "ticket HC-9012 confirmed by HelpdeskCo"},
"T4": {"done": "", "ref": ""},
"T5": {"done": "2026-10-04", "ref": "warehouse-job-3310"},
"T6": {"done": "2026-10-04", "ref": "erasure-log row 142"}}
EOF
- Save the planner as
erasure_plan.py.
Example status: verified by execution on 2026-10-17 (Python 3, standard library).
"""Plan an erasure request across systems and check the evidence before replying."""
import json
from datetime import date, timedelta
with open("systems.json") as f:
systems = json.load(f)
with open("request.json") as f:
req = json.load(f)
with open("evidence.json") as f:
evidence = json.load(f)
tasks, tid_of = [], {}
for s in systems:
if not s["holds_subject"]:
continue # searched, nothing found: record that too
if req["legal_hold"]:
what = "suspend: legal hold, delete when the hold is released"
elif s["action"] == "delete":
what = "delete records"
if s.get("processor"):
what = f"processor {s['processor']}: delete + confirm"
if s.get("keep_suppression"):
what += "; keep suppression hash"
elif s["action"] == "retain":
what = f"keep ({s['exception']}); {s['minimise']}"
elif s["action"] == "beyond_use":
what = "beyond use; re-apply after any restore"
else:
what = "unknown action: escalate to the privacy lead"
tid_of[s["system"]] = f"T{len(tasks) + 1}"
tasks.append((tid_of[s["system"]], s["system"], what))
print(f"Case {req['case']} ({req['type']}), received {req['received']}")
for tid, system, what in tasks:
print(f" {tid} {system:<15} {what}")
open_tasks = [t for t in tasks if not evidence.get(t[0], {}).get("done")]
no_ref = [t for t in tasks if evidence.get(t[0], {}).get("done")
and not evidence[t[0]].get("ref")]
done = len(tasks) - len(open_tasks)
print(f"Evidence: {done}/{len(tasks)} tasks closed")
for tid, system, _ in open_tasks:
print(f" OPEN {tid} {system}: no completion evidence")
for tid, system, _ in no_ref:
print(f" WEAK {tid} {system}: closed without an evidence reference")
# A backup taken on the day of the last live deletion may still hold the person.
for s in systems:
if s["action"] != "beyond_use" or not s["holds_subject"] or req["legal_hold"]:
continue
days = [evidence.get(tid_of[c], {}).get("done") for c in s["covers"]]
if all(days):
last = max(date.fromisoformat(d) for d in days)
gone = last + timedelta(days=s["expires_days"] + 1)
print(f"Backups: last copy expires by {gone} (live deletions done {last})")
else:
print("Backups: no expiry date until the covered live deletions are done")
ready = not open_tasks and not no_ref
print("Reply to the requester:", "READY" if ready else "NOT READY")
- Run
python3 erasure_plan.py.
Expected output.
Case DSR-2026-0142 (erasure), received 2026-10-01
T1 crm delete records
T2 billing keep (Art. 17(3)(b), invoices per tax law); restrict to invoicing
T3 support_desk processor HelpdeskCo: delete + confirm
T4 email_platform processor MailCo: delete + confirm; keep suppression hash
T5 warehouse delete records
T6 backups beyond use; re-apply after any restore
Evidence: 5/6 tasks closed
OPEN T4 email_platform: no completion evidence
Backups: last copy expires by 2026-11-09 (live deletions done 2026-10-04)
Reply to the requester: NOT READY
- Record MailCo’s confirmation and re-run.
Example status: verified by execution on 2026-10-17 (bash and Python 3).
python3 - <<'EOF'
import json
with open("evidence.json") as f:
e = json.load(f)
e["T4"] = {"done": "2026-10-08", "ref": "MailCo confirmation MC-4410"}
with open("evidence.json", "w") as f:
json.dump(e, f, indent=1)
EOF
python3 erasure_plan.py | tail -3
Expected output.
Evidence: 6/6 tasks closed
Backups: last copy expires by 2026-11-09 (live deletions done 2026-10-04)
Reply to the requester: READY
Validation. The backup taken on 4 October, the day of the last live deletion it covers, may still hold the person: 35 days
plus a day’s margin gives 9 November, the date to tell them (processors confirm their own backups). hr holds no record of this
person, so it gets no task; record that it was searched. Set "legal_hold": true in request.json and every task becomes a suspension. Troubleshooting. KeyError: 'exception':
a retain system needs exception and minimise fields. Teardown. rm -rf ~/privacyops-labs/lab3
Use cases and scenarios
Link to section “Use cases and scenarios”| Scenario | Context and method | Trade-offs | Success measure | Pitfall |
|---|---|---|---|---|
| Sourced: opt-outs at a carmaker | California’s agency found Honda used one webform for all requests and demanded at least eight fields even for opt-outs; the order required a simpler process, symmetric cookie choices and a UX designer’s review[9][58] | Less fraud screening, acceptable for opt-outs because nothing is disclosed | Opt-outs ask only what is needed to act; signals honoured | One verified-request form for every request type |
| Illustrative: erasure at a SaaS company | 60 systems, 400 erasures a month; inventory first, connectors for the 12 systems holding 90% of records, manual tasks for the rest, a backup erasure log (Lab 3) | Connector build time versus analyst hours | ≥ 98% on time; every task evidenced; nothing resurrected | Treating “deleted in the CRM” as done |
| Illustrative: an Indian fintech before May 2027 | Builds consent notices, a request workflow inside a published period of at most 90 days, and a two-step Board breach report (without delay, then 72 hours)[30][51] | Building now versus waiting for guidance | Workflow tested before May 2027 | Copying GDPR answers where the Act differs |
Measure, secure and pay
Link to section “Measure, secure and pay”Metrics and KPIs
Link to section “Metrics and KPIs”| KPI | Definition / formula | Data source | Pitfall | Review |
|---|---|---|---|---|
| On-time closure rate | Cases closed by their legal due date ÷ cases closed in the period | Case tool | Hides open cases already late; pair with backlog age | Monthly |
| Late backlog | Open cases past their due date, and open cases past half their clock | Case tool | Extensions reset nothing: count from the original due date as well | Daily |
| Erasure completeness | Tasks with evidence ÷ tasks generated, for closed erasure cases | Case tool, system logs | Only as good as the system list; test with a synthetic person | Monthly |
| Verification drop-out | Cases closed because identity was never confirmed ÷ cases | Case tool | High values may mean excessive demands, not fraud | Quarterly |
| Record coverage | Activities with all required fields, an owner and a review in the last 12 months ÷ activities | Record of processing | Coverage of a record that misses systems; compare with discovery scans | Quarterly |
| Pre-launch review rate | Launches with privacy screening before go-live ÷ launches | Change tool | Counting reviews nobody acted on | Quarterly |
| Signal honour rate | Test visits with Sec-GPC: 1 that suppress sale/share tags ÷ test visits |
Synthetic browser tests | One page tested, not the whole site | Monthly |
Targets are Atlas proposals; legal deadlines are maxima, so aim to close in half the legal period.
Security and compliance of the privacy operation itself
Link to section “Security and compliance of the privacy operation itself”Impostors can abuse access requests to obtain other people’s data, and an export sent to the wrong address is itself a personal-data breach. Controls:
- Proportionate verification: reuse login; ask no more than authentication needs (principle 4).
- Delivery to a verified channel: an authenticated download area or the email already on file, not a new address in the request.
- Least privilege for case files: only the privacy team and the case’s task owners; exports encrypted; access logged.
- Retention for case files: long enough to answer complaints, then delete; the case system needs its own record entry.
- Authorised agents: check the authority without making agents hard to use.[9]
Cost, capacity and sustainability
Link to section “Cost, capacity and sustainability”Cost drivers are request volume, the number of systems each request touches, how many of those are manual, and exceptions that need legal review. A simple capacity model (illustrative):
- Monthly analyst hours = requests × (intake and verification hours + systems per request × manual hours per system + review hours).
- Example: 400 requests × (0.3 + 6 manual systems × 0.25 + 0.4) = 400 × 2.2 = 880 hours, or about 6.3 analysts at 140 productive hours each. Automating four of the six manual systems gives 400 × (0.3 + 2 × 0.25 + 0.4) = 480 hours, about 3.4 analysts.
Connectors pay first for the highest-volume manual systems. Deleting data you do not need lowers every future cost (fewer systems, smaller exports and breaches) and cuts storage energy: running retention schedules is the cheapest privacy control.
Assurance of the operating model
Link to section “Assurance of the operating model”- Monthly synthetic-person test: a test customer in every system; file access and erasure requests; every system must appear in the export and be empty afterwards.
- Quarterly sample: re-perform ten closed cases end to end; check identity, scope, redactions and evidence.
- Discovery reconciliation: compare scanner findings with the record; every unknown store becomes an entry or a deletion.
- Complaints and regulator contacts are leading indicators: review every one for a root cause.
When things go wrong
Link to section “When things go wrong”Common failures and troubleshooting
Link to section “Common failures and troubleshooting”| Symptom | Likely cause | Diagnosis | Remediation | Prevention |
|---|---|---|---|---|
| Cases go late at month end | Owners answer only when chased; no half-time alert | Plot open cases by days remaining | Escalate to owners’ managers; extend lawfully with reasons | Half-time alerts; owner service levels |
| Person says “you still email me” after erasure | A processor or second marketing tool was missed | Search all tools for the address; check the system register | Delete, apologise, check suppression | Synthetic-person test monthly |
| Exports contain other customers’ data | Free-text fields and shared threads | Sample exports | Redaction step with second review | Redaction checklist; tools that flag names |
| Identity loops never end | No limit or standard for verification | Count verification messages per case | Standard method per channel; close after a stated period | Reuse login; proportionate rules |
| DPIA arrives after launch | No intake gate in the delivery process | Compare launches with reviews | Retro-assess; pause risky processing | Screening question in the change template |
Runbook: erased data comes back after a restore
Link to section “Runbook: erased data comes back after a restore”Diagram source (Mermaid)
flowchart TB
A["Complaint: erased person contacted again"] --> B["Open an incident and a privacy case"]
B --> C{"Restore since the erasure date?"}
C -->|no| D["Look for a missed system or processor"]
C -->|yes| E["List erasures between backup date and restore"]
E --> F["Re-apply the erasure log to the restored store"]
D --> G["Fix the gap; delete; confirm"]
F --> H["Check downstream copies made since restore"]
H --> I{"Was the data used or disclosed?"}
G --> I
I -->|yes| J["Assess as a personal-data breach"]
I -->|no| K["Close with evidence; tell the person"]
J --> K
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
class C,I decision
class A,J risk
Text equivalent: The complaint opens an incident and a privacy case. After a restore, the team re-applies every erasure logged between the backup date and the restore, then checks downstream copies; with no restore, it finds and fixes the missed system or processor. If the data was used or disclosed, the event is assessed as a personal-data breach. The case closes with evidence and a message to the person.
- Contain (hours 0–2): pause sends from the restored database; open a privacy case linked to the incident.
- Diagnose (hours 2–8): confirm the backup’s point in time; query the erasure log up to the restore (here, 37 erasures).
- Re-apply (day 1): run the 37 deletions on the restored store and on copies made since; collect evidence per system.
- Assess (days 1–2): decide with counsel whether this is a reportable breach; record the reasoning in the breach register either way.[12]
- Communicate: apologise to the complainant; decide whether to tell the other 36.
- Prevent: make “re-apply erasure log” a mandatory restore step with BackupOps and test it in the next drill.
Anti-patterns and myths
Link to section “Anti-patterns and myths”- “We bought a platform, so we have a programme.” Tools automate an inventory and owners; they do not create them.
- “Deleted from production means erased.” Processors, analytics copies, logs and backups also hold data.
- “Consent is the safest basis.” Consent must be freely given and as easy to withdraw as to give;[12] it is often the wrong basis for processing you cannot stop on request.
- “Our DPIA is done.” Assessments must be reviewed when the processing or its risk changes (Art. 35(11)).[12]
- “Legitimate interests is the flexible basis.” It holds only after the three tests are passed and written down before processing starts,[34] and a basis cannot usually be swapped later.[21]
Deciding and adopting
Link to section “Deciding and adopting”When to use and when not to use
Link to section “When to use and when not to use”Build a privacy operation when people have rights against you, when requests or launches miss deadlines, when you process sensitive data or monitor or profile people, or when customers’ contracts demand evidence.
Do not build a separate function if you are small, with few systems and a few requests a year: name an owner, keep a short record, write a one-page runbook, calendar the clocks. Do not buy a platform before you can list systems and owners; it will automate confusion. Do not use the label in place of a DPO or counsel where the law requires one.
Decision framework
Link to section “Decision framework”Diagram source (Mermaid)
flowchart TB
A{"Rights apply to you?"} -->|no| B["Basic hygiene; re-check on expansion"]
A -->|yes| C{"Systems, owners listed?"}
C -->|no| D["First: inventory and owners, no platform"]
C -->|yes| E{"High-risk processing?"}
E -->|yes| F["DPIA capability and DPO advice now"]
E -->|no| G{"Over ~20 requests a month?"}
F --> G
G -->|no| H["Owner, tracker, runbooks"]
G -->|yes| I{"Systems reachable by API?"}
I -->|yes| J["Case tool plus connectors"]
I -->|no| K["Fix export and delete paths first"]
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
class A,C,E,G,I decision
class D,F,J core
Text equivalent: With no privacy rights against you, keep basic hygiene and re-check on expansion. Otherwise list systems and owners first, without a platform. High-risk processing adds DPIA capability and DPO advice now. Up to about 20 requests a month, an owner, a tracker and runbooks suffice; above that, use a case tool with connectors if the main systems have APIs, or fix their export and delete paths first.
The thresholds are this Atlas’s heuristics, not industry benchmarks; replace them with your own hours and costs from the capacity model.
Maturity model
Link to section “Maturity model”This Atlas’s proposal; no official privacy-operations maturity model is implied.
| Level | Observable behaviour | Evidence | Exit criterion |
|---|---|---|---|
| 1. Reactive | Requests handled ad hoc by whoever receives them | Email threads | A named owner and a tracker |
| 2. Defined | Runbooks per request type; record of processing exists | Case list with due dates | 90% of activities in the record with owners |
| 3. Managed | Every system and processor mapped to requests; DPIA gate in delivery; metrics monthly | Scorecard; DPIA log | At least 98% on time for two quarters |
| 4. Integrated | Connectors for high-volume systems; erasure log in restore runbooks; signal tests | Synthetic-person test results | Erasure completeness of 100% in tests |
| 5. Preventive | Minimisation and retention run automatically; privacy review in architecture decisions | Falling data volume per customer | Sustained, audited, improving |
Adoption roadmap: 30/60/90 days
Link to section “Adoption roadmap: 30/60/90 days”| Phase | Actions | Owner | Milestone |
|---|---|---|---|
| Days 1–30 | Name the owner; one intake channel and a tracker; list systems and owners; due dates for open cases | Privacy lead | No case without a due date |
| Days 31–60 | Runbooks for access, erasure, opt-out; record for the top 20 activities; screening question in the change template; GPC test | Privacy lead, system owners | First synthetic-person test; screening live |
| Days 61–90 | First scorecard; DPIAs for screened-in changes; processor confirmations; restore runbooks updated; tooling decision from real volumes | Privacy lead, DPO, BackupOps | 95% or better on time; tooling decision recorded |
Quick wins: half-period internal targets, one verification method per channel, deleting one large store nobody needs.
Toolkit
Link to section “Toolkit”Checklists
Link to section “Checklists”Quick start
- Accountable owner named; DPO appointed or the need assessed (Art. 37)
- One intake channel published; support trained to log requests in any wording
- Systems with personal data listed with owners and export and delete paths
- Due dates computed for every open case; half-time alert set
Before launching a feature or vendor
- DPIA done if the authority’s Art. 35(4) list or Art. 35(3) covers it, or two or more WP248 criteria apply
- Lawful basis and purpose recorded (LIA for legitimate interests; consent records if consent)
- Notice updated before any new purpose; privacy-protective defaults set
- Retention period set and implemented; deletion tested
- Processor contract, transfer tool and record entry in place before data flows
Monthly operations review
- Scorecard: on-time rate, late backlog, erasure completeness, verification drop-out
- Synthetic-person test passed in every system; GPC test passed on key pages
Breach readiness (with ResponseOps)
- Awareness time recorded in every incident that may involve personal data
- Breach register includes non-notified breaches with reasoning
Templates
Link to section “Templates”DPIA screening worksheet (WP248 criteria;[42] Atlas layout)
Change: ____________________ Owner: ______________ Date: __________
On the authority's Art. 35(4) list, or an Art. 35(3) case? [ ] yes -> DPIA regardless
Criterion (tick if met) Evidence / note
[ ] 1 Evaluation or scoring, profiling
[ ] 2 Automated decision with legal or similar effect
[ ] 3 Systematic monitoring (incl. of staff)
[ ] 4 Sensitive or highly personal data
[ ] 5 Large scale (people, volume, duration, geography)
[ ] 6 Matching or combining datasets
[ ] 7 Vulnerable people (children, employees, patients)
[ ] 8 Innovative technology
[ ] 9 Prevents people using a service or contract
Result: 0 = no DPIA, record why | 1 = privacy lead decides | 2+ = DPIA before launch
Signed (privacy): ____________
DPIA record (headings from Art. 35(7), with the DPO’s advice under Art. 35(2) and people’s views under Art. 35(9);[12] Atlas layout)
DPIA ID: ______ Change: ______ Owner: ______ Screening ref: ______
1 Processing: nature, scope, context, purposes (incl. any legitimate interest);
data, people, systems, processors, transfers
2 Necessity and proportionality: basis, minimisation, retention, rights, notices
3 Risks to people: source, likelihood, severity (exposure, loss, unfair outcomes)
4 Measures: safeguards, security, how compliance is shown; residual risk
5 DPO advice: ______ Views of people or representatives (where appropriate): ______
Outcome: proceed / proceed with measures / prior consultation (Art. 36) / stop
Review when the processing or its risk changes (Art. 35(11)); next review: ______
Signed (privacy): ______ Accepted by (risk owner): ______
Legitimate-interest assessment (LIA) (the ICO’s three-part test;[34] Atlas layout)
LIA ID: LIA-____ Record entry: PA-__ Owner: ______ Date: ______
1 Purpose: which interest, whose, what benefit? Lawful and specific?
2 Necessity: does the processing achieve it? Is there a less intrusive way?
3 Balancing: reasonable expectations; nature of the data; children or other
vulnerable people; likely impact; safeguards (less data, opt-out, retention)
Outcome: legitimate interests apply / choose another basis / do not process
Notice names the interest: yes/no Opt-out offered: yes/no Review by: ______
Signed (privacy): ______
Rights-request response (access)
Subject: Your request [CASE-ID], received [DATE]
1. What we did: searched [N] systems and [M] service providers listed in our records.
2. Your data: attached securely via [CHANNEL]; format: [FORMAT].
3. About the processing: purposes, categories, recipients, retention, source,
automated decisions and profiling (if any), transfer safeguards, your rights.
4. What we withheld and why: [EXEMPTION or "other people's data, redacted"].
5. Complaints: to us at [COMPLAINT CHANNEL] or to [AUTHORITY].
6. Questions: reply to this message; reference [CASE-ID].
Breach decision record
Breach ID: ______ Incident ID (ResponseOps): ______
Awareness time (UTC): ______ Recorded by: ______
Data and people affected (categories, approximate numbers): ______
Likely consequences for people: ______
Risk to people: unlikely / risk / high risk Reasoning: ______
Authority notified: yes/no, when, reference: ______ Reasons if after 72 h: ______
People told: yes/no, when, how: ______
Or exception: 34(3)(a) / (b) / (c); if (c), public communication on: ______
Decided by: ______ (privacy) ______ (legal) Date: ______
Monthly scorecard
Month: ______ Target Actual Trend Action owner
On-time closure >=98% ____ __ ______
Late backlog 0 ____ __ ______
Erasure completeness 100% ____ __ ______
Record coverage >=90% ____ __ ______
Pre-launch reviews 100% ____ __ ______
Signal honour rate 100% ____ __ ______
Complaints ack <=30d 100% ____ __ ______
Deep comparisons: where to put the privacy operation
Link to section “Deep comparisons: where to put the privacy operation”| Model | Strengths | Weaknesses | Fits when |
|---|---|---|---|
| Inside legal | Close to interpretation and exemptions | Distant from engineering; slow tooling | Low volume, high legal complexity |
| Inside security or GRC | Shared tooling, incident links, audit habits | Privacy reduced to security; rights work starved | Breach-heavy, audit-driven B2B |
| Stand-alone privacy office | Clear ownership; DPO independence easier | Needs strong ties to engineering | Consumer scale, many jurisdictions |
| Embedded privacy engineers | Design-time influence; fewer late DPIAs | Inconsistent without a central owner | Fast-moving product teams |
Is “PrivacyOps” a certification or a job title? It is Securiti’s term and free course;[3] the established credential is the IAPP’s CIPM,[6] and an organisation can have its privacy management system certified against ISO/IEC 27701:2025.[8] Job titles usually say “privacy operations” or “privacy analyst”.
Consent was withdrawn. Can we switch to legitimate interests to keep the data? Usually not. UK guidance says you “can’t usually swap from consent to a different basis”, and that switching after the fact is likely to be unfair to people.[21] Stop the processing that relied on consent and log the withdrawal in the consent record.
Can we refuse a request made for tactical reasons, say during a dispute? Motive alone does not decide it: the first copy is free even when the reason is unrelated to checking lawfulness (CJEU).[27] Refusal needs a manifestly unfounded or excessive request, with the burden on you (Art. 12(5)).[12] The Digital Omnibus’s abuse ground was not law on 18 October 2026.[59][23]
Do we have to delete data from backups? Put it beyond use and tell people what happens to backups (UK guidance; see the erasure playbook).[39] Immutable backups make this a design decision (BackupOps).
Is pseudonymised data out of scope? Not for the key holder; for a recipient that cannot re-identify anyone, perhaps (advanced topics). Decide case by case with DataSecOps evidence.
We are not in the EU. Why lean on the GDPR? Its guidance is the most detailed public body of rights-handling practice. The workflow transfers; clocks and exemptions do not, so map each jurisdiction (for US states, the IAPP’s tracker).[60]
Going further
Link to section “Going further”Advanced topics and emerging direction
Link to section “Advanced topics and emerging direction”- Proposed EU changes (not law). The Commission’s Digital Omnibus proposal of 19 November 2025 would require authority notification only for breaches “likely to result in a high risk”, “not later than 96 hours” after awareness, and would let controllers refuse or charge for access requests used for purposes other than protecting personal data.[59] On 18 October 2026 the Parliament file read “Awaiting committee decision”.[23] Keep running to 72 hours.
- Pseudonymisation is relative. The CJEU’s EDPS v SRB judgment (4 September 2025, under the EU institutions’ equivalent of the GDPR) held that pseudonymised data must not be regarded as personal data “in all cases and for every person”: for a recipient who cannot re-identify anyone, even by cross-checking, it may not be.[61] Sharing decisions will rest on documented re-identification analysis.
- Signals and central deletion. GPC is on the W3C Recommendation track,[24] and since 1 August 2026 California data brokers must collect deletion requests from the state’s central platform at least every 45 days.[62]
- AI. An amendment to the EU AI Act was published on 24 July 2026, so check the current dates for its high-risk worker-monitoring category;[53][63] California’s automated decision-making rules apply to existing uses from 1 January 2027.[18]
Learning path
Link to section “Learning path”| Stage | What to do |
|---|---|
| Prerequisites | GDPR Arts. 5, 6, 12–22, 30, 33–35 and one local law |
| One day | This page, the labs, and the EDPB access guidelines on timing and identity[26] |
| One week | Draft one product’s record of processing; file an access request for yourself |
| 30 days | Run the case stand-up; write erasure and opt-out runbooks; complete one DPIA |
| Specialise | Privacy engineering with DataSecOps; transfers; breaches with ResponseOps; the CIPM syllabus[6] |
| Portfolio | A deadline calculator, a synthetic-person test harness, a GPC test suite |
Wrap-up
Link to section “Wrap-up”Executive recap and cheat sheet
Link to section “Executive recap and cheat sheet”| Topic | Remember |
|---|---|
| The label | Vendor-coined (Securiti, now Veeam); the practice is privacy programme management |
| Foundation | Record of processing with owners, kept current by change intake |
| Decisions | Basis chosen and recorded before processing; written LIA for legitimate interests; provable consent; notice before a new purpose |
| Clocks | GDPR one month (+2); CCPA 45 days (+45), opt-outs ≤ 15 business days; details in the clocks table |
| Verification | Reuse login; none for opt-outs |
| Erasure | Systems, processors, recipients, backups beyond use, re-apply after restore |
| Assessments | Authority’s list or two WP248 criteria → DPIA; review on change |
| Breaches | Awareness → 72 h to the authority unless unlikely to result in a risk; people if high risk; register everything |
A judgement call: how hard should identity checks be?
Link to section “A judgement call: how hard should identity checks be?”Situation (illustrative). A consumer app receives 300 access requests a month by web form. After an impostor obtained another person’s order history, security proposes a government-ID photo for every request; support proposes keeping the one-time code to the email or phone on the account.
Option A: ID upload for everyone. It feels safe and stops this attack, but it collects sensitive documents the app never held (a new breach target); EDPB guidance calls ID copies disproportionate for authenticated users;[26] California’s Honda order treated excessive verification demands as violations, both for opt-outs and for verifiable requests;[9] and drop-outs will rise.
Option B: risk-based verification. Keep the account code; deliver exports only inside the account or to contact details on file; add a step only where risk is higher (no account, an email changed in the last 30 days, special-category data); never verify opt-outs.
Decision. The impostor succeeded because the export went to an address given in the request, not because the code was weak. Recommendation (Atlas reasoning): Option B with verified-channel delivery. Uncertainty: with health or financial data, or rising impostor attempts, a stronger step for non-account requests may become proportionate; record the reasoning in the request process’s DPIA.
Learning objectives and mastery check
Link to section “Learning objectives and mastery check”Objectives: explain the label; choose and document a lawful basis; design a rights workflow with clocks, verification and evidence; screen changes for DPIAs; run an erasure across processors and backups; size the tooling.
1. An EU access request arrives on 31 January. When is the latest response date, and what changes it?
2. A California consumer submits an opt-out through a form that asks for name, address, phone and date of birth. Problem?
Opt-outs need no more information than needed to act and no verification (§7026(c)–(d)); see the Honda case.[18]
3. A feature profiles employees’ productivity with an AI tool. Which assessments apply?
4. Ransomware encrypted a file server with HR records; backups are intact and no exfiltration is found. Notify?
5. On-time closure is 99%, but complaints about erasure are rising. What do you measure next?
Erasure completeness with a synthetic person across all systems and processors, and restores against the erasure log: on-time closure counts responses, not deletions.
6. Marketing wants to profile purchase history for offers, on legitimate interests. What must exist before launch?
A written LIA that passes purpose, necessity and balancing, including what customers reasonably expect;[34] the interest named in the notice (Art. 13(1)(d)); an easy objection route, since an objection to direct marketing stops it (Art. 21(2)–(3));[12] and a DPIA screen, because evaluation or scoring is a WP248 criterion.[42]
Conclusion
Link to section “Conclusion”PrivacyOps is a vendor’s word for a real job: making privacy law happen for each person, on time, with proof. The label will follow the market; the job will not, because obligations attach to people while their data spreads into new systems, processors and AI tools. Those who do it well need not own the most software: they know where personal data lives and who owns it, compute deadlines on arrival, ask for no more proof than they need, chase every copy including backups, and write down why they decided. Start with the inventory and one honest metric, on-time closure; the rest, platform included, gets easier.
Sources and further reading
Link to section “Sources and further reading”All sources were opened on 2026-10-17 or later (dates in each note; EU texts on EUR-Lex unless stated); claim notes and
gaps are in research/privacyops-ledger.md. Re-check: DPDP Rule 4 and the 12-month proposal
(November 2026); C-703/25 P and the Digital Omnibus (quarterly); the ICO’s 2026 IDTA update and its guidance marked “under review”.
Changelog. 2026-10-17: first draft (r0), Blueprint v2, three labs executed; term status vendor-specific confirmed against the
coverage matrix. 2026-10-17 (r1): DPDP start dates; UK 2026 changes; public-communication exception (Art. 34(3)); Lab 3 backup date; retention,
children and non-EU transfers added; repetition cut. 2026-10-17 (r2, after the final QA score): lawful-basis and
consent playbook, LIA, DPIA and consent-record templates; Art. 5 principles; early extension in Figure 3; six-column RACI; CPRA,
§7026(c)–(d), HIPAA wording; re-check list. 2026-10-18, post-score polish: Art. 8 scope; recognised
legitimate interest; Lab 2 holiday calendars; glossary lists; Omnibus re-checked; cuts.
Securiti unveils the first-ever ‘PrivacyOps’ platform — Securiti, 2019-08-08. Checked 2026-10-17. ↩︎ ↩︎
Automating Privacy Operations Across Your Organization — Rehan Jalil, Securiti, 2019 (ISBN 978-1-7333560-0-8; Bista Solutions copy). Checked 2026-10-17. ↩︎
Securiti launches free certification program — Training Industry (Securiti release), 2021-09-30. Checked 2026-10-17. ↩︎ ↩︎
Veeam completes USD $1.725b AI security takeover — SecurityBrief Australia, 2025-12-17. Checked 2026-10-17. ↩︎
Veeam on the 2026 Gartner Magic Quadrant for Privacy UX — Rehan Jalil, Veeam blog, 2026-10-15. Checked 2026-10-17. ↩︎ ↩︎
CIPM Body of Knowledge, version 4.2.0 — IAPP, approved 2025-01-16, effective 2025-09-01. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎
NIST Privacy Framework, Version 1.0 — NIST, 2020-01-16. Checked 2026-10-17. ↩︎ ↩︎
Revision of ISO/IEC 27701 — DNV (certification body), on the edition published 2025-10-14. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎
Order, American Honda Motor Co., ENF23-V-HO-2 — CPPA Board, 2025-03-07. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎
Sephora settlement — California Attorney General, 2022-08-24. Checked 2026-10-17. ↩︎
AI Tech to Drive Privacy Compliance — Campus Technology, 2020-02-27. Checked 2026-10-17. ↩︎
Regulation (EU) 2016/679 (General Data Protection Regulation) — Official Journal L 119, 2016-05-04. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Proposition 24, text — CPPA copy of the 2020 ballot text (“California Privacy Rights Act of 2020”). Checked 2026-10-17. ↩︎
Laws and Regulations — CPPA. Checked 2026-10-17. ↩︎
BS EN ISO/IEC 27701:2025 — BSI, 2025-10-23. Checked 2026-10-17. ↩︎
DPDP Rules, 2025 Notified — Press Information Bureau, Government of India, 2025-11-17. Checked 2026-10-17. ↩︎ ↩︎ ↩︎
DPDP Rules, Rule 1: commencement (unofficial reproduction) — dpdpa.com, maintained by Advocate Prashant Mali; the official Gazette could not be fetched. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
CCPA Regulations, effective 2026-01-01 — CPPA. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Data (Use and Access) Act 2025: plans for commencement — GOV.UK, updated 2026-10-12. Checked 2026-10-17. ↩︎
DUAA commencement table — Bratby Law, updated 2026-08-17. Checked 2026-10-17. ↩︎ ↩︎
A guide to lawful basis — ICO, updated 2026-04-02. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
One month to go: new data law — ICO, 2026-05-19. Checked 2026-10-17. ↩︎ ↩︎
Procedure file 2025/0360(COD) — European Parliament. Checked 2026-10-18. ↩︎ ↩︎ ↩︎
Global Privacy Control (GPC) — W3C Privacy Working Group, Working Draft 2026-09-24. Checked 2026-10-17. ↩︎ ↩︎ ↩︎
ICO to become Information Commission — ICO, 2026-09-15. Checked 2026-10-17. ↩︎
Guidelines 01/2022 on the right of access, v2.0 — EDPB, adopted 2023-03-28. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Judgment in Case C-307/22, FT v DW — Court of Justice, 2023-10-26. Checked 2026-10-17. ↩︎ ↩︎
Judgment in Case C-487/21, Österreichische Datenschutzbehörde — Court of Justice, 2023-05-04. Checked 2026-10-17. ↩︎
A guide to subject access — ICO, updated 2026-07-16. Checked 2026-10-17. ↩︎ ↩︎
DPDP Rules, Rule 14 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎ ↩︎
45 CFR 164.524 — Cornell LII. Checked 2026-10-17. ↩︎
Regulation No 1182/71 on time limits — Council, 1971-06-03. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎
MeitY plans to cut short DPDP compliance timeline — S.S. Rana & Co., 2026-02-13. Checked 2026-10-17. ↩︎
How do we apply legitimate interests in practice? — ICO (legitimate interests guidance, updated 2026-03-23). Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎
Guidelines 1/2024 on Article 6(1)(f) GDPR, v1.0 — EDPB, adopted 2024-10-08 for public consultation (no final version found). Checked 2026-10-17. ↩︎ ↩︎
Recognised legitimate interest — ICO, published 2026-03-23. Checked 2026-10-18. ↩︎
How should we obtain, record and manage consent? — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎
DPDP Rules, Rule 10 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎
Right to erasure — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎
DPDP Rules, Rule 8 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎
Directive 2002/58/EC (ePrivacy), consolidated — EUR-Lex, consolidated 2009-12-19. Checked 2026-10-17. ↩︎
DPIA guidelines, WP248 rev.01 — Article 29 Working Party, revised 2017-10-04. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Recommendations 01/2020, v2.0 — EDPB, adopted 2021-06-18. Checked 2026-10-17. ↩︎ ↩︎
Implementing Decision (EU) 2021/914 (SCCs) — European Commission, 2021-06-04. Checked 2026-10-17. ↩︎
Judgment in Case T-553/23, Latombe v Commission — General Court, 2025-09-03. Checked 2026-10-17. ↩︎
Appeal in Case C-703/25 P — Official Journal C/2025/6610, 2025-12-22 (appeal lodged 2025-10-31). Checked 2026-10-17. ↩︎
The UK IDTA and the Addendum — ICO. Checked 2026-10-17. ↩︎
DPDP Rules, Rule 15 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎
Guidelines 9/2022 on breach notification, v2.0 — EDPB, adopted 2023-03-28. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎
45 CFR 164.404 — Cornell LII. Checked 2026-10-17. ↩︎
DPDP Rules, Rule 7 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎ ↩︎
Data protection and monitoring workers — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎
Regulation (EU) 2024/1689 (AI Act), Annex III — Official Journal, 2024-07-12. Checked 2026-10-17. ↩︎ ↩︎ ↩︎
Privacy Framework 1.1 — NIST (initial public draft 2025-04-14; comments closed 2025-06-13). Checked 2026-10-17. ↩︎
Privado — GitHub repository (LGPL-3.0). Checked 2026-10-17. ↩︎
Fides — Ethyca, GitHub repository (Apache-2.0; archived when checked). Checked 2026-10-17. ↩︎
Honda decision announcement — CPPA, 2025-03-12. Checked 2026-10-17. ↩︎
Proposal COM(2025) 837, Digital Omnibus — European Commission, 2025-11-19. Checked 2026-10-17. ↩︎ ↩︎
US State Privacy Legislation Tracker — IAPP, updated 2026-09-08. Checked 2026-10-17. ↩︎
Judgment in Case C-413/23 P, EDPS v SRB — Court of Justice, 2025-09-04 (para. 86). Checked 2026-10-17. ↩︎
Delete Act statute, effective 2026-01-01 — CPPA. Checked 2026-10-17. ↩︎
Procedure file 2025/0359(COD) — European Parliament (final act published 2026-07-24). Checked 2026-10-18. ↩︎