Case study ยท Data platform

Full ETL platform migration into the client's own Azure tenant.

United Land Services' data platform had grown up in a consultant-owned subscription. We rebuilt it inside their own tenant, seeded the history exactly, and cut the schedules over with no gap in reporting.

United Land ServicesLandscaping servicesAzure Data FactoryAzure SQLManaged identityPower BI
42pipelines, 95 datasets and 15 linked services replicated
37warehouse tables seeded with an exact-match validation
0reporting downtime during the trigger cutover

The challenge

Five source systems (Aspire, Acumatica, Fleetio, HubSpot and Ramp) fed a 37-table analytics database and a 29-page Power BI report used across the company's branches. All of it ran in a subscription the client did not own, with a legacy Postgres database and a self-hosted integration runtime still in the mix. The client wanted ownership, cleaner security and nothing lost along the way.

What we built

  • A full factory replica deployed from an ARM template into the client's Data Factory: every linked service, dataset, pipeline and trigger, then secrets re-entered by hand since Git never persists them.
  • Managed-identity security: the factory authenticates to the new Azure SQL database as itself through Entra ID. No SQL passwords in linked services.
  • Retired legacy pieces: the Postgres source, the self-hosted runtime and the pipelines that only existed to serve them.
  • A one-time historic seed from old to new for every windowed and incremental table, validated row for row before the incremental loads took over. Two transient issues found during validation were fixed with retries and a rerun.
  • Power BI re-pointed live: 26 SQL-sourced tables switched to the new server, refreshed clean and published, with the SharePoint and Excel sources left untouched.

What changed

The old triggers were stopped and the new ones started on the same day. The client now owns the factory, the database and the report, authenticates without stored passwords, and has a runbook plus a summary document describing every object that moved. The old environment is retained only as a rollback until final sign-off.