Process the combined Fortress AVF PDF entirely in your browser. Outputs a zip with /AVF, /Limitations, /Cards, /CodeOfConduct, and a tracking spreadsheet ready for the Power Automate emailer.
Nothing is uploaded — no cadet information leaves this device.
Fortress → Reports and Forms → Annual Validation Form
Filter By: Everyone
One PDF with every cadet in it, not one per cadet.
Fortress → Reports and Forms → Cadet Medical Information Summary
Select All • Print Only Cadets Having Limitations: Yes
One PDF with every cadet in it.
Fortress → Reports and Forms → Cadet Information Card
Select All → Preview → Export as PDF
One PDF with every cadet in it.
Supplies every cadet's CIN and their Cadet365 address, neither of which is on the AVF. Without the CIN an AVF can only be matched to a limitations sheet by name, which fails whenever a cadet's preferred name differs from their official one.
Optional. Names each cadet's Code of Conduct and sets the language to fall back to. Also fills in the emailer below.
Sets the expected number format. A card valid in another province is not flagged.
Health cards expiring on or before 31 August of that year are flagged.
Each report is needed in at least one language. Give both and every cadet gets the version they read.
The spreadsheet in your download is ready for Power Automate: it already contains a table named ToValidate, so there is no CSV to convert. Tell us your unit and we will build the flow with your details already in it — it emails each cadet their own forms from your unit's group inbox, then records who has been sent one.
Where the files live
The folder is the one holding the AVF, Limitations, Cards and CodeOfConduct folders. Edit it if the link pointed somewhere else.
Building for the unit you picked above. Its group inbox and the organization names in your signature come from that record.
Optional. BCC'd on every email so you keep a record. Your signature shows the unit's group inbox, since that is where replies need to go.
Built to IMS 6001-1-4 from your unit's record. It goes at the end of the email text below — if the phone number on file is not the right one, delete that line there.
What the email says
Filled in from your unit — your signature, your region's medical contact and your parade night are already in it. Edit anything you like; each cadet is sent the version in the language they read.
Subject:
A sample cadet stands in for a real one. Shaded blocks go only to the cadets they apply to.
Subject:
A sample cadet stands in for a real one. Shaded blocks go only to the cadets they apply to.
{{ cadet_name }} and {{ flags }} fill themselves in per cadet. A section wrapped in {{#if card}} … {{/if}} is sent only to cadets it applies to.
Pick your unit to start.
Keep the download zipped. Power Automate imports the .zip itself, and extracting it first is the most common reason the import fails. Download a blank one if you would rather fill everything in yourself.
Two zips, two jobs.
annual-validation-forms.zip — the one from the
button above — is unzipped and uploaded to SharePoint.
…-AnnualValidationEmailer.zip — from
Build my flow — is never unzipped; Power
Automate imports it as it is.
Keep this page open in its own tab. Power Automate opens in another and you will
be going between them.
1. Upload the forms
Unzip annual-validation-forms.zip and upload the whole folder to your staff team in Teams or SharePoint — not your own OneDrive. Leave the folders inside it as they are. Then Copy link on that folder and paste it into the form above.
/Shared Documents/General/Annual Validations
2. Import the flow
Build my flow gives you the second zip. Change anything later and build again — the old zip keeps the old wording.
Power Automate → My flows → Import → Import Package (Legacy), and upload it.
You should now see three connections to set:
For each: Select during import → Create new → a new tab opens → create it → come back → Refresh list → pick it.
Create new for all three, even if you have connections already. Reusing one can import fine and then fail with Unauthorized when it runs.
Import is at the top of the page.
3. Point both Excel steps at your spreadsheet
Open the flow. If you can see the steps, you are already editing it — there is no Edit button to find. Click Expand all action groups in the left toolbar: the second Excel step is nested several levels deep.
In each one, clear what is already in the boxes, then choose:
| Location | your team site |
| Document Library | Documents |
| File | the folder you uploaded → annual-validations.xlsx |
| Table | ToValidate |
In Record that it was sent, picking the file clears the Sent At box. Put utcNow() back in it, as an expression. Leave the other boxes empty.
Miss it and emails go out, Sent At stays empty, and the next run emails everyone again.
4. Save, then turn it on
Save is at the top right. Then go back to the flow's own page and click Turn on.
A flow that has never been turned on cannot run, and the Run button does not say so.
5. Test with drafts first
Run is at the top right of the flow's page. The options only appear once you click it.
Choose Create drafts to review first and leave the test address blank. Nothing is sent: you get one draft per cadet in your own Outlook Drafts folder.
Open three of them:
Delete the drafts when you are happy. Then Run again and choose Send the emails now.
Your settings and wording are already in the flow. To change the wording, edit it above and build again, or edit the Build the English email / Build the French email steps directly.
If it misbehaves