figma guide

Designing records of processing activities (ROPA) and data mapping UI in Figma: inventory, lawful basis, and retention

Design ROPA and data mapping admin UI in Figma with processing activity records, data flow diagrams, lawful basis tags, retention schedules, and DSAR linkage for Privacy teams.

Published
Updated
Aug 03, 2026
Read time
8 min
Level
Intermediate

Quick answer

A records of processing activities (ROPA) is the GDPR Article 30 register—and the operational backbone for DSAR fulfillment, DPIA scoping, and vendor reviews. Design a processing activity catalog with purpose, data categories, lawful basis, recipients, retention, and cross-border flags; a data mapping canvas showing flows between systems; and linkage fields that connect each activity to subprocessors, DSAR request types, and PIA/DPIA assessments. Start from the Figma guides hub and pair with DSAR portal, DPA hub, data retention policies, privacy settings, and Dev Mode handoff.


Who this is for

  • Product designers building privacy ops consoles for B2B SaaS, fintech, or healthcare platforms.
  • Design system teams standardizing activity cards, lawful-basis chips, and data-category tags across compliance modules.
  • Privacy officers and DPOs who need ROPA accuracy tied to engineering reality—not a spreadsheet that rots after launch.

ROPA hub (internal admin overview)

ROPAHub — Acme Privacy · 127 processing activities · 14 stale >90 days
├── Header: Coverage 94% systems mapped · 3 activities missing lawful basis · Last export Aug 1
├── Actions: [ New activity ] [ Import from CMDB ] [ Export Art. 30 PDF ] [ Run gap scan ]
├── Tabs: Activity register · Data flows · Categories · Retention · DSAR links · Audit trail
├── Alert: PA-442 "Marketing analytics" · Subprocessor changed · Review due in 5 days
├── Filters: Business unit · Lawful basis · Contains special category · Cross-border transfer
└── Link: [DPA hub](/designing-data-processing-agreements-and-subprocessor-management-ui-in-figma/) · PIA registry · Trust center
SectionPurpose
Activity registerCanonical list of processing activities with required Art. 30 fields
Data flowsVisual map from collection → storage → sharing → deletion
CategoriesPersonal data types, special categories, pseudonymization flags
RetentionPer-activity schedules linked to auto-deletion jobs
DSAR linksWhich request types touch which activities
Audit trailWho changed lawful basis, retention, or subprocessors

Verdict: ROPA UI is the source of truth Privacy shares with Engineering, Legal, and Sales—if DSAR fulfillment cannot trace a request to activities, the register is decorative.


Processing activity record (detail view)

ActivityDetail — PA-118 · Customer account management · Owner: @product-privacy
├── Identity: Name · Internal ID · Business unit · Product surface · Status: Active
├── Purpose: Provide SaaS account, billing, support · Plain language + legal summary
├── Data subjects: Customers · Prospects · Employees (support staff) · Multi-select
├── Data categories:
│   ├── Identity (name, email) · Contact · Financial (invoices) · Usage telemetry
│   └── Special category: None · Sensitive flags: Payment card (tokenized)
├── Lawful basis: Contract (Art. 6(1)(b)) · Legitimate interest assessment link
├── Recipients / subprocessors:
│   ├── Stripe · DPA signed · US transfer · [View in DPA hub]
│   └── Zendesk · Support tickets · EU region
├── Retention: Active account + 7 years invoices · See [retention policy RP-09]
├── Security measures: Encryption at rest · RBAC · Link [security posture dashboard]
├── Cross-border: US · SCC Module 2 · Transfer impact assessment TIA-03
├── DSAR mapping: Access · Delete · Portability · Restriction (partial)
└── [ Save draft ] [ Submit for DPO review ] [ Mark deprecated ]
Art. 30 fieldUI pattern
PurposeShort title + expandable legal description
Data categoriesControlled vocabulary tags; warn on free-text drift
Lawful basisSingle primary + optional secondary; chip color by type
RecipientsSubprocessor picker synced to DPA registry
RetentionDuration + trigger event (account closure, contract end)
Cross-borderCountry chips + transfer mechanism badge
SecurityChecklist + link to technical controls doc

Every activity needs an owner and review cadence—show “last reviewed” and overdue badge like vendor risk assessments.

Deprecated activities stay visible with end date—do not hard-delete; DSAR historical requests may reference them.


Data mapping canvas

DataMapCanvas — Product: Acme CRM · View: Collection to deletion
├── Nodes: Web app · Mobile SDK · Postgres · S3 exports · Segment · Salesforce · Snowflake
├── Edges: Label with data category + lawful basis + encryption in transit
├── Collection points: Signup form · API · Import CSV · Highlight [forms patterns](/designing-forms-in-figma-inputs-states-and-handoff/)
├── Storage: Primary DB · Backups (90-day) · Analytics warehouse (aggregated)
├── Sharing: Subprocessor edges dashed until DPA verified
├── Deletion path: Account delete job · Backup purge · Warehouse TTL
└── Legend: Personal · Pseudonymized · Aggregated · Special category
Canvas elementDesign note
Node typesFirst-party system, subprocessor, internal team
Edge labelsMinimize clutter—hover for full category list
Unmapped nodeRed outline from CMDB import gap scan
Version diffSide-by-side before/after when engineering changes architecture
ExportPNG for audit evidence + structured JSON for tooling

The canvas complements the register—it answers “where does this email address go?” faster than scrolling table rows.

Pair unmapped flows with SIEM connector inventory when logs contain personal data not yet in ROPA.


Lawful basis and LIA linkage

