The Ops Atlas xOps School

Security & Compliance Vendor/platform-specific label Partly verified

PrivacyOps

PrivacyOps is a vendor-coined name for running a privacy programme as an operation: knowing which personal data you hold and why, and meeting each person's rights, the impact assessments and breach duties on time, with evidence.

Key takeaways

  • PrivacyOps is Securiti's label (2019), now used by Veeam; the work it names is established privacy programme management, which the IAPP calls the privacy operational life cycle.
  • The unit of work is a person: each access, erasure or opt-out request must find that person in every system and processor, act, and leave evidence.
  • Clocks shape the design: GDPR one month (EU guidance pauses it while you check identity), CCPA 45 days that verification does not pause, India's DPDP rights and breach duties start in May 2027.
  • A current record of processing, fed by change intake, is the foundation: it gives each purpose a lawful basis chosen before processing starts, and tells rights requests and DPIAs where to look.
  • Verify identity in proportion to risk: excessive identity demands were part of a $632,500 order in 2025, and weak checks hand data to impostors.
  • Measure on-time closure, erasure completeness and record coverage, not request volume; buy a platform only after the inventory and owners exist.

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.

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 “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]

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]
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.

Figure 1. PrivacyOps and its neighbours: who hands what to whom
advice, contract clausesrisk appetite, acceptancebreach facts and timesconsent policy out, testresults backwhat must be minimised ormaskedrecords and decisions asevidenceerasure log, beyond userequests touching HR recordsLegalOpsPrivacyOps: inventory, rightscases, DPIAs, breachdecisionsRiskOpsResponseOpsMarTechOpsDataSecOpsComplianceOpsBackupOpsPeopleOps
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 (proposals):

  1. The person is the unit of work: cases, not tickets per system.
  2. Inventory before automation: a connector cannot reach a system nobody listed; the record is a legal duty (Art. 30).[12]
  3. Clocks are designed in: a due date computed on receipt, an alert at half-time.
  4. 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]
  5. Minimise your own data: case files are a new store of personal data.
  6. Evidence or it did not happen: controllers must “be able to demonstrate compliance” (Art. 5(2)).[12]
  7. Design-time gate: Art. 25 applies “at the time of the determination of the means”.[12]
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

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.

  • 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.
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]

Every box can start as a spreadsheet or a shared mailbox.

Figure 2. Reference architecture of a privacy operation
Intake: form, email, phone,agents, signalsCase management: clock,identity, scopeOrchestration: one task persystem and processorSystems and processors:find, export, delete, suppressEvidence store: actions,approvals, responseResponse to the personMetrics and auditChange intake: systems,vendors, featuresAssessments: DPIA, transfer,vendorInventory and record ofprocessingDiscovery and classificationscansConsent and preference store
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.

Figure 3. Rights request workflow with its exception paths
yesnonoyesyesnoyesnoRequest received: clockstartsOpt-out or marketingobjection?Act without verifying identity;confirm and logIdentity and scope clear?Ask for proportionate ID or aclarificationManifestly unfounded orexcessive?Refuse or charge: reasonsand complaint rightsComplex, or a temporarysurge?Extend: tell the person whywithin the first monthFind the person in everysystem and processorRedact others' data; withholdunder exemptions; recordwhyAct: export, correct, delete orstopRespond securely; close withevidence
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]

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]

Owners are in the RACI; routine checks are in the checklists.

Link to section “Playbook: lawful basis, consent records and notices”
  1. 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]
  2. 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]
  3. 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]
  4. 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]
  5. 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]
  1. Verify identity; check exceptions such as legal obligations and legal claims (Art. 17(3)(b), (e)) and legal holds.[12]
  2. 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.
  3. 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).
  4. If the person also objected to marketing, a minimal suppression entry stops re-import; agree the design with counsel.
  5. Close only when every task has evidence; tell the person what was erased, what remains and why.
  1. 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]
  2. 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.
  3. 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]

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]

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]

