Microsoft Dynamics CRM Online 2015 Update 1 – New Form Rendering Engine


The new form rendering engine

In Microsoft Dynamics CRM Online 2015 Update 1 (v7.1), a new form renderer was built to provide better performance. Forms will load significantly faster and more efficiently. The new renderer is based on previous generations and has the same functionality and behavior. However there are some things that admins and developers need to do to ensure full compatibility when upgrading. 

What will users notice?

End users will not notice anything different, other than forms loading faster. The new form rendering engine has full support for client scripting (Write code for Microsoft Dynamics CRM forms), uses the same XML definition (Form XML schema), and has the same behaviors all around. There have been no fundamental changes made in terms of what the form does.

In order to help catch unsupported customizations, we added a dialog that displays the issue when script errors occur so that they do not fail silently. If these symptoms occur then it is likely there are unsupported customizations in the system.

 

What changed?

All the changes have been focused on how the form load process can be optimized. There are 2 main changes that have been made: loading process of the form, and handling of cache.

In terms of loading process, we have parallelized as many operations as possible to eliminate time wasted because the browser is idle. We increased the content that’s cached, moved rendering processes partially to server-side, and optimized the initialization of controls.

Form load used to be a very linear process. Since the new form renderer is more parallelized, the rendering engine now constructs the form and XRM model first and binds the data whenever the server responds. The diagram below is a rough approximation in order to illustrate the differences between the 2 rendering engines and may not reflect the exact changes.

Forms also used to waste a lot of resources. Since they were hosted in iframes, the iframe would be discarded and reloaded on each form load. The new form renderer does not discard iframes and instead keeps the iframe around. All common scripts are already parsed and never need to be loaded again. This introduced the design to load custom scripts and ISV scripts in a separate iframe which is the one that’s discarded when the form closes.  Previously, these scripts would be loaded in the same iframe as the form.

In summary:

  • Iframes are now kept throughout the user session
  • Custom scripts are loaded in separate iframes
  • No changes in supported scripts or form
    capabilities 

What do I need to do?

As an admin or developer there are some things to be aware of. Because the new form rendering engine makes changes to how iframes are organized, any attempt to access unsupported APIs or use direct DOM manipulations may fail and need to be fixed.

Customers should all make sure to test their organization in sandbox mode to preview before upgrade. This way, should any symptoms show up around forms not loading/script errors, you will be able to catch and fix it
before upgrade.

