Scheduled Training Integration

Allows required training content to be scheduled in advance, either on a one-off basis or a recurring basis. Support for multiple types of recurring cadences to enable employee training compliance without disruption to current business processes.


Roles: research, ux design, visual design
Year: released 2021

C9-Fixd-Recurring-Enrollment-2

Context

A core function of an LMS (learning management system) is to facilitate employees' learning through the consumption of training content at the right time. The timing of training can be especially crucial if it is tied to compliance requirements, for example, a first aid training that needs to take place at least every 2 years. Training requirements can also change year to year, or state to state (in the US). This creates a lot of scheduling for an LMS admin to track.

 

Problem

The Wisetail LMS did not support the scheduling of required training in advance or on a recurring basis. The system also didn't support taking the same training more than once without deleting completion data (a big no-no) or duplicating content. An LMS admin had to manually track all training, and jump through a lot of hoops to make sure that users were taking the right training at the right time. This also meant that an admin had to be actively logged into the system at the moment that they wanted the training material to show up as required, even if that was midnight on a weekend. Not a great user experience.

In the Wisetail LMS, training content gets marked as required for a user through a process called enrollment. An admin selects training content and specifies a group of users in an "enrollment set." The last piece is marking when the content is due.

Multiple scenarios had to be supported for the scheduling functionality to cover client needs:
-  Setting a one-time date in the future, for example, "you must take this training between Oct. 5 and Oct. 18."
-  Setting a recurring requirement that happens at the same time, for everyone, "you must take this training between Jan. 1 and Jan. 15 every year."
-  Setting a recurring requirement that happens based on when a user was enrolled/last completed the training (which could be different for everyone), "you must take this training once every three months."

Additional settings were added to support a better end experience for the user enrolled, for example, a user would have to take a training every six months, but the content would only be marked as required for the month before they were due again. This prevents training from showing up as required again immediately after a user completes it. We also had to make sure that an admin could configure their recurrence settings to prevent "gaps" in compliance training.

 

Recurring-Enrollment-Set-Creation-Diagram-2-1

Outcome

I worked closely with the product manager and engineering leads to make sure everyone involved understood the constraints of our platform as well as the client problems driving the project. It took multiple whiteboard sessions and flow diagrams to settle on a solution that is both comprehensive and straightforward in the UI. It's not a simple solution, but it's also not more complex than it needs to be.

We successfully incorporated client feedback through the process to reach a better outcome. We were able to conduct some key client interviews partway through the design and development process that lead to a shift in the design when we discovered a gap in the solution that could cost a client millions in lost training time. The result was a relatively small adjustment to the overall solution before development and release.

The end result is powerful capabilities that do not require complex admin interactions with the system. The solution is also optional functionality - it is available if an admin needs it, but does not get in the way if someone prefers to use the system as it functioned before.

 

Enrollment-Settings-with-Scheduling

Enrollment scheduling and recurrence setting configurations for all three enrollment types, and the settings modal with a guiding error message.