During the last few months, I’ve been working more than ever (well, most after my little stroke issue three years ago), and more work apparently creates more needs, more features, more improvement – just more!
A few new features, a lot of improvements
Why do I create new features and maybe a brand-new tool?
90% of those times because I simply need it. When I’m working for customers, by default, needs occur.
9% could be that I just had an idea to see if I could do it. Sometimes, I could, but most times, I don’t.
1% is that some colleague, someone in the community, or even someone from Microsoft suggested I do more.
We love Power Platform, right?
This lovely tech we are working with – Power Platform – can do anything. I’ve heard that, at least.
That is my default answer to our customers, anyway.
But there are a few itches… or a lot of itches.
Aaah, Fetch XML is sweet query tech to use, but why is there no help to writing it and then to executing the queries easier, and show the result in an easyreading way?
Jonas Rapp, 2012
Guess why I created FetchXML Builder for XrmToolBox 10 years ago, after Stunnware stopped to update.
Wow, it’s a good built-in logging for all our plugins! But how do we browse Trace Logs smoothly? The Dynamics UI is yucky in this case!
Jonas Rapp, 2015
Guess why I created Plugin Trace Viewer for XrmToolBox 8 years ago.
The classic Bulk Edit feature is good to have. But I’d need sooo much more features…
Jonas Rapp, 2011
Guess why I created Bulk Data Updater for XrmToolBox 8 years ago. That is what I’m currently improving since our Post-Migrate-Efforts at our customer – this tool helps me (and my colleagues) a humongous of time.
Lazy != Stupid
I’m proud to say I’m lazy. If you want to work hard, harder than necessary, then sure, keep on exporting to Excel, adjust, and import it again – or any similar (stupid) ways.
I know I know, it takes time to develop tools, but it costs me nothing compared to how much I gain from it. And guess what – it’s fun to develop! Ok, for the XrmToolBox tools, we are developing in tech from the 1990’s… WinForm. But at least it’s in C#, not Cobol or Visual Basic…!
Aesthetic Code
It’s easy – a bit too easy – to get stuck in efforts to improve the code. I mean, it works. Why am I fiddling with code I shouldn’t touch!? Because I can… We can always make it look nicer. Yes, it’s mostly only related to Aesthetic Code. I sleep so much better when the code looks beautiful. Feng-Shui-Code.
Unfortunately, it is also too easy to find semi-bugs to be big-bugs… One bug fixed creates new bugs…
Do I digress a tiny? Well yes. Let’s now, finally, go to what I actually created in BDU.
New in Bulk Data Updater
These are the things I really needed.
Support UpdateMultiple request
Whenever we want to update a lot of records, it’s smart to do it in “bulk”. Many records for each execution to the Dataverse API. Recently (?) the new feature UpdateMultiple
was published in General Availability status, which should be even smarter than the old version, ExecuteMultiple
, and we need to test the new one.
More progress info
When it takes a lot of time when I’m updating records – I and we all want more info. Tell me when it’s done?!
The Remaining updates after each execution say how much time there is left and how many records.
Note this is an estimation; don’t sue me if it isn’t exactly correct 😬
I think it’s even better to see how long time it takes for each record. This can be used to fine-tune the setting for the execution. Yes, you may cancel the execution and re-run it, but I’m sure in the long turn you will gain from it.
Suggests on the settings:
UpdateMultiple
might be faster than the classicExecuteMultiple
. Or not!- Play around with batch size. Be aware of timeout issues.
- Bypass Custom Business Logic may save a bit of time and may save enormous time! But be aware it skips all your smart code and flows etc.
- Shall we Ignore errors? During migration, it may often be that you don’t care about validation plugins.
Why filter columns?
I’ve removed the old version of filtering attributes and instead added a lot of smarter filtering.
I suggest you start with only showing “In the query.” This means that only columns are included in the query, either if you open it from a View, a File, open FetchXML Builder to help you build the query, or just type it manually. Usually, you should retrieve columns that you want to update – that will save a lot of time!
What is also common to update, are columns shown in Views or on Forms. That’s why you can select it here.
Use Import Sequence Number
This column is available in all tables (except a few very specific tables) and it is smart to use it!
When I use BDU and update a lot of records or a few, I use the Import Sequence Number. This column has type “Whole number”, or as I say, an int
. To keep track of what I have worked on, I set some unique values to be able to find the updated records later.
An easy way to set the number is yymmyynn
. My first update today will then be called 24021101
in the Import Sequence Number column. Next one: 24021102
.
Even more intelligence help
There is an issue on GitHub, to Auto-set ImportSequenceNumber, help to find the records affected.
Does that sound to be a good feature? Vote!
Nicer buttons
This is a very important improved feature! Eh, no… but why look ugly when it’s possible to look nicer? 😉 Select here if the tool shall show you tables, columns, and even data in Friendly or in a rougher Raw way.