We as developers and CRM customizers always get excited of the thought of releasing a solution packed with wonderful features that would effectively serve the customer’s needs. When the solution gets handed off to the customer, we are comforted by the fact that when we went through the solution, everything was working perfectly.
There are some things that developers might not notice, but customers will when using the solution. We have compiled a list of patterns and best practices that we feel will really help you build consistent and easy-to-use solutions.
This blog will cover best practices:
Make sure your entity form has the complete set of fields
- Some important fields show up in the subgrid columns but are absent in the forms. If they were worthy enough to be in the entity’s subgrid, why omit them from the forms? This way, the customer would expect that same subset of data to be in the forms too, and would not keep flipping back to the entity subgrid. Also make sure to remove fields from the views that are not in the forms.
- Ensure that the entity subgrid column headers and fields have the same names, if possible.
There should be a good mapping between entity subgrid columns and form fields
Consider proper positioning and grouping of fields
- Think of which should logically come first. There are some fields that we expect to come right before or after a certain field. Also make sure that the fields have the correct tab order.
- Fields should also be appropriately grouped. There might be a lone field that is out of place and should not be part of that group.
- Consider appropriately grouping your fields using sections or tabs with the correct headers to differentiate them.
Know when to hide, remove or disable fields in the form
- Do not just hide fields with script. Only use scripts only when you want the form to be dynamic or when a field is only relevant for a certain condition.
- If the hiding of fields is very noticeable and confusing to the customer, disable a field rather than hiding it.
Pick list or dropdown values out-of-the-box (OOB) values should be checked for correctness
If you modify an entity to represent something different, it is important to validate that all the out of box fields and option sets are modified accordingly. For example, if you replace Account with Organization, the “Classification” field might be renamed to “Organization Type” and the options modified to include different organization types.
When new fields and images (like profile pictures) are added, they should be included in the tab order.
This helps the accessibility of your solution by allowing users to easily navigate through the different components without using the mouse. If the end user is using a screen reader, and is tabbing through the different form components, no element would be missed out.
Gaps or spaces in forms should be consistent and extra spaces should be removed
Sometimes we don’t notice that some areas in the forms are spaced too far apart. The tendency is customers will be scrolling down a lot to look for data or worse case, they would think there isn’t any more data at the bottom of the form.
Big spaces between areas should be avoided
In Views and Subgrids
Clean up your views
When you click on a specific sub-area to view entity data, do you want to view all Active Records or all records including active and inactive? Which view do you think should the customer see first? Which is more relevant?
In this case, it makes more sense to have “My Top Legal Accounts” view displayed by default (Figure B) rather than displaying all active accounts (Figure A).
Take advantage of entity subgrids
The solution works, the data is available but is not presented. The entity subgrid is an area where the customer can have a bird’s eye view or a summary of all the data for that specific entity. Take advantage of this by exposing the essential data so that the customer doesn’t have to dig for a record and open it, with the image below as an example.
Section headers serve as effective subgrid labels
When subgrids are added in forms, they do not have default or automatic labels. Even if the data is present through a subgrid, it would be more helpful if the customers would also know what that data is for at a glance. This is pretty useful especially when you have a subgrid that has no data. If there was no label, then the customers would have to keep guessing what that subgrid is for.
A section header gives a direct definition on what a subgrid is for
Have accurate chart titles.
Similar to labels in subgrids, if a chart would have no data, then the customer or user would have no idea what a specific chart’s purpose is. So make sure to have a chart title, and make sure it is correct.
Remember to correctly label the axes on the charts.
Because labels are set by default, most of the time we overlook this. Customers may use the charts for reports, and it would be a better experience for them if they don’t have to edit the chart labels themselves.
Legends are important.
Some customers may easily distinguish what the different values are for but some cannot. Different colors of the different components are usually not enough.
Legends point out what a specific value in the chart is for
Make sure your available charts’ views contain chart values that are applicable for the current context. Sometimes other charts that are applicable for another context get mixed up, so make sure those are removed.
Charts’ Views options should be up to date
Labels (numeric) for each value in the chart are helpful especially when all values are zero, else the customer will see just a blank chart (an example is the chart below).
Numeric labels in charts are useful
Consistency of word casings (e.g. Program Manager instead of Program manager)
Removal of unused out-of-the-box areas and sub-areas in the Navigation Pane. The best way to do this is to modify the security roles so people do not have access to areas that do not concern them.
E-mail templates should have bodies. That would really provide a great out of box experience for the customer, so they can just easily customize the text of the email and immediately use it.
Images should have alternative or substitute text. This is especially helpful when images are blocked by the browser or were not downloaded successfully. This way, customers would still be able to understand what the image represents despite its absence. So when you add your image to the form, make sure to fill-in the “Alternative Text” field.
Provide names and descriptions for all applicable fields in the solution to increase usability. The user wouldn’t need to hunt for the solution’s documentation and just instead go to the solution itself to see the entity descriptions.
The “Getting Started Pane” is customizable. You can use it to provide end users with helpful tips on how to use your extension on Microsoft Dynamics CRM. Learn more from Create Custom Get Started Pane Content.
As Vincent Van Gogh said “Great things are done by a series of small things brought together.” As we gain more experience developing solutions, we might discover other little things that could greatly increase the quality of a solution. This checklist may not be complete, so we’d love to have your help in filling it up. Share your thoughts and experiences via the comments below and we’ll add them to this list!