Odoo-Erfahrungsberichte schreiben meist zwei Sorten von Leuten: die, die Odoo verkaufen, und die, die zwanzig Minuten in der Demo waren. Dieser Text ist keines von beidem. Es folgen Zahlen aus Systemen, die jeden Tag laufen: ein Shop mit sechsstelligem Katalog, vierzig Storefronts in einer Instanz, Versionswechsel mit echten Daten. Wo es schlecht ist, steht das auch da.
Was Odoo klaglos trägt
Zuerst: Größe ist nicht das Problem, für das sie gehalten wird. Ein Katalog mit hundertzehntausend Produkten lebt in Odoo ohne Drama - das ORM trägt ihn, das Backoffice trägt ihn, das Lager trägt ihn. Vierzig Storefronts laufen in einer Instanz: eine Datenbank, ein Deploy, eine Stelle zum Patchen. Ich würde es wieder so bauen, denn die Alternative sind vierzig von allem.
Upgrades kommen auch vor. Die Versionen 15 bis 19 im Produktivbetrieb, manchmal zwei gleichzeitig in verschiedenen Projekten - ein Kunde zieht nicht um, nur weil ein Release erschienen ist. Die Daten überstehen ein Upgrade. Was es von allein nicht übersteht, ist Ihr eigener Code, und das ist der ehrliche Preis der Anpassung, kein Defekt.
Wo es anfängt zu stolpern
Als Erstes hört die Suche auf zu skalieren. Postgres-Volltextsuche über einen sechsstelligen Katalog mit Filtern und Facetten wird auf eine Art langsam, die kein Index repariert: im schlimmsten Moment dauerte eine Suche acht Sekunden, während auf der anderen Seite der Theke das Lager wartete. Die Suche nach Elasticsearch auszulagern brachte sie auf eine Sekunde - und das ist Neuschreiben, kein Häkchen in den Einstellungen.
Das Zweite ist das Frontend. Odoo liefert eine Website aus, die davon ausgeht, dass Sie jederzeit Shop, Chat, Forum und Editor einschalten könnten, und der Browser bezahlt diese Annahme auf jeder Seite. Selbst nachdem alles herausgeschnitten ist, was eine Landingpage unmöglich braucht, kommt auf einer Seite, deren Aufgabe das Anzeigen von Text ist, ein halbes Megabyte komprimiertes JavaScript an.
Es ist verzögert und nicht blockierend, der erste Bildschirm ist also schnell, wenn man sich darum kümmert. Aber „verzögert“ heißt nicht „nicht vorhanden“: geladen, geparst und ausgeführt wird es auch auf einem Telefon mit schwachem Prozessor. Bei den Core Web Vitals ist der Unterschied zwischen einer Odoo-Seite „wie installiert“ und einer auseinandergenommenen der Unterschied zwischen rot und grün.
Was ein Upgrade wirklich kostet
Ein Upgrade von blankem Odoo ist ein Wochenende. Ein Upgrade von Odoo mit Ihren Modulen ist ein Projekt, und die Schätzung hängt an einer Frage: Wie viel von dem Gebauten liegt in Code, den Sie kontrollieren? Studio und zusammengeklickte Automatisierungen sind der teure Teil - man kann sie nicht als Diff lesen und nicht prüfen, bevor der Knopf gedrückt ist.
Das Vorgehen, das funktioniert, ist langweilig. Jedes Upgrade beginnt als Staging-Durchlauf mit einer Kopie der Produktivdaten - der ganzen Datenbank, nicht einer Stichprobe, denn kaputt geht es immer an der Zeile, mit der niemand gerechnet hat. Dann wird die Liste der Brüche in Modulen repariert, nicht in der Datenbank. Dann wird derselbe Durchlauf wiederholt, bis er langweilig ist. Erst danach zieht das Livesystem um.
Diese drei Zahlen sind die Größenordnung der Systeme, aus denen diese Notizen stammen. Es sind keine Rekorde - es gibt deutlich größere Odoo-Installationen. Es ist die Größe, ab der die Standardeinstellungen nicht mehr reichen und jede Entscheidung einen Preis bekommt.
Vier Dinge, die nicht im Handbuch stehen
Manches lernt man nur, indem man einen Tag daran verliert. Das fertige HTML einer Website-Seite wird eine Stunde lang zwischengespeichert: Sie ändern einen Datensatz im Backoffice, die Seite ändert sich nicht, und Sie suchen einen Fehler, den es nicht gibt. Reparieren lässt sich das mit einer Zeile, die den Cache leert, wenn sich Ihre Inhalte ändern - man muss nur wissen, dass es den Cache gibt.
Ein Constraint, der auf die alte Art über _sql_constraints deklariert wird, wird in Odoo 19 stillschweigend ignoriert: Das Modul installiert, das Log ist sauber, und in der Datenbank steht kein Constraint. Die Dubletten kommen später und leise. Ein Skript, das man dem Frontend-Bundle hinzufügt, läuft unter Umständen nie: Es landet im Lazy-Bundle, das erst nach DOMContentLoaded eintrifft - das Ereignis, auf das Ihr Listener wartet, ist längst vorbei.
Und ein Modul kann in der Liste stehen, in der Dokumentation beschrieben sein und sich trotzdem nicht installieren lassen: Enterprise-Module erscheinen in Community als Platzhalter, markiert als nicht installierbar. Appointments ist eines davon - deshalb ist die Terminseite auf dieser Website ein eigenes Modul und kein Häkchen.
Der Support - und was ihn ersetzt
Den Support würde ich als Erstes ändern. Liegt das Problem bei Odoo, warten Sie - und Sie warten mit Belegen: Logs, Messungen, dieselbe Frage dreimal gestellt. In einem Projekt sammelte Googlebot monatelang 429er wegen eines Plattform-Limits, Shops fielen aus dem Index, und es brauchte drei Runden, bis die Limits angehoben wurden. Diese Geschichte steht an anderer Stelle ausführlicher, und sie ist der fairste Vorwurf, den man Odoo machen kann.
Dasselbe Jahr rettet die andere Seite derselben Software: Ihre Architektur muss niemand genehmigen. Die Suche ist nach Elasticsearch gewandert, weil ich es entschieden habe. Das Frontend ist dünn, weil ich es auseinandergenommen habe. Die Terminseite gibt es, weil das Modul an einem Abend geschrieben war. In einem geschlossenen System ist jedes davon ein Ticket; hier ist es ein Commit.
Für wen es passt und für wen nicht
Odoo passt zu Ihnen, wenn Sie ein System für die ganze Firma brauchen und jemanden haben - oder einstellen können -, der Code schreibt. Schlecht passt es, wenn alles ab Werk laufen und nie angefasst werden soll: Das ist nicht, was eine offene Plattform gibt. Konzernabschluss über ein Dutzend Gesellschaften, zertifizierte Branchenlösungen, eine Ausschreibung mit Anbieter aus dem Gartner-Quadranten - das sind nicht ihre Kämpfe.
Wenn Sie gerade abwägen, hilft kein weiterer Erfahrungsbericht. Es hilft eine halbe Stunde mit Ihrem Bildschirm und Ihren Zahlen: was langsam ist, was feststeckt, was eine Änderung kosten würde. Diese halbe Stunde ist kostenlos, und am Ende sage ich ehrlich, ob die Aufgabe meine ist.
Sie wählen nicht nur das System, sondern auch, wer damit arbeitet? Odoo Partner oder unabhängiger Entwickler: was wirklich der Unterschied ist.