Microsoft 365 Integration

Introduction

3CX integrates with Microsoft 365 to provide the following functionality:

  • Sync user accounts from Microsoft 365.
  • Allow users to use their Microsoft Account (SSO) to log in to the 3CX Web Client.
  • Sync Users' personal contacts from M365 to the 3CX Personal phonebook (one way).
  • Sync Shared mailbox contacts from M365 to the 3CX Company phonebook (one way).
  • Sync 3CX and Teams presence - presence updates are exchanged between 3CX and Microsoft Teams
  • Send out email notifications using M365

M365 Integration requires Microsoft 365 Accounts with an Exchange subscription plan, such as:

  • Microsoft 365 Business Basic, Standard or Premium
  • Microsoft 365 F3, E3 or E5

Step 1: Configure Microsoft 365 Access

In this step you need to configure your Microsoft 365 account to allow synchronization with 3CX as follows:

  • In the 3CX Admin Console, go to "Admin → Integrations → M365"
  • Click the Configure button; you will be redirected to https://integrations.3cx.com
  • Click the Connect button and login to your Azure admin account

  • Enable the checkbox labelled Consent on behalf of your organisation to grant the permissions requested by the 3CX MS 365 Wizard; click the Accept button
  • The app will be created and you can proceed to configure M365 Integration; click the Back button to return to the 3CX Admin Console.

Step 2: Configure Synchronization

To synchronize the users from Microsoft 365 to 3CX:

  • In the 3CX Admin Console, go to "Admin → Users" and click on the M365 button
  • Enable the Sync Microsoft 365 Users checkbox; note that:
  • synchronisation is one-way - from M365 to 3CX
  • synchronisation happens daily, during the night
  • if you delete a user from 3CX, but not from M365, the user will reappear in 3CX the next day
  • if you delete or disable a user from M365, the user will remain in 3CX, and must be removed manually
  • synchronisation will work for a maximum of 650 users
  • To keep M365 users in a specific range of extension numbers, you can set a starting extension number:
  • this will ensure that lower extension numbers are never used for M365-imported users
  • if you do not set this, then a user imported from M365 will be assigned the first available extension number

Configure what to sync

  • You can Configure what to sync:
  • Enable SSO to allow users to login to the web client using their Microsoft credentials
  • You can Sync office phone to 3CX Outbound Caller ID to set the user's M365 office number as the Outbound Caller ID for the user in 3CX
  • You can Sync user photo from M365 to use as the 3CX user's avatar
  • You can Sync Personal Contacts from M365 to the 3CX user's personal phonebook; keep in mind that:
  • this is a one-way synchronisation (M365 to 3CX)
  • the users' contacts will need to be managed and updated from M365

Configure which users to sync

  • You can Configure which users to sync:
  • Select which M365 users to include or exclude in the synchronisation; click the Select Users button to configure
  • You can Sync only from selected departments. Click the Select Departments button to configure

  • the Select Departments dialog will show the list of departments retrieved from M365; choose which to include, and click the OK button
  • users that are not in the selected departments will not be synchronised
  • keep in mind that:
  1. new departments are created based on the M365 group names
  2. already-existing 3CX departments are NOT overwritten or used; if the M365 department name already exists in 3CX, a new one will be created with with an increment number appended
  3. if you had set up M365 integration prior to version 20 update 8 of 3CX, you will need to reconfigure to get all the necessary rights for this feature
  • You can choose whether (or not) to Include guest users

Step 3 - Sync Presence between 3CX and M365 Teams

You can configure Sync Presence between 3CX and Teams. Keep in mind that, before you enable this option:

  • Users are already synchronised and added as described above in Step 2
  • Only M365 users with a Teams-enabled license (such as Business Basic, Standard or Premium) can benefit from presence sync

To enable Sync presence:

  • In the 3CX Admin Console, go to "Admin → Users" and click on the M365 button
  • Select sync direction(s):
  • 3CX to Teams; or
  • Teams to 3CX; or
  • Both 3CX to Teams and Teams to 3CX
  • Enable sync by clicking the Authorize button

