Capability

Data sync that catches what gets deleted, too

Change data capture with cursor checkpoints, delete detection by record fingerprints, native database log capture, schema-drift alerts, and data assertions, keeping operational systems aligned on an interval as short as every minute.
Inserts, updates, deletes
Detects
Cursors, fingerprints, database logs
Method
From every minute
Cadence
Schema drift and data assertions
Safety

The problem

Systems drift out of sync quietly. A record updates in one place and never makes it to the other. A row gets deleted and, because there is nothing left to poll, no downstream system ever finds out. This happens continuously, not once, so a sync has to run on a short interval and know what changed since last time.

Most sync tooling handles inserts and updates well and treats deletes as an afterthought, exactly the class of bug that shows up as a customer complaint three weeks later, not a failed test.

How data sync and change data capture work on Neblex

Data sync in Neblex Integration Fabric is change data capture (CDC) for operational systems. A Poll for changes trigger checks the source on the interval you set, from every minute upward, and passes on only what changed. You choose how it recognizes a change:

  • Cursor field. The trigger remembers the highest value of a field such as updated_at and passes on records newer than last time. It reads only new and changed rows, so it is the lightest option, but a deleted row leaves nothing for it to see.
  • Change detection key. The trigger reads the watched set on each poll and keeps a fingerprint per key. Each record arrives marked as an insert, an update, or a delete, so deletes are caught even in SaaS APIs that have no change log. Only the fingerprints are stored, not your data.
  • Native log capture. For databases, the trigger reads the change log directly: PostgreSQL logical replication is generally available, and SQL Server Change Data Capture, MySQL and MariaDB binlog, and other sources are available as Experimental. Each emits inserts, updates, and true deletes in commit order.

Schema-drift detection watches the shape of your data: when columns appear or disappear at the source, the flow shows a banner and a Health entry, so you can adjust the mapping before it silently misses data. A renamed column shows up as one removed and one added column.

Data assertions watch the values. An Assert Data Quality step checks each batch before it is written: row-count bounds, required fields, numeric ranges, and conditions you write. If the batch fails a check, the step stops the run and names the first violations, or, with On error set to Route, hands one error record to a branch that alerts or opens a review task. Either way, a sync that would blank out or remove an unexpected share of the target does not go through unnoticed.

For a one-time migration or the first full load, that is bulk data processing. Data sync is the version that keeps running afterward to keep the two systems in agreement.

Conflicts, deltas, and data quality

When a flow runs in each direction, the question is what happens when a record changed on both sides between runs. You resolve it in the sync flow, not with one global switch. Sort the two versions by their modified time and a Merge by key step combines them field by field, with the later version winning; a branch can hand the conflict to a person through a Wait for form task; or you map a given field in one direction only so one system is its source of truth. The choice is made per field, because a mapping only ever writes the destination fields you choose.

The same data quality steps that a batch load uses work on changes too. A Remove duplicates step on the destination key removes duplicates within a batch, and writing with an upsert on the destination key keeps a repeated change from creating a second record across runs. See bulk data processing for the full data-quality toolset.

How you build it in Neblex

Flows are built three ways, and you can move between them on the same flow:

  • Natural language. Describe the flow to Matt, the Neblex AI Assistant built into the builder. Matt drafts the canvas, maps fields, and explains steps. It runs on the platform's builder model by default, or on a model you connect for the building experience only. That setting never supplies a model or credential to deployed agents, their tools, knowledge search, apps, or flows.
  • Native builder. Assemble steps, branches, and connectors on the visual canvas.
  • MCP. Create, change, publish, and run flows programmatically, so an external client or agent can build on Neblex directly, with consent scopes for operating, authoring, and publishing.

Agents, forms, apps, data tables, and connections have their own builders and the same MCP surface.