LawfulBasisPanel — PA-118 · Primary: Contract
├── Basis options (radio): Consent · Contract · Legal obligation · Vital interests · Public task · Legitimate interest
├── Consent path: Link [cookie consent](/designing-cookie-consent-and-tracking-preference-ui-in-figma/) category · Withdrawal impact note
├── Legitimate interest: LIA document upload · Balancing test summary · Objection handling link
├── Special category (Art. 9): Explicit consent · Employment law · Sub-flag required
├── Change request: Switching basis requires DPO approval workflow
└── History: Contract → Legitimate interest blocked Aug 2025 · Legal comment attached
BasisUI guardrail
ConsentShow consent source; block if CMP category disabled
ContractWarn if processing exceeds contract necessity
Legitimate interestRequire LIA attachment before publish
Legal obligationCite statute field mandatory

Switching lawful basis mid-life is high-risk—use approval states similar to DPIA gates.


Retention and deletion linkage

RetentionLink — PA-118 · Policy RP-09 · Account billing records
├── Schedule: 7 years from invoice date · Legal hold overrides pause timer
├── Systems affected: Postgres invoices · S3 PDFs · Stripe (processor retention note)
├── Deletion job: nightly_invoice_archive_purge · Last run Aug 2 · 0 errors
├── DSAR impact: Delete request may retain invoices if legal obligation basis applies—surface in [DSAR workspace](/designing-data-subject-access-request-and-gdpr-portal-ui-in-figma/)
└── [ Edit schedule ] [ View legal hold banner ] [ Open data retention admin](/designing-data-retention-policies-and-auto-deletion-ui-in-figma/)

Retention UI must show conflicts: user requests erasure vs legal obligation to retain tax records—display resolution copy for both admin and data subject views.

Link auto-deletion failures to audit log and compliance exports when regulators request proof of deletion.


DSAR and PIA integration

IntegrationPanel — PA-118 · Downstream links
├── DSAR request types: Access (full) · Delete (partial—retain invoices) · Portability (profile JSON)
├── Fulfillment checklist auto-populated in [DSAR admin workspace](/designing-data-subject-access-request-and-gdpr-portal-ui-in-figma/)
├── PIA/DPIA: DPIA-2024-07 attached · Next review Mar 2027
├── High-risk flag: No · Special category: No · Automated decision-making: No
└── Trust center: Public summary paragraph · Sync to [trust center CMS](/designing-trust-center-and-security-documentation-ui-in-figma/)
LinkWhy it matters
DSAR typesAnalysts know which systems to query per request
PIA registryNew activity triggers DPIA if thresholds met
Subprocessor changesAuto-create review task when DPA hub updates vendor
Trust centerMarketing-facing processing summary stays aligned

When DSAR post mentions “Portal disconnected from ROPA,” this integration is the fix—design the bidirectional link in both UIs.


Handoff checklist (Dev Mode)

  • Activity — id, name, status, owner, business_unit, last_reviewed_at.
  • Purpose — short_description, legal_description, data_subjects[].
  • Categories — personal_data_types[], special_category_flag, sensitive_flags[].
  • Lawful basis — primary_basis, secondary_basis, lia_document_id.
  • Recipients — subprocessor_ids[], internal_teams[].
  • Retention — policy_id, duration_rule, trigger_event, legal_hold_override.
  • Transfer — countries[], mechanism (SCC, adequacy, BCR), tia_id.
  • DSAR mapping — request_types[], partial_denial_notes.
  • Flow node — system_id, node_type, position, connected_edges[].
  • Accessibility — register table sortable; canvas has list alternative view.

Common mistakes

MistakeWhy it hurtsFix
ROPA as static PDF onlyCannot drive DSAR or deletion jobsStructured admin register + export
Free-text lawful basisInconsistent Art. 6 claimsControlled basis picker + LIA gate
Subprocessors not syncedArticle 30 incompleteLive link to DPA hub
No owner or review dateStale after product launchOverdue badges + quarterly review queue
Canvas disconnected from registerTwo conflicting truthsSingle system IDs on nodes
Missing DSAR mappingSlow fulfillmentAuto-checklist per request type
Retention without system bindingDeletion never runsLink to retention job IDs
Special category buried in notesArt. 9 violationsExplicit flag + DPIA trigger
Deprecated activities hiddenHistorical DSAR gapsArchive state with end date
Public trust center out of syncRegulatory mismatchPublish subset from same record

  1. Design activity register with Art. 30 required fields and DPO approval states.
  2. Build data mapping canvas with CMDB import and gap scan alerts.
  3. Wire lawful basis panel with LIA and consent source links.
  4. Connect retention schedules to auto-deletion admin.
  5. Link DSAR request types so fulfillment checklists auto-populate.
  6. Sync subprocessors from DPA hub and trigger review tasks on vendor changes.
  7. Export Art. 30 register for audits and compliance evidence.

FAQ

ROPA vs PIA/DPIA registry?

ROPA lists all processing activities (Article 30). DPIA is an impact assessment for high-risk processing—a subset of activities link to one or more DPIA records.

How does ROPA help DSAR fulfillment?

Each request type maps to activities → systems → export scripts. Analysts start from the checklist instead of tribal knowledge.

Engineering CMDB import?

Allow system nodes to import from service catalog; Privacy enriches with categories, basis, and retention—show unmapped systems in red.

US state laws without Article 30?

Many teams maintain one processing inventory with jurisdiction tags (GDPR, CPRA, etc.)—filter views, single backend.

Consent-based activities must reference CMP category and policy version—changing banner categories flags affected ROPA rows for review.


Next steps

Share on X

§ Keep reading

Related guides.