Solutions Replication and synchronisation

Copies with a purpose.

Bulk and change-data replication from your systems of record into reporting databases, partner feeds, planning engines and lakehouses — insert, upsert, truncate-and-load or partition swap, on the schedule you set, with counts reconciled every run and every copy accounted for in the catalog.

Deletes applied, late rows replayed, schema changes caught before they break a target.
SYSTEM OF RECORDSAP S/4HANAorders · deliveries · stockLIMA BACKBONEBulk or change data5 trigger modesInsert · upsert · partitiondeletes handledCounts reconciledevery runCOPIES WITH A PURPOSEReporting databasenightly · truncate and loadBULKPlanning enginenet-change before 06:00 MRPCDCPartner feed · 3PLhourly · scoped by access policyCDCLakehouseminutes behind · upsertCDCEVERY COPY IN THE CATALOG · FRESHNESS · SUBSCRIBERS · DEPRECATION WITH NOTICE · COST ATTRIBUTED
One source, several copies, a mode for each. The catalog knows every copy, how fresh it is, who subscribes to it and what it costs.
8.2M
change events a day captured from SAP
1m 48s
lag behind SAP for change-data copies
80 GB/day
moved in production on the engine
5
trigger modes: schedule, event, dependency, quality gate, external scheduler
product
4
load modes: insert, upsert, truncate-and-load, partition swap
product
Every run
counts reconciled between source and copy
product
Patterns

Four load patterns, one engine

Pick the pattern per target; the reconciliation is the same for all of them.

Truncate and loadwhole table replaced in oneswapOLD → ALL NEW, ATOMICREFERENCE TABLES, NIGHTLYIncremental appendrows since the watermark addedNEW ROWS APPENDED AFTER THE WATERMARKEVENT AND LOG TABLESUpsert by keynew rows inserted, changedrows updated, deleted rowskeptupdatedkeptdeletedinsertedMATCHED ON THE FULL KEYMASTER AND TRANSACTIONAL DATAPartition swapone period rebuilt beside thelive one, then swappedPERIOD 2024-03 SWAPPED INLARGE FACT TABLES BY PERIOD
PatternWhen it fitsHow Lima runs itWhat is checked
Truncate and loadReference and master tables refreshed nightly; small enough to reload wholeFull read, atomic swap into the target so readers never see a half-loaded tableRow count and control totals against the source
Incremental appendEvent and log tables that only growRows since the last watermark appended; late arrivals replayedCount of new rows; watermark advanced only after the check
Upsert by keyMaster and transactional data that changes in placeInserts and updates merged on the business key; deletes applied from the change logCounts, plus a sample of keys compared both ways
Partition swapLarge fact tables organised by period or plantA partition rebuilt beside the live one and swapped inPartition counts and totals against the source period
Change-data streamCopies that must stay minutes behindInserts, updates and deletes captured continuously; ordered replay after any pauseEvent counts per interval; lag shown on the dashboard
Triggers

Five ways a run starts

On a schedule

Cron-style, with run windows and deadlines attached, so a late run is visible before it matters.

On an event

A webhook from the warehouse system, a file arriving, a message on a queue.

On a dependency

When the upstream copy finishes and reconciles, the downstream one starts.

On a quality gate

A gate that fails pauses the run and its deadline clock; the run resumes from its checkpoint once the fix lands.

From your enterprise scheduler

Existing job schedulers trigger Lima pipelines and receive their status, so the operations team keeps one calendar.

Where copies go

Reporting, planning, partners, lakehouse

Reporting databases

SQL Server, PostgreSQL, Oracle and warehouses refreshed for dashboards and finance reports, with counts proved each run.

Planning engines

Net-change copies before the MRP run and the weekly S&OP cut-off.

Planning integration →

Partner feeds

3PLs, suppliers and customers receive scoped extracts through SFTP or API, with the access policy applied to every row before it leaves.

Lakehouses

Snowflake, Databricks, Fabric and S3 kept minutes behind the source.

Lakehouse migration →

Master data synchronisation

Golden-record corrections written back to the systems that hold them, each write acknowledged.

The hard cases

Deletes, late arrivals and schema changes

Deletes reach the copy

Deleted rows are captured from the change log or a full compare and applied to every target that holds them, so reports stop counting cancelled orders.

product
Late rows are replayed

A row that arrives after its window is picked up from the watermark and applied in order, with the counts corrected.

product
Schema changes are caught first

A new column, a changed type or a dropped field is detected before the load and routed as an exception to the pipeline owner; targets are never broken silently.

product
A pause keeps its place

A paused run resumes from its checkpoint and replays events in order; the deadline clock pauses with it.

showcase estate · 841K events replayed, no manual restart
Every copy accounted for

The catalog knows what you replicated

Each copy is a catalogued asset with its freshness, subscribers and cost. When a copy is retired, its subscribers get notice and a migration path; when it changes, they see the lineage.

Freshness and subscribers

Each copy shows when it was last reconciled and who reads it; 84 subscribers were notified automatically during the showcase incident.

Deprecation with notice

A field rename on a data product gave 32 consumers 14 days' notice and migrated them with zero breakage (showcase estate).

Cost attributed

Compute per copy and per team is visible in the product, so a copy nobody reads is easy to find and retire.

Lifecycle

Replication is extraction and loading on a trigger, reconciled every run.

One engine underneath every page in this family. It reads from any source and writes to any target, runs batch loads or change-data streams, handles a nightly delta or a multi-terabyte migration, and is licensed by capacity, so the bill stays the same however many rows move. Lima's fabric answers questions on data in place; Lima Backbone moves, transforms and returns data on a deadline. When to federate and when to pipeline · The Backbone hub.

Terms on this page

Plain definitions

Bulk replicationCopying a whole table or partition at once, on a schedule.
Change-data capture (CDC)Continuously reading the rows that were inserted, updated or deleted, and applying them to the copy.
UpsertInsert the row if its key is new; update it if the key already exists.
Partition swapRebuilding one slice of a large table beside the live one, then swapping it in atomically.
WatermarkThe last change position processed; the next run starts from it.
SubscriberA person, dashboard, agent or system that reads a copy and is notified when it changes.
Questions we hear

Asked before the first load.

How fresh can a copy be?

Change-data copies ran 1 minute 48 seconds behind SAP in the showcase estate, with 8.2 million events a day. Bulk copies run on the schedule and window you set.

Can a partner receive only the rows they are allowed to see?

Yes. The access policy that filters a user's query filters a partner feed the same way, row by row and column by column, before the file or API response leaves.

What happens when a target is unavailable?

The run pauses, keeps its checkpoint and its place in the change stream, and resumes when the target is back. Nothing is skipped and nothing is loaded twice.

Do we need a separate tool for change-data capture on SAP?

No. Change-data capture from timestamps, change pointers and triggers is part of the platform; it uses interfaces SAP keeps open and needs no additional SAP licence.

How do copies stay consistent with each other?

Dependency triggers start a downstream copy only after the upstream one has reconciled, and the lineage shows which copy fed which.

Can our existing scheduler run these?

Yes. Enterprise schedulers trigger Lima pipelines and receive their status; Lima's DAGs are standard Apache Airflow DAGs.

Set up a first replication

One source, one target, one pattern, reconciled every run — live in a week, then extend to the rest.