Category Archives: Uncategorized

Changing the Lync 2013 or Skype for Business contact card

The contact card is a shared component of Office 2013 – everything that can display a contact uses the same setttings. The fields you see will change depending on whether information is populated for them, either in Active Directory or a contact you’ve created for them in Outlook. Here’s an example:


A requirement on a recent project was to have extra information displayed in the Lync contact card. For staff who have an assistant, their Active Directory account is populated with the assistant’s name and telephone number (in the msExchAssistantName and telephoneAssistant attributes), and this is useful to see at a glance within Lync, as they may be the best route to get in contact.

Microsoft publish information about customizing contact cards via registry keys on TechNet, which we tried, and couldn’t get it to work. Instead we went down the route of customizing Office 2013 via the official Group Policy templates.

Download the Office 2013 Administrative Template files

If you’ve not made any changes to Office 2013, you may not have these installed. Download the package then extract the files. Included is a handy reference in Excel form which tells you what each setting does and the registry key it sets.

You can either copy the contents of the “admx” folder to C:\Windows\PolicyDefinitions on the computer that will run the Group Policy management tools, or to the \policies\PolicyDefinitions\ folder on the SYSVOL for the domain.

Create a test GPO and make some changes

Open up Group Policy Management, and under Group Policy Objects, create a new GPO for testing. Right-click it and select Edit.

Contact Card settings are under User Configuration > Policies > Administrative Templates > Microsoft Office 2013 > Contact Card > Contact Tab.

If you refer to the helper text or the Excel reference sheet, it shows the line number for each piece of information – generally they go from most to least commonly used. In our case, we needed everything up to “Company” (12th line), which left line 13 and 14 to be replaced with new information.

gpo2Line 13 is “Work Address”, so we went into the “Replace AD – Work Address” setting and put in the AD attribute that we want to use to populate the field – msExchAssistantName in our case.


We also need to change the corresponding label on the contact card so that it displays something appropriate for the new info. The “Replace Label – Work Address” setting was changed to “Alternate Contact”.

This was repeated for line 14 (Home Address), for display of the assistant’s telephone number. There isn’t a documented limit for label names, but tried to keep this at a similar length to others so used “Alt Contact Number” as a label.

These line numbers are also used if instead of a GPO, you prefer to set registry keys via some other method:


Test and verify

To try out the changes, either apply the GPO to a test machine/user or set the registry keys manually. All Office 2013 application will have to be closed and restarted to see the changes.

Success! We now have a contact card displaying the name and telephone number of the assistant.

Limitations and considerations

There’s a few things I’ve found from playing around with the contact card:

Extra phone numbers (such as in this example) often can’t be clicked to dial – they display as simple text.

The contact card comprises the Calendar information (which can be turned on or off) then 16 items of information, with no possibility to add more than this. You are always replacing a (hopefully unused or unimportant) field with another. It’s possible that what is unused by some users is considered important by others.

Information is always shown in line order – so if you replace “Home Phone” (line 6) it will always appear before “Office” (line 11). You may need to move the default ones to a different line to get the order you want.

Since I did this work, the Skype for Business client was released. I’m happy to confirm that as this uses the same Office 2013 contact card, the changes work the same regardless of whether you use the Lync 2013 UI or the Skype for Business UI.


Controlling Lync 2013 Mobile Clients Via Policy

Lync 2010 had a very limited set of options for controlling the use of mobile clients. This has been extended in Lync 2013 and it is worth reviewing before deploying. The defaults are generally sensible but may be too “free” in some environments. You may find that a single policy works for all users, or some may have specific needs or regulations that apply that require a special policy.

Beyond the global policy, new policies can be created for sites or users.  As with all Lync policies, these are not cumulative – only a single policy applies to a particular site or user and all of the settings within it are the ones to be used.

While you can create a mobility policy in the Lync Server Control Panel, this won’t expose all of the settings. Using the New-CsMobilityPolicy or Set-CsMobilityPolicy cmdlets is a better bet.



The best place to start – if set to True, users can sign in and use Lync mobile. If set to False, they are prevented from doing so.


When set to True, users can make and receive VOIP audio and video calls using the mobile client. When set to False, it will behave much like the 2010 mobile client – IM & presence and calls made via OutsideVoice / Call via Work (explained below) if allowed.

Telephony – Call Via Work


This is probably the most misunderstood setting, and one of the few that also existed in Lync 2010. It is set to True by default.

The other name for this functionality is “Call via work”. As the Lync 2010 mobile client did not have the ability to make a VoIP call, this was the workaround and is still useful in many situations now.

If the user tries to make a call but doesn’t have a method to do it via VoIP (eg. they have RequireWifiForIPAudio enabled and are on 3G), Lync Server will establish a call to their mobile telephone number – this goes via the PSTN, not Lync. The user picks up the call, and Lync Server makes another call to the number or contact they were trying. Once established, Lync Server joins the two calls together and they can start the conversation.

