
Training and certificates
Workday to Moodle integration: users and cohorts from Workday, course completion back
With an integration between Workday and Moodle, every worker from Workday automatically becomes a Moodle user, in the cohort of their supervisory organization, with the language and time zone of their location. After the last working day the user is suspended in Moodle, and completed mandatory courses arrive as a training on the worker in Workday.
What the integration does
Organisations that manage workers in Workday and run internal training in their own Moodle often load users through a CSV upload by the Moodle administrator. A transfer in Workday then only changes the cohort at the next upload, and for an audit HR searches Moodle reports for who completed the mandatory course.
- HR completes a hire in Workday, with supervisory organization, location and preferred language.
- KoppelHet creates the Moodle user and suspends them until the start date, so they cannot log in yet.
- On the start date the suspension is lifted and the user joins the cohort of their organisation; through cohort sync the courses of that cohort follow.
- Every day KoppelHet reads the completion of the mandatory courses and records new completions as a training on the worker in Workday.
- After a termination KoppelHet suspends the user; course history and grades stay in Moodle.
Back: Completed mandatory courses with date
What to watch for with Workday and Moodle
- Moodle creates new users through the web service in one database transaction per call. One worker with a duplicate email address or an unknown language code therefore makes the whole call fail. KoppelHet checks those fields beforehand and sends new workers separately, so one error in Workday does not hold back the rest.
- When creating a Moodle user the web service cannot pass a suspension; that field only exists on update. A hire that is completed in Workday weeks before the start is therefore set up by KoppelHet in two steps, create and suspend straight away, and the suspension is lifted on the start date.
- Moodle converts every username to lowercase. The Employee_ID from Workday is therefore sent twice, as username and unchanged as idnumber. KoppelHet looks up existing users by idnumber, so a worker with letters in their ID is not created twice.
- Moodle only accepts a language whose language pack is installed on the server. Workday holds a preferred language per worker from a much longer list. KoppelHet translates it to the installed packs and otherwise falls back to the site's default language.
- Workday places a worker in a location, while Moodle wants a country as a two-letter code and a time zone name. KoppelHet derives both from the Workday location, so assignment dates and deadlines for workers outside the Netherlands fall on the right day.
- Moodle cohorts are flat, while supervisory organizations in Workday form a tree. KoppelHet creates a cohort per organisation with the Workday ID as idnumber and puts the parent organisation in the department profile field, so the administrator attaches courses to a cohort at the right level.
- Without an extra plugin Moodle sends no message when a course is completed, and the web service returns completion per user per course. KoppelHet therefore only requests the mandatory courses of active workers and writes a new completion as a training in Workday.
- If your Moodle uses single sign-on, KoppelHet creates users with that sign-in method and without a password. With Moodle's default method every new user needs a password or Moodle mails one; we choose that deliberately per group of workers.
How we build and run it
- The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
- Every sync and every error is visible in the functional log; on an error your administrator is notified.
- A change that cannot go through is not half-applied but queued for another attempt.
- KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
- After go-live we manage the integration and adjust it when your process changes.
- The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.
Implementation and price
This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.
A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.
Frequently asked questions
What does our Moodle administrator need to arrange?
Enable web services and REST, create an external service with only the listed functions and a token for a dedicated integration user. You set up cohort sync per course yourselves.
Does this also work with Moodle Workplace or a hosted Moodle?
Yes, as long as the web service is reachable. With a Moodle partner we check whether the functions are enabled in your version; the web service documentation in your own environment is leading.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Workday is read with a RaaS report on change date through an Integration System User (workers, supervisory organizations, locations, preferred language, termination). Completions go back through the Talent web service (Manage_Training).
- Moodle is written through the REST web service with a token for a dedicated external service with only the required functions - core_user_create_users, core_user_update_users (suspended), core_user_get_users_by_field (idnumber), core_cohort_create_cohorts, core_cohort_add_cohort_members and core_cohort_delete_cohort_members. Courses follow through cohort sync in Moodle.
- Completion is read with core_completion_get_course_completion_status (courseid and userid; completed and timecompleted per criterion).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Workday | Field in Moodle | Notes |
|---|---|---|
Employee_ID | idnumber en username | Username in lowercase, idnumber exactly as in Workday |
Preferred_Name (First, Last) | firstname, lastname | |
Email - Primary Work | email | |
Supervisory_Organization | Cohort (idnumber) en department | |
Company | institution | |
Location | country en timezone | Two-letter country code and a zone such as Europe/Amsterdam |
Preferred_Language | lang | Only languages whose language pack is installed in Moodle |
Hire_Date / Termination_Date | suspended | |
Cursusvoltooiing (completed, timecompleted) | Training bij de worker | Only courses designated as mandatory |
Related
Ashby → Workday
Ashby to Workday integration: hires to Workday, with a check on outcome and phone number
Bullhorn → Workday
Bullhorn to Workday integration: a consultant's first placement as a hire in Workday
Carerix → Workday
Carerix to Workday integration: a placed candidate becomes a pre-hire and starts the hire
Greenhouse → Workday
Greenhouse to Workday integration: hires as pre-hires, interim staff and contractors included