USD – The Book

Over the past few years I have written many blog posts regarding Unified Service Desk (USD) for Microsoft Dynamics CRM. The thing with blogging is you often create posts in a random order with no sense of a purpose or direction. I therefore wanted to take stock by organising my USD posts into one group. (or book if you like!)

This isn’t a real book! It hasn’t got a proper beginning, middle or end. But hopefully this “book” will help make some sense out of my often random musings. Generally speaking, my posts are simply examples of how to do things and have no sense of a wider purpose. As my posts are random they may not all fit into neat buckets but I will do my best to group them logically.

USD – The Book


I have broken my “book” down into the following sections (or Chapters if you like);



I guess you could consider these posts to be the introduction to my book. As they cover the theory behind various aspects of Unified Service Desk. Maybe with a smattering of my personal opinions for good measure.

Title Summary Date
USD Overview An overview of USD. A blog post I created for CRMUG to give an overview of USD. Jan 2017
Why? Why would you want to use USD? Nov 2015
When? When would be a good time to use USD? Oct 2015
Is your contact centre ready for USD? An opinion piece about the product cycle of USD and its maturity. Should it now be the product of choice for contact centres? Jun 2016
Window Navigation Rules Theory Many people have asked me questions about window navigation rules! They seem to confuse some. So this post tried to explain the theory behind them. Jun 2016
USD Demo(Video) A demo video for my USD interface. Jan 2016
Notes (Video) Video demo of implementing notes in USD. Feb 2016
Notes A description of how to implement notes in USD Oct 2015
How to create your first global tab Probably the first USD customization you will make! Nov 2015
Do Search How to implement searching for data in USD. Nov 2015
Toolbars 101 Everything you need to know about toolbars. Oct 2015
Replacement Parameters What do the symbols in replacement parameters mean? Oct 2015
Using the Debugger You WILL need how to use the debugger; I explain it in this post. Oct 2015
Debugger Enhancements Debugger enhancements introduced at version 2.2 Dec 2016
Configuration Option Configuration option, how this can be used to give different users a different USD setup. Feb 2017



Hosted Controls

Everything in USD needs a hosted control, they are the objects that build a USD solution. Think of them as the bricks that build the house. But often my posts won’t have focused on “just” a hosted control. As a hosted control with no actions, events or window navigation rules doesn’t provide much excitement. But any posts specific to hosted controls will be listed here.

Title Summary Date
Hosting Type (WPF or IE?) Which type is best? Spoiler alert, it is IE Process!! May 2016
Session Timers How to use / configure the session timer USD hosted control. Mar 2016
Multiple Pages How to use the “multiple pages” option on hosted controls. Feb 2016
Split Panels How to split panels within a tab. Feb 2016
Floating Panels How to use display group of FloatingPanel on a hosted control Jan 2016
Debugger Hosted Control How to setup the debugger Nov 2015
Standard Web Pages Display any web page in USD Oct 2015




When configuring USD “actions” are used to “do” anything and everything. These posts therefore give examples of “stuff” you can do with actions.

Title Summary Date
AssociatedView Use the AssociatedView action to show an associated view. Oct 2015
AssociatedView – Cases Use the AssociatedView action to show an associated view. With an example that focuses on showing the case associated views. Jul 2016
CloseActive How to close the active tab when using the multiple pages option Apr 2016
CloseActivity (and other actions) How to use the CloseActivity action to close a phone call activity. And how to make use of ExecuteOnExpressionTrue and ExecuteOnTimeout actions Apr 2016
ClearDataParameter How to use the ClearDataParameter action to remove data parameters from memory. Apr 2015
Close How to use close action to close tabs Nov 2015
CloseSession Example of using CloseSession action in an agent script Oct 2015
CloseSession (All Session) How to use CloseSession to close all sessions. Dec 1016
CloseSession (Ping/Pong) How to use CloseSession to close all sessions. Using a PING/PONG loop! Dec 1016
CopytoClipboard How to use the CopytoClipboard action. Mar 2016
CopyToContext How to copy “stuff” to the context. Mar 2016
CreateSession An example using the CreateSession action.

In this example I start a session containing a webpage from a toolbar button.

