Services
Custom software developmentUmbraco developmentWeb developmentCRM developmentERP developmentAI & LLM integration.NET development & modernizationE-commerce developmentIntegrations & automationCloud & DevOpsMaintenance, support & project rescueDedicated teams & white-label
Our Work
Case studiesProducts
About Blog Contact
Umbraco upgrade · Umbraco 17 LTS · .NET 10

Umbraco upgrade and migration to Umbraco 17.

Umbraco 13 reaches end of life on December 14, 2026. Umbraco 7, 8 and 10 already have. We move older sites to Umbraco 17 on .NET 10, with content, URLs and daily workflows intact, and a fixed price agreed before we start.

Umbraco version support

Where your Umbraco version stands in October 2026.

Umbraco 10, 13 and 17 are the long-term support (LTS) releases. Umbraco upgrades go through the closest LTS major, so these are also the stops on the upgrade path.

VersionRuntimeSupport statusPath to Umbraco 17
Umbraco 7.NET FrameworkEnd of life. No security fixes.New Umbraco 17 build with content migrated in. The route is set in the audit.
Umbraco 8.NET FrameworkEnd of life since February 24, 2025.Database 8 → 10 → 13 → 17. Code rebuilt on ASP.NET Core.
Umbraco 10 LTSASP.NET CoreEnd of life.Database 10 → 13 → 17. Back-office code rewritten.
Umbraco 13 LTS.NET 8 (Microsoft support ends November 10, 2026)Security fixes only since December 14, 2025. End of life December 14, 2026. Paid XLTS available.Direct upgrade to 17. No need to install 14, 15 or 16.
Umbraco 17 LTS.NET 10 (supported to November 14, 2028)Current LTS. Released November 27, 2025. Full support to November 27, 2027, security fixes to November 27, 2028.The target version.

Dates from Umbraco’s long-term support and end-of-life page and Microsoft’s .NET support policy. Umbraco 18 and 19 are short-term releases, and the next LTS, Umbraco 21, is planned for December 2027. That makes 17 the version to standardize on now. More detail in Umbraco 13 vs 17: which LTS to choose.

Upgrade paths

Two routes to Umbraco 17, depending on where you start.

In both routes the content and database are upgraded. Everything that compiles is checked, and much of it is rebuilt.

8 → 10 → 13 → 17

From Umbraco 8 (or 10)

The database path: Umbraco documents that a direct upgrade from 8 to the latest version is not possible.

We upgrade the site to the latest Umbraco 8 release, point a clean Umbraco 10 project at a copy of the database and run the migration. From there the database moves through 13 to 17. At the same time the code layer is rebuilt on ASP.NET Core and .NET 10, because .NET Framework code does not carry over.

Umbraco Deploy can do the move another way: export content and schema from the old site and convert it on import, for example Nested Content into Block List. It suits older projects with a lot of technical debt.

Step-by-step guideUpgrade Umbraco 8 to 17
13 → 17

From Umbraco 13

The direct path: Umbraco supports going from 13 to 17 without installing 14, 15 or 16.

The runtime moves from .NET 8 to .NET 10. The breaking changes from 14, 15 and 16 still apply to your code: the new back office, Block List and Block Grid in place of Nested Content and the Grid, HybridCache in place of NuCache, Tiptap in place of TinyMCE, and UTC dates.

Most of the work goes into AngularJS extensions, Nested Content, Grid and macros, not into the content itself. A site with few customizations is a much smaller job than one with its own dashboards and property editors.

What changes in an upgrade

The parts of an Umbraco update that take the time.

The audit looks for these six things first. They decide the estimate far more than the number of pages on the site.

A new back office since Umbraco 14

The AngularJS back office is gone. Dashboards, sections, content apps and property editors are now Web Components, usually written in TypeScript with Lit. Old AngularJS code does not run in it.

  • Every custom extension is a rewrite
  • We ask which extensions are still needed first
  • Editors get a short walkthrough of the new UI
See Auto.co.il · custom back-office extensions on Umbraco 15

Packages without a 17 version

