Das Update wurde in drei Schritten durchgeführt: Version 7 auf Version 8, Version 8 auf Version 9 und schließlich Version 9 auf Version 10. Jeder dieser Schritte dauerte in etwa eine Woche. Insgesamt haben wir 20 Arbeitstage in das Update investiert - viel mehr als wir selbst erwartet hatten. Wenn Sie wissen möchten, ob ein TYPO3-Upgrade für Sie infrage kommt und wie Sie es selbst durchführen, können Sie es hier nachlesen.
TYPO3-Erweiterungen
Dabei wurden viele Erweiterungen aktualisiert, von denen einige auch inzwischen obsolet geworden waren. Andere Funktionalitäten werden inzwischen vom TYPO3-Core abgedeckt - vor allem rund um die Suchmaschinenoptimierung über SEO-Extensions (robots, realurl, seo_basics) .
Patches für Extensions und den TYPO3-Core hatten wir größtenteils beim Setup des Build-Prozesses bereits in den Upstream gegeben, sodass diese mit dem Update auf die neueren Versionen schon direkt mit enthalten waren und nicht manuell nachgezogen werden mussten. Einzig ein Powermail-Feature zum Löschen von Daten nach Ablauf einer Aktion musste neu gebaut werden, da der Patch für Powermail 4 nicht mehr mit Powermail 7 zusammenspielte.
Bei der Umstellung von realurl auf die in Version 9 eingebauten nativen sprechenden URLs musste die Extension "masi" installiert werden, weil die Funktion "Exclude from speaking URL" benötigt wurde. Das Handling der 404-Seiten übernimmt jetzt eigentlich TYPO3, macht bei Fehlern aber einen HTTP-Request an die 404-Seite. Das ist ineffizient, und deshalb wollten wir pxa_lpeh nutzen. Beim Update auf TYPO3v10 stellte sich aber heraus, dass die Extension damit nicht funktioniert, und wir mussten erstmal auf eine statische Seite ausweichen.
TCA
In den drei TYPO3-Versionen haben sich viele Interna geändert, und auch Datenbankfelder - vor allem Wizards und Komfortfunktionen - werden jetzt anders deklariert. Zum Glück hat TYPO3 v8+ eine TCA-Prüfung, die einen darauf hinweist, wenn man alte Syntax verwendet.
Fluidcontent
Eigene Inhaltselemente bauen wir mit fluidcontent, fluidpages und flux. Die letzten beiden sind mit TYPO3 10 obsolet; es wird nur noch flux benötigt. Leider mussten mehrere Stufen von Anpassungen durchgeführt werden: beim Update von Version 7 auf Version 8 musste flux von 7 auf 8 angehoben werden, beim Update von Version 8 auf Version 9 benötigte flux ein Update von 8 auf 9.1 und schließlich auf 9.4. Bei jedem Update haben sich Parameter verändert, ViewHelper waren obsolet und bekamen - auch durch das TYPO3 - neue oder veränderte Parameter. Selbst in flux 9 noch vorhandene ViewHelper funktionieren teilweise nicht mehr mit TYPO3 v10, sodass hier auf neue Feldtypen umgestellt werden musste.
Insgesamt haben wir wohl fast die Hälfte der Entwicklungszeit für Anpassungen der Inhaltselemente aufgewendet.
Versionskonflikte
Mit der Einführung von Composer-basierter Installation bei TYPO3 gibt es immer mehr Extensions, die bis Version x mit TYPO3 v9 funktionieren (aber nicht mit 10), und mit Version x+1 dann mit v10, aber nicht mehr mit der v9.
Das macht das Update schwieriger, weil das neue TYPO3 zunächst einmal gar nichts tut, wenn man nicht vorher alle Extensions deaktiviert hat. Das ist ziemlich mühselig.
PHP-Versionen
Ursprünglich war bei dem betroffenen Projekt noch PHP 7.0 im Einsatz, das aber mit TYPO3v9 nicht mehr unterstützt wird. Parallel zu den TYPO3-Updates musste deshalb auch die PHP-Version mehrfach aktualisiert werden. flux 8 für TYPO3 v8 hatte Fehler mit PHP 7.2, flux 9 läuft aber nur noch unter PHP 7.3+ und TYPO3 v9. Alles Dinge, die man leider erst nach und nach im Updateprozess herausfindet.
Sentry
Für Monitoring und Überwachung haben wir den sentry_client installiert, der uns auftretende Fehler direkt meldet. Leider ist die Extension noch nicht ganz ausgereift, und wir mussten mehrfach patchen (1, 2).
TypoScript
Mit TYPO3 9 wurde der TypoScript-Parser teilweise durch den "Symfony expression language"-Parser ersetzt, womit auch das ganze TypoScript angefasst werden musste.
Zusammenfassung
Insgesamt musste die komplette Funktionalität des betroffenen Projekts dreimal durchgetestet werden. Das TYPO3-Update war viel komplexer, als wir es uns vorgestellt hatten - in den drei Major-Versionen haben sich einmal alle Interna geändert.
Grundsätzlich ist es also sehr empfehlenswert, die TYPO3-Versionen stets aktuell zu halten und auch die großen Versionssprünge nicht lange aufzuschieben. Auch wenn das immer mit einer kleinen Investition verbunden ist, so ist das Budget in aktuellen Features, gesteigerter Sicherheit und einfacher Wartbarkeit doch immer gut investiert. Ein Kraftakt wie dieses Update über drei Major-Versionen hinweg ist anstrengend, zeitintensiv und vervielfacht am Ende Aufwand und Kosten.