Der Odoo App Store ist der einzige Kanal, über den sich ein Odoo-Modul ohne Vertrieb verkauft: Jemand sucht es, kauft es und installiert es. Das Veröffentlichen ist kostenlos, und jeder kann es mit einem Git-Repository und einem sauber geschriebenen Manifest tun. Nirgends steht, warum eine Veröffentlichung Tage braucht, bis sie erscheint, warum eine Beschreibung fehlerhaft angezeigt wird oder warum ein Modul, das auf Ihrem Rechner kompiliert, sich im Odoo des Käufers nicht installieren lässt. Das haben wir beim Veröffentlichen von 105 Modulen und bei deren Pflege in Odoo 19, 18 und 17 gelernt.
Kernidee: Der App Store installiert Ihr Modul nicht, um es zu prüfen. Er liest das Manifest, die Beschreibung und die Bilder und veröffentlicht. Lässt sich das Modul in einem echten Odoo nicht installieren, merkt es der erste Käufer. Die ganze Disziplin beim Veröffentlichen besteht darin, das nicht zuzulassen.
Die geschriebenen Regeln: Repository, Branch und Manifest
Der Mechanismus ist einfach und sollte buchstabengetreu befolgt werden. Sie legen in Ihrem Konto bei apps.odoo.com ein Git-Repository an; der App Store scannt es und veröffentlicht jedes Modul, das er darin findet. Der Branch ist wichtig: Der Branch 19.0 speist die Einträge für Odoo 19, 18.0 die für 18, 17.0 die für 17. Derselbe technische Name in den drei Branches ergibt einen einzigen Eintrag mit drei Versionen, und genau das wollen Sie: eine URL, eine Bewertungsseite, drei Download-Schaltflächen. Unterschiedliche technische Namen pro Version sind drei Einträge, die sich die Besuche teilen.
Aus dem Manifest liest und zeigt der App Store Folgendes:
name,summaryundcategory: der Titel des Eintrags, die Zeile darunter und die Stelle, an der er im Katalog erscheint. Der Name muss im gesamten Store eindeutig sein.versionmit dem Präfix der Odoo-Version (19.0.1.0.0): Ohne dieses Präfix weiß der Eintrag nicht, zu welchem Odoo er gehört.license:OPL-1für kostenpflichtige Module,LGPL-3oderAGPL-3für kostenlose. Ein kostenpflichtiges Modul mit freier Lizenz ist ein Geschenk, das Sie nicht machen wollten.priceundcurrency: der Preis des Eintrags. Odoo behält einen Anteil jedes Verkaufs ein und zahlt Ihnen den Rest aus; das Verhältnis steht in den Bedingungen des App Store.images: die Liste der Screenshots, beginnend mit dem Banner, das im Katalog zu sehen ist. Ohne Banner erscheint der Eintrag mit einer grauen Lücke neben den Einträgen, die eines haben.static/description/index.html: die lange Beschreibung. HTML ohne Skripte, relative Bilder innerhalb des Moduls und, aus Erfahrung, ASCII-Zeichen: Ein falsch kodierter Akzent oder typografische Anführungszeichen können den Eintrag mit fehlerhaften Symbolen zurücklassen, die Sie erst sehen, wenn er veröffentlicht ist.
Die Regeln, die nirgends geschrieben stehen
Der Re-Scan bestimmt, und er lässt sich nicht mit einer ZIP-Datei erzwingen
Nach einem Push ändert sich der Eintrag nicht sofort: Der App Store scannt das Repository in seinem eigenen Rhythmus erneut, das können Stunden oder Tage sein. Die Versuchung ist, von Hand eine ZIP-Datei hochzuladen, um «zu beschleunigen». Tun Sie das nicht: Eine von Hand hochgeladene Version und eine aus dem Repository gescannte Version vertragen sich schlecht, und am Ende haben Sie einen Eintrag, dessen Herkunft Sie nicht kennen. Unsere Regel lautet: eine einzige Quelle, das Repository, und Geduld. Wenn der Scan eine Änderung erkennen soll, erhöhen Sie die Versionsnummer im Manifest: Eine inhaltliche Änderung bei gleicher Version wird manchmal nicht erfasst.
Kompilieren ist nicht Installieren
Der Scan installiert das Modul nicht. Dass das Manifest gültig ist und der Code fehlerfrei importiert wird, heißt nicht, dass sich das Modul installieren lässt. In Odoo 19 ist das besonders tückisch geworden: Die Sicherheitsgruppen haben ihr Modell gewechselt (res.groups.privilege), ir.cron akzeptiert das Feld numbercall nicht mehr, und Listenansichten heißen list, nicht tree. Ein für 17 geschriebenes Modul besteht den Scan von 19 ohne Beanstandung und scheitert bei der Installation im Odoo des Käufers. Wir beschreiben das ausführlich in Warum ein Odoo-19-Modul kompiliert, sich aber nicht installieren lässt.
Drei Versionen sind drei Module, die sich ähneln
Dasselbe Modul in 19, 18 und 17 zu pflegen heißt nicht, den Ordner in drei Branches zu kopieren. Jede Version hat ihre API-Unterschiede, und die einzige Möglichkeit, sicher zu sein, dass alle drei funktionieren, ist die Installation in einem echten Odoo jeder Version. Wir machen das auf Odoo.sh: ein Build pro Version, saubere Installation, Tests und erst dann der Push in den Branch, den der App Store scannt. Und mit Odoo 20, das im September 2026 erschienen ist, bleibt der Ablauf gleich, nur mit einem Branch mehr. Ein Modul, das nur in der Version getestet wurde, für die es geschrieben wurde, wird dreimal verkauft und scheitert zweimal.
Der Ablauf, den wir befolgen, der Reihe nach
- Eindeutiger und endgültiger technischer Name. Er wird im App Store gesucht, bevor die erste Zeile geschrieben wird; ihn später zu ändern bedeutet, den Eintrag und seine Bewertungen zu verlieren.
- Vollständiges Manifest ab dem ersten Commit: Version mit Präfix, Lizenz, Preis, Kategorie, Bilder, exakte Abhängigkeiten.
- Saubere Installation auf echtem Odoo.sh für jede Version, die veröffentlicht wird, mit grünen Tests. Ohne das gibt es keinen Push.
- Beschreibung in ASCII mit echten Screenshots des installierten Moduls, keine Mockups. Der Käufer vergleicht, was er im Eintrag sieht, mit dem, was er installiert.
- Push in den Versions-Branch und den Scan abwarten. Keine ZIP-Dateien. Muss etwas korrigiert werden, wird die Version erhöht und erneut gewartet.
- Den veröffentlichten Eintrag prüfen in allen drei Versionen: Banner, Beschreibung ohne fehlerhafte Symbole, Preis, Download-Schaltfläche.
Was die Veröffentlichung nicht für Sie erledigt
Veröffentlichen ist nicht Verkaufen. Ein gut gemachter Eintrag erscheint, wenn jemand genau nach diesem Problem sucht, und mehr nicht. Installiert wird ein Modul, wenn es auf Anhieb funktioniert, wenn die Beschreibung sagt, was es tut und was nicht, und wenn Support-Fragen beantwortet werden. Deshalb behandeln wir jedes veröffentlichte Modul als Produkt mit Wartung, nicht als hochgeladene Datei. Und deshalb gehört die Veröffentlichung im App Store zur Arbeit und ist kein Extra, wenn ein Softwareunternehmen bei uns einen Konnektor für sein Produkt in Auftrag gibt: Dort werden seine Odoo-Nutzer danach suchen.
Häufig gestellte Fragen
Wie lange dauert es, bis ein Modul nach dem Push erscheint?
So lange, wie der nächste Scan des Repositorys braucht, den Sie nicht steuern: Das können Stunden oder Tage sein. Hat sich nach einigen Tagen nichts geändert, prüfen Sie zuerst, ob der Branch stimmt, und erhöhen die Versionsnummer im Manifest; erst zuletzt laden Sie von Hand eine ZIP-Datei hoch.
Lässt sich dasselbe Modul für Odoo 17, 18 und 19 in einem einzigen Eintrag veröffentlichen?
Ja, und es ist empfehlenswert: Derselbe technische Name in den Branches 17.0, 18.0 und 19.0 desselben Repositorys ergibt einen Eintrag mit den drei Versionen. Jeder Branch muss sich tatsächlich in seiner Version installieren lassen; der App Store prüft das nicht für Sie.
Welche Lizenz verwende ich, wenn das Modul kostenpflichtig ist?
OPL-1, die proprietäre Lizenz von Odoo, die den Verkauf des Moduls erlaubt und die Weitergabe untersagt. Mit LGPL-3 oder AGPL-3 darf der Käufer es frei weitergeben, was Sie bei einem kostenlosen Modul wollen und bei einem kostenpflichtigen nicht.
Nützliche Links bei FlexigoTech
Haben Sie ein Modul, das Sie veröffentlichen möchten, oder ein veröffentlichtes, das sich nicht verkauft?
Wir sagen Ihnen, was dem Manifest, der Beschreibung oder der Installation fehlt und wie Sie es in alle drei Versionen bringen. Schreiben Sie an comercial@flexigobe.com oder rufen Sie +34 616 809 504 an.

