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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rappen.XrmToolBox.Shuffle.Deployer" Version="1.2026.10.44" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rappen.XrmToolBox.Shuffle.Deployer" Version="1.2026.10.44" />
                    
Directory.Packages.props
<PackageReference Include="Rappen.XrmToolBox.Shuffle.Deployer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rappen.XrmToolBox.Shuffle.Deployer --version 1.2026.10.44
                    
#r "nuget: Rappen.XrmToolBox.Shuffle.Deployer, 1.2026.10.44"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rappen.XrmToolBox.Shuffle.Deployer@1.2026.10.44
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rappen.XrmToolBox.Shuffle.Deployer&version=1.2026.10.44
                    
Install as a Cake Addin
#tool nuget:?package=Rappen.XrmToolBox.Shuffle.Deployer&version=1.2026.10.44
                    
Install as a Cake Tool

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 Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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