Rivlo.ContentMigrationManager
13.0.1
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
<PackageReference Include="Rivlo.ContentMigrationManager" Version="13.0.1" />
<PackageVersion Include="Rivlo.ContentMigrationManager" Version="13.0.1" />
<PackageReference Include="Rivlo.ContentMigrationManager" />
paket add Rivlo.ContentMigrationManager --version 13.0.1
#r "nuget: Rivlo.ContentMigrationManager, 13.0.1"
#:package Rivlo.ContentMigrationManager@13.0.1
#addin nuget:?package=Rivlo.ContentMigrationManager&version=13.0.1
#tool nuget:?package=Rivlo.ContentMigrationManager&version=13.0.1
π¦ 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:
BlockListPropertyValueHandlerMediaPickerPropertyValueHandler
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 | Versions 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. |
-
net8.0
- Rivlo.Licensing (>= 13.0.2)
- Rivlo.Licensing.UI (>= 13.0.1)
- Umbraco.Cms.Web.BackOffice (>= 13.0.0 && < 14.0.0)
- Umbraco.Cms.Web.Website (>= 13.0.0 && < 14.0.0)
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 |