after my first attempt at a Teams integration (see MS Teams Avatar / Presence Integration) I have now implemented this as a full-fledged add-on. The old approach with the Microsoft Graph Toolkit will become obsolete anyway - Microsoft is discontinuing support for it in August 2026. The new add-on instead uses MSAL.js and the Graph API directly, with a clean provider architecture and significantly more features.
What does the add-on do?
The Collaboration Add-on brings Microsoft 365 directly into your Znuny - avatars, presence status, contact information and scheduling, all without context switching.
Features:
- Avatar + Presence - Profile pictures and online status from Microsoft 365 (Available/Busy/Away/Offline)
- Hover Cards - Detailed profile cards with department, phone, location, email etc.
- Teams Chat - One click opens a chat with the person
- Teams Call - One click starts a call
- Meeting Scheduler - Schedule appointments with Free/Busy lookup, Teams Meeting or On-site
- Ticket Linking - Created appointments are automatically linked to the ticket
- Calendar + Out of Office - When selecting Owner or Responsible (ticket creation or update): See calendar availability and out of office message directly
- MSAL.js with Silent SSO (token persists across browser tabs)
- Modular provider architecture (M365, Znuny fallback, Mock for development)
- Feature toggles for granular control
- German and English translations
- Znuny 7.2.x
- Microsoft 365 Tenant with Entra ID
- App Registration with corresponding Graph API Permissions
- Repository: https://codeberg.org/wolkig-it/znuny_collaboration
- Blog post with screenshots: https://wolkig.it/de/blog/znuny-collaboration-addon/
- Documentation: In the repository under /docs
License: GPL v3 - Open Source, free, modifications allowed
Feedback and suggestions for improvement are welcome!
This 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.