Rivlo.ContentMigrationManager 13.0.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Rivlo.ContentMigrationManager --version 13.0.1
                    
NuGet\Install-Package Rivlo.ContentMigrationManager -Version 13.0.1
                    
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="Rivlo.ContentMigrationManager" Version="13.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rivlo.ContentMigrationManager" Version="13.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Rivlo.ContentMigrationManager" />
                    
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 Rivlo.ContentMigrationManager --version 13.0.1
                    
#r "nuget: Rivlo.ContentMigrationManager, 13.0.1"
                    
#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 Rivlo.ContentMigrationManager@13.0.1
                    
#: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=Rivlo.ContentMigrationManager&version=13.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Rivlo.ContentMigrationManager&version=13.0.1
                    
Install as a Cake Tool

πŸ“¦ Rivlo.ContentMigrationManager

Flexible content, member, and media migration toolkit for Umbraco 10 and 13

A developer-focused toolkit for migrating and synchronising Umbraco data between environments. Includes secure import/export APIs, a full backoffice interface, API key management, recent activity tracking, and deep extensibility for custom property and block handling.

βœ… Key Features

  • πŸ” Import and export of Content, Members, and Media
  • 🧱 Tree-based UI for each migration type with separate dashboards
  • βš™οΈ Flexible mapping of content types, property aliases, and presets
  • 🧩 Supports deeply nested blocks, UDI resolution, and media linking
  • 🧾 Activity log showing recent import/export history
  • πŸ” API key system with permission scopes and expiry
  • πŸš€ Background job manager for long-running media exports
  • πŸ”„ Dry-run validation, overwrite rules, and published-only import options
  • πŸ’‘ Fully extensible via IPropertyValueHandler and IContentImportHook

🧭 Backoffice Overview

Once installed, a new Content Migration section appears in the Umbraco backoffice with the following tree:

Content Migration
 β”œβ”€ Content
 β”œβ”€ Members
 β”œβ”€ Media
 β”œβ”€ Security
 β”œβ”€ Workflows     (reserved for future workflow/webhook triggers)
 └─ Jobs          (background export monitoring)

Each node provides import/export dashboards tailored to that entity type.

If you cannot see the Content Migration section you may need to add permissions in the Users section.

🧩 Content Import

Use this dashboard to paste JSON exports or envelopes from other sites.

Options include:

Option Description
Document Type Mode Restrict to specific document types (or β€œAll”).
Property Type Mode Restrict to specific property types (or β€œAll”).
Overwrite Existing Enable to replace existing items.
Import Published Content Only Skips unpublished items.
Dry Run Validates the data without saving changes.
Document Type Mapping Auto by alias or manual map of old→new aliases.
Property Mapping Auto by alias or manual map of old→new properties.
Overwrite Properties Mode Control which populated fields may be overwritten.
Preset Values Add default values for missing properties.
Parent Node Choose where imported content is created.
Paste JSON Paste the exported data directly or from file.

πŸ“€ Content Export

Export any content tree to JSON with flexible filtering.

Option Description
Description Optional label for audit trail (e.g. β€œsprint-42”).
Export Type Choose All, By Ids, Under Parent.
Include Descendants Include child nodes under the start node.
Descendants Max Depth Limit depth (blank = unlimited).
Document Type Mode Filter by document type.
Property Type Mode Filter by property type.
Include Unpublished Include unpublished content in export.

Exports generate a downloadable JSON file for re-import or external processing.

πŸ‘₯ Member Import

Import members and member groups from JSON exports.

Option Description
Member Type Mode / Property Mode / Groups Mode Limit import to specific sets.
Overwrite Existing Replace existing members.
Dry Run Validate only.
Set Password Hash Optionally import hashed passwords (secure migrations).
Member Type & Property Mappings Auto by alias or manually defined.
Overwrite Properties Mode Choose which existing values may be replaced.
Preset Values Set defaults for missing properties.
JSON Input Paste or upload exported data.

πŸ“€ Member Export

Option Description
Description Optional label for traceability.
Export Scope All or by specific Ids.
Member Type / Group / Property Modes Choose subsets of data to export.
Include Password Hash Include raw password hash for secure environment transfers only.

πŸŒ„ Media Import

