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
Why? Why would you want to use USD Nov 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
USD Demo(Video) A demo video for my USD interface. Jan 2016
USD Overview An overview of USD. A blog post I created for CRMUG to give an overview of USD. Jan 2017
When? When would be a good time to use USD? Oct 2015
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
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 V3.0 Debugger enhancements introduced at version 3.0 Aug 2017
Debugger Enhancements V2.2 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
Best Practice Analyzer The Best Practice Analyzer explained. Feb 2017
Actions when tabs are loaded How do I only run actions when a particular tab is loaded? Sep 2017
Browser Choice We have multiple options available to use for browsers in USD. But which is the “best” one??? Apr 2019



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./td> Dec 2016
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
CreatEntity, RunAsync Use RunAsync on your CreateEntity. Mar 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
ExecuteOnExpressionTrue How to use the ExecuteOnExpressionTrue action. Mar 2016
ExecuteOnDataAvailable How to use the ExecuteOnDataAvailable 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
Popup To load Dynamics 365 outside of USD! In this example I show how to use a Popup action. This example is actually a cool approach to popping up Dynamics 365 and loading it outside of USD. Jun 2017
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
SetReplacementParameter Set global replacement parameters using SetReplacementParameters April 2018
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
Sub Actions A description of how sub actions operate in USD Oct 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




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
SelectedAppChanged Here I explain how to ScanForDataParameters when the selected page changes. Useful when using multiple pages in a tab. Jul 2017



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
Switch Agent Scripts How to automatically switch agent scripts as tabs are selected. May 2018




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
Toolbar Positions Toolbar positions, what locations can we use for toolbars??? Jun 2017
Toolbar Shortcut Keys Toolbar shortcut keys Sep 2017



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.

Note: As the ISH has been replaced from Dynamics 365 V9.0, I do not recommend using ISH with USD.

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



Unified Client Interface

The Unified Client Interface is the new standard for Dynamics 365 forms. (As of V9.0.) Unified Service 3.3 and later supports the Unified Client Interface.

Title Summary Date
RunXrmCommands RunXrmCommands work differently with UCI. I explain how in this post. May 2018
USD and UCI Unified Client Interface May 2018
Search (UCI) Unified Client Interface and multi-entity search July 2018



Omni-channel Engagement Hub

The Omni-Channel Engagement Hub provides omni-channel capabilities directly in Dynamics 365. Additionally it includes enterprise grand routing and also works with Unified Service Desk!

Title Summary Date
Introduction Omni-channel Engagement Hub, my initial thoughts. May 2019
Video Demo Omni-channel Engagement Hub – Video demo. May 2019



CafeX, Live Assist

CafeX provide a product called Live Assist that adds web chat (and more) into Unified Service Desk.

Title Summary Date
My Initial Install A description of how to install Live Assist from CaféX. Including a few pointers on issues I had to fix. Apr 2017
Live Assist, Hosted Controls, Actions etc As I deployed Live Assist from CafeX into my USD solution I documented as much information I could about the configurations made in USD. Apr 2017
Campaign and Engagement Theory In this post I highlight some of the concepts I’ve discovered around campaigns and engagements. Apr 2017
Video Demo A video demo of Live Assist and Unified Service Desk. May 2017
SendMessage An example of how to use the SendMessage action to automatically generate chat messages. Jun 2017
Pre-chat Surveys How to use Live Assist pre-chat surveys in USD. Jul 2017
My First Bot My first BOT! An example of how to create a bot and include in Live Assist. Nov 2017
Automatically Set Availability Automatically set availability of agents within USD. Feb 2018



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
IsUSD – Alternative Approach How to tell in JavaScript that the Dynamics 365 form is being run from USD. This alternative approach may resolve any challenges found with Unified Interface or Chrome Process. Aug 2018
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
Execute Actions from JavaScript An explanation of how to create JavaScript code that will execute USD actions. Apr 2017



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 4.0 Version 4.0 released, including full UCI support and web client to UCI migration tool. Aug 2018
Version 3.3 Version 3.3 released, including preview UCI support and Best Practive Analyzer. May 2018
Version 3.2.0 Version 3.2.0 released, including faster loading of Dynamics 365 pages. Feb 2018
Version 3.1 The release of USD version 3.1. Includes support for Dynamics 365 v9. Nov 2017
Version 3.0 The release of USD version 3.0. Includes an enhanced debugger, prefetch and much more… Aug 2017
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 How to export and import your configurations between organisations. Nov 2015
Configuration Migration (from v9.0) A updated post explaining how to migrate your configuration from one organization to another. Includes a few tips along the way! Jan 2018
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
IE Option – InternetExportPooling Improve form load times with InternetExplorerPooling option Mar 2018



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
Phone call, closeWindow This post includes an updated version of how to correctly close / refresh the phone call tab when you mark them as completed. Apr 2017
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
Email Templates How to use email templates in USD. Jun 2017
Open Regarding Open regarding entity automatically. An example of loading the regarding contact / account when a phone call opens. Jul 2017
Outbound Phone Calls From a List Outbound phone calls from a list, how to have a list of “my phone calls” and automatically load the next call. Sep 2017
USD and PowerApps How to use PowerApps in USD Mar 2018
USD Crashing USD crashes because of multiple tokens error. Oct 2018
Resolve Case Resolve case from an agent script. Oct 2018



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
CafeX, Live Assist Demo A demo of Live Assist working with Unified Service Desk. May 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


