ERP Integration
Deze inhoud is nog niet vertaald.
Eryxon Flow supports two-way data synchronization with external ERP systems like SAP, NetSuite, Odoo, and others.
Architecture Overview
Section titled “Architecture Overview”┌─────────────────┐ ┌─────────────────┐│ Your ERP │◄───────►│ Eryxon Flow ││ (SAP, etc.) │ │ │└────────┬────────┘ └────────┬────────┘ │ │ │ REST API / Webhooks │ │ │ ▼ ▼┌─────────────────────────────────────────────┐│ Sync Layer ││ • external_id tracking ││ • Upsert operations ││ • Change detection (sync_hash) ││ • Soft delete support │└─────────────────────────────────────────────┘Integration Options
Section titled “Integration Options”1. REST API Sync (Real-time)
Section titled “1. REST API Sync (Real-time)”Best for: Webhook-driven updates, event-based sync, real-time integration.
| Method | Endpoint | Use Case |
|---|---|---|
PUT | /api-{entity}/sync | Upsert single record |
POST | /api-{entity}/bulk-sync | Batch upsert (up to 1000) |
DELETE | /api-{entity}?id={uuid} | Hard delete |
24 integration endpoints are available across jobs, parts, operations, batches, cells, resources, materials, time entries, webhooks, and assignments. See the REST API reference for the full catalog.
2. CSV Batch Import (UI-based)
Section titled “2. CSV Batch Import (UI-based)”Best for: Initial data migration, periodic bulk updates, manual imports.
Navigate to Admin → Data Import in the web UI.
3. Planning Adapters (v0.5)
Section titled “3. Planning Adapters (v0.5)”Best for: Pulling work orders and resources from a dedicated planning system without writing custom REST sync code.
| Adapter | Source | Status | Notes |
|---|---|---|---|
| FrePPLe | FrePPLe REST API | Beta | Pull work orders + resources, push start and completion, Basic Auth, pagination |
| Odoo MRP | Odoo mrp.production over JSON-RPC | Beta | Pull work orders, push execution feedback |
Both adapters are Beta — interfaces and behavior may still change, so pilot them on non-critical work first. Adapters share a single TypeScript interface (src/lib/planning/) using ISA-95 aligned vocabulary. Pick one at runtime with createPlanningAdapter(config).
Supported Entities
Section titled “Supported Entities”| ERP Concept | Eryxon Entity | Sync Endpoint |
|---|---|---|
| Sales Order | Job | /api-jobs/sync |
| Work Center | Cell | /api-cells/sync |
| Equipment / Tooling | Resource | /api-resources/sync |
Parts and operations are synced via the unified /api-erp-sync endpoint or created nested within jobs.
Key Fields
Section titled “Key Fields”external_id
Section titled “external_id”Every synced record should include:
{ "external_id": "SO-12345", // Your ERP's unique identifier "external_source": "SAP", // Source system name ...other fields}The combination of (tenant_id, external_source, external_id) forms a unique constraint for upsert operations.
sync_hash
Section titled “sync_hash”Eryxon automatically generates a SHA-256 hash of the payload for change detection. On subsequent syncs, unchanged records can be skipped.
synced_at
Section titled “synced_at”Timestamp of the last successful sync, useful for incremental updates.
Related Documentation
Section titled “Related Documentation”- CSV Import - Step-by-step CSV import instructions
- REST API Overview - Endpoints and auth
- REST API Reference - Full endpoint documentation
Database Schema
Section titled “Database Schema”The sync infrastructure adds these columns to core tables:
-- Added to jobs, parts, cells, resourcesexternal_id TEXT, -- ERP identifierexternal_source TEXT, -- Source system namesynced_at TIMESTAMPTZ, -- Last sync timestamp
-- Soft delete support (jobs, cells)deleted_at TIMESTAMPTZ, -- NULL = activedeleted_by UUID -- User who deletedBest Practices
Section titled “Best Practices”- Always include external_id - Required for upsert operations
- Sync dependencies first - Sync cells before operations that reference them
- Use bulk-sync for batches - More efficient than individual requests
- Implement webhooks - Receive real-time updates back to your ERP
- Handle errors gracefully - Bulk responses include per-record errors