In this series on how Dynamics 365 Finance & Operations personalization affects performance, let's now look at a few easy performance killers that require no tools but common sense to deal with.
Specifically personal filters. This is the first thing I recommend clients check for when a user reports poor performance. It's not obvious from the available telemetry and it's very, very difficult to avoid. In practice users in D365F&O have the possibility to define their own filters to limit the records they are shown. It's very useful so it's popular, but there is a price to pay.
The problem is that users are not IT experts and have no idea what goes on behind the scenes, and will choose to filter on fields for which there is no covering index. An example that everyone can relate to and the best way to explain this is the All customers list page shown here, if you decide to filter on Name the response time will be slower than if you filter on Account.
The reason is that Name is not indexed and Account is. That is like looking for the name in a large book where there is no index for the names used. You need to read the whole book to find all the occurrences of the name you are looking for. Account however would be easier as you could look it up in the index, which would tell you all the pages where it occurs. This can of course get more complicated if for example you are looking for all companies whose name start wit say "C" and the telephone number "321".
And a really problematic option in filtering is using the operators "contains" and "does not contain" as shown in the screenshots in this article. This requires checking every single position of the field specified in the condition for the occurrence of the value specified of every record that matches any previous conditions. Now add this to not having a covering index and you can imagine the consequence.
Not allowing users to use the functionality is probably not a realistic approach as there are plenty of valid reasons to do so, so instead educate the users so they understand the price to pay and build more efficient filters.
As with any other performance improvements you can make around personalization, expect push back from the users (you are taking their toys from them), so you need to explain to them the consequence and the reason why you are doing it, and in some cases you have to leave things as they are and accept the performance hit. Make sure it's communicated and accepted by the user community and management.
Eiger Technology Services - Schäfligrabenstrasse 40, 8304 Wallisellen - Switzerland
tel: +41 76 818 4444 - email: services@eigerinvest.ch