With release of Lync 2013, Cummulative Update in February 2013, Microsoft enabled Lync 2013 deployments to serve mobile users. Release of mobile clients for Windows Phone 8, Apple iPhone/iPad and Android devices completes the solution as a whole.

Setting up mobility for a pure Lync 2013 environment (I am not going to cover Lync 2010 co-existence today), is relatively straight forward process. You can refer to “Deployment Process for Mobility” for more details.

Configuring push notification, however, turned out to be a bit of challenge for me. Not necessarily because the configuration is complicated, it probably was lack of clear understanding of the process flow.

It started with “504 server timeout” message in my IM window when I tried to send a message from my lync user on desktop to Lync user using Lync 2013 for Windows Phone 8.

Friendly snooper showed a “408 Request Timeout” along with diagnostics message [Reason=”The client did not respond to the invitation”;info=”No push subscription for target device”].

Using Lync Logging on Front-End server showed the following call flow:

image

I noticed that the call to push.lync.com was timing out. But since the call was going to Edge server (172.16.101.16), I assumed there was something wrong in Edge server configuration.

Logging on Edge server showed me few messages. One of the message looked like the following:

Exit – domain [push.lync.com] is unknown and DNS SRV results did not match anything

This error made it look like a DNS issue. However, I knew it wasn’t a DNS issue. I was able to resolve the name and ping it from Edge server. Then came the next message:

domain=”push.lync.com”;fqdn1=”sipfed.online.lync.com:5061″;reason=”The domain of the message is not configured and does not appear to belong to a federated partner”

That’s when I realized that even though I had LyncOnline hosted provider configured using sipfed.online.lync.com, I didn’t have push.lync.com in allowed list of SIP Federated Domains. Adding it was simple step. It is also documented here: Configuring for Push Notifications

Since we are talking a strict Lync 2013 deployment with Lync 2013 mobile clients only, I feel the need to mention that Push notification is not required for Apple devices anymore. It was required for Lync 2010 Mobile clients on Apple devices. However, Push notification is required for Lync 2013 clients on Windows Phone. The reason for this is apparent in Mobile Client Comparison Tables article on TechNet which states iPhone/iPad client stays signed in for upto 10 days and support for push notifications isn’t available. What it doesn’t say, which was covered in Lync Conference and is also documented on my good friend Doug Deitterick’s blog post Lync 2013 Mobility, is that it uses VOIP socket instead of push notifications. All this leaves only Windows Phone up for discussion.

Being a visual creature, I figured a picture would do more justice in explaining the call flow for Windows Phone push notifications (click on picture for larger view):

image

Here’s some explanation to help complete the picture:

  1. Lync 2013 on Windows Phone suscribes for push notifications
  2. Desktop client or federated client initiates communication to Windows Phone user
  3. Lync 2013 Front-End pool connects to Edge server configured for federation (defined in topology in site configuration)
  4. Lync 2013 Edge Server connects to push notification service push.lync.com using hosted provider sipfed.online.lync.com
  5. Push notification service delivers the notification to Lync 2013 mobile client on Windows Phone

I hope my long rambling provides some clarity and insight into Lync 2013 mobility’s push notification call flow for Widows Phone. Cheers.