Drupal 7 zu 10: Die besten Tools und Module für eine erfolgreiche Migration

· 6 Minuten ·

Leider sind viele der in diesem Artikel genannten Module derzeit noch nicht vollständig kompatibel mit Drupal 10. Es ist daher ratsam, für Migrationsprojekte vorerst Drupal 9 zu verwenden und später ein Upgrade auf Drupal 10 durchzuführen, nachdem die Migration abgeschlossen wurde.

Die Umstellung einer (bestehenden) Drupal 7 Website auf die neueste Drupal Version (im Moment Drupal 10) ist leider keine einfache Aufgabe. Zu viel hat sich an der grundlegenden Architektur von Drupal verändert, um mit den Entwicklungen in der Webwelt mitzuhalten und weiterhin bestehen zu können.

Aus meiner Erfahrung als Drupal Entwickler kann ich sagen, dass Websites, die heutzutage noch mit Drupal 7 betrieben werden, häufig nur noch am Leben gehalten werden. In den meisten Fällen findet keine aktive Weiterentwicklung und Verbesserungen mehr statt. Es sind quasi digitale Zombies.

Natürlich ist die Aktualisierung von Drupal 7, je nach Umfang der Website, sehr zeitaufwendig. Aber diese Umstellung bietet auch eine hervorragende Gelegenheit, die Website eingehend auf den Prüfstand zu stellen, um sicherzustellen, dass sie den Anforderungen und Erwartungen der Zielgruppe entspricht.

Ich habe bereits verschiedene Drupal 7-Migrationsprojekte begleitet und in diesem Artikel möchte ich Dir eine Übersicht über die Module geben, die ich hierfür einsetze und die mir die Arbeit erheblich erleichtern.

Migrate

Das zentrale und wichtigste Modul ist natürlich Migrate. Dieses ist direkt Bestandteil von Drupal Core und es stellt die grundlegende Struktur und Prozesse für jegliche Art von Migrationen innerhalb von Drupal bereit. Das bedeutet, dass sich mit diesem Framework nicht nur Daten aus Drupal 7 migrieren lassen, sondern Daten aus ganz unterschiedlichen Datenquellen eingelesen und verarbeitet werden können.

Das Drupal Migrate Modul basiert auf dem klassischen ETL-Ansatz. Dieser besteht aus drei Prozessschritten: Extract, Transform und Load.

Schema des ETL-Prozesses
  1. Extract (Source): In diesem Schritt werden die Daten aus der jeweiligen Datenquelle (Source Plugin) geladen. Dies kann eine Datenbank (z.B. Drupal 7, WordPress), CSV-/Excel-Dateien oder Schnittstellen (APIs) sein. Hierbei werden die Daten im Rohformat gesammelt, ggf. vorbereitet, um diese im nächsten Schritt weiterzuverarbeiten.
  2. Transform (Process): Hier werden die zuvor extrahierten Daten so umgewandelt, dass Sie die notwendigen Anforderungen erfüllen und im Zielsystem gespeichert werden können. Beispielsweise indem die Daten bereinigt, in ein anderes Format umgewandelt, oder mit anderen Daten zusammengeführt oder angereichert werden.
  3. Load (Destination): Der Begriff Load ist hier etwas verwirrend, da in diesem Schritt keine Daten geladen, sondern im Zielsystem gespeichert werden. Das entsprechende Destination-Plugin erhält dir Daten aus dem vorherigen Transform-Prozessschritt und lädt sie in die Drupal 10 Datenbank. Durch die offene Architektur von Drupal ist es jedoch auch möglich, die Daten woanders abzulegen.

Migrate Drupal und Migrate Drupal UI

Mit diesen beiden Modulen liefert Drupal direkt einen fertigen Migrationsprozess für die Übertragung der Daten aus einer Drupal 7-Installation mit. Insbesondere für recht einfache Drupal 7-Projekte (die wenig Contrib Module einsetzen) ist diese Out-of-the-box-Lösung gut geeignet.

Nach der Installation von Drupal 9/10 kann das Migrate Drupal UI Modul aktiviert werden. Ein Schritt-für-Schritt-Prozess führt anschließend durch die Migration. Hierbei werden die vorhandenen Inhaltstypen, Felder, Inhalte (Nodes) und auch die Benutzerkonten übernommen. Der Wizard analysiert auch die Datenstruktur und informiert über Module, die vor der Migration noch installiert werden sollten, damit möglichst viele Daten migrieren werden können.

Je mehr Module oder individuelle Implementierungen in Drupal 7 verwendet wurden, desto anfälliger wird dieser „Alles-oder-nichts“-Ansatz, da nicht alle Module passende Migrationspfade (Plugins) bereitstellen und daher nicht alle Daten vollständig migriert werden können. In diesem Fall ist leider etwas mehr Handarbeit erforderlich. Aber auch hierfür gibt es Module, die bei der Umsetzung helfen.

Migration Planner

Dieses Modul kann bei der vorbereitenden Planung einer Migration helfen. Das Migration Planner Modul wird in Drupal 9 installiert und dort die Drupal 7-Datenbank angebunden. Anschließend kann per Drush Befehl (drush migration_planner:generate) eine Excel Tabelle generiert werden, die alle vorhandenen Entity-Typen, Inhaltstypen und vorhandene Felder auflistet. Dadurch bekommt man nicht nur eine gute Übersicht, sondern es kann auch der Prozess der Migration gesteuert werden, indem entsprechende Markierungen und Notizen in der Tabelle eingetragen werden.

