Source code release of the Lync communication AddIn for Dynamics NAV 2013

I am glad to announce the availability of the Lync AddIn, and even in source code! This is actually a good sample for an AddIn that has integrates nicely with other fields on a page, yet provides a very custom functionality and rendering.

Originally I had built this AddIn as a showcase for a partner conference. Later we considered to add it to the shipping code in Dynamics NAV 2013, yet as an outcome of our scoping decisions we did not want add it at the end of this release cycle.

In this blog post I want to describe the supported usage scenarios and provide the steps to use the source and integrate the AddIn into a NAV database. A more technical view from an implementation standpoint can be found in this Blog Post.

Please find the download here: LyncCommunicationAddInSample.zip 

But let’s start with the user scenario, this control wants to solve:

Base scenario: Communicate from within Dynamics NAV

As an end user who gets frequently into contact with customers / vendors I like the fact that I can use a unified communication system in NAV to communicate with my customer & vendor contacts. The unified communication system brings together all the communication end points which a contact has published - like mobile & office phone number, IM address and even address for IP telephony and screen sharing.

Monitoring availability / presence

But the real value comes when I see the availability of a contact right in my screen. I can see if a contact is available and if not I can even drag a small communication card out of Dynamics NAV, pin it to my desktop and monitor the availability state. As soon as my communication contact becomes available I will ping him or start a telephone call.

In factboxes I see a smaller view of the presence field but still have the ability of monitoring presence, opening the contact card and starting a communication.

And if I am is not logged in to Lync on the local machine, the field will have the following appearance and the search button will be disabled. This state will automatically update to the standard communication appearance, if I sign into Lync.

On Task pages:

In Factboxes:

 

Finding a communication contact

But how do I find the communication address?

The Lync communication field provides a search functionality, that suggests search input, that is harvested from artifacts from the Dynamics NAV page - like email, Name, Company, etc. With such artifacts or with my own search input I can search for a communication contact in my and connected communication systems - depending on the federation.

But also if I simply type in the live ID address or the yahoo address for a contact that I already know, the contact will be accepted as a communication endpoint, even if the federation for search between the two communication systems has not been full enabled.

Supported communication systems

The supported communication systems on my side is Lync, and whether my company has its own installation of Lync Enterprise or we are using Office 365 with its Lync offering, we are able to communicate with whatever other communication systems have been federated with our instance. This can be for example Yahoo, Live Messenger or other companies using of Lync Enterprise of Office 365.

How to use the source code, build the AddIn, distribute it and integrate it into Dynamics NAV

Please find the download here: LyncCommunicationAddInSample.zip 

Following are the steps to build the Lync AddIn library from the Source Code

  1. Download of the Lync SDK, and run the installation.
     
  2. Open the solution LyncComunicationAddIn.sln in Visual Studio 2013
     
  3. Update references to the Lync controls libraries from the SDK and the Dynamics NAV extensibility library (Microsoft.Dynamics.Framework.UI.Extensibility.dll) from the installed Dynamics NAV 2013 product.
     
  4. The Lync libraries can be found in the Lync SDK directory, by default: 
    “C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\”
     
  5. The Dynamics NAV extensibility library is typically in the following directory:
    “C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\”
     
  6. For the latter reference, make sure that you set the property CopyLocal to false – we do not want this library to be copied to the output directory or even copy it into the Add-Ins directory for the Lync Add-In when we copy it to an installed Dynamics NAV instance.
     
  7. Compile the solution in Release build and identify the output folder under Bin/Release folder. Deploy the libraries and application objects as described below for the compiled AddIn library.

 

Following are the steps to use the Lync communication AddIn based on the compiled AddIn library

  1. Unpack the solution to a directory on your computer.
     
  2. Identify the compiled output in the bin/Release directory of the project directory.
     
  3. Create a directory e.g. named “Lync” in the Client Add-Ins directory, typically “C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\Add-ins\” and copy the content from the output directory there.
     
  4. The redistributable library from the Lync SDK can also be delivered by installing the redistributable installation, which typically can be found in the following place:
    “C:\Program Files (x86)\Microsoft Lync\SDK\Redist\LyncSdkRedist.msi”
     
  5. Register the AddIn in the “Client Add-In” table with the following entry: 

Control Add-in Name

Public Key Token

Version

LyncCommunicationControlAddIn

48f3911b65e24838

7.0.0.0

Finally import the  integration objects in file LyncIntegrationObjects.fob.
These sample app changes for the Lync Integration cover the following changes:

  • Field 200 SipAddress is added to the Customer, Vendor, Contact & Sales Header table.
  • The cards for Customer, Vendor, Contact and Sales Order get each a Lync communication field in the communication fasttab. Code on the page will aside to the SIP address initialize the control for search candidates from other fields.
  • The fact boxes for customer and vendor details also get a Lync communication field with a fact box styled rendering, such that the Lync communication is available through the details page on list places for customers and vendors.
  • The page for the Item Vendor Catalog gets also the Vendor details factbox

 

The content of this package is composed of the Sample code, Distributable code and Third Party Distribution and the covered by the License Terms in file “Lync Communication AddIn SDK License Terms.docx”

  • Sample Code are all files that are referenced by and including in the Visual Studio Solution LyncCommunicationAddIn.sln
  • Distributable code is the built library LyncCommunicationAddIn.dll
  • Third Party Distributionfiles are the redistributable files from the Lync SDK:
    • Microsoft.Lync.Controls.dll
    • Microsoft.Lync.Controls.Framework.dll
    • Microsoft.Lync.Model.dll
    • Microsoft.Lync.Utilities.dll
    • Microsoft.Office.Uc.dll
    • Microsoft.Lync.Controls.Framework.resources.dll (in any of the language subdirectories)
    • Microsoft.Lync.Controls.resources.dll (in any of the language subdirectories)

The redistributable library from the Lync SDK can also be delivered by installing the redistributable installation, which typically can be found in the following place:
“C:\Program Files (x86)\Microsoft Lync\SDK\Redist\LyncSdkRedist.msi”

Christian Abeln
Senior Program Manager
Microsoft Dynamics NAV