Somebody raising a hand to ask a question at a training session
Power Platform

How to stop chasing CPD by hand

Somebody in your team exports a list, works out who's behind, mails a reminder, and does it again next month. It's an afternoon a month and it slips when they're busy. Here's how to build the flow that does it, and the one mistake that annoys your entire membership.

The reminder that keeps arriving after somebody has complied is the one they remember, and it is always the same bug.

Who this is for: standards, education and membership teams. What you'll need: Power Automate, and CPD records in Dataverse. How long: an afternoon, most of it deciding the schedule rather than building. What you'll have: reminders that go out on time, to the right people, and stop when they should.

Decide the schedule before you open Power Automate

The build is easy. The schedule is the bit that determines whether this changes behaviour or just adds to inbox volume.

One letter at the deadline doesn't work. By then anyone who's going to miss it has already missed it. What works is a sequence with enough runway to act on.

  • Ninety days out. Informational. Here's where you are, here's what's outstanding. Most people who are slightly behind fix it here.
  • Thirty days out. Specific. Not "you are behind" but "you need six more hours, four of them in your ethics category".
  • Seven days out. Short and direct, and this one goes to a genuinely small group by now.

Three messages that arrive when somebody can still act beats twelve that arrive regardless.

Get the at-risk list right first

Before building anything, work out how you identify somebody who is behind. Do it as a view or a query you can look at, and check it against people you know.

This is harder than it sounds in most professional bodies, for a reason worth naming: your CPD year probably doesn't run with your membership year. Cycles that are rolling, cohort-based, or anchored to each member's join date all mean "behind" is calculated per member rather than against one date.

If you can't currently ask your system "who is behind on CPD with two months to go", that gap is the actual project, not the reminders. A flow built on a list you don't trust sends confident emails to the wrong people.

Also settle the exemptions now. Members on a career break, retired fellows, people mid-appeal. Nothing damages trust faster than chasing somebody you already excused.

Step one: build the flow

  1. Go to make.powerautomate.com, choose Create, then Scheduled cloud flow.
  2. Name it something the next person will understand: CPD reminder 30 day. Build one flow per stage rather than one clever flow with branches; three simple flows are far easier to fix at eight in the morning.
  3. Set it to run daily. It checks every day and only finds people who hit the thirty-day mark that day, which spreads sending out naturally rather than dumping 400 emails on one morning.
  4. Add a List rows action against your CPD records, and filter it to your at-risk condition.
  5. Add Apply to each over the results, and inside it send the email.
  6. Save. Don't turn it on yet.

Step two: make the email say something useful

A reminder saying "you are behind on CPD" is a nag. A reminder saying what's outstanding is a to-do list, and people act on to-do lists.

Include the specifics you already hold: hours recorded, hours required, the breakdown by category if your scheme has one, the deadline date, and a direct link to where they record it. Not a link to the homepage, but a link to the recording screen.

Keep it short. Nobody reads paragraph three of a compliance email.

Put a real person's name and address in the reply-to. A member who reads this and thinks "but I did that course in March" needs somewhere to say so, and a no-reply address turns a two-minute fix into a complaint.

Leading a session in front of a room of professionals

Step three: the stop condition, which is the whole thing

Here is the bug everybody builds once: the sequence keeps running after somebody has complied.

It happens because the flow was built to send reminders on a schedule rather than to check the condition each time. Somebody records their hours the day after the ninety-day mail, then gets the thirty-day and seven-day chase anyway. They tell their branch. It undoes more goodwill than the reminders create.

The fix is structural, not a patch. Each flow re-evaluates who is behind at the moment it runs, rather than working from a list captured earlier. Because you filtered inside the flow rather than against a saved list, you get this for free, as long as you don't "improve" it later by generating the list once and reusing it.

  1. Confirm your filter runs at send time, not from a stored list.
  2. Record on the member's record that a reminder was sent and when, so you can answer "why did I get three of these" with a fact.
  3. Check the exemption condition is inside the filter, not applied afterwards.

Step four: test it on yourself, then on five people

Never point a new flow at your whole membership.

  1. Change the filter temporarily so it only matches your own record. Run it. Read the email that arrives as though you were a member. Is the tone right, do the numbers make sense, does the link work?
  2. Widen it to a handful of colleagues. Ask them to tell you anything that reads oddly.
  3. Check somebody who is exempt does not appear. This is the test people skip.
  4. Remove the temporary filter and turn it on properly.

Turn on failure notifications so a failed run emails you. Flows die silently. A connection expires, a field gets renamed, and the failure mode is that reminders quietly stop for two months and nobody notices until the deadline.

Measure it against completion, not opens

The tempting number is the open rate. It tells you nothing about whether anybody recorded any CPD.

The number that matters is how many members are compliant at the deadline compared with last cycle. That's the whole point of the exercise, and it's the number to take to your standards committee.

Worth watching too: how many are still behind at seven days. If that number stays large, your ninety and thirty day messages aren't landing and the problem is the content rather than the schedule.

Do this yourself, or have it done

Build it. It's a genuinely good first flow. It reads data and tells somebody something, which is exactly the kind of automation that's safe in your own hands. It doesn't decide anything, doesn't change a member's compliance state, and doesn't lapse anyone. Keep it that way and you can't do much harm.

Where we help is on either side of it. Underneath, if you can't reliably produce the at-risk list, because your CPD cycles don't run to the membership year, or carry-forward and exemptions are handled by hand. That's the real work and reminders sit on top of it. And above, when these three flows become how your organisation runs compliance, they want somewhere to be tested that isn't live, a record of what changed, and somebody who isn't you able to fix them in December. That's Maintain and Evolve. If somebody has already built a version of this, bring it. It's a working prototype and it already knows things about your scheme that no specification would capture.

See it on your own rules

An hour with your grades, your renewal cycle and your CPD scheme on the screen, run by someone who knows the platform and the sector.

Book a demo

More from Insights

Working with AI

How to get real analysis out of Dynamics 365 this afternoon

You don't need a data project to find out where your members are going. Export a view to Excel, point Copilot at it, and you can have a proper breakdown of lapse by grade before the end of the day, for the price of a licence you're probably already paying for.

August 2026 · 9 min read
Working with AI

How to have your members checked every Monday without asking

Once Claude can reach your membership data, you can put a standing instruction on it: every Monday, find the members drifting away and tell me who they are. Here's how to set that up, and how to stop it becoming another report nobody reads.

August 2026 · 10 min read
Working with AI

How to build an assistant that knows your own policies

"What did Council decide about that in 2023?" is a question somebody spends an afternoon on, usually by asking the person who was there. Point an agent at your own SharePoint and it answers in seconds, with the document attached.

July 2026 · 11 min read