GDPR & Data Privacy Compliance Governance
In systems managing confidential personal and legal records across international jurisdictions, regulatory compliance represents an architectural boundary carrying severe liability (such as the EU GDPR and global data privacy mandates).
BitzOrcas.Platform.Gdpr provides an out-of-the-box privacy data lifecycle governance subsystem. It standardizes natural-person Subject Access Requests (SAR), Right to be Forgotten cryptographic shredding, operational log pseudonymization, and automated tenant retention purging.
1. Compliance Lifecycle Workflow
Data subject rights are exercised under dual verification and data protection officer (DPO) approval gates:
2. Right to be Forgotten & Cryptographic Shredding
When an erasure request is approved, simple logical deletion (IsDeleted = 1) is non-compliant because cleartext identifiers remain in backup archives. BitzOrcas applies irreversible physical overwriting (Cryptographic Shredding):
using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;using BitzOrcas.Application.Authorization;using BitzOrcas.Domain.Abstractions;using BitzOrcas.Domain.Results;using BitzOrcas.Endpoint.Attributes;using BitzOrcas.Platform.Gdpr.Contracts;using Mediator;
namespace BitzOrcas.Platform.Gdpr.Application.Commands;
/// <summary>/// Command executing physical erasure of personal identifiable information/// </summary>[GenerateEndpoint(HttpRoute.Post, "/api/privacy/erasure/{id}/execute", Tag = "Privacy")]public sealed record ExecuteRightToBeForgottenCommand( string RequestId, string DpoApprovalTicketNumber) : ICommand<Result>, IAuthorizedRequest{ /// <summary> /// Protected resource: privacy module erasure resource /// </summary> public ResourceDescriptor Resource { get; } = new(GdprPermissions.Module, GdprPermissions.ErasureResource);
/// <summary> /// Required authorization action /// </summary> public AuthorizationAction Action { get; } = AuthorizationAction.Manage;}
/// <summary>/// Erasure command handler/// </summary>public sealed class ExecuteRightToBeForgottenCommandHandler( IGdprStore store, IEnumerable<ISubjectDataErasureContributor> erasureContributors, IAppClock clock) : ICommandHandler<ExecuteRightToBeForgottenCommand, Result>{ public async ValueTask<Result> Handle( ExecuteRightToBeForgottenCommand command, CancellationToken cancellationToken) { // 1. Retrieve the approved data subject erasure request var request = await store.GetDsrByIdAsync(command.RequestId, cancellationToken); if (request is null) { return Result.Failure(GdprErrors.ErasureNotFound); }
// 2. Cascade physical overwriting and pseudonymization across registered domain contributors foreach (var contributor in erasureContributors) { var contributorResult = await contributor.ExecuteErasureAsync(request.SubjectId, cancellationToken); if (contributorResult.IsFailure) { return contributorResult; } }
// 3. Mark the erasure request completed to preserve compliance audit chain request.StatusCode = GdprErasureStatus.Completed.Value; request.CompletedAt = clock.UtcNow; var updateSuccess = await store.TryUpdateDsrAsync(request, GdprErasureStatus.Executing.Value, cancellationToken);
return updateSuccess ? Result.Success() : Result.Failure(GdprErrors.ErasureAlreadyClosed); }}3. Subject Access Request (SAR) Export Package
The platform compiles personal data into an AES-256 encrypted ZIP archive within statutory response windows:
- Identity Profile: Core user credentials, login histories, and security factor metadata;
- Business Artifacts: Authored tickets, uploaded documents, and associated activity records;
- Consent History: Versioned consent records and privacy policy acceptance timestamps.
4. Related Architecture Decisions & Deep Dives
- PII Encryption: EF Core Isomorphic Integration & PII Interceptors
- Audit Logging: Audit Logging Subsystem & Partitioning
- ADR Reference: ADR 0002: Production Readiness & Quality Gates