# BAB.Verwaltung – DESS Zeiterfassung

Userhandbuch, Administratorunterlagen und IT-Beschreibungen für Betrieb und Wartung der DESS-Zeiterfassung der BAB. Aktuelle Produktivversion: 1.0.14 (April 2026) auf vm-plesk-live.bab.network (dess.agrarforschung.at). Code-Repository: git.agrarforschung.at/dess/dess. Stand der Dokumentation: 2026-05-23 (Audit Roland Neissl). Hinweis: Installationsanleitungen aus der Pilotphase 2021 wurden auf historischen Stand markiert (Debian 10 EOL). Aktuelle Stack-Doku im KIROOT-Vault: wiki/concepts/integration-dess-openproject.md.

# Installation Basissystem

# VM für PLESK vorbereiten

# VM für PLESK vorbereiten

> **Hinweis (Stand 2026-05-23):** Diese Seite beschreibt die ursprüngliche Aufsetzung der DESS-Hosting-VM aus 2021. **Die Produktivinstanz `vm-plesk-live.bab.network` (192.168.101.121) läuft weiterhin auf Plesk, das Basis-OS-Setup ist historisch.** Für Neuinstallationen gelten die jeweils aktuellen Plesk-Software-Requirements (siehe Hinweis am Ende).

## Empfehlung VM-Sizing

Die notwendige Leistung richtet sich stark nach der Anzahl der gleichzeitigen Benutzer:innen im System. DESS selbst ist wenig anspruchsvoll, der Plesk-Stack braucht etwas mehr Reserven.

| Ressource | Empfehlung | Hinweis |
|---|---|---|
| vCPU | 4 Kerne | bei >300 aktiven Benutzer:innen 6–8 Kerne |
| RAM | 4 GB | bei >300 aktiven Benutzer:innen 8 GB |
| Festplatte | 100 GB | Wachstum über Reports + Logs einkalkulieren |

## BAB-Setup (Produktion)

`vm-plesk-live.bab.network` (192.168.101.121) hostet `dess.agrarforschung.at` mit Plesk + Node.js + MariaDB. Plesk-Vhost-Pfad:

```
/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at
```

Deployment erfolgt CI-gesteuert per SCP aus `dess/dess`-Repo → `touch tmp/restart.txt` startet Node.js neu (siehe `.gitlab-ci.yml`).

## Aktuelle Plesk-Anforderungen

- Plesk Obsidian: <https://docs.plesk.com/release-notes/obsidian/software-requirements/>
- Für Neuinstallationen ist **Debian 12 (Bookworm)** oder **Ubuntu 22.04 LTS** zu wählen; **Debian 10 (Buster) ist seit 2024-06-30 EOL** und sollte für Neuinstallationen nicht mehr verwendet werden.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# Debian installieren

# Debian installieren

> **Achtung (Stand 2026-05-23):** Diese Anleitung wurde 2021 für **Debian 10 (Buster)** verfasst. **Debian 10 ist seit 2024-06-30 EOL (End of Life)** und erhält keine Sicherheitsupdates mehr. Für Neuinstallationen ist Debian 12 (Bookworm) zu wählen.
>
> Die DESS-Produktivinstanz auf `vm-plesk-live.bab.network` läuft Stand 2026-05 noch unter dem ursprünglichen Plesk-Setup; ein Host-OS-Upgrade ist als Backlog-Punkt erfasst.

## Wahl des Basis-OS

| OS | Empfehlung | Anmerkung |
|---|---|---|
| Debian 12 (Bookworm) | **empfohlen** für Neuinstallationen | Plesk Obsidian unterstützt |
| Ubuntu 22.04 LTS | gleichwertig | Plesk-getestet |
| Debian 10 (Buster) | **abgelaufen** (EOL 2024-06-30) | nur für Bestandsanalyse, keine Neuinstallation |
| CentOS / RHEL | möglich | an der BAB nicht eingesetzt |
| Windows | nicht empfohlen | wesentlich ressourcenhungriger, an der BAB keine Erfahrung |

Aktuelle Plesk-Software-Requirements: <https://docs.plesk.com/release-notes/obsidian/software-requirements/>

## Installationsmedium

Debian NetInstall AMD64 ISO: <https://www.debian.org/CD/netinst/>

## Installations-Schritte (Standard)

1. ISO booten, Sprache + Locale wählen.
2. Hostname + Domain konfigurieren (z.B. `vm-plesk-live` / `bab.network`).
3. Root-Passwort setzen, Standard-User anlegen.
4. Partitionierung: Standard mit LVM (separates `/var`-Volume optional).
5. Paketauswahl: nur **SSH-Server** + **Standard-System-Werkzeuge** (Plesk übernimmt den Rest).
6. GRUB in den MBR installieren.

## Nach der Installation

```bash
apt update && apt -y upgrade
apt -y install sudo curl gnupg
```

Dann weiter mit der Plesk-Installation (siehe Folgeseite).


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# Debian einrichten und Plesk installieren

# Debian einrichten und Plesk installieren

> **Hinweis (Stand 2026-05-23):** Verfasst 2021 für Debian 10 + Plesk Obsidian. Die Schritte gelten sinngemäß für Debian 12 + aktuelles Plesk.

## Basis-Konfiguration

```bash
apt update && apt -y upgrade
```

## Netzwerk: statische IP konfigurieren

