Utility Free
Data Compare
An XrmToolBox tool that checks a data migration: it compares the records of a view in two Dataverse / Dynamics 365 environments, matched on their GUIDs, and shows which records are missing, extra, different or identical, column by column.
Overview
Data Compare checks a data migration. It reads every record of a view in two environments:
- the primary: your XrmToolBox connection, where the data came from;
- the secondary: where the data was migrated to.
It matches the records on their GUID and shows each one in one of four colours. Data Compare is read-only: it never writes to either environment.
| Colour | Status | Meaning |
|---|---|---|
| Red | Missing | In the primary, not in the secondary at all. |
| Amber | Different | In both, but at least one compared column differs. |
| Green | Matching | In both, identical. |
| Blue | Extra | In the secondary's view, not in the primary at all. |
- Every column is compared, not just the view's columns. An editable list of audit, owner and currency columns is ignored. A prefix filter can limit the comparison to your own columns, for example
contoso_andnew_. - Side-by-side detail. Select a record to see every column, with the primary's value next to the secondary's and the differences highlighted. You can search the columns or show only the differences.
- Filters for the results by status, by text, or by a differing column. Each column is listed with the number of rows it differs in.
- Entity mappings. Compare a table with a differently named table in the secondary, for data migrated into another table, with column pairs for renamed columns. Records are still matched on their GUID.
- Thorough matching. A record that a view does not return is looked up by id in the other environment before it is called missing or extra.
Requirements
- XrmToolBox 1.2025.10.74 or later.
- .NET Framework 4.8. The tool is a .NET Framework 4.8 Windows Forms assembly.
- Environments: Dataverse online and Dynamics 365 on-premises 9.x.
- Two connections:
- the primary, which is the tab's XrmToolBox connection and the environment the data was migrated from;
- the secondary, chosen with Select secondary environment..., which is the environment it was migrated to.
- GUIDs kept by the migration. Records are matched on their primary key, so the migration must have kept the GUIDs.
- Read-only: nothing is ever written to either environment.
Configuration
Install from the XrmToolBox Tool Library
In XrmToolBox, open the Tool Library, search for Data Compare and install it.
Manual install
- Close XrmToolBox.
- Right-click the downloaded zip, choose Properties, tick Unblock and click OK. Windows marks files downloaded from the internet, and XrmToolBox cannot load a plugin DLL that is still marked.
- Extract the downloaded zip into
%AppData%\MscrmTools\XrmToolBox\Plugins. The zip holds one file,MyscotekDataCompare.dll, and only that file is needed. - Start XrmToolBox and open Data Compare from the tools list.
First use
- Connect to the primary. Connect XrmToolBox to the environment the data was migrated from and open Data Compare. Its entities are listed on the left; type in the filter box to find one.
- Choose the secondary. Click Select secondary environment... and pick the environment the data was migrated to. XrmToolBox adds it as an additional connection, and the tab keeps the primary. If you pick the same organisation twice, the tool asks before comparing it with itself.
- Pick an entity and one of its views. System views come first, then your personal views;
(All records)appears when the entity has no views. The view decides which records are compared and which columns the grid shows. - Compare. Click Compare, or double-click the view.
- Every page of the view is read from both environments.
- The records each view did not return are then looked up by id in the other environment.
- Cancel stops the run and shows what was already decided.
- Read the result.
- The summary strip counts the records of each status.
- The Status list, the Filter rows... box and the Differing column list narrow the grid.
- Select a row to see all its columns side by side. Tick Differences only, or use Search columns, to focus on what matters.
- Tune the comparison.
- Compare options... edits the ignored attributes and the prefix filter, and re-evaluates a shown result at once without reading anything again.
- Entity mappings... maps a table to a differently named table in the secondary. Mappings apply from the next Compare.
The log can be copied, saved or cleared. Settings are stored in %AppData%\MscrmTools\XrmToolBox\Settings\MyscotekDataCompare.xml: the ignored attributes, the prefix filter, the entity mappings, Differences only and the last entity. PageSize (1 - 5000, default 5000) can only be changed in that file. Close XrmToolBox first, because the tool rewrites the file when it closes.
Limitations and notes
- Derived columns are not compared. These are base-currency amounts, lookup names, image URLs and time stamps, and rollup dates and states. They are shown but never compared, because the platform computes them and they differ between environments by design.
- File columns are compared by presence only, not by their contents.
- Columns that only the secondary has are shown but never compared. The primary's metadata decides what is compared.
- Entity mappings rename only the main entity's own columns in the view. Other link-entities are passed unchanged, so a renamed linked table makes the secondary's view fail; the run then falls back to lookups by id.
- Distinct views are read by page number. On very large views this is slower, and records changed while the view is being read can be missed or repeated.
- Linked-entity columns of the view are shown but not compared.
- Aggregate views cannot be compared.
- Memory: the records of both environments are held in memory with all their columns. Views of a few hundred thousand records are fine; millions are not.
Releases
| Version | Released | Size | SHA-256 | Download |
|---|---|---|---|---|
| 1.2026.10.2 Latest | 104.6 KB | 3c2c48061e9e5e14ba60ad9f2e7e39e441d11ac8f846e7323f8b1bc140cdf000 |
Download |
Release notes
Version 1.2026.10.2
1.2026.10.2: the first version on nuget.org.
- Entity mappings: compare an entity with a differently named table in the secondary (data migrated into another table), with optional column pairs for columns that were renamed. The view is rewritten for the secondary table, and the records are still matched on their GUID.
- Compare options... replaces Ignored attributes... and adds a prefix filter that compares only the columns whose names start with given prefixes (for example
contoso_,new_). - Column search in the detail pane: shows only the columns whose logical or display name contains the text, and is kept from row to row.
- Differing column filter for the results grid: choose a column, listed with the number of rows it differs in, to see only the records where it differs. It works together with the status and text filters.
1.2026.10.1 (2026-10-02): the first version. This version was never published.