Many Umbraco 8 and 13 packages were never rewritten for the new back office. Each one gets a decision: upgrade, replace with a built-in feature, replace with another package, or rebuild.

  • Inventory of every package and its NuGet ranges
  • nuPickers replaced with Contentment
  • TinyMCE settings moved to Tiptap
See Jongeneel · NuPicker replaced with Contentment

Nested Content, Grid and macros removed

Umbraco 14 removed Nested Content, the Grid Layout and macros. Their data has to be converted before the site lands on 14 or later, or those properties lose their editor.

  • Nested Content → Block List
  • Grid Layout → Block Grid
  • Macros → partial views or blocks in rich text
See Upgrade guide · conversion options in detail

.NET 10 and ASP.NET Core

Umbraco 7 and 8 run on .NET Framework. Umbraco 17 runs on .NET 10. Controllers, composers and services are ported to ASP.NET Core, and settings move from web.config to appsettings.json.

  • Child actions become view components
  • Dependency injection through IUmbracoBuilder
  • System.Text.Json instead of Newtonsoft.Json
See .NET Framework to .NET 10 · our migration playbook

Background jobs and dates

Scheduled tasks, notifications and imports are rarely covered by UI testing, so they break quietly. Umbraco 17 also stores system dates in UTC, with a migration that runs on upgrade.

  • Hangfire jobs and imports checked end to end
  • Dates verified after the UTC change
  • Logging with Serilog and Sentry
See Jongeneel · jobs kept running through the move

Umbraco Forms licensing

Forms 17 needs a license key in appsettings.json instead of a .lic file, and one-off licensing ends with Forms 17 in favor of subscriptions. On Umbraco Cloud the Forms license is included.

  • License checked before the estimate
  • Forms data stored in the database first
  • Custom workflows ported and retested
See Umbraco 13 vs 17 · what else changed between the LTS versions
How an upgrade runs

Rehearsed on staging, then switched in one window.

A migration changes everything under the site at once. So we test what users notice and what nobody watches, and we run the same scripted migration on staging until it is routine before production gets it.

Fixed

price for the defined scope, agreed after the audit and before any code changes. If the audit shows that a fresh Umbraco 17 build is the better route, you see both options with the trade-offs.

  1. Audit

    We read the solution: Umbraco and .NET versions, every package, custom back-office code, Nested Content, Grid and macro usage, templates, integrations, scheduled jobs and hosting. The result is a list of what blocks the upgrade.

  2. Plan and fixed estimate

    You get the route (database upgrade chain or a fresh 17 build with content import), a decision for each package and extension, and a fixed price for the defined scope.

  3. Migration on staging

    We run the upgrade on a copy of production data in a staging environment on .NET 10. The migration is scripted, so we can repeat it and time each run.

  4. Test

    Content parity, converted blocks, business logic, background jobs and URLs. Tests go around critical services before we port them. A few editors try their real tasks in the new back office.

  5. Cutover with redirects

    Content freeze, final backup, the rehearsed migration, media copy and a smoke test on the production host. Redirects cover every changed URL. The old site stays read-only for a rollback window.

Client story

Jongeneel: Umbraco 8 to 17, and .NET Framework to .NET 10.

Jongeneel is a transport company. Its staff run inspections, safety checklists, toolboxes, equipment and transport planning on an internal Umbraco platform. It ran on Umbraco 8 and .NET Framework, and the business needed it on a supported base without losing the features it uses every day.

  • We mapped the structure, dependencies and business-critical modules before touching code.
  • The solution moved to Umbraco 17 and was refactored onto .NET 10 in one project. Custom back-office plugins kept working.
  • The deprecated NuPicker plugin was replaced with Contentment, with its behavior rebuilt.
  • xUnit and Moq tests checked critical business logic the whole way. Hangfire jobs, notifications and scheduled tasks kept running.
  • Docker and CI/CD now produce consistent builds, with Serilog and Sentry watching background processing.
