The Unified Service Desk (USD) is a separate installed application, designed for desktop users (that is, there is no online interface), typically customer service agents.
The USD delivers a rich experience to agents, allowing them open multiple windows within a single container—the USD application. In addition, it is an extensible application that can have increased capabilities and features added to it with simple configurations, some of which are shown in this chapter.
Note
You can make more complex customizations to USD involving the CRM software development kit (SDK). However, such customizations are beyond the scope of this book.
The first version of the USD (version 1.0.0) was released in May 2014, and it was designed to be used with Dynamics CRM 2013, Service Pack 1. With the release of Dynamics CRM 2016, a new version (version 2.0) has been released; this is the version covered in this chapter.
The USD application requires a few solutions to be installed on the CRM server, and it works with either CRM Online or CRM On-Premises.
You can download the USD from the Microsoft website by searching for “Dynamics CRM USD download” or by going to https://www.microsoft.com/en-us/download/details.aspx?id=50355. The download page offers three files: a package deployer and two versions of the USD client app—one for i386 machines (which run a Windows 32-bit versions) and another for amd64 machines (which run Windows 64-bit versions). You should download the package deployer as well as the appropriate client version.
The following section explains how to set up the different components in the client and the Dynamics CRM server.
The setup of USD involves installing some solutions with the USD package deployer and installing a client application on the agent desktop computers. The following sections cover both the server setup and the client setup.
To install the USD package deployer, follow these steps:
1. Run the CRM2016-8.0.1-USD-PackageDeployer.exe file you downloaded from the Microsoft website. The screen shown in Figure 13.1 appears.
2. Check the check box to accept the Microsoft software license terms and then click Continue.
3. Select a folder where you want the files to be extracted and click OK. Once the files are extracted, you see the welcome screen shown in Figure 13.2.
4. Click Continue, and you are asked to enter the connection information for connecting to your Microsoft Dynamics CRM server (see Figure 13.3).
5. If you want to connect to CRM Online, select the Office 365 option and enter the online region information if you know it (see Figure 13.4).
When you are connected, you are presented with a list of available import packages (see Figure 13.5).
6. Select the Unified Service Desk—Base Package option and click Next. You now see a guideline and a description of the base setup tool (see Figure 13.6).
7. Click Next to continue, and you are now ready to install the base package, as shown in Figure 13.7.
8. Click Next to continue, and a verification process starts. If everything is okay, you see green checkmarks for each status, as shown in Figure 13.8.
9. Click Next to continue. The package deployer now installs the solution in Dynamics CRM, and it loads and imports the records necessary for the solution to work (see Figure 13.9). This process takes several minutes to complete.
10. When the installation is complete (see Figure 13.10), click Finish.
11. Navigate to Dynamics CRM > Settings > Solutions, and you now see the solutions installed, as shown in Figure 13.11.
1. Run the CRM2016-USD-2.0.2-amd64.exe file you downloaded from the Microsoft website. You see the welcome screen shown in Figure 13.12.
2. Click on Next to continue to the prerequisites screen (see Figure 13.13).
3. Leave the recommended pre-requisites selected as shown, and click Install to begin the setup. When the setup completes, you see the success screen shown in Figure 13.14. The client is now set up and needs to be configured to work properly.
4. Click Launch to start the configuration. The first time you run the USD, you are asked to enter the CRM connection details, as shown in Figure 13.15.
5. If you need to connect with CRM Online, select the Office 365 option for Deployment Type and then check the Display List of Available Organizations check box (which will help you chose whether you want to connect to your production or sandbox environments, if you have any). Click Login. The screen shown in Figure 13.16 appears.
6. Check the Show Advanced check box and then enter your credentials. If you set your Online Region (found within your CRM URL), you will get a faster connection login.
7. If you get the error shown in Figure 13.17 (which shows what happens if the USD package was not deployed to the CRM server yet), close the interface, run the server deployment, and return to the client configuration.
When your connection is successful, you see the application load, as shown in Figure 13.18.
8. Enter your user credentials and authentication, and you are logged into USD and see the dashboard, as shown in Figure 13.19. The top menu here shows three options: Dashboard, My Work, and Search.
9. Click My Work to see the active cases in a second tab. You can quickly switch between the My Work tab and the Dashboard tab (see Figure 13.20).
10. Click Search to open a tab that shows your active accounts by default (see Figure 13.21). You can quickly switch to see your active contacts from here as well as search for accounts or open an existing account or contact.
11. Open one account or contact record to start a new session where the time spent on the record is recorded. You see the account form loaded, and in the bottom-left corner of the screen is a session timer (see Figure 13.22). This is useful for managing time spent on a particular customer and helps with escalation protocol.
12. Expand the left panel to see more information related to the record. If you like, you can use this page to run call scripts (see Figure 13.23).
13. Click back to search on the top navigation and open another account record in a secondary session, via the tab across the screen (see Figure 13.24).
Note
When you have a secondary session open, the timer will keep running for each session.
14. Open a case from the My Work tab and expand the left navigation panel, and you see a sample script as well as a section where you can add notes, as shown in Figure 13.25.
15. Click the Verify Customer Information action to open the account form on a separate tab in the same session (see Figure 13.26). Click Review the Case to go back to the case form tab.
16. Click Search for a Solution to open another two tabs. The first tab has a web browser embedded, with Bing search open, so you can find a solution online without leaving the USD application (see Figure 13.27).
The second tab shows the published articles so you can find the solution by using one of your organization’s internal knowledge base articles (see Figure 13.28).
17. Click Send Email to start composing an email to the customer that will be automatically associated with the case (see Figure 13.29).
18. Click Update Notes, enter notes in the box below, and then click Close the Session to close all the open tabs related to the case you were working on and also finish the session and stop the timer.
In the Dynamics CRM web interface, navigate to Settings > Unified Service Desk, and you see the configuration page with all the components you can configure, as shown in Figure 13.30.
From this page you can configure the following components:
Hosted Controls
Toolbars
Action Calls
Events
Entity Searches
Window Navigation Rules
Session Lines
Agent Scripts
Scriptlets
Forms
Options
User Settings
Customization File
Configuration
Audit & Diagnostics Settings
The following sections describe these components.
Hosted controls are the main controls displayed in the different areas of the USD client. For example, the account form, contact form, Bing search, and so on are all hosted controls. If you go to the Hosted Controls option on the configuration page, you see a view of the active hosted controls that are installed by the USD base solution (see Figure 13.31).
An example of a simple configuration would be to swap out Google to do searches instead of Bing. To do this, you would create a new hosted control for that as follows:
1. Click New.
2. In the form that appears (see Figure 13.32), enter Google for Name and Display Name and select Standard Web Application for USD Component Type. Select Internal WPF for Hosting Type and check the Application Is Global check box. Make sure you also enter MainPanel in the Display Group field to present the control in the main panel.
3. Click Save to create the new hosted control. You then see that some predefined UII actions are also created (and you find them by clicking the drop-down arrow next to the name of the hosted control you just created, as shown in Figure 13.33).
4. Click UII Actions to see a list of predefined actions that you can use or customize (see Figure 13.34).
5. Open the default UII action and configure its properties, as shown in Figure 13.35. Then click Save.
Note
Don’t confuse the URL field in Figure 13.35 with the field where you set the Google URL. You set the default action’s URL field later, with the action calls, which are different from these UII actions.
The following predefined UII actions are created for this hosted control type:
Close—Closes the hosted control.
Default—Specifies the default action of the hosted control.
FireEvent—Fires a user-defined event.
GoBack—Responds to the back button in a browser instance.
GoForward—Responds to the forward button in a browser instance.
GoHome—Goes to the initial URL in a browser instance.
MoveToPanel—Moves the hosted control between panels at runtime.
Navigate—Navigates to a URL.
New_CRM_Page—Creates a new CRM record.
Open_CRM_Page—Opens an existing CRM record.
Popup—Opens a pop-up window.
RealignWindow—Specifies the location on a monitor in case you have more than one display.
RunScript—Injects JavaScript into the hosted control browser.
SetSize—Sets the width and height of the hosted control.
SetUserCanClose—Validates whether the user can close the hosted control.
WaitForComplete—Blocks the processing until the page content has finished loading.
You can use several types of USD hosted controls The fields you see depend on what hosted control type you select. Here is the complete list:
Agent Scripting—This control provides a call script where you can add instructions for the agents to guide them during a call with the customer (see Figure 13.36).
CCA Hosted Application—CCA stands for Customer Care Accelerator, and this control connects to a host, web, external, or remote hosted application—for example, the ones used for computer telephony integration (CTI). Usually you use this control with UII application adapters that are created with Visual Studio. Figure 13.37 shows the CCA Hosted Application control.
SEE “Advanced Customizations,” later in this chapter, for information on CCA Hosted Application control configuration.
Connection Manager—This control manages the connection to the CRM server, and there should be only one of these control types running in the agent application. This control doesn’t expose any UII actions or events. The base solution has a control of this type already created, named Connection Manager, so if you create a new instance of this control type, the agent clients get the error shown in Figure 13.38.
CRM Dialog—This control works with CRM dialogs, calling the StartDialog UII action, which starts a CRM dialog in the USD agent app (see Figure 13.39).
CRM Page—This control works with CRM pages such as forms, views, or dashboards (see Figure 13.40).
CTI Desktop Manager—This control manages the CTI adapter connections to control screen pop-ups, call routing, and other CTI features. The CTI adapters are usually created in C# with Visual Studio. By default, these hosted controls are put in the hidden panel (as shown in Figure 13.41).
Debugger—This control helps in showing debugging information. The base solution and the other samples you can install with the USD package deployer come with predefined controls of this type (see Figure 13.42). See the “Troubleshooting” section, later in this chapter, for information on debugging configurations and customizations.
Global Manager—This control is the core of the USD client application, and only one instance of this control can exist. The base solution comes with a control of this type, named CRM Global Manager, and it is vital for the USD agent client to run (see Figure 13.43). In this control type, you also find the configuration files for the multilanguage support that the USD agent application supports.
KM Control—This control displays knowledge base articles that can be stored in Parature or Dynamics CRM. With this control, agents can search, share, or email knowledge base articles without leaving the USD application.
Listener Hosted Control—This control traces and debugs diagnostics logs to audit the USD application behavior.
Panel Layout—You use this hosted control type to create custom layout panels that you can build using Visual Studio, for example. You will find a good example of this hosted control later on this chapter, in the “Advanced Customizations” section.
Ribbon Hosted Control—This control is necessary to host the ribbon, and it is for internal use only.
Session Lines—This control manages the session lines you configure in the Settings > Unified Service Desk > Session Lines section that are of the type Session Overview. SeesionExplorerPanel is the common display group for this type of control (see Figure 13.44).
Session Tabs—Much like the Session Lines hosted control, this control manages sessions like the ones you configure in the Settings > Unified Service Desk > Session Lines section that are of the type Session Name.
Standard Web Application—As you saw earlier, in the Google example, this control hosts a web browser that is used to present a configured page or URL.
Todo List—This control provides a section for follow-up actions.
Toolbar Container—This control creates toolbars that can contain buttons. The base solution comes with two of these type of controls created: one for the main toolbar and another for the About controls.
USD Hosted Control—You can create this type of control with Visual Studio to extend the USD application. A USD Hosted Control called Timer that comes with the base solution is controls the time elapsed for each session.
User Notes—This control provides an interactive notepad the agent can use to enter notes during the session. A User Notes control called Notes comes with the base solution.
Clicking Tollbars on the configuration page takes you to a page that shows the five predefined toolbars (see Figure 13.45). You can also add your own custom buttons to toolbars. To see how toolbar configuration works, follow these steps:
1. On the Active Toolbars page, click the Main toolbar record. A page showing the Main toolbar buttons appears, as shown in Figure 13.46.
2. Click + at the top of the Buttons subgrid to create a new button for this toolbar. Figure 13.47 shows the page that appears.
3. To create a new toolbar button for Google, enter Google in the Name and Button Text fields, in the Show Tab field find the hosted control Google that you created earlier, and click Save.
4. To add a new action, click the + icon at the top of the Actions subgrid and then click New in the actions lookup.
5. Enter Google in the Name field and select the Google hosted control you created earlier. Then select Navigate in the Action field and enter the url=http://www.google.com in the Data field (see Figure 13.48).
6. Click Save and then Close.
To test this new control, restart the USD client application, and you see the new Google button added to the top toolbar. When you click this button, you see a new tab open, with the browser window pointing to the Google URL, as shown in Figure 13.49.
Clicking Action Calls on the configuration page allows you to manage all the action calls, including creating custom actions and modifying existing ones. Figure 13.50 shows the Active Actions page.
The base solution installs 54 action calls by default. You can easily modify them. The sample action calls are helpful because they display information related to how the USD reads data. Notice the case title in the search URL and the context used there.
For example, instead of creating a new Google button (as shown in the previous example), you could simply change the Bing URL to the URL of some other search engine. As a result, the Bing action call would still be there, but the URL would be for whatever search engine you entered. Figure 13.51 shows the details of the Initiate Bing Search action call, including how you can pass parameters to the URL—in this case, the case title and the subject name for the search.
Events are related to hosted controls; every time you create a new hosted control, events are created that depend on the USD component type you selected. Figure 13.52 shows the Active Events page.
For example, a standard web application has two events: BrowserDocumentComplete
and PopupRouted
.
Entity searches show the entities you can use in the search button that appears in the top toolbar (see Figure 13.53). By default, the base solution adds records for Contact and Account entities.
If you want to add another entity in a search, you can do so by clicking New. For example, suppose you want to allow the user to search for leads. To do this, you need to add the Lead entity, which is not by default shown as an option (see Figure 13.54).
To add the Lead entity, on the New Entity Search page click +New to create a new entity type. Enter Lead in the Name field, as shown in Figure 13.55, and click Save.
Now you need to complete the Fetch XML field on the New Entity Search page. The easiest way to do this is to use the Advanced Find tool and click the Download FetchXML button to get the Fetch XML code, which is as follows:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="lead">
<attribute name="fullname" />
<attribute name="createdon" />
<attribute name="statuscode" />
<attribute name="subject" />
<attribute name="leadid" />
<order attribute="createdon" descending="true" />
<filter type="and">
<condition attribute="statecode" operator="eq" value="0" />
</filter>
</entity>
</fetch>
Figure 13.56 shows the embedded Fetch XML code for the Lead entity search.
Because you modified the button for the Google search earlier in this chapter, you now need to edit the search toolbar so the agents can search for leads. Therefore, on the configuration page, select Toolbars and edit the HA:Search toolbar; create a new button there with the name Lead and create a new action call for the lead search, as shown in Figure 13.57 and Figure 13.58.
Figure 13.59 shows the HA:Search buttons with Leads added to it.
If you now restart the USD client, the application will allow agents to search on leads. Figure 13.60 shows the result of such a search. Note that the navigation bar shows the Leads button for quick navigation.
The window navigation rules help in routing—for example, routing a search to one entity type to another (see Figure 13.61).
To create a new navigation rule, click +New to open the window shown in Figure 13.62 and complete the required fields and routing logic.
USD allows users to open, maintain, and work on different calls, and session lines allow the system to control the calls to the application.
Session lines can be either of two types:
Session Name—The Session Name type displays a single field like this: [[account.name]].
Session Overview—The Session Overview type displays a grid with all the session lines, as shown in Figure 13.63.
When you create a new session line, you must specify the type, which you can’t change it after you save the session line.
To create a new session line, click +New and then fill out the screen that appears (see Figure 13.64).
The account details session display is configured with the following code in the base solution:
<Grid Margin="0"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:CCA="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.
Dynamics;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
<Grid.Resources>
<CCA:CRMImageConverter x:Key="CRMImageLoader" />
<Style x:Key="ImageLogo" TargetType="{x:Type Image}">
<Setter Property="Width" Value="16" />
<Setter Property="Height" Value="16" />
<Setter Property="Margin" Value="5" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Margin="5,6,0,0" Grid.Row="0" TextWrapping="Wrap" Padding="5,0,0,5"
FontFamily="Tahoma" FontSize="12" Text="Account Name: [[account.name]x]"
Foreground="#262626"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Email16,
Converter={StaticResource CRMImageLoader}}" />
<TextBlock TextWrapping="Wrap" Padding="5,0,0,5" Text="Email: [[account.
emailaddress1]+x]" Foreground="#262626" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Phone16,
Converter={StaticResource CRMImageLoader}}" />
<TextBlock TextWrapping="Wrap" Padding="5,0,0,5" Text="Phone: [[account.telephone1]
x]" />
</StackPanel>
<TextBlock Margin="5,0,0,0" Grid.Row="3" TextWrapping="Wrap" Padding="5,0,0,5"
FontFamily="Tahoma" FontSize="12" Style="{DynamicResource AutoCollapse}"
Text="Primary Contact: [[account.primarycontactid.name]x]" Foreground="#262626"
VerticalAlignment="Center"/>
</Grid>
This code then is rendered in the panel of an account record that you open with the USD client, as shown in Figure 13.65.
The code used here is XAML and is the same code used in WPF applications. If you make any update here, you must restart the USD client to see the changes.
Agent scripts help an agent follow the necessary steps to perform the work as expected (that is, process-driving guidance). Figure 13.66 shows the default agent scripts.
To create a new agent script, click the +New and then fill out the New Agent Script Task page that appears (see Figure 13.67).
Save the new agent script so you can optionally create answers and click +at the top of the Answers subgrid to open the New Agent Script Answer page, shown in Figure 13.68.
While you can add agent scripts, complex routing and if/then statements require complex customizations. A good solution is to use TKDialogs for this, as it is a robust and supportable tool for just this need. Find it at www.teamknowledge.co.uk.
Sciptlets are JavaScript code snippets that you can use to replace parameters. The base solution comes with a scriptlet to resolve the case name by the case title (see Figure 13.69).
To create a new scriptlet click +New and complete the required fields in the page that appears (see Figure 13.70).
Forms are used to store declarative form definitions, and the base solution doesn’t come with any forms created by default. Figure 13.71 shows the Active Forms page (which is empty).
To create a new form, click +New and complete the required fields in the page that appears (see Figure 13.72).
After you have completed and saved a form, it can be referenced in the USD interface for agent interaction.
Options are used to create name/value pairs that can be used by other components. Some of the options you can configure are enabling and disable auditing flags. Figure 13.73 shows the Active UII Options page.
To create a new option, click +New and complete the required information, as shown in Figure 13.74.
User settings are used to configure personal settings via programmatic manipulation of the values stored in the settings configuration. They allow users to have different experiences within the USD interface.
To create a new user setting, select User Settings on the configuration page and then, on the page shown in Figure 13.75, click +New to create a new setting.
Figure 13.76 shows the default values for user settings.
The customization file contains the generic customization file for the USD. Figure 13.77 shows the Active USD Customization Files page.
The Default Package customization, shown in Figure 13.78, can be modified or copied for enhanced configuration.
You can use a configuration to associate the Audit & Diagnostic setting records with users and hosted controls. In addition, you can manage security by setting which user can use each hosted control. Figure 13.79 shows the Active Configuration page.
It is necessary to have at least one record here for the standard audit to work. Then you can add the users who will use this configuration. Each user can have one only configuration set, and the USD solution adds a lookup in the System User entity, and you can also select the configuration to be used by that user. Figure 13.80 shows a new configuration record.
You use Audit & Diagnostics Settings to troubleshoot the USD client. This section is especially useful when you’re developing complex customizations. Figure 13.81 shows the default settings.
You can enable or disable the following auditing options (see Figure 13.82):
Activity Tracking
Activity Tracking for Customer Session
Activity Tracking for Hosted Controls
Activity Tracking for Events
Activity Tracking for Agents Scripts
Activity Tracking for Agent Login
Activity Tracking for UII Calls
Activity Tracking for Action Calls
Activity Tracking for Sub Action Calls
Activity Tracking for Windows Navigation Rules
Caching
Cache Size
Regardless of these settings, you need to configure both what you want to audit or log and what is then routed to the listener hosted controls that will be responsible for storing this information in files, Windows event log, and so on.
There are two main ways to see the audit information generated by the USD. One way is to create a listener hosted control, as explained in the USD Developer Guide in the UII SDK. Another way, which doesn’t require development of a listener assembly (and is therefore a little easier), is to add the audit flag in the options settings; you can do this by navigating to Settings > Unified Service Desk > Options. These are the options you can then use for auditing:
AuditFlagAction
AuditCacheMaxSize
AuditFlagAgentState
AuditFlagHostedApplication
AuditFlagInteraction
LoadSessions
MaxNumberOfSessions
ProcessTerminationThreshold
ShowScriptsError
AuditFlagSession
AuditFlagWorkflow
Setting any of the preceding option to 1
enables that audit option. Setting it to 0
disables that audit. One other option related to auditing, AuditNoCache
, must be set to either True
or False
.
Note
To start auditing, you must create a configuration record and associate the Audit & Diagnostic Setting record to it.
When adding and changing configurations and applying custom configurations and customizations, sometimes the application doesn’t behave as expected. In such cases, you need to debug the application. To do so, click the gear in the top-right corner and select Debug (see Figure 13.83).
To extend the USD, you need to download and install the UII (User Interface Integration) SDK package. You can find it at the same place you download the MicrosoftDynamicsCRM2016UII.exe: https://www.microsoft.com/en-us/download/details.aspx?id=50032. You install the UII SDK on your development by executing the MicrosoftDynamicsCRM2016UII.exe file and then completing the installation steps.
With the UII you can extend USD with the following components:
UII Application Adapter
UII web application Adapter
UII Windows Forms Customer Search Control
UII Windows Forms Hosted Control
UII WPF Customer Search Control
UII WPF Hosted Control
USD CTI Connector
USD Custom Hosted Control
USD Custom Panel Layout
You need to use Visual Studio (version 2012, 2013, or 2015) to build and create these components.
Note
For more information on advanced customizations, see the Unified Service Desk 2.0 Developer Guide, which is available at https://msdn.microsoft.com/library/dn864923.aspx.
To start developing these types of controls with Visual Studio, you can download and install the Dynamics CRM SDK and then install the CRMSDKTemplates.vsix that is in the SDKTemplates folder. An alternative method is to follow these steps:
1. From Visual Studio, select Tools > Extensions and Updates. Then, in the Online node on the left, search for the Microsoft Dynamics CRM SDK (see Figure 13.84).
2. Select Microsoft Dynamics CRM SDK Templates and click the Download button. The window shown in Figure 13.85 appears.
4. When the installation finishes, click Close.
This CRM SDK installs the necessary Visual Studio templates you need to build the different controls. When they are installed, you can create new UII application adapter projects, under the Templates > Visual C# > CRM SDK Templates > Unified Service Desk, as shown in Figure 13.86.
Note
Refer to the UII SDK for examples that also show you how to pass data between USD client and external applications.
With a USD Custom Panel Layout type of component, you can do things like change the default logo that is displayed in the USD interface. This is helpful if you want to use your company logo to brand the USD application. To do this, follow these steps:
1. Open Visual Studio and select File > New Project.
2. Go to Templates > Visual C# > CRM SDK Templates > Unified Service Desk and create a new USD Custom Panel Layout project
3. Double-click the CustomLayout.xaml file to open it from the Solution Explorer window and find this code line:
<Image Grid.Column="0" Source="{Binding Source=msdyusd_Logo,
Converter={StaticResource CRMImageLoader}}" Style="{DynamicResource
ImageLogo}" />
and replace it with the following:
<Image Grid.Column="0" Source="C:CRM 2016 BookSamplesChapter 13
USDCustomPanelLayout1USDCustomPanelLayout1Webfortis New Logo.png" />
4. Build the solution, copy the generated assembly (USDCustomPanelLayout1.dll) that is found in the bindebug folder of your project to the USD application directory (usually C:Program FilesMicrosoft Dynamics CRM USDUSD if you installed in the default directory), and register the assembly. (You will need to do this on every machine of every agent that has the USD installed.) You also need to copy the image file of the logo to the exact location you used on the target client machines.
If you want to avoid having to copy the image file of the logo, you can create a web resource in Dynamics CRM and use the following code to reference the source of the image in the same code line you modified in step 3 above:
<Image Grid.Column="0" Source="{Binding Source=new_WebfortisLogo,
Converter={StaticResource CRMImageLoader}}" Style="{DynamicResource ImageLogo}" />
To register the component, follow these steps
1. Go to Dynamics CRM and navigate to Settings > Unified Service Desk.
2. Click the Hosted Controls option.
3. Create a new hosted control and enter a name for it. Select Panel Layout in the USD Component Type field. In the PanelType field select User Defined. Check the Application Is Global check box and leave Display Group set to MainWorkArea. Figure 13.87 shows the new USD custom Panel Layout hosted control.
4. Scroll down and set Application Is Dynamic to No and make sure the User Can Close check box is not checked. Set Assembly URI with the Visual Studio project namespace and set Assembly Type to the Visual Studio project namespace with the class name shown in Figure 13.88.
6. Deactivate any existing hosted control with the type Panel Layout.
7. Start the USD client to see the logo and the new Panel Layout hosted control. Figure 13.89 shows the new logo.
This chapter looks at the Unified Service Desk solution and how to customize and configure it. You’ve learned how to install the USD for both the server and client, and you’ve learned different ways to configure the USD application client by adding records in the different entity types and hosted controls in the USD solution. This chapter also covers adding and configuring auditing and troubleshooting, as well as what is necessary if you are planning to extend the USD client by creating custom hosted controls using the USD SDK and the UII SDK. You have also learned how to brand the USD client by adding a company logo to the USD client application.