Rappen.XrmToolBox.Shuffle.Deployer
1.2026.10.44
Prefix Reserved
dotnet add package Rappen.XrmToolBox.Shuffle.Deployer --version 1.2026.10.44
NuGet\Install-Package Rappen.XrmToolBox.Shuffle.Deployer -Version 1.2026.10.44
<PackageReference Include="Rappen.XrmToolBox.Shuffle.Deployer" Version="1.2026.10.44" />
<PackageVersion Include="Rappen.XrmToolBox.Shuffle.Deployer" Version="1.2026.10.44" />
<PackageReference Include="Rappen.XrmToolBox.Shuffle.Deployer" />
paket add Rappen.XrmToolBox.Shuffle.Deployer --version 1.2026.10.44
#r "nuget: Rappen.XrmToolBox.Shuffle.Deployer, 1.2026.10.44"
#:package Rappen.XrmToolBox.Shuffle.Deployer@1.2026.10.44
#addin nuget:?package=Rappen.XrmToolBox.Shuffle.Deployer&version=1.2026.10.44
#tool nuget:?package=Rappen.XrmToolBox.Shuffle.Deployer&version=1.2026.10.44
The Shuffle Deployer can deploy data and solutions defined by the Shuffle definitions in a controlled way - without advanced pipelines.
Installing this tool, will also include the other tools for the Shuffle:
Shuffle Builder and Shuffle Runner.
Read more: https://jonasr.app/shuffle
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
- XrmToolBox (>= 1.2025.10.74)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2026.10.44 | 83 | 10/9/2026 |
| 1.2023.5.1 | 5,841 | 5/9/2023 |
Changes since 1.2023.5:
Import
- Opt-in batching: set BatchSize above 1 on an Import to use CreateMultiple/UpdateMultiple, ExecuteMultiple on-premises, or individual requests where neither is available. At the default of 1, nothing changes.
- New DeferStateAndOwner option: state and owner are applied in a second pass, so those records can be batched too.
- Upsert path (UpsertMultiple) for blocks that match on the primary key only, with BatchSize above 1 and UpdateIdentical.
- PreRetrieveAll now reads the whole target table. It stopped at 5000 records, so records beyond that were created again.
- PreRetrieveAll matching is a single lookup per record instead of a scan of the whole table.
- Failed records in a batch are logged with row and server message, and never counted as saved.
- Multi-select choice columns (OptionSetValueCollection) export and import correctly.
- Floating point (Double) columns can be imported from every format, not only Full.
- Records with date columns are now skipped as identical when nothing changed, and a Match on a date column finds the existing record instead of creating a duplicate.
- Money and decimal values are compared by value, so the same amount with a different number of decimals is identical and matches.
- Bypass custom logic: BypassSyncLogic, BypassAsyncLogic and BypassFlows on the definition import without running plugins, workflows and Power Automate flows.
- Every import and export ends with its total run time and counts.
- An N:N relationship from a table to itself imports; every record used to fail.
Logs
- Values instead of SDK type names, no more "[START of ToString]" noise, and correctly nested sections, also after an error.
- Log files are named after the definition, operation, connection and time.
Export
- Exports are complete: every export query stopped at 5000 records; filter, FetchXML and intersect exports now read every page.
- Data files are culture-independent: numbers are written as 1234.5 and dates in round-trip format on every machine.
- Columns are written in alphabetical order, so re-exports give clean diffs.
- Fixed an off-by-one error in text export.
Solutions
- A zip without solution.xml gives a clear error.
Platform
- .NET Framework 4.8; ILMerge removed; DotNetZip replaced with System.IO.Compression.
Behaviour changes
- A failed update now counts as Failed (it was counted as Skipped) and stops the run with StopOnError.
- PreRetrieveAll reads the whole target table; avoid it on very large tables.
- Numbers in data files no longer follow the machine's culture. Older files written with a decimal comma still import on a machine that uses one; elsewhere such a value is rejected instead of read as a larger number.
Full details: https://github.com/rappen/Xrm.Shuffle#whats-new-since-120235