Error
There is currently no supported, configuration-level way to enroll a group of people into an LMS Learning Class. Every existing "add people to a group" tool in Rock — Group Sync, the Group Member Add workflow action, and the Bulk Update block — is unaware of the LMS and cannot produce a valid enrollment. The only built-in enrollment paths are the manual class roster and public self-enrollment, both of which are one-person-at-a-time and person-initiated.
We would like Rock to provide official ways to enroll people into a Learning Class in bulk and from automation, so that common scenarios (e.g. "everyone in this group/data view should be enrolled in this class") don't require custom plugin code.
Why the existing tools don't work
A LearningClass is a Group and a LearningParticipant is a GroupMember, but both use Table-Per-Type (TPT) inheritance — the LMS record is a subtype row layered on top of the base Group / GroupMember row.
Because of this, the generic "add a group member" tools all insert a base GroupMember and never create the LearningParticipant subtype row:
The LMS reads its roster from the LearningParticipant subtype (LearningParticipantService.GetStudents → GetParticipants, which queries LearningParticipant). A base GroupMember added by any of the tools above therefore never appears as an enrolled student, even though the person is technically sitting in the underlying group. This is a silent failure: the admin sees the group updated but the class roster stays empty.
There are also no LMS-specific workflow actions and no enrollment job in the codebase today (the only LMS jobs are SendLearningNotifications and UpdateLearningProgramCompletions).
Requested capabilities
Any one of these would solve the core problem; ideally more than one:
Notes for implementation
Rock already contains the correct, self-contained enrollment logic in the self-enrollment block — the request is essentially to expose that same logic through bulk/automation surfaces:
Because the building blocks already exist and are proven in the public enrollment flow, the incremental work to surface them as a workflow action or bulk action should be modest.
Use cases
Current workaround
The only reliable option today is custom plugin code (a custom job or workflow action) that instantiates LearningParticipant entities directly. This works, but bulk enrollment is a common enough need that it should be a first-class, no-code capability.*Claude assisted write up!
Cultivate your ideas for maximum impact with these helpful submission tips that will increase the chances of your brilliant concepts becoming reality.