Migrate off Drupal 7 to a modern stack
Drupal 7 has had no security updates since January 2025, and there is no in-place upgrade to 10 or 11. If you are rebuilding anyway, rebuild in Astro or Next.js, with your content in Sanity or Payload and every URL kept.
Yegparian PLLC (opens in a new tab)Signs it is time to leave Drupal
Drupal has served associations, universities and publishers well for years. These are the moments teams tell us it stopped fitting.
Your site runs on Drupal 7
Community security updates ended in January 2025. Every new vulnerability in core or a contributed module now stays open unless someone pays to close it.
The upgrade is a rebuild anyway
Drupal 7 to 10 or 11 means a new theme, ported modules and a content migration. That is the same project as moving to a modern stack, with a different result.
Every major version means another project
On Drupal 10 or 11, contributed modules have to catch up with each new core release. Some never do, and the upgrade waits on the slowest one.
Only a Drupal developer can change it
Templates, hooks and Views configuration live in a system few people know well. Small changes queue up behind a specialist or an agency retainer.
Editors fight the admin screens
Nested Paragraphs, long node forms and a preview that is a separate step. Publishing a simple page takes longer than it should.
What happens to your Drupal modules
Pick the modules your site relies on today. Each one becomes part of the site itself, or turns out not to be needed.
- Content types and fieldsSanity schemas or Payload collectionsNodes and their fields are read from the Drupal database and moved by script, with body text converted to structured content and files re-uploaded.
- ParagraphsPage-builder blocksEach paragraph type becomes a block editors compose pages from, built once in code so every page stays on brand.
- ViewsQueries in the codeListings, filters and archive pages become GROQ or Payload queries in the front end, versioned with the rest of the site.
- TaxonomyCategories as referencesVocabularies and terms become documents your content references, with their own pages where they have them today.
- Pathauto / RedirectRedirects in the configEvery path alias and existing redirect is mapped to its new home in the hosting config, versioned with the code.
- MetatagSEO fields in the CMSTitles, descriptions and social images are edited next to the content. Sitemaps and structured data are generated with every build.
- WebformA form built into the siteValidated on the server, filtered for spam and sent to your inbox, CRM or Slack. Complex multi-step forms are scoped per project.
- Content TranslationBuilt-in localisationTranslations live per field or per document in Sanity or Payload, with their own URLs and hreflang.
- Search API / SolrHosted searchSite search runs on a hosted index such as Algolia, or on your own database with Payload. No Solr server to maintain.
- Drupal Commerce / member areasScoped separatelyShops and logged-in areas move to a dedicated service connected to the new front end. The audit says what moves where.
What changes when you leave Drupal
Astro and Next.js decide how pages are built. Sanity and Payload are where your team edits. We recommend a pair after the audit.
| Feature | Astro + Sanity | Next.js + Payload | Drupal |
|---|---|---|---|
| Security | |||
| No PHP on the server | |||
| Editor login off your public site | Separate /admin route | ||
| Security updates for your version | Ended for Drupal 7 | ||
| Content | |||
| Structured, reusable content | |||
| Revisions and editorial workflow | |||
| Live preview while editing | Separate preview step | ||
| Multilingual content | |||
| Fine-grained roles and permissions | Plan-based | ||
| Performance and upkeep | |||
| Pages served pre-built from a CDN | With a reverse proxy | ||
| Ships only the JavaScript a page needs | Per route | ||
| Major upgrades without a rebuild | Not from Drupal 7 | ||
| Self-hosted, open-source CMS | Hosted by Sanity | ||
Sites we've already moved
Different stacks for different jobs: a law firm on Next.js and Payload, a residential launch and our own studio on Astro and Sanity.
Yegparian PLLC
WordPressNext.js + Payload
An Austin trial litigation firm. Practice areas, matters and insights are Payload collections, and every page is pre-rendered and served from the edge.
yegparianpllc.com (opens in a new tab)25 Cuba
WordPressAstro + Sanity
A new residential address in Canary Wharf. Apartments, amenities and galleries are edited in Sanity, and the site ships as static Astro pages.
25cuba.com (opens in a new tab)Celerart
WebflowAstro + Sanity
Our own studio site. Every one of the 164 old URLs was carried over or redirected, and all content is now edited in Sanity.
celerart.com (opens in a new tab)
How we move a Drupal site
Your Drupal site stays live until the new one is ready. The switch is a DNS change, not a weekend of downtime.
Audit
Audit
We crawl every URL, list every content type, View, module, form and integration, and export your rankings, so nothing is lost by accident.
Content model
Content model
Content types, Paragraphs and taxonomies become a clean schema in Sanity or Payload, shaped around how your team actually edits.
Content import
Content import
Nodes, fields, terms, files and users move by script from the Drupal database. Body text is converted, images re-uploaded and internal links rewritten.
Front end
Front end
We rebuild the design in Astro or Next.js: the same look, or a refresh if one is due. Every template is checked against the old one.
Redirects and launch
Redirects and launch
Every path alias and old redirect gets a permanent redirect to its new address. Metadata, sitemaps and structured data are compared before the DNS switch.
Handover
Handover
Your team gets a walkthrough of the new editor. Then the Drupal server is switched off for good.
Questions about leaving Drupal
It is a fair option, and the audit will compare both. From Drupal 7 there is no in-place upgrade: the theme is rebuilt, modules are replaced and content is migrated either way. Moving to Astro or Next.js costs a similar effort and ends the cycle of major-version upgrades.
Not if the move is planned. Every URL keeps its address or gets a permanent 301 redirect, built from your path aliases and existing redirects. Titles, descriptions, structured data and sitemaps are carried over and checked before launch, and we watch Search Console for the weeks after the switch.
By script, straight from the Drupal database: nodes, fields, Paragraphs, taxonomy terms, files and authors. Body text becomes structured content in Sanity or Payload, and internal links are rewritten to the new URLs.
Yes. Sanity and Payload give editors live preview, drafts and version history, and they only see the fields that matter for each page. Roles and permissions are set up around your editorial team.
We scope them one by one. Usually a dedicated service takes over, such as an auth provider for logins, a hosted search index or Shopify for a shop, connected to the new front end. The audit tells you what moves where.
It depends on the number of content types, Views, integrations and languages. After the audit you get a fixed scope and timeline, and the Drupal site stays live until launch day.
Keep it protected until launch: a commercial extended-support vendor or a web application firewall in front of it, the server and PHP patched by your host, unused modules disabled and the login page restricted. The migration removes the risk; it does not cover the months before launch.


