Almanac
Microsoft/teamsMicrosoft 365

Consultant-focused KB for Microsoft Teams: implementation notes, gotchas and configuration decisions beyond the official docs — across chat and collaboration, meetings, webinars and town halls, Teams Phone, PSTN connectivity (Direct Routing, Operator Connect, Calling Plans, Teams Phone Mobile), auto attendants, call queues and contact centre integration, Teams Rooms and devices, apps and extensibility, Copilot in Teams, administration and governance, security and compliance, network and call quality, and licensing — plus cross-cutting decision guides.

feature-phone-calling-policy-forwarding-simring.mdv1 · history
CurrentApplies to Teams PhoneUpdated 3 weeks agoSource Microsoft Learn ↗

What it does

The calling policy is the switchboard for what a user's line is allowed to do — forward, simultaneously ring, go to voicemail, reject a second call while busy, use call groups, delegate. The user then picks their own call answering rules inside whatever the policy permits, and an admin can set those rules on their behalf from the user's Voice tab or PowerShell.

Key facts

  • Calling policies are managed in the Teams admin center under Voice > Calling policies, or with New-, Set-, Get-, Grant- and Remove-CsTeamsCallingPolicy. The Global (Org-wide default) policy applies to anyone without a direct or group assignment.
  • Forwarding is split into two switches: AllowCallForwardingToUser (people in your organisation) and AllowCallForwardingToPhone (external numbers). Both also govern simultaneous ring to those targets.
  • AllowVoicemail takes AlwaysEnabled, AlwaysDisabled or UserOverride — the admin centre shows these as On, Off and Let users decide.
  • BusyOnBusyEnabledType takes Enabled, Unanswered, Disabled or UserOverride. Unanswered sends a second inbound call down the user's unanswered route (typically voicemail) rather than giving a busy tone.
  • InboundPstnCallRoutingTreatment (RegularIncoming, Unanswered, Voicemail, UserOverride) and InboundFederatedCallRoutingTreatment (RegularIncoming, Unanswered, Voicemail) let you push external calls somewhere other than the user's devices.
  • AllowCallGroups and AllowDelegation gate call groups (group call pickup) and delegation respectively.
  • MusicOnHoldEnabledType defaults to Enabled; PreventTollBypass forces calls out through the PSTN instead of VoIP where regulation requires it.
  • AllowPrivateCalling is the master switch — turn it off and the user loses calling in Teams altogether, not just PSTN.
  • Admins set a user's forwarding and call group from PowerShell with Set-CsUserCallingSettings (-IsForwardingEnabled, -ForwardingType Immediate|Simultaneous, -ForwardingTargetType SingleTarget|MyDelegates|Group|Voicemail, -ForwardingTarget), and read it back with Get-CsUserCallingSettings. These need Teams PowerShell module 4.0 or later.
  • Microsoft provides a call forwarding diagnostic at aka.ms/TeamsCallForwardingDiag, which expects target numbers in E.164.

When to use / skip

Every Teams Phone deployment uses calling policies whether you design them or not — the Global policy is always there. The real question is how many custom ones you need. Most organisations get away with three or four: a standard user policy, a locked-down one for shared and common area devices, perhaps one for executives and their assistants, and one for regulated teams that must not forward externally.

Resist the urge to build a policy per department. Policies are about capability, not about org chart, and every extra one is something someone has to reason about during a support call two years later. If the only difference between two policies is a single forwarding toggle, ask whether the business genuinely needs that difference enforced, or whether user education will do.

Setting individual users' answering rules centrally is worth doing for go-live on migrated PBX extensions (where the old system had forwarding configured) and for reception or hunt-style users. For everyone else, leave it to the user.

Configuration decisions

  • Whether external forwarding (AllowCallForwardingToPhone) is allowed at all. It's the main toll-fraud and data-leak conversation, and some regulated clients want it off by default with an exception policy.
  • Voicemail: on for everyone, off for shared devices, or user-controlled. Common area and lobby phones rarely want it.
  • Busy on busy: off, hard busy, or route to unanswered. Contact-centre-adjacent and reception users often want Unanswered so a second caller lands in voicemail rather than a call waiting beep.
  • Whether to use InboundPstnCallRoutingTreatment to send PSTN calls straight to voicemail for certain user groups (back-office staff with DDIs who shouldn't be answering the public).
  • Policy assignment method — direct, group-based, or via policy packages — and who owns the groups.
  • Whether to pre-stage user call answering rules with Set-CsUserCallingSettings as part of PBX migration.

Gotchas

  • The policy only controls what's permitted. A user with an external forward already configured keeps routing calls there until the policy change reaches them; tightening the policy doesn't wipe their settings.
  • Set-CsTeamsCallingPolicy leaves any parameter you don't pass at its existing value. Scripts that "reset" a policy by passing only a handful of parameters don't reset anything.
  • Different calling policies on a delegate and their manager cause odd behaviour — the delegate is bound by their own policy, not the manager's. Keep them matched.
  • AllowPrivateCalling $false kills all calling, including Teams-to-Teams. People reach for it to block PSTN and then get a ticket from someone who can't call a colleague.
  • Policy changes can take a while to land and clients sometimes need a sign-out and back in. Don't declare a fix failed after five minutes.
  • Forwarding to an external number consumes an outbound PSTN leg, so it depends on the user having outbound PSTN routing and the right licensing — on Calling Plans that's minutes; on Direct Routing it's a call through the SBC.

Consultant notes

  • Export every user's current forwarding rules from the legacy PBX before cutover and replay them with Set-CsUserCallingSettings on the night. Users notice missing forwards before they notice anything else.
  • Document the policy matrix in the design — one row per policy, one column per setting — rather than in prose. Support teams will thank you.
  • Use group-based assignment for calling policies and keep the Global policy deliberately bland, so a user who falls out of a group degrades to something safe.
  • Run the forwarding diagnostic before escalating "my forward doesn't work" tickets; it catches the common format and policy mistakes quickly.

Worth re-checking the parameter list on Set-CsTeamsCallingPolicy each half-year — Microsoft keeps adding switches here, and the admin centre labels lag behind the PowerShell names

Was this accurate?