← All work

MULTINATIONAL CONSUMER ELECTRONICS · INTEGRATION

An ERP–CRM integration backbone that retired a commercial ETL platform

Salesforce, SAP and SQL made to agree with each other — ~700 000 rows in under 90 seconds, ~80 scheduled automations, and one ETL licence no longer needed.

AT A GLANCE

~700 000
rows imported in under 90 s
~80
scheduled automations in production
hourly
incremental sync, multi-million-row objects
1
commercial ETL platform retired

The situation

Three systems held three versions of the truth. Customer and opportunity data lived in Salesforce. Finance, logistics and master data lived in SAP. Reporting and a decade of operational history lived in SQL. Each was correct on its own terms and none of them agreed.

Between them sat a commercial ETL platform, licensed per connector. It worked, in the sense that data moved. But every new field, every changed mapping and every new job went through the vendor's own tooling and, when it broke, the vendor's own support queue. The cost was not only the licence — it was that the company could not change its own data flows on its own schedule.

What was built

An integration backbone the company owns outright: a set of jobs, mappings and schedules living in its own codebase, running on its own infrastructure, with its own logs.

  • A bulk loader for full refreshes — the path that moves ~700 000 rows in under 90 seconds.
  • Hourly incremental sync across objects with millions of rows, so the systems are never more than an hour apart.
  • Around 80 scheduled automations: master-data pushes, currency and price feeds, order and billing extracts, reconciliation jobs.
  • Failure handling that retries transient errors, quarantines bad records instead of aborting the batch, and reports what it quarantined.
  • An audit log of every run: what moved, how long it took, what failed, and what was left behind.

Why the speed matters

Under-90-second full loads are not a benchmark for its own sake. They are what makes a full refresh a routine operation rather than an overnight event. When a mapping changes or a batch is found to be wrong, the fix is to correct it and reload — during the working day, without a maintenance window and without a conversation about whether it is worth the disruption.

What changed

The ETL licence stopped being necessary. More importantly, the integration stopped being a black box: a change to a mapping is now a change to code, reviewed and deployed by the team that understands the business rule, rather than a ticket in someone else's backlog.

The systems and the numbers are real. The client is withheld here by default.

STACK

SalesforceSAPMS SQLLaravelscheduled workersqueue + retry
NEXT CASEA sales forecasting engine that replaced a chain of emailed spreadsheets →