Skip to content

How do we integrate Dataplicity with ERP, CRM, billing, and external APIs?

Do not copy your whole ERP, CRM, billing, or domain backend into Dataplicity. Define which system owns each fact, exchange only the data required by the connected product, and make reconciliation explicit.

Dataplicity should usually own connected-product state and operations. Your business systems should continue owning their existing domains.

Start with authority, not API mechanics

Before building an integration, write down the system of record for each important fact.

For example:

FactAuthoritative system
Customer legal accountERP/CRM
Invoice/payment statusBilling/accounting
Product modelOEM product master / Device Class
Device cloud identityDataplicity
Current device connection/product stateDevice + Dataplicity
Customer/site allocationDefine one owner; synchronise deliberately
Financial transaction ledgerDomain backend/accounting system
Product workflow stateProduct Application if appropriate

If two systems both believe they are authoritative, eventual disagreement is not an integration bug; it is an architecture bug.

Integrate around business events

Useful integration triggers include:

  • order fulfilled -> allocate device to customer;
  • device commissioned -> update asset/service record;
  • customer/site created -> create or map connected-product tenant;
  • device alarm -> create external service ticket;
  • service entitlement changes -> update permitted workflow/state;
  • Product Application process completes -> notify domain backend;
  • device retired -> update external asset lifecycle.

Keep payloads narrow and idempotent.

Use stable external identifiers

Map entities using stable IDs rather than names.

For example:

text
ERP customer id: CUST-18421
Dataplicity customer id: ...

Store the mapping in a deliberate integration layer or supported metadata field where appropriate.

Names, email addresses, and site labels can change. They are poor primary keys for synchronisation.

Make writes idempotent

An integration can retry because of timeouts, network failures, or queue replay. Repeating the same request should not create duplicate customers, allocations, invoices, or transactions.

Use stable operation/event identifiers where the business effect matters.

For example:

json
{
  "event_id": "erp-device-allocation-883102",
  "customer_ref": "CUST-18421",
  "device_serial": "GW-009918"
}

The receiving side should recognise a replay where practical.

Do not couple physical safety to ERP availability

If the ERP is down, your physical product should not suddenly become unsafe.

Use external business systems for policy, commercial state, and workflow where appropriate. Keep local safety and essential offline behaviour on the device.

For time-sensitive entitlement, credit, or access systems, design an explicit offline model rather than making each physical operation synchronously dependent on an ERP API.

See Offline datasets.

Decide between synchronous API calls and asynchronous events

Use synchronous calls when the user genuinely needs an immediate response from the other system and failure can be handled clearly.

Use asynchronous integration when:

  • either system can be temporarily unavailable;
  • retries are expected;
  • the workflow should continue independently;
  • throughput varies;
  • reconciliation matters more than immediate coupling.

A queued integration process with explicit status is often easier to operate than a long chain of synchronous calls across device, Dataplicity, ERP, payment provider, and CRM.

Avoid hidden circular updates

Bidirectional sync is dangerous when both sides automatically rewrite each other.

If customer names sync from CRM to Dataplicity, do not also push every Dataplicity display-name edit back into CRM unless that authority rule is intentional.

For each field define:

  • owner;
  • allowed direction;
  • update trigger;
  • conflict policy;
  • audit expectations.

Use Product Applications where they reduce glue code

A Product Application can own bounded connected-product workflow state and integrate outward at the boundary.

That can be cleaner than building a custom backend merely to coordinate a small number of device/customer records and actions.

But if your integration logic becomes a broad enterprise integration platform, use tooling designed for that problem.

Operationalise the integration

Production integration needs more than a successful API call in development.

Monitor:

  • authentication expiry/failure;
  • rate limits;
  • queue backlog;
  • repeated retries;
  • dead-letter/failure state;
  • mapping failures;
  • schema/version changes;
  • reconciliation discrepancies.

Provide a way to replay or repair failed business events without manually editing databases.

Security boundary

Use the narrowest credentials and permissions required. Do not embed ERP or cloud master credentials on field devices.

A device should normally communicate through the device/product contract. Backend-to-backend integrations can use the appropriate Dataplicity API credentials and external-system credentials from a secure server environment.

See API keys and the Gateway API.