Jul 2016
DisplayMessage The display message action Mar 2016
DoRoute How to debug with the DoRoute action. Mar 2016
Event Timers How the StartEventTimer and StopEventTimer actions can be used. Jun 2016
ExecuteOnDataAvailable How to use the ExecuteOnDataAvailable action Mar 2016
ExecuteOnExpressionTrue How to use the ExecuteOnExpressionTrue action Mar 2016
LaunchURL An example of how the LaunchURL action can be used to load webpages outside of USD. June 2016
MoveToPanel How to use the move to panel to move tabs around. Nov 2015
New_CRM_Page Create a phone call with the New_CRM_Page action Feb 2016
New_CRM_Page, Opportunity How to use the New_CRM_Page action to create an opportunity Oct 2015
Realign Window How to use the realign window action. Mar 2016
Refresh, My Work How to use the Refresh action but conditionally when a tab is selected. (For example, the “My Work” tab.)

Note: This post was an improvement on an earlier approach shown here.

May 2016
RunXrmCommand RunXrmCommand Explained Oct 2015
SaveSetting An example of how you can use the SaveSetting action. It writes user settings to the USD configuration as runtime but how can that be useful? Jun 2016
ScanForDataParameters How to use the ScanForDataParameters action Feb 2016
SetTheme, Change title How to use SetTheme to change the window title Nov 2015
SetTheme, simple Use SetTheme to pick one of the standard theme options Oct 2015
SetLanguage How to use the SetLanguage option to spell check notes in other languages. Dec 2016
SetUserCanClose Allow or prevent users from closing tabs Oct 2015
SetVisualProperty Examples of how to use the SetVisualProperty action Feb 2016
SetVisualProperty, expand / collapse panels Examples of how to use SetVisualPropety to expand and collapse panels. Nov 2015
SetWindowProperty How to maximise the USD screen using the SetWindowProperty action Nov 2015
Translate (and DetectLanguage) A definition of the Translate and DetectLanguage actions. Including a step by step guide for a working example. Jan 2017
Update Owner using UpdateEntity How to update the owner on an entity using an UpdateEntity action Mar 2016
WorkOn and LookupQueueItem A description of how to use the WorkOn and LookupQueueItem actions whilst working with queues. Jan 2017
Sub Actions A description of how sub actions operate in USD Oct 2015




Technical description …. events in USD are triggered or fired whenever “stuff” happens! Many posts will touch on events but any listed here will have a specific focus on them.

Title Summary Date
SessionCloseRequested How to use the SessionCloseRequest event to validate items and prevent session closure. Mar 2016
RefreshRequested The RefreshRequested event explored. Jul 2016
RefreshRequested Case Example An example of how RefreshRequested event might be useful on a case form. Jul 2016



Agent Scripts

Agent scripting in USD allows us to guide the agents work by offering questions to ask the customer and then giving a list of possible answers. Selecting answers will then make “stuff” happen within USD.

Title Summary Date
Agent Scripts A description of how agent scripts operate in USD Oct 2015
Create an Agent Script Explanation on how to create an agent script Oct 2015
Start a dialog from an agent script CRM dialogs are often used in a standard CRM interface to guide the work of agents. What-if you combine dialogs and agent scripts? Apr 2016
Open CRM page from an agent script How to have an agent script answer to support creating an entity. Oct 2015
Linked Tasks Linked tasks allows one answer to “link” to other answers. May 2016
Extra Actions Details of the ClearHistory and RegisterVisitedAnswerList actions. At the time of writing this post these were undocumented actions. May 2016
Customer Verification An example of how you might use a agent script to confirm customer identity. Mar 2016
Agent Scripts, conditions How to use conditions within agent scripts Mar 2016
Start Tasks Explained What is a start task and how would you use it? Oct 2015
Agent Scripts, different for each user How to give different operators different scripts. Oct 2015




Toolbars in USD allow us to create menus and sub menus. The “buttons” on these menus can then do “stuff”. We can associate these toolbars with the main USD navigation or individual tabs. (Providing navigation toolbars.)

Title Summary Date
Generic Toolbar Buttons An example of how a generic toolbar can be re-used on multiple hosted controls. May 2016
Toolbar create and view cases How to create cases from a toolbar and show associated case views. Nov 2015
Back, Forward and Refresh Buttons How to create a toolbar with back, forward and refresh buttons. Oct 2015
Create a “Home” button in a toolbar Create a “Home” button in a toolbar Nov 2015



Window Navigation

