Data and analytics, move by move.
We've moved warehouses, rebuilt pipelines that ran on a scheduler nobody owned, and fixed dashboards that disagreed with finance. The reports kept running the whole time.
- Apache Airflow 2 to Airflow 3upgrade · delivered
- Databricks Hive metastore to Unity Catalogmigration · delivered
- Informatica PowerCenter to IDMC or dbtmigration · delivered
- Power BI Premium P SKUs to Microsoft Fabric F SKUsmigration · delivered
- Tableau to Power BImigration · delivered
- Teradata, Netezza or Hadoop to Snowflakemigration · delivered
Apache Airflow 2 to Airflow 3
Told without the client's name or anything that could identify them.
A retailer's data engineering team was still running self-managed Airflow 2 after its end of life on 22 April 2026. Custom operators opened SQLAlchemy sessions against the metadata database. Old DAGs still used SubDAGs and execution_date, and CI pipelines triggered runs through /api/v1. We got the cluster onto the latest 2.x release and ran Ruff's AIR rules, which turned the work into a list. Custom code moved onto the Airflow Python client with API tokens. DAGs then moved in batches to a parallel Airflow 3 environment. For each batch we paused the schedules on the old side and checked the catchup and cron timetable changes. Once the last batch checked out, the Airflow 2 environment was retired.
what the client got- The scheduler runs a supported Airflow 3 releaseWe got production DAGs onto Airflow 3. The api-server and dag-processor run as separate services, and they're defined as code with the auth and plugin configuration.
- Task code no longer touches the metadata databaseWe moved custom operators and callbacks onto the Airflow Python client with API tokens, as Airflow 3 requires. None of them opens a SQLAlchemy session any more.
- No job ran twice or got skipped at cut-overWe checked every batch against the catchup_by_default change and the new CronTriggerTimetable default. Once a batch was live on 3, its Airflow 2 schedules got paused.
All 6 in data and analytics
Read any of them and you get the story, the before-and-after architecture, the plan phase by phase and the results.
Apache Airflow 2 to Airflow 3
Upgrading self-managed Apache Airflow 2, now past end of life, to Airflow 3, and fixing removed features, auth and scheduling changes before DAGs move.
read the case studyDatabricks Hive metastore to Unity Catalog
We move Databricks workspaces off the Hive metastore, DBFS mounts and table ACLs and onto Unity Catalog, ahead of new workspaces dropping legacy features.
read the case studyInformatica PowerCenter to IDMC or dbt
Moving PowerCenter mappings and workflows to Informatica IDMC Cloud Data Integration or to dbt on the warehouse, decided mapping by mapping.
read the case studyPower BI Premium P SKUs to Microsoft Fabric F SKUs
Moving Power BI Premium per-capacity P SKUs to Microsoft Fabric F SKUs before the agreement ends, sized from real load and reassigned in validated batches.
read the case studyTableau to Power BI
Moving Tableau workbooks to Power BI semantic models, scoped by what people open, with row-level security and numbers that match before anyone switches.
read the case studyTeradata, Netezza or Hadoop to Snowflake
Moving a Teradata, Netezza or Hadoop warehouse to Snowflake, with converted code, reconciled data and a cost model that holds up after cut-over.
read the case studyRisks that keep coming up
One risk from each of these moves, and the case study that shows how we handled it when it hit.
-
Silent schedule changes ↗
catchup_by_default is now False, and bare cron strings now use CronTriggerTimetable unless create_cron_data_intervals is set. DAGs that depend on data_interval values can run with different dates.
-
UCX is a Labs project ↗
UCX comes from Databricks Labs without formal support or SLAs. It does most of the inventory and table work well, but plans can't assume it covers everything.
-
Logic with no SQL equivalent ↗
Java transformations, stored procedure calls, dynamic lookup caches and update strategies with complex conditions need redesigning if they move to dbt. A line-by-line translation won't work.
-
Undersizing below F64 ↗
A smaller F SKU looks cheaper until every Free-license viewer needs a Pro licence. Viewer counts go into the sizing decision from the start.
-
LOD and table calculations ↗
Tableau's FIXED, INCLUDE and EXCLUDE expressions and table calculations have no one-to-one DAX form. Naive translation gives numbers that are close but wrong.
-
Quiet semantic differences ↗
Teradata compares strings case-insensitively by default and SET tables silently drop duplicate rows. Snowflake does neither. Converted SQL can run cleanly and still return different numbers.
Platforms and services across these moves
Ordered by how often they appear in this area's case studies.
01Is staying on Airflow 2 a real risk?
For a self-managed install, yes. Airflow 2 reached end of life on 22 April 2026, so security fixes have stopped. Managed services set their own dates, which we check for your provider.
02Can we keep some tables in the Hive metastore for now?
Yes. Hive metastore federation lets Unity Catalog govern tables still in Hive while you finish. It's a bridge, so don't plan to live on it.
03Is PowerCenter going out of support?
It depends on your version. Informatica publishes end-of-support dates per version in its support portal. We look yours up before setting the timeline.
04Do Pro or Premium Per User licences change?
No. Pro, PPU and embedded EM and A SKUs aren't part of this retirement. Only per-capacity P SKUs are.
05Do we need Fabric capacity, or is Power BI Pro enough?
Usually it comes down to viewer count and data size. Pro works per user. On F64 or larger, someone with a Free license can read content in those workspaces. For a large audience that changes the math.
More case studies by area
The same approach, applied to other parts of the estate.
729e65d5 - 01Apache Airflow: Supported versionsairflow.apache.org ↗
- 02Apache Airflow: Upgrading to Airflow 3airflow.apache.org ↗
- 03Microsoft Learn: Migrate your account to UC-only workspaces (Azure Databricks)learn.microsoft.com ↗
- 04Databricks docs: Use the UCX utilities to upgrade your workspace to Unity Catalogdocs.databricks.com ↗
- 05Databricks: AI governance with Unity AI Gatewaydatabricks.com ↗
- 06Databricks: What's new with Unity Catalog at Data + AI Summit 2026databricks.com ↗
- 07Salesforce: Salesforce completes acquisition of Informatica (18 Nov 2025)salesforce.com ↗
- 08Informatica: PowerCenter to Cloud Modernizationinformatica.com ↗
Facing one of these moves?
Tell us what you're on now and where you need to be. We'll come back with how we'd run the move.
- The platform and the version you're on
- Where you need to get to, and by when
- What's custom: rules, plugins, integrations
- Any audit finding or deadline driving it