Das Problem: Abwesenheitsstatus in zwei Systemen pflegen
Kennen Sie das? Ein Agent aktiviert seinen Abwesenheitsassistenten in Outlook - aber vergisst, den Status auch in Znuny zu setzen. Tickets werden zugewiesen, bleiben unbearbeitet, Kunden warten.
In vielen Unternehmen führt die manuelle Pflege des Abwesenheitsstatus in mehreren Systemen zu:
- Verwaisten Tickets - Zuweisungen an abwesende Agenten
- Doppelter Pflege - Status muss in Outlook und Znuny separat gesetzt werden
- Vergessenen Updates - Agent kommt zurück, vergisst Znuny-Status zu deaktivieren
- Fehlender Übersicht - Teamleiter sehen nicht, wer tatsächlich abwesend ist
- Inkonsistenten Daten - Outlook sagt "abwesend", Znuny sagt "verfügbar"
Die Lösung: Automatische Synchronisation aus Exchange Online
Das ExoOooSync Addon für Znuny 7.2.x löst dieses Problem vollautomatisch. Es liest den Abwesenheitsstatus aller Agenten aus Microsoft Exchange Online per Graph API und überträgt ihn in die Znuny-Agenten-Einstellungen - ohne manuelles Zutun.
Der Agent setzt seinen OOO nur noch in Outlook - Znuny übernimmt den Rest.
So funktioniert es
Automatische Synchronisation
Das Addon läuft als Hintergrund-Job im Znuny-Daemon:
- Token holen - OAuth2 Client Credentials gegen Azure AD
- Status abfragen - Automatische Antworten jedes Agenten per Graph API lesen
- Vergleichen - Aktuellen Znuny-Status mit Exchange-Status abgleichen
- Aktualisieren - Nur bei Änderungen die Znuny-Preferences setzen
- Protokollieren - Jede Änderung einzeln ins Systemprotokoll schreiben
Drei Exchange-Zustände werden erkannt
| Exchange-Status | Znuny-Ergebnis |
|---|---|
| Deaktiviert | Abwesenheit in Znuny wird deaktiviert |
| Geplant (mit Zeitraum) | Start-/Enddatum aus Exchange übernommen, Znuny aktiviert automatisch zum Startdatum |
| Immer aktiviert (ohne Enddatum) | Abwesenheit aktiv, synthetisches Enddatum +365 Tage |
Flexible Benutzerzuordnung
Znuny und Exchange verwenden oft unterschiedliche Bezeichner für denselben Benutzer. Das Addon unterstützt drei Zuordnungsmodi:
| Modus | Znuny-Feld | Exchange-Suche |
|---|---|---|
| UserEmail_UPN | E-Mail-Adresse | Direkt als User Principal Name |
| UserLogin_SAM | UserLogin | Suche über onPremisesSamAccountName in Entra ID |
| UserEmail_PrimarySMTP | E-Mail-Adresse | Suche über mail-Attribut in Entra ID |
Zeitgesteuerte Ausführung
Die Synchronisation läuft zeitgesteuert im Hintergrund:
| Zeitraum | Intervall |
|---|---|
| Werktags 06:00-18:00 | Alle 15 Minuten |
| Sonst (Abende, Nächte, Wochenenden) | Stündlich |
Detailliertes Logging
Jede Änderung wird einzeln im Znuny-Systemprotokoll dokumentiert:
[notice] ExoOooSync: Updated user 'jdoe' (ID: 5): OutOfOffice: '0' -> '1',
OutOfOfficeStartYear: '' -> '2026', OutOfOfficeStartMonth: '' -> '3', ...
[info] ExoOooSync: Synchronization completed. Synced: 45, Changed: 2,
Skipped: 1, NoMailbox: 0, Errors: 0.
E-Mail-Domänenfilter
Nicht alle Agenten haben ein Exchange Online-Postfach. Mit dem konfigurierbaren Domänenfilter lässt sich einschränken, welche Agenten synchronisiert werden - z.B. nur interne Domänen. Externe Agenten ohne Exchange-Postfach werden automatisch übersprungen.
Skalierbarkeit
Das Addon nutzt den Graph API $batch-Endpunkt und bündelt bis zu 20 Abfragen pro HTTP-Request. Bei Drosselung durch Microsoft (HTTP 429) wartet es automatisch und wiederholt die Anfrage. Installationen mit mehreren tausend Agenten sind damit kein Problem.
Typische Szenarien
Szenario 1: Agent geht in den Urlaub
- Agent stellt in Outlook die automatischen Antworten ein (z.B. 01.04. - 14.04.)
- ExoOooSync erkennt den
scheduled-Status beim nächsten Sync-Lauf - Znuny zeigt automatisch "Abwesend bis 14.04." beim Agenten an
- Am 14.04. deaktiviert Exchange automatisch die Antworten → nächster Sync deaktiviert OOO in Znuny
Szenario 2: Agent ist spontan krank
- Agent (oder Teamleiter) aktiviert automatische Antworten in Outlook ohne Enddatum
- ExoOooSync erkennt
alwaysEnabledund setzt OOO in Znuny (Enddatum: +365 Tage) - Agent kommt zurück, deaktiviert automatische Antworten in Outlook
- Nächster Sync-Lauf deaktiviert OOO in Znuny
Technische Voraussetzungen
| Voraussetzung | Details |
|---|---|
| Znuny | 7.2.x mit laufendem Daemon |
| Microsoft 365 | Exchange Online mit Azure AD (Entra ID) |
| Azure AD | App-Registrierung mit MailboxSettings.Read Berechtigung |
| Netzwerk | Ausgehend HTTPS zu login.microsoftonline.com und graph.microsoft.com |
Installation
Die Installation erfolgt wie bei jedem Znuny-Paket:
Option A: Paket-Repository (empfohlen)
- Admin → Systemkonfiguration →
Package::RepositoryList - Repository hinzufügen: Name
wolkig.it, URLhttps://wolkig.it/packages - Admin → Paketverwaltung → "ExoOooSync" installieren
Option B: Manuell
- OPM-Paket herunterladen
- Admin → Paketverwaltung → Paket installieren
Nach der Installation:
- Azure AD Zugangsdaten in der Systemkonfiguration eintragen
- Zuordnungsmodus wählen
- Optional: E-Mail-Domänenfilter setzen (z.B. nur
firma.desynchronisieren) - Feature aktivieren (
ExoOooSync::Enabled) - Manuelle Testausführung:
bin/znuny.Console.pl Maint::ExoOooSync::Run --force
Das Addon deaktiviert automatisch das manuelle Abwesenheits-Widget in den Agenten-Einstellungen, da der Status jetzt zentral aus Exchange verwaltet wird.
Open Source
ExoOooSync ist Open Source unter der AGPL v3 Lizenz:
- Kostenlos nutzbar
- Quellcode einsehbar
- Anpassungen erlaubt
- Community-Beiträge willkommen
Repository: codeberg.org/wolkig-it/znuny_exo_ooo_sync
Fazit
Mit ExoOooSync gehört die doppelte Pflege des Abwesenheitsstatus der Vergangenheit an. Agent setzt OOO in Outlook - Znuny weiß Bescheid.
Vorteile auf einen Blick:
- Vollautomatische Synchronisation aus Exchange Online
- Keine doppelte Pflege mehr
- Drei Zuordnungsmodi für jede Umgebung
- Zeitgesteuerte Hintergrundausführung
- Detailliertes Änderungsprotokoll
- CLI-Befehl für manuelle Ausführung und Tests
- Kostenlos und Open Source
Jetzt ausprobieren!
Download und Dokumentation: codeberg.org/wolkig-it/znuny_exo_ooo_sync