The Change Default Presence section can be expanded to customize how the statuses map between 3CX and Teams. The default preconfigured settings are typically sufficient for correct functionality; if you make changes here, you must ensure that you avoid creating status loops.

Step 4 - Sync Phonebook

To enable Phonebook synchronization from M365 to 3CX:

  • In the 3CX Admin Console, go to "System → Phonebook" and click on the M365 button

  • Click the Select Mailbox button to select which shared mailboxes to include or exclude from the sync, and click the OK button

Note that all contacts in Well Known Folders (default folders) are synced.

Step 5 - Sending emails through M365

If you selected the Send emails via Microsoft 365 option in Step 1 above, your 3CX will be automatically configured to send emails via your M365 account.

You can customize the originating email address for emails sent by M365 from the Admin Console from "System → Email"; you must ensure that the originating email address:

  • exists in your M365 account
  • is licensed for sending emails

Synchronisation Explanations & Limitations

The following explains some "gotchas" in regards to the synchronisation which your users might need to be aware of:

  • 3CX to Teams > On a Call - You can sync the 3CX On a Call status with the Teams In a Call status. When you make or receive a call in 3CX, the Teams client will show Busy > In a Call.
  • Teams to 3CX > In a Call - M365 only sends the Busy/In a Call status after the call is answered. During the ringing state, no status is sent. This status is only sent if you were on Available before the call. If your Teams status is Busy and you make a call, even after the call is answered, Teams will not send the Busy/In a Call status.
  • Available(Idle) - If you have the Available status on Teams and exit or move the app to the background (mobile), the following occurs:
  • After 5 minutes, MS sends AvailableIdle:Inactive, and the 3CX Web Client switches to Available.
  • After another 5 minutes, MS sends Away:Away, and the Web Client switches to Away.
  • When you reopen the Teams app, MS sends Available:Available, and the Web Client switches back to Available.
  • Busy(Idle) - If you have the Busy status on Teams and exit or move the app to the background (mobile), the following occurs:
  • After 5 minutes, MS sends BusyIdle:Busy, and the 3CX web client switches to DND.
  • After another 5 minutes, MS sends Offline:Offline, and the web client remains on DND.
  • When you reopen the Teams app, MS sends Busy:Busy, and the web client stays on DND.
  • Presence notify Offline:Offline - This notification is ignored because it is disabled in the configuration. Once you wake up the Teams app, we receive from MS a notification for Busy:Busy and Web Client stays on DND.
  • Setting status temporarily from 3CX will not sync presence to Teams.
  • Custom1 / Custom2 3CX Statuses don’t sync to teams.
  • If you set your 3CX Status to Custom1 / Custom2, changes on Teams will not be reflected on 3CX.
  • Autoswitch status changes will sync to Teams as long as Custom1 / Custom2 statuses are not used in System > Options > Scheduler.
  • Enabling two-way sync (Teams to 3CX and 3CX to Teams) can cause conflicting statuses and a loop between 3CX <> Teams where each one can override the configured status. For example:
  • 3CX to Teams = Away > Away
  • Teams to 3CX = Away > Do Not Disturb
  • This will result in Teams switching to Away and looping back to DND on 3CX. To avoid this, configure both sides to switch to the same status:
  • 3CX to Teams = Away > Away
  • Teams to 3CX = Away > Away
  • Teams > In a Call sync requires Available status sync to work properly. If "Available" is not synced, answering or making a call in Teams will switch the 3CX Web Client to DND but will never switch back to Available after the call ends.
  • Teams to 3CX > Available(Idle) status, even if this status is excluded (dropdown cleared), exiting the Teams client will cause MS to send an Away:Away notification after 10 minutes. As a result, the 3CX status will switch to Away regardless of the sync settings.

See Also

Last Updated
This document was last updated on 29 January 2026
https://www.3cx.com/docs/manual/microsoft-365/ 

Discuss this article