Screenshot einer Beispiel-Tabelle die mit dem Migration Planner erstellt wurde

Upgrade Status

Das Upgrade Status Modul ist nicht nur für Drupal Migrationen hilfreich, sondern auch bei zukünftigen Upgrades von Drupal. Es prüft alle installierten Module und Themes auf Verfügbarkeit eines passenden Releases auf drupal.org und zeigt auch Informationen über den aktuellen Status an.

Die so erhaltene Übersicht hilft nicht nur bei der Planung und Bewertung der Komplexität des Upgrades, sondern ermöglicht auch die Identifikation und Bewertung möglicher Alternativmodule.

Screenshot von einer Upgrade Status Prüfung

Migrate Plus

Migrate Plus liefert zusätzliche Plugins für den ETL-Prozess. Diese sind insbesondere bei komplexen Migrationen sehr hilfreich. Beispielsweise um Referenzen und Abhängigkeiten zwischen Entities und Feldern aufzulösen und sauber zu migrieren. Zudem besteht mit diesem Modul die Möglichkeit, dass Migrationen als Konfiguration (Config Entities) gespeichert werden können. Dadurch kann die Migrationskonfiguration exportiert, einfacher modifiziert und versioniert werden. Dies ermöglicht es, Änderungen an den Migrationen einfacher nachzuverfolgen und zu testen. Das wiederum führt zu einem schnelleren und stabileren Migrationsprozess, speziell bei komplexen Projekten.

Migrate Tools

Dieses Modul ermöglicht es, Migrationen via Drush (Kommandozeilen-Werkzeug für Drupal) auszuführen und zu steuern. Sehr häufig wird Migrate Tools in Kombination mit Migrate Plus verwendet.

Migrate Tools bringt verschiedenste Drush Kommandos mit:

  • migrate:status – Übersicht über die vorhandenen Migrationen und deren Status
  • migrate:import – Führt einzelne Migrationen, Migrationsgruppen oder alle definierten Migrationen aus
  • migrate:rollback – Kann (ausgeführte) Migrationen rückgängig machen
  • migrate:tree – Zeigt die Abhängigkeiten zwischen Migrationen als Baumstruktur an

Module Upgrader

Fast alle der bisher vorgestellten Module standen im Zusammenhang mit der Datenmigration. Bei einem Drupal Upgrade spielt jedoch auch die Kompatibilität der eigenen Module und Themes eine große Rolle. Hierbei hilft Module Upgrader.

Das Modul wird in die neue Drupal-Installation (also Drupal 9/10) installiert und das zu aktualisierende Drupal 7-Modul wird in das /modules/custom Verzeichnis kopiert, jedoch nicht installiert. Nun kann mit dem Drush Befehl drush dmu-analyse MODULE die Analyse gestartet werden. In einigen Fällen können die erforderlichen Änderungen sogar automatisch mittels drush dmu-upgrade MODULE durchgeführt werden.

Es muss jedoch angemerkt werden, dass Module Upgrader die grundlegende Kompatibilität prüft und auch nicht alle erforderlichen Änderungen erkennt. Es ist zudem möglich, dass bessere Lösungen für Implementierungen in Drupal 9/10 gibt bzw. nicht die neuen Funktionen/Möglichkeiten genutzt werden (beispielsweise für die Mehrsprachigkeit oder dem Config Export). Das Modul ist jedoch eine gute Basis und unterstützt bei den ersten Schritten für die Aktualisierung der selbst entwickelten Module.

Weitere Module

  • Media Migration – Migriert Drupal 7 Media Entities nach Drupal 9/10
  • Migrate Report – Damit können Berichte über die zuletzt ausgeführt Migration erstellt werden, für eine übersichtliche Darstellung von Fehlern, Warnungen und anderen Meldungen.
  • Merge Translations – Unterstützt bei der Migration von übersetzten Nodes. In Drupal 7 wurden häufig die Nodes als solches übersetzt und miteinander referenziert. Seit Drupal 8 findet die Übersetzung jedoch auf Feldbasis statt.
  • Migrate Process Extra – Das Modul bietet zusätzliche Process Plugins, um z.B. E-Mail-Adresse oder Links zu validieren oder automatisch Media Entities auf einem Datei/Bildfeld zu erstellen.
  • Webform Migrate – Migriert die erstellten Webforms einschließlich der Einsendungen (Submissions).
  • Location Migration – Hilft dabei die Daten des Drupal 7 Location Moduls zu dem neuen Address und Geolocation Feld zu migrieren.
Profile picture for user cbeier
Autor

Christian Beier

Hi, ich bin Christian! Ich unterstütze Unternehmen dabei ihre Geschäftsanwendungen und Prozesse zu digitalisieren. Hier blogge ich über Drupal, Webentwicklung, Digitalisierung, Projektmanagement und andere Themen, die mich interessieren. Per RSS abonnieren. Schreibe mir eine Mail an [email protected] oder folge mir auf LinkedIn oder Mastodon.