Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

Erfahrungen mit Migrationen nach Confluence

Seit eini­ger Zeit bie­tet Communardo einen Migrationsservice an, mit dem Daten aus vor­han­de­nen Altsystemen nach Confluence migriert wer­den kön­nen. Dabei kommt das Produkt Content Import Plugin (CIP) zum Einsatz. Dieses Plugin ist als Testversion frei ver­füg­bar und kann über das Atlassian Plugin Exchange her­un­ter gela­den wer­den. Über einen Online Shop ist zudem der Erwerb einer Volllizenz mög­lich. Somit kön­nen Kunden, die den Migrationsservice nicht in Anspruch neh­men möch­ten, selbst Migrationen durchführen.

Dieser Artikel beschreibt einige unse­rer bis­he­ri­gen Erfahrung bei der Durchführung sol­cher Migrationen. Er rich­tet sich sowohl an Kunden, die eine sol­che Migration selbst durch­füh­ren möch­ten, als auch an Kunden, die unse­ren Migrationsservice nut­zen möchten.

Vorgehen bei einer Migration

Migrationen mit dem CIP wer­den grund­sätz­lich zwei­stu­fig durch­ge­führt: Zunächst wer­den die Daten des Quellsystems in ein XML-Transportformat expor­tiert. Dieses wird anschlie­ßend mit dem CIP in das Confluence Zielsystem importiert.

Das Transportformat bil­det dabei sämt­li­che Inhaltstypen (Bereiche, Seiten, Blogposts, Dateianhänge) samt Metadaten (Autor, Erstell- und Änderungsdatum) ab. Auch die Seitenhierarchie und interne Verlinkungen wer­den unterstützt.

Erwartungshaltung des Kunden vs. Machbarkeit

Unsere bis­he­ri­gen Erfahrungen zei­gen, dass von der Kundenseite häu­fig sehr hohe Erwartungen an die Migration gestellt wer­den. Diese bezie­hen sich meist auf die Punkte

  • inhalt­li­che Vollständigkeit
  • glei­ches Aussehen
  • Funktionalität bleibt erhalten.

Die inhalt­li­che Vollständigkeit kann mit­hilfe des Transportformats sicher­ge­stellt wer­den. Sämtliche Seiten und deren Inhalte kön­nen davon abge­bil­det und folg­lich nach Confluence migriert werden.

Allerdings ist es nicht mög­lich, die Darstellung der Informationen und even­tu­elle Funktionalität (JavaScript) ver­lust­frei zu migrie­ren. Die fol­gende Grafik ver­deut­licht das prin­zi­pi­elle Problem dahinter:

blank

Die Kreise stel­len den Darstellungs- und Funktionsumfang ver­schie­de­ner Auszeichnungsformate dar. HTML bie­tet dabei den größ­ten Funktions- und Variationsumfang. Mit Confluence Wiki-Code las­sen sich viele Artefakte von HTML for­mu­lie­ren, wobei es auch zusätz­li­che Funktionalitäten gibt (z.B. Makros), die mit HTML nicht direkt umsetz­bar sind. Ähnlich ver­hält es sich auch mit MediaWiki-Code.

Anhand die­ses Diagramms wird klar, dass man Inhalte, die in einem MediaWiki vor­lie­gen nicht ver­lust­frei nach Confluence migrie­ren kann, da MediaWiki Konzepte kennt, die nicht auf Confluence abbild­bar sind (z.B. zusam­men­ge­fasste Tabellenzellen). Ebenso las­sen sich nicht sämt­li­che in HTML for­mu­lier­ba­ren Inhalte nach Confluence migrie­ren (z.B. Definitionslisten).

In man­chen Fällen kön­nen bei der Migration alter­na­tive Auszeichnungen gefun­den wer­den, die eine ähn­li­che Darstellung ermög­li­chen. Beispielsweise könn­ten Definitionslisten in ver­schach­telte Listen umge­wan­delt wer­den. Für ver­schach­telte Tabellen hin­ge­gen gibt es der­zeit keine Möglichkeit einer Abbildung in Confluence.

Ein wei­te­res Problem ist die Darstellung bestimm­ter Elemente. So kann eine Überschrift, die aus MediaWiki her­aus migriert wird im Confluence voll­kom­men anders aus­se­hen. Der Inhalt wurde dabei voll­stän­dig migriert, aller­dings unter­schei­det sich die Darstellung in bei­den Systemen. Formatierungsanweisungen, die bei­spiels­weise mit CSS im Quellsystem hin­ter­legt sind, kön­nen nicht migriert wer­den. Nur über die Entwicklung eines Confluence Theme Plugins ist es mög­lich, die Darstellung der Inhalte anzupassen.

Beispiele für Migrationsprobleme

Im Folgenden wer­den einige Probleme auf­ge­lis­tet, die in den bis­he­ri­gen Migrationsprojekten eine Rolle gespielt haben. Daran lässt sich recht gut erken­nen, was eine Migration leis­ten kann, und wo die Grenzen der tech­ni­schen Machbarkeit liegen.

Layouttabellen

Vor eini­gen Jahren war die Benutzung von Layouttabellen als Gestaltungsmittel von Webseiten voll­kom­men nor­mal. Dies sind Tabellen, die keine sicht­ba­ren Ränder auf­wei­sen. So war es dem Autor einer Webseite leicht mög­lich, Inhaltselemente neben­ein­an­der oder in einem defi­nier­ten Raster anzu­ord­nen. Auf diese Weise konnte bei­spiels­weise die Seitennavigation neben die Inhaltsspalte gesetzt werden.