Für Serverbetrieb statt DHCP eine statische IP setzen:

```bash
nano /etc/network/interfaces
```

Beispiel (Debian-klassisch):

```text
auto eth0
iface eth0 inet static
    address 192.168.101.121
    netmask 255.255.255.0
    gateway 192.168.101.1
    dns-nameservers 192.168.64.10 192.168.64.11
```

Speichern mit `Strg+X`, dann `Y` zur Bestätigung. Anschließend Netzwerk-Stack neu starten:

```bash
systemctl restart networking
```

Bei Debian 12 (Bookworm) kommt `systemd-networkd` oder `NetworkManager` infrage — siehe <https://wiki.debian.org/NetworkConfiguration>.

## Plesk installieren

Aktuelle Anleitung (Console Installer):
<https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-single-server/installing-plesk-using-installer-console/installing-plesk-for-linux-using-installer-console.76445/>

Kurzform:

```bash
sh <(curl https://autoinstall.plesk.com/one-click-installer)
```

Nach der Installation `https://<server-ip>:8443/` aufrufen, mit Root-Passwort einloggen und den Setup-Wizard durchlaufen.

## Komponenten (für DESS)

Im Plesk-Installer mindestens folgende Komponenten aktivieren:

- nginx + Apache
- PHP (für Plesk-UI)
- **MariaDB** (für DESS)
- **Node.js Toolkit** (für DESS-Backend)
- Let's-Encrypt-Extension
- Optional: phpMyAdmin

## Domain anlegen

Im Plesk-UI:

1. Subscription / Domain anlegen → `dess.agrarforschung.at` unter Customer `agrarforschung`.
2. Vhost-Pfad: `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at`.
3. Node.js aktivieren (siehe Folgeseite).
4. SSL-Zertifikat via Let's-Encrypt oder Wildcard `*.agrarforschung.at` (Hetzner-DNS-01) zuweisen.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# PLESK · Node.js-Einstellungen

# PLESK · Node.js-Einstellungen

> **Hinweis (Stand 2026-05-23):** Aktuelle Produktion läuft mit Node.js 18.x LTS (siehe `.gitlab-ci.yml`). Plesk-Node.js-Toolkit muss installiert sein.

## Application-Settings im Plesk-UI

Im Plesk-Vhost unter **Node.js** folgende Felder setzen:

| Feld | Wert |
|---|---|
| Node.js Version | 18.x (LTS) |
| Document Root | `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at` |
| Application Root | `/var/www/vhosts/agrarforschung.at/dess.agrarforschung.at` |
| Application Startup File | `index.js` |
| Application Mode | `production` |

## Custom Environment Variables

DESS liest seine Konfiguration über `config/config.js` aus, dort werden bestimmte Felder über `process.env` überschreibbar gehalten. Im Plesk-UI unter **Node.js → Custom environment variables** mindestens setzen:

| Variable | Beispiel | Zweck |
|---|---|---|
| `NODE_ENV` | `production` | Aktiviert Production-Logging + Caching |
| `PORT` | `3000` | interner Node-Port (Plesk-nginx-Proxy davor) |
| `DB_HOST` | `127.0.0.1` | MariaDB-Host |
| `DB_USER` | `dess` | DB-User |
| `DB_PASSWORD` | `<secret>` | aus OpenBao, **niemals im Vault im Klartext** |
| `DB_NAME` | `dess` | DB-Name |
| `OIDC_ENABLED` | `true` | Aktiviert Keycloak-Login (seit 1.0.9) |
| `OIDC_ISSUER` | `https://sso.agrarforschung.at/realms/bab` | Keycloak-Realm |
| `OIDC_CLIENT_ID` | `dess` | KC-Client |
| `OIDC_CLIENT_SECRET` | `<secret>` | aus OpenBao |
| `PROXY` | `true` | hinter nginx-Reverse-Proxy |
| `SESSION_SECRET` | `<random>` | Express-Session-Secret, **nicht hardcoden** |

## Restart-Mechanismus

Plesk Passenger erkennt Neustart-Triggerdatei:

```bash
touch /var/www/vhosts/agrarforschung.at/dess.agrarforschung.at/tmp/restart.txt
```

Die CI-Pipeline `.gitlab-ci.yml` setzt dieses File automatisch nach jedem erfolgreichen SCP-Upload.

## Bekannte Hardening-Punkte

