Intern, für Kail

Odoo: was gesichert ist, was offen bleibt

Stand 2026-09-01 · Anlass: Partner-Sondierung mit Martin Petz, IT-Assistent · alles selbst geprüft, nichts aus zweiter Hand

Die Frage

Martin Petz betreut als IT-Dienstleister in Oberösterreich rund ein Dutzend Kleinstunternehmen und stellt gerade selbst auf Odoo um. Ein Teil seiner Kunden nutzt Odoo ebenfalls. Er sagt, die offene Schnittstelle koste bei ihm über tausend Euro extra, deshalb habe er nie etwas gebaut.

Kommt man an Odoo heran, ohne dass der Kunde auf den teuren Plan wechseln muss? Wenn ja, ist das ein wiederholbares Produkt in seinem Kundenstamm.

Gesichert: von außen in Odoo schreiben geht nur im Custom-Plan

Wörtlich aus Odoos eigener Dokumentation:

"Access to data via the external API is only available on Custom Odoo pricing plans. Access to the external API is not available on One App Free or Standard plans."

Das betrifft alles, was von draußen hineinschreibt:

odoo.com/documentation/18.0/developer/reference/external_api.html · github.com/ivnvxd/mcp-server-odoo

Gesichert: das MCP-Modul ist auf Odoo Online nicht installierbar

Das Modul mcp_server auf apps.odoo.com (much. Consulting, OPL-1, Odoo 16 bis 19) behauptet auf seiner Produktseite Kompatibilität mit Odoo Online. Odoos eigene Doku sagt das Gegenteil:

"Odoo Online is incompatible with custom modules or modules from the Odoo Apps Store."

Auf dieser Widersprüchlichkeit wären wir fast aufgelaufen. Das Modul ist damit nur auf Odoo.sh oder eigenem Server ein Thema, dort aber ein fertiger Weg zu vollem Claude-Zugriff inklusive Rechteverwaltung pro Modell.

Gesichert und selbst gemessen: Odoo nach außen funktioniert

Aufbau: Odoo 18 Community lokal auf macOS gegen PostgreSQL 16, ohne Demodaten, Regel auf res.partner, Aktion Webhook gegen einen eigenen Empfänger. Der Code liegt in odoo/addons/base/models/ir_actions.py, Methode _run_action_webhook, also im Basismodul. base_automation ist LGPL-3 und hängt nur an base, digest, resource, mail, sms.

So sieht ein echter Aufruf aus

POST, Content-Type: application/json

{
  "_action": "Send Webhook Notification(#180)",
  "_id": 7,
  "_model": "res.partner",
  "create_date": "2026-09-01 10:28:56.360583",
  "email": "testkunde@example.org",
  "name": "Testkunde Webhook",
  "phone": "+43 1 234567"
}

_model, _id und _action kommen immer mit, jedes weitere Feld des Datensatzes ist frei wählbar.

Falle 1: eine Sekunde, kein zweiter Versuch

Im Quellcode steht requests.post(..., timeout=1), ausdrücklich als "send and forget" kommentiert. Zeitüberschreitung und Fehlschlag landen als Warnung im Log, es gibt keine Wiederholung und keine Warteschlange. Die Gegenstelle muss sofort quittieren und danach arbeiten. Wenn nichts verloren gehen darf, braucht es zusätzlich einen nächtlichen Abgleich.

Falle 2: ohne Trigger-Feld feuert die Regel vielfach

Jeweils eine einzige Handlung in Odoo, gemessen:

FallRegelErgebnis
AKontakt anlegen, keine Trigger-Felder11 POSTs
BFeld ändern, keine Trigger-Felder2 POSTs
CKontakt anlegen, Trigger-Feld name1 POST
Danderes Feld ändern, Trigger-Feld name0 POSTs
ETrigger-Feld name ändern1 POST

Die elf Aufrufe kamen in 17 Millisekunden, alle mit derselben Datensatz-ID, weil Odoo beim Anlegen intern mehrfach schreibt. Trigger-Felder sind bei jedem Bau Pflicht, sonst vervielfacht sich alles Nachgelagerte inklusive der Kosten je KI-Aufruf.

Offen: zeigt der Standard-Plan die Automatisierungsregeln?

Der Code ist da, die Oberfläche kann trotzdem gesperrt sein. Die Quellen widersprechen sich.

Spricht dafür

Spricht dagegen

Menüweg, aus dem Quellcode

Einstellungen, dann Technisch, dann Automatisierung, dann Automatisierungsregeln. Das Menü "Technisch" hängt an base.group_no_one, der Entwicklermodus muss also aktiv sein, sonst ist der Punkt unsichtbar. Das erklärt einen Teil der Verwirrung im Netz.

Warnung zum Free Trial

Ein Odoo-Testzugang läuft üblicherweise mit vollem Funktionsumfang. Wenn im Trial alles geht, ist das noch kein Beweis für den bezahlten Standard-Plan. Vor dem Ergebnis prüfen, welcher Plan in der Testdatenbank tatsächlich hinterlegt ist. Sonst geben wir Martin eine Aussage, die bei ihm nicht hält, und genau das darf am Anfang einer Partnerschaft nicht passieren.

Was das für Kunden heißt

Kunde läuft aufOdoo meldet nach außenVon außen hineinschreibenMCP für Claude
Odoo Online, Standardvermutlich ja, siehe offenneinnein
Odoo Online, Customjajanein, Fremdmodul gesperrt
Odoo.sh oder eigener Serverjajaja, Modul vorhanden

Preisunterschied laut Odoo-Preisseite, pro Nutzer und Monat: Standard 19,90 bzw. 24,90, Custom 29,90 bzw. 37,40. Für einen Ein-Personen-Zugang also rund hundertzwanzig Euro im Jahr, nicht der Tausender, den Martin im Kopf hat. Länderpreise können abweichen.

Was ich von dir brauche

  1. Zeigt der bezahlte Standard-Plan die Automatisierungsregeln? Mit Entwicklermodus nachsehen, und vorher prüfen, welcher Plan in der Testdatenbank hinterlegt ist.
  2. Kommt bei einer Regel mit Aktion Webhook wirklich etwas an? Beliebiger Empfänger genügt. Wenn ja, haben wir die Aussage für Martin schwarz auf weiß.
  3. Deine Einschätzung zur Bauform, wenn wir es real anbieten. Eine Sekunde Zeitlimit ohne Wiederholung: reicht sofortiges Quittieren, oder brauchen wir grundsätzlich einen nächtlichen Abgleich dazu?

Ablage

Testaufbau und Rohdaten lokal: ~/AI/learning/odoo-sandbox/ (ERGEBNIS.md, run-test.py, run-test2.py, webhook-log.jsonl, webhook-receiver.py)