By default Microsoft Teams will play its own music on hold to the external caller. Due to the way Teams has implemented this feature this often results in the PBX/Trunk being in an inactive media state for a few seconds before the Teams music starts. If the PBX/Trunk has music on hold support this will initially play before the Teams music takes over.

Using your own on-hold music

You can turn off the Teams music on hold using powershell. The Set-CsTeamsCallingPolicy command has the desired MusicOnHoldEnabledType parameter. By default users will be using the Global calling policy. To turn music on hold off run the following:

  1. Configure a powershell session as detailed here (valid for both SfB and Teams).
  2. Run "Set-CsTeamsCallingPolicy -Identity Global -MusicOnHoldEnabledType Disabled"

You can use Get-CsTeamsCallingPolicy before and after to validate the change.

When a caller is now placed on the hold the SIP media will be placed in an inactive state. This lets the PBX/Trunk know the call is held and no media is being received which allows it to play its own music on hold.

I have made the change but still hear the Teams music on hold

In testing we have found the change takes time to propagate through Microsoft's network and become active. Typically taking 2-4 hours. If after an extended period of time you are still hearing the Teams music on hold we suggest checking that the users are configured to use the Teams Calling Policy that you expect.