Automatisierte Content-Migration – Von DokuWiki zu Confluence

    Finden Sie heraus, wie wir die Migration unserer Projektdokumentation abgewickelt haben – einschließlich der Vor- und Nachteile der manuellen und der automatischen Migration sowie automatisierter Tools und Methodiken, wodurch der gesamte Migrationsprozess nahtlos wird.

    Abonnieren Sie unseren Blog

    Bei AMPLEXOR Niederlande verwenden wir DokuWiki abereits seit einigen Jahren als unser Wiki. Durch unsere wachsenden Bedürfnisse hat allerdings auch der Bedarf an ausgefeilteren Lösungen zugenommen. Da andere Teams von AMPLEXOR bereits Confluence verwenden, schien es für unsere Zwecke sinnvoll, es ebenfalls zu nutzen. Confluence bietet mehrere Vorteile:

    1. Die Confluence Software integriert sich in Jira, das wir derzeit als Issue Tracker verwenden. So können wir Einblicke in die Entwicklungsarbeit bereitstellen und automatische Berichte generieren.
    2. Da die gesamte Gruppe Confluence verwendet, kann Wissen leicht unter den Mitgliedern der Gruppe ausgetauscht werden.
    3. Confluence bietet mehr Integrationen und benutzerdefinierte Komponenten als DokuWiki und erweitert dadurch unser Wiki um weitere Funktionen.

    Es stellt sich also die Frage, wie wir all unsere aktuellen Wiki-Inhalte in Confluence integrieren können. Für unsere Migration existieren keine perfekt zugeschnittenen Lösungen. Das Tool der Firma AppFusions – der Universal-Wiki-Converter (UWC) – bietet eine Reihe von Konvertierungen mit regulären Ausdrücken an. Der Converter wandelt eine unterstützte Wiki-Seite in eine Confluence-Seite um. Dabei werden Stil sowie Layout übernommen.

    Der UWC ist jedoch nur ein Werkzeug und beim Bearbeiten bestimmter Wiki-Markups können Probleme auftauchen. Das bedeutet, dass unsere DokuWiki-Seiten optimiert werden müssen, bevor diese in Confluence-Seiten umgewandelt werden können. Dies kann manuell durchgeführt werden, würde allerdings eine beträchtliche Menge an Zeit und Ressourcen erfordern. Wir haben daher beschlossen, ein Skript zu schreiben, das dies für uns erledigt. So können wir das Skript ausführen und ein exportiertes Wiki nutzen. Dieses Szenario verdeutlicht, weshalb sich Automatisierung als äußerst nützlich erweisen kann.

    Bis ins Detail

    Nachdem das UWC in Betrieb genommen wurde, tauchten auch schnell die ersten Probleme auf. Unser früheres Wiki basiert stark auf die Verwendung einer Hierarchie, die vom UWC erst gar nicht unterstützt wird. Dies führt zu einem Wiki, in dem der gesamte Text vorhanden ist – allerdings komplett ohne Anhänge oder Links – und die Behebung dieses Problems gestaltet sich schwieriger als man denkt. Die Lösung bestand also darin, unsere Dateien zu zentralisieren – das bedeutet, dass diese aus der Hierarchie gezogen und mit einem eindeutigen Namen versehen werden müssen. Diese Methode ist verlässlich, verursacht allerdings viel zusätzliche Arbeit, da alle Bilder und Links korrigiert werden müssen. Aufgrund unserer Entscheidung, die Migration zu skripten, wurde dieser Schritt obsolet: Bei manueller Durchführung hätte dies eine erhebliche Zeit in Anspruch genommen.

    Unser Plan für die Migration bestand darin, all unsere alten Seiten in einen neuen Bereich der Confluence-Software zu verschieben und unsere Dateien zu einem späteren Zeitpunkt neu zu organisieren. Beim Testen gestaltete sich das Verschieben einer Seite in einen anderen Bereich als problematisch. Wir konnten eine Seite nicht verschieben, ohne alle Links zu der Seite zu unterbrechen – was kein normales Confluence-Verhalten darstellt. Nach einigen Versuchen und Fehlern fanden wir heraus, dass das Problem sich durch das Speichern einer Seite lösen lässt. Daraufhin tauchte prompt das nächste Hindernis auf: Wie werden alle Seiten gespeichert, ohne dass jemand einen ganzen Tag damit verbringen muss, alles minutiös manuell abzuspeichern? Unsere Antwort darauf kam von unserer Erfahrung im automatisierten Testen. Eine der Softwaresammlungen, die üblicherweise für automatisierte Tests verwendet wird, ist Selenium. Diese Suite, die verschiedene Aktionen ausführen kann, ermöglicht einem Webbrowser auch in Code-definierten Aktionen ausgeführt zu werden. Wir haben es dazu verwendet, um eine Seite zu öffnen, zu speichern und zur nächsten Seite wechseln.

    WWir arbeiten in der Softwareentwicklung und das spiegelt unser Wiki auch wider. Es enthält außerdem eine Menge an Code-Snippets. Nachdem wir einige Wiki-Seiten konvertiert hatten, bemerkten wir, dass am Ende jeder Zeile unseres Code-Snippets einige nicht erkennbare Zeichen auftauchten. Es stellte sich heraus, dass diese Zeichen einen Wagenrücklauf darstellten, der im Wesentlichen wie ein Zeilenumbruch funktioniert. Das erschien uns seltsam, da der Rest unseres Wikis diese Charaktere nicht enthielt. Nachdem wir den UWC-Quellcode durchforstet hatten, stellte es sich als eine Eigenart des Konverters heraus. Der UWC DokuWiki-Konverter wies einen Fehler vor, der alles in HTML umwandelt – einschließlich unseres Wagenrücklaufs. Da der Konverter nicht aktiv gewartet wird, mussten wir dies umgehen und den HTML-Code für die neue Zeile von unserer Seite entfernen.

    Fazit

    Wir haben unser gesamtes Wiki erfolgreich migriert. Der gesamte Prozess hat mehr Zeit und Mühe als ursprünglich geplant in Anspruch genommen, was aber kein Vergleich zu der Zeit und Ressourcen darstellt, die durch die Automatisierung des gesamten Prozesses eingespart wurden. Zu Beginn des Projekts schien die vollständige Automatisierung übertrieben – letztendlich waren wir aber voll davon überzeugt, damit die richtige Entscheidung getroffen zu haben. Darüber hinaus haben wir automatisierte Migrationsskripts erstellt, die für andere Teams oder Clients, die ähnliche Migrationen durchführen möchten, wiederverwendbar sind.

    Veröffentlicht auf    Zuletzt aktualisiert am 20/09/2018

    #Content Management, #Softwareentwicklung

    Über den Autor

    Guus Hamm is a Junior Digital Experience Technical Consultant at Amplexor, based in The Netherlands. Specializing in Adobe Experience Manager, Guus supports the design and development of WCMS solutions for clients across industries. He has a focus on automation developed through work in DevOps teams.

    SUBSCRIBE TO OUR BLOG