Inventory the Drupal source before extraction
Record the Drupal version, hosting and database access, enabled modules, content bundles, fields, users, roles, taxonomy vocabularies, comments, menus, files, languages, aliases, and custom entities. Capture counts and tested backups before changing the source.
For Drupal 7, include legacy field tables and module-owned storage described in the Drupal 7 migration guide.
Choose a source path that matches the Drupal version
Use JSON:API only where the installed version and configuration expose the required resources. Older or restricted sites may need Migranetix Bridge, approved database access, or another supported extraction path.
Connection success is only an access check. Sample nodes, field values, terms, files, users, aliases, and module records before confirming coverage.
Map bundles to a prepared WordPress model
Map each Drupal bundle to a WordPress post, page, custom post type, archive, or explicit exclusion. Define taxonomies, fields, blocks, authors, statuses, dates, slugs, and templates before loading content.
Document transformations and source identifiers in the data mapping worksheet.
Preserve typed fields and formatted content
Handle field cardinality, dates, booleans, numbers, links, addresses, lists, entity references, embedded media, and formatted text according to their types. Decide how Drupal text formats, filters, tokens, shortcodes, and embedded entities will render in WordPress.
Load dependencies in a controlled order
Create users and taxonomy terms before content that references them. Load parent records before children, then comments, menus, relationships, and other dependent records. Preserve source IDs so retries and reconciliation remain auditable.
Transfer media without weakening access rules
Resolve public and private file locations, derivatives, missing binaries, filenames, MIME types, captions, alt text, ownership, and references. Private files must remain protected until WordPress has an equivalent access control.
Treat Paragraphs and module data as explicit scope
Paragraphs, Field Collections, Webforms, Views, commerce records, custom entities, and module tables do not become WordPress features automatically. Map portable data to prepared blocks, fields, child records, plugins, or custom code; document excluded behavior separately.
Rebuild menus, languages, aliases, and routes
Preserve menu hierarchy, translation relationships, language values, path aliases, and valuable historical routes. Finalize the destination permalink model before generating the redirect map in the Drupal SEO migration guide.
Dry run, reconcile, and plan cutover
Test representative simple and complex records, then compare source, extracted, transformed, loaded, skipped, and failed totals. Validate rendered output, editability, relationships, media, permissions, metadata, and URLs.
After acceptance, plan a publishing freeze or repeatable delta, full transfer, redirect activation, launch checks, rollback conditions, and monitoring. Review migration cost factors before fixing scope.