How to Recover Your Drupal Site After a Failed Migration

Migrating your Drupal site to a new server or a newer version of the CMS—like Drupal 9 to Drupal 10—should be a step forward. But when things go wrong, and your site ends up broken or inaccessible, it can feel like everything’s lost. Don’t panic. Failed migrations happen more often than you think, and with the right process, your Drupal site can be fully restored and improved in the process.
Here’s how to take back control after a migration goes south.
First: Assess the Scope of the Damage
Is your site totally down (500 error, white screen)?
Are some features/modules broken but the backend still accessible?
Has any content gone missing?
Did user roles/permissions change unexpectedly?
Start by creating a detailed list of what isn’t working. This helps you or your developer zero in on which parts of the migration caused the disruption.
Restore from Backup (If Available)
If you took a backup before migrating—which you always should—this is the time to use it. Depending on the situation, you can:
Roll back to the pre-migration version
Restore just the database (if files weren’t affected)
Restore specific files or folders (e.g.,
/sites/default/files
,settings.php
, or custom modules)
Make sure to do this in a staging environment first. Never restore directly on the live server unless you’re confident the rollback won't cause further issues.
Fix Module and Theme Compatibility
A failed migration often stems from outdated or incompatible code. Review the following:
Are your contributed modules compatible with the new Drupal version?
Are any of your custom modules or themes throwing PHP errors?
Are deprecated hooks or services being used?
You may need to update or rewrite portions of your custom code to work with the new environment.
Rebuild Cache and Configuration
Sometimes post-migration issues relate to corrupted or missing config. Here’s how to clean that up:
Run
drush cr
(if available) or clear caches through the UI.Re-import configuration:
drush cim
if you exported config beforehand.Review your
.htaccess
or NGINX config for mismatched paths or rewrites.
Check File Permissions and Ownership
A very common post-migration issue: file and directory permissions that don’t align with your new server’s environment. This can cause file upload errors or prevent access to media.
Ensure that:
The
/sites/default/files
folder is writable by the web server.The ownership matches the server’s user (e.g.,
www-data
orapache
).No symbolic links were broken during transfer.
Re-Index and Rebuild Search
If your site relies on views, Solr, or search indexes, rebuild them to prevent 404s or empty search results. Go to /admin/config/search/search-api
(if using Search API) and trigger re-indexing.
Work With a Recovery Specialist
Trying to fix everything alone can waste days or even weeks—especially if custom code or complex architecture is involved. That’s why many organizations choose to hire Drupal developers who’ve handled high-stakes recovery before.
Or, skip the trial-and-error and book a consultation directly with a Drupalify tech lead. We’ll assess your issue in real time and guide your recovery plan from start to finish.
Frequently Asked Questions
Can I recover a Drupal site without a backup?
Yes, but it’s more complex. You’ll need to manually repair the database, reconfigure modules, and potentially recover files from the server file system or cloud host.
Why do Drupal migrations fail?
Common reasons include incompatible modules, incorrect database imports, version mismatches, or server misconfigurations.
Is it better to fix a failed migration or start over?
It depends on how far the migration got and how damaged the system is. If your backup is solid, a re-migration may be faster than fixing everything manually.
How long does recovery typically take?
Anywhere from a few hours to a few days. Having expert help reduces downtime dramatically.
What’s the safest way to run a Drupal migration?
Always test in staging, create full backups, and audit all module compatibility before you start.