Migration einer Webseite von Joomla 1.0.x nach Drupal 6

Von einem Content Management System (CMS) zu einem anderen zu wechseln, ist in der Regel schon eine aufwändige Sache. Manchmal läßt es sich aber nicht vermeiden. Bevor man es ernsthaft angeht, empfiehlt es sich, den Ablauf einmal durchzuspielen, damit es später, wenn es ernst wird, keine bösen Überraschungen gibt. Hier der Testlauf einer Migration einer schon etwas älteren Joomla-Installation (Version 1.0.15) zu Drupal. Zunächst einmal sollte es nur Drupal 6 sein, da teilweise benötigte Module noch nicht für Drupal 7 verfügbar sind.

Für die Migration einer Joomla-Installation zu Drupal gibt es zwei Module Joomla To Drupal und Joomla-to-Drupal Converter. Das erstere war zum Zeitpunkt des Testbeginns noch im Alpha-Stadium und schien seit Dezember 2009 nicht mehr weiter entwickelt worden zu sein. Eine Version für Drupal 7 gab es noch nicht (seit einigen Tagen gibt es hierfür eine erste Alpha-Version). Das zweite Modul gab es immerhin in einer Beta-Version, allerdings nur für Drupal 5 und 6, und in einer sehr aktuellen Dev-Version. Letzteres kam dann bei dem Test zum Einsatz. Die Dokumentation ist sehr knapp gehalten und reicht nur für die Durchführung der Datenmigration. Worauf man vorher und nachher achten muss, wird nicht beschrieben - und es gibt diverse Stolperfallen. Und so sind wir vorgegangen:

Im ersten Schritt legt man eine frische Drupal-Installation an und bereitet diese für den Import der Joomla-Daten vor. Auf folgendes muss man dabei unbedingt achten:

  1. Drupal muss unbedingt in der richtigen Sprachversion installiert werden - in unsererm Falle in Deutsch -, weil sonst in allen Überschriften und Taxonomy-Terms die Umlaute fehlerhaft dargestellt werden.
  2. Bei allen Inhaltstypen in die importiert werden soll (hier waren es die Typen "Seite" und "Artikel"), muss in den Webseiten-Einstellungen das Standardformat auf Full HTML eingestellt werden. Wenn dies nicht gemacht wird, werden beim Importieren der Inhalte alle Nodes, die das Converter-Modul anlegt, auf "Filtered HTML" eingestellt (unabhängig von den Einstellungen im Converter-Modul!). Dies führt dann zu fehlerhaften Darstellungen der Inhalte (z.B. werden keine Bilder angezeigt).
  3. Das Profile-Modul mus vor dem Import aktiviert werden (standardmäßig ist es bei einer neuen Drupal-Installation deaktiviert) damit User-Profilfelder importiert werden können. Andernfalls kommt es hier zu Fehlermeldungen.
  4. Bei Drupal gibt es genau einen Superadministrator, den User 1, der bei der Installation immer angelegt wird. Bei Joomla kann es dagegen mehrere Super-Admins geben. Im vorliegenden Falle gab es unter Drupal den User 1 mit dem Namen "Admin" und unter Joomle zwei Super-Admins mit den Usernamen "Admin" und "Admin2". Dies führte beim Testimport dazu, dass der Converter alle Beiträge des Users "Admin2" dem Drupal-User 1 ("Admin") zugeordnet hat. Weiterhin wurden sämtliche Beiträge des Joomla-Users "Admin" nicht übernommen. Außerdem wurde die Taxonomy völlig zerstört. Die Seite war damit nicht mehr benutzbar. Abhilfe: Den User "Admin" in Joomla in "Admin1" umbenennen. Danach lief der Import fehlerfrei.

