DoubleSync.Core 0.2.0
DoubleSync
Umbraco environment synchronization tool. Sync schema (data types, document types) and content between Umbraco instances using the Management API.
Installation
# Add the private NuGet source
dotnet nuget add source https://nuget.double.pt/nuget --name DoubleDigital
# Install the CLI tool globally
dotnet tool install --global DoubleSync.Cli --add-source https://nuget.double.pt/nuget
Quick Start
1. Configure API User in Umbraco
In your Umbraco project's appsettings.json, add an API user:
{
"Umbraco": {
"CMS": {
"Security": {
"BackOfficeApiClients": {
"doublesync": {
"ClientId": "umbraco-back-office-doublesync",
"ClientSecret": "your-secret-here",
"AllowedGrantTypes": ["client_credentials"],
"AllowedScopes": ["All"]
}
}
}
}
}
}
2. Test Connection
doublesync test-connection \
--url https://your-umbraco-site.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here
3. Export Schema
doublesync schema-export \
--url https://dev.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here \
--output .doublesync
4. Import Schema to Another Instance
doublesync schema-import \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here \
--input .doublesync
5. Preview Changes (Dry Run)
doublesync schema-import \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here \
--input .doublesync \
--dry-run
Available Commands
| Command | Description |
|---|---|
test-connection |
Test connection to an Umbraco instance |
schema-export |
Export schema (data types + document types) to disk |
schema-import |
Import schema from disk (supports --dry-run) |
schema-diff |
Compare schema snapshot against target instance |
content-export |
Export content (documents) to disk |
content-import |
Import content from disk (supports --dry-run) |
content-diff |
Compare content snapshot against target instance |
push |
Push schema + content from source → target |
pull |
Pull schema + content from target → local snapshot |
status |
Show what's changed since last sync |
Content Sync
# Export content
doublesync content-export --url https://dev.example.com --client-id ... --client-secret ...
# Import content
doublesync content-import --url https://uat.example.com --client-id ... --client-secret ...
# Diff content
doublesync content-diff --url https://uat.example.com --client-id ... --client-secret ...
Push / Pull (Bidirectional Sync)
# Pull from DEV into local snapshot
doublesync pull \
--url https://dev.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here
# Push local snapshot to UAT
doublesync push \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here
# Push schema only (no content)
doublesync push \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here \
--schema-only
# Preview push changes before applying
doublesync push \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here \
--dry-run
# Check what's changed since last sync
doublesync status \
--url https://uat.example.com \
--client-id umbraco-back-office-doublesync \
--client-secret your-secret-here
Requirements
- .NET 10.0 SDK
- Umbraco v17+ with Management API enabled
- API User configured with
client_credentialsgrant type
License
MIT
Showing the top 20 packages that depend on DoubleSync.Core.
| Packages | Downloads |
|---|---|
|
DoubleSync.Storage.Azure
Azure Blob Storage provider for DoubleSync. Stores snapshots, media blobs, and SyncPacks in Azure Blob Storage. Requires DoubleSync.Umbraco Agency license.
|
0 |
.NET 10.0
- No dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 17.0.1-alpha.0.25 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.22 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.21 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.20 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.19 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.18 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.16 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.15 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.14 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.13 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.12 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.11 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.10 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.9 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.8 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.7 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.6 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.5 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.4 | 0 | 02/09/2026 |
| 17.0.1-alpha.0.3 | 0 | 02/09/2026 |
| 17.0.0 | 0 | 02/09/2026 |
| 17.0.0-alpha.0 | 0 | 02/09/2026 |
| 1.0.0 | 0 | 02/09/2026 |
| 0.4.0 | 0 | 02/09/2026 |
| 0.3.0 | 0 | 02/09/2026 |
| 0.2.0 | 0 | 02/09/2026 |
| 0.1.0 | 0 | 02/09/2026 |