In Unified Service Desk, Hosted Controls become a central part for building agent applications. Hosted Control is nothing but a .NET component that is hosted within an agent application.When we deploy USD to a CRM instance we are provided with a list of Hosted Controls which is required to build a general agent desktop which ranges from hosting CRM pages or external web pages and applications. On top of this USD gives us the provision to create our own custom hosted control deriving from the base class DynamicsBaseHostedControl class like other predefined hosted controls.
From one perspective may be the hosted controls can classified as different on top of the different types based on its usage.
- Global Hosted Controls
- Session Hosted Controls
- Dynamic Hosted Controls
First two among three are based on the life cycle of hosted control which the third one is based on the nature how we can manage that. Global Hosted Controls is started when the USD system starts and terminated when the agent exits out of the system. Session based hosted Controls is started when the session starts and is usually terminated when the session ends. Third type of hosted controls which is dynamic in nature allows an agent to start or stop either through UI or programmatically. These can be also either a global or session type, depending on which these dynamic hosted controls can be loaded to either a session or in global.
Now let’s discuss available predefined hosted controls in CRM.
- Connection Manager: Manages all connections to CRM server and makes it available to the rest of agent application. This is a mandatory hosted control for USD to run and we can only create one of such hosted control per USD. While we are creating a hosted control of this type make sure the sort order is set as 1 for this hosted control to ensure that this is the first one to be retrieved and displayed by the agent application.
- Global Manager: Loads and reads all USD configuration data from CRM at application startup, interprets the navigation rules, provides data to toolbar components and agent scripts and manages data for a session. Similar to Connection Manager only one instance of this hosted control is allowed per USD and minimum one is required. If we need to implement multi lingual feature for USD, it is this hosted control which handles that as well. We have to make sure this is having the sort order as 2, to make sure that this is loaded as soon as the connection is established.
- Agent Scripting: Defines a call script that provides instructions to the call center agent during a customer interaction.
- CRM Dialog: We can work with CRM Dialogs in USD using this hosted control.
- CRM Page: Used to load either a url or CRM page. When a CRM page gets loaded within this type of hosted control, the replacement parameters will be automatically populated. This hosted control provides more UII actions which are useful in handling CRM windows like find action for displaying a search or advanced search page.
- CTI Desktop Manager: Plugin a CTI adapter into USD use this hosted control. This will help in scenarios like screen popping, call routing, softphone control and other CTI functionalities.
- Debugger: For configuring a debugger control in USD which provides us with details on the process and code executions in the agent application.
- Interactive Service Hub Page: Can be used to host interactive service hub forms within USD to integrate capabilities of both the applications. This package is introduced in CRM 2016 and USD 2.1
- KM Control: If we need to display any knowledge base articles in CRM or parature in our agent application we can use this hosted control.
- Listener Hosted Control: Helps to configure a custom listener for our auditing, trace logs and diagnostics. This contains a reference to our assembly and class that contains code for custom listener. Unfortunately this doesn’t have any predefined UII actions or events.
- Panel Layout: Hosted controls in USD is hosted in different panels and they are arranged using panel layout. This hosted control defines the arrangement of panels in USD. If we are not defining a hosted control of this type, default panel layout, Standard Main panel is created by the system automatically.
- Session Lines: Overview information for sessions in our agent desktop is read by this hosted control and an instance of this hosted control is required if we need to display an overview of the session.
- Session Tabs: This hosted control is required if we need to have customer dynamics session names for the sessions being created in USD. This hosted control reads the session configurations and makes changes to the session names accordingly.
- Standard Web Application: Similar to CRM Page except that this is for non CRM pages. We can inject scripts to these hosted controls and this is using the same WPF browser component to load web pages.
- Toolbar Container: Agent desktop requires toolbars and for that this hosted control is necessary which display the buttons.
- User Notes: Provides with a scratch pad for the agent to take notes during interactions. This will not automatically take the language of current user. We need to implement that using SetLanguage action.
- USD Hosted Control: Helps in creating custom hosted controls.
- CCA Hosted Application: Helps in hosting external applications in USD and interacting with them using UII adapters.
It is very much required to get hold of these hosted control concept to design a good USD application for agents. Understanding these hosted controls and availablitity or feasibility of each actions or events decide how to desgin and what approach to take. May be that justifies the name for this article.
Hope you enjoyed this !!!