On-Prem to Cloud Migration

Data Migration Testing: Reconciliation Evidence Packs That Pass Audit

Moving terabytes or petabytes of transactional and analytical data out of legacy data centers is rarely just an engineering challenge; it is an evidentiary one. During an enterprise on-prem to cloud m

Published 10/24/2026 · Izan Technologies

Want this built for your team?

Senior engineers, your cloud, your IP.

Moving terabytes or petabytes of transactional and analytical data out of legacy data centers is rarely just an engineering challenge; it is an evidentiary one. During an enterprise on-prem to cloud migration, the question that halts production cutovers is not "did the pipeline run?" but rather "can you prove that zero records were dropped, altered, or miscalculated?" Internal auditors, SOX compliance officers, and external regulators like FINRA or the SEC do not accept pipeline logs or simple row counts as proof of data integrity.

To survive strict compliance audits, data teams must move beyond ad-hoc validation scripts and construct formal Reconciliation Evidence Packs. These artifacts provide cryptographic, statistical, and structural proof that target tables in platforms like Snowflake, Databricks, AWS Redshift, or Azure Synapse match the legacy source systems precisely.

Here is how to design, execute, and package data migration testing into tamper-evident reconciliation packs that pass audit scrutiny on the first pass.


The Flaw in Traditional Data Migration Testing

Historically, migration testing has relied on rudimentary verification: checking row counts between the source database and the target warehouse, running a few SELECT COUNT(*) queries, and manually reviewing a sample of 100 rows in an Excel spreadsheet.

In regulated environments—such as banking, healthcare, and insurance—this approach collapses under audit for several reasons:

  • Symmetric Inaccuracies: A simple row count does not surface dropped rows that are accidentally masked by duplicate inserts caused by an idempotency failure in an ETL tool.
  • Silent Truncation: Converting legacy Oracle or SQL Server types (VARCHAR2, NUMBER(38,10)) to cloud types can cause silent character truncations or floating-point rounding errors that row counts will never flag.
  • Collation and Encoding Shifts: Moving from legacy Windows-1252 to UTF-8 can silently corrupt special characters, breaking foreign key relationships down the line.
  • Lack of Immutability: An ad-hoc text file or CSV export sitting on an engineer's laptop provides no chain of custody. Auditors cannot verify whether the test was run against staging, mock, or actual production cutover data.

Building an audit-grade evidence pack requires a structured framework that shifts migration testing from casual sanity checking to deterministic verification.


The Four Pillars of an Audit-Grade Reconciliation Evidence Pack

An evidence pack is an aggregated, tamper-evident bundle of test execution proofs, metadata snapshots, and statistical verifications generated at cutover. It must document four distinct dimensions of migration fidelity.

+---------------------------------------------------------------+
|             RECONCILIATION EVIDENCE PACK STRUCTURE            |
+---------------------------------------------------------------+
|  1. Structural & Schema Parity (DDL, Data Types, Constraints) |
|  2. Cryptographic Checksums (Row-Level Hashing via SHA-256)   |
|  3. Aggregate & Distribution Testing (Sums, Nulls, Quantiles)  |
|  4. Execution Lineage & Provenance (Timestamps, Orchestration)|
+---------------------------------------------------------------+

1. Structural and Schema Parity

Auditors must see that every target table structurally maps to the source system without unintended schema drift.

  • Column-by-column mapping reports: Documenting source data types against target definitions (e.g., mapping Oracle DATE to Databricks TIMESTAMP).
  • Nullability and constraint parity: Verifying that NOT NULL constraints and default values were preserved or deliberately transformed according to business-approved logic.
  • Collation and character set confirmations: Demonstrating zero character encoding conversion failures across non-ASCII characters.

2. Cryptographic Row-Level Hashing

To prove that individual data values have not changed without comparing petabytes of data across the network, teams rely on deterministically computed row hashes.

By running equivalent hashing logic on both the legacy on-prem database (e.g., using HASHBYTES('SHA2_256', ...) in SQL Server) and the cloud warehouse (e.g., SHA2(CONCAT_WS(...), 256) in Snowflake), you can generate a master table checksum or compare bucketed hash partitions:

-- Snowflake target verification example: 
-- Generate a deterministic hash across ordered key columns
SELECT 
    DATE_TRUNC('month', transaction_date) AS partition_key,
    COUNT(*) AS row_count,
    BITXOR_AGG(HASH(transaction_id, customer_id, amount_cents, status)) AS partition_checksum
FROM target_db.finance.transactions
GROUP BY 1
ORDER BY 1;

If the bitwise aggregated hash (BITXOR_AGG or equivalent sum of hashes) matches between on-prem and cloud across millions of records, you have mathematical proof of identical values.

3. Metric and Aggregate Distribution Testing

For massive datasets where computing row-level hashes is computationally prohibitive across historic partitions, statistical reconciliation is mandatory:

  • Summations: Matching total transactional value, tax calculations, and balance quantities to the exact cent.
  • Boundary and Distribution Metrics: Minimum, maximum, mean, median, standard deviation, and quartile boundaries (P25, P75, P95) for numerical fields.
  • Cardinality and Null Rates: Proving that the count of distinct values (COUNT(DISTINCT entity_id)) and the null percentage match the source system down to four decimal places.

