| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Purchase (purchase) • Sales (sale_management) |
| Community Apps Dependencies |
Show
•
Carrier Portal
• Cold Chain • Container Management • Customs Broker • Dangerous Goods • Disputes and Variations • EDI Hub • Freight Forwarding • Last Mile • Logistics Bahrain • Logistics Bahrain Customs • Logistics Dashboard • Logistics Quotation • Logistics Suite Base • Project Cargo • Road Transport • Ship Agency • Track and Trace • Warehouse 3PL |
| Lines of code | 30896 |
| Technical Name |
eh_log_suite_bh |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
Bahrain Logistics Suite
The whole ERP Heritage logistics stack on one Odoo 16 Community database, scoped to the Kingdom of Bahrain, in a single install.
See it in action

One suite, one operational paneQuotations, freight, customs, transport, last mile, cold chain, containers, ship agency and project cargo, every engine reporting into one dashboard.

The forwarding boardThe freight desk reads its whole book in one screen, grouped by state with mode, lane and cargo on every card.

Every file wired to the suiteA job file links out to quotations, bills of lading, containers, bookings, customs, cold chain and disputes, one connected operation rather than isolated modules.
Why this module
Bahrain Logistics Suite
Real freight and customs mechanics
Bills of lading carry HBL, MBL, HAWB, and MAWB on one model with house to master consolidation. Customs declarations run a gated lifecycle, HS codes are validated all digit at length 2, 4, 6, 8, or 10, and the OFFS adapter serializes and parses real declaration submit and status messages. Not field names that imitate the domain, the actual workflow.
One version stream
Every constituent module sits on the same Odoo 16 release line and ships from the same publisher. The bundle version anchors the exact combination tested as a set, and there is one support contact for all of it rather than nineteen separate Apps Store searches to reconcile.
Yours to keep
LGPL-3 source on disk across every module in the bundle. No activation key, no phone home, no recurring licence. Read it, extend it, fork a module if you need to. Free today, free at renewal, because there is no renewal.
Day in the life
A forwarder books a hazmat sea import into Bahrain.
A quotation confirms only after the live margin, credit, and KYC guards pass, and the confirmed sale order spawns a freight job rather than anyone keying one in by hand. The job seeds its sea milestones, a House Bill of Lading is raised and linked to its consolidating Master, and the dangerous goods declaration scans its lines against the IMDG class incompatibility matrix and flags the combination before it ships. The customs declaration validates each HS subheading, then the OFFS adapter submits it to the Bahrain Customs Affairs single window and surfaces the regulator issued number and status back on the record. The container is gated in at the depot, demurrage starts accruing after its free days, and an Equipment Interchange Receipt prints. Every milestone lands on an append only, immutable tracking timeline the customer can follow on a public page. One install, on Community.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
The segregation detector scans a declaration's lines and reads each UN number's primary class incompatibility list, then flags incompatible class combinations as a warning rather than letting a non conforming load pass silently. Incompatibilities are driven by a maintained many to many class matrix, not a hard coded guess.
Tracking events are append only. Direct ORM creation is blocked (events must come through log_track_event on the source record), locked fields are immutable after creation so history cannot be rewritten, and deletion is forbidden. Carrier webhook ingestion is signature first: a missing or mismatched HMAC SHA256 signature is rejected with a constant time compare before the payload is ever parsed.
An HS code must be all digit and exactly 2, 4, 6, 8, or 10 characters long. A malformed or wrong length code raises a typed validation error at write time rather than being submitted to the regulator and bounced. The level (chapter, heading, subheading, national) is derived from the length.
Each container carries free days before demurrage or detention starts to accrue, computed from the gate movement history that also backs the Equipment Interchange Receipt. The same append only movement log feeds both the EIR document and the demurrage and detention computation, so the charge and the paper trail never disagree.
Outbound EDIFACT and X12 messages move through a documented state machine. A failure increments the retry count, and once it exceeds the configured maximum the message lands in a dead letter state where an operator can inspect and resume it. The payload is built once and stored, so a retry re sends byte identical content and the partner never sees a mutated message.
Confirmation hooks evaluate live margin, credit exposure, and KYC expiry and raise typed exceptions on hard failures. A blocked credit status or an expired KYC stops the quote rather than letting an unbillable or over exposed job flow downstream into operations.
What is inside
Built to do the job, end to end.
- Engines (global workflow). Logistics Suite Base (adapter framework, credentials helper, audit log, master data), Quotation (charge templates, multi leg pricing, margin and credit and KYC guards, approval matrix), Freight Forwarding (sea, air, land, multimodal, HBL, MBL, HAWB, MAWB, milestones, cost and revenue ledger), Customs Broker (declaration types, HS classification, deferment account, gated lifecycle), Road Transport, and a KPI Dashboard with drill down.
- Specialist engines. Carrier Portal, Cold Chain, Container Management (depots, gate in and out, work orders, lease in and out, demurrage and detention, EIR PDF), Dangerous Goods (IMDG, IATA DGR, ADR, UN number master, segregation detector), Disputes and Variations, EDI Hub (EDIFACT and X12, per partner mapping, queues with retry and dead letter), Last Mile, Project Cargo, Ship Agency (port call, Statement of Facts, Disbursement Account), Track and Trace, and Warehouse 3PL.
- Bahrain localisation. Logistics Bahrain seeds Khalifa Bin Salman Port, Mina Salman, Sitra Port, Bahrain International Airport, Customs Affairs offices, and the BLZ, BIIP, and airport free zones as ready master data. Logistics Bahrain Customs adds the OFFS single window adapter, NBR defaults, country scoped declaration types (import, export, transit, re export, temporary admission, GCC inter state), and Bahrain HS overlays.
- Engineering bar. Sale order anchored: operational jobs are born from a confirmed quotation, with direct creation paths gated. Multi company aware: models carry company scoping and isolation rules are global. Audit trail: state transitions and adapter calls are logged. Adapter realism: the OFFS adapter ships with fixture backed offline tests and honest status surfacing, with a mock mode profile at install.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a meta bundle. It installs and version aligns nineteen separate modules and ships no data rows of its own; the behaviour lives in the constituent engines and the Bahrain packs.
- The OFFS customs adapter ships with a mock mode profile at install and fixture backed offline tests. Live submission to the Bahrain Customs Affairs single window requires real OFFS credentials and access, which are not included and must be obtained from the regulator.
- Tracking event ingestion is append only and signature verified, but the suite does not impose a hard idempotency key on individual events. Sequencing and signature checks happen at the webhook boundary; deduplication is the responsibility of the calling integration where a source provides repeated events.
- Localisation is scoped to the Kingdom of Bahrain. Other GCC country packs (each with its own ports, customs offices, and single window adapter) are published separately and are not part of this bundle.
- Master data such as ports, airports, free zones, HS overlays, and NBR and OFFS defaults is a working starter set as of the 2026 baseline, not an exhaustive or perpetually maintained regulatory register; operators should review it against current published tariffs and procedures.
Bahrain logistics software Odoo, Bahrain freight forwarder ERP, customs broker Odoo Bahrain, OFFS single window Bahrain customs, freight forwarding Odoo 16 Community, container demurrage detention tracking, dangerous goods IMDG declaration Odoo, EDIFACT X12 EDI logistics, ship agency disbursement account software, 3PL warehouse billing Odoo, Khalifa Bin Salman Port logistics, track and trace shipment Odoo
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
Accept ZainCash wallet payments in Iraq at your Odoo checkout, on the ZainCash Payment Gateway v2 with OAuth2, re...
Sync Employment Hero ATS recruitment job openings into the standard Odoo Recruitment app, mapping each opening on...
The New Zealand country pack for the ERP Heritage Employment Hero integration
A reusable two way synchronisation engine that keeps Odoo in step with the people and payroll platform, idempoten...
Please log in to comment on this module