Figure 4. Personal-data breach decisions after the incident facts arrive
noyesyesnonoyesyesnonoyesFacts from ResponseOps:what, whose, since whenPersonal data affected?Security incident only: noprivacy noticeRecord the awareness timeUnlikely to result in a risk topeople?Breach register: facts, effects,decisionNotify the authority: 72 hours,where feasibleLikely high risk to people?Data unintelligible, or risksince removed?Individual noticesdisproportionate?Tell people without unduedelay, in plain languagePublic communication instead
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]

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.

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]

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

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.

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"]
}

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.

  1. 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
  1. 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}")
  1. 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.

  1. 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
  1. 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")
  1. 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
  1. 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

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
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 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.

  • 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.
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”
Figure 5. Runbook for erased records resurrected by a restore
noyesyesnoComplaint: erased personcontacted againOpen an incident and aprivacy caseRestore since the erasuredate?Look for a missed system orprocessorList erasures between backupdate and restoreRe-apply the erasure log tothe restored storeFix the gap; delete; confirmCheck downstream copiesmade since restoreWas the data used ordisclosed?Assess as a personal-databreachClose with evidence; tell theperson
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.

  1. Contain (hours 0–2): pause sends from the restored database; open a privacy case linked to the incident.
  2. Diagnose (hours 2–8): confirm the backup’s point in time; query the erasure log up to the restore (here, 37 erasures).
  3. Re-apply (day 1): run the 37 deletions on the restored store and on copies made since; collect evidence per system.
  4. Assess (days 1–2): decide with counsel whether this is a reportable breach; record the reasoning in the breach register either way.[12]
  5. Communicate: apologise to the complainant; decide whether to tell the other 36.
  6. Prevent: make “re-apply erasure log” a mandatory restore step with BackupOps and test it in the next drill.
  • “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]

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.

Figure 6. How much privacy operation to build (Atlas heuristic)
noyesnoyesyesnonoyesyesnoRights apply to you?Basic hygiene; re-check onexpansionSystems, owners listed?First: inventory and owners,no platformHigh-risk processing?DPIA capability and DPOadvice nowOver ~20 requests a month?Owner, tracker, runbooksSystems reachable by API?Case tool plus connectorsFix export and delete pathsfirst
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.

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
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.

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

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]

  • 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]
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
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.

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?

28 February (no 31 February), moved to the next working day if that is a weekend or holiday; an identity pause or a lawful extension notified within the first month moves it further.[26][32]

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?

Several WP248 criteria (monitoring, vulnerable people, evaluation), so a DPIA before launch;[42] in the EU, the AI Act’s high-risk category;[53] worker information and consultation where required.[52]

4. Ransomware encrypted a file server with HR records; backups are intact and no exfiltration is found. Notify?