Jetzt kann man die eigentliche Migration vorbereiten. Als erstes erstellt man ein Backup der Drupal-Installation und der Datenbank. Sollte beim Import etwas schief gehen, kann man schnell "auf Anfang" zurückgehen.. Ein Backup der Joomla-Datenbank ist dagegen nicht notwendig (schadet aber auch nicht), da der Konverter nur lesend auf dessen Datenbank zugreift. Nun isntalliert man Converter-Modul auf der Drupal-Seite und aktiviert es. Dann kopiert man die Datei configuration.php der Joomla-Seite in den Modulordner ../sites/all/modules/joomla2drupal - damit kann der Konverter die Zugangsdaten zur Joomla-Datenbank auslesen und direkt in seiner Konfiguration eintragen. Jetzt geht man auf die Konfigurationsseite von Joomla-to-Drupal Converter. Dort werden jetzt die Zugangsdaten zur Joomla-Datenbank angezeigt. Nun ergänzt man noch die fehlenden Angaben, wie z.B. den absoluten Pfad der Drupal-Installation und gibt an welche Joomla-Inhalte in welche Drupal-Inhaltstypen importiert werden sollen. Das ganze sieht dann ungefähr so aus:

Konfigurationsseite des Moduls "Joomla To Drupal Converter"

Konfigurationsseite des Drupal-Moduls Joomla2Drupal Converter

Jetzt kommt der spannende Moment: Ein Klick auf "Start Migration!" und der Import beginnt. Hat man alles richtig vorbereitet und eingestellt, so dauert der Vorgang - je nach Datenmenge - einige Sekunden bis mehrere Minuten und sollte ohne Fehlermeldungen durchlaufen.

Nacharbeiten

Zwar sind jetzt alle Daten in Drupal importiert, aber damit ist die Arbeit noch lange nicht beendet. Folgende Schritte sind noch notwendig:

  1. Aufräumen der Taxonomy. Diese musste zunächst einmal an die neue Seitenstruktur angepasst werden. Einzelne Rubriken werden wegfallen, andere müssen zusammengefasst werden. Anschließend können die Inhalte mit Hilfe von Views und Panels in der neuen Seitenstruktur dargestellt werden.
  2. Anpassen der Bildpfade: Diese fangen in Joomla standardmäßig mit "images" an und liegen im gleichnamigen Ordner im Root-Verzeichnis der Joomla-Installation. Kopiert man nun alle Bilder in Drupal ebenfalls in diese Ordnerstruktur (Wichtig: Diesen Pfad unbedingt in Drupal unter "Einstellungen >> Dateisystem Dateisystem-Pfad" eintragen) würde es eigentlich passen. Leider tut es das in der Praxis nicht, denn relative Pfadangaben fangen in Joomla direkt mit dem Verzeichnisnamen an, bei Drupal dagegen mit einem "/". Als Lösung bleibt nur, dass "/" händisch zu ergänzen - hat man viele Bilder ist das sicher keine gute Idee. Dann sollte man dies per SQL-Befehl direkt in der Datenbank ändern.
  3. Das gleiche gilt für die Pfade von Dateianhängen. Auch diese müssen entweder in der Datenbanktabelle-Tabelle geändert werden oder man hängt den jeweiligen Anhang manuell neu an die entpsrechende Node an.
  4. Ein Sonderfall waren Bilder, die unter Joomla per Mambot eingebettet waren. Diese wurden komplett manuell neu eingebunden.
  5. Ersatz von Dritt-Komponentem. Werden z.B. Module für Bildergalerien oder Newsletter eingesetzt, so muss man hierfür geeignete Drupal-Module verwenden. Die Daten hierzu - z.B. die Abonnenten der Newsletter - muss man zunächst manuell aus der Joomla-DB exportieren und dann über eine Importfunktion wieder einlesen.
  6. Interne Links: Die stimmen natürlich allesamt nicht mehr und müssen händisch neu gesetzt werden. Hilfreich ist hierbei das Modul Link Checker, das in der Lage ist Broken Links zu finden. Je nach interner Verlinkung der Seite, ist das u.U. der aufwändigste Teil der ganzen Operation.

Alles in allem ist das schon eine aufwändige Geschichte. Daher sollte man sich vorher wirklich genau überlegen, ob es nötig ist. Immerhin nimmt einem das Converter-Modul doch einen guten Teil der Arbeit ab.

Trackback URL for this post:

http://tederion.de/trackback/108