USD – Show Outside (Window Navigation)

Hopefully if you read my blog you know that I love it when I can answer questions about Unified Service Desk for Microsoft Dynamics, this post covers a question I was recently asked.

The question was about, what a navigation rule should look like to use the show outside action. A simple question but one that has some implications to consider. I will try to give a full and detailed answer here.

If you don’t know the “Show Outside” action is designed to open your hosted control outside of USD. Once done it would play no further part in USD session or USD at all for that matter. (Because it will have been opened in IE outside of USD.)

In the specific question I was given the window navigation rule wasn’t being triggered. So in approaching this problem I decided to remove that issue by first having a navigation rule that was opening something correctly in the tab. I would then change it to “Show Outside” to be able to compare and contrast the difference between “Route Window” and “Show Outside”.

In my example I am going to alter an existing rule on the case entity. So I am starting with a rule that looks like this …

Below you can see an example that my case is opening in a separate tab. With the Route Window action. Also notice that my case initially had an agent script associated with it and navigation toolbar. And finally notice that my case doesn’t have a navigation toolbar.

I chose case because of these things as I wanted to see what would happen to these USD concepts if I opened the case outside of USD. (Deliberately making my life hard!)

Warning: Don’t try this at home!
Or do but realise it is a little crazy!! If you are going to open a tab outside of USD then it wouldn’t normally make sense to have agent scripts, restrict the navigation or have navigation toolbars. Or have any actions on any event associated with the hosted control for that matter. In the real world if you do this you will probably open a “simple” hosted control outside of USD. And in doing so have no actions (etc) associated with it. Opening outside of USD removes the tab from the USD “container” meaning it plays no further part in USD automation. And therefore doing these things doesn’t make sense! I have only done it like this to demonstrate the concepts / implications.

So I started by simply changing the action from “Route Window” to “Show Outside”, as you can see below. A real simple change.

Below you can see the results I achieved. Some things to note;

  1. The case “tab” opened in an IE window outside of USD. Think about what this means! If I now close the session or even close USD completely the case remains open IE. That may or may not be desirable.
  2. My agent scripting normally starts off on one for the account but moves to a case agent script when the case is opened. That simply didn’t happen. “As I expected.” But in the real world if I did this I think I would simply remove any actions connected with agent scripting and this hosted control.
  3. A new tab did open! Called “Case(New Case)”, this tab was blank except it had a toolbar. I think this showed that the toolbar tried to load and that triggered a tab to open in USD. But the tab was blank as the navigation didn’t try to load anything into it. This suggests that you really should remove any toolbar associated with the hosted control before using the show outside action.
  4. In IE notice that the navigation bar is shown, so the setting on my window navigation rule to hide the navigation has not been applied. As I expected but I wanted to prove that concept.

A couple of final things to think about, my hosted control for cases has the display group set to “MainPanel”, it isn’t global (meaning it should be part of the session) and the hosting type if “Internal WPF”.

  • As the case opened outside of USD the display group of “MainPanel” has no meaning.
  • It obviously didn’t use Internal WPF as it opened in IE.
  • And the case was no longer part of the session. So global or not has no meaning.
  • I didn’t test it but you can also assume that the multiple pages Yes/No setting would have no meaning if the tab is opened outside of USD.

In summary, Open Outside maybe an option in your window navigation rule that is really useful in some circumstances. But you need to consider things like impact on agent scripts, toolbar, USD actions etc. As I hope I have demonstrated.

Hopefully this post will have been useful to anyone thinking about using the Open Outside Window navigation rule setting. J

