What Is The XRMToolBox?
The XRMToolBox is a really handy third-party app that connects seamlessly with the Microsoft Dataverse.
It’s a suite of tools designed to help developers with customisation, integration and operational tasks in things like Dynamics BC and CE, model-driver power apps and more.
I won’t cover the entire universe of the XRMToolbox today as I’m sure if you’re reading this you’re already fairly familiar with it and I’d hate to teach you how to suck eggs.
What I will do however is run through my favourite features of this awesome bit of kit, as well as some cool stuff you might not have known you can do with say, connection settings or when setting environmental stuff, that’s going to make your life just a little easier.
Author: Phil Kermeen
Technical Architect, FormusPro
XRMToolBox Start Page And Favourites
Jumping right in then, let’s look at something I think is super, super handy, that often gets overlooked, and that’s the start page.
When I’m working on a project I’ll always go in and jump straight into an environment from here.
It’s not complicated to use but I always highly recommend doing so.
One of the reasons for that is a great feature found here that I didn’t use a lot until recently called Favourites, but now I’ve noticed it I tend to use it all the time.
When using any tool with the XRMToolBox, just a simple right click will add it into your favourites so it’s always available right there, at the click of a button.
Something else I always recommend adding here is FetchXML Builder as it’s a go to tool for about 80% of what I do, because, as we all know, the data model rules everything when it comes to Dynamics!
You have a lot of choices here!
You can use the D365 log-in to do stuff straight in the app.
And… I only found out the other day when I had an issue logging into an environment, that, instead of giving up and saying “well, guess I can’t use that for now” I could just log-in using a connection string. It’s even better when you use it in conjunction with something like LastPass or Bitwarden.
However, I do always make sure to mark it, so I know I’ve one connection doing it one way and the other set-up as a connection string, as if you’ve got usernames and passwords that time out after a while, your connection string wont update automatically, meaning it’s always a good idea to document it somewhere for when you forget what you’ve done.
Something else I really like in Connections is Set Environment Highlight.
Not sure about you, but something I always hate is accidentally working live in a production environment, as you know any mistakes with the data are going to be painful… which is why it’s always nice to get a big fat warning in the form of a red band around the edge to let you know you are!
The last handy feature I’ll mention in Connections is the setting that allows you to define a default browser and profile so if you’re driving around in something like Google Chrome you’ve a bunch of different profiles you can in a handy dropdown menu… such as admins or test users etc which is really handy if you’re trying to replicate a client’s problem on your end.
Things are getting interesting now as I move on to FetchXMLBuilder.
You should already be familiar with FetchXMLBuilder as it’s a fairly standard tool, but it’s still worth remembering that a lot of these are set ‘as-on’ most of the time with a live update query which is quite useful.
For instance, if you’re cutting and pasting a piece of FetchXML from an advanced find and you’ve downloaded your FetchXML then it’ll keep the two panes in sync for you as long as the ‘live update query’ checkbox is set.
I’m pretty sure I don’t need to teach you how FetchXML works but a couple of settings I’ve always found really handy are the Result View and the fact there’s an index you can shut on and off.
Result View lets you easily see the raw fetch result which will sometimes give you extra bit and pieces that you might not normally pick out in the code whilst the index lets you easily select a particular column or line for when you’re talking about it with a customer.
Something else super handy is the Convert button, as a lot of the time, if you’re doing things through the web API (for example when you’re building power automate flows) you may not know what the pluralised name of the entity value is.
One of the easiest ways I’ve ever found to find that is just to use the Convert button which will give you the name straight away.
Most of the time it’ll be straight forward; it’s just the singular name with an S on the end but it’s not always the case so this is and quick and easy way of getting it.
Bulk Data Updater
Bulk Data Updater works great (most of the time) with FetchXMLBuilder and is awesome for repetitive testing of clearing optionsets, yes/no fields if you’re working with huge chunks of data.
It’s useful if you need to do a lot of reading of your data and then if you need to go and actually update that data, as long as you’ve remembered to keep your tools up to date (something that trips up more people than you think).
A lot of times I prefer to modify data in the form, but I find Build Data Updater handy when I’m using hidden tabs or fields and using God mode (part of the ‘Level Up’ Chrome Browser extension) to look at specific bits of data.
If you’ve got a required field though, or you’ve added a required field onto a form and there’s imported data that hasn’t got a set value on an option set and you set it on a form then you can’t go back and clear the value out.
When resetting an option set, you can just select the option set, set it to null and then by just adding the option set attribute name you can hit update records and reset a piece of data easily!
Plugin Trace Viewer
One of my favourite things about Plugin Trace Viewer is that there’s a setting that, when coming in and out, reminds you to switch it off to stop you chewing up lots of space accidently.
A lot of the time, Plugin Traces are handy as there’s a system setting that tidies everything up after two days in an out-of-the-box view, but the reminder is always good before you get to that point, keeping things to a minimum.
One of the other things on the Plugin Trace Viewer is that there’s settings that lets you switch features on and off after jumping straight in.
If you’re struggling to figure out why your trace isn’t appearing, then it may just be you’ve not ticked synchronous or asynchronous.
It also has some great correlation stuff to let you see which trace logs have been triggered together and how they’re tied together, and one links to another.
Attribute Manager is just a very, very handy tool.
It started out as a local optionset to global optionset issue as originally in workflows if you had one local optionset value and had identical local optionset values on another entity you’d be using the workflow editor and the two would not map across!
The only way to fix that issue was to merge the two local optionsets into one global optionsets but of course, once you do that, you need to sort the data out.
Now anyone can merge local optionsets into a global, but the data then becomes a headache… except Attribute Manager stops that happening for you.
It works by retrieving your entities, migrating your data and importing a mapping file. From there you can choose an attribute, rename it, and then use the handily provided steps to do all the work for you.
Continuing with our data theme, Deduplicator is a tool I’ve found very handy when looking at deduplication jobs.
Dynamics dedupe tools are kind of useful but can be a little scrappy sometimes and haven’t changed a lot in the last few years. It’ll send you an email with a list of all the duplicated data, but it’s not the easiest to manage.
XRMTollbox’s DeDuplicator will let you dedupe against runtime, specifically in one go, instead of having to set up dedupe rules, publish them, wait for the system to catch up and do all the necessary indexing, this looks at your data at runtime.
Access checker is great when using Business Units (BU’s) to control security as it allows you to find an entity, find a specific instance of the entity, find a user and then ask if this user can go look at the entity. What’s missing? What’s not missing? And then gives you a nice red or green view of the world showing if someone can see an item or not.
That’s helpful when working with BU’s as it’s not always clear whether or not, due to team ownerships or BU ownerships or security roles, if someone can see an item or not.
User Settings Utility
Finally, User Settings Utility is super handy for the bulky setting of time zones.
I think the default tends to be UTC when adding a bunch of new users to system but can be an hour out depending on if the clocks are currently forward or back by an hour.
This tool ensures everything can be configured properly en masse.
We can also set currency in here using the tool, overriding any pre-configured choices for everyone at once.