- Created by John Dougherty, last modified on Jul 06, 2022
In This Article
Overview
This article covers some troubleshooting steps and guidance for submitting a support case with Microsoft.
Teams User Provisioning Delays
Due to high demand for Microsoft Teams, Microsoft has stated that it can take up to 24 hours to provision a new user account with Microsoft Teams. This 24 hours starts when you assign a license that includes Microsoft Teams.
NOTE
To check the setup status of a user account, search for the user on this page in the M365 admin center:
https://admin.microsoft.com/Adminportal/Home#/teamsprovisioning
Teams Phone License Assignment
Before provisioning a Teams user for direct routing, you need to assign the Teams Phone Standard license to the user account. After assigning the Teams Phone Standard license it can take up to 24 hours for the license assignment to sync and light up the features in Teams. Therefore, we recommend you assign all licenses to a user account 24 hours before provisioning it for Teams direct routing.
You can check the status of a Teams Phone Standard license assignment by running the below PowerShell code in the PowerShell ISE or VSCode.
NOTE
Make sure you sign into the MS Teams services and enter the user's UPN on line 2 before running the code.
# Enter the user's UPN $UPN = "username@domain.com" # Get the user's Teams Properties $TeamsUser = Get-CsOnlineUser $UPN # Output the status of the Teams Phone license assignment Write-Host Write-Host "Display Name : $($TeamsUser.DisplayName)" Write-Host "User Principal Name : $($TeamsUser.UserPrincipalName)" Write-Host "Feature Types : $($TeamsUser.FeatureTypes -join ', ')" If ($TeamsUser.FeatureTypes -contains "PhoneSystem") { Write-Host "Phone System Status : " -NoNewLine Write-Host "ENABLED" -ForegroundColor Green } ElseIf ($TeamsUser.FeatureTypes -notcontains "PhoneSystem") { Write-Host "Phone System Status : " -NoNewLine Write-Host "NOT ENABLED" -ForegroundColor Yellow } Else { Write-Host "Phone System Status : " -NoNewLine Write-Host "UNKNOWN" -ForegroundColor Yellow }
Assigning a Phone Number Fails
This occurs when another user account is already assigned the same phone number. If you remove the Teams Phone licenses from a user account instead of deprovisioning the user account, you will not be able to re-assign the old user's phone number.
To fix this you have two choices:
- Reassign the MS Teams & Teams Phone licenses to the old user account, and deprovision the user account's direct routing configuration.
- Delete the user account from your environment.
You can use the below PowerShell to search for a Teams user account by phone number.
$PhoneNumber = "16105551234" $FilterString = 'LineUri -eq "{0}"' -f $PhoneNumber Get-CsOnlineUser -Filter $FilterString | FL DisplayName,UserPrincipalName,LineUri
A Checklist of Configuration Items
When troubleshooting a user's direct routing configuration, you should check the following items:
- The user is assigned a subscription that includes Microsoft Teams, and the Teams Phone add-on license
- The user's coexistence mode is set to Teams Only
- The user's calling policy allows private calling
- The user's caller ID policy is not set to Anonymous
- The user is assigned to an Evolve IP voice routing policy
- The user is assigned the Evolve IP dial plan
Coexistence Mode
It's very important to make sure the Teams user account is set to the Teams Only coexistence mode. If your users are not using Skype for Business, then you should set all users to the Teams Only coexistence mode at the organization level. You can check a user's coexistence mode in the Users section of the Teams admin center or by using PowerShell commands.
TIP
Refer to the Teams Direct Routing Planning & Prerequisites article for more info on the Teams Only coexistence mode.
Teams Calling Policy
One of the configuration items in a Teams Calling Policy is to control whether a Teams user can make private calls. You should make sure the Teams user is assigned to a Calling Policy that allows private calling. You can check a user's policy assignment in the Users section of the Teams admin center, and you can check a calling policy's settings in the Voice section of the Teams admin center.
TIP
Refer to the Teams Direct Routing Planning & Prerequisites article for more info on Calling Policies.
Teams Caller ID Policy
The Caller ID Policy that is assigned to a direct routing user must not be set to Anonymous. The Evolve IP voice infrastructure cannot accept a call from a Teams user when their caller ID policy is set to Anonymous. The policy must be set to User's Number.
TIP
Refer to the Teams Direct Routing Planning & Prerequisites article for more info on Caller ID Policies.
Teams Voice Routing Policy
The voice routing policy is used to determine how a call is routed to/from a Microsoft Teams client. If the user is assigned the Global voice routing policy, or a policy that does not route the call to the Evolve IP voice infrastructure, the call will fail.
You can check a user's policy assignment in the Users section of the Teams admin center, and you can check the Evolve IP voice routing policies in the Voice section of the Teams admin center.
Teams Dial Plan
The Teams dial plan is used by Microsoft to determine how a call is routed based on the number dialed. The Evolve IP direct routing configuration creates a dial plan that routes any number dialed to our voice infrastructure for interpretation.
If the user is not assigned to the Evolve IP dial plan, they will experience issues when dialing numbers that are not 10 digits (in the US). You can check a user's dial plan assignment in the Users section of the Teams admin center, and you can edit the dial plan in the Voice section.
No Dial Pad in the Teams Client App
When the Microsoft Teams client app (desktop & mobile) loads, it will check the user's configuration in Office 365 to determine if the dial pad should be shown. If the user is not properly configured in Office 365, or Microsoft is experiencing provisioning delays, the Teams client app will not show the dial pad.
NOTE
Before performing any troubleshooting steps Microsoft recommends you wait 24 hours after the user account has been provisioned for direct routing.
TIP
We recommend you confirm the status of a Teams user by using the MS Teams web app. This will rule out any installation or configuration issues with the desktop or mobile apps. Have the user sign into the web app here: https://teams.microsoft.com
If the dial pad does not show up after 24 hours, you can check the current status of the Teams desktop app by generating diagnostic logs. Right-click on the Teams icon in the system tray and choose Collect support files. All desktop and debug logs will be collected in one folder in Downloads. This option will also include media logs (if enabled in Settings).
You can also perform the following keyboard combination in the Teams app, which will automatically save the logs in the Downloads folder.
Ctrl + Alt + Shift + 1
Open the primary log file in Notepad.
Search the log for this string: callingSupportService
There will be multiple entries for callingSupportService. Find the one that shows pstnEnabled is true, and the calculated flags for isPSTNCallingAllowed.
Make sure the following flags are properly set.
Flag | Value | Description |
---|---|---|
isCallingAllowed | true | If this is set to null or false, then the user is configured with a calling policy that does not allow private calling. |
isEvEnabled | true | Shows if Enterprise Voice is enabled. This must be true for direct routing to work. |
pstnType | OnPrem | This should be set to OnPrem for direct routing to work. |
isByotEnabled | true | This should be true for direct routing users with a voice routing policy assigned. If it's null or false, make sure the user is assigned a voice routing policy. |
isBusinessVoicePath | false | This should be false for direct routing. If it's true then the user is configured with a Microsoft calling plan. |
If isEvEnabled is still false after 24 hours, try running the following PowerShell commands to check and reset the user's Enterprise Voice status. Make sure you enter the user's UPN & phone number on lines 2 & 3.
# Define the user's UPN & Phone number $UPN = "username@domain.com" $Phone = "+16105551234" # Check the user's voice status Get-CsOnlineVoiceUser -Identity $UPN # Disable Enterprise Voice Remove-CsPhoneNumberAssignment -Identity $UPN -RemoveAll # Wait 10 minutes Start-Sleep -s 600 # Enable Enterprise Voice Set-CsPhoneNumberAssignment -Identity $UPN -PhoneNumber $Phone -PhoneNumberType DirectRouting
If isByotEnabled is still false or null after 24 hours, try running the following PowerShell commands to reset the user's voice routing policy. Make sure you enter the user's UPN on line 2 and the user's voice routing policy name on line 8.
# Define the user's UPN $UPN = "username@domain.com" # Check the user's Voice Routing Policy assignment Get-CsOnlineUser $UPN | FL DisplayName,UserPrincipalName,OnlineVoiceRoutingPolicy # Define the user's voice routing policy $VRP = "EvolveIP-USEast or EvolveIP-USWest" # Set the user's voice routing policy to the global policy (null) Grant-CsOnlineVoiceRoutingPolicy -Identity $UPN -PolicyName $null # Wait 10 minutes Start-Sleep -s 600 # Set the user's voice routing policy back to Evolve IP Grant-CsOnlineVoiceRoutingPolicy -Identity $UPN -PolicyName $VRP
Submitting a Support Case with Microsoft
If you suspect issues with call routing, you should only submit a case with Microsoft after the Evolve IP support team has confirmed that your issue is not related to call routing within our voice infrastructure. You can also open a case with Microsoft due to provisioning delays.
If applicable, the Evolve IP support team can submit a case with Microsoft on your behalf.
Regardless, when submitting a support case with Microsoft be prepared to provide the following:
- If the dial pad is not showing, a screenshot of the missing dial pad from the desktop client and the web client.
- The Teams client app diagnostic log file from a known working user, and the diagnostic log file for the user that's not working.
- The output of the following PowerShell command for a known working user, and the same output for the user that's not working.
Get-CsOnlineUser -Identity username@domain.com | FL
- The output of the following PowerShell commands, which gives them information about the direct routing configuration.
Get-CsOnlinePSTNGateway Get-CsOnlinePstnUsages Get-CsOnlineVoiceRoute Get-CsOnlineVoiceRoutingPolicy Get-CsTeamsCallingPolicy
NOTE
If the Microsoft support team requests information about the PSTN Gateways (SBCs), let them know that you are using a carrier's SBC as defined in this Microsoft article and that you have already performed troubleshooting steps to rule out any issues with the carrier's SBCs.
- No labels