Loading windows (tabs) in USD is kind of at the heart of everything connected with developing a user interface aimed at contact centre operators. These posts are all connected with window navigation rules in one form or another.

Title Summary Date
Email Attachments A post describing how to create window navigation rules when adding attachments to emails. Aug 2016
Open a session from a session How to use navigation rules when we want to open a session from within a session. May 2016
Create Session with an “In Place” route Typically, we use a pop-up route to create a session, this post explains how an in place route can also open a session. May 2016
Multiple tabs for one entity How to load the same entity in multiple tabs in USD. May 2016
Show Outside How to use the Show Outside action in window navigation rules. Mar 2016
Show Outside (URL) How to show a url in Internet Explorer outside of USD. Sept 2016
Bing Maps How to load Bing Maps in a new tab Mar 2016
Show Case Resolutions The window navigation needed to show case resolution actions in a FloatingPanel Mar 2017
Prevent Navigation An example of how to stop things loading in USD Jan 2016
Load account and primary contact An example of how to use search and window navigation combined. And alternative approach is shown here. Dec 2015
Example Window Navigation Rules Some examples of my rules to demonstrate how window navigation works. Dec 2015
Create a new session The theory on creating a new session. Oct 2015
Load Associated Views, on create session An example of how to load an associated view at the same time as creating a new session. July 2015



Interactive Service Hub

The interactive service hub offers a rich interface ideally suited to helping service agents prioritise and complete service calls. A perfect extension to USD! These posts show how this feature can be leveraged in a USD context.

Title Summary Date
ISH Dashboard How to load the Interactive Service Hub Dashboards into a USD tab. Jun 2016
ISH entity navigation How to create sessions and open tabs from Interactive Service Hub. Jun 2016
ISH, Not! How to navigate to traditional CRM pages from the Interactive Service Hub dashboards. Jun 2016
ISH, URLs How to construct the URLs you will need to address elements of the Interactive Service Hub. Jul 2016



JavaScript / Scriptlets

Within USD we can use scriplets to inject code snippets, we can also use RunScript and RunXrmCommands to run JavaScript linked to hosted controls. Plus we can have JavaScript within CRM forms / web resources that reference USD. All of these posts provide examples on these subjects.

Title Summary Date
A simple scriptlet An example of how to create a scriptlet, my first scriptlet Nov 2015
Call events from JavaScript An example of how to call a custom USD event directly from JavaScript within a CRM form Jun 2016
RunXrmCommand and Quick Create Forms I found a “challenge” with the RunXrmCommand! After a quick create form form had been displayed it stopped working. This posts describes a solution. May 2016
JavaScript, refresh command Not directly a USD post! But within USD being able to refresh a form like this might be useful. May 2016
Window.IsUSD How to tell in JavaScript that the CRM form is being run from USD. Apr 2016
Return results from a RunXrmCommand How to use a RunXrmCommand to return results that can be used as data parameters in USD. Mar 2016
RunXrmCommand to SetFocus How to use a RunXrmCommand to set focus on a field in a CRM form. Mar 2016
Website or Google How to use a scriptlet to display an accounts website or search for one. Nov 2015
Scriptlet to resolve case tab name Scriptlet to resolve case tab name Nov 2015
Select Forms A method to select which form is presented to a user for any CRM entity Oct 2015



Releases / Install Instructions / Configuration

As releases are made public I have completed posts. Also included are some notes on installing USD.

A word of warning, most of USD has remained consistent with each release but the installation process has evolved. So some of my older posts could now be considered out of date!

Title Summary Date
Version 2.2.1 The release of USD version 2.2.1, includes a summary of new features. Feb 2017
Version 2.2 Version 2.2 Released, the new features described here. Dec 2016
Version 2.1.0 The release of USD version 2.1, and a new upgrade approach! May 2016
Version 2.0.2
The release of version 2.0.2 Apr 2016
Version 2.0.1 The release of version 2.0.1 Feb 2016
Version 2.0 – Server Install Install routine for version 2.0 (server) Dec 2015
Version 2.0 – Client Install Install routine for version 2.0 (clients) Dec 2015
Log Files How to enable verbose USD log files. Apr 2016
Check USD Versions How to check your USD version and use the ShowAbout action Apr 2016
Standard Audit How to use audit options in USD Jan 2016
Configuration Migration (Trick) A “trick” on how to install your configuration. Nov 2015
How to install a CRM2015 version of USD How to install a CRM2015 version of USD Nov 2015
Config Migration Hot to export and import your configurations between organisations Nov 2015
USD System Requirements USD system requirements. Nov 2015
A blank install, without a sample solution How to create a blank install of USD Nov 2015
Installing sample applications Notes on how to install sample applications, this approach has now been improved but the basic concept remains. Nov 2015
Installing USD clients How to install the USD client Nov 2015



