What you’ll use
Models - course, enrollment, completion, userBefore you start
- The connector is an LMS connector. A connector token works for one API category, so an HRIS token on
/api/lms/v1/*returns403- see Authentication.
Steps
1
Read the catalog, filtered by status
categories, skills or languages.Result: The courses that are actually live.2
Read enrollments
user for one learner, or course for everyone assigned a given course. start_date_from and start_date_to scope the assignment period.Result: Who was assigned what, and when.3
Find outstanding training with a null check
An enrollment with an empty This is the compliance report. Counting enrollments instead just reports the assignment, which everyone out of compliance also has.Result: The people who still owe the training.
completion is training that’s been assigned but not finished. No join needed.4
Read completions for what was actually finished
user, course, content or grade. Scope by date with completed_at_from and completed_at_to.Check whether course or content is set before you count anything. A completion against a content is one module finished, not one whole course.Result: Achievements, dated, with scores where the platform tracks them.5
Match learners to employees on email
email_address, and keep a separate bucket for learners with no employee record instead of dropping them.Result: Learning data tied to real people, with the unmatched ones called out.Frequently Asked Questions
Every request returns 403
Every request returns 403
A connector token only works for one API category. An HRIS connector called on
/api/lms/v1/* returns 403 even with valid credentials.Skills or contents return nothing
Skills or contents return nothing
Expected on many integrations. A large share of LMS platforms have no concept of skills, and some don’t separate content from courses. Check
raw_data before treating it as a sync problem - see Inspect raw data.Completion counts are higher than course counts
Completion counts are higher than course counts
Completions reference either a
course or a content. Module-level completions are being counted as course completions - check which field is set.Learners don't match any employee
Learners don't match any employee
Expected for contractors, former employees and outside participants. They hold LMS accounts with no HRIS record, and
email_address is the only field you can reliably join on - see Record identity.A compliance count looks too large
A compliance count looks too large
Almost always an unfiltered
status. Retired courses and deactivated learners are returned right alongside live ones.You need to write an enrollment
You need to write an enrollment
Not supported by any LMS model. Passthrough is the only route, and it’s specific to each integration - see Write support.
Related
- Learning - the seven models and how they connect
- Record identity - matching learners to employees
- Passthrough - the only write route for LMS