Legacy Training Data Migration
Bringing Jackie's existing "MANDATORY Training – ALL STAFF (Cadets)" SharePoint list (CdtsTrainingMatrix) into Training Tracker — 81 people, 13 courses, ~896 training records, plus certificate attachments — without hand-typing any of it. This is a multi-package build: each package is a small, independently-testable Power Automate flow you import as a .zip, not one giant flow.
Why packages instead of one big flow: this touches real people's real training records. Each package below does one job, can be tested on its own, and nothing writes real data until you explicitly run the write-capable package with dry run off. If a package fails to import or misbehaves, the blast radius is just that one package.
Both packages now run on Jackie's side, not yours. Her list lives on her own personal SharePoint subsite, which she can share item-by-item but not at the site level — so your account can never get API access to it, no matter how the flow is built. The fix: Jackie imports and runs these flows herself, using her own SharePoint connection, which already has full native access to her own list. You just need to grant her Contribute access to
TT Personnel, TT TrainingRecords, and TT Certificates_LTD on your own site (your call, no IT ticket needed) so her flow can write into them. She does exactly what you've already done five times: import the zip, click Test, done — no configuration on her end.
Where This Stands
| Package | What it does | Runs on | Status |
|---|---|---|---|
| 1 — Discover Source Fields | Read-only. Asks SharePoint for the real internal column names on CdtsTrainingMatrix, since the migration flow needs to query those columns directly and a CSV export only shows the display names. Writes the result as a plain text file into Jackie's own Documents library — no flow-run digging required. | Jackie's Power Automate | Ready to run — download below. |
| 2 — Migrate Legacy Training | The real migration: backfills StaffType on 77 people, creates the 6 missing TT Personnel rows, creates/updates ~896 TT TrainingRecords rows, and routes attachments into TT Certificates_LTD. Has a dry-run mode — reports counts without writing anything until re-run with it off. | Jackie's Power Automate | Waiting on Package 1's output, and on Jackie having Contribute access to the TT lists. |
Already Decided (so nothing here is guessed)
- Name matching: 74 of 81 people matched automatically against
TT Personnel.Title(48 exact, 26 after normalising rank/role suffixes like "CON" vs "Con" or "C1"/"C2"). The remaining 7: your own record ("Allan Hamilton") merges with the "Hamilton, Allan (RC-Cdts-IX-SO3)" row; the other 6 (Burns, Grant, Gray, Thompson, Thomson, Wall) get created fresh with the real emails you supplied. - Course matching: 12 of 14 columns map one-to-one onto existing
TT Courses. "Civil Service Expectations" resolves per person byStaffType(Civil Servant → plain version, Army → the "LMs Only" version). "Active Bystander" legacy data goes into Active Bystander V2 (the older duplicate course gets archived separately, not part of this flow). "Safeguarding (Job specific)" is excluded from this migration entirely — no matching course exists and it's being deferred, not built as a one-off hack. - StaffType backfill: 77 of 81
TT Personnelrows have noStaffTypeset at all, which affects compliance math app-wide, not just this migration. Jackie'sEmpStatuscolumn backfills it: Civil Servant→Civil Servant, Regular/FTRS→Army, ACCT UK Emp/Aspire/Ext Con→Contractor. - Attachments: named well enough for keyword matching (confirmed from a live screenshot of the source list), but not guaranteed. Anything below a confidence threshold gets logged for manual review instead of guessed.
Package 1 — Discover Source Fields
Read-only. Runs one SharePoint query (/_api/web/lists/getbytitle('CdtsTrainingMatrix')/fields) and drops the answer straight into Jackie's own Documents library as a plain text file — nothing to dig through in flow run history, and it doesn't touch the Training Tracker lists at all.
Download
TT_Discover_Source_Fields.zip — import package, ~3KB.
Steps (for Jackie)
- Send Jackie the zip above (email, Teams, however's easiest).
- She goes to Power Automate → My flows → Import → Import Package (Legacy) → uploads the zip.
- It lists one dependency: a SharePoint connection. It should already show her account — if it says "Select during import," she picks her own SharePoint login. Click Import.
- Once imported, open TT - Discover Source List Fields from My flows.
- Click Test (top right) → Manually → Test again to confirm. It takes no inputs, so it runs immediately.
- Go to her site's Documents library (the same landing page the training list lives on) and look for a new file called
TT_Field_Names_Output.txt. - She sends you that one file — that's it, no flow UI, no copying JSON.
- You drop it in the homepage upload box and let me know.
What happens next: once I have the real internal column names, Package 2 gets built against them specifically (not guessed), and this page gets updated with its download link and steps the same way.
← Back to the main Training Tracker guide