Im Jahr 2021 habe ich ein grosses Odoo-Projekt übernommen. Mein Vorgänger wollte Custom-Apps vermeiden und hat alles, was möglich ist, mit Odoo Studio gemacht. Ein Teil davon waren PDF-Reports für die Fertigungsaufträge. Die Firma produzierte viele verschiedene Produkte auf verschiedenen Produktionslinien, und für jede Linie brauchte es spezifische Instruktionen sowie Qualitätssicherungsprotokolle. Mit Odoo Studio wurde für jede Linie ein eigenes Protokoll generiert. Die Probleme dabei waren folgende:
(1) Für jede Linie musste das Protokoll bei jedem Fertigungsauftrag manuell ausgewählt und gedruckt werden. Automatisierung gab es keine, nicht einmal eine automatische Selektion über den Arbeitsplan.
(2) Die Berichte waren nicht dynamisch. Viele Teile waren mehrfach im Code enthalten.
(3) Das grösste Problem: Die Anpassungen waren nicht in der Codebase ersichtlich. Es waren einige 3rd-Party-Custom-Module enthalten und daneben ein grosser, ominöser Teil, der mit Odoo Studio erstellt wurde – unzählige Berichte, Felder und Ansichten, direkt in der Odoo-Datenbank gespeichert, ohne klare Referenz im Code.
(4) Die Berichte konnten nicht erweitert werden. Dynamische Inhalte und das automatische Erkennen der notwendigen Report-Vorlage waren nicht möglich. Mit Odoo Studio geht viel, aber man stösst schnell an Grenzen.
Für eine Übernahme ist das der Worst Case, weil es keine Single Source of Truth gibt. Meine erste Aufgabe war es, in mühsamer Fleissarbeit alle Odoo-Studio-Berichte in die Codebase zu übertragen. Das hat mehrere Tage gedauert. Im zweiten Schritt habe ich die Report-Struktur angepasst, die Namings geklärt und eine Automatisierung eingerichtet, sodass die Report-Vorlage beim Arbeitsplatz (Workcenter) hinterlegt werden kann und dann automatisch korrekt gedruckt wird.
Mein Vorgänger hatte es gut gemeint, und möglichst viel mit Odoo Studio gemacht. Denn Odoo verspricht mit Studio problemlose Upgrades, Anpassungen ohne Code-Kenntnisse und beliebige Flexibilität. Im Endeffekt hat er aber einfach nur sehr viel Arbeit generiert, denn ich konnte nicht auf Odoo Studio aufbauen sondern musste alles von Grund auf neu und sauber aufsetzen.

Das Problem mit Odoo Studio
Warum ist also Odoo Studio ein Problem für grosse, leistungsfähige Odoo Installationen?
- Mit Odoo Studio kann jeder auch ohne Odoo-Verständnis Dinge anpassen. Odoo ist ein sehr komplexes Framework. Eine volle Odoo-Installation hat ungefähr 1400 bis 1600 Models. Jedes Model entspricht einer separaten Tabelle in der Datenbank, die wiederum sehr viele Felder enthält. Insgesamt sprechen wir von 35’000 bis 55’000 Feldern. Und jedes Feld kann in der Datenbank Millionen Einträge haben. Odoo ist also unglaublich komplex. Jedes Model, jedes Feld und jede Relation wurde vom Odoo-Entwicklungsteam evaluiert, implementiert und getestet. Mit Odoo Studio kannst du auf Knopfdruck neue Models, Felder und Relationen hinzufügen. In einem so komplexen System ist das selten eine gute Idee. Nur jemand, der die Struktur und Technik von Odoo wirklich versteht, sollte Anpassungen vornehmen. Und so jemand braucht Odoo Studio nicht.
- Du siehst nicht direkt, was Odoo Studio hinter den Kulissen macht. Du siehst nur Felder, die du per Drag & Drop hinzufügst, sowie neue Models und Ansichten. Dass dir Odoo Studio mit jedem Klick unter Umständen in der Datenbank ein neues Model mit 20+ Feldern, 10+ Menus, Actions und Access Rules anlegt, siehst du nicht. Jeder dieser Einträge ist ein Risiko und macht Versions-Upgrades schwieriger.
- Drittpersonen können deine Überlegungen kaum nachvollziehen. Odoo Studio verwendet ein automatisches Naming-System für Einträge. Es gibt keine klare Dokumentation, was gemacht wurde, warum und wie. Der Code ist nicht direkt sichtbar. Wer später übernehmen muss, steht oft vor einer grossen „Odoo-Studio-Blackbox“.
- Odoo Studio speichert Anpassungen direkt in der Datenbank und nicht im Server-Code. Das Problem dabei: Es gibt keine Single Source of Truth. Du hast vielleicht einige Custom-Module, die sauber im Source-Code sind. Zusätzlich gibt es Odoo-Studio-Anpassungen, die direkt in der DB gespeichert sind und auf die du keinen direkten Zugriff hast.
- Odoo-Studio-Anpassungen sind nur schwer rückgängig zu machen, in Testdatenbanken zu installieren oder sauber zu migrieren. Du kannst Studio-Module zwar exportieren und installieren, doch das funktioniert häufig nicht gut und ist extrem mühsam.
Auf diesem Bild siehst du nur einige der Odoo-Models und Relationen (Nur ca. 5% vom ganzen Odoo). Komplex, oder?

Dann muss ich also Coden, wenn ich Anpassungen an Odoo vornehmen möchte?
Nein, musst du nicht. Es ist im Prinzip ganz einfach. Mach das, was Odoo Studio macht, aber mach es richtig. Alles, was du mit Odoo Studio machen kannst, kannst du direkt im Odoo-User-Interface machen – und noch mehr. Du kannst die gleichen Methoden anwenden, aber ohne die Restriktionen von Odoo Studio. Mit klaren Namings und guter Dokumentation bringst du Struktur rein und stellst Nachvollziehbarkeit sicher. Du baust Schritt für Schritt auf und kannst so komplexe Anpassungen sauber umsetzen. Auch in Odoo Online (SaaS) kannst du unglaublich viel erreichen. Mehr, als du denkst.
Ich werde in anderen Blogbeiträgen genauer auf die Anpassungen eingehen, die du über das User-Interface machen kannst. Kurz gesagt ist Folgendes möglich:
- PDF-Berichte nach Belieben anpassen und dynamisch gestalten
- E-Mail-Templates nach Belieben anpassen und dynamisch gestalten
- Das komplette Backend-User-Interface nach Belieben anpassen
- Einen grossen Teil des Frontends (Website/E-Commerce) nach Belieben anpassen
- Benutzerdefinierte Felder hinzufügen
- Benutzerdefinierte Menü-Icons und Aktionen hinzufügen
- Benutzerdefinierte Suchansichten und Standardwerte erstellen
- Automatisierungsregeln erstellen, die mit Python-Snippets und Webhooks komplexe Abläufe steuern
- Zeitlich gesteuerte Abläufe implementieren
- Externe Mailserver einbinden und eingehende sowie ausgehende E-Mails komplett über Odoo handhaben

Also, wenn du dich von Odoo Studio trennst, ist das kein Verlust. Es öffnet das Tor zu echtem Odoo-Verständnis und sauberen Anpassungen!
Wenn du dazu Hilfe brauchst, kontaktiere mich gerne.
Nathanael Lee