02Planning & Architecture

Turn the mandate into a blueprint teams can build against.

This is the densest phase — where the field mapping, the wave plan, the migration architecture, the definition of "correct," the risk posture, and the adoption plan all get set. Get these right and the build is mechanical.

Scope baseline

What's in, and how it's broken down

Scope statement

In: ~1,200 objects and 250 rationalized reports across 8 functions; code conversion, data foundation, and reporting migration.
Out: retired reports, source systems, and net-new analytics.
Constraint: financial close windows are protected — no cutover during month-end.

Work breakdown (top level)

Mobilize → Discover → Design & Map → Build & Convert → Test & Reconcile → Cutover → Adopt → Decommission. Each decomposes per wave into work packages with an owner and an exit gate.

The load-bearing artifact

Source-to-target field mapping

The one document where the legacy schema, the new schema, and the business meaning are reconciled in a single row. Every cell closes a question — and each is a place the migration can go wrong.

Artifact · Field mappingexcerpt · Sales/Revenue domain
Source (SQL Server)Type · grainTransformationTarget (Snowflake)ValidationOwner
FactOpportunity.CloseAmt MONEY · per opp / snapshot MONEY→NUMBER(19,4); FX to USD on close date; null rejected, not defaulted FACT_OPPORTUNITY.CLOSE_AMOUNT_USD Sum + row-count reconcile; FK to DIM_ACCOUNT resolves Sales Finance SME
FactOpportunity.CloseDate DATETIME · per opp DATETIME→TIMESTAMP_NTZ; timezone normalized FACT_OPPORTUNITY.CLOSE_DATE Min/max date parity per period Sales Finance SME
DimAccount.AcctId IDENTITY · per account IDENTITY→sequence; surrogate key re-seeded & remapped DIM_ACCOUNT.ACCOUNT_KEY Distinct-count parity; no orphan facts Data Governance

The interactive version — where each cell explains what it carries and what the TPM owns — is a companion artifact: open the mapping deep-dive →

Consumer plan

Report inventory & disposition

Artifact · Dispositionper report
ReportConsumersDispositionRationale
Revenue by SegmentSales Finance, ExecRebuildHigh-value; re-model for Snowflake performance
Pipeline SnapshotSales OpsMigrateRe-point to new source; logic unchanged
Legacy Quota v3 (copy)— none in 12 moRetireDuplicate of active report; no recent access

Schedule baseline

Wave plan & timeline

Functions migrate in dependency order — shared dimensions before the facts that depend on them — so no wave is blocked waiting on another. Cutover sits inside each wave, never during a financial close.

Artifact · Wave roadmap~9 months
Workstream
M1
M2
M3
M4
M5
M6
M7
M8
M9
Mobilize + Discover
Foundations
Wave 1 · Shared dims
Build → Reconcile
Wave 2 · Finance
Finance
Wave 3 · Sales + Mktg
Sales · Mktg
Wave 4 · Ops + Supply
Ops · Supply
Wave 5 · Svcs/Qual/Comp
Remaining
Cutover + Hypercare
Go-live

Migration strategy

How the data actually moves

Bulk history load

Full historical load per wave into Snowflake, validated before the incremental feed is switched on.

Incremental / CDC dual-run

Both platforms run in parallel, reconciled daily, so the target is proven current before anyone depends on it.

Code conversion

T-SQL stored procs rewritten as Snowflake Scripting — the bulk of the engineering effort, sized as its own workstream.

Definition of correct

Reconciliation & validation strategy

"Migrated" isn't done; "reconciled" is done. Because Snowflake accepts but doesn't enforce PK/FK constraints, integrity checks move out of the schema and into the test suite.

Artifact · Reconciliation suiteper object, per wave
TestWhat it provesTolerance
Row-count parityNo rows dropped or duplicated in transit0
Sum / metric parityFinancial totals match — revenue to the penny0 on financials
Checksum / hashRow-level values identical, not just aggregates0
Referential integrityNo orphan facts — the check Snowflake won't do itself0 orphans
Report parityOld dashboard vs. new, same inputs, same outputvisual sign-off

Risk management

Risk register

Scored probability × impact, owned, and reviewed on cadence. These are the migration-specific risks that actually bite.

Artifact · Risk registerlive · reviewed weekly
#RiskSeverityMitigationOwner
R1Source data-quality gaps surface during loadHighData profiling in discovery; cleansing rules agreed before buildData Eng
R2Financial metric fails reconciliation post-loadHighZero-tolerance sum parity; grain stated on both sides of every rowTPM / SME
R3T-SQL code conversion underestimatedMediumConversion sized as its own workstream; accelerator evaluatedData Eng
R4SME availability during design & UATMediumNamed owners per domain in RACI; time booked in advanceTPM
R5Adoption resistance at go-liveMediumChange management from day one; champions network per functionChange Lead
R6Dual-run sync drift between platformsLowDaily reconciliation during dual-run; drift alertsData Eng

The third program

Change management plan

The amateur mistake is treating this as end-of-project training. It starts in mobilization and never stops — because ~4,500 people have to trust the new numbers, not just receive a login.

Artifact · Adoption planawareness → adoption
StageWhenActivityMeasured by
AwarenessMobilizeComms on the why; impact by functionReach
InvolvementDesign → UATSMEs in mapping and parity sign-off; champions recruitedSME participation
TrainingPre-cutoverRole-based training; office hours; quick-reference guidesCompletion %
AdoptionPost go-liveChampions support; usage nudges; feedback loopActive users vs. target

Rhythm of business

Governance cadence

Artifact · Governancecadence
ForumCadencePurpose
Steering committeeBi-weeklyHealth, escalations, gate approvals
Workstream standupDailyBlockers, dependencies, sprint progress
Risk / RAID reviewWeeklyScore changes, new issues, mitigations
Design authorityAs neededAmbiguous-field rulings, model decisions