An availability breach of personal data still needs a risk assessment. If it is unlikely to result in a risk, document it without notifying; if not, notify within 72 hours of awareness, and tell staff if the risk is high.[12][49]

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]

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.

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.


  1. Securiti unveils the first-ever ‘PrivacyOps’ platform — Securiti, 2019-08-08. Checked 2026-10-17. ↩︎ ↩︎

  2. Automating Privacy Operations Across Your Organization — Rehan Jalil, Securiti, 2019 (ISBN 978-1-7333560-0-8; Bista Solutions copy). Checked 2026-10-17. ↩︎

  3. Securiti launches free certification program — Training Industry (Securiti release), 2021-09-30. Checked 2026-10-17. ↩︎ ↩︎

  4. Veeam completes USD $1.725b AI security takeover — SecurityBrief Australia, 2025-12-17. Checked 2026-10-17. ↩︎

  5. Veeam on the 2026 Gartner Magic Quadrant for Privacy UX — Rehan Jalil, Veeam blog, 2026-10-15. Checked 2026-10-17. ↩︎ ↩︎

  6. CIPM Body of Knowledge, version 4.2.0 — IAPP, approved 2025-01-16, effective 2025-09-01. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎

  7. NIST Privacy Framework, Version 1.0 — NIST, 2020-01-16. Checked 2026-10-17. ↩︎ ↩︎

  8. Revision of ISO/IEC 27701 — DNV (certification body), on the edition published 2025-10-14. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎

  9. Order, American Honda Motor Co., ENF23-V-HO-2 — CPPA Board, 2025-03-07. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎

  10. Sephora settlement — California Attorney General, 2022-08-24. Checked 2026-10-17. ↩︎

  11. AI Tech to Drive Privacy Compliance — Campus Technology, 2020-02-27. Checked 2026-10-17. ↩︎

  12. Regulation (EU) 2016/679 (General Data Protection Regulation) — Official Journal L 119, 2016-05-04. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  13. Proposition 24, text — CPPA copy of the 2020 ballot text (“California Privacy Rights Act of 2020”). Checked 2026-10-17. ↩︎

  14. Laws and Regulations — CPPA. Checked 2026-10-17. ↩︎

  15. BS EN ISO/IEC 27701:2025 — BSI, 2025-10-23. Checked 2026-10-17. ↩︎

  16. DPDP Rules, 2025 Notified — Press Information Bureau, Government of India, 2025-11-17. Checked 2026-10-17. ↩︎ ↩︎ ↩︎

  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. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  18. CCPA Regulations, effective 2026-01-01 — CPPA. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  19. Data (Use and Access) Act 2025: plans for commencement — GOV.UK, updated 2026-10-12. Checked 2026-10-17. ↩︎

  20. DUAA commencement table — Bratby Law, updated 2026-08-17. Checked 2026-10-17. ↩︎ ↩︎

  21. A guide to lawful basis — ICO, updated 2026-04-02. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  22. One month to go: new data law — ICO, 2026-05-19. Checked 2026-10-17. ↩︎ ↩︎

  23. Procedure file 2025/0360(COD) — European Parliament. Checked 2026-10-18. ↩︎ ↩︎ ↩︎

  24. Global Privacy Control (GPC) — W3C Privacy Working Group, Working Draft 2026-09-24. Checked 2026-10-17. ↩︎ ↩︎ ↩︎

  25. ICO to become Information Commission — ICO, 2026-09-15. Checked 2026-10-17. ↩︎

  26. Guidelines 01/2022 on the right of access, v2.0 — EDPB, adopted 2023-03-28. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  27. Judgment in Case C-307/22, FT v DW — Court of Justice, 2023-10-26. Checked 2026-10-17. ↩︎ ↩︎

  28. Judgment in Case C-487/21, Österreichische Datenschutzbehörde — Court of Justice, 2023-05-04. Checked 2026-10-17. ↩︎

  29. A guide to subject access — ICO, updated 2026-07-16. Checked 2026-10-17. ↩︎ ↩︎

  30. DPDP Rules, Rule 14 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎ ↩︎

  31. 45 CFR 164.524 — Cornell LII. Checked 2026-10-17. ↩︎

  32. Regulation No 1182/71 on time limits — Council, 1971-06-03. Checked 2026-10-18. ↩︎ ↩︎ ↩︎ ↩︎

  33. MeitY plans to cut short DPDP compliance timeline — S.S. Rana & Co., 2026-02-13. Checked 2026-10-17. ↩︎

  34. How do we apply legitimate interests in practice? — ICO (legitimate interests guidance, updated 2026-03-23). Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎

  35. 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. ↩︎ ↩︎

  36. Recognised legitimate interest — ICO, published 2026-03-23. Checked 2026-10-18. ↩︎

  37. How should we obtain, record and manage consent? — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎

  38. DPDP Rules, Rule 10 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎

  39. Right to erasure — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎

  40. DPDP Rules, Rule 8 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎

  41. Directive 2002/58/EC (ePrivacy), consolidated — EUR-Lex, consolidated 2009-12-19. Checked 2026-10-17. ↩︎

  42. DPIA guidelines, WP248 rev.01 — Article 29 Working Party, revised 2017-10-04. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  43. Recommendations 01/2020, v2.0 — EDPB, adopted 2021-06-18. Checked 2026-10-17. ↩︎ ↩︎

  44. Implementing Decision (EU) 2021/914 (SCCs) — European Commission, 2021-06-04. Checked 2026-10-17. ↩︎

  45. Judgment in Case T-553/23, Latombe v Commission — General Court, 2025-09-03. Checked 2026-10-17. ↩︎

  46. Appeal in Case C-703/25 P — Official Journal C/2025/6610, 2025-12-22 (appeal lodged 2025-10-31). Checked 2026-10-17. ↩︎

  47. The UK IDTA and the Addendum — ICO. Checked 2026-10-17. ↩︎

  48. DPDP Rules, Rule 15 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎

  49. Guidelines 9/2022 on breach notification, v2.0 — EDPB, adopted 2023-03-28. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎

  50. 45 CFR 164.404 — Cornell LII. Checked 2026-10-17. ↩︎

  51. DPDP Rules, Rule 7 (unofficial) — dpdpa.com. Checked 2026-10-17. ↩︎ ↩︎

  52. Data protection and monitoring workers — ICO, undated (under review). Checked 2026-10-17. ↩︎ ↩︎

  53. Regulation (EU) 2024/1689 (AI Act), Annex III — Official Journal, 2024-07-12. Checked 2026-10-17. ↩︎ ↩︎ ↩︎

  54. Privacy Framework 1.1 — NIST (initial public draft 2025-04-14; comments closed 2025-06-13). Checked 2026-10-17. ↩︎

  55. Presidio — GitHub repository (MIT). Checked 2026-10-17. ↩︎

  56. Privado — GitHub repository (LGPL-3.0). Checked 2026-10-17. ↩︎

  57. Fides — Ethyca, GitHub repository (Apache-2.0; archived when checked). Checked 2026-10-17. ↩︎

  58. Honda decision announcement — CPPA, 2025-03-12. Checked 2026-10-17. ↩︎

  59. Proposal COM(2025) 837, Digital Omnibus — European Commission, 2025-11-19. Checked 2026-10-17. ↩︎ ↩︎

  60. US State Privacy Legislation Tracker — IAPP, updated 2026-09-08. Checked 2026-10-17. ↩︎

  61. Judgment in Case C-413/23 P, EDPS v SRB — Court of Justice, 2025-09-04 (para. 86). Checked 2026-10-17. ↩︎

  62. Delete Act statute, effective 2026-01-01 — CPPA. Checked 2026-10-17. ↩︎

  63. Procedure file 2025/0359(COD) — European Parliament (final act published 2026-07-24). Checked 2026-10-18. ↩︎

