Course 1.11 · Curriculum 2026.1
Data migration and three-way reconciliation
Retire a system without importing its errors. Taught from a real migration of 16 archive objects and roughly 50,000 records, where a reported lifetime total turned out to carry phantom data from the source system.
- Estimated effort
- 6 hr
- Lessons
- 50
- Modules
- 8
- Material
- 6 hr
Estimated effort is the sum of the lesson and lab times in this version of the course. It is not video runtime, which is lower.
Canadian dollars. One learner, lifetime access to this course version. Tax extra.
1 lesson free to preview
This course does not issue a certificate on its own. It counts toward the paths listed below, and those do.
01What you will learn
8 capabilities, stated as things you can do
Each one is what you should be able to do at the end, not what the course covers. If an outcome is not testable, it is not an outcome.
- Plan a migration in load order, so every child finds its parent on the first pass.
- Key every record on an external id, so a re-run updates rather than duplicates.
- Reconcile a loaded total against its source and itemise the residue instead of hiding it.
- Find phantom data by reconciling a headline figure against its own line items.
- Run a three-way reconciliation across the old system, the new one and the accounting ledger.
- Report a keying rate honestly, naming what did not key and what it is worth.
- Decide what not to migrate, and say where the archive lives instead.
- Cut over without a window where two systems are both authoritative.
02Curriculum
8 modules, 50 lessons
Every lesson shows its length and its type. A SCORM lesson looks like any other lesson, which is the point of ingesting packages rather than linking out to them.
8 modules · 50 lessons · 6 hr of material
A migration has exactly one load order that works: every child finds its parent on the first pass. Map it before writing a loader.
- VideoLoad order: why every child has to find its parent on the first passPreview6 min
- VideoMapping sixteen archive objects before writing a single loader7 min
- ReadingWhat to migrate, what to archive, and what to leave behind6 min
- VideoDependency graphs, and the load order they force7 min
- VideoStaging tables, and why the target org is not the place to debug a mapping6 min
- LabLab: sequence a twelve-object load order from a dependency map6 min
The same external-id discipline as course 1.9, now under the load volumes a real retirement produces.
- VideoKeying every record on an external id before the first load7 min
- VideoUpsert at scale, and the re-run that costs nothing6 min
- ReadingComposite keys, and the record that needed more than one field to be unique7 min
- VideoA synthetic external id, and the hand-entered rows it had to skip6 min
- VideoIdempotency as a test, not an assumption7 min
- LabLab: run the same load twice and prove nothing duplicated6 min
The load itself: sixteen archive objects, roughly fifty thousand records, and the batch discipline that kept every run stable.
- VideoSixteen archive objects, fully populated, zero failures: the load itselfCompleted orders, purchase orders, invoices, inventory, stock movements and more, all sixteen objects loaded with zero failures.6 min
- VideoRoughly fifty thousand records, and the batch size that kept every run stable7 min
- ReadingError handling that stops a batch instead of half-loading it6 min
- VideoValidating a completed load against its own row counts7 min
- LabLab: load a multi-object archive and verify zero failures6 min
- VideoWhat zero failures does and does not prove7 min
The same forensic pass as course 1.6, this time as a migration decision: what a retiring system hands you is not automatically true.
- VideoA reported lifetime invoicing total, and the number that did not sit right6 min
- VideoTwo mistake invoices, inherited from the source systemTwo mistake invoices and their phantom parent order, all inherited bad data from the retiring system, inflated the reported figure by most of its value.6 min
- ReadingIsolating a phantom parent order without touching a live one7 min
- VideoThe corrected figure, pre-tax across 2,860 invoices6 min
- LabLab: find a phantom-data pair in a seeded migration dataset7 min
- VideoProving no live order was ever polluted6 min
4,506 transactions from 2010 to 2026, reconciled across the old system, the new one and the accounting ledger. 97% keyed, and the residue itemised.
- VideoReconciling across the old system, the new one and the accounting ledger7 min
- Video4,506 transactions from 2010 to 2026, and the span that made this hard6 min
- Reading97 percent keyed: what a keying rate actually measures6 min
- VideoThe the residue residue, itemised for the controller instead of hidden7 min
- VideoMatching on amount and date when no shared key exists6 min
- LabLab: run a three-way reconciliation on a seeded three-system dataset7 min
- VideoReporting a keying rate honestly when it is not 100 percent6 min
A total is a claim. A per-order file that either agrees or explains why not is the evidence behind the claim.
- VideoBuilding a per-order file that either agrees or explains why not7 min
- Video141 of 141: what it took to get every order to a stated outcome6 min
- ReadingAn explained mismatch versus an unexplained one, and why the label matters7 min
- VideoRounding, timing and currency: the three reasons a match looks like a mismatch6 min
- LabLab: build a per-order reconciliation file and clear every exception7 min
- VideoHanding the per-order file to the controller, not just the total6 min
Not everything in a retiring system deserves a place in the new one. Deciding what to leave behind is a migration decision, not a shortcut.
- VideoDeciding what not to migrate, and saying so in writing6 min
- VideoArchiving in place instead of carrying dead data into a live org7 min
- ReadingWhere the archive lives, and how someone finds it in five years6 min
- VideoThe record that looked live but had not moved in six years6 min
- LabLab: sort a dataset into migrate, archive and discard, with reasons7 min
- VideoThe cost of migrating something nobody will ever query again6 min
The moment two systems stop being simultaneously authoritative. Plan the rollback before the cutover, not during it.
- VideoCutover without a window where two systems are both authoritative7 min
- VideoA cutover checklist: what freezes, what switches, and in what order6 min
- ReadingThe rollback plan for a cutover, written before the cutover, not during it7 min
- VideoReconciling one more time immediately after cutover, not a week later6 min
- LabLab: write a cutover plan for a two-system retirementThe capstone lab for the course. Plan a cutover including the freeze window, the rollback trigger and the immediate post-cutover reconciliation.38 min
- VideoTelling the business the migration is done, and what that claim covers6 min
- QuizCheck: data migration and reconciliation14 min
03Before you start
What you need first
Assumed knowledge and setup
- Course 1.6. External ids, upserts and duplicate rules are assumed knowledge.
- A Developer Edition org, a data loading client, and a spreadsheet tool.
- The reconciliation labs run on a supplied three-system dataset. No client data is used.
Courses that come first
Part of these paths
- Salesforce AdministratorShareCo Certified Administrator
- The Full StackShareCo Certified Platform Engineer
04Who teaches it
Elliot Saha
Co-founder, Chief Technology Officer
Platform architecture, custom Apex and Lightning Web Components, AI systems, and the Academy platform itself.
05Reviews
No learner reviews yet
This course has not been taken by enough people to publish an honest rating, and we will not print invented quotes on a page that sells verification discipline. Here is what we can evidence instead.
- Assessment
- Lesson checks onlyThis course carries lesson checks. The certificate is issued by the path assessment, not by this course.
- Curriculum version
- 2026.1You enrol into a version. Content changes do not move you mid-course, and your required-lesson count is snapshotted at enrollment.
- Refunds
- 14 daysFull refund within 14 days if you have completed under a quarter of the required lessons. Stated here rather than in a footer.
Start 1.11
Enrol as an individual, or buy seats and assign this course to your team. Progress is reported per lesson, per module and per path.
- 6 hr estimated effort, labs included
- Lifetime access to the version you enrol in
- A ShareCo certificate is not a Salesforce certification