D(one) IT

IT Tips, Tricks & Such

Category Archives: Tools

Lync Pilot Deployment Health Analysis Tool

The Lync Pilot Deployment Health Analysis Tool is a hidden gem in the Lync 2013 Rollout and Adoption Success Kit (RASK: http://www.microsoft.com/en-us/download/details.aspx?id=37031). This tool is designed to display key indicators of the Lync Server infrastructure health. Used to assist in proactively identifying common failure codes and a snapshot of the overall call quality. The original version was part of the Lync 2010 Pilot Success kit (PSK: http://www.microsoft.com/en-ca/download/details.aspx?id=34965).


  • Lync Server 2013/2010
  • Monitoring Role
  • Call Detail Records (CDR) & Quality of Experience (QoE) data capture policies
  • Excel 2010/2013 (with Macros enabled)
  • Minimum SQL permission for User running the tool is db-datareader for LCSCdr and QoEMetrics databases


Using the Analysis Tool

  1. Launch the correct version of the Analysis Tool, depending on deployed Lync Monitoring Database version being connected to (Located in the Operations folder in the RASK).
  2. Setup tab
    1. SQL Server: Name of the Lync Monitoring Database SQL server and named instance if used. i.e. SQL01\LyncMon
    2. Use Windows Security: Select “Y” if using Windows intergrated Security or “N” for SQL authentication from drop-down.
    3. User ID: Username for SQL authentication. *Field only used if “N” is set for “Use Windows Security”
    4. Customer Name: Organization name displayed on generated charts.
    5. Monitoring Server URL: Location of monitoring server reports deployment. Used for clickable related report links on data analysis pages. i.e. http://sql01/ReportServer_LYNCMON/
    6. Start Date: Defines the start date for SQL queries. Default is four weeks prior to current date.
    7. End Date: Defines the end date for SQL queries. Default is current date.
    8. Queries: You can choose to run SQL queries individually or all at once.
    9. Refresh Charts: Used to update charts manually after copying/pasting data into raw data tabs. *See Documentation Appendix for SQL Queries to export raw data using SQL Server Management Studio.
    10. LPDHA-4

  3. Reliability Report tab
    This tab shows the session success rate for each modality (Application Sharing, Audio, File Transfer, IM and Video) for peer-to-peer sessions and conferences. The Session Success Rate is determined by dividing the number of unexpected failures by the number of sessions for a given week then subtracting that failure rate from 100%.
  4. Diagnostic_Comparison tab
    This tab shows the most frequently occurring failures in the deployment. This helps pinpoint deployment issues by listing diagnostic IDs of unexpected failures to be researched.
  5. Call_Quality_Comparison tab
  6. Diag_Summary_RawData tab
    This tab is used for storing data returned from SQL queries used in the Diagnostic_Comparison and Call_Quality_Comparison tabs.
  7. Quant_Analysis_RawData tab
    This tab is also used for storing data returned from SQL queries used in the Diagnostic_Comparison and Call_Quality_Comparison tabs.
  8. AudioDevicesByUser_RawData tab
    This tab is not used in any chart generation but provided as additional data to help troubleshoot identified issues. The data contains which devices users are using for calls and the number of calls with audio problems.
  9. AvgPacketLoss_By_Subnet_RawData tab
    This tab is also not used in any chart generation but provided as additional data to help troubleshoot identified issues. The data contains network statistics for each of the subnets that calls have been initiated or received.

Vaddio A/V Bridge

Vaddio A/V Bridge provides the ability to integrate soft codecs like Lync and Skype into traditional A/V designs. http://www.vaddio.com/product/av-bridge
The A/V Bridge supports USB or IP streaming for Capture, Content Delivery or PC Conferencing applications and works with most A/V equipment.


In the box:


  • AV Bridge
  • Pair of Rack Mounts
  • 18 VDC Power supply with AC power cord for North America
  • USB 2.0 Cable
  • Four rubber feet
  • Guide and Manual


  • Video Input Detect indicator
  • LCD Display
  • Menu Navigation (Rotary Knob, Select and Cancel buttons)
  • Mute Controls (Video and Audio Mute buttons)
  • Audio Level Control (Rotary Knob)
  • Power/Reset (button)
  • Input LED indicators (Current Video and Audio input selection and signal characteristics)


  • Power (5.5mm 0D x 2.5mm barrel)
  • DIP Switches (Factory Reset)
  • RS-232 Port (RJ-45)
  • USB Interface (USB 2.0 Type-B)
  • Network Interface (10/100 RJ-45)
  • Video Inputs (HDMI, BNC, HD DB-15)
  • Audio Input (XLR [Balanced], RCA [Unbalanced])


  1. Connect AV Bridge to Network and Power Supply
  2. Find IP: Bridge uses DHCP by default and IP is visible on LCD Display
  3. Use a web browser to the access Bridge Management Tool (Default user: admin, Default password: password)
  4. Current version: 1.2.0
  5. Update firmware: 2.0.1
    1. Download AV Bridge Update (ZIP): http://www.vaddio.com/images/document-library/av-bridge-web-update-complete-2.0.1.zip
    2. Apply Update: System tab in Management Tool, Browse to downloaded update (ZIP), click “Begin Firmware Update and click “Continue” on warnings”
  6. Connect AV Bridge to PC:
    1. Connect Video Content Source(s) ***Note: Audio is not received over HDMI***
    2. Connect Audio Content Source(s)
    3. Connect PC (USB Cable)
    4. Auto install of USB drivers from Windows Update


  • AV-Bridge is now listed as a Microphone device within the Lync Audio Device options
  • UVC Camera is now listed as a Video device within the Lync Video Device options
  • A Video call functions in the same way as a normal web camera
  • If Video signal input is lost to the Bridge or Video Mute button is pressed, the SMPTE Color bars are shown.


  • vaddio_skype_call

Web Management Tool:

  • A/V Configuration
  • Streaming (Firmware 1.2 does not have IP Streaming Settings)
    • v1.2
    • v2.0
  • Labels
  • Networking
  • Security
  • Diagnostics


  • Software Clients
    • Lab Tested
      • Cisco Jabber
      • WebEx
      • Skype
      • Adobe Connect
      • Microsoft Lync
      • GotoMeeting
      • Vidyo Desktop
      • Polycom M100
      • Lifesize ClearSea
      • Google Plus
      • Panopto
    • Field Tested
      • IOCOM
      • Radvision Scopia
      • Apple FaceTime
      • Blackboard
      • Tegrity
      • Echo 360
      • USTREAM
      • Livestream
      • PresenterPro
      • Microsoft Expressions Encoder 3
      • VCON
      • AVAYA One
  • Media players (IP Streaming [HLS and RTSP]):
    • QuickTime
    • VLC Media Player
    • Real Player
  • Operating Systems
    • Windows 7
    • Windows XP SP3
    • MAC OS
    • Linux
  • Web Browsers
    • Internet Explorer 8+
    • Safari Rev 4 and 5
    • Chrome
    • Firefox
  • Supported UVC Resolutions
    • Resolution, Frame Rate, Aspect Ratio
    • 1280 x 720, 15/30, 16:9
    • 960 x 544, 15/30, 16:9
    • 704 x 576, 15/30, 4:3
    • 640 x 480, 15/30, 4:3
    • 640 x 360, 15/30, 16:9
    • 424 x 240, 15/30, 4:3
    • 352 x 240, 15/30, 4:3
    • 320 x 240, 15/30, 4:3
    • 352 x 240, 15/30, 4:3
    • 320 x 180, 15/30, 16:9
  • RGBHV/DVI Supported Resolutions
    • 1360 x 768 @ 60Hz – WXGA
    • 1280 x 800 @ 60Hz – WXGA
    • 1280 x 768 @ 60Hz – WXGA
    • 1280 x 720 @ 60Hz – WXGA
    • 1024 x 768 @ 60Hz – XGA
  • HDMI EDID Forwarding
    • 1080p/60/59.94/50/frames/s
    • 720p/60/59.94/50Hz frames/s
    • 1440 x 900@60Hz
    • 1360×768 @ 60Hz
    • 1280×800 @ 60 Hz

With a MSRP of ~$2000 this inexpensive A/V Bridge allows the ability to sweat Legacy Audio & Video Conferencing equipment assets and tie into PC based software using standard UVC/UAC USB standards.

Expresso – Free Tool to Build Advanced Regex in Lync

Normalization rules in Lync use .Net regular expressions (regex) to specify how phone numbers in various formats are matched to patterns and translated to the E.164 format. (http://technet.microsoft.com/en-us/library/gg399071.aspx)

The Lync Server Control Panel provides a normalization rule builder, which helps walk through the process of creating basic regular expressions covering most scenarios. The normalization rule builder’s wizard lets you specify the pattern to match (starting digits/length) and translation rule (remove and/or add digits).


The builder is not meant for advanced regular expressions and the wizard is disabled once advanced items are added to the pattern to match.


Thanks to my colleague Dan Berry which pointed me to Expresso: http://www.ultrapico.com/expresso.htm
Expresso is a free download tool for building and testing regular expressions, it does require registration (free registration code) after 60 days.


Expresso Features:

  • Analyzes and describes your regular expression in a tree structure
  • Display all matches in a tree structure, showing captured groups, and all captures within a group
  • Build complex regular expressions by selecting components from a palette
  • Test expressions against real or sample input data
  • Maintain and expand a library of frequently used regular expressions

Also located on the site is additional Regular Expressions Resources: http://www.ultrapico.com/Resources.htm

TechNet Lync downloads and updates page redesigned

While browsing TechNet I noticed the Lync 2013 downloads and updates pages has been redesigned, now including items for Lync 2010 and OCS 2007 R2. http://technet.microsoft.com/en-us/lync/dn146015.aspx

Old Layout:

New Layout:

Some missing items:

Let me know if you notice other missing items.

Lync Connectivity Analyzer fails to open

I came across an issue where a fresh install of the Lync Connectivity Analyzer (http://technet.microsoft.com/en-us/library/jj907302.aspx) on Server 2012 wouldn’t launch. Looking in the Event Viewer I found the following errors.

Event: ID 1026
Source .Net Runtime
Application: LyncConnectivityAnalyzer.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.InvalidOperationException

Event: ID 1000
Source: Application Error
Faulting application name: LyncConnectivityAnalyzer.exe, version: 5.0.8308.289, time stamp: 0x5113842c
Faulting module name: KERNELBASE.dll, version: 6.2.9200.16451, time stamp: 0x50988aa6
Exception code: 0xe0434352

I tried the Lync Connectivity Analyzer on my Windows 8 desktop (known to be working) and had the same issue.

System Requirements for the Lync Connectivity Analyzer
•Windows 7 Service Pack 1, Windows 8, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Vista Service Pack 2
•Microsoft .NET Framework 4.5

This led me to believe a patch for .NET 4.5 might be the cause. After removing the July patches KB2840632 & KB2833958, I was able to launch the Analyzer again. Another user reported that just removing KB2840632 will resolve the issue.

Details of the KB2840632 Security Update: http://support.microsoft.com/kb/2840632

Updated Lync Connectivity Analyzer: http://blogs.technet.com/b/nexthop/archive/2014/01/21/announcing-the-release-of-the-updated-lync-connectivity-analyzer.aspx

Call Via Phone app Advanced review

With SNOM’s Enhanced Better Together being demonstrated at WPC 2013: http://www.snom.com/en/news/archive/article/2013/en/snom-to-demonstrate-pc-pairing-%E2%80%9Cbetter-together%E2%80%9D-features-on-its-microsoft-lync-qualified-desktop-phones-at-wpc-2013/ and availability being most likely end of 2013. I figured it would be a good time to post my review of the Call Via Phone Advanced. A 3rd party Better Together type application for Lync and SNOM phones which is currently available.

The Call Via Phone application comes in two editions (free and paid) and works with Lync 2010 and 2013.

After installing the Call Via Phone application from the MSI, the Lync client will now have a new item in the Tools drop down.

To configure the application enter the SNOM phone IP address, the Username/Ext, Password/Pin and Save. Note: Username/Password should be the account that can administer the SNOM phone’s web interface.


The freeware version is pretty straight forward which gives the ability to right click a contact and click “Call Via Phone”, this will establish the call on your SNOM phone.

The Advanced version will show an options menu after clicking “Call Via Phone”.

After clicking the number to contact, the call is answered on the SNOM phone and a popup menu with Phone Call commands for the active call will be displayed.

You can type in a number and click “Add Call”, this will establish a call to the added number and display additional commands like Transfer and Conference.

Originally the Call Via Phone application was just for outgoing calls. I reached out to Gianluca the author of the application and made some suggestions. A few emails later I had an updated version 1.5.6, that could handle incoming calls! Note: Account on the SNOM phone should be the same account signed into Lync to allow for incoming functionality.

In the “Call Via Phone” Configurator there is an option to “Activate” the Incoming Call via Phone service.

This creates a system tray icon that catches incoming call events and appears next to the Lync toast.

After clicking “Answer By Phone”, the call is answered on the SNOM phone and a popup option menu with available Phone Call commands for the active call will be displayed.

Benefits of Call Via Phone vs Enhanced Better together:

  • Can be made to work with other IP Phone vendors (Cisco, Polycom, Grandstream, 3CX, Yealink)
  • Doesn’t not require Lync user to have Enterprise voice for Outgoing call functionality
  • No windows driver protocol limitations, allows for future customization (Programming Phone keys, full interaction with any functionality available on the Phone)

For more info reach out to sales@callviaphoneapp.com

Outlook 2010 thumbnailPhoto in Active Directory

While testing Outlook 2010 on Exchange 2010, I found the GAL now supports photos (out of the box… almost)

Requirements (GAL Photos in Exchange 2010 and Outlook 2010):

  • Outlook 2010 (Note: Exchange 2010 OWA doesn’t retrieve AD photos).
  • AD forest upgraded to support 2008 domain controllers (adprep, not Function Level).
  • Modify the thumbnailPhoto attribute in AD schema to replicate to the Global Catalog.

Uploading photos into AD can be done using the Exchange cmdlet: Import-RecipientDataProperty, but is limited to a max 10k photo size.

Import-RecipientDataProperty -Identity Michael -Picture -FileData ([Byte[]]$(Get-Content -Path "S:\Staff_Photos\Michael.jpg" -Encoding Byte -ReadCount 0))

I came across this free tool: ADPhotoEdit which can push the size limit to 100k and has a pretty awesome gui. There is a paid version which includes bulk features.

Update: Outlook 2003-2007 can access the thumbnailPhoto if  the Outlook Social Connector is installed and the thumbnailPhoto property in OAB is changed from an indicator to a value. (Updating OABDeploying OSC)

Collection of freeware tools

FreeMind – free mind mapping software

FreeMind is a Java-based, cross-platform mind mapping software.

“A mind map is a diagram used to represent words, ideas, tasks, or other items linked to and arranged around a central key word or idea. Mind maps are used to generate, visualize, structure, and classify ideas, and as an aid to studying and organizing information, solving problems, making decisions, and writing.” – Wikipedia

Download: http://freemind.sourceforge.net

Boxee Box web remote

I created a simple web remote to control the Boxee Box.

(Limited due to api: http://developer.boxee.tv/Remote_Control_Interface )

ML Boxee Box Web Remote: Download

Note: changing the commandiframe to display:block; will show the the iframe used to send the commands. If the api command is successful, an “OK” is displayed.

I put most of the code into just the one html. This web remote will work launched right from a folder on a pc or off a hosted web server (not the boxee box). Most remotes I found, had you replace the boxee web server files, which is locked down on the boxee box.

remote.html (click “show source” below)

<!DOCTYPE html>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title>MAJL Boxee Remote</title>
<STYLE type="text/css">
 	background: url('images/nav.jpg') no-repeat 0 0;

a 				{text-decoration:none;

div#preload { display: none; }

#commandiframe	{position:absolute;
	font-family:Helvetica, Arial, sans-serif;

#inputfields	{position:absolute;
	font-family:Helvetica, Arial, sans-serif;
	border:5px solid #c5e2a0;

#up {position:absolute;
  	width: 97px;
 	height: 80px;
 	background:url('images/up.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#up:visited, #up:hover, #up:active{
  	width: 97px;
 	height: 80px;
	background:url('images/up_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#down {position:absolute;
  	width: 97px;
 	height: 80px;
 	background:url('images/down.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#down:visited, #down:hover, #down:active{
  	width: 97px;
 	height: 80px;
	background:url('images/down_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#left {position:absolute;
  	width: 80px;
 	height: 97px;
 	background:url('images/left.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#left:visited, #left:hover, #left:active{
  	width: 80px;
 	height: 97px;
	background:url('images/left_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#right {position:absolute;
  	width: 80px;
 	height: 97px;
 	background:url('images/right.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#right:visited, #right:hover, #right:active{
  	width: 80px;
 	height: 97px;
	background:url('images/right_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#pause {position:absolute;
  	width: 97px;
 	height: 97px;
 	background:url('images/pause.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#pause:visited, #pause:hover, #pause:active{
  	width: 97px;
 	height: 97px;
	background:url('images/pause_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#mute {position:absolute;
  	width: 64px;
 	height: 64px;
 	background:url('images/mute.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#mute:visited, #mute:hover, #mute:active{
  	width: 64px;
 	height: 64px;
	background:url('images/mute_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#selecta {position:absolute;
  	width: 97px;
 	height: 97px;
 	background:url('images/select.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#selecta:visited, #selecta:hover, #selecta:active{
  	width: 97px;
 	height: 97px;
	background:url('images/select_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#selectb {position:absolute;
  	width: 97px;
 	height: 97px;
 	background:url('images/home.jpg') no-repeat 0 0;
  	padding: 0px 0px;

#selectb:visited, #selectb:hover, #selectb:active{
  	width: 97px;
 	height: 97px;
	background:url('images/home_press.jpg') no-repeat 0 0;
  	padding: 0px 0px;

function toggle() {
	var ele = document.getElementById("settings");
	var text = document.getElementById("displayText");
	if(ele.style.display == "block") {
    		ele.style.display = "none";
		text.innerHTML = "Device";
	else {
		ele.style.display = "block";
		text.innerHTML = "Hide";

function linkGenerator(commands){
	frames['debug'].location.href= 'http://' + document.getElementById('userIP').value +':' + document.getElementById('userPort').value + '/xbmcCmds/xbmcHttp?command=' + commands;

<div id="preload">
	<img src="images/nav.jpg" width="1" height="1"/>
	<img src="images/mute.jpg" width="1" height="1"/>
    <img src="images/pause.jpg" width="1" height="1"/>
    <img src="images/up.jpg" width="1" height="1"/>
    <img src="images/select.jpg" width="1" height="1"/>
    <img src="images/left.jpg" width="1" height="1"/>
    <img src="images/right.jpg" width="1" height="1"/>
    <img src="images/down.jpg" width="1" height="1"/>
    <img src="images/home.jpg" width="1" height="1"/>
    <img src="images/mute_press.jpg" width="1" height="1"/>
    <img src="images/pause_press.jpg" width="1" height="1"/>
    <img src="images/select_press.jpg" width="1" height="1"/>
    <img src="images/home_press.jpg" width="1" height="1"/>
    <img src="images/up_press.jpg" width="1" height="1"/>
    <img src="images/left_press.jpg" width="1" height="1"/>
    <img src="images/right_press.jpg" width="1" height="1"/>
    <img src="images/down_press.jpg" width="1" height="1"/>

  <div id="settings" style="display:none">
    <form id="inputfields">
	<input id=userIP type="text" size=15 name="IPvalue" value="BoxeeBox" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;"/>
	<input id=userPort type="text" size=5 name="Portvalue" value="8800" maxlength="5">

		    <div id="navigation">
		    <a id="displayText" href="javascript:toggle();">Device</a>

			<div id="up" onClick ="linkGenerator('SendKey(270)')"></div>

			<div id="down" onClick="linkGenerator('SendKey(271)')"></div>

			<div id="left" onClick="linkGenerator('SendKey(272)')"></div>

			<div id="right" onClick="linkGenerator('SendKey(273)')"></div>

			<div id="selecta" onClick="linkGenerator('SendKey(256)')"></div>

			<div id="selectb" onClick="linkGenerator('SendKey(257)')"></div>

			<div id="mute" onClick="linkGenerator('Mute()')"></div>

			<div id="pause" onclick="linkGenerator('Pause()')"></div>

			<div id="commandiframe">
			    <a href=""></a>