Thursday, November 23, 2017

MS CRM new form rendering or Turbo form rendering

To improve the performance of form rendering, Microsoft dynamics CRM come up with new form rendering engine since Online 2015 update 1 (V7.1). Before that we had legacy rendering where everything will works on sequence order.

Turbo form rendering or new form rendering forms will load significantly faster and more efficient. Turbo form rendering has same support as legacy forms are having for client scripting, form XML Schema that means no fundamental changes made in terms of what forms generally does.

So what are the main changes?
Changes were mainly based on optimizing the form loading process. Optimization have been done on mainly two ways.
  1. Loading process of the form
  2. Handling of Cache.

Loading process of the form: Here optimization has been done by running maximum no of operations parallel to avoid browser idle time, amount of content being cached has been increased, event part of rendering process have been moved partially to server and optimized the initialization of controls.

CRM forms do have iframes internally to load webresources, earlier these iframes are discarded and reloaded on each form load. But in new design iframes will not  be discarded but keep them around, as common scripts are already parsed need not load again. But for custom scripts and ISV scripts new design will load these in new iframe which will be discarded when form closes. Earlier, these would be loaded in the same iframe as the form.

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. 

Below are the navigation details to enable or disable legacy rendering.

Settings -> Administration -> System Settings -> General. Select "Yes" under "Use legacy form rendering" to disable turbo forms or else select "No"

No comments:

Post a Comment