Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Odoo Jsonrpc Laravel Package

obuchmann/odoo-jsonrpc

A Laravel package for communicating with Odoo ERP over its JSON-RPC API. It provides a clean, fluent PHP interface to authenticate and query, create, update, and delete Odoo records, making backend integration simple within Laravel applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. obuchmann/odoo-jsonrpc is an adapter layer between a Laravel application and Odoo ERP, speaking Odoo's JSON-RPC endpoints and presenting Odoo records through an Eloquent-like model interface. The v1.9.1 patch touches the dehydration pipeline — the write-back path that serializes a hydrated model graph (including nested relations) into Odoo's expected payload. That this is the defect location is architecturally informative: the package's core value proposition is bidirectional relational mapping, not just read-only querying. Foreign-key fields arriving as arrays were producing payloads Odoo rejected; the fix normalizes that shape before submission.

Integration feasibility. Very low effort. Single-commit patch release from v1.9.0, no API surface change signaled in the notes, no deprecations, no config changes. Upgrade is composer update plus a regression pass on any code path that writes relational data.

Technical risk. Low at the release level, but the release illuminates a persistent risk class. Odoo's x2many protocol requires specific tuple encodings — (0, 0, values) for create, (6, 0, [ids]) for replace, and so on — and many2one fields expect a scalar ID, not an array. Any mismatch is a runtime failure detected by Odoo's ORM, not by PHP's type system. That means these bugs escape unit tests and surface in staging or production as opaque validation faults. Secondary risks: Odoo version drift across majors, JSON-RPC session/authentication lifecycle handling, and the absence of a transaction spanning Laravel and Odoo.

Key questions.

  • Which Odoo major versions are supported and exercised in CI — is there a contract test suite against a real instance, or only mocked responses?
  • Does PR #52's fix cover both the create and update dehydration paths, and both one2many and many2many?
  • Are other array-valued or tuple-valued fields subject to the same coercion path?
  • What is the maintainer's release cadence and bus factor? (Single-maintainer project, GitHub-hosted, no commercial backing apparent.)
  • The changelog line is truncated ("…causing Odoo en…") — confirm the exact failure signature so we can search our own logs for it.

Integration Approach

Stack fit. Laravel 8–11 on PHP 8.x, standard service-provider and config-publish registration, credentials for host/database/user in config or env. The natural deployment shape is Laravel as the UX, workflow, and integration-orchestration layer, with Odoo as system of record for ERP entities. This package is the correct seam for that pattern rather than hand-rolling RPC calls.

Migration path. If already on v1.9.0, take the patch (composer update obuchmann/odoo-jsonrpc) and re-run whatever dehydration coverage exists. If evaluating fresh, pin to ^1.9 and treat the constraint as a deliberate choice — do not float to * on a single-maintainer dependency.

Compatibility. No breaking changes indicated at patch level. The real compatibility axis is the Odoo side, not the Laravel side: verify against the specific Odoo major version in use, and re-verify on Odoo upgrades independently of package version bumps.

Sequencing.

  1. Read the PR #52 diff directly rather than relying on the changelog line.
  2. Construct a minimal reproduction: a model with a foreign-key field populated as an array, written back through dehydration, against a non-production Odoo database.
  3. Confirm the fix resolves it and that scalar-ID FK writes are unaffected.
  4. Run the full staging sync/round-trip suite.
  5. Roll forward; keep the previous version pinned for fast rollback.

Operational Impact

Maintenance. Small, focused dependency with a single maintainer. Treat it as a watch-list dependency: budget recurring time to read each diff, because changelog entries are terse and bug-fix releases here can encode non-obvious behavioral corrections.

Support. Community-only — GitHub issues, no SLA, no vendor escalation path. Mitigation: wrap all package interaction behind an internal repository/gateway interface so a fork, a patch, or a swap to direct HTTP calls remains containable rather than spreading Odoo RPC semantics across the codebase.

Scaling. JSON-RPC is synchronous and per-call, and dehydration of a model graph can degenerate into N+1 round trips. Push bulk operations to queued jobs, prefer batched writes where the package exposes them, and watch Odoo worker/thread limits, request timeouts, and payload sizes. This is a throughput ceiling of the integration architecture, not something a patch release alters.

Failure modes. The dominant ones: partial writes with no distributed transaction (Odoo commits per RPC call, so a mid-graph failure leaves inconsistent state); session expiry mid-operation; Odoo access-rights or validation errors surfacing as generic faults rather than typed exceptions; and exactly the field-shape mismatch class fixed here — silent until Odoo rejects the payload. Retry logic is hazardous without idempotency keys, since a retried create produces duplicates.

Ramp-up. An engineer comfortable with Eloquent and Odoo's data model needs a few days to be productive; the genuine learning curve is Odoo's relational command protocol and what "dehydration" actually does to a model graph, not the Laravel integration itself. Document the write-back semantics and supported Odoo versions internally — the upstream docs are unlikely to cover the edge cases this release just exposed.

Assessment caveat. This evaluation is derived from a single patch-level release note; no prior assessment, benchmark data, or repository inspection was available. The risk ratings above should be re-validated against the actual dependency tree, CI setup, and Odoo version matrix before any go/no-go decision.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
alphabalex/messaging-made-easy
rawphp/warp
shootkiran/merobug
narakode/fineauth
numencode/wn-syncops-plugin
ibnnajjaar/mib-global-pay
ably/pubsub-server
mstfkhazaal/defender
mfonte/base62x
karnoweb/metapilot
tobya/bcsapiwrapper
swalker2/cpanel
vish4395/laravel-translation-manager
morningtrain/economic
teksite/systeminfo-laravel
atomcms/voting
run6/weather
siokas/laravelembeddirectives
adamlien/pkuuids
gilsonsouza/lara-doc-generator