Many customers come to us to help them track down their performance issues when it comes to CRM. They will see the infamous, never-ending “Loading” or “Saving” message on their screen and wonder what is taking it so long. It used to be easy to blame performance on the server, but with so many of our clients now in the cloud, it’s not that easy. This blog is from a recent request to help a client uncover their performance issues and the steps the team took to uncover the root cause of the problem.

Steps Taken

  1. We noticed there was a third party solution installed that added buttons onto the forms that allowed the client to generate PDF documents. Custom buttons can slow the rendering of a form depending on the code behind the button. To rule out that these buttons may be impacting performance, we installed the Ribbon Workbench and hid the buttons on the forms that were showing performance issues.  No visible change in performance, however, when the buttons were hidden.
  2. In looking at their workflows, we noticed there were real-time (synchronous) parent workflows calling background (asynchronous) child workflows. To rule out that this may have some impact, we changed the asynchronous workflow to be synchronous. Again, no visible change in performance.
  3. We looked at the system bulk delete jobs and found that they were small enough that it did not look to be impacting anything.
  4. We started receiving a SQL error (timeout).  This was persistent when keeping the session going for a few hours and returning back to the quote.
  5. Ran the plugin statistics advanced find to see how often the plugins are hit and for how long.  This information looks to be consistent for what the plugins were doing.
  6. Looked at the business rules on the quote and saw that there hiding/showing fields based on certain criteria. Each business rule can hold up to 10 conditions and we found one that used up the max so another one was created to complete the process.

Root Cause

Once the two items below were identified, a considerable change in increased performance was noticed. The Opportunity Product was populating quickly and the quote generated and opened with no errors and in an acceptable time.

  1. By turning off the turbo forms feature and selecting the legacy forms, there was a noticeable difference when accessing an opportunity and adding product.
  2. Once the business rules on the quote form were deactivated, there was a noticeable difference in the quote form rendering much quicker and the SQL error went away.

Next Steps

  1. With this being a new 2016 instance, the legacy forms should not be causing form rendering issues.   However, there is a plugin that will need to be reviewed to ensure that it is meeting the standard requirements with CRM. This system feature was introduced to help with identifying rendering issues for upgrades and will, at some point be removed.
  2. Because there is a lot going on in the business rules with hiding and showing fields based on specific criteria, we will break down these rules and determine if there is a better way to get the desired results. As much as we work to stay away from custom development (JavaScript or Plugins), sometimes it makes a difference.