🧩 NetSuite4Omni
ERP connector platform Β· UAT1

One reusable integration for hundreds of independent NetSuite accounts.

A connector platform where a customer's credentials, base URL, field names and custom fields are data on a connection β€” not code branches. Four NetSuite APIs behind one interface, bidirectional sync that is resumable, idempotent, conflict-aware and observable.

β–Ά Open the docs page πŸ” Watch the note ⇄ NetSuite loop πŸ–₯️ The running app β€” dashboard & API

Opens the live Omni app, signed in to the demo account, on the documentation page.

Nothing signs in until you click β€” the demo account is shared, so this page never logs you in on its own.

Live platform Β· API docs (OpenAPI) Β· Prometheus metrics Β· Grafana dashboard Β· Repository

What the demo shows you

A landing pane and a documentation panel, each a note β€” one tab per document, so you can edit the docs and see the tab follow. The platform itself runs on the same box: the dashboard can start the scenario, inject faults and configure field mappings.

There is also a second page, the note ⇄ NetSuite loop: one invoice held as a note on the left and as a record in the simulated NetSuite account on the right. Edit a value in the note and it is pushed to the account; change it in the account and the note is re-rendered from the ERP β€” the same record, in step in both directions, with the trace that proves it stopped rather than echoing.

πŸ”Œ Four NetSuite APIs, one interface

  • SuiteTalk REST + SuiteQL (OAuth 2.0 / TBA)
  • SuiteTalk SOAP, TBA-signed envelopes
  • A RESTlet with a server-side delta window
  • SuiteScript: User Event push + Map/Reduce backfill

πŸ›‘οΈ Reliability is the product

  • Idempotent writes β€” a lost response cannot duplicate an invoice
  • Jittered retries that honour Retry-After
  • A per-connection circuit breaker
  • Conflict detection that refuses to guess

πŸ§ͺ Evidence, not claims

  • 140 tests against a fake NetSuite that verifies signatures
  • A 17-step scenario that breaks things on purpose β€” including two customer accounts built to be hostile: a legacy "bodged" one and a manufacturing one with bins, lots and serials
  • Fault injection: 429s, 5xx, a lost write, schema drift
  • Every step prints its own numbers

πŸ“ˆ Observable, and instrumented for real

  • Prometheus metrics from the platform itself
  • A Grafana dashboard scraped every 60s
  • Self-throttling, circuit state, stream leases, backfill progress
  • Ranked "what needs a human" view, not a wall of graphs

Run it yourself

The deployed instance is the same code, one bash deploy/install-vps.sh away. No NetSuite account required β€” the bundled simulator speaks the real wire protocol.

git clone <this repo> && cd erp-connector-platform
make install        # python 3.11+ venv + deps
make demo           # the whole scenario in ~3s: 17 steps, each printing its evidence
make serve          # fake NetSuite :8011 + API :8000 + dashboard

# or as services on a box (this is what erp.uat.sites.miomni.me runs):
bash deploy/install-vps.sh --dry-run

Inside the demo account

The notes are real Omni notes: searchable, editable, and the page follows them.