Read the Jongeneel case
Jongeneel platform home with toolbox, checklist and inspection tiles, now on Umbraco 17
8 → 17
Umbraco versions in one migration
.NET 10
replacing .NET Framework
The lesson we pass on: the content was not the hard part. Plugins, background processing and one unsupported package were.
Umbraco 15 back office with the Auto.co.il car catalog content tree
Migrations from other systems

Moving content and URLs, not just code.

An Umbraco migration is often also a content migration. For the third generation of Auto.co.il, one of Israel’s largest car sites, we built every pipeline that pulled manufacturers, models, specs, articles, reviews and comments out of a legacy CRM database and imported them as about 100,000 Umbraco nodes. Every legacy URL redirects to its new address, so years of search traffic carried over.

Hosting can move in the same project. Ben-Gurion University’s Umbraco site, about 80,000 pages edited by around 1,000 people, was containerized and moved from Azure to AWS ECS Fargate. Traffic shifted gradually, and the public site saw zero interruption. The approach is written up in our Azure to AWS migration guide.

~100Kcontent items moved into Umbraco 15
0interruption during the BGU move to AWS
Upgrade FAQ

Umbraco upgrade questions we hear most.

Anything missing? Send us your question and an engineer will answer, usually within one business day.

Contact us
How long does an Umbraco upgrade take?+

It depends on the code, not on how much content you have. The database migration is automated. Time goes into custom back-office extensions, packages without an Umbraco 17 version, templates and controllers to rewrite, and integrations. The audit counts these, and you get a timeline with the fixed estimate before work starts.

What drives the cost of an Umbraco migration?+

Custom AngularJS back-office code, packages that need a replacement and a data conversion, the number of document types using Nested Content, Grid or macros, integrations and scheduled jobs, existing test coverage and any hosting change. Our rate listed on Clutch is $25–49 per hour. A defined upgrade usually runs as a fixed-scope, fixed-price project.

Can we skip versions and go straight to Umbraco 17?+

From Umbraco 13, yes. Umbraco supports a direct upgrade from 13 to 17 without installing 14, 15 or 16, although the breaking changes from those versions still apply to your code. From Umbraco 8 there is no direct path: the database moves 8 → 10 → 13 → 17 while the code is rebuilt on ASP.NET Core. Umbraco 7 is older still, so for those sites we set the route in the audit.

Will our SEO survive the upgrade?+

A database upgrade keeps node IDs, URLs and history, which protects rankings. Where URLs do change, we crawl the old site and the new one, compare the URL lists and add a redirect for every changed address. On the Auto.co.il rebuild, every legacy URL was redirected to its new address.

Will our Umbraco packages still work after the upgrade?+

Some will, some will not. Packages that were not rewritten for the back office introduced in Umbraco 14 will never run on 17. We check each package against its NuGet dependency ranges and its own release notes, then upgrade, replace or rebuild it. On Jongeneel, the deprecated NuPicker plugin was replaced with Contentment and its behavior rebuilt.

Our site runs on Umbraco 13. What happens after December 14, 2026?+

Umbraco 13 reaches end of life on that date and gets no more security fixes, unless you buy Umbraco 13 XLTS, which extends security patches for 6, 12 or 24 months. Its runtime, .NET 8, loses Microsoft support on November 10, 2026. XLTS can buy time for a planned migration, but Umbraco 17 is supported until November 27, 2028.

Should we upgrade or rebuild on Umbraco 17?+

If the content model still fits the business, upgrading the database keeps IDs, URLs and history. If the site carries years of workarounds, or a redesign is coming anyway, a fresh Umbraco 17 build with migrated content can cost about the same and leave a cleaner result. We give you both options with the trade-offs after the audit.

Start a project

Tell us which Umbraco version you run. We will tell you the route to 17.

A spec, a Figma file or three paragraphs is enough to start.

  1. First reply · from an engineer, not a sales rep
  2. 30-min call · with Roman, our CTO, to clarify scope
  3. After the call · a written proposal with plan, team and price
Roman Oleksuk
Roman Oleksuk, CTOPrefer to talk? Pick a slot in Roman's calendar
We reply from a human mailbox. No newsletters. Your brief stays under NDA on request. We use your details only to reply; see our privacy policy.