Migrating an organization's communication system to Microsoft Teams represents a pivotal shift, particularly for large enterprises rooted in established dialing practices. Unlike traditional telephony systems, which rely on extensions, Teams emphasizes user identity for calls, enabling users to reach colleagues by simply searching and clicking to call. While this model enhances efficiency in numerous scenarios, it poses challenges for certain legacy use cases, such as the need for 4-digit dialing.

I recently collaborated with an organization transitioning to Teams, facing the specific challenge of retaining their established 4-digit dialling system. This organization extensively utilized common area phones, with a critical requirement for users to contact building security and other services using familiar 4-digit extensions, mirroring their previous PBX system setup. While configuring speed dials on common area phones emerged as a potential solution, this approach demanded significant reconfiguration of each phone and, more importantly, required users to adapt to a new behavior—using speed dial buttons instead of the direct 4-digit dialling they were accustomed to. This insight led us to explore alternative strategies to preserve the intuitive and seamless 4-digit dialling experience within the Microsoft Teams environment.

The good news is it is possible to make the legacy four digit dialling experience work in Teams - the key is utilizing dial plans and rewriting the 4 digits to a number assigned to the resource account you want to call.

Assuming you don't want to use a real phone number for this transformation, you can assign an internal "fake" number to a resource account as a first step.  In my deployments I like to use numbers from the 700 NPA block. This block of phone numbers is reserved for internal carrier use and is non-routable, making it perfect to use for call routing inside an organization.

For this example I will show you how to setup "1234" as the four digit number we want to map to an auto attendant.  The first step in the process is to assign a phone number that we will route the calls to.  In powershell we can create this resource account easily - make sure you change "YOUR TEAMS DOMAIN" to the correct value:

$TeamsNumber = "+17005001234"
New-CsOnlineApplicationInstance -UserPrincipalName "$OnPremResAccountName"

Next we need to license the resource account for with a "Teams phone resource account" license - this can be done in the Office365 portal.  Once the user is licensed we can go back to Powershell and assign a phone number to the account:

Set-CsPhoneNumberAssignment -Identity $OnPremResAccountName -PhoneNumber $TeamsNumber -PhoneNumberType DirectRouting

Having successfully assigned the number +17005001234 to our resource account, we're now set to link it to an Auto Attendant or Call Queue. The next crucial step involves establishing a dial plan that converts the 4-digit extension (1234) into its full phone number counterpart (7005001234). While it's feasible to configure the dial plan to recognize and transform all 4-digit sequences, this example will specifically illustrate the process for the singular 1234 pattern. For demonstration purposes, we'll integrate this pattern into the Global dial plan. However, it's important to note that Microsoft Teams offers the flexibility to customize dial plans at both the user and site levels, ensuring adaptability to the unique requirements of your organization. For those seeking comprehensive instructions on crafting and managing dial plans, Microsoft's detailed documentation on the subject is an invaluable resource.

In Powershell we create a new normalization rule to convert 1234 to the full number:

$nr1=New-CsVoiceNormalizationRule -Parent Global -Description 'Route 1234 to test IVR' -Pattern '1234' -Translation '+17005001234' -Name NR1 -IsInternalExtension $false -InMemory

And then we assign the new normalization rule to the global dial plan:

Set-CsTenantDialPlan -Identity Global -NormalizationRules @{add=$nr1}

We can validate things are working as expected in the Teams Portal by using the dial plan test utility.

Now if we go to any Teams device and dial "1234" we will be connected to the auto attendant or call queue that we attached the resource account to.

Migrating to Microsoft Teams doesn't have to mean leaving behind the simplicity and familiarity of 4-digit dialling for internal services. By following these steps, you can ensure a smooth transition for your users, maintaining their existing dialling habits while leveraging the advanced communication capabilities of Microsoft Teams. Remember to update your scripts and commands as needed to adapt to the evolving Microsoft Teams platform, and if you need assistance with implementing solutions like this you can always contact my consulting company for assistance :-)