Microsoft caused quite a bit of unrest when they released CRM 2013, suddenly making the Advanced find button difficult to find, if you are interested I wrote about that in this post – Good CRM design should not make users think
In this post I want to write why I love the advanced find functionality in Microsoft Dynamics CRM.
I view the CRM Advanced find as an awesome swiss army knife
To new users and inexperienced CRM developers it looks like a simple tool to search the records in CRM.
To an experienced CRM developer it’s one of the key weapons in the CRM Developers armoury which when used correctly can save you loads of time and make your life a whole lot easier.
It can speed up navigation, help you create queries for your plugins, export and enrich data and even help you fix bugs. In some cases when being brought onto an existing product, I have used the advanced find to go directly to records of a certain type because I didn’t know where to look in the CRM system.
What is advanced find?
Advanced find is a tool which allows you to create queries against the CRM database. It allows you to select the fields you want to see in the results and filter the query with conditions.
You can then save this advanced find query as a personal view
The Advanced find is a lot more than just a tool to query CRM because in many situations it can
- Save you time
- help you understand
- view field values and related entity field values
- speed navigation
The reason CRM Advanced find is so useful (and why users and CRM developers were annoyed when Microsoft made it hard to find) is CRM is really one big database full of useful data. The CRM GUI
- view the data using a web browser
- validate the data input
- organise the data into forms etc
- Add security
- organise using the data
- Development to automate adding/viewing data
The CRM GUI (website) has lots of functionality for validating and displaying the data. This is really useful but for CRM Developers they often want to navigate the system quickly and are not interested in the GUI and business logic but just want to get to certain records.
The advanced find lets you search all the records in your CRM database and apply a filter condition to allow you to only bring back the records you are interested in.
One important consideration to remember when using the advanced find is it does apply your security profile, so you will only see what records your security profile has privileges to see.
Quickly find the records you need
The beauty of advanced find is it can bypass most the GUI and get to the record you want you want with a couple of clicks.
It can also bring back groups of records you want, which is more difficult to do with the front end GUI
The great thing is you can save the advanced find into a view so you can repeat the process even quicker next time.
When you don’t know the business logic
In some projects a CRM developer can be brought into the project in the bug fixing phase. It can be difficult to fix bugs when you don’t understand the business logic or how the system works.
Using the advanced find can help you easily navigate to the entity records you are interested because with the advanced find you can view all the entities in alphabetical order.
This can help you if the bug exists on a specific record type and you don’t need to understand the business logic, e.g.
- Simple plugin triggering on update
FetchXML is a great place to create your query
When I have to create a query in a plugin, I usually start with an advanced find to get the logic correct.
You can then download the FetchXML and you can see which fields you need to use and how the filters should be structured
The query I was interested in doing needed to filter out the duplicates so I did it in FetchXML. When I didn’t filtered out duplicates (the OData query) it was returning 1500 records, which slowed down the form load but when I used FetchXML with distinct set to true, it returned 25 records.
FetchXML directly in plugins
You can run FetxchXML code directly in your CRM plugins instead of query CRM using Linq or QueryExpression.
I go through the process in the blog post below
Build Queries with FetchXML instead of QueryExpression
One of the advantages of using FetchXML in a plugin is you can create the query in Advanced find which can sometimes be easier
Create saved views
Saved views can save you lots of time because you are only viewing the records you are interested in and filtering out all the other entities.
Using the Advanced find to select not only the records you are interested in but also the fields is very useful.
Being able to export these records and send them to someone who doesn’t have access to CRM is a very handy trick to customers.
Exporting the data will also allow you to move the data between CRM organisations and environments (e.g. Dev, Test, Prod)
Enrich Data – e.g. export, change, import
The good old Enrich data functionality, which is has the good, the bad and the ugly all in one. It’s called Enrich the data but what it really means is you can export some records and when you import them it will automatically know which records to update.
The enriching data functionality works by adding the Guid of the records to the export file (and some checksum columns etc) which are read by CRM when you re-import the data. If it sees the values it knows you are not importing new data by updating/enriching existing data.
Once you have a list of the entities you are interested in, it’s easy to bulk edit those records and assign them all the values.