Skip to content

ERP Integration

Eryxon MES supports two-way data synchronization with external ERP systems like SAP, NetSuite, Odoo, and others.

┌─────────────────┐ ┌─────────────────┐
│ Your ERP │◄───────►│ Eryxon MES │
│ (SAP, etc.) │ │ │
└────────┬────────┘ └────────┬────────┘
│ │
│ REST API / Webhooks │
│ │
▼ ▼
┌─────────────────────────────────────────────┐
│ Sync Layer │
│ • external_id tracking │
│ • Upsert operations │
│ • Change detection (sync_hash) │
│ • Soft delete support │
└─────────────────────────────────────────────┘

Best for: Webhook-driven updates, event-based sync, real-time integration.

MethodEndpointUse Case
PUT/api-{entity}/syncUpsert single record
POST/api-{entity}/bulk-syncBatch upsert (up to 1000)
DELETE/api-{entity}?id={uuid}Hard delete

Best for: Initial data migration, periodic bulk updates, manual imports.

Navigate to Admin → Data Import in the web UI.

ERP ConceptEryxon EntitySync Endpoint
Sales OrderJob/api-jobs/sync
Work Order / Line ItemPart/api-parts/sync
Routing StepOperation/api-operations/sync
Work CenterCell/api-cells/sync
Equipment / ToolingResource/api-resources/sync

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.

Eryxon automatically generates a SHA-256 hash of the payload for change detection. On subsequent syncs, unchanged records can be skipped.

Timestamp of the last successful sync, useful for incremental updates.

The sync infrastructure adds these columns to core tables:

-- Added to jobs, parts, operations, resources, cells
external_id TEXT, -- ERP identifier
external_source TEXT, -- Source system name
synced_at TIMESTAMPTZ, -- Last sync timestamp
sync_hash TEXT, -- Payload hash for change detection
-- Soft delete support
deleted_at TIMESTAMPTZ, -- NULL = active
deleted_by UUID -- User who deleted
  1. Always include external_id - Required for upsert operations
  2. Sync dependencies first - Sync cells before operations that reference them
  3. Use bulk-sync for batches - More efficient than individual requests
  4. Implement webhooks - Receive real-time updates back to your ERP
  5. Handle errors gracefully - Bulk responses include per-record errors