■ Migrating from Umbraco
Familiar ideas. None of the lock-ups.
Many of ModularCMS's ideas come from Umbraco 17, and real Umbraco sites have been its test material from the first milestone. Bring your site across with its structure, content, media, and URLs intact.
§ 01 What maps to what
The concepts you know, carried over.
Editors find their way around on day one. Developers get a headless API, a typed SDK, and a model that can change at any size.
| In Umbraco | In ModularCMS |
|---|---|
| Document types and element types | Content types and element types, with compositions |
| Block List and Block Grid | Block List and Block Grid, with areas as nested layouts |
| Rich text (TinyMCE or TipTap) | TipTap documents, delivered as JSON and HTML |
| Cultures and hostnames | Languages, translation families, and hostnames per start node |
| Dictionary items | The dictionary, translated per language |
| Public access | Public access with frontend user roles |
| Members | Frontend user pools with single sign-on across domains |
| Redirect URL management | Redirects recorded automatically on every move |
| Content Delivery API | A versioned Delivery API with three cache layers |
§ 02 How migration works
Rehearse it. Read the report. Then run it.
A migration is an import whose package is read from Umbraco, so it gets the import pipeline's plan, progress, audit, and rollback.
01
Connect
Point the migration at a restored copy of the Umbraco database, or at Umbraco Cloud's database with the server, login, and password it shows. Read-only, SQL authentication.
02
Bring the media
A folder with the site's media tree, the Azure Blob container Umbraco Cloud uses (by its SAS URL), or the running site's base URL.
03
Review the mapping
The migration reads the schema and proposes a mapping for every document type, property, editor, and language. Change anything before it runs.
04
Plan and rehearse
The plan shows what will be created and updated, with a report of anything that could not be mapped. Rehearse into a staging instance first.
05
Run it for real
Umbraco keys become global identifiers, so a second run updates the same items instead of duplicating them. Every run can be rolled back.
What comes across
- Document types, element types, and compositions
- Content in every culture, as drafts or published to match the source
- Block List and Block Grid values, with element types by key
- Rich text converted to TipTap, with local links resolved
- Media folders and originals, hashed and processed into your storage
- Media picker crops and focal points
- Dictionary items and languages
- URL segments, and Umbraco's redirects as redirects
- Names, sort orders, dates, and publish state
Property editors, mapped
| Umbraco editor | Field type |
|---|---|
| Umbraco.BlockList | block-list |
| Umbraco.BlockGrid | block-grid |
| Umbraco.RichText · TinyMCE | richtext |
| Umbraco.MediaPicker3 | media-picker |
| Umbraco.ImageCropper | image-cropper |
| Umbraco.MultiNodeTreePicker | multi-node-picker |
| Umbraco.MultiUrlPicker | link |
| Umbraco.Tags | tags |
Anything without a match is kept as JSON and listed in the report, so nothing disappears silently.
§ 03 What changes
The things that used to hurt, fixed at the root.
Type changes don't lock the server
Values live as JSONB, so adding or changing a field on a quarter of a million pages saves immediately, without a migration or a reindex.
Headless from the start
Your sites become your own apps, in any framework, fed by a cache-first Delivery API with preview, webhooks, and a typed SDK.
Many sites, one platform
Organizations, instances, and sites on one deployment, isolated by row-level security, on any cloud or your own hardware.
■ Ready for press
See your content set in modules.
We’ll walk through the backoffice with your own site in mind, or import a copy of your Umbraco site and show you the result.