Drupal 7's official end-of-life passed in January. If you're still on D7, the upgrade path is no longer a fall project — it's an emergency one.
We've shipped fourteen D7 → D10 migrations. Every one followed the same checklist, refined a little each time. Today's version, copy-paste ready:
Pre-flight (week −4): inventory every contrib + custom module, decide for each (replace, port, kill). Map every URL. Lock down content changes. Set up the destination on a parallel host.
Migration day: backup, drupal-to-drupal migrate, sanity-check counts, sanity-check a sample of URLs, swap DNS. Keep the source running read-only for 7 days.
Post-launch (week +1 through +4): redirect 404 monitoring, content-author training, weekly bug triage. Plan the first contrib-update cycle in week 6.