USD Exams

USD is now included as a topic in the Microsoft certifications. Below are some useful revision guides.

Title Summary Date
MB2-718 – USD (Part One) MB2-718 exam (Microsoft Dynamics 365 Customer Service) In this post I will begin to explain the concepts around USD. Nov 2017
MB2-718 – USD (Part Two) MB2-718 exam (Microsoft Dynamics 365 Customer Service) In this post I will continue to explain the concepts around USD. Nov 2017
MB2-718 – USD (Part Three) MB2-718 exam (Microsoft Dynamics 365 Customer Service) In this post I will continue to explain the concepts around USD. Jan 2018
MB2-718 – USD (Part Four) MB2-718 exam (Microsoft Dynamics 365 Customer Service) In this post I will continue to explain the concepts around USD. May 2018



42 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.


  9. Hi Neal,

    I’m looking for a way to handle an Chome IFrame instead of IE in the USD. Do you think it’s possible?
    In order to improve the performance of an JavaScript application.



  10. Hi Neil, really enjoy your posts. Thanks for your great efforts getting everyone familiarize with USD and CRM. I have a strange issue and am hoping you can provide some input. I have USD 2.2.2 new environment package imported into Dynamics 365 online. I have system admin access. On any hosted control, any event, the + sign to add action calls is missing. I can create hosted controls, events, action calls, but just can’t associate action calls to events. Can’t seem to find anything online.


    • Thanks, I am glad you like my posts. I haven’t seen the problem you describe! I suggest clearing browser history and also trying a different browser. If you still get issues your next action might need a be a support call to Microsoft.


  11. Hi neil, I am Kevin and i was really amazed and thankful for your tutorials regarding USD. We have a requirement that i am having difficulty.

    1. We have an integration with a telephone company and i follow your article regarding CTI integration and it was working properly, thanks to you. We just have another requirement that involves Marketing List, the marketing list will be exported as excel and will be uploaded to the website of the telephone company we are integrated and will send us script that that has this details, “Telephone Number”, “Marketing List ID”

    2. What the client want is, when a call is received from the marketing list, the agent must automatically determine that the incoming call is regarding the marketing list they uploaded. My initial configuration in USD is I created an activity entity that contains the details of the customer.

    Please contact me via my email I really need your expertise on this. Thank you 🙂


    • Firstly thanks, it is always good to get feedback.

      I think what you describe should be possible but it will need a little thought. Having started the session from CTi you’d need to use DoSearch to search the marketing list for a match. Having found a match you then need to decide what action (or actions) should happen next. Automatically creating and opening a campaign response might be one approach. But you’d also need to be clever and link that to a campaign etc.

      What you need is quite specific and hard for me to give a simple answer.

      Hopefully these pointers help.

      If you need further help we’d need to engage directly. I work for HCL-PowerObjects. I could put you in touch with them if required. (You can email me at



  12. Hi Neil,

    I love your videos, they’re very straightforward and easy to digest all the features and functionalities. I’m just wondering for inbound calls, is USD able to save the audio file and provide a transcript and link of the recording similar to the live assist chat transcript?


    • Thanks and great question. Saving the phone call would not be a usd thing as such! Your telephone system would need to do that bit! Assuming it can pass a location for the recording then usd could be used to add this to the phone call activity. (Which is essentially what happens with live assist.)

      So (I think) my answer is yes but it would depend on the capabilities available in your phone system.



  13. Hey Neil,

    We have a problem with our UnifiedServiceDesk.exe process not terminating when a user clicks out of it. Have you ever seen this behavior? Is there any “OnClose” setting or something we can write to try to help remedy it? Right now, we have to go into Task Manager 90% of the time to stop USD. We are using 32-bit version.


    • Hi Amxim
      I have seen that occasionally this can happen and you need to kill some process in task manager. Normally I have observed that a unified service process is still running. However, I only see this occasionally and normally following an issue.

      It sounds like you are seeing this often.

      If you are using any custom hosted controls I would suspect one of those has an issue and isn’t terminating correctly. This might be hard to track down. Try removing them to see if you can pin point the control causing the issue.

      You mention the 32 bit version, I guess you could try the 64 bit version to see if that helps. But I don’t know of a reason one or the other might cause this.

      I hope these pointers help. Unless you can find the control causing your issue then this could be challenging one to resolve.

      Another, final, suggestion is … have you enabled verbose logs and do these show any errors / issues?



      • I found out the problem. Your assumption was correct! We had created a hidden custom hosted control (a “listener” that was listening for incoming phone calls) that was running on another thread. When closing USD, this would close the “main” thread but not this listener. We created a close event to ensure this hidden hosted control gets removed when the user clicks “X”.


  14. Pingback: MB2-718 Certification: (Microsoft Dynamics 365 Customer Service) – Unified Service Desk (Part Two) | Microsoft Dynamics 365 and Unified Service Desk

  15. Hi Neil,
    Thanks for posting this blog series for all CRM developers. For the beginner and even for experts it helps lot. As we know USD only support IE.
    I am trying to use chrome in USD. I tried lot of thing but nothing works. I know it is not a supported way after any cheat code might help. Because as per my experience Chrome is far far better than IE for Dynamics CRM/365.


    • Hi Santosh

      You are correct that Chrome is not supported with USD. Our only options for browser are Internal WPF or IE.

      I doubt very much that Chrome could be made to work. Even in an unsupported way!



  16. Pingback: MB2-718 Certification: (Microsoft Dynamics 365 Customer Service) – Unified Service Desk (Part Four) | Microsoft Dynamics 365 and Unified Service Desk

    • Hi Markus

      Unfortunately I have never researched face to face training. (As I haven’t needed it!)

      The company I work for HCL-PowerObjects can offer training. So you could approach them. If you are interested try reaching out to Paul Rogers. He should be able to point you in the correct direction. PRogers@hcl-powerobjects.




  17. Pingback: Creating a USD Custom Hosted Control from Scratch - Celedon Partners

  18. Hi Neil,

    This is with reference to one of the problems we are facing. We have an external application displayed inside USD by “Standard Web Application” type hosted control. However, we are facing one weird situation:

    1. User opens the application from Case record.
    2. While the application is still loading, if the user tries to navigate of the tab and comeback again, that page kind of shows endless waiting time to load.
    3. If the user navigates of the tab after the external application is loaded, there is no such issue.

    I find this problem more default to USD native behavior, and wanted to check if you have faced any such problem and possible pointers. Thanks a lot in advance.


    • Hi Sravan

      I haven’t seen that exact behaviour.

      I suggest you first ensure you are using the latest version of USD. (Currently V4.0)

      Next maybe change the external application to another web page. It see if you can prove if the application is the “issue” or any web page.

      Another good test is to simulate what is happening in IE outside of USD. If you start the external application loading directly in IE and you navigate away does is load as expected.

      If you use a refresh action on the tab once you get the endless waiting does the problem resolve? This might not be an ideal suggestion but if this works maybe you could give the users a refresh button to help them resolve if this occurs.

      I hope these suggestions help.



  19. I have a scenario that when i open my USD it will start with empty session with 2 tabs(Dashboard and Search). So when i click a contact record it will open a contact tab on the session. My problem is the session line and session overview doesn’t effect on it. So do you have any suggestion for this?


    • Hi Earvin

      Assuming you have a session overview and session name linked to say the contact entity and another set with no entity that is currently displaying when your first session displays ….

      Firstly, your session name. I have had a similar situation. In that I set the display field to be a sciptley say [[$Scriptlet.Name Sessions]+]. In the scriptlet you can return what the name of the session needs to be. So get that to look at replacement parameters in $Context and return a suitable name. (My scriptlet looks at [[$Context.LogicalName]+] and decides what name to return.)

      The session overview is more complex as your not just returning the name you need full markup xaml. I suspect (guess) the session overview is set as the session starts and doesn’t change. If you simply wanted a contact name to start to display I assume that will be possible. But if the two overviews need to be completely different that might be more of a challenge. Honestly my XAML skills are quite poor!! I assume you’d need conditional text blocks to hide / show.

      FYI: In my application I had a similar issue with the overview on phonecall sessions. As originally I wanted it to change based on what related entity was eventually added. In the end I decided simply to not have an overview for phonecall sessions. (Upside was more screen space for my agent scripts!)

      Hopefully this points you in the right direction.



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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s