Connect your ERP without replacing it: data, permissions and tests
If your ERP works but orders are entered again elsewhere, you may need a connection. Define which system controls the data, permitted changes and recovery from failed sends.
When should you connect the ERP rather than replace it?
When the ERP handles part of the operation well and the problem is at a boundary: sales captures orders elsewhere, customers cannot check their status or another department enters the same data again. Replacement adds migration and changes in working habits; keeping the system also requires checking whether it can exchange the missing information.
Follow an order from capture to closure. Mark each copy, approval and difference. If the problem is inside the ERP rules, review configuration first. If it crosses systems, define the connection. If the system no longer supports the process or a viable extension, assess replacement with scope and consequences in writing. The ERP-versus-custom comparison helps choose that level; this guide tests the connection.
Existing connector, API or files: which route fits?
| Route | When to evaluate it | What to verify first |
|---|---|---|
| Existing module or connector | It already covers the flow and its exceptions | Actual edition compatibility, fields, permissions, support and business tests |
| Authorized API | Data must be queried or updated between systems | Product/version, permitted operations, plan, limits, permissions and recovery mechanism |
| Controlled export and import | The process tolerates batch updates and a supported exchange exists | Stable identifiers, cutover, validation of intervening changes and rejected-row review |
| Defer or change scope | Permitted access is unavailable or a safe operation cannot be demonstrated | What a manual stage or native configuration can resolve while the dependency is clarified |
Access does not follow from a product name. For example, Odoo 19’s external API documentation limits that access to its Custom plans and applies user permissions. Confirm your edition, hosting and contract: this reference does not mean every installation or plan allows the same connector. For another ERP, review its documentation and account terms.
If an existing connector passes your tests, another custom connector is unnecessary. If files are the only option, agree how much delay the process tolerates and how to detect changes since export. A claim of connecting to everything does not replace identifying a permitted operation and demonstrating it.
Which system controls each field?
Write a matrix before linking two screens. These are example decisions rather than assignments required for every business:
| Field or document | Possible authority | Rule to agree |
|---|---|---|
| Product identifier and unit | Approved ERP catalog | The portal reuses the identity rather than creating another product when a name changes |
| Price and credit limit | Authorized commercial system and responsible person | Customers see their permitted data; a portal user cannot increase their own limit |
| Confirmed order | ERP after validation | Distinguish a portal request from an accepted order; retain both related references |
| Stock and reservation | System recording movements at that location | Query and confirm under its rules; do not overwrite with an old copy |
| Partial receipt or delivery | Authorized operational record with evidence | Transmit quantities and pending state; do not make a partial document complete |
| Attachments and customer data | System designated for each field | Defined permissions, retention and lookup; avoid unnecessary copies |
Bidirectional must not mean either system changes everything. If both edit a field, define conflict resolution and approval. For location quantities, complement the matrix with inventory between warehouses; for a spreadsheet catalog, prepare inventory migration from Excel first.
What access does the connection need?
Use an identifiable integration user with read/write access limited to the flow rather than the personal account that administers everything. Define what it may read, create, change or cancel and how access is revoked. Keep credentials outside shared spreadsheets and record actions and errors without exposing sensitive data.
Odoo 19’s API uses user permissions, record rules and field access; an API key does not remove those restrictions. In your tests, changing a customer identifier must not reveal another customer or allow out-of-scope changes. These are requirements the integration must pass, rather than guarantees created by a technology choice.
Worked example: one order, two attempts and an uncertain response
| Case | What happens | Required result |
|---|---|---|
| E01 | ERP order ORD-100 is sent with authorized operation op-100 | Create one external record and retain its relationship to ORD-100 and op-100 |
| E02 | The same op-100 send is repeated | Recognize the previous operation; create no second record |
| E03 | op-200 for ORD-200 times out; destination creation is uncertain | Look up the key or reference and reconcile before another creation; remain pending if unconfirmed |
| E04 | op-300 for ORD-300 has 10 units ordered and 8 received | Explain the 2 pending units or their authorized resolution; do not mark all received |
Download the ERP integration test CSV and pack instructions. A newly authorized order change is not the same event merely because it shares ORD-100: distinguish it from retrying op-100. Identity belongs to the operation rather than only the document.
An error can mean the destination received nothing, or that it saved the record but the response was lost. Creating again without checking can duplicate the order. If the interface cannot verify the result, agree on manual reconciliation or change the flow; repetition alone does not solve the uncertainty.
What if notifications arrive twice, late or out of order?
Automatic notifications help but do not replace confirmed state. Shopify documents that webhook delivery order is not guaranteed and explains delivery verification and duplicate handling. For your connection, decide what identifies a delivery, what identifies the business action and how to query current state before applying a delayed change.
Ask for a reviewable list of pending, rejected and confirmed operations. Reconciliation compares references, lines, quantities and states between origin and destination rather than simply counting successful send responses. Agree its frequency and owner according to the flow’s risk; a partially received order must stay in that review.
Which tests and recovery plan need to be written down?
| Test | Acceptance requirement |
|---|---|
| Repeat the same operation | One business result; operation identity and document relationships retained |
| Uncertain response after saving | Verify the result before creating again; unknown outcomes remain pending |
| Changed order or delayed event | Review current version or state; do not overwrite with old data |
| Another customer or insufficient permissions | Access rejected; visible error without automatic permission expansion |
| Partial quantity or difference | Actual and pending quantities traceable; no fictitious closure |
| Unavailable provider or revoked access | Flow paused or pending under the agreed rule; no silent loss of operations |
Define who may pause the connection, where the team continues recording and how new references are preserved. On recovery, resume from the last confirmed result and reconcile pending operations. Returning to an older copy does not undo receipts, sales or physical movements that happened meanwhile; preserve those facts and correct the records with evidence.
What should you bring to the first integration stage?
A representative document, its fields, the current workflow, ERP edition, access conditions and exception examples. Choose one flow with a clear acceptance criterion. Separate configuration, development, provider access and maintenance in scope rather than assuming a license includes the full integration.
The CelMex Unlockers case shows orders and connections to digital-service providers. It supports integration work at that scope, not a delivered connector for every ERP or physical logistics. If customers need to consult or request orders, review the customer portal.
Use the scope worksheet with the data matrix and E01–E04 to agree on the test. See our approach to ERP development and extensions and process automation. Evaluate the option that fits your operation first; a connection does not require replacing what works.
Primary sources reviewed October 5, 2026. Availability, permissions and terms must be confirmed for the specific product and account; the proposed test does not guarantee provider access or an already implemented result.
Frequently asked questions
Confirm product, version, edition, contract and permitted operations. An existing module, authorized API or controlled file exchange may solve a flow; if supported access is unavailable or a safe operation cannot be tested, defer or change scope. A universal connector is not promised.
Repeating the same operation retains one business result. In the example, op-100 is one creation related to ORD-100 and its retry creates no additional record. A newly authorized order modification must be distinguished from that retry.
First determine whether the destination saved the record. Look up its key or reference and reconcile before another creation. If the result remains unknown, leave it pending with a review owner; an error or timeout does not establish that nothing was created.
Not by default. Define an identifiable user with the minimum permissions for the authorized flow, test record/customer restrictions and agree how to revoke access. If an operation requires additional permissions, review and authorize that need before expanding scope.
Sources
- External JSON-2 API — Odoo 19Odoo
- About webhooksShopify
- Verify webhook deliveriesShopify
Last updated: