| 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 Dashboard • Logistics KSA • Logistics KSA Customs • Logistics KSA SABER • Logistics Quotation • Logistics Suite Base • Project Cargo • Road Transport • Ship Agency • Track and Trace • Warehouse 3PL |
| Lines of code | 32161 |
| Technical Name |
eh_log_suite_sa |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
KSA Logistics Suite
Twenty modules of freight, customs, transport, and 3PL operations, scoped to the Kingdom of Saudi Arabia with FASAH and SABER adapters, in one 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
KSA Logistics Suite
One install for the whole stack
Seventeen workflow engines plus KSA master data plus the FASAH and SABER adapters arrive in one click, instead of twenty separate Apps Store searches and a manual version-alignment exercise.
One version stream, one contact
Every constituent module sits on the same Odoo 19 release line and ships from ERP Heritage. The bundle manifest anchors the exact set tested together, and support comes from one source.
Yours to keep, LGPL-3
Source on disk, no activation key, no phone-home, no recurring licence. Read it, extend the FASAH or SABER serialiser, fork a module if a deployment needs free-zone movement codes.
Day in the life
A Jeddah forwarder moves a controlled-goods import.
A quotation is built from charge templates keyed to the lane and mode, with each line classified by leg, then confirmed into a sea freight job that seeds its milestones automatically. The customs declaration validates every HS code as all-digit at a legal length, stops at a hard guard if the deferment balance is below the duty payable, then submits through the FASAH adapter, which serialises the parties, totals, and lines into the documented JSON envelope and writes the regulator reference back on the record. Because the goods carry a SASO regulation, a SABER PCoC is referenced and the conformity certificate captured. As the container clears, the carrier posts a status to the HMAC-signed webhook, which maps the carrier code to a normalized event and appends it to the track-and-trace log. The whole file, quote to clearance to tracking, runs 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 carrier webhook verifies an HMAC signature with a constant-time compare before parsing, accepts exactly one event per request so each call is atomic at the database, and maps the raw carrier code to a normalized event code, silently ignoring codes it cannot map rather than corrupting the log.
The normalized event log is append-only. Direct create and write are blocked outside the internal logging context, so events can only enter through log_track_event() on the source record, never by hand.
Every HS code is validated as all-digit with a length of exactly 2, 4, 6, 8, or 10, deriving chapter, heading, subheading, or national level from the length. A malformed code raises rather than silently filing a wrong classification.
The declaration state machine stops at hard guards: missing HS lines, missing regulator profile, or a deferment balance below the duty payable. The FASAH adapter only dispatches once the record is clean, and the regulator reference and assessment detail are written back on success.
The DG declaration scans its lines and flags incompatible class combinations from each UN number's primary-class incompatibility list, surfacing a segregation status and a written summary of the conflicts rather than letting them ship unnoticed.
Outbound EDI walks a draft to queued to sent to acked state machine. A failed dispatch increments the retry count, and once it passes the maximum the row moves to a dead-letter state for an operator to inspect and re-queue, reusing the identical stored payload so the partner sees the same content across attempts.
Operational jobs are born from a confirmed sale order. State transitions run only through action buttons, direct writes to the state field are rejected, and direct creation of a job from the menu is restricted to managers.
Container movements record gate-in and gate-out for the equipment interchange receipt, and lease contracts carry a free-day allowance and a per-container daily rate so demurrage and detention compute from real interchange dates, not a flat assumption.
What is inside
Built to do the job, end to end.
- Freight Forwarding. Sea, air, land, and multimodal jobs anchored to the sale order. Bills of lading, mode-driven milestone seeding, document handling, and a cost and revenue ledger per job.
- Customs Broker. Declaration types, HS-code classification with strict length validation, regulator-of-record adapter abstraction, a declaration lifecycle with deferment-balance guards, and deferment account debits.
- Logistics Quotation. Charge templates keyed to lane and mode, per-line leg classification, and the sale order as the single source of truth for every downstream job.
- Logistics KSA. Saudi master data: industrial cities and economic zones, sea ports, airports, customs offices, and country-specific charge codes. The foundation the FASAH and SABER adapters build on.
- Logistics KSA Customs (FASAH). FASAH declaration submit, status, and health-check message types over the documented JSON contract, with credential resolution, ZATCA defaults, country-scoped declaration types, and HS overlays. Fixture-backed offline tests; live sandbox verification awaits customer credentials.
- Logistics KSA SABER. Product Certificate of Conformity (PCoC) and Shipment Certificate of Conformity (SCoC) models with a SASO submission state machine, regulator reference captured on the certificate, and validity dates populated from the response.
- Dangerous Goods. UN number and hazard-class master data with an IMDG segregation detector that flags incompatible class combinations on the declaration, plus the shipper's declaration document.
- Container Management. Depots, gate-in and gate-out movements for the equipment interchange receipt, maintenance work orders, lease contracts, and free-day-based demurrage and detention.
- EDI Hub. Per-partner message mapping over SFTP, SMTP, HTTP, and AS2 transports, with an outbound state machine, retry counting, a dead-letter lane, and a stored payload reused identically across attempts.
- Track and Trace. A public tracking page, an append-only normalized event log, and HMAC-signed carrier webhooks that ingest one event per request and map carrier codes to normalized milestones.
- Road Transport, Cold Chain, Last Mile. Trip planning and dispatch, temperature-controlled run monitoring, and B2C or B2B last-mile waves with attempt logs and proof of delivery.
- Project Cargo, Ship Agency, 3PL Warehouse, Disputes, Dashboard. Heavy-lift planning, port-call and disbursement handling, bonded-warehouse 3PL billing, cargo-claim and variation workflows, and KPI tiles across the suite.
Honest about the edges
What this does not do, so nothing surprises you.
- The FASAH and SABER adapters implement the documented contracts and pass fixture-backed offline tests. Live sandbox verification is deferred until a customer configures real regulator credentials.
- The FASAH submit envelope is the documented base schema. Deployments that need free-zone movement codes or GCC inter-state extras override the serialiser method.
- The freight revenue ledger is entered manually or invoiced; lines are not generated automatically from the job yet.
- EDI transports cover SFTP, SMTP, HTTP, and AS2. A partner using a protocol outside that set needs a custom transport handler.
- Demurrage and detention compute from free-day allowances and interchange dates; they are operational figures, not posted accounting entries.
- Every module in the bundle ships under LGPL-3 at this release and runs on Odoo 19 Community Edition only.
KSA logistics suite Odoo, Saudi Arabia freight forwarding software, FASAH customs declaration Odoo, SABER SASO product conformity, PCoC SCoC certificate of conformity, HS code classification customs broker, multimodal freight job management, container demurrage detention tracking, dangerous goods IMDG segregation, EDI EDIFACT X12 logistics, track and trace carrier webhook, 3PL bonded warehouse billing, ZATCA customs defaults Saudi, Odoo 19 Community logistics, ship agency port call disbursement
Please log in to comment on this module