ERP System Integration with Website
ERP integration is a category of tasks, not one specific implementation. ERP includes 1C:ERP, SAP, Microsoft Dynamics, Oracle NetSuite, Odoo, Epicor, and dozens of other systems. Each has its own API architecture, data formats, and security models. Nevertheless, approaches to integrating a website with any ERP follow common principles.
General Architecture
Direct synchronous requests from website to ERP is an antipattern. ERP systems weren't designed to process hundreds of HTTP requests per minute from website users. Standard scheme includes intermediate layer:
Website User
↓
Website (Server)
↓
Cache / Website DB ← [Synchronization] ← ERP
↓
Response to User (fast, without ERP access)
Data critical to users (prices, stock, catalog) is cached in website database and updated from ERP by schedule or webhook. Transactional data (orders) is transmitted to ERP through queue.
Integration Types by Direction
ERP → Website (master data):
- Nomenclature, characteristics, category hierarchy
- Current prices (base + for specific clients)
- Stock by warehouses
- Counterparties (for B2B portals)
Website → ERP (transactions):
- Customer orders
- New client data / contact updates
- Payments and returns
ERP → Website (feedback):
- Order statuses (received, shipped, closed)
- Issued documents (invoices, shipping bills)
- Credit limits and account status (for B2B)
Formats and Protocols
| ERP | Protocol | Format |
|---|---|---|
| SAP | OData / RFC / SOAP | JSON / XML / IDoc |
| 1C any | HTTP services / COM / CommerceML | JSON / XML |
| Odoo | JSON-RPC | JSON |
| MS Dynamics | OData (Dataverse) | JSON |
| Oracle NetSuite | SuiteTalk SOAP / REST | XML / JSON |
Intermediate Service (Middleware)
For large integrations, dedicated middleware service is recommended:
Website API → Middleware (Go/Node.js) → ERP
↕
Queue (RabbitMQ/Kafka)
↕
Monitoring + retries
Middleware is responsible for: format transformation, routing, retry on errors, request batching (important for ERP with call limits), logging all exchanges.
Errors and Reconciliation
In any integration there are discrepancies: order created on website but didn't reach ERP due to network error. Need reconciliation mechanism — periodic check of data consistency:
-- Find orders on website without ERP entry
SELECT o.id, o.created_at
FROM orders o
WHERE o.erp_sync_status != 'synced'
AND o.created_at < NOW() - INTERVAL '10 minutes'
AND o.status = 'confirmed'
ORDER BY o.created_at
Standardization Before Integration
Before starting development, analytical work is needed:
- Which ERP objects will participate in exchange
- Field mapping: website field ↔ ERP field (with data types and constraints)
- Deduplication rules (how to link website client to ERP counterparty)
- Frequency and volume of exchanges
- SLA: acceptable synchronization delay
Development Timeline: 6–16 weeks depending on system, data volume, and complexity of transformations.







