In modern enterprise telecommunications and hybrid cloud telephony, voicemail remains a critical communication channel for business-to-business consultations, customer service inquiries, and internal staff coordination. Within Microsoft Teams Phone System, voicemail is deeply integrated with Exchange Online and Microsoft Speech Services, providing not only standard audio message storage but also automated speech-to-text voicemail transcriptions delivered directly to the user’s Teams client and email inbox. However, because automated voicemail transcriptions can process sensitive corporate discussions, financial figures, or confidential client records, IT administrators must govern voicemail behavior at the policy level. Through the Microsoft Teams PowerShell module with the Set-CsTeamsCallingPolicy cmdlet, administrators configure voicemail availability, automated transcriptions, translation capabilities, and profanity masking across global tenants.
Understanding Teams Voicemail Policy Parameters
In Microsoft Teams Phone governance, voicemail and transcription capabilities are governed by several key parameters within the CsTeamsCallingPolicy framework:
- AllowVoicemail: Controls whether users can utilize cloud voicemail. Permitted values:
AlwaysEnabled:Voicemail is permanently forced on. Unanswered or rejected calls always route to the user’s voicemail deposit box.AlwaysDisabled:Voicemail is completely blocked for assigned users. Callers will receive a busy signal or disconnect if a call is unanswered.UserOverride (Default):Users can configure their own call forwarding and unanswered call rules in the Teams client to choose whether to route calls to voicemail.
- VoicemailTranscriptionEnabledType: Governs whether incoming audio recordings are automatically converted into text transcripts using Azure speech recognition models (
EnabledorDisabled). - VoicemailTranscriptionProfanityMaskMode: Dictates whether swear words and offensive language detected within the voicemail audio stream are replaced with asterisks (
MaskedorUnmasked). - VoicemailTranscriptionTranslationEnabledType: Controls whether foreign-language voicemails are automatically translated into the user’s preferred language.
Connecting to the Microsoft Teams PowerShell Module
Before managing calling policies, verify that your workstation has the modern Microsoft Teams PowerShell module (version 5.0 or later) installed. Open Windows PowerShell or PowerShell 7 as an Administrator and connect to your tenant:
Connect-MicrosoftTeams
Sign in using credentials assigned Global Administrator or Teams Administrator roles. Confirm session details:
Get-CsTenant | Select-Object DisplayName, TenantId
Auditing Existing Voicemail and Transcription Policies
To inspect the active voicemail and transcription settings across all calling policies defined in your Microsoft 365 tenant, execute Get-CsTeamsCallingPolicy:
Get-CsTeamsCallingPolicy | Select-Object Identity, Description, AllowVoicemail, VoicemailTranscriptionEnabledType, VoicemailTranscriptionProfanityMaskMode
To inspect the settings applied by the tenant Global (Org-wide default) policy:
Get-CsTeamsCallingPolicy -Identity Global | Format-List Identity, AllowVoicemail, VoicemailTranscription*
By default, standard enterprise tenants report AllowVoicemail : UserOverride and VoicemailTranscriptionEnabledType : Enabled.
Enforcing Organization-Wide Voicemail and Masked Transcriptions
To ensure that all corporate staff receive automated voicemail transcriptions with profanity masking enabled by default across the organization, update the Global policy:
Set-CsTeamsCallingPolicy -Identity Global `
-AllowVoicemail "AlwaysEnabled" `
-VoicemailTranscriptionEnabledType "Enabled" `
-VoicemailTranscriptionProfanityMaskMode "Masked"
With this configuration, users cannot accidentally disable their voicemail service, and all transcribed messages in Outlook and Teams will automatically mask vulgar language.
Creating a Custom Policy to Disable Voicemail for Secure Desks
In high-security call centers, legal offices, or shared common area workstations where leaving recorded audio messages poses compliance or privacy liabilities, voicemail should be disabled entirely.
Use the New-CsTeamsCallingPolicy cmdlet to create a dedicated no-voicemail policy:
New-CsTeamsCallingPolicy -Identity "SecureDesk-NoVoicemail" `
-AllowVoicemail "AlwaysDisabled" `
-VoicemailTranscriptionEnabledType "Disabled" `
-Description "Completely disables voicemail deposit and transcription for secure compliance endpoints."
Conversely, to create an advanced policy for multinational executive teams that enables automated voicemail translation:
New-CsTeamsCallingPolicy -Identity "Executive-GlobalVoicemail" `
-AllowVoicemail "AlwaysEnabled" `
-VoicemailTranscriptionEnabledType "Enabled" `
-VoicemailTranscriptionTranslationEnabledType "Enabled" `
-VoicemailTranscriptionProfanityMaskMode "Unmasked" `
-Description "Enables full voicemail, verbatim transcriptions, and automated multilingual translation."
Modifying Existing Custom Policy Settings
If compliance guidelines change, you can update existing custom policies using Set-CsTeamsCallingPolicy:
Set-CsTeamsCallingPolicy -Identity "SecureDesk-NoVoicemail" -AllowVoicemail "UserOverride"
Assigning Policies to Target Users and Security Groups
After defining calling policies, assign them to target users using the Grant-CsTeamsCallingPolicy cmdlet.
To assign the executive voicemail policy directly to an individual user by User Principal Name (UPN):
Grant-CsTeamsCallingPolicy -Identity "[email protected]" -PolicyName "Executive-GlobalVoicemail"
To revoke a direct policy assignment and return the user to the Global organizational default:
Grant-CsTeamsCallingPolicy -Identity "[email protected]" -PolicyName $null
To assign policies at scale based on Microsoft 365 Security Group membership:
New-CsGroupPolicyAssignment -GroupId "a1b2c3d4-e5f6-7890-abcd-ef0123456789" `
-PolicyType TeamsCallingPolicy `
-PolicyName "SecureDesk-NoVoicemail" `
-Rank 1
Verifying Effective User Calling Policy Assignments
To verify the effective calling policy applied to a specific user account, query the user policy assignment table:
Get-CsUserPolicyAssignment -Identity "[email protected]" -PolicyType TeamsCallingPolicy
The command outputs the active policy name and assignment type (Direct or Group). Policy replication across Teams client instances typically completes within 15 to 30 minutes, after which incoming voicemail recordings and transcriptions will strictly reflect the updated configuration.