Contents:
2. How does the integration work?
5. Value lists (fixed options)
6. Full field mapping from CRM to EDU-DEX XML
7. Points of attention for implementation
8. Useful links and references
1. Introduction
EDU-DEX is a non-profit foundation that distributes up-to-date data on tens of thousands of courses and training programmes to companies, organisations, government bodies and portals every 24 hours — including Leeroverzicht.nl, the website of the Dutch central government, social partners and education umbrella organisations. This allows millions of potential participants to choose a course based on reliable and independent information.
The EDU-DEX module in Eudonet STB CRM makes it possible to automatically supply course content to EDU-DEX via a daily batch process that generates XML files. Without this integration, courses must be entered manually in the EDU-DEX interface.
1.1 Target audience
This document is intended for:
- Functional administrators who set up and manage the integration
-
Key users (for example, course coordinators) who enter data on the EDU-DEX tab
1.2 Release history
| Version | Release | Description |
|---|---|---|
| 8.2.5 | Mar 2023 | Initial setup of the EDU-DEX integration as a standard module |
| 8.2.6 | Mar 2023 | Improved labels and SQL query validation |
| 8.4.2 | Dec 2023 | Expanded field set — new EDU-DEX tab on course and group |
| 8.4.2 | Sep 2024 | Rework: CROHO fields, UI refinement, read-only training fields on group |
| 8.4.10 | 2025 | Training items at Generic Program Run level (without scheduled groups) |
Release note 8.2.5: Through the EDU-DEX integration, Stb Cursus offers the option of presenting (part of) the training offering in this online portal. EDU-DEX provides a data standard and central collection point for the information from many training providers, with one central distribution point for the information from all those providers and an update every 24 hours.
Release note 8.2.6: The integration with EDU-DEX has been extended, making it possible to configure and send various additional fields to EDU-DEX. Most of this can be done at course level and partly at course group level. An additional 'EDU-DEX' tab is available for this.
Release note 8.4.2: The integration with EDU-DEX has been extended, making it possible to configure and send various additional fields to EDU-DEX. Most of this can be done at course level and partly at course group level. An additional 'EDU-DEX' tab is available for this.
Release note 8.4.10: EDU-DEX extension — If courses have not yet been scheduled, they can now still be offered via the EDU-DEX integration, so that potential participants can show their interest and get an overview of the full course offering.
2. How does the integration work?
The EDU-DEX integration works via an automated batch process. Every night, XML files are generated based on the training data in the CRM. These files are placed in a configured server location, after which the EDU-DEX platform retrieves and processes them. The information then appears on all portals that subscribe to EDU-DEX.
2.1 Process steps in outline
- The Eudonet consultant activates the EDU-DEX module.
- The Eudonet consultant configures the settings: server path, publication URL, SQL query, email, OrgUnitID.
- The Eudonet consultant activates the 'EDU-DEX Export' batch process (by default every night).
- The batch process generates XML files per course (including groups and schedule data).
- EDU-DEX retrieves the files via the Publication URL and processes them.
- EDU-DEX validates the files daily and sends error messages to the configured email address.
2.2 XML structure and data levels
The XML files that are generated follow the EDU-DEX standard (format XML_Programma) and contain data at three levels:
| Level | XML element | Description | Source in CRM |
|---|---|---|---|
| Programme | programClassification / programDescriptions | General training information | Table training + edudex |
| Run | programSchedule » programRun | Information per training group | Table train_group + edudex_group |
| Session | programRun » courseDay | Date/time per session day | Table train_group_schedule |
| Cost | programRun » cost | Article costs per group | Tables train_group_item, art_vat, art_currency |
| Location | programRun » location | Location data | Tables organisation, address |
3. The EDU-DEX tab in the CRM
When the EDU-DEX module is active, an additional 'EDU-DEX' tab appears on both the Course form and the Course group form. This is where the EDU-DEX-specific data is entered. You can also search on this data.
3.1 Behaviour: Course vs. Course group
| Course form | Group form | |
|---|---|---|
| Training data (EDU-DEX level) | Editable | Read-only (inherited from course) |
| Group-specific fields | Not applicable | Editable |
| Creating a new group | — | EDU-DEX fields are automatically copied from the course |
| Tab visible | Always (if module active) | Only if the edudex checkbox is enabled on the course |
3.2 Fields at Course level
The following fields are available on the EDU-DEX tab of the Course form. Fields required by EDU-DEX are marked.
| Required | CRM table | CRM field | Label in CRM | Note |
|---|---|---|---|---|
| Yes | training | training_code | (Course code) | Own training ID |
| Yes | training | training_title | (Course name) | Training name |
| Yes | edudex | fully_online | Fully online | Boolean (0/1) |
| Yes | edudex | program_level | Training level | Custom value list |
| Yes | edudex | program_summary_text | Summary | Max. 200 characters |
| Yes | training | description | (Description) | Max. 1200 characters |
| Yes | edudex | application_type | Registration | individual / Group |
| Yes | edudex | program_type | Type of training | Fixed value list |
| Yes | edudex | program_duration | Duration number | Number |
| Yes | edudex | program_duration_unit | Duration unit | Fixed value list |
| Yes | edudex | program_form | Programme times | Fixed value list / multi-select |
| Yes | edudex | start_date_determination | Start type | Fixed value list |
| No | edudex | offered_until | End date of study year | Date |
| No | edudex | degree | Certificate | Fixed value list |
| No | edudex | credits_pe | Study credits PE | Text; sent as 'credits' |
| No | edudex | credits_ects | Study credits ECTS | Text; sent as 'credits' |
| No | edudex | course_site_link | Link to online environment | URL |
| No | edudex | application_open | Open for registration | Boolean |
| No | edudex | payment_due | Payment timing | Fixed value list |
| No | edudex | required_level | Required level | Fixed value list |
| No | edudex | study_load | Study load number | Number |
| No | edudex | study_load_period | Study load unit | Fixed value list |
| No | edudex | contact_name | Coordinator | Text |
| No | edudex | role | Coordinator role | Text |
| No | edudex | expires_date | Valid until | Date |
3.3 Fields at Group level
The following fields are specific to the course group (edudex_group). The training data from the course is read-only on the group.
| Required | CRM table | CRM field | Label in CRM | Note |
|---|---|---|---|---|
| Yes | edudex_group | status | Registration status | Open / Closed / Cancelled |
| Yes | train_group | start_date | Start date | Start date of group |
| Yes | train_group | end_date | End date | End date of group |
| No | edudex_group | application_deadline | Registration deadline | Date |
| No | edudex_group | contact_hours_part_of_day | Contact moments | Fixed value list / multi-select |
| No | edudex_group | number_of_contact_sessions | Contact time | Number |
| No | edudex_group | amount_valid_until | Costs valid until | Number |
Note: If no start date has been entered for a course group, the programRun and courseDay elements will NOT be included in the XML output. Always enter a start date for groups that need to be published.
4. Required fields and default values
EDU-DEX requires a number of fields in the supplied XML files. If these fields have not been filled in the CRM, a default value is sent instead. The table below shows the required fields from the field mapping.
| CRM table | CRM field | XML path | Default value |
|---|---|---|---|
| training | training_code | programClassification » programId | (empty) |
| training | training_title | programDescriptions » programName | (empty) |
| edudex | fully_online | programClassification » fullyOnline | 0 (false) |
| training | location | programClassification » programLocation | (empty) |
| edudex | program_level | programClassification » programLevel | (empty) |
| edudex | program_summary_text | programDescriptions » programSummaryText | (empty) |
| training | description | programDescriptions » programDescriptionText | (empty) |
| edudex | application_type | programAdmission » applicationType | individual |
| edudex | program_type | programClassification » programType | training |
| edudex | program_duration | programClassification » programDuration | (empty) |
| edudex | program_duration_unit | programClassification » programDuration @unit | (empty) |
| edudex | program_form | programClassification » programForm | (empty) |
| edudex | start_date_determination | programAdmission » startDateDetermination | (empty) |
| edudex_group | status | programSchedule » programRun » status | application opened |
| train_group | start_date | programSchedule » programRun » startDate | (not exported) |
| train_group | end_date | programSchedule » programRun » endDate | (not exported) |
5. Value lists (fixed options)
The following fields have a fixed set of permitted values accepted by EDU-DEX. In the CRM, these are configured as value lists.
5.1 Type of training (program_type)
| Value (EN) | Label (NL) |
|---|---|
| coaching | coaching |
| conference | conferentie |
| document | document |
| exam | examen |
| lecture | lecture |
| educational | lerarenopleiding |
| master class | masterclass |
| regular | regulier |
| training | training |
| virtual classroom | virtual classroom |
| webinar | webinar |
| workshop | workshop |
| self study | zelfstudie |
| traineeship | traineeship |
| internship | stage |
5.2 Programme times (program_form)
| Value (EN) | Label (NL) |
|---|---|
| distance learning | afstandsonderwijs |
| part-time | deeltijd |
| dual | duaal |
| full-time | voltijd |
5.3 Start type (start_date_determination)
| Value (EN) | Label (NL) |
|---|---|
| fixed starting date | vaste startdatum |
| agreed starting date | afgesproken startdatum |
| direct start | direct starten |
5.4 Study load unit (study_load_period)
| Value (EN) | Label (NL) |
|---|---|
| day | dag(en) |
| week | weken |
| month | maanden |
| year | jaar |
| hour | uur |
| program | gehele opleiding |
| 1st year | 1e jaar |
5.5 Group registration status (status)
| Value (EN) | Label (NL) |
|---|---|
| application opened | Geopend |
| application closed | Gesloten |
| canceled | Geannuleerd |
5.6 Payment timing (payment_due)
| Value (EN) | Label (NL) |
|---|---|
| up-front | vooraf |
| afterwards | achteraf |
| installments | in termijnen |
5.7 Contact moments (contact_hours_part_of_day)
| Value (EN) | Label (NL) |
|---|---|
| morning | ochtend |
| afternoon | middag |
| evening | avond |
| day | dag |
| night | nacht |
| weekend | weekend |
5.8 Required level (required_level) — selection
| Value (EN) | Label (NL) |
|---|---|
| none | niet van toepassing |
| mbo | mbo |
| mbo niveau 1 | mbo niveau 1 |
| mbo niveau 2 | mbo niveau 2 |
| mbo niveau 3 | mbo niveau 3 |
| mbo niveau 4 | mbo niveau 4 |
| havo | havo |
| vwo | vwo |
| hbo | hbo |
| bachelor | hbo bachelor |
| master | hbo master |
| academic bachelor | wo bachelor |
| academic master | wo master |
| PhD | PhD |
6. Full field mapping from CRM to EDU-DEX XML
The table below shows the full mapping of CRM fields to the EDU-DEX XML structure, based on the official field mapping documentation. Fields marked with 'x' under 'Covered' are implemented in the integration. Fields marked with 'o' are optional but not (yet) implemented.
| Section | EDU-DEX label (NL) | XML path | CRM table | CRM field | Required | Covered |
|---|---|---|---|---|---|---|
| Core information | Eigen opleiding ID | programClassification » programId | training | training_code | x | x |
| Core information | Geldig tot | expires | edudex | expires_date | x | |
| Core information | Einde instroom | programClassification » offeredUntil | edudex | offered_until | x | |
| Core information | Opleidingsnaam | programDescriptions » programName | training | training_title | x | x |
| Core information | Volledig online | programClassification » fullyOnline | edudex | fully_online | x | x |
| Core information | Locatie (organisatie) | programClassification » programLocation | training | — | x | x |
| Core information | LocatieID | programRun » location » id | organisation | organisation_id | x | |
| Core information | Locatie naam | programRun » location » locationName | organisation | organisation_name | x | |
| Core information | Locatie adres | programRun » location » address | address | visit_street_1 + nr | x | |
| Core information | Locatie postcode | programRun » location » zipcode | address | visit_zip | x | |
| Core information | Locatie stad | programRun » location » city | address | visit_city | x | |
| Core information | Opleidingsniveau | programClassification » programLevel | edudex | program_level | x | x |
| Core information | Einddocument | programClassification » degree | edudex | degree | x | |
| Core information | Studiepunten PE | programClassification » credits | edudex | credits_pe | x | |
| Core information | Studiepunten ECTS | programClassification » credits | edudex | credits_ects | x | |
| Core information | Open/afnemer-specifiek | programRun » openTo | train_group | project_id | o | |
| Descriptions | Samenvatting | programDescriptions » programSummaryText | edudex | program_summary_text | x | x |
| Descriptions | Beschrijving | programDescriptions » programDescriptionText | training | description | x | x |
| Descriptions | Link online omgeving | programDescriptions » courseSiteLink | edudex | course_site_link | x | |
| Registration | Geopend voor aanmelding | programAdmission » applicationOpen | edudex | application_open | x | |
| Registration | Aanmelding | programAdmission » applicationType | edudex | application_type | x | x |
| Registration | Min deelnemers | programAdmission » minNumberofParticipants | training | min_participants | x | |
| Registration | Max deelnemers | programAdmission » maxNumberofParticipants | training | max_participants | x | |
| Registration | Betalingsmoment | programAdmission » paymentDue | edudex | payment_due | x | |
| Registration | Benodigd niveau | programAdmission » requiredLevel | edudex | required_level | x | |
| Training form | Type opleiding | programClassification » programType | edudex | program_type | x | x |
| Training form | Opleidingsduur aantal | programClassification » programDuration | edudex | program_duration | x | x |
| Training form | Opleidingsduur eenheid | programClassification » programDuration @unit | edudex | program_duration_unit | x | x |
| Training form | Programmatijden | programClassification » programForm | edudex | program_form | x | x |
| Training form | Studiedruk aantal | programCurriculum » studyLoad | edudex | study_load | x | |
| Training form | Studiedruk eenheid | programCurriculum » studyLoad @period | edudex | study_load_period | x | |
| Contacts | Naam contactpersoon | programContacts » contactName | edudex | contact_name | x | |
| Contacts | Rol contactpersoon | programContacts » role | edudex | role | x | |
| Planning & costs | Aanvangstype | programAdmission » startDateDetermination | edudex | start_date_determination | x | x |
| Planning & costs | Status | programRun » status | edudex_group | status | x | x |
| Planning & costs | Deadline aanmelding | programRun » applicationDeadline | edudex_group | application_deadline | x | |
| Planning & costs | Startdatum | programRun » startDate | train_group | start_date | x | x |
| Planning & costs | Einddatum | programRun » endDate | train_group | end_date | x | x |
| Planning & costs | Contactmomenten | programRun » contactHoursPartOfDay | edudex_group | contact_hours_part_of_day | x | |
| Planning & costs | Contacttijd | programRun » numberOfContactSessions | edudex_group | number_of_contact_sessions | x | |
| Planning & costs | Sessie-ID | programRun » courseDay » id | train_group_schedule | train_group_schedule_id | x | |
| Planning & costs | Begintijd sessie | programRun » courseDay » startTime | train_group_schedule | start_time | x | |
| Planning & costs | Eindtijd sessie | programRun » courseDay » endTime | train_group_schedule | end_time | x | |
| Planning & costs | Naam sessie | programRun » courseDay » name | train_group_schedule | schedule_title | x | |
| Planning & costs | Kosten geldig tot | programRun » cost » amountValidUntil | edudex_group | amount_valid_until | x | |
| Planning & costs | Soort kosten | programRun » cost » costType | art_category | name | x | |
| Planning & costs | Munteenheid | programRun » cost » currency | art_currency | name | x | |
| Planning & costs | Kostenomschrijving | programRun » cost » descriptionText | train_group_item | article_description | x | |
| Planning & costs | Bedrag excl. BTW | programRun » cost » amount | train_group_item | c_amount_sell | x | |
| Planning & costs | BTW bedrag | programRun » cost » amountVAT | train_group_item | c_amount_vat_sell | x | |
| Planning & costs | BTW-vrij bedrag | programRun » cost » VATExemptAmount | train_group_item | c_amount_sell + VATExempt% | x | |
| Planning & costs | BTW code | programRun » cost » VATCode | art_vat | art_vat_code | x | |
| Planning & costs | BTW percentage | programRun » cost » VATPercentage | art_vat | percentage | x |
7. Points of attention for implementation
7.1 Setup checklist
- The customer is registered with EDU-DEX and has received an OrgUnitID
- The EDU-DEX module is activated in the Module Settings
- The server folder has been created and the Publication URL is correctly calculated
- The standard (or custom) query has been entered and tested
- The email address for error messages has been set
- The 'EDU-DEX Export' batch process has been scheduled
- At least one test run has been carried out manually and the XML validated
- XML files have been successfully delivered to and processed by EDU-DEX
- EDU-DEX has been informed by email of the publication URL
7.2 Common points of attention
- The SQL query must always include training_id and train_group_id as the first two columns.
- Groups without a start date are not included in the XML output.
- Courses without scheduled groups are still published (as a Generic Program Run) — potential participants can already show their interest.
- The Publication URL is calculated automatically after setting the Server folder. Always copy the calculated URL (do not type it manually).
- The VAT-exempt percentage is optional but relevant for organisations with a VAT exemption.
- Fields that are not required but relevant to the customer's target audience should be deliberately filled in to achieve a complete publication.
8. Useful links and references
| Description | URL |
|---|---|
| EDU-DEX website | https://www.edudex.nl/ |
| EDU-DEX API documentation | https://www.edudex.nl/edudox/ |
| EDU-DEX XML validation tool | https://feeds.edudex.nl/validatie/ |
| List of OrgUnitIDs of all training providers | http://feeds.edudex.nl/organizatie-ids/ |
| EDU-DEX test environment (management) | https://beheer.edudex.nl/ |
| Leeroverzicht.nl (example portal) | https://www.leeroverzicht.nl/ |