Zum Hauptinhalt springen
Odoo 20 · Praxisleitfaden

Migration auf Odoo 20: Checkliste für Unternehmen mit Integrationen

Odoo 20.0 FINAL ist veröffentlicht. Wenn Ihr Odoo individuelle Konnektoren oder solche von Drittanbietern nutzt, sind das die 8 Punkte, die wir geprüft haben, bevor wir unsere eigenen portiert haben: mit Datei und Zeile, in der wir sie verifiziert haben, nicht vom Hörensagen.

Checkliste zur Migration auf Odoo 20, Konnektoren einzeln geprüft

Odoo 20.0 FINAL ist veröffentlicht und im App Store verfügbar. Wenn Sie eine Installation migrieren, die nur Module von Odoo selbst nutzt, ist das Risiko gering. Mit individuellen, eigenen oder Drittanbieter-Konnektoren gibt es Änderungen in Odoo 20, die ganze Module zerstören: und mindestens eine, die bis zum 31. Oktober mit keinem Fehler warnte. In dieser Reihenfolge prüfen wir es selbst, mit dem, was sich automatisieren lässt, und dem, was Sie von Hand ansehen müssen.

1. Erfassen Sie, welche nicht offiziellen Module in Ihrem Odoo laufen

Filtern Sie unter Einstellungen > Apps nach «nicht im Odoo-Katalog» oder prüfen Sie ir.module.module mit author != 'Odoo S.A.'. Jedes dieser Module muss vor der Migration geprüft werden; die Module der Odoo-Standardauslieferung portiert Odoo selbst.

2. Suchen Sie nach Abhängigkeiten von Modulen, die entfallen sind

grep -rn "base_vat\|base_iban\|stock_picking_batch\|website_sale_wishlist\|website_sale_comparison" */__manifest__.py. Tauchen sie in depends auf, wird das Modul in Odoo 20 zu installable=False: keine Warnung, es wird einfach nicht installiert. Die Validierung von NIF/IBAN ist in den Kern gewandert; für den Rest gibt es keinen direkten Ersatz.

3. Suchen Sie im Python-Code nach odoo.osv

grep -rn 'from odoo.osv import' .. Das Paket odoo.osv existiert in Odoo 20 nicht mehr: es löst ModuleNotFoundError aus und das Modul wird nicht geladen. Ersetzen Sie jedes expression.AND/OR/TRUE_DOMAIN/FALSE_DOMAIN durch sein Äquivalent in odoo.fields.Domain.

4. Wandeln Sie die Zugriffsrechte in das neue Format um

ir.model.access und ir.rule werden zu einem einzigen Modell zusammengeführt, ir.access. Odoo liefert dafür ein Skript mit: odoo-bin upgrade_code --script 19.4-00-ir-access --addons-path <carpeta>, das die CSV-Dateien konvertiert, das Manifest aktualisiert und die alte Datei löscht. Vorsicht bei den ._*-Dateien von macOS: Sie lassen das Skript mit UnicodeDecodeError scheitern; löschen Sie sie vorher mit find . -name '._*' -delete.

5. Prüfen Sie, wie Anhänge geschrieben und gelesen werden

Aktualisierung vom 6. November 2026: Bis zum 31. Oktober war dies die gefährlichste Änderung, weil sie nicht warnte: ir.attachment.create({'datas': ...}) legte den Anhang mit Größe 0 an, ganz ohne Fehler. Seit dem Commit c06a07264bdb von Odoo löst es AssertionError aus. Ersetzen Sie 'datas': base64.b64encode(x) durch 'raw': x: Das funktioniert in Odoo 17, 18, 19 und 20 gleich und lässt sich daher schon heute beheben, ohne auf die Portierung zu warten. Das Lesen mit .datas löst AttributeError aus: In Odoo 20 wird mit .raw gelesen oder, nach dem Lesen des Feldes, mit .content/.to_base64() auf den zurückgegebenen Wert.

6. Setzen Sie die Version im Manifest auf 20.0

Beginnt die version in __manifest__.py nicht mit 20.0, meldet das Log The module X has an incompatible version, setting installable=False und das Modul bleibt uninstallable. Das ist keine Warnung, die man ignorieren kann: Ohne diesen Schritt ist alles Übrige belanglos.

7. Installieren Sie auf einem echten Odoo 20, kompilieren Sie nicht nur

Dass der Code kompiliert oder ein statischer Scan nichts meldet, beweist nicht, dass das Modul sich installieren lässt, und erst recht nicht, dass es funktioniert. Der einzige aussagekräftige Test ist eine echte Installation auf einem Odoo 20.0 FINAL mit Enterprise und die Ausführung der gesamten Testbatterie des Moduls, nicht nur des Starts.

8. Migrieren Sie nicht den ganzen Konnektorenkatalog auf einmal

Ordnen Sie sie danach, was am meisten Geld bewegt oder am riskantesten ist, wenn es defekt bleibt, nicht danach, was sich am leichtesten portieren lässt. Ein Konnektor für Rechnungsstellung oder elektronische Signatur, der unbemerkt ausfällt (wie bei den Anhängen bis zum 31. Oktober), ist spät entdeckt viel teurer als ein Katalog-Konnektor.

Das Detail zu jedem Bruch, mit Datei und Zeile, in der wir ihn geprüft haben: Odoo 20 ist da: Was sich für Ihre Integrationen und Konnektoren ändert.

Häufige Fragen

Kann ich auf Odoo 20 migrieren, wenn ich individuelle Konnektoren habe?

Ja, aber jeder nicht offizielle Konnektor muss vorher geprüft werden: Abhängigkeiten von Modulen, die entfallen sind (base_vat, base_iban ...), Verwendung von odoo.osv, das Format der Zugriffsrechte und wie Anhänge geschrieben und gelesen werden. Eine fehlerfreie Installation genügt nicht; die komplette Testbatterie muss auf einem echten Odoo 20 durchlaufen.

Was lässt sich als Erstes beheben, ohne auf die Migration zu warten?

Die Art, wie Anhänge geschrieben werden: 'datas': base64.b64encode(x) durch 'raw': x ersetzen. Das funktioniert in Odoo 17, 18, 19 und 20 gleich und kann daher heute schon im aktuellen Code erfolgen, ohne auf den Branch 20 zu warten.

Nützliche Links bei FlexigoTech

Odoo 20: Was sich für Ihre Konnektoren ändertDie 4 am Code verifizierten BrücheUnsere Konnektoren bereits in Odoo 20Die aktuelle Liste, mit Link zu jedem EintragEinführungsserviceBegleitete Migration, mit dem Ingenieur, der sie durchführt

Was wir dazu tun

Individuelle IntegrationenWas sie leistet, Screenshots, Versionen und Preis.

Sollen wir Ihre Konnektoren vor der Migration prüfen?

Wir sagen Ihnen, gegen den echten Code von Odoo 20, welche Ihrer individuellen Module brechen und bei welchem Punkt dieser Liste. Schreiben Sie an comercial@flexigobe.com oder rufen Sie an unter +34 616 809 504.

Meine Konnektoren prüfen lassen