Data sync and change data capture capabilities

  • Change data capture with cursor checkpoints: only new and changed rows, no full table re-scan
  • Delete detection with a change detection key, for the deletes most polling-based sync misses
  • Native log capture: PostgreSQL generally available, SQL Server, MySQL, MariaDB, and more as Experimental
  • Schema-drift detection that flags added and removed columns before they break a downstream mapping
  • Data assertions on each batch: row-count bounds, required fields, numeric ranges, and conditions that stop the run or route an error record before a bad or destructive change is written
  • Runs on the schedule you set, from every minute upward
  • Two-way alignment by running a flow in each direction, not just one-way replication into a warehouse
  • Conflict handling for two-way alignment: newest version wins, route to a person, or a per-field source of truth
  • Every sync run recorded step by step; a failed run can be replayed from the step that broke
  • Runs on On-Prem Workers when the source database cannot leave your network

Worked example

A real sync teams run every few minutes, with the actual step-level detail.

Salesforce and NetSuite customers kept aligned, deletes included

Account changes in Salesforce flow to NetSuite every 5 minutes. A deleted or merged account in Salesforce is detected and deactivated in NetSuite, instead of lingering as a stale record.

  1. Trigger: every 5 minutes a Poll for changes trigger reads the watched Salesforce Accounts, with a change detection key on Id.
  2. Classify: each account arrives marked as an insert, an update, or a delete, compared with the fingerprints from the last poll.
  3. Upsert: inserted and updated accounts are upserted into NetSuite, keyed on the Salesforce ID stored as an external ID.
  4. Deactivate: for deleted or merged accounts, the matching customers are set to inactive in NetSuite, never hard-deleted, with a note linking the Salesforce record.
  5. Check: an Assert Data Quality step stops the run if more than a set share of customers would be deactivated at once, so a filter change cannot wipe the target.
  6. Flag drift: if the Salesforce fields change shape, the flow shows the added and removed fields so you can adjust the mapping.

Frequently asked questions

How is this different from log-based CDC?

Neblex does both. For databases it can read the change log directly: PostgreSQL logical replication, generally available, and SQL Server Change Data Capture, MySQL binlog, and others as Experimental. For everything else, including SaaS APIs that have no log, it uses a cursor field for new and changed rows, or a change detection key, which also catches deletes.

How is this different from bulk data processing?

Bulk data processing moves a finite batch: a migration, a backfill, a nightly load, a one-time bulk update. Data sync keeps running to keep two operational systems in agreement, and its hard problem is detecting what changed since the last run, especially deletes. Use bulk to move a pile of data once or on a schedule, use data sync to keep systems aligned after that.

What happens when a record is changed on both sides between syncs?

You decide it in the sync flow, and you can decide it per field. Sort by modified time and merge, so the newer version wins. Hand the conflict to a person as a task. Or map a field in one direction only, so one system is its source of truth. There is no single global conflict policy you have to accept.

Does this only sync into a data warehouse?

No. Data sync and change data capture is built for keeping operational systems aligned, CRM to ERP, ERP to a data table, one SaaS app to another, not just for feeding an analytics warehouse. Two-way alignment is a flow in each direction, with the conflict handling described above.

What happens when a source schema changes unexpectedly?

Schema-drift detection flags added and removed columns, so you can review and adjust the mapping. Pair it with an Assert Data Quality step that requires the fields you depend on, so a batch with a missing field stops instead of writing incomplete data.

How do we catch a bad sync before it writes?

An Assert Data Quality step checks every batch before it is written: row-count bounds, required fields, numeric ranges, and conditions you configure. A failed check stops the run with the violations named, or routes an error record to a branch that alerts or opens a review task, so a run that would delete or blank out an unexpected share of the target does not go through unnoticed.

Does every sync re-scan the whole table?

With a cursor field, no: each poll reads only rows changed since the last one. Delete detection with a change detection key reads the watched set on each poll and stores only a fingerprint per key. Native log capture reads only the changes, deletes included.

See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.