You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »


In This Article


Overview


IMPORTANT:  The configuration steps in this article assume that your Teams users will have their calls routed from Office 365 to the Evolve IP voice infrastructure.

If your environment includes voice routing to other 3rd party vendors, or you are using Microsoft's dial plans, your configuration will be different, and you should work with Evolve IP prior to following these steps.


In the US, Evolve IP has two primary datacenters for its voice infrastructure.  One in Las Vegas for users located in the west, and one in Philadelphia for users located in the east.  When configuring your voice routes in Office 365, you will want to make one of the two locations a primary route and the other a secondary route.  For example:

  • Users located on the east coast would use the Philadelphia (east) voice infrastructure for their primary route, and the Las Vegas (west) voice infrastructure for their secondary route.
  • Users located on the west coast would use the Las Vegas (west) voice infrastructure for their primary route, and the Philadelphia (east) voice infrastructure for their secondary route.
  • For users located in the middle of the US, you will need to choose a primary/secondary combination that best works for their location.


The above scenarios means you will have the following configured in Office 365:

  • Qty (2) PSTN Usage objects.  These objects are used to link voice routes with voice routing policies.  You will have one PSTN Usage object for the east route & policy, and one for the west route & policy.
  • Qty (2) Voice Routes.  A voice route for the west (Las Vegas), and a voice route for the east (Philadelphia).
  • Qty (2) Voice Routing Policies.  One assigned to users located in the west, and one assigned to users in the east.

If your users are all in the same location, then you would assign all of them to the same voice routing policy (east or west).  However, this doesn't mean you should only create a routing configuration for a single location.  We recommend creating both configurations (east & west) in case you need to switch your users over to another location, even if it's temporary.



Naming Conventions

Every organization has its own naming conventions, and Evolve IP is no different.  The steps in this article use our naming conventions, and we strongly suggest you use them for two important reasons:

  • If you need to get support from Evolve IP, our support teams will have no problem identifying, verifying, and if needed, troubleshooting your direct routing configuration.
  • If sometime in the future you decide to use Evolve IP for managing your direct routing configuration and user provisioning, we can easily slip into that role.

If you choose to use your own naming conventions, that's totally fine.  We understand.



Steps to Configure Teams Direct Routing

IMPORTANT:  The configuration steps in this article assume that your Teams users will have their calls routed from Office 365 to the Evolve IP voice infrastructure.

If your environment includes voice routing to other 3rd party vendors, or you are using Microsoft's dial plans, your configuration will be different, and you should work with Evolve IP prior to following these steps.

1. Connect to the Skype for Business Online Services

Connect to your Skype for Business Online services using PowerShell.  You do not need to connect to the Teams, Azure AD, or MSOL services.  If needed, review the Teams Direct Routing - 01 - Planning and Prerequisites article for details.

2. Create the PSTN Usage Objects

A PSTN Usage object links a voice routing policy to one or more voice routes.  It doesn't do anything else, and there is no configuration associated with this object.  The Set-CsOnlinePstnUsage command is used to add/remove usages to/from the usage list. The usage list is global so it can be used by policies and routes throughout your environment.

The below creates a PSTN usage object for both the Evolve IP "East" & "West" voice infrastructures.

# Define the PSTN Usage names
$PstnUsageEast = "EIP-TDR-PstnUsage-AllCalls-East"
$PstnUsageWest = "EIP-TDR-PstnUsage-AllCalls-West"

# Add the PSTN Usage names to the global usage list
Set-CsOnlinePstnUsage -Identity "Global" -Usage @{Add="$($PstnUsageEast),$($PstnUsageWest)"}

# View the list of PSTN Usage names
Get-CSOnlinePSTNUsage

3. Create the Voice Routes

Voice routes are associated with a PSTN Usage object.  Each voice route is assigned a priority number with the lower number having a higher priority.  Additionally, a voice route includes a number pattern (regular expression) that identifies which phone numbers will be routed through a given voice route.  To route all calls through a voice route, use this expression for the number pattern:  .*

The below PowerShell code creates a voice route and associates it with its respective PSTN usage object.  Because each PSTN usage object is only associated with a single route in this configuration, the priority numbers configured in the voice routes have no affect.

In the below PowerShell code, make sure you modify lines 2 & 3 with the domains provided to you by Evolve IP.

### Enter your domains here:
$DomainPHL = "c123456.phl01.us.teams.evolveip.net"
$DomainLAS = "c123456.las01.us.teams.evolveip.net"

#################################
### Voice route configuration ###
#################################

# Properties for the US East route to Philadelphia
$VrPropEast = @{
  Identity              = "EIP-TDR-VR-East"
  OnlinePstnUsages      = $PstnUsageEast
  NumberPattern         = '.*'
  OnlinePstnGatewayList = "$($DomainPHL)"
  Priority              = 1
  Description           = "East voice route to Evolve IP (PHL)"
}

# Properties for the US West route to Las Vegas
$VrPropWest = @{
  Identity              = "EIP-TDR-VR-West"
  OnlinePstnUsages      = $PstnUsageWest
  NumberPattern         = '.*'
  OnlinePstnGatewayList = "$($DomainLAS)"
  Priority              = 2
  Description           = "West voice route to Evolve IP (LAS)"
}

