LCS 2014 v0.0.0.5 Released

Hello, firstly please let me thank you all for downloaded the previous releases of LCS. It really has come on leaps and bounds with your help. I am now pleased to announce that version is now available to download!

However – you will first need to remove the old versions ( or less) before you install the new version.. The previous setup packaging app I was using caused far too much pain, so I have abandoned it for an MSI build.

Going forward any future updates should be a lot less painless to install. This also gives better ability for roll out via GPO. fixes a hand full of bugs in the file handling methods, and also backs up the license key used to save constant re-entry. also brings with it a collection of new and exciting features, including a status specific personal note and location settings!

LCS 2014


  • Custom Status – This application eases the pain of creating 4 custom status options for the Microsoft Lync Client. Rather then just telling your contacts you are away or busy, you can now give them more insight into what you are on with.
  • Linked Personal Notes – Now when you switch to a status, a predefined personal note will also apply
  • Linked Locations – Now when you switch to a status, a predefined location will also apply
  • Automated(Canned) Responses – Upon selecting a custom status, the application is capable of intercepting conversation requests and replying (automatically) with your predefined response.
    • Exception Lists – Sometimes you don’t want your automated responses going to every contact in your list, the application works with a list of predefined addresses which it won’t respond to.
    • Frequency of response – Much like Microsoft Outlook, you can prevent (if you want) the recipient receiving multiple copies of your ‘canned’ response in a 24 hour period. Alternatively, you can set the app to reply every time.
  • Tools – The application also contains a tool set for some often required ‘tweaks’/file manipulations to resolve some of the niggles we come across in our Lync environment.
    • Lync Cache Cleaning – Lync caches information locally to aid with performance, this can often cause delays when information is updated on other clients or centrally.
      • Photo Cache Cleaning – The application enables the end-user to ‘point and click’ clear down the Lync Client photo cache. Very useful when diagnosing photo synchronisation issues.
      • Contact Cache Cleaning – The application enables the end-user to ‘point and click’ clear down the Lync Client Contact cache cleaning. This saves having to remove all the users login information, but often helps clear spurious contact list issues. Such as people’s status’ being listed incorrectly.
    • Appear Offline – The application gives the end-user the ability to enable a hidden Lync feature, the ability to appear offline.. This is especially useful if you are out of the office and need to make calls, but do not want to receive calls/IM’s
    • Force GAL Download – The application enables the end-user to override the delay of download for the GAL, very handy during a rebuild of an end users machine.
    • Backup GAL – The application makes backing up the local copy of the GAL a point and click process. This comes in handy when migrating a user from one machine to another.

As always, please let me know if you discover any bugs – or have suggestions for features. If you already have a key for the app you can download the MSI here .. If you don’t yet have a key please use this link:



Read More

Lync Custom Status 2014 BETA

LCS 2014

A newer version is now available from here

Here it is!

The very first public BETA release of my latest project.. I decided to build this application to add a little ‘Je ne sais quoin’ to the Microsoft Lync client status selection. I am a big fan of the Microsoft Lync product, and unified communications.. However, as those close to me will know – I am a big fan of automation. Which is when the idea for this app was born..

So.. What does it do.. Well, check out the details below! Please remember this is an extremely early public release BETA. It’s in its early stages, and I still have BIG plans for this app.


Read More

Automated Lync Dial testing using

Today I was asked if it would be possible to ‘Automate’ the repeated dialling of a SIP contact, this was in order to try and replicate and resolve an issue with a headset and lync.

So I cam up with this, and thought I should share it in case others find it useful.

The code below commences dialling after the command button is pushed, and each time the other party hangs up the App starts dialling again. Simple but effective.

If you use the code, or figure out a better way of doing it drop me a message using the comments section below.

Read More

Subscribe to Lync contact information changes in

So I recently took on another Lync related challenge in .NET, one that required notification of a Lync contacts information change event.

This was a lot easier then what I thought it would be, thanks in part to the Microsoft.Lync.Model.Contact class. The following code will fire as soon as a contacts information has changed.

Imports Microsoft.Lync.Model.Conversation
Imports Microsoft.Lync.Model

Dim _Client As LyncClient
Dim _contact As Microsoft.Lync.Model.Contact

Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        _contact = _Client.GetClient().ContactManager.GetContactByUri("INSERT SIP URI HERE")
        AddHandler _contact.ContactInformationChanged, AddressOf _contact_ContactInformationChanged
End Sub

Private Sub _contact_ContactInformationChanged(sender As Object, e As ContactInformationChangedEventArgs)
'Insert code to execute on detected changes
End Sub

This event will not only fire on an online/offline switch event but also capability of device should a contact switch from one device to another.

Hope you find this of some use.

Read More

Handle Lync Audio/Video ModalityStateChanged with

da57591e-7377-46d3-959c-005816e755c4So todays challenge was around handling the ModalityState change on the Lync 2013 client. The ModalityState change event happens during certain stages of Lync calls, and client actions. The ModalityState is part of the Microsoft.Lync.Model.Conversation namespace. We are using it to configure certain custom Lync Status’ dependant of the current state of the client.

To capture and handle these events, you need to create and event handler for the conversation manager namespace and for ModalityStateChangedEventArgs. The code below is written in VB.Net but could easily be transferred to C# etc.

In my example, I am only interested in the AudioVideo modality state changes.

Imports Microsoft.Lync.Model
Imports Microsoft.Lync.Model.Conversation
Imports Lync = Microsoft.Lync.Model.Conversation

Public Class frmMain
    Private _LyncClient As LyncClient
    Public WithEvents _ConversationMgr As Microsoft.Lync.Model.Conversation.ConversationManager
    Public WithEvents _conv As Conversation

    Private Sub MainWindow_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            _LyncClient = LyncClient.GetClient()
            _ConversationMgr = _LyncClient.ConversationManager
        Catch generatedExceptionName As ClientNotFoundException
            MessageBox.Show("client is not running")
        End Try
    End Sub

    Private Sub _ConversationMgr_ConversationAdded(ByVal sender As Object, ByVal e As Microsoft.Lync.Model.Conversation.ConversationManagerEventArgs) Handles _ConversationMgr.ConversationAdded
        AddHandler e.Conversation.Modalities(ModalityTypes.AudioVideo).ModalityStateChanged, AddressOf AVModalityStateChanged
    End Sub

    Private Sub AVModalityStateChanged(ByVal sender As Object, ByVal e As ModalityStateChangedEventArgs)
        Select Case e.NewState
            Case ModalityState.ConnectingToCaller
                'Insert your code here
            Case ModalityState.Connecting
                'Insert your code here
            Case ModalityState.Joining
                'Insert your code here
            Case ModalityState.Transferring
                'Insert your code here
            Case ModalityState.Disconnected
                'Insert your code here
            Case ModalityState.Disconnecting
                'Insert your code here
            Case ModalityState.Forwarding
                'Insert your code here
            Case ModalityState.OnHold
                'Insert your code here
            Case ModalityState.Suspended
                'Insert your code here
        End Select
    End Sub

So as you can see, it’s quite a simple concept – which holds lots of potential!

Read More