Lync 2010/2013 and Exchange Online

As the distribution of Office 365 spreads accross the planet, the need for hybrid deployments rises. In many scenarios we find that environments are partly hosted on-prem and in the cloud. The reason for  such deployments vary in some degree, and when it comes to Lync deployments it’s often due to enterprise voice which is not possible in the cloud(at the moment).

To implement a hybrid configuration where Lync resides on-prem and Exchange is hosted online, we have to do some configuration in the on-prem environment.
First, if the Lync environment is a Lync 2010 installation the minimum requirement is that the March 2013 server Update is installed on the Lync servers. In addition to this, a standalone server with Lync 2013 Administrative Tools has to be deployed in order to be able to connect with Office365. All PowerShell commands against the Online environment has to be executed on the server running Lync 2013 Admin Tools.

To enable Lync On-prem integration with Exchange Online, the first step is to make sure that federation is allowed(most environments already have open federation enabled):

Set-CsAccessEdgeConfiguration -AllowFederatedUsers $True

The next step is to configure the shared address space with Exchange Online:

New-CsHostingProvider -Identity "Exchange Online" -Enabled $True -EnabledSharedAddressSpace $True -HostsOCSUsers $False -ProxyFqdn "exap.um.outlook.com" -IsLocal $False -VerificationLevel UseSourceVerification
  • Identity specifies a unique string value identifier for the hosting provider that you are creating (for example, “Exchange Online”). Values that contain spaces must be in double quotes.
  • Enabled indicates whether the network connection between your domain and the hosting provider is enabled. This must be set to True.
  • EnabledSharedAddressSpace indicates whether the hosting provider will be used in a shared SIP address space scenario. This must be set to True.
  • HostsOCSUsers indicates whether the hosting provider is used to host Office Communications Server or Lync Server. This must be set to False.
  • ProxyFQDN specifies the fully qualified domain name (FQDN) for the proxy server used by the hosting provider. For Exchange Online, the FQDN is exap.um.outlook.com.
  • IsLocal indicates whether the proxy server used by the hosting provider is contained within your Lync Server topology. This must be set to False.
  • VerificationLevel Indicates the verification level allowed for messages that are sent to and from the hosted provider. Specify UseSourceVerification, which relies on the verification level included in messages sent from the hosting provider. If this level is not specified, the message will be rejected as being unverifiable.

Check replication status to verify that the changes has replicated to the access edge server:

Get-CsManagementStoreReplicationStatus

Lync for Mac 14.0.8 crashes, relogin and acts weird.

Ok, I admit it. I’m running Lync on OSx 😦

Several of my machines, including my work machine, are apple products. But I still want to run Lync in a local client. Sadly, Microsoft has not come up with a Mac client worthy of comparison with the Lync 2013 client for Windows.

So, I have to stick with the Lync 2011 client for Mac 🙂 This client is very unstable, and does a lot of strange things. I’ve managed to get it fairly stable and working, but not 100%. It keeps crashing when I plug in USB devices etc.

After the last update to version 14.0.8, the client started to sign in and out every few seconds. It seems like the problem arises due to the fact that newer Mac OSx is case sensitive, which is not taken into consideration by Microsoft.In order to fix this, I had to run the following command in Terminal on my Mac:

cd /Applications/Microsoft\ Lync.app/Contents/Frameworks \
    && ln -s USBHIDWrapper.framework USBHidWrapper.framework

Just so you know it in case you are in the same situation as I am 🙂
PS: VmWare Fusion is a super product for running Windows on a Mac(if you have to) 🙂

Note: It turns out that the last patch for Lync for Mac 2011(14.0.8) also fixed some other problems I had with the client crashing when removing or inserting USB headsets and web cam’s while the client was running.

Lync Server 2013: Event ID 32054, LS Storage Service

Problem With event ID 32054 appearing in event log on Lync 2013 server.

The scenario is as follows:
Lync 2010 upgraded to Lync 2013 CU3 in co-excistence with Exchange 2010 SP2 running on Windows Server 2008 R2.

Problem:
The event log on the Lync 2013 server is showing repeated event ID 32054. “Sorage Service had an EWS Autodiscovery failure.”
Event ID 32054 Continue reading “Lync Server 2013: Event ID 32054, LS Storage Service”

Using Cisco Tandberg VCS as video gateway for Lync.

I’ve recently had to do some video routing in Lync in order for users to be able to connect to external video systems other than Lync.
Apparentliy, this was doable in Lync, but I’ve never configured it before.
So here we go:
First, the routing video system has to be configured, in my case this was a Cisco Tandberg based system which was supposed to serve as a GW for Lync video clients.
The system was configured as a TrustedApplication according to the installation manual from Cisco Tandberg.

Secondly, Lync has to be configured with static routes for the domain in question, for demo purposes named remotedomain.com. Internal domain is mydomain.com.

Assuming there is no static routes defined prior to this, the following commands are run in Lync Server Management Shell:

  • New-CsRegistrarConfiguration -Identity Service:Registrar:lync.mydomain.com
  • New-CsStaticRoutingConfiguration -Identity Service:Registrar:lync.mydomain.com
  • $route = New-CsStaticRoute -TLSRoute -destination vcsc.mydomain.com -port 65072 -matchuri something.remotedomain.com -usedefaultcertificate $True
    (vcsc.mydomain.com=Fqdn of Cisco GW to be used)
  • Set-CsStaticRouteConfiguration -Identity Service:Registrar:lync.mydomain.com -route @{Add=@route}

The result, when running Get-CsStaticRouteConfiguration, should look something like this(MatchUri and GW FQDN masked):

image002

MatchUri would be the destination domain something.remotedomain.com and Fqdn=”name of your video GW”:”Destination port”

And that should be it. You’re now ready to make video calls directly from Lync to video end points in the configured domain. If there are several domains, make a static route for each domain.