How do you handle a use case where a course never expires for one audience, for a different audience expires annually and for a 3rd audience expires every 3 years. This is very easy in AbilityLMS (and LearnerWeb)!

Some basic definitions. 

A course record is where you define settings for the course. One of these fields is DAYS VALID (or Expire Days). 

When building a learning track, certification, individual development plan, you can assign a course as a requirement. The course assignment record can have its own DAYS VALID (or Expire Days) field. 

When history is updated to finished, the system will consider both of these DAYS VALID fields and add its value to the completion date to calculate an Expiration Date on the history record. The expiration date signals when the training expires and has to be re-taken to be kept current. Another way of looking at this, is the expire date offers the next date when the training is due for retraining.

So which Days Valid field should the system use? Well there are rules that have to be followed in the set-up of expiry. 

First, when Days Valid on the course record is blank, the course never expires ever, even if a Days Valid is set for the course assignment. 

Second, if the Days Valid on the course assignment record is blank, but the Days Valid on the course record is not blank, all users have the same expiration date. 

Third, "0" in the Days Valid for either course or course assignment record means the course is non-expiring at the course or course assignment record level respectively. 

Fourth, the system always checks the course record first and any course assignment records second. If it finds any course assignment records with a DAYS VALID, the system will use the minimum DAYS VALID  across all course assignments. 

So to address the use case that is the premise of this article, we really need to think through the set-up. Pay particular attention to the rule that the system will always calculate the lowest Days Valid. 

Consider this set-up:  

Course Days Valid = 365

Course in Track B = 0

In the above example, the history record for the course for the user is non-expiring, since the course assignment record is your deciding record. Let's consider another course assignment under this set-up:

Course Days Valid = 365

Course in Track A = 730

Course in Track B = 0

What will the expiry date calculation be? In this case, it is non-expiring for Track B, but is expiring for Track A. Since Track A has a Days Valid, the history expires in 730 days. 

How about this set-up?

Course Days Valid = 0

Course in Track A = 365

Course in Track B = 730

A user assigned the course in both tracks gets an expiration date of 365 days from completion because it is the lowest DAYS VALID. For a user that takes the course not assigned, the course never expires. 

If you are setting this up after the fact, please edit the course assignment records first, and then then course records. This will trigger a re-calculation on the history table that will reset expiration dates base on the proper Days Valid value to use.