call via work 2

When is this useful? Really any time that network conditions mean a PSTN call would be better.

  • Your work (Lync) number is presented to the other party, instead of your mobile
  • Unless you pay for incoming calls, there is no cost to the user – good in BYOD scenarios
  • This also works with any Lync contacts, including those not enabled for Enterprise Voice, or federated contacts who you may not have a number for!
  • You will be on the move during the call – a VoIP call cannot be handed off between wifi and 3G.

This requires the mobile client to be capable of receiving a phone call – so most tablets such as iPads will not work for this. The user also needs a voice policy that is enabled for simultaneous ring, and is allowed to call their mobile number as well as the number they’re calling.

Concerns around this feature are normally driven by cost. A call made this way involves two PSTN calls from Lync – one to the user’s mobile phone, one to the number they’re contacting. In Europe at least, mobile phone contracts tend to have generous allowances, so companies would rather force staff to make a mobile call if necessary instead of using this Lync feature. It is worth piloting and seeing if the functionality is worth the extra cost for your organization.

If set to False, and a call is attempted that can’t be made via VoIP, the Lync client will pass the number to the phone’s dialler to make the call instead.


Within the mobile clients, the user has options to force use of Wifi for different types of call. They may not want to use up their mobile data allowance, or may want to ensure that wifi is used for best quality.

The administrator can override these settings and prevent the user from changing them via the following:




They are all set to False by default (user can decide). If set to True, the options are still seen but the sliders are greyed out.

Note that a video call is actually an audio and video call – if RequireWifiForIPAudio is true and RequireWifiForIPVideo is false, then video calling over 3G will not work!

In this example, RequireWifiForIPVideo  is set to True and the others set to False:



For connection into the user’s Exchange mailbox, to retrieve voicemail and show the meetings for today and tomorrow, the client uses Exchange autodiscover to find the Exchange Web Services (EWS) address. The default  value is True, which will allow this to be attempted and will display the information if successful. If this functionality is not allowed, or will not work (eg. if EWS is not published), then it can be disabled by changing this to False.

Saving information



These are set to True by default, and the client will keep around 100 entries of either. If the saving of this data is not allowed, set the values to False.


This option is set to True by default, and like the “RequireWifi” settings, allows the user to choose. Even when the user signs out, the password field is pre-populated with their saved password. Setting to False means the option is not shown.

I have a separate post coming, detailing how authentication works in Lync 2013 mobile. Recent clients make use of client certificates to authenticate, making the saving of AD credentials redundant. In most environments, I would recommend setting this to False.

Lync 2013 – Windows Fabric installation failure code 1603

An installation issue I saw recently at a customer. Pre-requisites all went on fine, but when doing the Lync install, I hit an issue with Windows Fabric. I was installing at the command-line and saw:

Checking prerequisite WinFab…installing…
There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  failure code 1603


Running via the Deployment Wizard shows the following:

Checking prerequisite WinFab…installing…failure code 1603
Prerequisite installation failed: WinFab

A google search for those terms found this useful blog post but the suggestions didn’t work for me – the firewall service was stopped, but having it running didn’t help, and the system wasn’t set to Italian region (which is on the Lync known issues list), but even so any changes to time format settings didn’t help either.

The fix, as it turns out, was a simple one. The Performance Logs and Alerts service had been disabled in the customer’s standard Windows Server build. Setting this service to Manual or Automatic allowed Windows Fabric to install correctly and the Lync install to proceed.

I did hit a few issues with Windows Fabric after this – if you see anything like the below (event 50006 on LS AppDomain Host Process), uninstall Windows Fabric via the Control Panel > Programs and Features, then reinstall Windows Fabric via the msi.



Lync 2013 client – recording not working

A quick and easy one, but not immediately obvious.

A customer was having problems with recording meetings using in the Lync 2013 client. Attempting to record or use the Recording Manager would result in an error about MFReadWrite.dll being missing, or a crash with “Faulting module name: MFReadWrite.dll” referenced.

We found various online references to Logitech software, or the Citrix Receiver causing the issue, none of which applied to us. We did eventually realise that the version of Windows deployed on the laptop was the “N” edition of Windows 8.1.

The “N” editions of Windows were created following the European Commission ruling in 2004. Microsoft were forced to create an alternative version of Windows for European customers without Windows Media Player included – which is what the “N” denotes. Not having WMP means some of the recording components that Lync needs are missing.

Fortunately, it’s an easy fix. KB2835517 offers the download of the “Media Feature Pack” for 8.1 which replaces these components, and recording worked correctly once installed.

LS User Replicator Event 30011

Here’s a quick little fix for an issue seen at a customer.

They have an empty forest root domain, as this was once considered good practice for security reasons (to protect the schema and isolate highly privileged accounts/groups such as Enterprise Admins) and they have stuck with it since. Lync is deployed in the child domain, with no rights into the root.

They were seeing an error like the following the the event logs, every 20 minutes:

Log Name: Lync Server
Source: LS User Replicator
Date: 08/08/2013 14:18:56
Event ID: 30011
Task Category: (1009)
Level: Error
Keywords: Classic
User: N/A

Encountered an unrecognized error while processing objects from a domain. This error caused User Replicator to abort synchronization of this domain. Synchronization will be retried for this domain. If this domain is not enabled for Lync Server, then this error can be ignored.

Domain: (DN: DC=customer,DC=net) Error: 50 (Insufficient Rights) ReplicationType:AddressBookReplication.
Cause: The cause for this error can vary. Please review the errors listed above.
Resolution: Contact support services if the error is not descriptive enough to remedy the problem.

The reason for the error is that by default, the User Replicator looks for all domains and tries to sync with them. User Replicator is the component that looks at Active Directory and pulls information into the Lync user database, ensuring any changes in AD (such as a user’s display name) are also reflected in Lync. With no rights in the root domain, it cannot read any information and errors.

Easily fixed however, via the Set-CSUserReplicatorConfiguration cmdlet:

Set-CsUserReplicatorConfiguration -Identity global -ADDomainNamingContextList @{Add=”dc=childdom,dc=customer,dc=net”}

Change the last part to reflect the distinguishedName (DN) of your user domain(s). By default, the list of contexts is empty – setting one or more will tell the User Replicator to just look at those.

Lync learning resources

I’m doing some studying around Lync topics, with the aim of passing the Lync MCITP. Here’s a quick summary of resources I’ve found, and I’ll update as and when I find more.


Two exams make up the MCITP: Microsoft Lync Server 2010 Administrator certification. It’s worth visiting the pages for the exams to understand the requirements for each, and reviewing the “Skills Measured” to ensure you have a good grasp of each topic.

Exam 70-664
Exam 70-665

Lync Jump Start training

Some excellent free training from Microsoft – a total of 5 days worth of webcasts, specifically covering what’s expected for the exams, as with the official training courses. Good mix of lecture/slides and practical lab-based demos. All downloadable in a variety of formats so perfect for keeping a laptop or tablet for commutes.

Deploying Lync for the 70-664 exam
Designing Lync for the 70-665 exam

Product Documentation

Lync, like most Microsoft products, is extensively documented on Technet. This is really the definitive place to visit to learn more about a specific feature.


I’ve been reading Mastering Lync Server 2010 by Nathan Winters and Keith Hanna which is proving an excellent guide, especially when a Technet explanation goes over my head. It is available from Amazon UK and Amazon US.


While building your own virtual lab for Lync is a great learning experience, it can be useful to dive into someone else’s to look at a specific feature. This is also great if you don’t have a computer capable of running several virtual machines.

The Microsoft Virtual Hosted Platform Hands On Labs are excellent, there are 10 scenarios for Lync Server 2010, click to start and a virtual environment is created for you, with clear lab notes to follow.


Quite a few other people have blogged useful stuff about the exams, often linking direct to Technet content specific to expected exam topics. These can make for a useful reference for subjects you might have forgotten!


Microsoft’s Channel 9 site is a fantastic resource – all the content from previous TechEd conferences and similar events is made available there. There are lots of sessions to watch including some deep dives into specific features, often presented by the people who make the product – it can be a nice break from the books if you need more understanding of a particular feature or role. Like the Jump Start series, most are available in a variety of formats to download so ideal to keep handy for when you have some time.

Samsung netbook – brightness control

Came across this on the Samsung N210 Plus I bought for a trip coming up. Did the usual updates, patching, etc and the brightness control stopped working. Came across various articles and forum threads saying that it was the Samsung Easy Display Manager software and to reinstall it.

Well that didn’t help at all. What did help was installing an older version of the Intel graphics drivers. A big thanks to ArdeX of the SammyNetbook forums for posting that info.

DcDiag crashes when running tests

I’d not seen this one before, so figured it was worth noting for the future.

When performing an AD healthcheck, I tend to run the DcDiag tool like so:

dcdiag /e /c /v /f:dcdiag.log

This tests all servers in the enterprise (e), does comprehensive tests (c), produces verbose output (v), and logs to a file.

However, my dcdiag.log was getting cut off before it even got to the DNS tests – they ended up 21k in size where 100k+ is normal. Running it without logging to file showed it was crashing and events were getting logged. Doing a plain “dcdiag” it would run OK. This was on a pretty plain Windows Server 2003 domain controller.

The events logged were fairly generic 1000 ones, along the lines of:

Faulting application dcdiag.exe, version 5.2.3790.1830,
faulting module msvcrt.dll, version 7.0.3790.3959, 
fault address 0x00038efa.

Thankfully I had internet access and with some googling, I came across this blog post from Tim Bolton, which described the issue.

The culprit is a SP1 version of DcDiag, on a server upgraded to SP2. Once the correct version of the Support Tools was downloaded and installed, it ran just fine.