4. Lineage, Execution Timestamps, and Immutability

Audit evidence must be tied to a distinct cutover window. An evidence pack must capture:

  • Source read watermarks (Log Sequence Numbers / LSNs or System Change Numbers / SCNs).
  • Pipeline execution run IDs (Airflow DAG run, Azure Data Factory run ID, or Databricks job run ID).
  • Cryptographic signature of the final evidence pack file stored in an immutable, write-once-read-many (WORM) storage layer (such as AWS S3 Object Lock or Azure Immutable Blob Storage).

Comparing Verification Approaches

The difference between basic validation and an audit-grade reconciliation pack is significant in terms of implementation and defensive posture:

DimensionBasic Engineering ValidationAudit-Grade Evidence Pack
Row Count VerificationSingle table COUNT(*) checkPartition-level row count + primary key boundary scans
Data Integrity CheckSpot-checking 50-100 random rowsBitwise SHA-256 partition hashing across 100% of rows
Numeric PrecisionBasic total column sumsStatistical drift, standard deviation, and quantile comparisons
Change Data Capture (CDC)Relying on pipeline UI status flagsSCN/LSN watermark reconciliation and zero-lag confirmation
Storage & SecurityDeveloper logs or CSV files in JiraSigned JSON/PDF artifacts stored in S3 Object Lock (WORM)
Audit ReadinessHigh risk of regulatory pushbackInstant pass for SOX, HIPAA, and Basel Committee standards

Operationalizing Migration Testing During Cutover

Executing data migration testing during a high-stakes cutover window requires an automated harness. Running manual queries while business stakeholders wait on a go/no-go decision leads to oversights.

At Izan Technologies, our migration architects implement automated testing harnesses built directly into the continuous integration and orchestration pipeline.

Step 1: Baseline Extraction and Freeze

Prior to starting the final sync, the validation harness executes source profiling queries on the on-prem cluster. It extracts schema metadata, partition counts, and statistical summaries into a standardized JSON schema. This baseline is permanently saved as the migration benchmark.

Step 2: The CDC Drain and Watermark Verification

Most enterprise migrations use Change Data Capture tools (such as Debezium, Qlik Replicate, or AWS DMS) to minimize downtime. The migration testing framework must verify that the CDC engine has completely drained the transaction log up to the cutover timestamp. The evidence pack records the final on-prem commit log position alongside the maximum commit timestamp loaded into Databricks or Snowflake.

Step 3: Automated Assertion Engine Execution

Once the pipeline halts ingestion, an orchestration engine triggers parallel assertion suites using frameworks like Great Expectations, Soda Core, or custom Snowpark/PySpark procedures. These assertions evaluate:

  • Referential integrity across foreign keys.
  • Business rule assertions (e.g., negative balances where prohibited).
  • Mathematical aggregate parity.

Step 4: Compiling the Evidence Artifact

The outputs from the baseline comparison, CDC reconciliation, and statistical assertions are compiled automatically into a versioned, machine-readable JSON bundle alongside a human-readable PDF executive summary. The artifact is cryptographically signed using an enterprise KMS key and archived to compliant cloud storage.


Mitigating Common Reconciliation Discrepancies

Even when an on-prem to cloud migration runs cleanly, certain technical factors can trigger false positives in your reconciliation reports:

  • Timestamp and Timezone Offsets: On-prem systems frequently store timestamps in local server time (e.g., EST) without timezone indicators, while platforms like Snowflake and Databricks default to UTC. Ensure your reconciliation queries normalize timestamps explicitly using CONVERT_TIMEZONE or UTC casting before running hashing or aggregate comparisons.
  • Trailing Whitespace and String Padding: Legacy databases like Oracle handle fixed-width CHAR(N) types by padding strings with spaces. Cloud data warehouses often strip trailing whitespace or convert strings to variable-length VARCHAR. Apply a uniform RTRIM() in your verification scripts to avoid widespread hash mismatches.
  • Floating-Point Imprecision: Never compare FLOAT or DOUBLE columns directly with equality checks (=). The IEEE 754 floating-point standard behaves differently across underlying hardware architectures. For validation packs, compare floating points within an acceptable epsilon delta (e.g., ABS(source - target) < 0.00001) or cast values to high-precision DECIMAL types.

How Izan Technologies Helps

Executing an enterprise on-prem to cloud migration without regulatory disruption requires deep architecture expertise across modern data platforms. Izan Technologies engineers custom data solutions on AWS, Azure, Databricks, and Snowflake, implementing rigorous migration testing frameworks that ensure your cutovers are fast, accurate, and completely defensible under regulatory audit.

Unlike traditional consultancies that deliver proprietary platforms, Izan Technologies builds solutions where our clients retain 100% ownership of all IP, code, and infrastructure we deliver. We leave your team with automated reconciliation frameworks that continue validating your pipelines long after cutover is complete.

Ready to de-risk your cloud migration strategy? Try our Smart AI DataStudio or talk to an expert to learn how we can build audit-proof data architectures for your enterprise.

Want this built for your team?

Senior engineers, your cloud, your IP.