| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Discuss (mail) • Calendar (calendar) • Contacts (contacts) |
| Lines of code | 4273 |
| Technical Name |
ar_erp_kafka_stream_bridge |
| License | OPL-1 |
| Website | mailto:afif.ridhwan33@gmail.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Discuss (mail) • Calendar (calendar) • Contacts (contacts) |
| Lines of code | 4273 |
| Technical Name |
ar_erp_kafka_stream_bridge |
| License | OPL-1 |
| Website | mailto:afif.ridhwan33@gmail.com |
| Versions | 17.0 18.0 19.0 |
AR ERP Kafka Event Stream Bridge
Enterprise-grade Apache Kafka integration for Odoo 17 — built around an external bridge runtime that keeps Kafka completely outside the Odoo process. Durable queue, retry engine, dead letter queue, monitoring dashboard, and full audit trails.
Full automated suite — queue, retry, DLQ, monitoring, event log, dashboard, CRM handler, and security.
Kafka runtime runs as a dedicated bridge process outside Odoo workers. Zero long-lived threads inside Odoo.
Lag, throughput, backlog, errors, and DLQ state all visible from the Odoo dashboard — no terminal needed.
Built for the failure modes that actually happen in production
Most Kafka-to-Odoo integrations break under load because they run a consumer thread inside Odoo. This module separates the Kafka runtime from the Odoo process entirely — messages are staged into a durable inbox first, then processed in short, recoverable transactions with full audit trails.
What causes outages
- Tight coupling between Kafka lifecycle and Odoo runtime
- Deadlock risk and hard-to-debug state drift
- Offsets and business writes fall out of sync during failures
Production-safe flow
- Consumer runs outside Odoo — isolated from worker crashes
- Messages queued first, processed in short recoverable transactions
- Retry, DLQ, lag metrics, and queue state visible from UI
Everything needed for controlled Kafka-to-Odoo delivery
External bridge & ingest API
Bridge POSTs to a per-consumer ingest endpoint with a bearer token. Offset commit happens only after enqueue succeeds — no data loss on failure.
Durable queue, retry, DLQ
Explicit message state from ingress to final write. Configurable retry attempts and interval. Dead Letter Queue with UI-based replay and requeue.
Monitoring dashboard
Consumer lag, throughput, backlog, error rate, and process time — all in one Odoo view. Pivot metrics by consumer and date. Event log linked to records.
Live screenshots from an Odoo 17 validation instance
Key views captured during a local production-like validation run.
Monitoring Dashboard
Single-page summary: message counts, success rate, consumer lag, queue backlog, DLQ size, and average process time.
Consumer List
All consumers with live state, monitoring status, queue backlog, lag, throughput, and last message time.
Event Log
Every processed message creates a traceable entry linked to the Odoo record it created or updated.
Dead Letter Queue
Messages that exhaust retries are isolated here for operator review, replay, or deletion from UI.
Every message state has clear operational meaning
Accepted by ingest API and staged. Worker has not picked up yet.
Worker has claimed the message. Will resolve to Done, Retry, or Dead Lettered.
Business logic finished. Target Odoo record created or updated. Event log linked.
Event type has no registered handler — intentionally skipped.
Recoverable failure. Reprocessed automatically after retry interval.
Retries exhausted. Isolated in DLQ for manual review or replay.
CRM, e-commerce, and event-driven integrations
CRM lead & opportunity ingestion
Included CRM demo handler creates or updates leads from lead.create and lead.update Kafka events with full event log linkage to the crm.lead record.
Marketplace and OMS order sync
Stage external order and status events before applying them into Odoo. Each event is offset-tracked and idempotent — safe to replay.
Operational monitoring for support teams
Operators inspect queue backlog, failed payloads, DLQ items, lag spikes, and retry build-up from the Odoo UI — no broker access needed.
Audit trail and selective replay
Every event is linked to the Odoo record it affected. Requeue specific items from the DLQ without reprocessing the entire topic.
Requirements and setup
Compatible with Odoo 17.0 Community and Enterprise.
Requires base, mail, and crm — all available in both editions.
The external bridge requires kafka-python (Python only — no Kafka library needed inside the Odoo process).
Full installation guide — bridge configuration, token setup, Docker Compose example, and test suite instructions — is in the README.md included in the module archive.
Module dependencies
- Odoo 17.0 — base, mail, crm
- External bridge:
kafka-pythonpip package - No Kafka library inside the Odoo process
Support
- Author: AR ERP
- License: OPL-1
- afif.ridhwan33@gmail.com
Apache Kafka integration with external bridge runtime, durable queue, retry engine, DLQ, and monitoring dashboard.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module