Forwarding Calls to the PSTN or Response Groups with Cloud Auto Attendants using SFB Server
Updated: Jan 19, 2020
NOTE: This guide only pertains to customers with a Hybrid configuration to Skype for Business Online/Microsoft Teams. A guide for Teams Only customers will be coming shortly.
With the impending doom of Microsoft Exchange Online Unified Messaging (UM) at the end of February 2020, Microsoft is urging customers to migrate to Cloud Auto Attendants as soon as possible. At the time of writing, the ability to forward calls to the PSTN is not supported natively and a workaround needs to be put in place to do so. Additionally, other internal services that run on Skype for Business Server are not supported to be transferred to via SIP such as Response Groups.
While Microsoft is working on bringing a transfer to PSTN option soon, there is a chance that it will heavily rely on Teams Direct Routing for it to work (Will update once we know more). If that is the case, this solution can be used to not have to rely on Direct Routing and will allow you to utilize your on-premises deployment.
Planning & Prerequisites
A few prerequisites need to be addressed to ensure that your environment is ready to support these features of Cloud Auto Attendants.
• Hybrid Cloud Auto Attendant Configured
• Skype for Business Server Software Version
Skype for Business Server 2015 - CU8 or Higher (Current Version is CU10 HF1)
Skype for Business Server 2019 - Any version (Current Version is CU2)
• Must have hybrid connectivity to Skype for Business Online
Includes Azure AD Connect
• Licensing Requirements
Phone System - Virtual User licenses
*Since we are not utilizing any direct routing functionality, we only need to use the virtual user licenses for the forwarding User objects.
Step 1: Create the on-premises virtual user account
While this user account is setup in the same way as a standard Skype for Business Server user, licensing for this user does not need to be accounted for per Microsoft as this is a workaround. Be sure to not use this account for day-to-day users. With my customers utilizing this solutions, I personally have a naming convention for the accounts: AA_<RA/AA Name>_MO1. The MO1 field pertains to the menu option for the auto attendant. MO is for Menu option, MO-AA is After-Hours Menu Option, and OP is the operator (In the case it is not one user). Some examples would be: AA_MSFTNET Main Line_MO1, AA_MSFTNET Main Line_MO-AA3, and AA_MSFTNET Main Line_OP.
1. Login to Active Directory, navigate to the OU that the resource account should be created and create a new user object.
NOTE: for the SAM Account Name, I created the below PS script to generate a unique 20 character name. Since there is a chance to have a overlapping SAM account name due to the AA name length, this option is very useful:
$SAM = New-Guid | Select-Object -ExpandProperty Guid
$SAM = $SAM.Replace('-','')
$SAM = -Join $SAM[0..19]
2. Set a password for the virtual user. This will be used to set line forwarding options (Unless SEFAUtil is used) and mark the password to never expire (optional).
Step 2: Enable the User for Skype for Business Server
The user now needs to be enabled for Skype for Business Server as an Enterprise Voice (EV) user. Note that this task MUST be done in the older Skype for Business Server Control Panel (CSCP) and not the newer MACP (if using 2019).
1. Open the Skype for Business Server Control Panel (CSCP) and navigate to Users > Enable Users
2. On the New Skype for Business Server User screen, add the newly created user account, select the pool that the user should be homed to, check the box to use the user's UPN as the SIP URI, select the telephony license to Enterprise Voice and leave the Line URI field blank. (The EV license is needed for call forwarding options, but since a REFER is happening within the SIP message, the Line URI can be left blank (Unless you wish to waste a DID :P)).
3. The user will now be enabled for Skype for Business Server.
Step 3: Force Sync the User to Microsoft 365
If the user is not showing within Microsoft 365 yet, we need to force sync the user to Azure AD.
1. Log into the server hosting Azure AD Connect (usually a DC) and launch PowerShell
2. Run the following CMDlets to force a delta sync to Azure AD:
Start-ADSyncSyncCycle –PolicyType Delta
NOTE: You can monitor the synchronization process by using the MIISClient located at: C:\Program Files\Microsoft Azure AD Sync\UIShell\miisclient.exe
Step 4: Set the Users Forwarding Options
While we are waiting for the account to sync to the Microsoft Cloud, we are going to setup the forwarding options for the virtual user.
1. Sign into Skype for Business as the user.
2. In the Skype for Business Client (Non-Basic Client) right-click Call Forwarding Off in the bottom left and then select Call Forwarding Settings.
3. Select Forward my calls to: then select New Number or Contact and enter the PSTN number or SIP address of the target that you wish to reach (RGS, SLA, PSTN, etc.) and then click OK twice and sign out as the user.
Step 5: Add a Phone System - Virtual User License to the User
Now that we have given Microsoft 365 enough time to make the user sync to their cloud, we need to assign a Phone System - Virtual User license to the account so that it can be provisioned for Skype Online.
1. Login to the Microsoft 365 Admin Center as a Global Administrator at https://portal.office.com
2. Click "Admin", then "Users", and then select the newly created Menu Option Resource Account.
3. Click on the "Licenses & Apps" tab, select the Phone System - Virtual User license and then click "Save Changes". (Old Image Used Here)
Step 6: Add the User Account to the Cloud Auto Attendant
We now are ready to add the user account to the Cloud Auto Attendant.
1. Navigate to the Teams Admin Center at https://admin.teams.microsoft.com, select Auto Attendants on the left and double-click the Auto Attendant that you wish to add this menu option to.
2. Navigate to Call Flow, Update the menu option greeting message, add the Menu option to the correct Dial Key and click Submit.
Testing & Validation
With the Cloud Auto-Attendant's menu option now created, functionality can be tested.
Call into the Auto Attendant and verify that:
Routing works from an outbound caller to both DID's and SIP URI's
Routing works from an internal user that dialed the AA via SIP to DID's and SIP URI's. NOTE: If your SIP carrier does not allow anonymous dialing from and un-owned DID, forwarding to the PSTN from an internal SIP call will fail. This only effects what I estimate >1% of customers as it isn't usually a person internally initiating a call to an auto attendant.
Some issues may occur during the deployment. Below are a few that may occur with their solutions. (I will try and keep this list updated if/when issues occur)
Getting an error message in the Teams Admin Center stating the user is not EV enabled
Allow some time for Microsoft's provisioning service to apply the license to the account. If you run into an issue where the account after several hours does not provision, use the below cmdlets to connect to Skype for Business Online PowerShell (Replace Fillters):
$session = New-CsOnlineSession -UserName "email@example.com" -OverrideAdminDomain "tenant.onmicrosoft.com"
Import-PSSession -Session $session
Set-CsUser -identity "AA_SomeAA_MO5@domain.com" -EnterpriseVoiceEnabled $true