Dynamics 365 Performance Considerations Series 2 of 2

In this series 2 of 2, performance and a responsive User Interface in Dynamics 365 are key items when discussing user adoption, Users require access to their data on a multitude of devices and locations around the world in this Series of 2 l will explore some key considerations.Implementations need to be designed to work efficiently on any device that access Dynamics 365. Some additional  elements which impacts user performance are:

Auditing

If you are using Auditing in the system ask yourself, do you need to Audit the following?

User Login Access
Every Entity
Every Field (for each Audit Enabled Entity)
Only Audit what you explicitly need to Audit, as creating the audit records may not have an immediate performance hit, over time the system will slow returning all the audited data over a period of time when viewing the Audit History.

Data Query Operations

Microsoft Resource: Analyze and improve data query performance

For each Entity in Dynamics 365, certain queries could take a long time to retrieve data or perform actions  . Microsoft defines a long running query as a query that takes three seconds or longer to complete. Typical examples of a component that can have a long running query is a plug-in with custom Fetch-XML or a sub-grid or view.

With Dynamics 365/CRM 2016 Update 1, System admins can add optimisations which aim to help reduce the amount of time the long running query takes to load. From a database perspective, optimisations added through the front end add one or more Microsoft SQL Server indexes. This is a new item of functionality which previously required a support ticket with Microsoft Support to identify the long running queries and to be able to create indexes. I have not yet used this piece of functionality but I will be looking at this over the next few months.


The Clients Machine

Hardware and software requirements are the two important items when considering the clients machines that are used to access Dynamics 365 via the Web Client, the following considerations should also be considered for the Outlook Client except for the Browser Items as Outlook uses IE as a rendering engine. The following are my main recommendations to get the best performance from using the Outlook or Web client; these recommendations relate to a Windows PC only such as a desktop, laptop or surface.

Windows Hardware requirements

The following items can have a massive impact on the Page Load times from a hardware perspective:

Processor – 4/8 cores (The faster the processor/number of cores, the faster the page can render on the screen)
Ram – 8GB (the more the better and not using the Hard Drive for virtual memory)
Solid State Drive (generally Windows/OS’s run faster than on a mechanical hard drive)
Network Connection – Ethernet Cable Connection over a WiFi or 3G/4G signal (this will help with both greater bandwidth and reduced latency)
Monitor – 1920×1080 (p if Europe!) for best resolution and display as Dynamics 365 dynamically increases or decreases the resolution which can freeze the display as it changes.
Software requirements
200px-windows_10_logo-svg
64 bit windows – allows for greater memory usage by Internet browsers and not restricting an upper limit of 4GB Ram
Windows 10 – this is generally faster and cleaner OS than Windows 7
Edge over Chrome/IE/Firefox, Edge is generally a faster browser for rendering and displaying web pages (this is different for System Admins as some functionality still does not work properly in Edge)
Latest version of each browser with minimal addins/plugins running
Keep Zoom Level at 100/125%
Latest windows updates
Latest Dynamics 365 Outlook Client updates
Mobile Device requirements
I have worked on many Dynamics CRM projects and throughout the years, Mobile device usage and access to CRM has grown especially with Microsoft encroaching into the CWR/Resco arena with its Mobile Phone and Tablet applications which are now starting to provide fully offline functionality. Providing a recommendation is still quite hard – and it also depends on which OS is used.

I will admit that I use iOS, I use iOS devices day in and day out. I have used Windows and Android also for personal use and found iOS to be the simplest and the Apps are built work, and the Microsoft Office 365 suite of Apps are second to none. I do however do not have the latest devices; I use a iPhone 6 and an iPad Air (1st) running iOS 10.3 (at time of writing this blog) and they work fine with no crashes. so my recommendations are as follows.

iOS
Latest iPad or iPhone (as they are generally faster)
Latest iOS
WiFi over 4G/3G
Windows 10 Mobile
Lumia 950/XL
Windows 10 Mobile (Insider Preview builds – fast track for latest update)
Wifi over 4G/3G
Continuum!
Android
Latest Samsung/Google Phone
More Ram the better
Latest Android version (if the phone manufacturer ever releases updates….)
Wifi over 4G/3G
Dynamics 365 Customisations – Form Objects
BPF

The last of the factors affecting performance can be the actual customisations developed as part of the solution built for the customer. Once a User has clicked on a record to open it, Dynamics 365 will use the available network to make a request for the record and download the form (for the requested entity record) and all child objects and the data contained on the form itself related to the record requested.So the total request will be influenced by:

The available Network Infrastructure (influenced by Latency and Bandwidth)
The Servers performance and the structure of the data query
The clients machine – making the request and the ability to process the downloaded data
The customisations themselves
Performance Centre
Microsoft have released a tool called the Performance Center (available in CRM 2013 and above I believe) which can be accessed in Chrome or IE (I find this works better than the original combination) by pressing the following key combination at the same time:

CTRL + SHIFT + ALT + Q

The tool allows you to visual all of the form components loading with their associated loading times. It will aid you in identifying the components which are having a negative impact on performance because they are taking a long time to load.

Performance Centre

There are two very good blogs on how to use the tool here:

Authoring Company: Cobalt Understanding the Microsoft Dynamics CRM Performance Center
Authoring Company: Magnetism Solutions Microsoft Dynamics CRM – Performance Center / Form Load Analysis
Microsoft Resource: Optimize form performance

Form Customisations

From a customisation perspective items below can collectively have a negative effect of Dynamics 365 form is loaded onto the clients device/machine:

Form Layouts – such as collapsed tabs etc
Client side automation
Sub grids
Web resources
Form Layouts
When designing CRM Forms (UI) for each entity, a simplistic/minimalist design (less is more) is better than a bloated form with hundreds of fields, the more objects/controls on the form – the larger amount of data that can be displayed which will ultimately take longer to query and download to the clients machine. When designing forms with multiple tabs, consider having the tabs collapsed when a page is loaded (OnLoad) – objects contained in tabs would only be loaded when the tab is expanded (i.e. reducing the initial Page load time). The Tablet client restricts you to a maximum of 5 Tabs and 75 Fields being displayed on the device, with the mobile apps growing and using the same forms as the web client, this is a good design consideration to always take.

If Field Level Security is also implemented, then there are additional levels of access that needs to be queried by CRM and increasing the page load time to be able to query the data contained in those fields which will follow a similar hierarchy to Security Roles assigned/inherited with the User.

My recommendations are:

Keep to less than 75 Fields on the form – Use Business Process Flows to facilitate displaying extra fields)
Keep to 5 Tabs or Less
Collapse all Tabs on form load except the main first Tab
If considering Mobile design – keep to a single column format in Tabs and Section
Increase your label widths to show all the labels (i.e. 175 or 200 pixels) which will stop Dynamics 365 to stop hiding some or all of the label
Read Only controls are quicker at rendering than editable Fields
Keep a track of which tabs and fields you have enabled for Mobile externally
Mobile Preview
Use the Mobile Preview (when customising the Form) in the Form Designer – click preview and select the correct mobile screen size. This will start to render the Mobile Client to display the Form you are customising to see what controls will exist on the Mobile form.Mobile Preview

The following items also add additional overhead to page load times as they are a lot more complicated and require additional data to be downloaded.

Social Pane
Quick View forms
Bing maps
Timer controls
Charts
So if these items are not being used, just remove them.

Form designs often involve some sort of Visibility display logic (i.e. show Field Y if Field X contains a value); this used to be controlled through JavaScript only – and more recently with Business Rules (and also Business Process Flows!).

JavaScript can extend the Client Side automation quite significantly and can perform simple or complex CRUD operations if need be. The more code you add, the CRM Form will load any JavaScript and also perform any functions using the OnLoad event. Once the JavaScript has loaded, CRM will then load and execute any Business Rules too!

Additionally – any unsupported customisations (mainly unsupported JS running on the form or interacting with the DOM) can negatively impact Page Load times and are not recommended.

My main recommendations are to keep JavaScript to a minimum if not required, could these activities be catered for using Workflows and Business Rules or Business Process Flows. If using a lot of JavaScript because of the complicated requirements – keep the number of JavaScript libraries to a minimum and have 1 big library in your form event libraries.

Microsoft have recently announced the deprecation of the old 2011 end point and this will be removed after version 9.0 Important Changes – here, the older SOAP endpoint is being replaced with a faster and more efficient REST API (also known as the Web API); so when writing form scripts, utilise the new end point!

Clients who want to use the new Offline capabilities with the Mobile Apps, think about your JavaScript and decide if they are required to operate on the Mobile Device, as some of the actions may fail if there is no active connection to the Dynamics 365 server to query data. You can now define Scripts that can detect the Offline availability of the Entity and what actions can be performed using the Xrm.Mobile Namespace

Sub grids

Sub grids on forms have a negative affect on the page load time as client will need to display and render additional related data based of the following:
Users access through security
View filter criteria
The data displayed could also feature lookup fields from other records, and the number of columns should be kept to a maximum of 5/6 before a major negative impact is felt.

When designing forms, Sub grids should be (recommended) placed in a Collapsed Tab by default until they are needed, when the user needs to read/interact with that data then they can expand the appropriate Tab. If the data is not required on the form, then keep access to that information controlled through the navigation related entities area, this will make that data available from the form but not on the form itself. Keep the number of columns to a minimum and preferably use columns which are sorted by an indexed (SQL) field.

Editable Grids

Editable Grids are a new feature of Dynamics 365, and allow users to in-line edit related records from a parent record or list view. The functionality allows greater control of more data from a single location and will automatically add overheads to the network performance requesting more data.

Keeping the number of editable grids to a minimum if the related records displayed in the sub grid are there mainly for reference and should not be edited (I.e. Custom auditing, market sectors etc.)

Web resources

Forms can have Web Resources embedded into them which can be used to display custom content (i.e. images, html pages etc.). These also increase Page Load times therefore consider putting these into collapsed tabs also and whether they should be rendered on a mobile client or not.

I hope this blog helps a few organisations with their Dynamics 365 implementations and identifying potential performance issues with your Users.

Comments

Popular posts from this blog

Dynamics 365 (on-premises), version 8.2 upgrade/import to v9.0.2 Failure

Dynamics 365 - Dashboards – You do not have enough privileges to access the Microsoft Dynamics CRM object or perform the requested operation.

CRM 2016 integration with SharePoint 2016 On Premise (401) Unauthorized Error