Hosted voice mail in Office 365
This article will talk about a real hosted voice mail in Office 365 and call flow scenario when leaving Exchange UM voice mail to hosted mailbox user via Skype for Business on-premise.
In part 1, we talked a little bit about how hosted voice mail works. Let us imagine that Bob has his mailbox migrated to Office 365, and he is enabled for UM there. Bob also has a Skype extension using the on-premise Skype infrastructure. Now let also us assume that Alice tried to call Bob on his Skype extension, and Bob did not answer. How can Alice leave voice mail to Bob in this case?
Hosted Voice Mail Call Flow
Let us start exploring how hosted voice mail in Office 365 works. Please note that any mention of Skype server here means the on-premise Skype for Business front end servers.
- Bob has Skype for Business extension using on-premise implementation of Skype for Business and is enabled for enterprise voice. He should be enabled for enterprise voice or else, nothing will work.
- Bob’s mailbox is 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 Skype user, 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 by looking at the AD object of Bob in the local Active Directory, by simply running the Get-CSUser Bob@contoso.com Skype PowerShell cmdlet.
- If HostedVoiceMail 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 Skype 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.
- Skype server will run this command:
Get-CSUser -identity Bob@contoso.com | Select HostedVoiceMailPolicy.
If this value is empty, the default Global HostedVoiceMailPolicy will be applied to Bob, 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 information can be obtained from the Skype Global HostedVoiceMailPolicy
- Skype server will then read the Global HostedVoiceMailPolicy by running Get-CSHostedVoiceMailPolicy .
- Skype server knows now that um.outlook.com is the Exchange Online UM server that we need to route the call to play the voice mail greeting message for Bob.
- Skype Front End Servers will then generate 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 CSHostingProviderto see if a Hosting Provider has been created for “Exap.um.outlook.com” to find out if it should send the call out to Office 365 [by running Get-CSHostingProvider ].
- Edge finds a hosted provider for 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 Office 365.
- 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
We talked about hosted voice mail in Office 365, and now let us talk about hosted OVA and how subscriber access numbers work when they are hosted in Exchange Online. We talked previously about how OVA and subscriber numbers work in great details when we talked about Exchange UM architecture and Exchange voice mail.
- Let us assume we have a dial plan in Exchange Online called [CloudDialPlan] and Bob whose 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@contoso.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 calling 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@contoso.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
- Now, since the contact is linked to a policy, 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.
Blog Post Notification
Be the first to get notification when key blog post articles are released. No marketing material.
Thanks for all the articles you have written here. It has been a very good source for someone like me that has been working a lot with SfB on-prem and Exchange on-prem in the past but never had to deal with the technical aspects of hybrid. So you can imagine that this info is very valuable to me.
One question i have is that in this article i think you forgot to finish your sentence “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…” Perhaps you could update this? I think you ment to write: “…linked to a Dialplan” because that is how you explained it in another post.
Also i am working for a customer right now where they have a SfB 2013 hybrid config and are in the process of moving mailboxes from on-prem to the cloud. I have confirmed that a CsExUMContact has been created but that there is no hostedvoicemailpolicy assigned to that contact. They did changed the gobal policy however with Set-CsHostedVoicemailPolicy to point to exap.um.outlook.com. When we try to dial the LineURI that is configured on the contact we do get a voicemail greeting but whenever we give the extension number we here a message: “This is not a valid voicemailbox number”
Perhaps you can point me out where this is going wrong? The UM enabled mailboxes that are on-prem still work.