locked
Unified Service Desk - Quick Create, Turboforms, Scans, RunXrmScript etc. RRS feed

  • Question

  • Environment:

    CRM: Microsoft Dynamics® CRM Online 2015 Update (7.1.1.3119)

    Unified Service Desk Shell Version: 1.2.0.161 64 bit

    I am working in an environment with the above configuration. In our CRM implementation we are using quick creates in a lot of different places to support the business process. 

    There are two different ways we open quick creates with in USD:

    User uses a new click on a subgrid on page to add a record - quick create opens, saves record, record is in subgrid.

    We open quick create on an answer click in agent script using an action call (RunXrmScript) Xrm.Utility.openQuickCreate().

    Both of these methods work and we can use call backs on the quick create to put created data in fields if necessary. 

    The problem is that whenever a quick create is opened on a USD CRM Page Hosted Control, we can no longer run Xrm Script normally on the page. 

    Diving into this problem it appears that after a quick create is opened RunXrmScript will now execute in the Quick Create Frame, which is great until the Quick Create Frame closes, after which RunXrmScript will now attempt to execute in the closed Quick Create Frame (now "about:blank").

    A simple work around is to check if the script is executing on the wrong frame and then find the correct frame as follows but is most likely unsupported and may not work in all cases:

    if(name=="contentIFrame0")
    {
    Xrm.Page.data.entity.save();
    }
    else if(name=="")
    {
    top.frames["contentIFrame0"].Xrm.Page.data.entity.save();
    }

    Another thing that breaks after opening quick create is Scanning for Data Parameters (the "natural" way and calling the UII action with an action call) which can really destroy the movement though an agent script relying on replacement parameters to continue through record creation and pre-filling new forms.

    In one example I am saving a record and resolving it, after which I wish for the page to close. 

    Using script I can save and resolve the record after which I use an ExecuteOnExpressionTrue to wait for the status to change. Sub Actions of the ExecuteOnExpressionTrue then close the page. This works fine if no Quick Create has opened as the page will scan parameters normally after saving. But if a quick create has opened the data parameters will never be updated. Another work around here that helps but can not always be implemented in every situation is the following script to scan for parameters similar to the above work around:

    top.XrmForm = top.frames["contentIFrame0"];
    top.PopulateData(top.getClassicData());


    Finally, in the release of USD agent 1.2 it has been said that the scanning of turboforms is fixed. This is true about 50% of the time with our online 2015 org. Using the above script it will scan 95% of the time (the script is placed on the page load event).

    Really just looking for more data here and if there are any better work arounds. Alot of these problems are fixed using legacy forms but we have a requirement to use turbo forms. 

    P.S. I can't use Xrm.Utility.openQuickCreate() on entitylist views, the script fires but then faults as there is no QuickCreateStack (null).

    Microsoft Dynamics® CRM Online 2015 Update<bdo dir="ltr">(7.1.1.3119)</bdo>
    Microsoft Dynamics® CRM Online 2015 Update<bdo dir="ltr">(7.1.1.3119)</bdo>
    Microsoft Dynamics® CRM Online 2015 Update<bdo dir="ltr" style="font-size:12px;line-height:18px;">(7.1.1.3119)</bdo>
    Thursday, September 24, 2015 4:27 PM