Enterprise voice and video deployments in Microsoft Teams require granular bandwidth governance when users transition between low-latency headquarters networks, branch offices with constrained WAN uplinks, and remote connections. Microsoft Teams Network Roaming Policies allow administrators to link network sites to specific media and bandwidth constraints, overriding per-user meeting policies whenever a client device roams into a defined physical subnet. Through the Microsoft Teams PowerShell module, administrators can provision, bind, and audit CsTeamsNetworkRoamingPolicy configurations to safeguard critical enterprise link capacity without permanently downgrading user privileges globally.
Understanding Microsoft Teams Network Roaming Architecture
In standard Teams policy assignment, user-level policies dictate media parameters such as maximum audio bitrates, IP video allowances, and screen sharing framerates wherever the user signs in. However, when hundreds of employees gather at a bandwidth-limited regional branch office, unconstrained high-definition video calls can instantly saturate local WAN circuits and packet queues. Network Roaming Policies solve this challenge by evaluating the client’s public or internal IPv4/IPv6 subnet during session initiation via Teams Location-Based Routing (LBR) and Network Configuration Service (NCS).
When an endpoint authenticates from an IP address defined within a corporate Network Site, Teams dynamically applies the roaming policy associated with that site. As soon as the user disconnects and returns to a high-capacity campus network or home internet connection, Teams automatically reverts to the user’s standard meeting and calling policies.
Connecting to Microsoft Teams PowerShell
Managing network roaming configurations requires the Microsoft Teams PowerShell module (version 4.0.0 or higher) with Teams Administrator or Global Administrator privileges. Establish an authenticated session before running configuration commands:
# Install or update the Microsoft Teams PowerShell module
Install-Module -Name MicrosoftTeams -Force -AllowClobber -Scope CurrentUser
# Connect to the Microsoft Teams tenant environment
Connect-MicrosoftTeams
Once authenticated, verify the available cmdlets for managing roaming policies across your tenant:
# Verify cmdlet availability
Get-Command *CsTeamsNetworkRoamingPolicy*
Inspecting Default Network Roaming Policies
Tenants contain a global policy instance that dictates baseline roaming behaviour when no custom site-specific policy is assigned. Retrieve the tenant-wide configuration to inspect default parameter states:
# Retrieve the Global Network Roaming Policy
Get-CsTeamsNetworkRoamingPolicy -Identity Global
The policy exposes critical attributes that govern media sessions:
- Identity: The unique identifier of the roaming policy profile.
- AllowIPVideo: Determines whether bidirectional video streaming is permitted when connected to the target network site.
- MediaBitRateKb: Specifies the maximum aggregate media bitrate (in kilobits per second) permitted for combined audio, video, and application sharing streams.
Creating Custom Network Roaming Policies
To restrict media consumption across a remote branch office where satellite or constrained MPLS links are deployed, create a targeted roaming policy profile using New-CsTeamsNetworkRoamingPolicy.
# Create a bandwidth-constrained roaming policy for branch offices
New-CsTeamsNetworkRoamingPolicy -Identity "BranchOffice-LowBandwidth" `
-AllowIPVideo $true `
-MediaBitRateKb 1200
For ultra-constrained operational locations such as offshore platforms, disaster recovery sites, or maritime vessels, you can completely suppress video transmission while preserving clear VoIP audio:
# Create an audio-only roaming policy for high-latency or metered links
New-CsTeamsNetworkRoamingPolicy -Identity "Offshore-AudioOnly" `
-AllowIPVideo $false `
-MediaBitRateKb 300
Modifying Existing Roaming Policies
When WAN capacity is upgraded or seasonal traffic adjustments require modified throughput thresholds, update the policy parameters using Set-CsTeamsNetworkRoamingPolicy:
# Update the maximum bitrate threshold for an existing policy
Set-CsTeamsNetworkRoamingPolicy -Identity "BranchOffice-LowBandwidth" `
-MediaBitRateKb 1800
To verify that the updated parameters have taken effect in the tenant configuration store, inspect the object directly:
# Validate updated policy attributes
Get-CsTeamsNetworkRoamingPolicy -Identity "BranchOffice-LowBandwidth" | Format-List Identity, AllowIPVideo, MediaBitRateKb
Associating Network Roaming Policies with Network Sites
Network Roaming Policies do not take effect until they are bound to a configured Network Site within the Teams network topology. Teams network topology relies on defined Network Regions, Network Sites, and Subnets.
To inspect existing network sites and assign the roaming policy, utilise Set-CsTenantNetworkSite:
# List existing network sites in the tenant
Get-CsTenantNetworkSite | Select-Object Identity, NetworkRegionID, Description
# Assign the roaming policy to a specific branch office site
Set-CsTenantNetworkSite -Identity "Site-Aberdeen-Branch" `
-NetworkRoamingPolicy "BranchOffice-LowBandwidth"
Ensure that all relevant client IP subnets (both wired Ethernet and wireless corporate SSIDs) are mapped to the site so that client subnet matches trigger policy enforcement:
# Verify subnets mapped to the Aberdeen site
Get-CsTenantNetworkSubnet | Where-Object { $_.NetworkSiteID -eq "Site-Aberdeen-Branch" } | Select-Object SubnetID, MaskBits, NetworkSiteID
If subnets are missing, register them with the network site:
# Register a local branch subnet with the network site
New-CsTenantNetworkSubnet -SubnetID "192.168.42.0" `
-MaskBits 24 `
-NetworkSiteID "Site-Aberdeen-Branch"
Auditing and Troubleshooting Roaming Policy Enforcement
Client telemetry and session diagnostics allow administrators to confirm whether a device has matched a network site and applied the intended bandwidth caps. If users at a branch site report unexpected video degradation or, conversely, excessive bandwidth consumption, verify policy assignment and client reporting:
- Verify Client IP Reporting: Teams desktop and mobile clients report their local subnet and public NAT IP address to the Teams transport relays during ICE candidate negotiation. Confirm via the Teams Admin Centre Call Analytics or Call Quality Dashboard (CQD) that the client’s reported internal subnet matches the registered
CsTenantNetworkSubnet. - Check Policy Propagation Delays: Changes to tenant network sites and roaming policies replicate through Microsoft Teams microservices within 4 to 24 hours. Ensure adequate replication time before retesting media constraints.
- Review Tenant-Wide Assignments: Query all network sites to audit which locations currently enforce roaming policies:
# Audit all network sites and their associated roaming policies
Get-CsTenantNetworkSite | Select-Object Identity, NetworkRegionID, NetworkRoamingPolicy | Format-Table -AutoSize
Removing Obsolete Roaming Policies
Before deleting an obsolete roaming policy, ensure that no active network sites reference it. If a site still points to the policy, clear the binding first:
# Disassociate the policy from the network site
Set-CsTenantNetworkSite -Identity "Site-Aberdeen-Branch" -NetworkRoamingPolicy $null
# Remove the custom network roaming policy
Remove-CsTeamsNetworkRoamingPolicy -Identity "BranchOffice-LowBandwidth" -Confirm:$false
Automating network roaming governance across distributed corporate networks guarantees that Teams collaboration tools remain responsive while protecting mission-critical branch bandwidth.