Random Cool Stuff!

I have found it hard to classify some of my posts! I have included these in this section. Maybe a little random but hopefully you’ll find some cool nuggets of information here!!!

Title Summary Date
Phone call from Toolbar How to create a toolbar button that when clicked will create an inbound phone call activity and open in a session. Aug 2016
Multi Entity Search How to implement multi entity search functionality in USD. Jul 2016
Advanced Find How to implement CRM Advanced Find functionality in USD. May 2016
Create Phone Call (Saved) How to create a phone call and open it in USD from an agent script. Apr 2016
Create new contact from a toolbar An example of how to create a contact from a toolbar button and open in a new session. Apr 2016
maxNumberOfSession How to use the maxNumberOfSessions option to limit the number of sessions. Mar 2016
Knowledge Base Search How to implement a knowledge base search in USD Mar 2016
Change USD logo How to change the USD logo Feb 2016
CTI, generic listener The theory and example of how to use the generic listener for CTI integration Jan 2016
Google maps
How to implement google maps in USD Nov 2015
Announcements How to use CRM announcements in USD. Nov 2015
Intranet Show your intranet in USD Nov 2015
Options How to use USD options Nov 2015
Twitter How I implemented Twitter functionality in USD Nov 2015
LinkedIn How I implemented LinkedIn functionality in USD Nov 2015
Optionally show the debugger How to only show the debugger to your developers! Nov 2015
Icons USD ships with numerous icon files, I list them here Nov 2015
Faster load times Cache changes to speed the time it takes USD to load. Oct 2015
Create a Session Overview An example of how to create a session overview. Oct 2015
Case Research Options How to add Google and Bing search to help resolve cases Oct 2015
Send Emails Create a toolbar button to send emails. Oct 2015
Show Wall in right panel How I showed the CRM wall web resource in the right panel. Oct 2015
URLs This isn’t really a USD post! But I often find I need to construct URLs to access CRM forms in USD. This post explains how those URLs work. Jan 2016
Prevent Close Window Dialog How do we stop the often annoying “webpage you are viewing is trying to close the window” dialog? Sep 2016
Prevent Close Window Dialog How do we stop the often annoying “webpage you are viewing is trying to close the window” dialog? Nov 2016
Notifications USD 2.2 contains a cool new feature to pop-up notification forms, in the blog post I will explain how this new feature works. Dec 2016
Branding A new feature with Microsoft’s Unified Service Desk 2.2 is the ability for developers to modify the login and splash screen to apply your own name / branding. Dec 2016
Show Buttons Based on Security Role An example of how to show / hide buttons based on a users security role. Feb 2017



USD on Video

Embedded in some of my posts you will find demo videos. Also I have a YouTube Channel, here I list all of the videos from my YouTube Channel.

Title Summary Date
Demo A demo of how Unified Service Desk for Microsoft Dynamics CRM might be used in a contact centre environment. Dec 2015
Notes A clip showing how to use and configure notes within Unified Service Desk for Microsoft Dynamics Feb 2016
Verification A quick demo of verification agent script described in my blog working. You can see that post here. Mar 2016
Open Sessions from Sessions Demo of how to open a session from a session in Unified Service Desk (USD) for Microsoft Dynamics CRM. See the related post here. May 2016
Interactive Service Hub Combine Interactive service hub dashboards for CRM 2016 with Unified Service Desk. See how here. Jun 2016
USD, Field Service and ISH Combined A demo showing how you might want to integrate Microsoft Dynamics CRM, Field Service and the interactive service hub (ISH) together in one interface. (aka USD) Oct 2016
Save and re-open a session In this video I demonstrate how to save an entire session in USD and then reopen. Something that might be useful if you want to return to a session later or pass your work onto another user. See the blog post here Nov 2016
Translate Action In this video I show a working example of the Translate action. See the blog post here Jan 2017
WorkOn and LookupQueueItem Actions Here I explain the WorkOn and LookupQueueItem actions. See the blog post here Jan 2017
Quick Start Video A video giving a quick start guide, aimed at showing you how to quickly create your first application. Feb 2017