17 thoughts on “USD – Show Outside (Window Navigation)

  1. Great Post !!!!!! Well Done !!!!!!!!

    My Experience : We have a specific requirement, where on the click on a button at USD toolbar, one pdf will be generate, which will take the billing information from Active Account Session (Which simply mean from CRM Account Form) in USD, For that show outside functionality was extremely useful.

    Like

  2. Hi Sir,

    I had tried the show outside functionality but the problem which I was facing a “new blank tab” also open up even if tool bar is not associated to it, which gives a bad impression as user have to close it always. can we stop a new tab to open like this, as i had tried everything through window navigation rule (i.e. Inplace loading) but nothing really work out.

    Like

    • My guess is that you have something like a toolbar or agent script associated with the tab you are opening outside of USD. Try removing anything that is USD specific from the hosted control you want to show outside of USD.

      Also look for any actions that might be in the BrowserDocumentComplete or PageLoaded events on the hosted control being shown outside of USD. I would want to check that nothing there is being fired that might trigger a tab to load.

      If that doesn’t work I’d next look at the details on hosted control for ideas. (Check out hosted control type, IE Process/WPF Internal, Display page etc.)

      Like

  3. I have a button on USD called ViewPDF which generate PDF & show ouside is used here but a new blank tab with the name ViewPDF tab also open which is my problem, I need this button on toolbar.

    Like

    • I recently did something very similar. Some pointers ….

      1. The button on the navigation toolbar should trigger a “popup” action not navigate. As navigate will not look at your window navigation rules.
      2. On the button do not populate the show tab field.
      3. Try having the popup action linked to your global manager. (Not a hosted control that has a display panel!)
      4. Have a suitable navigation rule that does has an action of “Outside”. (This will probably have url field set to the link you are trying to load.)
      5. On the navigation rule do not enter anything in the target or showtab fields.

      Like

  4. Pingback: USD – Window Navigation Rules Theory | Microsoft Dynamics CRM and Unified Service Desk

  5. Pingback: USD – The Book | Microsoft Dynamics CRM and Unified Service Desk

  6. Hi sir,

    I am facing another challenge in USD, again a bit strange for me !

    Issue: There is a URL, which we are calling inside the USD which fire on click on a button at USD Main Toolbar & its working on few laptops as required, but on large set of user’s laptops, only the blank tab is appearing.

    Hosting Type on associated Hosted Control : IE process is used; as on internal WPF, the URL i am talking is not work on anyone’s laptop.

    Now, the obvious question which comes to my mind is to replicate the IE Version & all settings to those large set of user’s laptops, where only the blank tab is appearing by comparing the IE browser settings from the laptop where its working.

    I tried this but it didn’t work, although my mind is still stick to try to replicate the IE Settings !

    *Note: I am passing parameter from Case entity to the webpage which is getting trigger through the URL using scriptlet.

    Can I use “show outside” here ? But then the challenge lies to fit all the parameter in the URL & also to get it working.

    I am Using USD Version : 1.2.0.161

    What comes to your mind ? Any Comment on this ?

    Thanks ! 🙂

    Like

    • It is very hard for me to know what is happening with your url! First of all I would try loading in IE without using USD. Is it loading correctly on all computers?

      I don’t know of any specific IE settings that would impact this. But they could be unique to the URL you are loading.

      Try looking at your scriptlet very closely! If any of the replacement parameters in it have an issue they do have a habit of returning nothing which would create your blank tab. Make sure that ALL replacement parameters in the scriptlet handle nulls. Meaning they look like this …. [[<>]+]

      Missing the “+” can make scriptlets fail!

      You could use show outside. But nothing you have said suggests show outside would solve your problem. However it is obviously still worth a try. BUT whatever window you have loaded will then not close when the session is closed. (As no longer linked to USD.)

      Hope these pointers help.

      Neil.

      Like

  7. Hi Sir, Thanks for your detailed reply on this issue.

    But the is yet not resolved, Here are some points :-

    1.) When I am trying to load the URL on IE Browser, its loading perfectly fine on all the computers.
    2.) When I am trying to load the same URL in USD, It loads on some computers only (Opening a blank tab only, on some computers where its not working). strange for me !
    3.) I am using the scriptlet to pass parameters from the CRM case form on external URL.

    Here is the Scriptlet which includes URL:

    function ProperoSearchPage_Case() {
    var policyNumber= “”;
    policyNumber= “[[incident.tec_useridemail]]”;
    var url=””;
    if(policyNumber!=”” )
    {
    url= “http://10.216.9.165:8090/systemcommon/jsp/IVRLogin.jsp?userId=”+ policyNumber;

    }
    else
    {
    url= “http://oms.religare.com/”;
    }
    return url;
    }
    ProperoSearchPage_Case();

    Any Comment now sir !!!

    Thanks for your support ! 🙂

    Like

    • One thing to try ….

      Change the “policyNumber=” line to look like this
      policyNumber=”[[incident.tec_useridemail]+]”;

      Including the “+” is important! I have seen scripts always fail if this is missed. That would cause the problem you describe.

      In my experience the scriptlets have always failed if the “+” is missing. But maybe you are “lucky” that it works some of the time. It might be the scriptlet is failing whenever tec_useridemail is blank.

      Also, try adding an action to display the results of the scriptlet. Hosted control would be your global manager, action would be “DisplayMessage”. Then set data to [[$Scriptlet.ProperoSearchPage]] (Or what ever name you have given the scriptlet. If your scriptlet is good you will see the url in an alert. If you have a problem you will get a action failure you can see in the debugger. (If you see the url and it looks good you know you have ruled out the scriptlet being the issue!)

      Hope this helps.

      Liked by 1 person

  8. Hi Sir,

    Thanks for your reply ! I made the changes as suggested by you in the code, but still its not working on those laptops where it was not working before. Maybe the problem is outside the purview of USD.
    It may be the IE settings causing this or some port restriction on laptops (although we checked them once, but didn’t find anything so far.)

    *Note: When I change the hosting type to Internal WPF from IE process, then the particular URL is not even getting fired in those laptops where its working.

    One more thing I would like fellow blog followers to nominate Neil sir ! for MVP, because the kind of passion he shows to provide update on Dynamics CRM (Specially Microsoft USD ) is something unprecedented.
    Hence me myself just nominated Neil sir ! for MVP.

    I request others to follow me on this.

    Thanks !

    Liked by 1 person

    • MANY MANY MANY THANKS for the nomination.

      I am sorry my ideas didn’t work. You might be right and it is something specific to those laptops or their IE settings.

      I have seen WPF and IE give different errors before. Once I swapped to WPF and it didn’t solve my problem but seeing a different error helped me find the solution.

      Liked by 1 person

  9. Just curious to know ! how pop up as UII Action & show outside can be use to open the URL in IE Browser….As a non-technical guy my only worry to put this part of scriptlet in URL:

    function ProperoSearchPage_Case() {
    var policyNumber= “”;
    policyNumber= “[[incident.tec_useridemail]]”;
    var url=””;
    if(policyNumber!=”” )
    {
    url= “http://10.216.9.165:8090/systemcommon/jsp/IVRLogin.jsp?userId=”+ policyNumber;
    function ProperoSearchPage_Case() {
    var policyNumber= “”;
    policyNumber= “[[incident.tec_useridemail]]”;
    var url=””;
    if(policyNumber!=”” )
    {
    url= “http://10.216.9.165:8090/systemcommon/jsp/IVRLogin.jsp?userId=”+ policyNumber;

    function ProperoSearchPage_Case() {
    var policyNumber= “”;
    policyNumber= “[[incident.tec_useridemail]]”;
    var url=””;
    if(policyNumber!=”” )
    {
    url= “http://10.216.9.165:8090/systemcommon/jsp/IVRLogin.jsp?userId=”+ policyNumber;

    Hope u can understand the challenges !

    Like

    • Your scriptlet’s data field will look something like this(I’ve tweaked your code slightly! But it is basically the same ….

      function ProperoSearchPage_Case() {
      var policyNumber = “[[incident.tec_useridemail]+]”;
      var url = null;
      if (policyNumber != null) {
      url = “http://10.216.9.165:8090/systemcommon/jsp/IVRLogin.jsp?userId=” + policyNumber;
      }
      return url;
      }
      ProperoSearchPage_Case();

      Then in your action you can say something like;
      url=[[$Scriptlet.ProperoSearchPage_Case]]

      Creating scriptlets like this is simple enough. Except they tend to return nothing if you have the smallest of errors. I always start off simple and then add my logic very slowly. As debugging them is hard as you get no information on what went wrong inside the scriplet.

      Maybe start off with a fixed url. Test that, so you know your action is good. Then add in your conditions etc.

      Maybe start with something simple like this!!!

      function ProperoSearchPage_Case() {
      var url = null;
      url = “https://neilparkhurst.com”;
      return url;
      }
      ProperoSearchPage_Case();

      Like

  10. Hi Sir,

    I found a workaround of this issue discussed in the previous comments, as I said that this particular URL is a popup URL which is when put in the IE browser & click Enter then IE browser opens that URL in the form of pop-up in another Window.

    When i click on that USD button (which is need to trigger this URL), its opened a blank tab for me. Somebody suggested me to use CTRL. + N command which actually opened that particular URL into IE browser. So now 1.) the user first needs to Click that Button in USD. 2.) It opened a blank tab for them. 3.) Then they have to give “CTRL.+N” command; which resultant into opening that URL in IE Browser.

    But Now the no. of Clicks increase which resultant into overall AHT increase.

    On two of the Client’s machine, this work fine as when a user clicks on that button on USD it automatically opened that URL on IE browser (No window navigation rule is created to Show this URL outside the USD boundary). This is very much suspected that IE settings is creating issue here but to find them is a real challenge. I tried comparing IE settings of laptops where its working (i.e. two of those, Client’s machine) from where its not working but couldn’t find yet. Do u know about any such IE settings ?

    Like

    • When it comes to IE settings I have only come up against two problems.

      The first being a generic CRM one, sometimes you will need to ensure the url for your CRM organisation has been entered into trusted sites.

      the other one is connected with USD specifically, in that protected mode must be disabled. In the security setting for the zone being used you will need to ensure protected mode is disabled. As a test you could disable in all zones. But this might present a security issue. (Especially in the internet zone.)

      To resolve this you can add some specific sites into the restricted zone and ensure protected mode is off for that. the sites are;

      http://event
      http://close
      http://uii

      You mentioning laptops made me think of the zones. Some might be connected to your lan, so the zone might be intranet. But some might be on a public wifi (or similar) that could be connecting using the internet zone. Protected mode might be enabled on one of these.

      This link might help explain the IE settings for USD

      https://blogs.msdn.microsoft.com/usd/2016/01/26/ie-process-mode-gives-httpevent-popup/

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s