Over the past year or so I have written many blog posts regarding Unified Service Desk (USD) for Microsoft Dynamics CRM. The thing with blogging is you 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!)

I’ve partly done this to help people who are trying to extract any gems of knowledge that might be hidden within my blog. But mainly this has been an exercise for me to help identify any gaps in my content and therefore to provide me with blogging ideas for the next “n” months.

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.

A friend of mine recently suggested we co-author a book on Unified Service Desk, I’ve never written a book so the idea felt “crazy”. You never know this post might give me the inspiration I need to turn these random snippets into a real book. J

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

  • Theory
  • Hosted Controls
  • Actions
  • Events
  • Agent Scripts
  • Toolbars
  • Window Navigation
  • Interactive Service Hub
  • JavaScript / Scriptlets
  • Releases / Installation Instructions / Configuration
  • Just Random Cool Stuff! (Maybe my best bits!)


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
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? June 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. June 2016
USD Demo(Video) A demo video for my USD interface plus a text description can be found here. Jan 2016
Notes (Video) Video demo of implementing notes in USD Feb 2016
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

Hosted Controls

Everything in USD needs a hosted control, they are the objects that build a USD solution. 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. March 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
CloseActive How to close the active tab when using the multiple pages option April 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 April 2016
ClearDataParameter How to use the ClearDataParameter action to remove data parameters from memory. April 2015
Close How to use close action to close tabs Nov 2015
CloseSession Example of using CloseSession action in an agent script Oct 2015
CopytoClipboard How to use the CopytoClipboard action. March 2016
CopyToContext How to copy “stuff” to the context. March 2016
DisplayMessage The display message action March 2016
DoRoute How to debug with the DoRoute action. March 2016
Event Timers How the StartEventTimer and StopEventTimer actions can be used. June 2016
ExecuteOnDataAvailable How to use the ExecuteOnDataAvailable action March 2016
ExecuteOnExpressionTrue How to use the ExecuteOnExpressionTrue action March 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. March 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? June 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
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
Update Owner using UpdateEntity How to update the owner on an entity using an UpdateEntity action March 2016
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. March 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? April 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. March 2016
Agent Scripts, conditions How to use conditions within agent scripts March 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
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. March 2016
Bing Maps How to load Bing Maps in a new tab March 2016
Show Case Resolutions The window navigation needed to show case resolution actions in a FloatingPanel March 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

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. June 2016
ISH entity navigation How to create sessions and open tabs from Interactive Service Hub June 2016
ISH, Not! How to navigate to traditional CRM pages from the Interactive Service Hub dashboards June 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 June 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. April 2016
Return results from a RunXrmCommand How to use a RunXrmCommand to return results that can be used as data parameters in USD. March 2016
RunXrmCommand to SetFocus How to use a RunXrmCommand to set focus on a field in a CRM form. March 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 / Installation 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 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 April 22016
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. April 2016
Check USD Versions How to check your USD version and use the ShowAbout action April 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

Just 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
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. April 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. April 2016
maxNumberOfSession How to use the maxNumberOfSessions option to limit the number of sessions. March 2016
Knowledge Base Search How to implement a knowledge base search in USD March 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

Filed under: Unified Service Desk Tagged: crm2016, Unified Service Desk, USD