April 13, 2026 | 2 mins read

Umbraco 8 to 13 Migration: Modernizing an Existing Digital Experience

Re-platforming an established Umbraco website to Umbraco 13 and Umbraco Cloud while preserving its content, structure, functionality and SEO investment.

Umbraco 8 To 13 Migration Modernizing An Existing Digital Experience (1)

Overview

As an experienced Umbraco Migration Company, Techxot migrated to an established Umbraco 8 website to Umbraco 13 LTS and Umbraco Cloud, preserving its content, functionality, structure, and SEO investment.

This Umbraco 8 to 13 Migration provided a modern .NET 8 foundation while addressing the challenges of Umbraco 8 End of Life and legacy dependencies.

The Challenge

  • Umbraco 8 had reached end of life and was built on the legacy .NET Framework.

  • Several third-party packages and property editors were no longer suitable for the target platform.

  • The existing site contained established content, media, templates, forms, and custom functionality.

  • The migration needed to minimize business disruption and protect URLs, SEO, and content integrity.

  • The target needed to align with Umbraco Cloud and modern .NET deployment practices.

Why We Chose Re-platforming

The architectural change from .NET Framework to modern .NET made a traditional incremental upgrade unsuitable for this project. A fresh Umbraco 13 LTS foundation allowed the team to remove unsupported dependencies, modernize the codebase, and migrate only what was still valuable.

The Approach

1. Assess the Existing Umbraco 8 Solution

We cloned the existing repository and assessed document types, data types, templates, media, custom controllers and services, packages, integrations, and legacy components. Dependencies were classified as migrate, update, replace, rewrite, or remove.

2. Establish the Umbraco 13 + Cloud Foundation

A fresh Umbraco 13 LTS instance was established on .NET 8, with Umbraco Cloud, Git-based version control, and required extensions such as uSync and Deploy.

3. Use uSync as the Migration Backbone

uSync Migration Packer was installed in the v8 project. Document types, data types, templates, and content were exported and imported into v13, giving the new platform its existing content architecture without manually recreating everything.

4. Transform Legacy Content Structures

The migration exposed important differences between v8 and v13. Nested Content was converted to Block List using uSync Migrator, but property-level JSON and linked-content references required additional transformation.

5. Resolve JSON and Reference Mismatches

Custom migration logic was used to read legacy JSON, transform it to the target Block List structure, and validate the resulting content. NodeID/GUID relationships were checked to avoid orphaned content and broken references.

6. Migrate Media & Forms

Media files and references were migrated and validated, including changes around the Media Picker. Umbraco Forms also required datatype and form-reference adjustments rather than a simple database copy.

7. Adapt Templates & Custom Code

Existing Razor templates, layouts, partials, namespaces, controllers, and Umbraco APIs were adapted to ASP.NET Core and Umbraco 13. Unsupported packages and v8-specific APIs were replaced or removed.

8. Test, Validate & Deploy

Validation covered content, media, forms, page rendering, integrations, URLs, redirects, metadata, internal links, and sitemap behaviour. Deployment to Umbraco Cloud followed controlled checkpoints and backup/rollback planning.

Outcome

  • Existing digital experience migrated rather than manually recreated.

  • Umbraco 13 LTS and .NET 8 foundation.

  • uSync automation combined with custom migration logic.

  • Legacy dependencies and unsupported components reduced.

  • Content, media, forms, and relationships validated.

  • Cloud-ready deployment and modern development workflow.

  • SEO and URL investment protected through controlled validation.

Key Impact

  • Modern .NET 8 Foundation

  • Umbraco 13 LTS

  • Existing Content Preserved

  • Cloud Ready