ich habe ein neues Add-on entwickelt: ExoOooSync - automatische Synchronisation des Abwesenheitsstatus aus Microsoft Exchange Online nach Znuny.
Das Problem:
Agenten setzen ihren Abwesenheitsassistenten in Outlook - aber in Znuny weiß niemand davon. Tickets werden an abwesende Agenten zugewiesen, bleiben liegen, Kunden warten. Die manuelle Pflege in zwei Systemen wird regelmäßig vergessen.
Die Lösung:
ExoOooSync liest den OOO-Status aller Agenten aus Exchange Online per Microsoft Graph API und überträgt ihn automatisch in die Znuny-Agenten-Einstellungen. Der Agent setzt seinen OOO nur noch in Outlook - Znuny übernimmt den Rest.
Features:
- Vollautomatische Synchronisation - Kein manuelles Zutun nötig
- Drei Zuordnungsmodi - E-Mail=UPN, UserLogin→onPremisesSamAccountName, E-Mail→Primary SMTP
- Erkennt alle Exchange-Zustände - Deaktiviert, Geplant (mit Zeitraum), Immer aktiviert
- Zeitgesteuert - Werktags 06:00-18:00 alle 15 Min, sonst stündlich (anpassbar)
- Detailliertes Logging - Jede Änderung einzeln im Systemprotokoll mit Vorher/Nachher-Werten
- CLI-Befehl - Manuelle Ausführung und Tests per Console-Command
- Widget-Deaktivierung - Agenten können OOO nicht mehr manuell in Znuny ändern
- E-Mail-Domänenfilter - Nur bestimmte Domänen synchronisieren (z.B. interne Agenten)
- Skalierbar - Graph API $batch-Endpunkt (20 Abfragen/Request), automatischer Retry bei Drosselung
1. Agent stellt automatische Antworten in Outlook ein (z.B. 01.04. - 14.04.)
2. ExoOooSync erkennt den Status beim nächsten Sync-Lauf
3. Znuny zeigt "Abwesend bis 14.04." beim Agenten an
4. Am 14.04. deaktiviert Exchange die Antworten automatisch
5. Nächster Sync deaktiviert OOO in Znuny
Technische Details:
- OAuth2 Client Credentials Flow (Anwendungsberechtigung, kein User-Kontext)
- Microsoft Graph API v1.0 für mailboxSettings/automaticRepliesSetting
- Znuny Daemon SchedulerCronTaskManager für Zeitsteuerung
- OData-Injection-Schutz und URI-Encoding
- Unit Tests (85 Tests) für Kernfunktionen
- Znuny 7.2.x mit laufendem Daemon
- Microsoft 365 mit Exchange Online
- Azure AD (Entra ID) App-Registrierung mit MailboxSettings.Read Berechtigung
1. Repository hinzufügen: Admin > Systemkonfiguration > Package::RepositoryList
Name: wolkig.it, URL: https://wolkig.it/packages
2. Admin > Paketverwaltung > "ExoOooSync" installieren
3. Azure AD Zugangsdaten in der Systemkonfiguration eintragen
4. Zuordnungsmodus wählen, optional Domänenfilter setzen, Feature aktivieren
Links:
- Repository: codeberg.org/wolkig-it/znuny_exo_ooo_sync
- Dokumentation: Im Repository unter /docs (DE + EN)
- Blog-Artikel: wolkig.it/blog/znuny-exo-ooo-sync
Feedback und Verbesserungsvorschläge sind willkommen! Das Add-on ist mit Hilfe von Claude Code entstanden - bei Interesse an der Entwicklungsmethodik gerne fragen.
Viele Grüße
Stephan Lang
wolkig.it