Home » Posts tagged 'lync 2013' (Page 2)

Tag Archives: lync 2013

Lync 2013 – DHCPUtil.exe error MSVCR110.dll is Missing when running config script

In order to use Lync Phone Edition devices on your network you must configure DHCP options to support Lync Phone deployment. Lync 2013 has a nice little script that can configure a windows DHCP server with the correct options. This is located on the Lync Front End server in c:\program files\common files\microsoft lync server 2013 directory. The 2 files you need are

  1. DHCPUtil.exe
  2. DHCPConfigScript.bat

Copy these to your DHCP server.

To configure the DHCP server open Command Prompt and go to the directory where you copied these files. From there run the following command

dhcputil.exe -SipServer lyncpool.domain.com -WebServer lyncpool.domain.com -RunConfigScript

You may get an error message saying the MCVCR110.dll is missing. This is a C++ runtime dll. You can install the C++ runtime if you want but a quicker way is to copy the following files from a server that has this already installed (like the front end). You will need 2 dll files

  1. MSVCR110.dll
  2. MCVCP110.dll

Copy these files to c:\windows\system32 folder on your DHCP server and re-run the dhcputil command.

For convenience I have included the 2 DLL files in this post below


Lync 2013 Complete Lab Guide Using Single Public IP Address – Part 3 – Building the PBX

In Part 2 we built the raw components for a Lync deployment. Before we create Lync we first need a PBX system if we are going to use enterprise voice. The PBX chosen for this lab is Elastix 2.5 which is an open source pbx system available for download here: http://www.elastix.org/index.php/en/downloads.html

In order to process calls to and from the PSTN we will also need a hosted SIP account with an online SIP provider. For this lab I have chose to use SIPGATE as the sip provider, http://www.sipgate.co.uk

Please sign up for your own account with them. It is free to sign up and use the service for inbound calls. You can also make calls to freephone numbers without charge, so is perfect for testing a simple EV deployment with Lync.

This part assumes that Elastix has been installed to PBX01, configured with the IP address and you have your Sipgate account information.


Lync 2013 Complete Lab Guide Using Single Public IP Address – Part 2 – Building the Pre-requisites

In Part 1 we covered the basic physical, virtual machine and networking setup. In this section we will build the domain, install certificate services, office web apps server and exchange 2013. Please note that these setup processes will not be a deep dive step by step guide and will expect you to have a base knowledge of all technologies discussed.

Building the Domain

On the VM DC01 install Active Directory Domain Services and DNS roles. Once installed promote DC01 to a domain controller. Remember to name your Active Directory Domain the same as your external Public domain name. Once promoted reboot the server and continue to configure DNS. There are several DNS records internally required for Lync 2013 and these need creating manually in the AD DNS Zone. Add the following DNS records to the AD Zone:


Lync 2013 Complete Lab Guide Using Single Public IP Address – Part 1 – Setting Up the Lab

The following guides will walk you through setting up a complete, fully functional Lync 2013 Standard Edition deployment complete with Enterprise Voice, Remote Access, Mobility and Exchange Integration. Before we embark on this it is important to understand that this is for Lab purposes only and should not be used in any production deployment.

At times this guide will deviate from Microsoft Best Practices in order to achieve the end goal of emulating a deployment in the real world. I think it is a good idea to outline these now before we start so that you are aware

Guide Liberties

  • We will be using only 1 public IP address instead of the minimum recommended of 2 for the simple reason, I only have one
  • We will be installing the Lync Edge Server in the same LAN segment as the front end server because my lab kit does not support multiple network segments
  • We will be using non standard ports for some services in order to achieve a fully featured environment
  • We will be using our own Certificates from the Internal CA for external access because I am not spending money on proper certificates in a Lab

To begin this Lab, lets start with the basic requirements


Lync 2013 Edge Server Prerequisites

To install the required server roles for a Lync 2013 Edge server, run the following in Powershell

Add-WindowsFeature Windows-Identity-Foundation

Lync 2013 Front End Server Prerequisites

To Install Lync 2013 required server roles use the following powershell

Add-WindowsFeature RSAT-ADDS, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Http-Tracing, Web-Basic-Auth, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Scripting-Tools, Web-Mgmt-Compat, Telnet-Client, BITS, Desktop-Experience -Source D:\sources\sxs
Add-WindowsFeature Windows-Identity-Foundation

Please note you will need the Server 2012 setup disk mounted in D to install Net Framework 3.5 features

Presence Status Not Displaying in Outlook 2013 when using Lync 2013 Client

When installing Lync the other day I came across an issue where certain users could not view presence status of users in Outlook 2013. When investigating this I found that all users had the exact same version of Office 2013 with the same updates but some users were seeing presence just fine. I concluded that it must be a common issue with the local machines rather than the Lync server so I began to try and find the common link between each affected user. It turned out that the users affected were part of the Cisco Voice team. I also found that each of these users had Cisco Jabber installed, or had been installed at one point.

It turns out that it was a user profile issue where the Cisco Jabber whether it was installed or not had been set as the Default IM App Provider. This is read by Outlook 2013 to determine presence.

In order to resolve this I needed to change this. I found the offending registry key

HKCU/Software/IM Providers

Change the DefaultIMApp String Value from Cisco Jabber or whatever it is to Lync

Restart Outlook and presence will be shown.

If you have to modify this for a large number of users then perhaps a user logon script to address this would be a better approach

reg delete "HKEY_CURRENT_USER/Software/IM Providers" /v DefaultIMApp
reg add "HEY_CURRENT_USER/Software/IM Providers" /v DefaultIMApp /t Reg_sz /d Lync

Obviously the user executing this script should be able to modify the registry. As it is HKCU there should be no massive issues in doing this

