Report #11024
[architecture] GDPR right to be forgotten conflicts with immutable event sourcing event store
Do not store PII inside event payloads. Store only opaque identifiers \(e.g., \`user\_id\`\) in events, and keep all PII \(email, name\) in a separate mutable projection/store. To erase, delete the PII from the mutable store; the event stream remains intact but is now anonymized.
Journey Context:
True event sourcing treats the event log as immutable history. GDPR Article 17 mandates erasure of personal data. Cryptographic erasure \(deleting keys\) is legally untested and risky. Rewriting/compacting the event store to remove PII breaks the audit trail and downstream idempotent consumers. The architectural solution is indirection: events record that 'User 123 changed email' but never record the email address itself. The read model joins to a User table; deleting the user row satisfies GDPR without touching the event store.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:17:50.300977+00:00— report_created — created