This article will talk about a real call flow scenario when leaving voice mail to hosted mailbox user via Skype for Business on Premise.
Let us imagine that Bob has his mailbox migrated to Office 365, and he is enabled for UM there. Now let us suppose that Alice tried to call Bob on his extension and Bob did not answer. How can Alice leave voice mail to Bob in this case?
Hosted Voice Mail Call Flow
- Note: Any mention of Skype server here means the On-Premise Skype for Business Front End Servers. Any mention of Exchange Online means Office 365.
- Bob has Skype for Business extension using on premise implementation of Skype for Business and is enabled for enterprise voice EV. He should be enabled for EV or else, nothing will work.
- Bob’s mailbox is located in Office 365 and he is enabled for UM in Exchange Online.
- Alice (we do not care who is Alice, it could be someone calling from land line, it could be on premise or in Office 365, or it could be calling from her mobile) is calling Bob Skype extension.
- Bob did not answer the call, so the on premise Skype server will look for voice mail possibility.
- Skype server will try to see if Bob has [HostedVoiceMail] set to true [Get-CSUser].
- If this value is set to $false, which is the default value, then Skype server will start looking if Bob is enabled for on premise UM solution. We will not cover this possibility here as this was discussed in different article.
- If this value is set to true, then Skype server immediately knows that Bob has cloud voice mail capabilities and the hosted voice mail call routing logic will be triggered.
- Skype server now knows it should route to Office 365 UM solution, but it needs some routing information on how to route the call and to what address. This information is available in [HostedVoiceMailPolicy] configuration, which is defined by the Skype Admin. There could be many Hosted Voice Mail Policies, so Skype needs to know which Hosted Voice Mail Policy Bob is enabled on.
- So Skype server will issue a Get-CSUser -identity Bob@aramex.com | Select HostedVoiceMailPolicy. If this value is empty, then Bob is enabled on the default Global HostedVoiceMailPolicy which is created by default in every organization. Usually this is the case.
- Now the Skype server knows two things so far:
- Bob has hosted Voice Mail in the cloud
- Bob Voice Mail UM Server address is located in a HostedVoiceMailPolicy called Global.
- Skype server will then read the Global HostedVoiceMailPolicy by running Get-CSHostedVoiceMailPolicy
- Skype server knows now that exap.um.outlook.com is the Exchange Online UM server that we need to route the call to in order to play the voice mail greeting message for Bob.
- Skype Front End Servers will then generates a new Invite and sends the call to the Edge server.
- Skype Front End Server’s role is done at this point.
- Now Skype Edge receives the call.
- Edge server checks the CSHostingProvider to see if a Hosting Provider has been created for “Exap.um.outlook.com” to find out if it should send the call out to O365 [by running Get-CSHostingProvider]
- Edge found a hosted provider for exap.um.outlook.com, hence edge creates an INVITE and sends it out to exap.um.outlook.com.
- Once Edge sends the INVITE it reaches the Microsoft access edge proxies which relay this to the Exchange online UM servers in O365.
- The exchange Online UM server verifies the tenant, checks Dial Plan, Then Checks the “Callee” Info from the Invite and validates if the “Callee” user has been enabled for Voice Mail in O365 and if he is then it accepts the Voice Mail.
Hosted OVA Subscriber Access Numbers and Auto-Attendants Call Flow
- Let us assume we have a dial plan in Exchange Online called [CloudDialPlan] and Bob whos mailbox is located in Office 365, is enabled for UM on that same dial plan.
- Let us also assume that the Office 365 Admin had configured OVA for that dial plan by assigning a subscriber number in the dial plan say +9626551333.
- Also the IT Admin already created RTC contact in on premise Active directory with SIP address Office365_OVA@aramex.com and with +9626551333 as telephone number. Also, a HostedVoiceMailPolicy is applied on that contact explicitly by using user scoped HostedVoiceMailPolicy and not the global one.
- Now Alice is called that subscriber number +9626551333, and Skype knows this number belongs to an RTC contact. So it maps that number to a SIP URI (Office365_OVA@aramex.com), and this is one of the benefits of creating that contact, to map a number to SIP URI, since Exchange UM Dial Plans only deals with SIP URI.
- Skype will try to ring that SIP URI without luck, so it will search for voice mail possibility, and since there is no HostedVoiceMail attribute on that contact, it will check if the contact is linked to a HostedVoiceMailPolicy.
- Now, since the contact is linked to a policy, the Skype will send SIP invite to the Edge, the Edge will send SIP Invite to Office 365, and Office 365 will realize that number is mapped to a subscriber access number on a dial plan and will play the OVA greeting.