Option Description
Path Strategy Choose how file paths are resolved (Prefer original, etc.).
Allow Download from URL Enable direct download of external URLs.
Behavior Overwrite existing or skip duplicates.
Validate Hashes when Linking Confirms file integrity.
Input Source Upload ZIP (media.json + files) or paste JSON only.

ZIP packages should contain a media.json file and the exported folder structure.

πŸ“€ Media Export

Option Description
Choose Start Node Pick a media root or folder.
Include Descendants Include all nested folders/files.
Include Trashed Optionally include recycle bin items.
Include Absolute URLs Include full URLs in JSON.
Include Bytes in ZIP Bundle actual files in the export.
Queue Export Starts a background job; progress is tracked under Jobs.

πŸ“‹ Jobs

The Jobs node lists active and completed background exports (currently used for media). Each job shows:

  • Job ID, date/time and type
  • Status (Queued, In Progress, Completed, Failed)
  • Progress percentage
  • Download link (for completed jobs)

The dashboard automatically refreshes every 30 seconds.

🧾 Recent Activity

The last five import and export operations are logged in the Recent Activity panel on the root Content Migration dashboard, showing date, type, user, and result counts for quick auditing.

πŸ” Security (API Keys)

Generate and manage scoped API keys for remote automation or integration.

Each key includes:

  • Name and optional environment label
  • Expiry date (optional)
  • Allowed actions (import/export)
  • One-time visible token at generation

🧩 Extensibility

IPropertyValueHandler

Transform or normalise editor values during export/import.

Supports alias remapping, nested transformations, and UDI resolution.

public interface IPropertyValueHandler {
    string EditorAlias { get; }
    bool CanHandle(string propertyAlias, string editorAlias);
    object ExportValue(string propertyAlias, object value, IDataType dataType);
    object TransformValue(string propertyAlias, object value, IDataType dataType, JObject? config = null);
}

Handlers must be registered in a composer class:

public class RegisterPropertyValueHandlersComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddTransient<IPropertyValueHandler, MyPropertyValueHandler>();
    }
}

Included handlers:

  • BlockListPropertyValueHandler
  • MediaPickerPropertyValueHandler
IContentImportHook

For custom pre-processing at content-type or property level:

public interface IContentImportHook {
    bool CanHandle(string contentTypeAlias);                      // Match on type
    IEnumerable<string> HandledPropertyAliases();                 // e.g. ["*", "heroImage"]
    void Transform(ExportedPage source, IContent target, ImportConfig config = null); // Modify target
}

Can handle:

  • Special logic per content type
  • Global handlers (*)
  • Pre-transform block content, images, or multi-property logic

Content Import Hooks must be registered in a composer class:

public class RegisterContentImportHooksComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddTransient<IContentImportHook, MyContentImportHook>();
    }
}

🚧 Limitations (v5 Beta)

  • βœ… Content, Member, and Media import/export fully supported
  • βš™οΈ Jobs monitoring and history included
  • ❌ User import/export coming soon
  • ❌ Workflows & webhooks coming soon
  • ⚠️ Only tested with Umbraco 10 and 13 at present

πŸ“„ License

This package requires a valid RivloTools licence file to run in production.

Trial Mode: 14 day trial is automatically enabled on first install (30 days whilst in beta)

Licensing: Per-site (3 domains included for live, and staging/test) with optional version-lock

For the full End User Licence Agreement see https://www.rivlotools.com/products/content-migration-manager/eula

🌐 Learn More

Explore the full RivloTools suite at

πŸ‘‰ www.rivlotools.com

Β© CS Software Ltd

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows 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
13.0.2-beta3 280 1/27/2026
13.0.2-beta2 111 1/27/2026
13.0.2-beta1 110 1/27/2026
13.0.1 123 1/15/2026
13.0.0 122 1/13/2026
13.0.0-beta9 113 1/12/2026
13.0.0-beta8 118 1/12/2026
13.0.0-beta7 122 1/9/2026
13.0.0-beta6 236 12/19/2025
13.0.0-beta5 224 10/21/2025
13.0.0-beta3 308 8/6/2025
13.0.0-beta2 275 8/6/2025
13.0.0-beta10 112 1/13/2026
13.0.0-beta1 295 8/6/2025
10.0.0-beta7 127 1/9/2026
10.0.0-beta6 218 12/19/2025
10.0.0-beta5 214 10/21/2025