- **`trust proxy` Flag**: Express muss `app.set('trust proxy', 1)` setzen, damit `req.protocol` hinter dem nginx-Reverse-Proxy korrekt `https` liefert. Siehe Incident [DESS SSO-Login defekt nach Keycloak 26 Upgrade](https://doku.agrarforschung.at) bzw. Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`.
- **OIDC `iss`-Parameter**: KC26 sendet `iss` in der Auth-Response. Aktuell ist das auf KC-Seite per Client-Attribut `exclude.issuer.from.auth.response=true` deaktiviert; ein Hardening-Fix in `login.component.ts` + Joi-Schema ist offen.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# Release History

# D-ESS 0.2.0

# D-ESS 0.2.0 · Versionshinweise

*Release-Datum: 2020-10-29*

## Bug Fixes

- **Benutzerverwaltung / Benutzerabwesenheit Korrekturen** — Typ wird nun korrekt angezeigt.
- **Berichtsverwaltung / Navigationsgruppe** — Umbenennen jetzt möglich.
- **Berichts-Parameter Tippfehler** — „Abeilung" → „Abteilung".
- **Passwort-Speichern** funktioniert wieder in IE11 + altem Edge.
- **Benutzergruppen** können umbenannt werden.
- Neue, performante Baumkomponente für KT / KS / Tätigkeit (kein Timeout mehr bei großen Bäumen).
- „CLOCK" durch „STEMPELUHR" ersetzt.

## Optimierungen

- App-weite Code-Review, Leistungsoptimierung jeder Seite.
- Zeiteingabe: Kostenträger alphabetisch sortiert.
- Bericht Pivot: Auswahl zwischen Teil- und Gesamtsummen.
- HTML-`lang=de` gesetzt → keine automatische Browser-Übersetzung mehr.
- Heartbeat zur Vermeidung von Session-Timeouts.
- KS/KT/Tätigkeit-Baum: Zuordnung auch für Nicht-Blatt-Knoten möglich.

## Neue Entwicklung

- **Zeiterfassung / Zeitbuchungen** — Admin sieht „Letzte Änderung" + aufklappbaren Verlauf inkl. Arbeitsumbuchungen.
- **Benutzergruppe AZM** — Fallback-Einstellung wenn kein User-AZM gesetzt.
- **Stehende Buchungen** — Prozentsätze pro Tätigkeit in Gruppe; User-Override möglich.
- **KLR-Import + Monats-CSV-Export** — Korrekturzuweisung, Output ist LFRZ-KLR-kompatibel.
- **Stempeluhr** — Steuerung per Ziffernblock.

*Autor: Thomas Skidmore, thomas.skidmore@bab.gv.at*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.2.1

# D-ESS 0.2.1 · Versionshinweise

*Release-Datum: 2020-11-06*

## Bug Fixes

- **Zeiterfassung** — Anwesenheitstyp „Nur Admin" wird Nicht-Admins als Read-Only-Text angezeigt.
- **SQL-Query-Berichte werfen Fehler** — PDF-Export aus Pivot-Tabellenansicht entfernt (wijmo-CSP-Konflikt).
- **Zeiterfassung / Jahresübersicht** — komplette Neufassung, kein JS-Timeout mehr bei >300 Benutzer:innen.
- **Notifikations-Links** — Kalender springt jetzt korrekt zum Zielmonat.
- Text: „Benutzer Mehrdienstleistungen und Korrektur verwalten".

## Erweiterungen

- An-/Abwesenheits-Liste ergänzt um:
  - Gerechtfertigte Abwesenheit
  - MDL Freizeitausgleich
  - Home Office
  - Telearbeit
  - Rufbereitschaft

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.2.2

# D-ESS 0.2.2 · Versionshinweise

*Release-Datum: 2020-12-02*

## Bug Fixes

- **Inaktive Benutzer:innen** können keine Buchungen mehr per Stempeluhr anlegen und werden in Zeitverwaltungs-Dropdowns ausgeblendet (Jahresübersicht / Berichte zeigen sie weiterhin).
- **Benutzer-AZM-Einstellungen** — kein Fehler mehr wenn User weder AZM noch Benutzergruppe hat.
- **Datum-/Zeit-/Dauer-Popup-Icons** öffnen Popup nicht mehr bei deaktiviertem Feld.
- **KLR-Export** — CSV-Export auch dann möglich wenn User in KLR nicht angelegt ist; Status „Exportiert" wird korrekt gespeichert.

## Erweiterungen

- An-/Abwesenheits-Liste ergänzt um **Dienstfreistellung** (Karenz, Kur, Sabbatical — ganztägig, Pflicht-Kommentar).
- Klarstellung: Teiltags-Abwesenheiten (Arzt, Therapie) → **Gerechtfertigte Abwesenheit**.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.2.3

# D-ESS 0.2.3 · Versionshinweise

*Release-Datum: 2020-12-09*

## Bug Fixes

- **KLR-Export** — Export-Checkbox immer deaktivierbar, unabhängig vom Status. Status „Exportiert" wird korrekt gespeichert, auch wenn User keine erwartete KLR-Arbeit hatte.
- **Zeiterfassung** — Admin-Userauswahl enthält jetzt immer den aktuellen Benutzer, auch ohne Abteilungszuordnung.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.3.0

# D-ESS 0.3.0 · Versionshinweise

*Release-Datum: 2021-02-24*

## Neue Entwicklung

- **Stundenart** — eigene Seite in der Hauptnavigation (Verwendung jetzt auch in Dienstplan + MDL-Anwesenheitstypen).
- **KS / KT / Tätigkeit „Öffentlich"-Sperre** — Wenn eine Kombination noch in Stehende Buchungen / Dienstplan / Benutzer-Einstellungen referenziert ist, lässt sich die Checkbox „Öffentlich" nicht deaktivieren. Schlosssymbol macht das sichtbar.
- Neue Übersichtsseiten zeigen, wo KS/KT/Tätigkeit referenziert werden — Voraussetzung für sauberen Tree-Cleanup.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.3.1

# D-ESS 0.3.1 · Versionshinweise

*Release-Datum: 2021-03-02*

## Bug Fixes

- **Jahresübersicht** — weitere Leistungsoptimierung.

## Neue Entwicklung

- **Gruppenbuchung** — wenn alle ausgewählten Benutzer:innen identische Stehende-Buchungen-Settings haben, werden die Prozentsätze in der Gruppen-Buchungs-UI automatisch vorbelegt.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.3.2

# D-ESS 0.3.2 · Versionshinweise

*Release-Datum: 2021-03-03*

## Bug Fixes

- **Gruppenbuchung** — Tagesauswahl aus Texteingabe-Popup wählt jetzt den richtigen Tag.
- Klarstellung: Gruppenbuchung erzeugt **eine** Buchung pro User pro Tag (kein Multiplizieren über mehrere Tage).
- **Benutzergruppen** — Reset-Button für User-spezifische Stehende-Buchungen-Overrides + Tätigkeitseinstellungen.

## Neue Entwicklung

- **Zeiterfassung Warnung** bei inkonsistenten An-/Abwesenheitstypen.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.4.0

# D-ESS 0.4.0 · Versionshinweise

*Release-Datum: 2021-05-25*

## Bug Fixes

- **Session Timeout** nach Browser-Refresh behoben.
- **Jahresübersicht** ca. 8× schnelleres Rendering.
- **An-/Abwesenheitstypen** — Feld „MDL Stundenart überschreiben" aktualisiert sich beim Wechsel jetzt korrekt.
- **Systemberechtigungen** — vollständig durchgetestet, mehrere „Erlaubnis verweigert"-Fälle korrigiert.
- **Systemberechtigungs-Gruppen** umbenennbar.
- **Berichts-Parameter** aktualisieren sich beim Klick auf Aktualisieren.

## Neue Entwicklung

- Server-`config.js`-Änderungen ergänzt.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.4.1

# D-ESS 0.4.1 · Versionshinweise

*Release-Datum: 2021-05-28*

## Bug Fix

- MDL-An-/Abwesenheitstyp wird auf der Zeitbuchungsseite wieder im Dropdown angezeigt.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.4.2

# D-ESS 0.4.2 · Versionshinweise

*Release-Datum: 2021-06-11*

## Bug Fixes / Update

- **Update auf Angular 12** — kleinerer Bundle, generelle Leistungssteigerung, Sicherheits-Updates.
- **Baum-Tabellen** (Abteilungen, KS, KT-Gruppen, Tätigkeiten) — Sortier-Funktion via Klick auf Spaltenkopf „Name" (rekursiv, alphabetisch auf-/absteigend).

## Neue Entwicklung

- Neuer Einsatzzeit-Typ **„Unterricht"**.
- Server-`config.js`-Flags für Einsatzzeit-Arten:
  ```javascript
  SYSTEM_ALLOW_ON_CALL: true,
  SYSTEM_ALLOW_ON_CALL_RUFBEREITSCHAFT: true,
  SYSTEM_ALLOW_ON_CALL_ANWESENHEITSBEREITSCHAFT: true,
  SYSTEM_ALLOW_ON_CALL_UNTERRICHT: true,
  ```
- **Stempeluhr** — nach PIN-Eingabe Bestätigungs-Anzeige, automatischer Reset nach 3 s.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.4.3

# D-ESS 0.4.3 · Versionshinweise

*Release-Datum: 2021-06-18*

## Bug Fixes

- Icons + Styles wurden unter der neuen Angular-12-Content-Security-Policy nicht geladen.
- Vordefinierte Anwesenheits-Kommentare wurden bei Zeitbuchung nicht angezeigt.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.4.4

# D-ESS 0.4.4 · Versionshinweise

*Release-Datum: 2021-07-23*

## Bug Fix

- Kostenträger, die User auf inaktiv gesetzt hatten, wurden vom System wieder auf aktiv gesetzt — Reporter: Claudia Muschau. Behoben.
- Anzeige von Kostenträgern in Stehenden Buchungen war für Benutzer + Gruppen falsch — korrigiert.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.0

# D-ESS 0.5.0 · Versionshinweise

*Release-Datum: 2021-07-30*

## Neue Entwicklung

- **Quartalsabschluss-Oberfläche** — bevor MDL-Einträge geprüft werden, in den Quartalsabschluss-Einstellungen `maximaler Vortrag` konfigurieren.
- Zauberstab im Quartalsabschluss bietet Optionen zum Füllen von „Zu nächstes Quartal".
- Quartale sind ab dem ersten Quartal mit MDL-Buchungen durchzugehen: Prüfen, Monatslocks setzen, Quartalskorrekturen.
- Bereits ausbezahlte MDL erscheinen nicht mehr in laufendem oder Vorquartal-Summen (laut Besprechung mit Miklos, da ausbezahlt ≠ Zeitausgleich-Reserve).

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.1

# D-ESS 0.5.1 · Versionshinweise

*Release-Datum: 2021-08-03*

## Bug Fixes

- **Benutzer-MDL Korrekturtabelle** zeigt jetzt nur noch Admin-Korrekturen; sonstige MDL-Korrekturen aus Zeitbuchungen oder Quartalsabschluss erscheinen dort nicht mehr.

## Neue Entwicklung

- **RFID-Stempeluhr** — Timeout-Auswahl (Arbeit beginnt / endet), 6 s bis Reset.
- **Benutzerabwesenheit-Korrekturen** — neues Beschreibungsfeld.
- **Dienstzeitnachweis** + **Mein Dienstzeitnachweis** komplett überarbeitet:
  - Bug behoben: Pflegefreistellung wurde bei AZM mit nicht-produktiven Stunden falsch angezeigt.
  - „Übertrag aus Vormonat" + „Übertrag ins nächste Monat" entfernt (waren seit MDL-Einführung falsch berechnet).
  - „Differenz in diesem Monat" neu kalkuliert.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.2

# D-ESS 0.5.2 · Versionshinweise

*Release-Datum: 2021-08-09*

## Bug Fix

- Monate konnten nicht gesperrt werden, wenn eine Buchung am ersten Tag des Folgemonats um Mitternacht begann. Behoben.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.3

# D-ESS 0.5.3 · Versionshinweise

*Release-Datum: 2021-08-11*

## Bug Fixes

- **AZM-Auswahl-Logik** — Wenn in den Benutzerdaten **irgendein** AZM-Eintrag existiert, werden die Benutzergruppen-AZM-Einstellungen **vollständig ignoriert** (vorher Tag-für-Tag-Fallback, was bei Mid-Month-Start zu unsperrbaren Monaten führte).
- **Benutzer aus Benutzergruppe entfernen** — leere Auswahl in der Dropdown-Liste → User wird der Gruppe entzogen.

## Neue Entwicklung

- **Erweiterungs-Feld für Kostenstellen** (analog zu Benutzer + Kostenträger) — z.B. alte BKLR-Nummer ablegbar.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.4

# D-ESS 0.5.4 · Versionshinweise

*Release-Datum: 2021-08-11*

## Bug Fix / Feature

- Schaltfläche **„Neue Kostenträgergruppe hinzufügen"** war immer deaktiviert — behoben (Feedback Rainer Aichinger).
- Neue Server-`config.js`-Option `SYSTEM_ZEITERFASSUNG_COLLAPSE_KOSTENSTELLEN=true` → Kostenstellen in „Arbeitszeit zuteilen" starten zusammengeklappt.

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.5

# D-ESS 0.5.5 · Versionshinweise

*Release-Datum: 2021-09-15*

## Bug Fix

- Profile-Bug + Prozent-Formatierung behoben.

*Autor: Thomas Skidmore · Commit `61160f64`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 0.5.6

# D-ESS 0.5.6 · Versionshinweise

*Release-Datum: 2021-10-07*

## Wartungs-Release

- Diverse interne Stabilisierungen + Code-Cleanup. Keine Schema-Änderungen.

*Autor: Thomas Skidmore · Commit `23e7839d`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.1

# D-ESS 1.0.1 · Versionshinweise

*Release-Datum: 2021-10-28*

## Erste 1.0-Linie

- Versionssprung auf 1.0.x — Markierung des Produktiv-Status nach Pilot-Abschluss.
- Diverse Bug-Fixes, Stabilisierung.

*Autor: Thomas Skidmore · Commit `7adb0a5b` / `a0c5017a`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.2

# D-ESS 1.0.2 · Versionshinweise

*Release-Datum: 2021-11-02*

## Bug Fix

- **MDL-Duplikat-Bug** behoben — doppelte MDL-Einträge konnten unter bestimmten Bedingungen entstehen.

*Autor: Thomas Skidmore · Commit `070f9839`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.3

# D-ESS 1.0.3 · Versionshinweise

*Release-Datum: 2021-11-19 / 2022-02-04*

## Neue Entwicklung

- **Report-Query erlaubt jetzt `CALL`** — Stored Procedures können in SQL-Berichten verwendet werden.

*Autor: Thomas Skidmore · Commits `435fb045`, `4fe769de`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.4

# D-ESS 1.0.4 · Versionshinweise

*Release-Datum: 2022-02-07*

## Bug Fix

- **Quartal-Bug** in der Quartalsabschluss-Logik behoben.

*Autor: Thomas Skidmore · Commits `08bdeed4`, `3d01b1e5`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.5

# D-ESS 1.0.5 · Versionshinweise

*Release-Datum: 2023-04-19*

## Wartungs-Release

- Längere Lücke zur 1.0.4 — diverse interne Fixes + Dependency-Updates.
- Build-Ressourcen-Kopier-Bug behoben (`3459cc4d`).

*Autor: Thomas Skidmore · Commit `1a5ceb23`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.6

# D-ESS 1.0.6 · Versionshinweise

*Release-Datum: 2023-05-09*

## Wartungs-Release

- Folge-Release zu 1.0.5 mit kleineren Fixes.

*Autor: Thomas Skidmore · Commit `984192ab`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.7

# D-ESS 1.0.7 · Versionshinweise

*Release-Datum: 2023-06-20*

## Wartungs-Release

- Mehrere kleinere Korrekturen und UI-Anpassungen.

*Autor: Thomas Skidmore · Commit `057ecf19`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.8

# D-ESS 1.0.8 · Versionshinweise

*Release-Datum: 2023-08-11*

## Wartungs-Release

- Versionsnummer-Korrektur + diverse Stabilisierungen.

*Autor: Thomas Skidmore · Commits `d25519f8`, `3e7f5478`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.9

# D-ESS 1.0.9 · Versionshinweise

*Release-Datum: 2023-10-05 bis 2023-11-15*

## Neue Entwicklung

- **OIDC-Login („SSO mit Keycloak")** — neuer Login-Button für Single-Sign-On gegen `sso.agrarforschung.at`.
- **`OIDC_ENABLED`** wird jetzt direkt beim Auth-Init geprüft (Fix `aec881f9`).
- SSO-Login-Button-Text angepasst (`b6a3d21a`).
- **Abwesenheitskalender** — neue Farbcodierung (`c91ede07`).

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.10

# D-ESS 1.0.10 · Versionshinweise

*Release-Datum: 2024-02-28 bis 2024-05-15*

## Neue Entwicklung

- **NFC-Stempeluhr** — Erweiterung der Hardware-Integration (`30577346`).
- **Auto-MDL-Benachrichtigungs-Bug** behoben (`7b047f27`).
- Erweitertes Logging (`5c7e1b96`).

*Autor: Thomas Skidmore · Hauptcommit `3f86153c`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.11

# D-ESS 1.0.11 · Versionshinweise

*Release-Datum: 2024-07-31 bis 2024-08-12*

## Bug Fixes

- **Mehrfach-Login im selben Browser** behoben (`8402feed`).
- **Refresh-State-Bug** korrigiert (`0c44a7b2`).
- **Sub-Kostenträger-Erweiterung** (`3f13e2e6`).
- **Keycloak-Login-Button** Flach-Stil (`5bb4051b`).

## RC-Zyklus

Zwei Release-Candidates vor finalem Release (`a21be58a`, `53c3e2e9`).

*Autor: Thomas Skidmore*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.12

# D-ESS 1.0.12 · Versionshinweise

*Release-Datum: 2024-10-22*

## Sicherheits-Release

- **Superuser-Bug** behoben (`954c14d4`).
- **SQL-Injection-Prevention** in Report-Query-Results gehärtet (`d7447490`, Folge-Commit 2024-11-12).
- NFC-Stempeluhr UI: Uhrzeit größer dargestellt (`e152d0f2`).

*Autor: Thomas Skidmore · Commit `12b727d7`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.13

# D-ESS 1.0.13 · Versionshinweise

*Release-Datum: 2025-07-14*

## Wartungs-Release

- Interne Korrekturen + GitLab-CI-Pipeline-Updates.
- Vorbereitung auf KLR/Buchungslogik-Erweiterungen.

*Autor: Thomas Skidmore · Commit `3c09b3e1`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS 1.0.14

# D-ESS 1.0.14 · Versionshinweise

*Release-Datum: 2026-04-22*

## Neue Entwicklung — „MDL"

Aktuelle Produktivversion an der BAB (`dess.agrarforschung.at`, vm-plesk-live).

- **MDL-Erweiterungen** — überarbeitete Quartalsabschluss-Logik, neue Stundenart-Optionen.
- Diverse interne Verbesserungen.

## Bekannte Themen / offene Punkte

- **Keycloak 26 Upgrade (2026-05-12)** hat zwei OIDC-Inkompatibilitäten ausgelöst:
  1. RFC 9207 `iss`-Parameter wird von `openid-client` v5.6 validiert (gefixt KC-seitig via `exclude.issuer.from.auth.response=true`).
  2. `req.protocol` hinter nginx liefert `http` statt `https` → Session-Cookie-Verlust. **Fix `app.set('trust proxy', 1)` in `Dess/src/server/web/server.ts` steht aus.**

Details: Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`.

*Autor: Thomas Skidmore · Commit `8939fc29`*


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS Update

# D-ESS an den Dienststellen

# D-ESS an den Dienststellen

> **Stand: 2026-05-23** — Liste der bekannten DESS-Deployments außerhalb der BAB. **Erreichbarkeit aus dem BAB-Netz wurde geprüft** (Audit 2026-05-23). Erreichbarkeit von extern oder aus dem jeweiligen Hausnetz kann abweichen.

## Übersicht

| Dienststelle | URL | Erreichbarkeit (Audit 2026-05-23) | Anmerkung |
|---|---|---|---|
| **BAB** (eigener Betrieb) | <https://dess.agrarforschung.at> | erreichbar (HTTP 200) | Hauptinstanz, Plesk auf `vm-plesk-live.bab.network` |
| BAW | <https://dess.baw.at> | Timeout aus BAB-Netz | DNS resolvt, separates Hausnetz |
| Bundesgärten | <https://dess.gartenbau.at> | Timeout aus BAB-Netz | DNS resolvt |
| Francisco Josephinum | <https://dess.josephinum.at> | erreichbar (HTTP 200) | öffentlich erreichbar |
| HBLA Klosterneuburg | <https://dess.hblawo.bmlf.gv.at> | DNS-Fehler aus BAB-Netz | nur intern bmlf.gv.at? |
| Raumberg-Gumpenstein | <https://dess.raumberg-gumpenstein.at> | Timeout aus BAB-Netz | DNS resolvt |
| Pitzelstätten | <https://dess.pitzelstaetten.at> | DNS-Fehler aus BAB-Netz | siehe Hinweis unten |

## Deployment-Topologie

Jede Dienststelle betreibt eine eigene DESS-Instanz mit eigener DB. Es handelt sich **nicht** um Multi-Tenancy in einer geteilten Instanz, sondern um **getrennte Plesk-Installationen** mit gleichem Code-Stand. Die CI-Pipeline (`.gitlab-ci.yml`) deployt aktuell folgende Stages:

```text
master → deploy:staging         (staging-dess.agrarforschung.at)
master → deploy:staging_extern  (dess-pitz.agrarforschung.at, etc.)
master → deploy:live            (dess.agrarforschung.at + Dienststellen-Live-Hosts)
```

Aktive CI-Pipelines + Tags siehe `https://git.agrarforschung.at/dess/dess/-/pipelines`.

## Ansprechpartner:innen

| Thema | Person |
|---|---|
| Code + Schema | Thomas Skidmore (thomas.skidmore@bab.gv.at) |
| Benutzerhandbuch-Pflege (historisch) | Ralf Bauridl (ralf.bauridl@bundesgaerten.at) |
| Projektleiter-Berechtigungen + Reports | Siegbert Linder (siegbert.linder@bab.gv.at) |
| Betrieb BAB-Instanz | Roland Neissl |

## Offene Punkte

- [ ] Erreichbarkeitsprüfung von extern für jede Dienststelle (durch jeweilige IT lokal)
- [ ] Klärung ob alle Dienststellen noch die aktuelle DESS-Version 1.0.14 fahren oder ältere Stände


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# D-ESS Benutzerhandbuch (under construction)

# D-ESS Benutzerhandbuch für Administratoren (historisch)

# D-ESS Benutzerhandbuch für Administratoren

> **Status (Stand 2026-05-23):** Dieses Dokument wurde 2021 von **Ralf Bauridl (bundesgärten.at)** als Pilotbeitrag begonnen und ist seitdem **nicht weitergeführt** worden. Es spiegelt den Stand der Pilotphase wider und ist als **historischer Schnappschuss** zu lesen, nicht als aktuelles Handbuch.
>
> **Aktuelle Doku-Quellen:**
> - Code + Stammdatenmodell: GitLab `dess/dess`
> - Integrations-Konzept BAB + OpenProject: KIROOT-Vault `wiki/concepts/integration-dess-openproject.md`
> - SSO-Konfiguration + Incident-Historie: KIROOT-Vault `wiki/incidents/2026/`
>
> Für Endanwender:innen-Schulungen ist Stand 2026-05 keine aktuelle Doku-Quelle vorhanden — als Backlog-Punkt erfasst (siehe „Offene Punkte" am Seitenende).

## 1. Ziel + Prinzipien (2021)

Ursprünglich verfasst als kollaboratives Wiki-Handbuch für die DESS-Zeiterfassung der Dienststellen. Leitprinzipien:

- **KISS** — Keep It Simple, Stupid: schlanker Inhalt, schlankes Design.
- **WIKI-Prinzip** — jede:r Benutzer:in kann beitragen, ergänzen, korrigieren.

Beiträge wurden 2021 an `ralf.bauridl@bundesgaerten.at` geschickt. **Diese Sammel-Adresse ist Stand 2026-05 nicht mehr aktiv betreut.**

## 2. Funktionen von D-ESS

DESS ist die Arbeitszeiterfassung für Dienststellen zur Verrechnung von Arbeitskosten auf interne und externe Leistungen:

- Erfassung + Dokumentation der An- und Abwesenheitszeiten
- Erfassung + Dokumentation der geleisteten Tagesarbeitszeiten
- Zuordnung + Dokumentation der Leistungszeit zu Projekten und Leistungsteilprozessen (intern/extern)
- Auswertung + Interpretation der erfassten Leistungsstunden
- Verrechnung von Leistungskosten (Beamte, VB, KV, Leiharbeitsverträge)
- Feststellung von Verrechnungssätzen (tatsächliche Arbeitskosten der Dienststelle nach Verrechnungsgruppen)
- Erfassung + Vorbereitung der Verrechnung von Mehrdienstleistungen (MDL)
- Grundlage für Statistiken
- Protokollierung der Erbringung gesetzlicher Aufträge (z.B. Baumschutzgesetz, Schneeräumung)
- Strategische Entscheidungsgrundlage

## 3. Erster Login

> **Stand 2026-05:** Login erfolgt für BAB-Benutzer:innen ausschließlich per **Keycloak-SSO** (Button „Login mit SSO"). Lokale Passwort-Logins (passport-local mit MD5-Hash) sind nur noch für Notfall-Accounts vorgesehen.

Aufruf der Zeiterfassung:

| Dienststelle | URL |
|---|---|
| BAB | <https://dess.agrarforschung.at> |
| (weitere) | siehe Seite [D-ESS an den Dienststellen](https://doku.agrarforschung.at/books/babverwaltung-dess-zeiterfassung/page/d-ess-an-der-dienststelle) |

**SSO-Login:**

1. URL aufrufen
2. „Login mit SSO" anklicken
3. Keycloak-Login mit AD-Account (BAB\\<username> bzw. UPN)
4. Weiterleitung zurück nach DESS

**Lokales Admin-Login (Bootstrap / Notfall):**

1. Benutzername + Passwort vom Hauptadmin (Thomas Skidmore oder Roland Neissl) anfordern.
2. Nach erstem Login Passwort selbst ändern.

## 4. Auswahlmenü + Stammdaten

Über die Menüleiste werden die Stammdatengruppen aufgerufen:

- **Benutzerverwaltung** — User, Benutzergruppen, AZM, Stehende Buchungen, MDL
- **Stammdaten** — Abteilungen, Kostenstellen, Kostenträger, Kostenträgergruppen, Tätigkeiten, KS↔KT- und KT↔Tätigkeit-Verknüpfungen
- **Zeiterfassung** — Eigene Buchungen, Jahresübersicht, Gruppenbuchung
- **Berichte** — Standard-Reports (Dienstzeitnachweis, KLR-Export, …) + SQL-Query-Berichte
- **Quartalsabschluss** — MDL-Pflege
- **System** — Berechtigungen, Konfiguration, Stundenarten

## 5. Benutzer:in anlegen (Admin-Workflow)

1. **Benutzerverwaltung → Benutzer → Neu**
2. Pflichtfelder ausfüllen:
   - Benutzername (Login)
   - Vor- + Nachname, E-Mail
   - Abteilung + Kostenstelle (für KLR-Zuordnung)
   - Authentifizierungstyp: `OIDC` für SSO-User, `AD` für reine AD-Auth, `DB` für lokale User
   - BKLR-ID (falls relevant)
3. **Benutzergruppe** zuweisen (definiert Default-AZM + Stehende Buchungen)
4. **Stehende Buchungen** ggf. user-spezifisch überschreiben
5. Speichern → User erscheint in der Login-Maske

## 6. Datenmodell-Übersicht

Die Stammdaten-Hierarchie ist **dreidimensional**:

```text
Kostenstelle ──(M:N)── Kostenträger ──(M:N)── Tätigkeit
                            │
                            └─── BKLR-ID (Verrechnungs-Schnittstelle)
```

Gültige Buchungstripel = Schnittmenge der M:N-Tabellen.

Volle Schema-Doku siehe Vault `wiki/concepts/integration-dess-openproject.md` Abschnitt 2.4.

## 7. Verwandte Themen

- [GitLab Repo `dess/dess`](https://git.agrarforschung.at/dess/dess)
- KIROOT-Vault `wiki/concepts/integration-dess-openproject.md`
- KIROOT-Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md` (SSO-Login-Incident KC26)

## Offene Punkte (Backlog)

- [ ] **End-User-Handbuch** — kein gepflegtes Handbuch für reguläre Anwender:innen vorhanden; Bedarf prüfen.
- [ ] **Screenshots aktualisieren** — alle Bildschirmfotos stammen aus der Pilotphase 2021 (DESS 0.x), aktuelle UI ist Angular 12+/1.0.14.
- [ ] **Mit Thomas Skidmore klären**, ob noch ein eigenes End-User-Handbuch erstellt werden soll oder ob die On-Screen-Hilfe ausreicht.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*

# DESS · DB komplett zurücksetzen

# DESS · DB komplett zurücksetzen

> **Achtung:** Diese Anleitung löscht **alle Bewegungsdaten** in einer DESS-Instanz. Nur für Test-/Staging-Umgebungen oder bei einem expliziten Neuaufsatz nach Abstimmung. **Vorher Voll-Backup** der MariaDB-DB (siehe Plesk-Backup oder `mariadb-dump`).

## Tabellen leeren

In MariaDB / MySQL `DROP TABLE` direkt ausführen — danach beginnen Auto-Increment-IDs wieder bei 1, Tabellen sind komplett leer.

### Standard-Reset (Bewegungsdaten)

```sql
DROP TABLE tbl_notification;
DROP TABLE tbl_on_call;
DROP TABLE tbl_time_booking;
DROP TABLE tbl_time_booking_change_log;
DROP TABLE tbl_time_booking_day;
DROP TABLE tbl_time_booking_hour;
DROP TABLE tbl_time_booking_work;
DROP TABLE tbl_log;
DROP TABLE tbl_mdl_entry;
```

Anschließend Anwendung **immer** neu starten (Plesk → Node.js → Restart App oder `touch tmp/restart.txt`). DESS legt die Tabellen beim Start mit TypeORM neu an.

### Korrekturdaten beibehalten

Wenn nur Buchungen gelöscht werden sollen, MDL-/Abwesenheitskorrekturen aber bleiben sollen:

**MDL behalten** (nur Buchungs-MDL-Bezüge weg):

```sql
DELETE FROM tbl_mdl_correction WHERE mdl_correction_booking_id <> 0;
```

**Abwesenheitskorrekturen behalten** (Urlaub, ZA):

```sql
DELETE FROM tbl_time_absence WHERE absence_booking_id <> 0;
```

### Komplett-Reset inkl. MDL + Abwesenheits-Korrekturen

```sql
DROP TABLE tbl_mdl_correction;
DROP TABLE tbl_time_absence;
```

## Pflicht-Schritt: Anwendung neu starten

```bash
touch /var/www/vhosts/agrarforschung.at/dess.agrarforschung.at/tmp/restart.txt
```

Oder per Plesk-UI: **Node.js → Restart App**. Ohne Neustart sind die fehlenden Tabellen für Node-Sessions noch im Cache und es kommt zu Fehlern.

## Verifikation

Nach dem Neustart:

```sql
SELECT COUNT(*) FROM tbl_time_booking;
SELECT MAX(booking_id) FROM tbl_time_booking;
```

Beide sollten 0 bzw. NULL liefern. Erste neue Buchung bekommt `booking_id = 1`.


---

*Stand: 2026-05-23 · Audit: Roland Neissl · Quelle: GitLab `dess/dess` Commit-Historie + Vault `wiki/concepts/integration-dess-openproject.md` + Vault `wiki/incidents/2026/2026-05-21-dess-sso-broken-after-kc26.md`*