A second deliverable
Migration Assurance
We compare a data estate before and after a migration, asset by asset. We report what still does the same thing, what changed, what broke and what could not be checked. We don't need access to your data. Whether you send any is your choice.
How it works
We read the same artefacts a Technical Review reads, from both estates: dbt manifests, LookML, SQL, Power BI and Tableau models, orchestration files and OpenLineage exports. Each old asset is matched to its counterpart by name, by table, by fingerprint, or from a mapping you confirm.
Each asset gets one verdict: equivalent, immaterial difference, material difference, broken, or could not establish. Could not establish is never counted as a match. A change is carried to everything downstream of it, so a dashboard built on a changed model is flagged too.
The data, on your terms
Equivalent definitions do not prove equal data. Comparing the data is optional, and each of the three routes produces a complete report.
- Nothing. The report compares definitions and states that the data was not compared.
- Verdicts only. You run a read-only script we publish, in your own console. Your browser reads the result, and only one verdict per table pair is sent.
- The figures. The script's counts and relative changes, as counts or as proportions. The report shows them beside each verdict.
What the data check compares
Row counts, null counts, keys found in one table but not the other, duplicated keys, and the relative change in a column's total. If you opt in, row counts per month on one date column.
A difference of up to 0.010% counts as within threshold. You can set your own, and the report then says the threshold is yours. The script never returns a value from a row, a key, or a total itself.
Security and data handling
We do not connect to your warehouse to run the script: you run it, and you can read every statement first. Tables and columns appear in its output only as numbered references.
Whatever you choose to send is checked against a fixed format and refused whole if it carries anything else. Figures you send are stored encrypted with your report and deleted with it on request.
Limitations
We compare definitions and, if you send them, aggregate figures. We do not check individual rows. Two tables with the same counts and totals can still differ in a column nobody asked us to compare.
Between two different warehouses, keys cannot be matched, so those table pairs are at best could not establish. Terraform and other platform configuration are not compared. Each could-not-establish verdict says what was missing.
Pricing
£3,500 for one migration: the old and new estate, up to about 200 assets and 50 table pairs in the data check. That covers the comparison, the data check on whichever route you choose, a person reviewing every verdict, the report and a readout.
£750 for each re-run before cutover, once your team has fixed what the report found. The price is the same whether you send nothing, verdicts or figures. A larger estate is scoped and priced before any work starts.
Frequently asked questions
Do we have to send any data?
No. A report that compares definitions only is complete, and it states that the data was not compared. Sending verdicts or figures is your choice, made after you have seen the result in your own browser.
Which warehouses does the script support?
Snowflake, BigQuery, Databricks and Redshift. For a migration between two of them, you run one script in each, and your browser combines the two results.
What does could not establish mean?
The artefacts cannot show either way, so we do not count the asset as a match. Each one says what is missing.