I've developed a new add-on: ExoOooSync - automatic synchronization of Out-of-Office status from Microsoft Exchange Online to Znuny.
The Problem:
Agents set their automatic replies in Outlook - but Znuny doesn't know about it. Tickets get assigned to absent agents, remain unprocessed, customers wait. Manually maintaining the status in two systems gets forgotten regularly.
The Solution:
ExoOooSync reads the OOO status of all agents from Exchange Online via Microsoft Graph API and automatically transfers it to Znuny agent preferences. The agent only sets OOO in Outlook - Znuny takes care of the rest.
Features:
- Fully automatic synchronization - No manual intervention needed
- Three mapping modes - Email=UPN, UserLogin→onPremisesSamAccountName, Email→Primary SMTP
- Detects all Exchange states - Disabled, Scheduled (with time range), Always enabled
- Scheduled execution - Weekdays 06:00-18:00 every 15 min, otherwise hourly (configurable)
- Detailed logging - Every change individually in system log with before/after values
- CLI command - Manual execution and testing via console command
- Widget deactivation - Agents can no longer manually change OOO in Znuny
- Email domain filter - Sync only specific domains (e.g. internal agents)
- Scalable - Graph API $batch endpoint (20 queries/request), automatic retry on throttling
- Znuny 7.2.x with running Daemon
- Microsoft 365 with Exchange Online
- Azure AD (Entra ID) app registration with MailboxSettings.Read permission
1. Add repository: Admin > System Configuration > Package::RepositoryList
Name: wolkig.it, URL: https://wolkig.it/packages
2. Admin > Package Manager > Install "ExoOooSync"
3. Enter Azure AD credentials in System Configuration
4. Select mapping mode, optionally set domain filter, enable the feature
Links:
- Repository: codeberg.org/wolkig-it/znuny_exo_ooo_sync
- Documentation: In repository under /docs (DE + EN)
- Blog article: wolkig.it/blog/znuny-exo-ooo-sync
Feedback and suggestions for improvement are welcome! The add-on was created with the help of Claude Code - feel free to ask if you're interested in the development methodology.
Best regards
Stephan Lang
wolkig.it
This is an English translation of the original German post, published to reach a wider audience.