CiviCRM for Professional Organizations and licensure

2022-11-25 13:21
Written by

Hi all,

I know... CiviCRM for Professional Organizations and licensure. What a thrill ride! Bear with me and hopefully this will be an interesting read.

I work in a bit of a CiviCRM niche, providing graphic design and web development services to professional organizations which are the regulatory bodies for their memberships. These are organizations for urban planners, architects, engineers, psychologists, etc. We've been working with some of these organizations for more than 20 years and virtually all of the professions that we've come across, that have memberships, that require accreditation and licensure have similar overlapping membership management needs.

Prior to adopting CiviCRM, we built ground-up custom coded systems to manage our client's needs or we built them within Drupal CMS extending Drupal's user management system. None of these solutions were as flexible and maintainable as using CiviCRM and although it wasn't designed specifically with these types of organizations in mind, we've been able to solve about 80% of our client's needs, straight out of the box with CiviCRM; for the remainder we've built extensions.

Specifically, I'd like to describe some of the extensions we've developed for the features our clients need and how these features integrate into their CiviCRM installations. My goal is to get feedback from members of the community who are also in this niche so that we can work together to standardize the extensions I've produced (or create entirely new ones) so that they can be used by others who may have the same needs.

Continuing Education (CE)

All of the organizations we work with have a requirement for their members to track and self report Continuing Education (CE). They all tend to name this requirement slightly differently but the the intent is the same; their members must keep up on their profession by working in the profession, attending sessions, talks and seminar or other courses. To this end we developed a CiviCRM extension to provide this ability. When logged in the member can click a CE tab in their user menu and enter credits and details for the relevant category and the year they choose. The admin users can go in and look at a yearly record which can export to Excel and they can review/edit any member necessary.

The data model we are using was modelled after a CE system we built more than 20 years ago so we could import old data and maintain it but that meant that the decisions we made were also aged. I would like to revisit it today and implement features that make sense now. For instance, instead of making it necessary for members to enter CE credits for events they attend, we should be able to query their contact record and pull the data from CiviEvents they've attended.

Intern Member Exams

A unique requirement for professional organizations is the need to support their members as they transition from student -to- intern -to- member. One common requirement is tracking interns progress on their exams. Some of the organizations we work with still use Excel in the office to track their members exams but for others we've built a CiviCRM extension.

The extension we've come up with is relatively simple. Intern Members can log in and review their exams to see where they are in their progress toward full membership. Site admins can log in to review and update exam results for each member. It's a pretty simple system but I'm not sure that it needs to be any more complex.

Intern Member Work Experience Logging

Another unique requirement of professional organizations is the need to have their members log work experience while they are working as interns in the roles of their professions. Again, there are plenty of organizations that still use paper forms, that their members hand write on, scan and email in but we've built several iterations of extensions to accommodate this online too.

This particular area is somewhat complex because each profession has their own unique criteria to report. In the most complicated version of this extensions we've created there are 85 fields within 20 categories and the reports are per month or per 3-month period. To ease the burden, we use relationships to autofill criteria like mentor and employed by and we only include dates to report based on when they first became a member.

In conclusion...

Hopefully this post provides some interest to others who are using CiviCRM to manage memberships of professional organizations and we can collaborate in improving on the work I've been doing. I might add that in my opinion, the extension framework in CiviCRM is fantastic. The extensions I've been using were created in Drupal 7 and I'm in the midst of migrating a site to Drupal 9 and they are literally plug and play.


Thank you for sharing your experience! I have had to work on similar requirements with professional associations (very common in Canada/Quebec), but haven't managed to build something more generic (either because we inherited a project, or because the CE/logging was added at the last minute because they were using another system and later decided to dump it in favour of CiviCRM).

If you have code that is published, please link! It can also be added to the CiviCRM extension directory, even if you consider it to be "work in progress". People like me often check the directory before creating a new extension, which in some cases resulted in duplicate extensions.

Thanks @bgm,
I just checked my GitHub repo and I made the first commit 10 years ago and the most recent one 8 years ago. I've made a bunch of tweaks to it over the years, so what is on GitHub quite behind. In addition Compucorp forked it and are ahead by several commits and behind by a few. Also Agileware forked Compucorp's version and are a couple of commits ahead. I'll reach out to Jamie Novick at Compucorp and see what, if anything they've been up to. I don't think I know anyone at Agileware though.

I think some of the things that were built in the extension can be handled natively by CiviCRM (export to CSV, Messaging, etc...). I think what I'd like to do is revisit the extension, using the bones of what I've got or Compucor or Agileware and remove the areas that were cobbled on and build a clean version. We can also revisit the decisions that were made and maybe come up with improvements.

Check out the Repo here: Look at the forks. There are 6 forks but Compucorp and Agileware are the only ones with any active development in the past 5 years.


I would be happy to share ideas about this. We have one site with CPD. We built everything using Activities, Relationships etc and front end via Drupal Views and Webforms. If i was starting from scratch today i would definitely explore if SearchKit and FormBuilder could do everything.
There is a bunch of stuff we did so that registering for events adds CPD points but only after they go via a webform to confirm they attended.
They also get dashboard with old events they registered for which they can still claim points for if they did actually attend. And a few other niceties - eg they have to score so many points each year and a certain number over 3 years, so there is a bunch of custom stuff doing that in civicrm.

This is definately one of those design patterns that is universal for just about any organisation. I've never worked with any organisation that did not have some sort of Continuing Professional Education/Development (CPE or CPD) programme in place. We track training in a real Heath Robinson way...

Like Memberships, it's functionality that has wide application. I am certianly happy to look at any extension that you may have pubished and feedback. Well done.

Hi Peter and ct_itsupport,
Sorry for the late reply. I just checked back on a whim. I don't get alerts when comments are made for some reason.

I wonder if we can set up a place on mattermost or slack or somewhere where we can compare notes and come up with ideas to move forward with more of CiviCRM's components and less custom code.

I'm not sure that you can contact me via my CiviCRM account but if not, you can contact me via my Drupal profile ( or my LinkedIn profile (