How to Configure Teams Mobility Policies in PowerShell Using CsTeamsMobilityPolicy

In modern enterprise unified communications architectures supporting hybrid and remote workforces, employees increasingly rely on the Microsoft Teams mobile application on iOS and Android devices for daily collaboration. However, allowing mobile users to place voice calls or stream video over cellular data networks presents serious cost, security, and quality challenges for organizations. For example, mobile roaming charges can lead to unexpected telecommunications bills, while low-bandwidth cellular connections can cause severe packet loss, jitter, and degraded audio quality during business-critical calls.

The Microsoft Teams Mobility Policy framework allows enterprise administrators to govern how mobile clients utilize cellular data and IP-based voice calling. Through the Microsoft Teams PowerShell module, administrators can use the Get-CsTeamsMobilityPolicy and Grant-CsTeamsMobilityPolicy cmdlets to inspect built-in mobility policies, mandate Wi-Fi for voice and video communications, and assign granular mobility restrictions to targeted employee groups. This guide covers how to inspect mobility policy attributes, enforce cellular data restrictions, and manage per-user assignments via PowerShell.

Understanding Teams Mobility Policy Architecture

Teams Mobility Policy governs mobile client networking behavior when users connect through cellular networks rather than corporate or residential Wi-Fi:

  • AllowMobileCalling: Dictates whether users can place or receive voice calls using the Microsoft Teams mobile client. Disabling this parameter restricts the mobile client to chat, presence, and file access only.
  • AllowOutsideVoice: Controls whether mobile users are permitted to place outbound Public Switched Telephone Network (PSTN) calls (using Direct Routing, Calling Plans, or Operator Connect) while operating on mobile data networks.
  • RequireWiFiForAudio: Mandates that voice calls (VoIP and PSTN) can only be initiated or received when the mobile device is actively connected to a Wi-Fi network, completely blocking voice transmission over cellular data plans.
  • RequireWiFiForVideo: Restricts high-bandwidth video streams and mobile screen-sharing sessions to Wi-Fi connections, preventing excessive mobile data consumption on cellular carrier plans.

Connecting to Teams PowerShell and Inspecting Built-in Policies

To configure mobility policies, launch an elevated PowerShell console and authenticate with Microsoft 365 credentials possessing the Teams Administrator role:

# Import the Teams PowerShell module and authenticate
Import-Module MicrosoftTeams
Connect-MicrosoftTeams

To inspect all existing mobility policies configured in your tenant, execute Get-CsTeamsMobilityPolicy:

# Retrieve all configured Teams mobility policies
Get-CsTeamsMobilityPolicy

To view policy identities and their cellular network constraints in a clean summary table:

# Display mobility policies and associated parameters
Get-CsTeamsMobilityPolicy | Select-Object Identity, AllowMobileCalling, AllowOutsideVoice, RequireWiFiForAudio, RequireWiFiForVideo

The resulting output lists standard policy templates:

Identity                    : Global
AllowMobileCalling          : True
AllowOutsideVoice           : True
RequireWiFiForAudio         : False
RequireWiFiForVideo         : False

Identity                    : Tag:WiFiOnlyCalling
AllowMobileCalling          : True
AllowOutsideVoice           : True
RequireWiFiForAudio         : True
RequireWiFiForVideo         : True

Creating a Custom Mobility Policy for Frontline or Field Staff

In environments where field staff operate corporate-managed mobile devices with metered cellular data plans, you may want to permit mobile voice calls while preventing cellular video streaming:

# Create custom mobility policy restricting video to Wi-Fi connections
New-CsTeamsMobilityPolicy -Identity "MeteredCellularPolicy" `
    -AllowMobileCalling $True `
    -AllowOutsideVoice $True `
    -RequireWiFiForAudio $False `
    -RequireWiFiForVideo $True

Users assigned this policy can conduct voice calls over 4G/5G cellular data, but incoming and outgoing video streams are automatically suppressed unless the device connects to Wi-Fi.

Enforcing Wi-Fi Only Calling for High-Roaming User Cohorts

For executive travelers or international roaming employees where international cellular data roaming costs are prohibitive, configure a strict Wi-Fi-only policy:

# Create strict Wi-Fi only calling policy
New-CsTeamsMobilityPolicy -Identity "StrictWiFiOnly" `
    -AllowMobileCalling $True `
    -AllowOutsideVoice $True `
    -RequireWiFiForAudio $True `
    -RequireWiFiForVideo $True

When this policy is active, the Teams mobile client blocks calls and displays an on-screen banner informing the user that calling requires an active Wi-Fi connection.

Assigning Mobility Policies to Individual Users

To assign a custom mobility policy to a specific employee, use the Grant-CsTeamsMobilityPolicy cmdlet:

# Assign custom mobility policy to a user
Grant-CsTeamsMobilityPolicy -Identity "[email protected]" `
    -PolicyName "MeteredCellularPolicy"

To remove an explicit policy assignment and revert the user to inheriting the tenant-wide Global policy default:

# Revert user to global tenant policy inheritance
Grant-CsTeamsMobilityPolicy -Identity "[email protected]" `
    -PolicyName $Null

Bulk Assigning Mobility Policies via CSV

For large-scale organizational rollouts, import a list of mobile device users from a CSV file and batch-assign the mobility policy:

# Bulk assign mobility policy to mobile users from CSV
$MobileUsers = Import-Csv -Path "C:\Admin\MobileStaff.csv"

foreach ($User in $MobileUsers) {
    Write-Host "Applying mobility policy to $($User.UserPrincipalName)..." -ForegroundColor Cyan
    try {
        Grant-CsTeamsMobilityPolicy -Identity $User.UserPrincipalName `
            -PolicyName "MeteredCellularPolicy" `
            -ErrorAction Stop
        Write-Host "Successfully assigned policy to $($User.UserPrincipalName)" -ForegroundColor Green
    }
    catch {
        Write-Warning "Failed to assign policy to $($User.UserPrincipalName): $_"
    }
}

Auditing Effective Mobility Policies on Active Accounts

To audit an employee’s effective mobility policy configuration, query their user account using Get-CsOnlineUser:

# Query assigned mobility policy for a specific user
Get-CsOnlineUser -Identity "[email protected]" | 
    Select-Object UserPrincipalName, TeamsMobilityPolicy

If TeamsMobilityPolicy is blank, the user inherits the tenant’s Global policy. If a policy name is populated, that custom profile is explicitly enforced.

Troubleshooting Common Mobility Policy Issues

When managing Teams mobility policies, keep these operational considerations in mind:

  • Mobile Client Cache Refresh: Policy changes made via PowerShell do not take effect instantaneously on mobile devices. The Teams app on iOS and Android caches user policy tokens. To force an immediate update, have the user sign out of the mobile app and sign back in, or terminate and relaunch the application.
  • Cellular Voice Fallback vs VoIP: The RequireWiFiForAudio parameter applies strictly to IP-based VoIP calling within the Teams app. It does not block cellular calls placed through standard carrier phone dialers unless integrated cellular fallback options are disabled in user calling settings.
  • Emergency Calling Considerations: Cellular smartphones always route emergency calls (e.g., 999 or 911) through the device’s native cellular carrier radio, completely bypassing Teams mobility restrictions in compliance with national emergency calling regulations.

Using CsTeamsMobilityPolicy empowers enterprise administrators to balance mobile productivity with cellular data cost management and call quality consistency across Microsoft Teams deployments.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.