JTL-Update in der richtigen Reihenfolge: Wawi, Clients, Worker, Connector, Shop
Ein JTL-Update ist selten ein Update. Es sind fünf, und sie hängen voneinander ab.
„Wir machen das Update am Freitagnachmittag, das ist ja nur ein Setup.” Diesen Satz höre ich regelmäßig, und er ist gleich zweimal falsch: Es ist nicht nur ein Setup, und Freitagnachmittag ist der schlechteste Zeitpunkt der Woche.
Ein JTL-Update betrifft in einem gewachsenen Betrieb fünf Bausteine, die voneinander abhängen: die Datenbank, die Wawi-Clients, den Worker, den Connector und den Shop. Wer einen davon vergisst oder in der falschen Reihenfolge anfasst, bekommt Fehlerbilder, die mit dem eigentlichen Vorgang nichts mehr zu tun zu haben scheinen.
Vorher: die Versionsmatrix
Bevor irgendein Setup startet, gehört eine simple Frage beantwortet: Welche Versionen passen zusammen?
Der JTL-Connector im Shop ist an Wawi- und Shop-Version gebunden. Eine neue Wawi verlangt oft einen neueren Connector, und der wiederum setzt eine Mindestversion des Shops voraus. Wer die Wawi aktualisiert, ohne diese Kette geprüft zu haben, steht danach vor einer Synchronisation, die nicht mehr anläuft — und sucht den Fehler in der Wawi, während er im Shop sitzt.
Diese Prüfung kostet zehn Minuten und ersetzt regelmäßig einen ganzen verlorenen Abend. Notieren Sie die drei Versionsnummern auf einem Blatt, bevor Sie anfangen.
Die Reihenfolge
1. Sicherung. Datenbanksicherung und, wenn der Shop mit angefasst wird, eine Kopie der Shop-Dateien plus Shop-Datenbank. Nicht der VM-Snapshot allein — der hilft, wenn die ganze Maschine kaputt ist, aber nicht, wenn Sie in drei Tagen merken, dass eine Datenübernahme schiefgelaufen ist.
2. Worker anhalten. Der Worker darf nicht auf eine Datenbank zugreifen, die gerade umgebaut wird. Anhalten, nicht bloß „macht der schon nichts”.
3. Wawi auf dem Server. Hier läuft die Datenbankmigration. Je nach Datenbestand dauert das Minuten bis über eine Stunde. Diesen Vorgang bricht man nicht ab, auch nicht, wenn er lange aussieht.
4. Alle Clients. Das ist der Punkt, der Termine sprengt: Client und Datenbank müssen dieselbe Version haben. Ein Arbeitsplatz, der nicht mitaktualisiert wurde, kommt nicht mehr hinein. Bei zwölf Arbeitsplätzen an drei Standorten ist das keine Nebenaufgabe, sondern der eigentliche Aufwand des Abends.
5. Worker aktualisieren und starten. Danach kontrollieren, ob er tatsächlich läuft und nicht nur „gestartet” gemeldet wurde. Wenn er sich direkt nach dem Start wieder beendet, liegt es häufig an Startreihenfolge oder Dienstkonto — dazu gibt es einen eigenen Beitrag.
6. Connector im Shop. Erst jetzt, wenn die Wawi-Seite steht.
7. Shop-Update, falls nötig. Und danach die Sichtprüfung.
Die Sichtprüfung, die niemand gerne macht
Nach einem Shop-Update klickt man fünf Seiten durch: Startseite, eine Kategorie, ein Artikeldetail, den Warenkorb und die Kasse. In dieser Reihenfolge, weil der Schaden nach hinten hin teurer wird. Eine kaputte Startseite sieht jeder sofort. Eine Kasse, die seit drei Tagen bei einer bestimmten Zahlungsart aussteigt, sieht niemand — bis die Umsätze fehlen.
Besonders betroffen sind eigene Templates. Ein Kindtemplate enthält Anpassungen, die sich auf Funktionen und Eigenschaften der alten Shop-Version stützen. Zwischen zwei Hauptversionen werden solche Eigenschaften umbenannt oder ersetzt — die Anpassung greift dann ins Leere und die Stelle bleibt einfach leer. Kein Fehler, keine Meldung, nur ein fehlendes Element, das vorher da war. Genau deshalb reicht „der Shop lädt” als Prüfung nicht aus.
Wenn Ihr Shop ein eigenes Template hat, gehört zum Update ein Blick auf die Stellen, an denen dieses Template arbeitet — und nicht nur ein Blick auf die Startseite.
Warum nicht Freitagnachmittag
Weil der Rückweg Zeit braucht. Wenn um 16:30 Uhr die Datenmigration hakt oder die Synchronisation nicht anläuft, brauchen Sie jemanden, der noch erreichbar ist — bei JTL, beim Hoster oder bei Ihrem Dienstleister. Am Freitagabend ist das niemand.
Der bessere Zeitpunkt ist ein Vormittag unter der Woche, an dem der Betrieb kurz stillsteht und die Leute erreichbar sind, die im Zweifel helfen. Der Ausfall ist derselbe, das Risiko ist ein anderes.
Vor dem nächsten Update
Drei Fragen, die vorab geklärt sein sollten:
- Passen Wawi, Connector und Shop in der Zielversion zusammen? Nachgesehen, nicht vermutet.
- Sind alle Arbeitsplätze eingeplant? Auch der eine im Lager und der im Homeoffice.
- Ist die Sicherung getestet? Nicht vorhanden — getestet. Das ist ein Unterschied, den man nur einmal falsch beantwortet.
Ein Update, das nach diesem Muster läuft, ist unspektakulär. Genau das ist das Ziel.
Häufige Fragen
In welcher Reihenfolge aktualisiert man JTL-Wawi, Worker, Connector und Shop?
Erst die Wawi auf dem Server, damit die Datenbankmigration läuft. Dann alle Clients, weil die Wawi keine gemischten Versionen zulässt. Danach den Worker, anschließend den JTL-Connector im Shop und zuletzt gegebenenfalls den Shop selbst. Vorher gehört die Versionsmatrix geprüft: Connector, Wawi und Shop müssen zueinander passen.
Kann man einzelne Arbeitsplätze auf der alten Wawi-Version lassen?
Nein. Client und Datenbank müssen dieselbe Version haben. Ein Arbeitsplatz mit älterer Version kommt nach der Migration schlicht nicht mehr hinein. Deshalb ist ein Wawi-Update immer ein Termin für alle, nicht für einen — bei mehreren Standorten will das geplant sein.
Muss der JTL-Worker während des Updates gestoppt werden?
Ja. Ein laufender Worker greift währenddessen auf eine Datenbank zu, die gerade umgebaut wird, und synchronisiert im schlimmsten Fall mit einer halb migrierten Struktur nach außen. Worker anhalten, aktualisieren, erst danach wieder starten — und beim Start prüfen, ob er die neue Wawi-Version akzeptiert.
Warum sieht der Shop nach einem Update anders aus?
Weil ein eigenes Template Anpassungen enthält, die sich auf Funktionen der alten Shop-Version stützen. Ändert JTL zwischen zwei Hauptversionen eine Eigenschaft oder benennt sie um, greift die Anpassung ins Leere. Deshalb gehört nach jedem Shop-Update eine Sichtprüfung dazu: Startseite, Kategorie, Artikeldetail, Warenkorb und Kasse — in dieser Reihenfolge.