--- title: "Drupal to Headless CMS Migration — Essential Code" description: "We migrate Drupal sites to a modern headless stack. Paragraph sprawl gets normalized, Views become API queries, the admin goes away. Multi-site setups consolidated, multilingual content preserved, every URL alias mapped." url: "https://www.essentialcode.eu/migrations/drupal-to-headless/" --- # Move your Drupal site to a headless stack. We migrate Drupal sites to a modern headless setup. **Your URL aliases stay intact**, your multilingual content carries over, and your editors stop filing tickets for routine page changes. No more six-figure rebuilds every major version, no more paragraph-type sprawl, no more custom modules nobody can maintain. [Let's talk](/contact/) [See if we're a fit](#fit) Trusted by - [biag.ag](https://biag.ag) - • - [theresianum.ac.at](https://www.theresianum.ac.at) - • - [weinbergarlberg.at](https://weinbergarlberg.at) - • - [eversportsmanager.com](https://eversportsmanager.com) - • - [glasswise.eu](https://glasswise.eu) - • - [packoneers.com](https://packoneers.com) - • - [vivalasocial.at](https://vivalasocial.at) - • - [riskriot.com](https://riskriot.com) - • - [sunrocks.at](https://sunrocks.at) - • - [drschoendorfer.at](https://drschoendorfer.at) - • - [soonartstudio.com](https://soonartstudio.com) - • - [36sustainability.org](https://36sustainability.org) - • - [michaelczermin.at](https://michaelczermin.at) - • - [asicentwicklung.de](https://asicentwicklung.de) ## Drupal worked. For a different era. Drupal solved problems that mattered ten years ago. Structured content, fine-grained permissions, multilingual at scale. It still solves them. But the cost of staying current has crept up to the point where every major version is its own migration project. The platform asks more from your team than it gives back. This is one path through our wider [headless migration](/services/headless-migration/) practice. We run the same playbook for teams leaving [TYPO3](/migrations/typo3-to-headless/) and [WordPress](/migrations/wordpress-to-headless/). Drupal 7 went end-of-life and the upgrade path quoted to you turned out to be a rebuild. Every major version demands another six-figure migration project. Paragraph types proliferated and now nobody knows which one to use for what. Custom modules were written by people who left the agency three contracts ago. Multi-site setups share a codebase that nobody dares touch. Editors need a Views page rebuilt and that means filing a developer ticket. The Reality Most Drupal sites are not stuck because the content is complex. They are stuck because the tooling has aged around the content. Replatforming separates the two. What Survives the Move ## Your structured content comes along. Drupal's strength is structured content, and that is the part worth preserving. Nodes, taxonomy, translations, aliases all carry over. The migration is in the platform, not in the content model your editors already know. - Your content every node, every revision history that matters, every taxonomy term. Exported through JSON:API or a direct database read. - Your URL aliases Pathauto patterns, manual aliases, redirect module entries. All of it gets mapped before launch. - Your taxonomy vocabularies, hierarchies, and term references translate into structured fields in the new CMS. - Your multilingual content language-aware nodes and translations move into native multi-locale content with proper hreflang. - Your media library files and images move to a CDN with proper derivatives. The Files module style options become responsive image sets. What Changes ## The platform layer goes away. Most of what makes a Drupal site hard to maintain is platform plumbing. Views, custom modules, the Field UI, cron jobs. They go away. What replaces them is built around how editors and developers actually want to work, not around how Drupal happens to organize the world. - Paragraphs become a small set of well-defined blocks. We normalize the sprawl rather than copying it. Your editors stop guessing which paragraph type to pick. - Views are replaced by API queries on the frontend. Editors still get filtered listings, but the configuration lives next to the page that uses it. - Custom modules either get rebuilt as API endpoints, replaced by features built into the new CMS, or dropped if nobody uses them anymore. - The admin is gone. No more Drupal forms, no more Field UI, no more Configuration synchronization. Editors get a CMS designed for editors. - PHP, MySQL, and cron go away. The new site is static or server-rendered, served from a CDN. No more LAMP stack to maintain. How It Works ## The migration process 1 ### Audit and content model We export the database and walk through every content type, every paragraph type, every Views configuration, every custom module. Then we design the content model around what your editors and visitors actually use, not around what the install accumulated over the years. You approve the model before development starts. 2 ### Migrate, normalize, rebuild We export content through JSON:API or read the database directly, depending on the version and the schema. Paragraph sprawl is normalized into a smaller block set. The frontend is built in Astro, with content models in Storyblok or DatoCMS. Multilingual content is mapped to native multi-locale fields with hreflang in place from day one. 3 ### Cutover and 30 days of watching We launch on a low-traffic window, swap DNS, and monitor Search Console, Analytics, and Core Web Vitals for 30 days. Drupal stays running as a fallback during the watch window. Multi-site setups cut over per site on a schedule we agree up front. A note on multi-site Multi-site is usually two problems pretending to be one. Half the sites share content models and visual identity. Half of them really do not. We separate them at the audit stage. The ones that belong together get a single content space with regional variants. The ones that do not get clean splits with their own pipelines. [Start with an audit](/services/headless-audit/) Pricing ## Fixed price, no scope creep Drupal migrations vary in scope more than most. A 100-page corporate site with three languages and a clean install is one thing. A multi-site setup with a decade of custom modules is another. The ranges below are where typical projects land. Once we scope yours, you get a fixed quote. Migration project € 30.000 — € 75.000fixed price - **Full audit** of your Drupal install, modules, and content - **Content model** rebuilt and paragraph sprawl normalized - **URL alias map** covering Pathauto and manual aliases - **Content migration** through JSON:API or direct database read - **Frontend in Astro**, CMS in Storyblok or DatoCMS - **Multilingual** with hreflang from day one - **30 days** of post-launch monitoring [Let's talk](/contact/) Ongoing subscription € 1.500 — € 3.500per month (optional) - **Same team** stays accountable for the system - **Performance and uptime** monitored continuously - **Content and component** changes handled monthly All prices are net, excluding applicable VAT. Who This Is For ## Who this is for ### This works well if you - Run a **Drupal 7 site** and the upgrade quote came back as a rebuild anyway - Have a **Drupal 9 or 10 site** facing another major version upgrade and want off the treadmill - Manage a **multi-site Drupal install** and want to consolidate or split it cleanly - Have **large content volumes** and need a content model that does not collapse under its own paragraph types - Want editors to **stop filing developer tickets** for routine page changes - Need a **fixed-price migration** with a clear scope, not a time-and-materials open-ended project ### This is not a fit if you - Run a **government or regulated site** with hard requirements that depend on Drupal-specific modules. Talk to us first - Use Drupal as a **data hub** with custom backend logic that needs to stay on Drupal. The frontend can still go headless, scope is different - Have a **small Drupal site** where the cost of migration outweighs the gain - Are not sure yet what the right move is. Start with a [**Headless Audit**](/services/headless-audit/) - Need a **new build from scratch** with no legacy content. See [**Headless Website**](/services/headless-website/) If your website has become a bottleneck, let’s talk! [Let's talk](/contact/) [Or email me directly](mailto:david@essentialcode.eu)