# Create the voice routes
New-CsOnlineVoiceRoute @VrPropEast
New-CsOnlineVoiceRoute @VrPropWest


# View a list of all voice routes and their properties
Get-CsOnlineVoiceRoute

4. Create the Voice Routing Policies

Voice Routing Policies are linked to voice routes by assigning the routing policy to one or more PSTN Usage objects.  The order of the PSTN usage objects matters.  The first PSTN usage object will be used first.

New-CsOnlineVoiceRoutingPolicy "EIP-TDR-VRP-AllCalls-East" -OnlinePstnUsages "$($PstnUsageEast),$($PstnUsageWest)" -Description "Voice routing to Evolve IP US East"
New-CsOnlineVoiceRoutingPolicy "EIP-TDR-VRP-AllCalls-West" -OnlinePstnUsages "$($PstnUsageWest),$($PstnUsageEast)" -Description "Voice routing to Evolve IP US West"

5. Normalization Rules & Tenant Dial Plans (Optional)

Normalization Rules

Normalization rules are regular expressions used to translate one number format to another number format.  For example, you can translate a 4-digit extension number like 1234 to a 10-digit E.164 formatted phone number.

Evolve IP uses BroadWorks for all voice features, and this includes feature codes using star "*" and pound "#".  BroadWorks also has its own means of translating and routing N-digit extension numbers.  This makes configuring Microsoft's back-end voice infrastructure very easy.  All we need to do is send any number, no matter the length or the feature code to BroadWorks for interpretation.  If the number or feature code dialed is not supported, BroadWorks will let the user know.

Microsoft applies some default normalization rules based on the user account's assigned usage location.  These rules cannot be changed or disabled.  However, the rules we will create will be processed before the default rules are processed.  If you want to view Microsoft's default rules, run the following PowerShell command:

Get-CsVoiceNormalizationRule US | FT Name,Priority,Pattern,Translation,Description -auto


Tenant Dial Plans

Tenant Dial Plans are used to store the normalization rules.  You can use the existing Global Tenant Dial Plan, which will be applied to all users in your organization, or you can create one or more custom Tenant Dial Plans and apply them to individual users.  Since we are using the Evolve IP BroadWorks environment to handle number translations, we don't want any of Microsoft's default normalization rules to be applied.  Therefore, we will add some normalization rules to the Global Tenant Dial Plan, to circumvent Microsoft's default rules.

Use the following PowerShell command to check for existing tenant dial plans, and normalization rules:

Get-CsTenantDialPlan

Here's an example output when there's just the global tenant dial plan and no normalization rules.

Identity              : Global
Description :
NormalizationRules : {}
ExternalAccessPrefix :
SimpleName : DefaultTenantDialPlan
OptimizeDeviceDialing : False

IMPORTANT:  If you already have normalization rules added to your global tenant dial plan, or you have created your own custom dial plans, you need to proceed with caution.  The steps below assume you have no existing normalization rules or custom tenant dial plans.


Create the Normalization Rules & Add Them to the Global Tenant Dial Plan

Use the following PowerShell commands to create the normalization rules:

# Rule for feature access codes using the # symbol
$NR1 = New-CsVoiceNormalizationRule -Parent Global -Description "EIP TDR FAC Pound" -Pattern '^(\#\d{2})$' -Translation '$1' -Name EIPTDRFACP -IsInternalExtension $false –InMemory

# Rule for feature access codes using the * symbol
$NR2 = New-CsVoiceNormalizationRule -Parent Global -Description "EIP TDR FAC Star"  -Pattern '^(\*\d{2})$' -Translation '$1' -Name EIPTDRFACS -IsInternalExtension $false –InMemory

# Rule for extension dialing
$NR3 = New-CsVoiceNormalizationRule -Parent Global -Description "EIP TDR Extensions" -Pattern '^([1-9]\d{0,5})$' -Translation '$1' -Name EIPTDREXT -IsInternalExtension $false –InMemory


# Add the normalization rules to the global tenant dial plan
Set-CsTenantDialPlan -Identity Global -NormalizationRules @{add=$NR1,$NR2,$NR3}


# View all normalization rules in the global tenant dial plan
(Get-CsTenantDialPlan -Identity global).NormalizationRules


If needed, you can use the following command to clear all normalization rules from the global tenant dial plan:

Set-CsTenantDialPlan -Identity Global -NormalizationRules $null



Conclusion

After configuring the back-end Skype for Business Online services for direct routing, it is recommended to wait a few hours before provisioning your Teams users with direct routing.  This gives Microsoft's back end enough time to synchronize these changes across all of the services and infrastructure.

Our testing has shown that 3 hours is usually enough time to wait, but if you are unable to provision users for direct routing after 3 hours, let us know.  We can review your TDR configuration, and if needed, we can assist with opening a case with Microsoft.

Additionally, we recommend keeping the licenses assigned to the TDR domain user accounts until you are satisfied with your deployment.  If you're starting with a pilot group of users, wait until their testing is done, and then you can reassign the licenses to the users in your production group.


Next Steps







  • No labels