Da Confluence das Konzept von rand­lo­sen Tabellen nicht kennt, ist es nicht mög­lich der­ar­tige Layouttabellen ohne Darstellungsunterschiede zu migrie­ren. Die feh­lende Unterstützung für ver­schach­telte Tabellen ver­schärft die­ses Problem weiter.

Tabellen mit ver­bun­de­nen Zellen

Mithilfe von HTML ist es mög­lich, ein­zelne Zellen einer Tabelle in hori­zon­ta­ler (col­span) oder ver­ti­ka­ler (row­span) Richtung zu ver­bin­den. Auf diese Weise kön­nen bei­spiels­weise Tabellenköpfe erstellt wer­den, die sich über meh­rere Spalten erstrecken.

Auch für der­ar­tige Zellverbünde bie­tet Confluence keine Formulierungsmöglichkeit. Zusammengefasste Tabellenzellen könn­ten dem­nach nur mit dar­stel­le­ri­schen und inhalt­li­chen Verlusten über­führt werden.

Manuell geschrie­be­nes HTML

Als beson­ders schwer­wie­gend hat sich per Hand geschrie­be­nes HTML her­aus­ge­stellt. Viele Content Management Systeme ver­wen­den soge­nannte WYSIWYG-Editoren, um die Inhalte zu bear­bei­ten. Diese Editoren zei­gen nicht den HTML-Code des Seiteninhalts an, son­dern zei­gen den Inhalt so, wie er spä­ter auf der Seite zu sehen sein wird. Diese Editoren haben den Vorteil, dass immer gleich­ar­ti­ges HTML gene­riert wird.

Für der­ar­tig gene­rierte Inhalte kön­nen recht gute Migrationsmuster erkannt und ent­spre­chend im Confluence abge­bil­det wer­den. Wurde der Seiteninhalt jedoch manu­ell geschrie­ben, ist der HTML-Code nicht gleich­för­mig. Solches Markup ist extrem schwie­rig zu migrie­ren, da dort prin­zi­pi­ell der voll­stän­dige Funktionsumfang von HTML genutzt wer­den kann. Bei Migrationen, die manu­ell geschrie­bene HTML-Seiten als Quelle haben ist dem­zu­folge mit beträcht­li­chen Darstellungsverlusten zu rechnen.

Interne Verlinkungen

Das Erkennen und kor­rekte Umwandeln von inter­nen Verlinkungen kann sich mit­un­ter äußerst schwie­rig gestal­ten. Mitunter sind schon die Verlinkungen des Quellsystems feh­ler­haft, sodass diese nicht direkt ins Confluence über­tra­gen wer­den kön­nen. Manchmal ist es not­wen­dig, Ähnlichkeitsberechnungen mit den vor­lie­gen­den Links durch­zu­füh­ren, um das "am bes­ten pas­sende Linkziel" aus­zu­wäh­len.

Strukturierung der Informationen

Confluence bie­tet von sich aus fol­gende Möglichkeiten zur Strukturierung:

  • Bereiche mit Seiten und Blogposts
  • Seiten kön­nen Unterseiten haben (Baumstruktur)
  • Seiten und Blogposts kön­nen Dateianhänge haben

Gibt es im Quellsystem Inhaltsstrukturen, die über diese hin­aus gehen (z.B. mehr­spra­chige Inhalte), kön­nen diese nicht direkt auf die kor­re­spon­die­ren­den Confluence-Typen abge­bil­det wer­den. Nur über die Nutzung oder Entwicklung wei­te­rer Plugins (z.B. Communardo SubSpace Plugin für hier­ar­chi­sche Bereiche) ist eine Migration möglich.

Häufig sol­len die Quelldaten zudem umstruk­tu­riert wer­den. Durch das Einfügen gene­rier­ter Übersichtsseiten und die Verteilung auf meh­rere Bereiche wird die Komplexität zum Auflösen inter­ner Verlinkungen wei­ter erhöht.

Unvorhersehbares Verhalten des Confluence-internen Wiki-Code-Konverters

Die Umwandlung von gege­be­nen HTML in Confluence-spezifischen Wiki-Code geschieht mit­tels einer inter­nen Confluence-Componente (WysiwygConverter). Dieser hat erheb­li­che Probleme bei der Umwandlung von belie­bi­gem (nicht vom WYSIWYG-Editor erzeug­tem) HTML in Confluence Wiki-Code.

Schon kleinste Unterschiede im Quell-HTML-Code (z.B. Zeilenumbrüche, Verschachtelung von Elementen) kön­nen zu voll­kom­men ver­schie­de­nem Resultat füh­ren. Insbesondere bei manu­ell geschrie­be­nen HTML sind Migrationsverluste dadurch nicht zu vermeiden.

 

Zusammenfassung

Die Migration von Inhalten nach Confluence ist mit dem Content Import Plugin nahezu ohne Verluste mög­lich. Die Darstellung der Informationen muss jedoch an Confluence ange­passt wer­den und unter­schei­det sich folg­lich fast zwin­gend vom Quellsystem. Weiterhin ist es nicht mög­lich, Konzepte oder Funktionen nach Confluence zu migrie­ren, die im Quellformat ver­füg­bar sind, sich jedoch nicht auf exis­tie­rende Confluence-Konzepte abbil­den las­sen (ver­schach­telte Tabellen, Definitionslisten, …)

Weiterführende Links

Related Posts

Pin It on Pinterest