Within Unified Service Desk for Microsoft Dynamics CRM you may wish to have tabs that “float out” of the USD interface. This can be very useful when working on multiple monitors. For example, you might display a search window in one screen and show the resulting sessions in your main USD interface loaded in another monitor.
This style of tab are called “floating panels“.
Hopefully the photograph below shows how I can use two screens to search and open contacts. In this post I will explain how I achieved this effect in Unified Service Desk. I’m using USD 2.0 and CRM 2016 but you should find the same approach will work in other versions.
The steps involved are quite straight forward;
- Create a hosted control for your search.
- Have an action to open the search screen.
- Optionally create a navigation toolbar for your search window.
- Create window navigation rule(s) to open the contact session.
I am going to make some assumptions here! Firstly that you already have a basic grasp of USD and that you have already created the hosted controls, actions and session lines needed to create and open a contact session. I will also assume you have a basic grasp of toolbars.
Step One – Create a hosted control for your search
Guess what, this USD change is going to start with creating a hosted control! J
This is a simple enough hosted control, the USD component type is “CRM Page” as you’d normally expect. I have also selected the “Application to Global” option.
Then I have set the display group to be “FloatingPanel”.
Step Two – Have an action to open the search screen.
Next you’ll need an action that will navigate to the search screen for contacts. (Or whatever entity you wish to use.) This is a fairly standard process, mine is shown below. I have selected the hosted control I created in step one and set the action to navigate. The the data portion contains the url needed to display a list of active contacts.
OBVIOUSLY next you’ll need to trigger this action to show the search results in your floating tab. In my application I did this by calling the search from a button on my main toolbar. You could do that or simply add the action to the DesktopReady event of your global container.
Step Three – Optionally create a navigation toolbar.
At this point you may want to create a navigation toolbar and associate it with the hosted control you created in step one. In my toolbar I have coded browser style back / forward buttons and gave options to quickly swap to searching for accounts etc. All of this is standard stuff you can find described elsewhere in my blog or in various articles in the Microsoft websites. (And of coarse other excellent blogs are available!!! J)
Having created your toolbar, you’ll need to remember to navigate to the hosted controls option on the toolbar to associate it with the hosted control your created in step one.
In essence creating a toolbar for a floating panel is exactly the same as any other navigation toolbar.
Step Four – Create window navigation rule(s) to open the contact session.
This was the only part of the change that took some thought!! As you’d expect you may need to create one or more navigation rules to trigger sessions to open as contacts (or accounts etc) are selected. Typically I set the “from” field in the window navigation rule to the tab that the pop-up originates from. BUT using that approach I found my navigation didn’t trigger.
The solution was simple, as I just omitted the “from” option. You might need to think about the implications of this in your interface. The “benefit” being the rule will be triggered whenever a contact is opened. This might be exactly what you want but you’ll need to give it some thought. I found I needed to test opening contacts from several places and checked in the debugger that the “correct” navigation rule was still being processed.
UPDATE: Later I tried other combinations and didn’t have similar issues with navigation rules so generally speaking your existing rules should work.
A note about “MovePanelTo”
You may be aware that an action exists called “MovePanelTo”. To use this you’d simply create an action with the data field set to “FloatingPanel”. I have found this quite useful to give the users an option to move the tabs from the main panel to new windows.
Hopefully you will have found this post useful and I hope you’ll agree that creating “FloatingPanels” is no more difficult than any other type of tab. J