diff --git a/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml b/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml
index 478f2ef..061658f 100644
--- a/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml
+++ b/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml
@@ -51,6 +51,10 @@ formElementSections:
sectionSpawnConditionType: SHOW
sectionSpawnExpectedValue: Einführung
sectionSpawnOperator: EQUALS
+ - templateReference: datenschutz_template
+ sectionSpawnConditionType: SHOW
+ sectionSpawnExpectedValue: Einführung
+ sectionSpawnOperator: EQUALS
# Einführung: Allgemeine Informationen
- title: Allgemeine Informationen
@@ -1151,3 +1155,339 @@ formElementSections:
label: Bemerkungen
processingPurpose: SYSTEM_OPERATION
employeeDataCategory: NON_CRITICAL
+
+# Eingabeseite 6: Datenschutz (Spawned)
+- title: Datenschutz
+ shortTitle: Datenschutz
+ description: Datenschutzrechtliche Angaben zur Datenverarbeitung
+ spawnedFromElementReference: art_der_massnahme
+ formElementSubSections:
+
+ # Datenschutz-Übersicht (nur Anzeige)
+ - title: Datenschutz-Übersicht (nur Anzeige)
+ formElements:
+ - reference: datenschutz_uebersicht_tabelle
+ title: Datenschutz-Übersicht
+ description: Übersicht der Verarbeitungsvorgänge mit Datenschutz-relevanten Informationen (automatisch aus vorherigen Seiten befüllt)
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ - sourceColumnIndex: 1
+ targetColumnIndex: 1
+ - sourceColumnIndex: 11
+ targetColumnIndex: 2
+ - sourceColumnIndex: 4
+ targetColumnIndex: 3
+ canAddRows: false
+ options:
+ # Column 0: VV-ID (auto-populated from umfassende_datenverarbeitung_tabelle)
+ - value: '["V001", "V002", "V003", "V004", "V005"]'
+ label: VV-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ # Column 1: Bezeichnung (auto-populated)
+ - value: '["Personalstammdatenpflege", "Zeiterfassung", "Gehaltsabrechnung", "Leistungsbeurteilung", "Produktionsauswertung"]'
+ label: Bezeichnung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 1
+ isReadOnly: true
+ # Column 2: Kontrolle? (auto-populated from column 11)
+ - value: '["false", "true", "false", "true", "true"]'
+ label: Kontrolle?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 11
+ isReadOnly: true
+ # Column 3: Datenumfang (auto-populated from column 4)
+ - value: '["Stammdaten", "Arbeitszeitdaten", "Gehaltsdaten", "Leistungsdaten", "Produktionsdaten"]'
+ label: Datenumfang (S3)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 4
+ isReadOnly: true
+ # Column 4: Schnittstellen Count
+ - value: '["1", "1", "1", "1", "1"]'
+ label: Schnittstellen (S5)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 5: Verbundene IT-Systeme
+ - value: '["SAP Analytics Cloud", "SAP HR Controlling", "ELSTER", "SAP HR Management Reporting", "SAP Quality Management"]'
+ label: Verbundene IT-Systeme (Schnittstellen)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 6: Retention
+ - value: '["Ja", "Ja", "Ja", "Ja", "Ja"]'
+ label: Retention (S4)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+
+ # 1. Auftragsdatenverarbeitung / Gemeinsame Verantwortlichkeit / Dritter
+ - title: Auftragsdatenverarbeitung und Verantwortlichkeit
+ formElements:
+ - reference: datenschutz_verantwortlichkeit_art
+ title: Liegt eine Auftragsdatenverarbeitung nach Art. 28 DSGVO oder eine gemeinsame Verantwortlichkeit im Sinne von Art. 26 DSGVO vor?
+ description: ''
+ type: CHECKBOX
+ options:
+ - value: 'true'
+ label: Auftragsdatenverarbeitung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'true'
+ label: Gemeinsame Verantwortlichkeit
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'false'
+ label: Dritter als eigenständiger Verantwortlicher
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'false'
+ label: Nein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1a. Auftragsdatenverarbeitung Table
+ - title: Auftragsdatenverarbeitung
+ formElements:
+ - reference: datenschutz_adv_tabelle
+ title: Auftragsdatenverarbeitung
+ description: Angaben zu Auftragsdatenverarbeitern
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Auftragsdatenverarbeitung
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '["SAP SE (Cloud Services)", "Amazon Web Services EMEA SARL"]'
+ label: Auftragsdatenverarbeiter
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["V001", "V005"]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '["Hosting", "Hosting"]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["IF001", "IF005"]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_umfassend_tabelle
+ sourceColumnIndex: 0
+ - value: '["Stammdaten", "Produktionsdaten"]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["Name, Adresse, Personalnummer, Bankverbindung", "Stückzahlen, Fehlerquoten, Maschinenzeiten"]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["JA", "JA"]'
+ label: Auftragsdatenverarbeitungsvertrag vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["JA", "NEIN"]'
+ label: Subprozessoren vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["Europäische Union", "Europäische Union"]'
+ label: Hosting / Region
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["SAP Cloud Platform Deutschland (Frankfurt)", "AWS eu-central-1 (Frankfurt)"]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1b. Gemeinsame Verantwortlichkeit Table
+ - title: Gemeinsame Verantwortlichkeit
+ formElements:
+ - reference: datenschutz_gemeinsam_tabelle
+ title: Gemeinsame Verantwortlichkeit
+ description: Angaben zur gemeinsamen Verantwortlichkeit
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Gemeinsame Verantwortlichkeit
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '["Betriebsrat", "Konzern-IT"]'
+ label: Gemeinsame Verantwortlichkeit mit
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["V002", "V005"]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '["IF002", "IF005"]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_umfassend_tabelle
+ sourceColumnIndex: 0
+ - value: '["Arbeitszeitdaten", "Produktionsdaten"]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["An-/Abmeldezeiten, Pausenzeiten, Überstunden", "Stückzahlen, Fehlerquoten, Maschinenzeiten"]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["Zugriff auf Zeiterfassungsdaten für Arbeitszeitüberwachung", "Zugriff auf Produktionsdaten für Kapazitätsplanung"]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["JA", "JA"]'
+ label: Vereinbarung nach Art. 26 Abs. 1 S. 2 DSGVO vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["Datenschutz, Arbeitszeitrecht", "Betriebliche Mitbestimmung"]'
+ label: Wesentliche Inhalte
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["Datenschutzvereinbarung mit Betriebsrat gemäß § 75 Abs. 2 BetrVG", "Konzern-Datenschutzvereinbarung"]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1c. Aufteilung der Verantwortlichkeiten
+ - title: Aufteilung der Verantwortlichkeiten
+ formElements:
+ - reference: datenschutz_aufteilung_tabelle
+ title: Aufteilung der Verantwortlichkeiten
+ description: Aufteilung der Verantwortlichkeiten
+ type: TABLE
+ options:
+ - value: '["Datenerhebung", "Datenverarbeitung", "Datenlöschung", "Betroffenenrechte", "Incident Response"]'
+ label: Pflichtbereich
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["Unternehmen", "Gemeinsam", "Unternehmen", "Unternehmen", "Gemeinsam"]'
+ label: Verantwortlich (Unternehmen / Partner / Gemeinsam)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["Erfassung durch Mitarbeiter oder automatisiert", "Beide Parteien können Daten verarbeiten im Rahmen ihrer Zuständigkeit", "Automatisierte Löschung durch Unternehmen gemäß Löschkonzept", "Zentrale Stelle beim Unternehmen", "Koordinierte Meldung an Aufsichtsbehörde"]'
+ label: Beschreibung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 2. Datenschutz-Folgenabschätzung (DSFA)
+ - title: Datenschutz-Folgenabschätzung
+ formElements:
+ - reference: datenschutz_dsfa_tabelle
+ title: Ist eine Datenschutz-Folgenabschätzung erforderlich?
+ description: Angaben zur DSFA
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ canAddRows: false
+ options:
+ - value: '["V001", "V002", "V003", "V004", "V005"]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ - value: '["NEIN", "JA", "NEIN", "JA", "JA"]'
+ label: Kontrolle beabsichtigt? (Auto)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ isReadOnly: true
+ - value: '["NEIN", "JA", "NEIN", "JA", "JA"]'
+ label: DSFA erforderlich?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["N/A", "JA", "N/A", "JA", "JA"]'
+ label: DSFA durchgeführt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["N/A", "NEIN", "N/A", "NEIN", "NEIN"]'
+ label: Ergebnis Hohes Risiko verbleibt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["N/A", "NEIN", "N/A", "NEIN", "NEIN"]'
+ label: Konsultation erforderlich und erfolgt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '["Keine Kontrolle, keine DSFA erforderlich", "DSFA durchgeführt, Risiken minimiert durch TOMs", "Nur Finanzdaten, keine Kontrolle", "DSFA durchgeführt, 4-Augen-Prinzip implementiert", "DSFA durchgeführt, nur Team-Level Aggregation"]'
+ label: Bemerkungen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 3. Drittstaatenübermittlung
+ - title: Drittstaatenübermittlung
+ formElements:
+ - reference: datenschutz_drittstaaten
+ title: Ist eine Übermittlung von Arbeitnehmerdaten an Drittstaaten außerhalb der Europäischen Union oder des Europäischen Wirtschaftsraumes geplant?
+ description: ''
+ type: RADIOBUTTON
+ options:
+ - value: ''
+ label: Ja
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'true'
+ label: Nein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 4. Technische und organisatorische Maßnahmen (TOMs)
+ - title: Technische und organisatorische Maßnahmen
+ formElements:
+ - reference: datenschutz_toms_tabelle
+ title: Welche technischen und organisatorischen Maßnahmen werden vom Unternehmen und ggf. dem Auftragsverarbeiter / gemeinsamen Verantwortlichen zum Schutz von Arbeitnehmerdaten ergriffen?
+ description: TOMs zum Schutz personenbezogener Daten
+ type: TABLE
+ options:
+ - value: '["Zugriffskontrolle (RBAC)", "Protokollierung/Audit", "Transportverschlüsselung", "Verschlüsselung at Rest", "Berechtigungsreview", "Incident-Handling", "Backup/Recovery", "Löschung/Retention technisch"]'
+ label: TOM-Baustein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ - value: '["Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja"]'
+ label: Umgesetzt?
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '["SAP Rollenkonzept mit feingranulierten Berechtigungen (siehe Seite 2)", "SAP Security Audit Log (SM20), SIEM-Integration", "TLS 1.3 für alle externen Verbindungen, SAP Secure Network Communications (SNC)", "SAP HANA Native Encryption, Datenbank-Verschlüsselung mit AES-256", "Halbjährliches Berechtigungsreview durch HRBP und IT Security", "Incident Response Plan gemäß ISO 27001, 24/7 SOC", "Tägliche Backups, 30 Tage Aufbewahrung, Disaster Recovery-Test quartalsweise", "Verweis Seite 4 - Automatisierte Löschprozesse gemäß Löschkonzept"]'
+ label: Kurzbeschreibung / Referenz
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
diff --git a/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml b/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml
index 9f169f0..562bc04 100644
--- a/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml
+++ b/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml
@@ -51,6 +51,10 @@ formElementSections:
sectionSpawnConditionType: SHOW
sectionSpawnExpectedValue: Einführung
sectionSpawnOperator: EQUALS
+ - templateReference: datenschutz_template
+ sectionSpawnConditionType: SHOW
+ sectionSpawnExpectedValue: Einführung
+ sectionSpawnOperator: EQUALS
# Einführung: Allgemeine Informationen
- title: Allgemeine Informationen
@@ -2836,3 +2840,863 @@ formElementSections:
label: Rechtsgrundlage
processingPurpose: DATA_ANALYSIS
employeeDataCategory: SENSITIVE
+
+# Eingabeseite 6: Datenschutz (comprehensive template)
+- title: Datenschutz
+ shortTitle: Datenschutz
+ description: Datenschutzrechtliche Angaben zur Datenverarbeitung
+ isTemplate: true
+ templateReference: datenschutz_template
+ titleTemplate: Datenschutz
+ formElementSubSections:
+
+ # Datenschutz-Übersicht (nur Anzeige) - Einfache Darstellung
+ - title: Datenschutz-Übersicht (nur Anzeige)
+ formElements:
+ - reference: datenschutz_uebersicht_einfach_tabelle
+ title: Datenschutz-Übersicht
+ description: Übersicht der Verarbeitungsvorgänge mit Datenschutz-relevanten Informationen (automatisch aus vorherigen Seiten befüllt)
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ - sourceColumnIndex: 1
+ targetColumnIndex: 1
+ - sourceColumnIndex: 4
+ targetColumnIndex: 3
+ canAddRows: false
+ options:
+ # Column 0: VV-ID (from einfache_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: VV-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ # Column 1: Bezeichnung (from einfache_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: Bezeichnung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 1
+ isReadOnly: true
+ # Column 2: Kontrolle? (always "Nein" for simple case)
+ - value: '[]'
+ label: Kontrolle?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ isReadOnly: true
+ # Column 3: Datenumfang (from einfache_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: Datenumfang (S3)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 4
+ isReadOnly: true
+ # Column 4: Schnittstellen Count (manual entry showing count from S5)
+ - value: '[]'
+ label: Schnittstellen (S5)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 5: Verbundene IT-Systeme (manual entry based on interfaces)
+ - value: '[]'
+ label: Verbundene IT-Systeme (Schnittstellen)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 6: Retention (manual entry - Ja/Nein from S4)
+ - value: '[]'
+ label: Retention (S4)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+
+ # Datenschutz-Übersicht (nur Anzeige) - Umfassende Darstellung
+ - title: Datenschutz-Übersicht (nur Anzeige)
+ formElements:
+ - reference: datenschutz_uebersicht_tabelle
+ title: Datenschutz-Übersicht
+ description: Übersicht der Verarbeitungsvorgänge mit Datenschutz-relevanten Informationen (automatisch aus vorherigen Seiten befüllt)
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ - sourceColumnIndex: 1
+ targetColumnIndex: 1
+ - sourceColumnIndex: 11
+ targetColumnIndex: 2
+ - sourceColumnIndex: 4
+ targetColumnIndex: 3
+ canAddRows: false
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ # Column 0: VV-ID (from umfassende_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: VV-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ # Column 1: Bezeichnung (from umfassende_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: Bezeichnung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 1
+ isReadOnly: true
+ # Column 2: Kontrolle? (from umfassende_datenverarbeitung_tabelle column 11, read-only)
+ - value: '[]'
+ label: Kontrolle?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 11
+ isReadOnly: true
+ # Column 3: Datenumfang (from umfassende_datenverarbeitung_tabelle, read-only)
+ - value: '[]'
+ label: Datenumfang (S3)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 4
+ isReadOnly: true
+ # Column 4: Schnittstellen Count (manual entry showing count from S5)
+ - value: '[]'
+ label: Schnittstellen (S5)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 5: Verbundene IT-Systeme (manual entry based on interfaces)
+ - value: '[]'
+ label: Verbundene IT-Systeme (Schnittstellen)
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ # Column 6: Retention (manual entry - Ja/Nein from S4)
+ - value: '[]'
+ label: Retention (S4)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+
+ # 1. Auftragsdatenverarbeitung / Gemeinsame Verantwortlichkeit / Dritter
+ - title: Auftragsdatenverarbeitung und Verantwortlichkeit
+ formElements:
+ - reference: datenschutz_verantwortlichkeit_art
+ title: Liegt eine Auftragsdatenverarbeitung nach Art. 28 DSGVO oder eine gemeinsame Verantwortlichkeit im Sinne von Art. 26 DSGVO vor?
+ description: ''
+ type: CHECKBOX
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: 'false'
+ label: Auftragsdatenverarbeitung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'false'
+ label: Gemeinsame Verantwortlichkeit
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'false'
+ label: Dritter als eigenständiger Verantwortlicher
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: 'false'
+ label: Nein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1a. Auftragsdatenverarbeitung Table (Einfache Darstellung)
+ - title: Auftragsdatenverarbeitung
+ formElements:
+ - reference: datenschutz_adv_einfach_tabelle
+ title: Auftragsdatenverarbeitung
+ description: Angaben zu Auftragsdatenverarbeitern
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Auftragsdatenverarbeitung
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Nein
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Auftragsdatenverarbeiter
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_einfach_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Auftragsdatenverarbeitungsvertrag vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Subprozessoren vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Hosting / Region
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1a. Auftragsdatenverarbeitung Table (Umfassende Darstellung)
+ - title: Auftragsdatenverarbeitung
+ formElements:
+ - reference: datenschutz_adv_tabelle
+ title: Auftragsdatenverarbeitung
+ description: Angaben zu Auftragsdatenverarbeitern
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Auftragsdatenverarbeitung
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Auftragsdatenverarbeiter
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_umfassend_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Auftragsdatenverarbeitungsvertrag vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Subprozessoren vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Hosting / Region
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1b. Gemeinsame Verantwortlichkeit Table (Einfache Darstellung)
+ - title: Gemeinsame Verantwortlichkeit
+ formElements:
+ - reference: datenschutz_gemeinsam_einfach_tabelle
+ title: Gemeinsame Verantwortlichkeit
+ description: Angaben zur gemeinsamen Verantwortlichkeit
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Gemeinsame Verantwortlichkeit
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Nein
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Gemeinsame Verantwortlichkeit mit
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_einfach_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Vereinbarung vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Hosting / Region
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1b. Gemeinsame Verantwortlichkeit Table (Umfassende Darstellung)
+ - title: Gemeinsame Verantwortlichkeit
+ formElements:
+ - reference: datenschutz_gemeinsam_tabelle
+ title: Gemeinsame Verantwortlichkeit
+ description: Angaben zur gemeinsamen Verantwortlichkeit
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Gemeinsame Verantwortlichkeit
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Gemeinsame Verantwortlichkeit mit
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_umfassend_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Vereinbarung vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Hosting / Region
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1b-aa. Verpflichtungen bei gemeinsamer Verantwortlichkeit
+ - title: Verpflichtungen gemäß DSGVO
+ formElements:
+ - reference: datenschutz_gemeinsam_verpflichtungen_tabelle
+ title: Wer erfüllt welche Verpflichtungen gemäß der DSGVO?
+ description: Aufteilung der Verantwortlichkeiten
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Gemeinsame Verantwortlichkeit
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Pflichtbereich
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Unternehmen
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ isCheckbox: true
+ - value: '[]'
+ label: Gemeinsamer Verantwortlicher
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ isCheckbox: true
+ - value: '[]'
+ label: Gemeinsam
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ isCheckbox: true
+ - value: '[]'
+ label: Kurze Prozessbeschreibung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Kontakt
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1c. Eigenständig Verantwortlicher Table (Einfache Darstellung)
+ - title: Eigenständig Verantwortlicher
+ formElements:
+ - reference: datenschutz_eigenstaendig_einfach_tabelle
+ title: Eigenständig Verantwortlicher
+ description: Angaben zu eigenständigen Verantwortlichen (Dritten)
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Dritter als eigenständiger Verantwortlicher
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Nein
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Eigenständig Verantwortlicher
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Empfängerart
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_einfach_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Zweck der Übermittlung?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Rechtliche Grundlage der Übermittlung?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Vereinbarung vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 1c. Eigenständig Verantwortlicher Table (Umfassende Darstellung)
+ - title: Eigenständig Verantwortlicher
+ formElements:
+ - reference: datenschutz_eigenstaendig_tabelle
+ title: Eigenständig Verantwortlicher
+ description: Angaben zu eigenständigen Verantwortlichen (Dritten)
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_verantwortlichkeit_art
+ formElementExpectedValue: Dritter als eigenständiger Verantwortlicher
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Eigenständig Verantwortlicher
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Empfängerart
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Art der Einbindung
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Ggf. Schnittstellen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: schnittstellen_umfassend_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Betroffene Datenkategorien
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Betroffene Arbeitnehmerdaten
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Zweck der Übermittlung?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Rechtliche Grundlage der Übermittlung?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Vereinbarung vorhanden?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 2. Datenschutz-Folgenabschätzung (DSFA) - Einfache Darstellung
+ - title: Datenschutz-Folgenabschätzung
+ formElements:
+ - reference: datenschutz_dsfa_einfach_tabelle
+ title: Ist eine Datenschutz-Folgenabschätzung erforderlich?
+ description: Angaben zur DSFA
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ canAddRows: false
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Nein
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ - value: '[]'
+ label: Kontrolle beabsichtigt? (Auto)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ isReadOnly: true
+ - value: '[]'
+ label: DSFA erforderlich?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: DSFA durchgeführt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Ergebnis Hohes Risiko verbleibt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Konsultation erforderlich und erfolgt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkungen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 2. Datenschutz-Folgenabschätzung (DSFA) - Umfassende Darstellung
+ - title: Datenschutz-Folgenabschätzung
+ formElements:
+ - reference: datenschutz_dsfa_tabelle
+ title: Ist eine Datenschutz-Folgenabschätzung erforderlich?
+ description: Angaben zur DSFA
+ type: TABLE
+ tableRowPreset:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ columnMappings:
+ - sourceColumnIndex: 0
+ targetColumnIndex: 0
+ canAddRows: false
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ isReadOnly: true
+ - value: '[]'
+ label: Kontrolle beabsichtigt? (Auto)
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ columnConfig:
+ isReadOnly: true
+ - value: '[]'
+ label: DSFA erforderlich?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: DSFA durchgeführt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Ergebnis Hohes Risiko verbleibt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Konsultation erforderlich und erfolgt?
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Bemerkungen
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 3. Drittstaatenübermittlung
+ - title: Drittstaatenübermittlung
+ formElements:
+ - reference: datenschutz_drittstaaten
+ title: Ist eine Übermittlung von Arbeitnehmerdaten an Drittstaaten außerhalb der Europäischen Union oder des Europäischen Wirtschaftsraumes geplant?
+ description: ''
+ type: RADIOBUTTON
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: Ja
+ label: Ja
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: Nein
+ label: Nein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ - title: Angaben zur Drittlandübermittlung (Einfache Darstellung)
+ formElements:
+ - reference: datenschutz_drittstaaten_einfach_tabelle
+ title: Angaben zur Drittlandübermittlung
+ description: Details zur Übermittlung in Drittstaaten
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_drittstaaten
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Nein
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: einfache_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Länder / Empfänger
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Rechtliche Grundlage
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Zusätzliche Maßnahmen
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ - title: Angaben zur Drittlandübermittlung (Umfassende Darstellung)
+ formElements:
+ - reference: datenschutz_drittstaaten_tabelle
+ title: Angaben zur Drittlandübermittlung
+ description: Details zur Übermittlung in Drittstaaten
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: datenschutz_drittstaaten
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ - formElementConditionType: SHOW
+ sourceFormElementReference: luv_beabsichtigt
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: Verarbeitungsvorgang-ID
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ columnConfig:
+ sourceTableReference: umfassende_datenverarbeitung_tabelle
+ sourceColumnIndex: 0
+ - value: '[]'
+ label: Länder / Empfänger
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Rechtliche Grundlage
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: SENSITIVE
+ - value: '[]'
+ label: Zusätzliche Maßnahmen
+ processingPurpose: DATA_ANALYSIS
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Bemerkung
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+
+ # 4. Technische und organisatorische Maßnahmen (TOMs)
+ - title: Technische und organisatorische Maßnahmen
+ formElements:
+ - reference: datenschutz_toms_tabelle
+ title: Welche technischen und organisatorischen Maßnahmen werden vom Unternehmen und ggf. dem Auftragsverarbeiter / gemeinsamen Verantwortlichen zum Schutz von Arbeitnehmerdaten ergriffen?
+ description: TOMs zum Schutz personenbezogener Daten
+ type: TABLE
+ visibilityConditions:
+ - formElementConditionType: SHOW
+ sourceFormElementReference: personenbezogene_daten_verarbeitet
+ formElementExpectedValue: Ja
+ formElementOperator: EQUALS
+ options:
+ - value: '[]'
+ label: TOM-Baustein
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
+ - value: '[]'
+ label: Umgesetzt?
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: REVIEW_REQUIRED
+ - value: '[]'
+ label: Kurzbeschreibung / Referenz
+ processingPurpose: SYSTEM_OPERATION
+ employeeDataCategory: NON_CRITICAL
diff --git a/legalconsenthub/app/components/formelements/TheCheckbox.vue b/legalconsenthub/app/components/formelements/TheCheckbox.vue
index ec45510..67bc3b4 100644
--- a/legalconsenthub/app/components/formelements/TheCheckbox.vue
+++ b/legalconsenthub/app/components/formelements/TheCheckbox.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/legalconsenthub/app/composables/useFormElementVisibility.ts b/legalconsenthub/app/composables/useFormElementVisibility.ts
index 6e01ed1..05c0099 100644
--- a/legalconsenthub/app/composables/useFormElementVisibility.ts
+++ b/legalconsenthub/app/composables/useFormElementVisibility.ts
@@ -57,6 +57,13 @@ export function useFormElementVisibility() {
return false
}
+ // Special handling for CHECKBOX with multiple options
+ if (sourceElement.type === FormElementType.Checkbox && sourceElement.options.length > 1) {
+ const operator = condition.formElementOperator || VCOperator.Equals
+ const conditionMet = evaluateCheckboxCondition(sourceElement, condition.formElementExpectedValue, operator)
+ return condition.formElementConditionType === VCType.Show ? conditionMet : !conditionMet
+ }
+
const sourceValue = getFormElementValue(sourceElement)
const operator = condition.formElementOperator || VCOperator.Equals
const conditionMet = evaluateCondition(sourceValue, condition.formElementExpectedValue, operator)
@@ -75,6 +82,37 @@ export function useFormElementVisibility() {
return selectedOption?.label || ''
}
+ /**
+ * Evaluates visibility condition for CHECKBOX with multiple options.
+ * Checks if ANY of the selected checkboxes matches the expected value.
+ */
+ function evaluateCheckboxCondition(
+ element: FormElementDto,
+ expectedValue: string,
+ operator: VisibilityConditionOperator
+ ): boolean {
+ const selectedLabels = element.options
+ .filter((option) => option.value === 'true')
+ .map((option) => option.label)
+
+ switch (operator) {
+ case VCOperator.Equals:
+ // Check if any selected checkbox label matches the expected value
+ return selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase())
+ case VCOperator.NotEquals:
+ // Check if no selected checkbox label matches the expected value
+ return !selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase())
+ case VCOperator.IsEmpty:
+ // Check if no checkboxes are selected
+ return selectedLabels.length === 0
+ case VCOperator.IsNotEmpty:
+ // Check if at least one checkbox is selected
+ return selectedLabels.length > 0
+ default:
+ return false
+ }
+ }
+
function evaluateCondition(
actualValue: string,
expectedValue: string,