Related Ops

DataSecOps

DataSecOps is a vendor-promoted label for building security into data platform operations: classifying data, enforcing who may see which rows and columns, masking or tokenising sensitive fields, and proving it from access logs.

ComplianceOps

ComplianceOps runs regulatory and contractual compliance as a continuous operation: one library of controls mapped to every framework in scope, evidence collected and tested on a schedule, exceptions with expiry dates, and audits served from records that already exist.

LegalOps

LegalOps (legal operations) runs an in-house legal function as a service business: one front door for requests, contract lifecycle management, managed outside counsel and spend, defensible legal holds, and data that shows what legal work costs and how fast it moves.

ResponseOps

In this Atlas, ResponseOps is security incident response run as an operational capability: contain an active adversary, preserve evidence, evict and recover cleanly, and meet notification duties. The label itself is not a standard term.

MarTechOps

MarTechOps (marketing technology operations) designs and runs the plumbing of the marketing stack: how tools connect, how customer data and consent signals flow between them, which tags fire, and which tools the company keeps.

RiskOps

RiskOps, as this Atlas uses it, is the day-to-day operation of risk decisions: appetite and tolerances, a live risk register, quantification where it pays, and acceptance, treatment or transfer by the owner with the authority, with an expiry. The label has no standard meaning.

PeopleOps

PeopleOps (people operations) runs an organisation's employee lifecycle (hiring, onboarding, moves, pay, performance and exits) as a reliable, measured operation built on one trusted system of record, clear owners and service levels.

BackupOps

BackupOps is a rare label for backup and recovery operations: keeping independent, protected copies of data and proving with scheduled restore tests that they can be restored recently enough and fast enough for the business.

Practise and get certified

From xOps School

Practise PrivacyOps and get certified

The PrivacyOps track on xOps School (part of the Coffee Pass) has study notes, a 25-question practice quiz with explanations, and a verifiable certificate when you score 70% or more. Sign in with Google to start.

For teams

Instructor-led training

Live batches for your team, with completion certificates and reports for L&D/HR.

Source: master.md (the editorial source of this page) · built 2026-10-18 · diagrams rendered with @mermaid-js/mermaid-cli 11.17.0 (mermaid 11.17.2)