USD Basics Video Tutorial

Everyone has to start somewhere! In this section I will provide a series of videos designed to help get you started with USD. Each module will build on the previous providing a “complete” solution by the end of the training.

Title Summary Date
Module 1 – What is USD? Introduction explaining what USD is and its main components. Aug 2016
Module 2 – Installing USD How to install USD. Aug 2016
Module 3 – First Global Tab Create your first tab in USD to display your CRM homepage. Aug 2016
Module 4 – Create a Search Toolbar Create a toolbar with an option to search for contacts and accounts Aug 2016
Module 5 – Create a Session Create a session from the search function. Aug 2016
Module 6 – Associated Views Create a tab containing associated view of cases. Aug 2016
Module 7 – Open Tabs in Sessions Using window navigation rules to open tabs in sessions. Aug 2016
Module 8 – Notes and Navigation Toolbar Create ability to take notes and add to entities from a navigation toolbar. Augt 2016
Module 9 – Agent Scripts Create a simple agent script. Aug 2016
Module 10 – Debugger Setup and use the debugger. Aug 2016
Module 11 – Migrate Changes How to export USD configuration from one organisation and import into another. Aug 2016


WorkOn and LookupQueueItem

16 thoughts on “USD – The Book

  1. You should look at Leanpub –, it lets you create a book and release it as you go and get feedback.

    It allows people to read it as mobi/epub and they can subscribe to the book to be alerted when new chapters or updates are made

    Then when it’s finished you can sell it to a publisher

    Liked by 1 person

  2. Pingback: Learning Unified Service Desk | Microsoft Dynamics CRM and Unified Service Desk

  3. Pingback: USD – Complete Basic Training Guide | Microsoft Dynamics CRM and Unified Service Desk

  4. Pingback: USD – Basic Training Module 11 | Microsoft Dynamics CRM and Unified Service Desk

  5. Pingback: USD – Show Outside (URL) | Microsoft Dynamics CRM and Unified Service Desk

  6. Pingback: New Year’s Eve 2016 | Microsoft Dynamics CRM and Unified Service Desk

  7. Hi Neil,

    I am Venkatesan. Need your kind help regarding couple of USD tasks.

    1) We need to show confirmation message on closing(X out) USD application. We can able to achieve this for session or tabs. Issue is on X-out.

    2) I can able to add users in USD configuration and based on that I can able to show/hide Hosted controls/Toolbar Buttons based on logged in user. Issue is I cant able to add team but the functionality is not working. We need to achieve with team.

    Please give your suggestion on this as it would be great for us to move forward.


    • Hi Venkatesan

      Firstly thanks for reading my blog and also for askign two great questions. Both of these are issues I have seen before. But unfortunately I haven’t got an ideal answer for you.

      1. You are right that we can detect when sessions close or tabs close. And then show notifications etc. BUT when you “X out” of USD no events get triggered. And therefore all sessions close abrutly with no events to allow us to control what happens. This has caused me “pain” in two projects!

      2, You are right we can use configuration to control who sees what. And that this is a user level. I have often wanted to achieve this at a team level or based on security roles. But the configuration option does not support that. I have sometimes used user options for this type of control, rather than configuration. But it is a still on a user by user basis. I haven’t tried this ….. but I guess we could try to read the users roles when USD loads, copy that into context and then add conditions to various actions. I think something along those lines would work but isn’t the most elegant solution.



  8. Hi Neal,

    I am trying to get the older version of the USD i.e. 2013SP1 where the lots of data was readily available. Now with this new deployer we do not have any data. Can we get the older deployer from somewhere?

    How to create the Account, Contact these kind of hosted controls, so that I can have the list of the records of these entities to show in USD.

    I tried Advance find post from your blog but it did not worked for me. I do not have the account hosted control in CRM.

    Could you help me out here.



    • I haven’t actually tried with a CRM version that old, I simply don’t have a CRM2013 server! But my understanding is your should be able to use the latest packagedeployer to install the current version of USD with CRM 2013. (If you do please confirm if my assumption is correct as I am unable to test!)

      As a test, when you deploy you can install sample packages. These might not be right for production use but should contain some examples you can review. Including showing how to display lists of accounts and open in sessions from the list.

      Try looking at this video, it might help get you started.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s