Examples of things that will break:

  • Any attempt to access DOM in the content iframe using JS, jQuery or other 3rd party libraries (document.getElementById() or jQuery selectors)
  • Creating a new HTML content in the parent window for persistent content (and assumed that the parent window was the main CRM iframe.
  • Window.load, parsing iframe/form URL
  • Attempting to use unsupported (non-XRM) APIs, especially undocumented ones that may have been shipped with CRM for internal usage only
  • Accessing window.parent() from a web resource that may assume for example there’s a variable set in the current window context. 

In order to help identify potential issues, the CRM 2015 custom code validator can be used. It’s primary purpose is to identify usage of deprecated APIs but it will also attempt to flag usage of unsupported APIs. The tool can be found here: https://www.microsoft.com/en-us/download/details.aspx?id=45535.  Developers should also review their scripts to ensure only supported APIs are being used.

Customers that have 3rd party solutions should reach out to their partners for updated solutions that have been verified to work with the new form rendering engine. While most are expected to continue to work, those with unsupported customizations need to be updated.

Fallback options

In case there is difficulty identifying the issue or a backup plan is needed post-upgrade, we have introduced an organizational-level fallback to temporarily allow usage of the legacy rendering engine. This will ensure compatibility at the cost of performance. Do not rely on this solution long term as the plan is to remove this option in the following release.

This setting can be found under Settings -> Administration -> System Settings -> General. Select “Yes” under “Use legacy form rendering” to enable this mode for all users.

If script errors are showing up, or if forms are not behaving as intended, this setting can be used to diagnose if the problem is specific to the new form rendering or not. If it is due to the new form rendering engine, then most likely there are some unsupported customizations.

If you are the owner of the scripts, make sure that there are no unsupported customizations. Otherwise reach out to the provider of the solutions for an updated solution.

Thank you,

Joey Peng | LinkedIn


Comments (21)

  1. Jimmy Harris says:

    Is this in the 2015 on-prem UR1 release?

  2. mercy says:

    An Interesting and far hoped-for update. I actually have bunch of shoppers WHO area unitasure} writing to me regarding type performance.

    Please Visit us @ <a href="http://www.phptrainingchennai.in">PHP Training in Chennai</a>

  3. glory says:

    Is this behaviour purposely or does one suppose it's a bug within the new type rendering? Please Visit us @

    <a href="http://www.besanttechnologies.com/…/salesforce-training-institute-in-chennai">Salesforce Training in Chennai</a>

  4. Kashif says:

    Good Job

  5. Joey Peng says:

    For onprem customers, the new rendering will most likely come in the next major release. However please note these things are subject to change and I cannot commit on a timeline here.

    @Tue Ibsen: The problem you're describing sounds like a bug. Thanks for letting us know about this problem and we'll take a look at it.

  6. Winnie says:

    Great, Thanks Joey

    I tried and I am not able to access parent window information with window.parent.  Is there any alternate for the same ?

  7. olivia says:

    When does one decide to port those enhancements to On Prem customers?.

    <a href="http://www.trainingintambaram.in/php-training-in-chennai.html">PHP Training in Chennai</a>

  8. Joey Peng says:

    @Winnie, you may be trying to access it from the incorrect frame. If you tried from the browser console, it will always start you off in the upper most frame. You'll have to change that (different browsers have different ways of doing it. If you are trying to do it by attaching form scripts, it should work. If there are further issues you may reach out to our support team, or post the full script preferably in the forums.

    @Olivia, this will most likely be coming to onprem customers in the next major release however we cannot commit to timelines.

    Thanks,

    Joey

  9. aaidan says:

    I´m looking for some mobile platform (APP-best for iOS), that allows you to chcek your customers, tasks and of course deals. It should be user-friendly and of course for good price.

    http://www.besanttechnologies.com/…/php-training-institute-in-chennai    

  10. Farhan says:

    I have upgraded my online demo server for testing this new form rendering engine. Can you please tell me how on the form can I know that all the Dom elements are ready to access. Whats the right time to access DOM elements? with new rendering engine my form on-load events are unable to access any Dom elements.

  11. TKChaitanya says:

    Thanks for the great article. I have an issue with form load. In one of the form I am trying to clear the Status field option set values and re adding the  sub set of it based on the business needs. The script errors out saying "control.ClearOptions" is not a function in an onload function. Looks like this seems to be a bug?

    Thanks for clarifying,

    Chaitanya…

  12. Joey Peng says:

    @Farhan: we are recommending that you do not access DOM elements directly and use our inherent APIs. However if you really need to test when page is ready, our form onLoad event is still the main place. However please note that your custom scripts are not managed in a separate frame so you cannot access anything without first traversing iframes first. You can test this behavior even in the browser consoles.

    @TKChaitanya: the issue you're running into is potentially a bug however make sure you are using the correct function first as (clearOptions) as javascript is case sensitive.

  13. Aziz says:

    Hi,

    After migration from CRM 2013 to CRM 2015 (both online) we get the following error when openening different forms (e.g. Lead, Opportunty):

    ReferenceError: $ is not defined

    We see that Jquery 2.1.1 is loaded after the Global.asax

    How can we fix this?

    KR

  14. Joey Peng says:

    Hi KR, jQuery will indeed be loaded however your scripts are in a separate frame from Global.aspx and so you will not actually have access to it. You may upload your own version of jQuery.

    Thanks,

    Joey

  15. SANDEEP VASA says:

    Turbo forms is also causing many changes in the context parameter which is getting in the past or in CRM 2015 but now in 2015 7.1 the getsavemode is 70 always when you turn on the Auto save but in previous version doing any changes and navigating from the records may getsavemode is 2 and other times is 70 based on criteria and now this has been changed and not included and intimating the changes and no alternative way for it.

    can any one help me……..

  16. sg05 says:

    This issue occurs in CRM 2016. is this still not fixed in 2016 release?

  17. nithyaravi says:

    thanks for posting

    < a href="http://www.thinkittraining.in/salesforce">Salesforce Training in Chennai</a>

  18. nithyaravi says:

    Thanks for posting the Microsoft Dynamics CRM Online

    < a href="http://www.thinkittraining.in/salesforce">Salesforce Training in Chennai</a>

  19. narahdmmd says:

    I read your articles very excellent and the i agree our all points because all is very good information provided this ,through in the post.

    It is very helpful for me.

    <a href=" http://www.salesforcetraining-chennai.in/…/">salesforce developer training in chennai</a>

  20. narahdmmd says:

    I read your articles very excellent and the i agree our all points because all is very good information provided this ,through in the post.

    It is very helpful for me.

    <a href=" http://www.salesforcetraining-chennai.in/…/">salesforce developer training in chennai</a>

  21. narahdmmd says:

    I read your articles very excellent and the i agree our all points because all is very good information provided this ,through in the post.

    It is very helpful for me.

    <a href=" http://www.salesforcetraining-chennai.in/…/">salesforce developer training in chennai</a>