Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Div
classtoc

In This Article

Table of Contents
maxLevel2
stylesquare


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.

Info

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.

Info

NOTE

Make sure you sign into the MS Teams services and enter the user's UPN on line 2 before running the code.


Code Block
languagepowershell
linenumberstrue
# 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:

You can use the below PowerShell to search for a Teams user account by phone number.

Code Block
languagepowershell
linenumberstrue
$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 plan 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

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

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

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. 

Info

NOTE

Before performing any troubleshooting steps Microsoft recommends you wait 24 hours after the user account has been provisioned for direct routing.


Tip

TIP

We recommend you confirm the status of a Teams user by using the MS Teams web client.  This will rule out any installation or configuration issues with the desktop or mobile clients.  Have the user sign into the web client 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 client 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.

FlagValueDescription
isCallingAllowedtrueIf this is set to null or false, then the user is configured with a calling policy that does not allow private calling.
isEvEnabledtrueShows if Enterprise Voice is enabled.  This must be true for direct routing to work.
pstnTypeOnPremThis should be set to OnPrem for direct routing to work.
isByotEnabledtrueThis 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.
isBusinessVoicePathfalseThis 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 reset the user's Enterprise Voice status.  Make sure you enter the user's UPN on line 2.

Code Block
languagepowershell
linenumberstrue
# Define the user's UPN
$UPN = "username@domain.com"

# Disable Enterprise Voice
Set-CsUser $UPN -EnterpriseVoiceEnabled $false

# Wait 10 minutes
Start-Sleep -s 600

# Enable Enterprise Voice
Set-CsUser $UPN -EnterpriseVoiceEnabled $true -HostedVoiceMail $true


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 5.

Code Block
languagepowershell
linenumberstrue
# Define the user's UPN
$UPN = "username@domain.com"

# 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.
Code Block
languagepowershell
linenumberstrue
Get-CsOnlineUser -Identity username@domain.com | FL
  • The output of the following PowerShell commands, which gives them information about the direct routing configuration.
Code Block
languagepowershell
linenumberstrue
Get-CsOnlinePSTNGateway
Get-CsOnlinePstnUsages
Get-CsOnlineVoiceRoute
Get-CsOnlineVoiceRoutingPolicy
Get-CsTeamsCallingPolicy


Info

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.