Utility Free
Data Copier
An XrmToolBox tool that copies the records you select from one Dataverse / Dynamics 365 environment to another, keeping their GUIDs, together with the records their lookups point at and, optionally, their child records and N:N associations.
Overview
Data Copier copies the records you select from a source Dataverse / Dynamics 365 environment (online, or on-premises 9.x) to a destination environment, keeping the same GUIDs. Typical uses:
- moving test or reference data between environments;
- reproducing a production record, with everything it depends on, in a development environment;
- seeding a new environment with a consistent set of records whose ids must not change.
What it does:
- Pick and tick. Choose an entity and one of its views.
(All records)is available for every table, including tables without views. Load the records page by page, filter them, and tick the ones to copy. - Lookups keep resolving. The records a copied record points at through its lookups are copied first, as deep as needed, so every lookup still resolves in the destination. Circular references are filled in afterwards.
- Child and associated records, optionally. The records in the selected records' subgrids (1:N) and their children can come along, as can records associated through N:N relationships, which are then associated in the destination too. A Relationships picker chooses which relationships are followed. Private (system) tables are hidden by default, and a switch in Settings includes them.
- Clear rules.
- A selected record that already exists is updated; a related or child record that exists is skipped.
- Users, teams, business units, the organisation and currencies are never created by default, and the list can be changed in Settings.
- Virtual tables are only checked.
- Won opportunities, resolved cases and other closing states are applied with the platform's close messages.
- Connection mirrors are never copied.
- Safe to try. A dry run shows everything that would happen without writing anything. Other options preserve created-on dates and bypass custom plugins (online only). Every step is written to a colour-coded log.
Requirements
- XrmToolBox 1.2025.10.74 or later.
- .NET Framework 4.8. The tool is a .NET Framework 4.8 Windows Forms assembly. XrmToolBox provides every other assembly it uses.
- Environments: Dataverse online, or Dynamics 365 on-premises 9.x, as source and destination. Bypass custom plugins works on Dataverse online only.
- Two connections: the source, which is the tab's XrmToolBox connection, and the destination, chosen with Select destination environment....
- Privileges:
- The destination user needs create and update rights on every entity involved.
- Preserve created on needs its own privilege. If the destination refuses it, the record is created without it and a warning is logged.
- Bypass custom plugins needs the
prvBypassCustomPluginsprivilege.
Configuration
Install from the XrmToolBox Tool Library
In XrmToolBox, open the Tool Library, search for Data Copier 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,MyscotekDataCopier.dll, which is the whole tool: XrmToolBox provides every other assembly it uses. - Start XrmToolBox and open Data Copier from the tools list.
If the tool does not appear, make sure XrmToolBox was closed while the DLL was copied. As a last resort, close XrmToolBox and delete Plugins\manifest.json; it is rebuilt on the next start.
First use
- Connect to the source. Open the tool and connect to the environment to copy from with the XrmToolBox connection bar. The entity list fills in; type above it to filter. Virtual tables are marked
(virtual). - Choose the destination. Click Select destination environment... and pick the environment to copy to. If it looks like the same organisation as the source, you are asked to confirm before anything is copied.
- Pick an entity and a view. View lists
(All records)first, then the system views, then your personal views. - Load the records. Load records loads the first page (500 records by default), Load more loads the next page, and Load all loads every page.
- Tick the records to copy in the Copy column. Filter loaded records... narrows the grid and keeps the ticks; Select all / Select none act on the rows shown.
- Choose the options. They are remembered between sessions.
- Dry run (write nothing).
- Preserve created on (overriddencreatedon).
- Bypass custom plugins (online only).
- Create related records for N:1 relationships (lookups): on by default.
- Create related records for 1:N and N:N relationships (subgrids): off by default. Use Relationships... to choose which child and associated records come along.
- Copy. Click Copy selected records. Progress and every step appear in the log, and Cancel stops before the next record. Copy log and Save log... keep the log.
Settings... edits the tables that are never created, the page size and Show private (system) tables. The default never-created tables are systemuser, team, businessunit, organization and transactioncurrency.
Show private (system) tables is off by default. Switched on, it lists the tables Dataverse flags as private, marked (private), and lets Relationships... and the copy follow 1:N and N:N relationships to them. Most private tables are internal plumbing that should never be copied, but a few hold data you may want: connectionroleobjecttypecode, for example, holds the record types each connection role applies to. Private tables have no views, so use (All records). The entity list follows the switch without reconnecting.
Refresh entities reloads the entity list and forgets the cached metadata of both environments. Settings are stored in %AppData%\MscrmTools\XrmToolBox\Settings\MyscotekDataCopier.xml; edit that file only while XrmToolBox is closed.
Limitations and notes
- File columns and audit history are not copied.
- Many-to-many associations are copied only with Create related records for 1:N and N:N relationships (subgrids), and only for the relationships that option follows.
- Users, teams, business units, the organisation and currencies are never created. Create or synchronise them in the destination with the same GUIDs first, or accept blank lookups to them.
- A selected record that exists in the destination is always overwritten. A related or child record that exists is never updated.
- Records are written one at a time, so very large copies take a while.
- The destination's plugins, workflows and flows run on every create and update. Bypass custom plugins (online only) skips the custom plugins, not workflows or flows.
- Calculated and rollup columns are left to the destination to compute.
Releases
Release notes
Version 1.2026.10.22
1.2026.10.22 (2026-10-22)
- A Show private (system) tables switch in Settings lists the tables Dataverse flags as private, such as connection role object type codes, and lets them be copied as child or peer records.
- Entity-name columns are now copied when the destination allows them. For example,
connectionroleobjecttypecoderecords need theirassociatedobjecttypecode.
Earlier releases:
- 1.2026.10.14 (2026-10-14):
(All records)is always available in the view list for every table and works for tables without views. - 1.2026.10.13 (2026-10-13):
- A Settings dialog edits the never-created tables and the page size, and the entity list marks never-created tables.
- Mirror connections are never created, which fixes duplicated connection pairs.
- A test-suite reliability fix.
- 1.2026.10.4 (2026-10-01): a package fix only. The logo is now served from the project site instead of being packed, so the Tool Library accepts the logo URL. The tool itself is the same as 1.2026.10.3.
- 1.2026.10.3 (2026-10-01): the 1:N option now also copies N:N relationships, creating the peers and the associations. The relationship picker lists N:N relationships.
- 1.2026.10.2 (2026-10-01): personal views are always listed under the system views, and the relationship options are relabelled.
- 1.2026.10.1 (2026-10-01): the first public release.
Version 1.2026.10.14
1.2026.10.14 (2026-10-14)
(All records)is always available in the view list for every table and works for tables without views.
Earlier releases:
- 1.2026.10.13 (2026-10-13):
- A Settings dialog edits the never-created tables and the page size, and the entity list marks never-created tables.
- Mirror connections are never created, which fixes duplicated connection pairs.
- A test-suite reliability fix.
- 1.2026.10.4 (2026-10-01): a package fix only. The logo is now served from the project site instead of being packed, so the Tool Library accepts the logo URL. The tool itself is the same as 1.2026.10.3.
- 1.2026.10.3 (2026-10-01): the 1:N option now also copies N:N relationships, creating the peers and the associations. The relationship picker lists N:N relationships.
- 1.2026.10.2 (2026-10-01): personal views are always listed under the system views, and the relationship options are relabelled.
- 1.2026.10.1 (2026-10-01): the first public release.