The Microsoft Dynamics CRM Blog
News and views from the Microsoft Dynamics CRM Team

Performance Odds and Ends

Performance Odds and Ends

  • Comments 6

In this post, I hope to touch on a few areas that can affect performance that maybe not everyone thinks of when planning for and analyzing the performance of their CRM system.

Grids and Queries

Advanced Find, System Views, and personal Saved Views all end up going through the same CRM query infrastructure. The CRM query model is quite powerful. Though you can’t do everything you can do in SQL, you can do quite a lot, which means it’s possible to craft very complex queries that affect the performance of the whole CRM system.

The ability to create system views should generally be restricted to admins and customizers, but for personal Saved Views, you may decide to restrict these as well, if you find that some users are creating queries that are too complex or are negatively impacting the system. Unfortunately, it’s not possible to retrieve saved views that you don’t own or that have not been shared to you in CRM. Creating a simple callout that will automatically share a created saved view with a particular team or a specific user who is a system admin is one option here. I would be interested in hearing if the inability for system admins to view these saved views has caused issues in any CRM implementation.

Hopefully everyone already reviews their System Views as part of their CRM implementation, but often queries that work well on small amounts of data may start performing poorly as your implementation ages and you have more and more data. It’s always a good idea to review your system views to make sure they are performing within your goals.

A couple of simple things to look for when you are tuning a System View (or a Saved View):

  1. Are you retrieving too many attributes? Retrieving large numbers of attributes, especially those that are not covered by any index, may cause SQL to choose a plan that results in a slow, expensive query. Try to retrieve the minimum number of attributes you need to satisfy the view.
  2. Are your sorting choices resulting in a slow, expensive query? Choosing the right sort criteria can make a huge difference in your query. If the sort attributes cannot be determined from an index key, it may result in a slow, expensive query. Make sure the default sort order is performant. Another thing to examine is sorting on custom attributes and logical attributes. Due to how SQL handles sorting on a column for a joined table, these kinds of queries can result in queries that don’t perform as well as you’d like.
  3. Are you linking to many other entities in your view definition? The more linked entities you have, the more complex the query and this can impact performance.

CRM has several automated mechanisms that help keep the system performing well, but for best results, it’s always good to examine these things directly with the knowledge of your customizations and usage patterns.

Offline Data

Another kind of saved query data that can affect the performance of the system are the definitions of the data that is brought down to the Laptop client. This is configured via “Local Data Groups” in the Laptop client.

As with Saved Views, you may want to examine how users are customizing these views and give guidance on how to customize for best performance.

A couple of simple things to look for when you are tuning a System View (or a Saved View):

  1. Is the selection criteria too broad? CRM ships with default criteria set to some combination of objects the user owns and/or items that have been modified recently. If users customize these to select a lot more data, it will be expensive to compute on the server what the user should bring offline, and also expensive to transfer the larger amount of data to the client.
  2. Too many data groups. The more data groups defined for each entity, the more complex the computation must be on the server to determine what should be taken offline for the user. Sometimes multiple groups can be combined into a single group or eliminated altogether because they are redundant.

Wrapping Up

Hopefully at least one of the areas mentioned above has some tuning opportunities you haven’t yet explored for your CRM implementation. It’s important to understand how your users are taking advantage of the rich customization tools CRM provides to get an accurate picture of the performance of your implementation.

If you have other performance topics you might want discussed in a post, please mention it in a comment – we’d love to hear about it.

Jay Grewal

  • As a CRM consultant when I log in as the CRM Admin I would like to be able to see/review all the my views users have created.

    Here are some reasons:

    1. Make sure I am current with what they are doing. Very often I can suggest a better approach.

    2. Views that are structured correctly.

    3. The ability to remove redundant views.

    4. Often users ask me for help and I can't see the view. I have then go back and ask them to share the view with me, this should be automatic.

    5. Hey I am the CRM admin, how can admin when I can't see everything?

    Jerry Weinstock

    http://www.iBizInitiatives.

  • A point with regards to the Offline local data that I would like to see addressed is the ability to set a 'default' template for teams of users specifying what data gets taken offline - when you have 100 of those configurations to set up in exactly the same way it can take weeks just for that small part of the implementation.

    Cozy

  • Jerry, think you meant to point to http://www.iBizInitiatives.com.  :o)

  • Jay,

    Good article.  One question I have is regarding the offline data definitions for the laptop client.

    In addition to any filtering criteria that one would specify in their Local Data Group for an entity in order to limit the number of records that would be downloaded, do the user's security roles also limit the number of records downloaded?

    For example, we have set up our customer's remote users (CRM laptop clients) to have a Local Data Group defined for the Quotes entity with no criteria thus enabling the Quote records to be downloaded.

    In this situation what we think (hope) CRM is doing is only downloading quote records to which the user's security roles grants them access.

    After reading your article, it crossed my mind that the CRM laptop client might be downloading all of the organization's quote records from the CRM server and applying security roles later when the user goes to access the quote records offline.

    I hope this is not true.  I look forward to your response.

    Regards,

    Chris Barnickel

  • "

    ... do the user's security roles also limit the number of records downloaded?

    "

    Yes, CRM security also limits what records are downloaded.  Only records the user has at least read access to are downloaded.

    "... the CRM laptop client might be downloading all of the organization's quote records from the CRM server and applying security roles later ...

    "

    All the security is evaluated on the server as part of calculating which records to take offline.  No data the user does not have access to ever comes down to the client at any stage of the process in any form.

  • Jay,

    Thank you very much for your answer and clarifying what is downloaded to the CRM laptop client.

    Regards,

    Chris Barnickel

Page 1 of 1 (6 items)
Leave a Comment
  • Please add 6 and 8 and type the answer here:
  • Post