Presence Sync
Presence Sync for Cisco and Microsoft Teams
Whoever is talking on the Cisco phone shows as "In a call" in Teams. EasyUC aligns the presence status between Cisco telephony and Microsoft Teams. The module runs on your appliance and needs neither SBC nor ACD.
One status for two telephony worlds
In many companies there are Cisco phones on the desks while chat and meetings run in Microsoft Teams. Each system keeps its own presence status and knows nothing about the other. Teams shows a colleague as available although he is talking on the desk phone.
Presence Sync closes this gap. EasyUC detects connected calls in CUCM and sets the matching Teams user to "In a call" for the duration of the call. With Cisco Jabber it also transfers states in both directions. If your users work with the Webex App, EasyUC switches and observes the integration that Cisco provides for this.
- Call on the Cisco phone: Teams shows "In a call"
- Jabber status "Available" and "Away" to Teams
- Teams status to Jabber, including call and meeting
- Webex App: switch and observe the native Cisco integration
- Each direction can be switched separately
- Separate module, without SBC and without ACD
Which state goes in which direction
The tables apply to desk phones and Cisco Jabber with IM and Presence. What cannot be transferred safely is left out by EasyUC, and the reason is written to the log.
| Source at Cisco | Result in Teams |
|---|---|
| Connected call on the phone or softphone | "Busy" with the activity "In a call" until the call ends |
| Ringing, dialling | no change |
| Jabber: Available | Available |
| Jabber: Away | Away |
| Jabber: Busy, Do not disturb | left out and logged |
| Jabber: Offline | EasyUC removes its status, Teams shows the user's own status |
| Source not reachable | the last status stays until it expires; nobody is set to "Available" |
| Status in Teams | Result in Jabber |
|---|---|
| Available | available |
| Away, Be right back | away |
| Busy, In a meeting | busy |
| In a call, In a conference call | on a call |
| Do not disturb, Presenting | left out and logged |
| Offline | EasyUC removes its status in Jabber |
| Status unknown | the previous status in Jabber stays |
Native integration by Cisco
With the Webex App the status is held in the Webex cloud, even when telephony runs through CUCM. Cisco synchronises with Teams through "Cisco Call for Microsoft Teams". In this mode EasyUC publishes nothing itself. It reads and sets the organisation-wide switch of the integration and logs the status changes on both sides.
No feedback
A status that EasyUC has set itself is not mirrored back in the opposite direction. A call on the Cisco phone appears in Teams, but does not come back to Jabber as a Teams call.
The user decides
"Do not disturb" is a personal decision. EasyUC does not overwrite it in either direction and does not set a preferred status in Teams that would displace a manual choice.
What changes in daily work
The benefit shows where someone is called or messaged today although they are on a call.
The colleague is on the phone
Ms Krüger answers a customer call on her Cisco phone. Within the configured interval she shows as "In a call" in Teams. Anyone who wants to reach her sees this beforehand and writes a message or waits.
Transfer without a failed attempt
The busy lamp field of the EasyUC attendant console shows line status and Teams presence side by side. Presence Sync also brings the call status to where there is no busy lamp field: the Teams client of every employee.
Meeting in Teams
Mr Yıldız is in a Teams meeting. Jabber shows him as busy. Colleagues who look him up in Jabber call later.
Look it up, do not guess
If someone reports that their status was wrong, Presence Live shows the entry: when EasyUC read the change, what it set or left out, and why.
Map users and check before switching on
One presence profile per customer holds the access to Microsoft Graph, the access to the Cisco side and the rule for mapping the users. EasyUC recognises the same person by an identifier that has the same value in both directories, for example the e-mail address or the phone number.
The preview shows the result per user: unique, not found or ambiguous. Only unique matches and manual mappings take part in the sync. EasyUC does not guess ambiguous matches, it excludes them.
- 1
Create the profile
Enter tenant ID, client ID and client secret of the Entra app and select the Cisco access. A new profile is switched off.
- 2
Check the mapping
Select the identifier in Microsoft and in CUCM. The preview transfers no status.
- 3
Dry run
EasyUC calculates one sync and shows mapped users, active calls, conflicts and planned changes. Nothing is written.
- 4
Switch on
Select the directions, set the interval from 5 to 60 seconds, save the main switch.
Presence Live: every event with result and reason
Presence Live is the log of one profile. Each entry gives time, user, direction, the source status before and after, the requested target status and the result. States that were left out appear in the history with their reason, errors with the vendor's message.
The view reloads every 5 seconds and can be paused. You filter by direction and result and search for name, phone number, status or message. The log is held in the database of your appliance and stays stored independently of the view.
- Publication, refresh and removal per user
- Omissions with their reason
- Errors with their message
- Filters by direction and result
- Counters for mapped users and conflicts
- Warning when the background service reports no run
Technology: interfaces and sequence
Presence Sync runs as a separate service on the appliance. Every 5 seconds it checks which profiles are due, reads the sources, compares them with the last observed state and publishes changes only. A lock in the database prevents two runs from writing for the same profile at the same time.
Calls come via JTAPI from the call monitoring of the CUCM connection. EasyUC reads and sets the Jabber status through the presence web service of Cisco IM and Presence, and the Teams status through Microsoft Graph. States that were set have an expiry time at the vendor and are refreshed regularly. If EasyUC fails, they disappear by themselves.
| Microsoft Graph | App registration in Entra with User.Read.All, Presence.Read.All and Presence.ReadWrite.All, each with admin consent |
|---|---|
| CUCM: calls | JTAPI via the CTI Manager, call monitoring for all devices of the connection |
| CUCM: directory | AXL read access for users, lines and Jabber addresses |
| Cisco IM and Presence | Presence web service over HTTPS, application user with the role Admin-3rd Party API, plus an end user as observer |
| Webex | Webex integration with organisation ID; Presence.ReadWrite.All is not needed in this mode |
| Sync | base cycle 5 seconds, interval per profile 5 to 60 seconds |
| Expiry | Teams 10 minutes, Jabber 1 hour, each with refresh |
| Operation | separate service, switched as a module in the EasyUC Manager, with its own state and log |
Limits
Presence Sync transfers what the vendors' interfaces safely allow. You should know these points before the rollout.
- "Do not disturb" is not transferred in either direction.
- From Jabber, "Available" and "Away" reach Teams. The call status comes from CUCM only.
- Shared lines set no call status because they do not belong to a single user.
- States that are shorter than the interval can go unnoticed.
- One profile publishes per Entra app. One profile writes to Jabber per application user in IM and Presence.
- In Webex mode Cisco synchronises. EasyUC observes and logs, but does not confirm an individual transfer.
- How Jabber displays a status set from outside depends on the versions of IM and Presence and Jabber and belongs in the acceptance test.
Requirements
| EasyUC | Module Presence Sync switched on in the EasyUC Manager. Teams SBC and ACD are not required. |
|---|---|
| Microsoft 365 | Entra app with client ID and client secret, application permissions User.Read.All, Presence.Read.All and Presence.ReadWrite.All, admin consent |
| Cisco CUCM | CUCM connection in EasyUC with call monitoring for all devices, AXL read access to the user directory |
| Cisco IM and Presence | for the Jabber status only: presence web service reachable, application user with Admin-3rd Party API, end user as observer |
| Webex App | Cisco Call for Microsoft Teams set up, Webex integration with organisation ID, identical e-mail addresses in Microsoft and Webex |
| Directories | an identifier that has the same value in Microsoft and at Cisco, for example the e-mail address or the phone number |
| Network | HTTPS from the appliance to Microsoft Graph and to the presence web service |
In the handbook
Setup, operation and messages are described step by step in the handbook.
- How it works and architecture
State tables, sequence of a sync, data flow and permissions
- From start to finish
Checklist from the Entra app to the check in Presence Live
- Setting up a presence profile
Microsoft tenant, Cisco access and user mapping
- Enabling the synchronisation
Directions, interval, dry run and Presence Live
- Presence with Cisco Webex
Switch and observe the native integration
- Error patterns and remedies
Messages and omission reasons with their meaning
Presence Sync in your environment
Tell us which Cisco clients your users work with and how many users are to be synchronised. We show you mapping, dry run and Presence Live in a demo.
Existing customers
Licences, updates, invoices and support tickets are in the customer portal.
Go to the customer portalHow does this become a working process? Our use cases show each step directly in the EasyUC interface.
Explore practical examples