Treat Drupal 7 status as urgency, not automatic compatibility
Drupal 7 requires an intentional retirement, upgrade, or replatforming plan. Its age does not make every contributed module, custom table, field type, or password portable.
Moving into WordPress is a cross-platform migration. It is different from an in-place Drupal upgrade and needs its own destination model, URL plan, validation, and cutover.
Inventory the complete legacy environment
Record Drupal core and PHP versions, database engine, table prefix, files directories, private files, multisite setup, languages, cron, patches, themes, modules, custom code, and external integrations. Create tested database and file backups before discovery changes.
Choose a version-compatible source path
Modern JSON:API assumptions do not apply automatically to Drupal 7. Use a compatible Migranetix Bridge, database-backed extraction, or another approved path that exposes the required records without weakening production security.
Verify access with representative nodes, fields, users, terms, files, aliases, and module-owned records before estimating full coverage.
Separate core data from contributed and custom storage
Inventory nodes and revisions, field tables, users, roles, taxonomy, comments, menus, files, aliases, Redirect data, Field Collections, Paragraphs where installed, and custom entities separately. Identify which module owns every business-critical record.
A node count does not measure nested field items, references, files, translations, or custom tables.
Prepare WordPress for bundles, fields, and relationships
Route each Drupal bundle to a post, page, custom post type, archive, or exclusion. Prepare taxonomies, fields, users, media, comments, menus, languages, SEO storage, and permalinks before loading dependent records.
Use the mapping worksheet to preserve source IDs and document transformations, fallbacks, and exceptions.
Reconstruct public URLs and private access
Crawl live paths and combine aliases, historical redirects, language prefixes, menu routes, taxonomy pages, files, feeds, and valuable query URLs. An alias table alone is not a complete route inventory.
Keep private files and restricted content protected. If WordPress cannot represent an access rule, hold those records until the destination control exists.
Dry run complex records before the full transfer
Test representative bundles, multivalue fields, references, formatted text, Field Collections, translations, comments, private files, aliases, and missing dependencies. Reconcile source, extracted, transformed, loaded, skipped, and failed totals.
Do not accept an import only because the API returned success. Validate rendered output, editability, relationships, assets, routes, and permissions.
Plan delta, cutover, and source retirement
Define a publishing freeze or repeatable delta, backups, owners, redirect activation, acceptance checks, rollback conditions, and retention. Retire the Drupal 7 host only after production evidence passes.
Review the commercial migration scope, Drupal vs WordPress comparison, content import guide, redirect and SEO plan, and cost factors.