LeaveFlow: Datenschutz und DSGVO
Datenschutz in LeaveFlow: Aufbewahrungsfrist, manuelle Anonymisierung, gespeicherte Daten, Sichtbarkeit von Krankheitszeiten, externe Verbindungen und Exporte.
LeaveFlow: Datenschutz und DSGVO
Diese Seite beschreibt, was LeaveFlow speichert, wie lange und wie ehemalige Mitarbeitende anonymisiert werden. Sie ersetzt keine rechtliche Beratung.
LeaveFlow läuft auf deiner eigenen Infrastruktur. Es gibt keinen Betreiber-Dienst, an den Daten gesendet werden. Externe Verbindungen entstehen nur durch Funktionen, die du selbst einrichtest (siehe unten).
Aufbewahrungsfrist
Die Aufbewahrungsfrist stellst du unter Admin → Organisation → Firmen-Einstellungen im Feld „DSGVO-Aufbewahrungsdauer (Monate)“ ein. Der Standard sind 36 Monate, erlaubt sind 1 bis 360 Monate. Die Frist beginnt mit dem Austrittsdatum des Mitarbeiters.
Anonymisierung
Die Anonymisierung läuft ausschließlich manuell. Es gibt keinen täglichen Scheduler dafür und keine Vorwarnung vor dem Fälligkeitsdatum.
- Admin → System → DSGVO-Anonymisierung (
/admin/anonymization) öffnen. - Im Abschnitt „Fällig zur Anonymisierung“ stehen alle ausgetretenen Mitarbeitenden, deren Austrittsdatum plus Aufbewahrungsfrist erreicht ist, mit „Fällig seit“.
- Auf Anonymisieren klicken und im Dialog mit Jetzt anonymisieren bestätigen. Die Aktion ist nicht rückgängig zu machen.
Abgeschlossene Fälle erscheinen im Abschnitt „Bereits anonymisiert“. Vor Ablauf der Frist und bei aktiven Mitarbeitenden lehnt LeaveFlow die Anonymisierung ab.
| Datensatz | Was passiert |
|---|---|
| Mitarbeiter | Der Name wird zu „Ehemaliger Mitarbeiter #“ |
| Verknüpftes Benutzerkonto | Die E-Mail-Adresse wird zu anonymized-<ID>@leaveflow.local; Passwort, 2FA-Schlüssel, Backup-Codes, iCal-Token, externe Anmelde-ID, Slack-ID und Spracheinstellung werden gelöscht, das Konto wird deaktiviert |
Die Anonymisierung ändert ausschließlich den Mitarbeiterdatensatz und das verknüpfte Benutzerkonto. Personalnummer, Eintritts- und Austrittsdatum, Urlaubsanträge, Urlaubskonten und Abwesenheitsdaten bleiben für Statistiken erhalten. Bereits versendete Benachrichtigungen und die Begründungen in Entscheidungsverläufen werden nicht gesondert bereinigt.
Die Oberfläche bietet keine Funktion, Mitarbeiter oder Benutzer vollständig zu löschen. Wer den vollständigen Datensatz entfernen muss, muss das in der Datenbank erledigen.
Austritt eines Mitarbeiters
Unter Admin → Organisation → Mitarbeiter startet Austreten... den Austrittsdialog: Du setzt das Austrittsdatum und wählst die „Resturlaub-Regelung“ (Urlaubsabgeltung, Pflichtentnahme vor Austritt oder Freistellung unter Anrechnung). Liegt das Datum heute oder in der Vergangenheit, wird das Benutzerkonto sofort deaktiviert, bei einem Datum in der Zukunft übernimmt das der Job exit-deactivation-check. LeaveFlow zeigt den verbleibenden Saldo und einen Hinweis zur gewählten Regelung an. Die Regelung ist eine Information für dich: LeaveFlow bucht weder eine Auszahlung noch eine Freistellung.
Die Standard-Regelung stellst du in den Firmen-Einstellungen ein. Die Option „Freistellung unter Anrechnung“ ist dort nur wählbar, wenn eine Urlaubsart mit dem Namen Freistellung existiert.
Welche Daten LeaveFlow speichert
| Bereich | Inhalte |
|---|---|
| Benutzerkonto | E-Mail-Adresse, Passwort-Hash, Rolle, Sprache, Anmeldeverfahren, optional TOTP-Schlüssel und Backup-Codes (gehasht), iCal-Token, Slack-ID |
| Mitarbeiter | Name, Personalnummer, Standort, Team, Arbeitszeitmodell, Eintritts-, Austritts- und Probezeitdatum |
| Abwesenheiten | Urlaubsart, Zeitraum, Stunden, Status, Entscheidungsverlauf mit Begründungen |
| Urlaubskonten | Gewährte und verbrauchte Stunden, Ablaufdaten, Änderungshistorie mit Begründung |
| Benachrichtigungen | In-App-Benachrichtigungen mit Namen und Zeiträumen |
| Firma | Name, Adresse, Steuer- und Registernummer, Logo, Integrations-Zugangsdaten (verschlüsselt) |
| API-Token | Nur der SHA-256-Hash des Tokens, nie der Klartext |
Gesundheitsbezogene Daten
Urlaubsarten mit der Eigenschaft „Zählt zur 6-Wochen-Krankheits-Schwelle“ (im Demo-Datensatz „Krankheit“) können Krankheitszeiten abbilden. Beachte, wo diese sichtbar sind:
- Der Team-Kalender zeigt allen angemeldeten Benutzern genehmigte und erfasste Abwesenheiten mit Name und Urlaubsart, also auch Krankheitszeiten. Jeder Benutzer kann das Team im Filter wechseln.
- Der Slack-Befehl
/team-abwesendlistet jedem Benutzer mit verknüpftem Slack-Konto alle heute aktiven genehmigten und erfassten Abwesenheiten des Unternehmens mit Name und Urlaubsart auf, also auch erfasste Krankheitszeiten. Die Liste ist auf 25 Einträge begrenzt. - Der persönliche iCal-Feed enthält die eigenen genehmigten und erfassten Abwesenheiten. Der Team-Feed enthält nur genehmigte Abwesenheiten, erfasste Krankheitszeiten sind darin nicht enthalten.
- Das Statistik-Dashboard der Admins nennt die aktuell Abwesenden namentlich.
- Erreicht jemand 42 zusammenhängende Kalendertage, benachrichtigt LeaveFlow die Teamleitung, ersatzweise die Vertretung, sonst alle Admins, mit Name, Personalnummer und Zeitraum.
Der Team-Kalender bietet keine Einschränkung der Sichtbarkeit nach Rolle oder Team. Berücksichtige das in deiner Datenschutz-Bewertung.
Statistik und Anonymität
Das Statistik-Dashboard blendet Teams mit weniger als 3 aktiven Mitarbeitenden in den Diagrammen aus (Anonymitäts-Schwelle). Der PDF-Export trägt den Hinweis „anonymisierte Auswertung“.
Zugriffsschutz
| Maßnahme | Umsetzung |
|---|---|
| Rollen | Admin, Manager, Mitarbeiter; Zugriffe auf /admin nur für Admins |
| Vier-Augen-Prinzip | Niemand kann den eigenen Antrag entscheiden, auch kein Admin |
| Anmeldeschutz | Drosselung auf 5 Versuche je 15 Minuten, CSRF-Schutz in allen Formularen |
| 2FA | TOTP mit 10 Backup-Codes, optional per Firmen-Pflicht erzwingbar |
| Sitzung | Cookie mit Secure, HttpOnly und SameSite=Lax; „Angemeldet bleiben“ gilt 7 Tage |
| Passwörter | Mindestens 10 Zeichen beim Zurücksetzen, 12 im Einrichtungsassistenten; Reset-Links sind eine Stunde gültig |
| Zugangsdaten für Integrationen | Slack-Token, Signing Secret und LDAP-Bind-Passwort liegen verschlüsselt in der Datenbank |
Externe Verbindungen
Die Seiten laden ihre Skripte und Stylesheets von der eigenen Instanz, es gibt keine eingebundenen Tracker oder Fremd-Schriften. Verbindungen nach außen entstehen nur in diesen Fällen:
- Beim Setzen eines Passworts über einen Reset-Link prüft LeaveFlow das Passwort gegen eine Liste bekannter Datenlecks (Have-I-Been-Pwned-Dienst, übertragen wird nur ein Hash-Präfix).
- Slack: Namen, Urlaubsarten und Zeiträume von Anträgen gehen an die Slack-API, wenn du die Integration aktivierst.
- Microsoft Teams: Dasselbe gilt für die Webhook-URL, die du einträgst.
- Google und Microsoft Entra ID: Die Anmeldung läuft über die Server der Anbieter.
- LDAP und SMTP: Verbindungen zu den Servern, die du konfigurierst.
Exporte
| Export | Wo | Inhalt |
|---|---|---|
| Mitarbeiter-Liste (CSV) | Admin → Mitarbeiter → CSV exportieren | Name, Personalnummer, Standort, Status, Wochenstunden, Eintritt, Austritt, Login |
| Urlaubskonten (CSV) | Admin → Urlaubskonten → Als CSV exportieren | Acht Spalten: Mitarbeiter:in, Mitarbeiternummer, Jahr, Art, Gewährt (h), Verbraucht (h), Verfügbar (h), Ablauffrist (ISO) |
| Statistik (PDF) | Admin → Statistik → Als PDF exportieren | Kennzahlen und Teamübersicht |