Adding Locations to Lync 2013 without using E911

Automatic setting of users location in Lync is controlled by the users subnet and the lync location database. The location database can only be accessed using Lync Management Shell. Microsoft supported process is to configure location policies with E911. However, if you are not in the USA like me E911 is pretty much useless. Fortunately, you can use the location database independently and without any location policies in Lync. By entering subnet and site data directly into the database you will ensure that if the subnet the lync client is on is listed in the location database this will be automatically updated when the user signs in.

To achieve this create a csv file called subnets.csv with column headers of Location, Subnet, City and CompanyName

Fill out the location column with the site location name you want e.g “HQ”, the Subnet will be (it only works with /24), City Name and the Company Name

UPDATE FEB 2015 – I have created a simple webpage that will generate the CSV file for you. Working on large deployments with /8 subnets can be quite tedious to display all the /24 subnets within this range. So 10 minutes of PHP coding I was able to save hours of pain. http://www.hostedhouse.co.uk/subnets.php 

Then use this Powershell Script to update the Lis Database

$File = "C:\subnets.csv" $Log = New-Item -ItemType File -Path "C:\subnetlog.txt" -Force
#Import csv $sitecsv = Import-Csv -path $file -Delimiter ','
#Check if user file is empty. if ($sitecsv -eq $null) {  write-host "No subnets Found in Input File"  exit 0 }
#Get total number of users in CSV file and begin processing.
$count = $sitecsv | Measure-Object | Select-Object -expand count
Write-Host "Found " $count "subnets to import." Write-Host "Processing subnets.....`n" $index = 1
ForEach ($site in $sitecsv)
Write-Host "Processing subnet " $index " of " $count -ForegroundColor Cyan $location = $site.Location $subnet = $site.Subnet $city = $site.City $company = $site.CompanyName
#Check subnet exists. Log if they are NOT.
$checksubnet = Get-CsLisSubnet | Where-Object {$_.Subnet -eq "$subnet"}
if ($checsubnet -eq $null) { $notinad = $true
Set-CsLisSubnet -Subnet "$subnet" -Location "$location" -City "$city" -CompanyName "$company"  Write-Host "Location Added Successfully" -ForegroundColor Green
else { $notinad = $false
Write-Host "User " $subnet " is is already added to database." -Foregroundcolor white -BackgroundColor Red Add-Content -Path $Log -Value "$($subnet) is already added to database."
$index++ }
Write-Host "Importing of subnets from CSV completed! Now publishing Dataabase Config"
Write-Host "Completed"

Adding Pictures to Active Directory

I came across this challenge when installing Lync 2013 where a customer did not have Exchange 2013 and therefore unable to us HD pictures in Lync and Exchange. Prior to Exchange 2013 the only way to import pictures is to use Active Directory to store the image. Storing images in AD have specific requirements. The format must be .jpg or .gif and the image size must be no more than 48×48 pixels. There is a cool image resizer tool that someone has made compatible with windows 7 (it works for windows 8 too) https://imageresizer.codeplex.com/releases/view/30247 Anyway to achiever my goal I created a CSV file which includes the column headers ADUserName and Picture. In the ADUserName column add the samAccountName of the user and in the Picture column add the literal location of the picture you want to use e.g c:\pictures\user.one.jpg

The rest is done by PowerShell

#change parameters here
 $Log = New-Item -ItemType File -Path "C:\ADPictureLog.txt" -Force
 $File = "C:\ADPictures.csv"
 #Import csv
 $usercsv = Import-Csv -path $file -Delimiter ','
#Check if user file is empty.
 if ($Usercsv -eq $null)
  write-host "No Users Found in Input File"
  exit 0
$count = $Usercsv | Measure-Object | Select-Object -expand count
Write-Host "Found " $count "Users to import."
 Write-Host "Processing Users.....`n"
 $index = 1
ForEach ($User in $Usercsv)
 Write-Host "Processing User " $index " of " $count
 $ADUserName = $User.ADUserName
  $UserPicture = $User.Picture
 $CheckAD = Get-ADUser -Identity $ADUserName
 if ($CheckAD -eq $null) {
  $notinad = $true
  Write-Host "User " $ADUserName " is not found in AD. Double check spelling, etc." -Foregroundcolor Red
  Add-Content -Path $Log -Value "$($ADUserName) is not found in AD. Double check spelling, etc."
else {
  #import photograph
  $Photo = [byte[]](Get-Content $UserPicture -Encoding byte)
  Set-ADUser -Identity $ADUserName -Replace @{thumbnailPhoto=$Photo}
  Write-Host "User: " $ADUserName " Photo has been updated with " $UserPicture " Ok"
  Add-Content -Path $Log -Value "$($ADUserName) has been updated with a photograph $($UserPicture)"
 Write-Host "Picture Updates have been Completed"
 Add-Content -Path $Log -Value "End of Log"

Skype for Business – Enabling Bulk Users

During a Lync 2013 install of over 2000 seats I had to enable bulk groups of users for Lync enterprise voice, PC to PC and Remote Call Control together with different pool assignments and policies. I created a script that would read from a user completed CSV file and enable users with the specified policies and pool associations.

The CSV file must have the following column headers and saved as LyncUsers.csv

ADUsername Pool LineUri SipAddress ClientPolicy ConferencePolicy DialPlanpolicy Voicepolicy ExternalAccessPolicy

The LineURI should be in format of tel:+441870123456;ext=987

The SipAddress should be in the format of sip:useralias@domain.com

If policies are not defined the default policies will be applied

For the script this is in a word document as this website does not allow .ps1 files to be uploaded. please copy the script contents to a notepad file and save with the .ps1 extension


%d bloggers like this: