Aanbod importeren via EDU-DEX
De volledige Toelichting op importeren via EDU-DEX vind je in de beheeromgeving op de pagina Aanbod -> Aanbod importeren, tabblad XML import (inclusief Springest en EDU-DEX).
Hieronder vind je de eerste hoofdstukken uit de Toelichting op importeren via EDU-DEX.
Inleiding
Opleidingsleveranciers kunnen hun aanbod importeren in het LMS CLASS. Het aanbod wordt na importeren niet automatisch in de catalogi van de aangesloten leerportalen opgenomen. De learning services partner van het aangesloten leerportaal stemt met de beheerder van het portaal af of het aanbod wel, niet of gedeeltelijk wordt opgenomen.
Het aanbod in het LMS CLASS moet door de opleidingspartner zelf actueel worden gehouden. Om dit voor jou als opleidingspartner zo makkelijk mogelijk te maken biedt CLASS hiervoor diverse mogelijkheden:
- Importeren via CSV bestanden
- Importeren via XML feed(s)
- Importeren via EDU-DEX feed(s)
- Importeren vanuit Springest
Wij raden aan om via EDU-DEX te importeren. EDU-DEX (http://edudex.nl) is een initiatief van de Nederlandse opleidingssector tot een open standaard voor aanbod van cursussen, opleidingen, studies, en e-learning modules.
Omdat CLASS en EDU-DEX qua datamodel niet precies gelijk zijn, worden tijdens het importeren een aantal transformaties op de data gedaan. Dit document beschrijft hoe het LMS CLASS vanuit een EDUDEX feed het aanbod inleest in CLASS. In dit document worden o.a. de veldenmappings en vertalingen van EDU-DEX waardes naar CLASS beschreven.
⚠ Het is een vereiste dat je als opleidingspartner zorgt voor een actueel aanbod!
Instellen van een EDU-DEX feed in CLASS
Conclusion ondersteunt het importeren via XML feeds volgens de EDU-DEX standaard. Je kunt hier testen of je feed valideert tegen de standaard van EDU-DEX: https://feeds.edudex.nl/validator/.
De EDU-DEX import in CLASS is momenteel gebaseerd op EDU-DEX versie 2.0. CLASS ondersteunt het importeren van EDU-DEX directory en catalogus feeds.
Instellen van de feed
Volg de volgende stappen om je feed in te stellen:
- Ga via het menu naar Aanbod -> Aanbod importeren.
- Ga naar de tab ‘XML-import (inclusief Springest en EDU-DEX)’.
- Selecteer bij ‘Xml import feed type’ de optie ‘EDU-DEX XML feed’.
- Geef een e-mailadres op waar e-mails naartoe worden verzonden als er een fout optreedt.
- Vul onderaan de pagina de url van de feed in. Geef ook een naam aan deze feed.
- Klik op Opslaan.
Hoe vind je de url van jouw feed in EDU-DEX
In EDU-DEX is het mogelijk als opleider om een selectie (“catalogus”) aan te maken van de eigen programma’s. De URL voor de XML-file van die selectie kunt u vinden door in het submenu Catalogusbeheer op “Links tonen” te klikken. De bovenste link is de URL voor het XML-bestand die u in CLASS kunt invoeren.

Stappen in het importproces
Stap 1. Downloaden van de feed
In deze stap wordt de feed gedownload en opgeslagen in de database van CLASS. Het downloaden van de feed gebeurt elke nacht.
Tijdens de download wordt getoetst of de inhoud van de feed gewijzigd is ten opzichte van de feed van de vorige nacht. De velden lastEdited en Expires worden buiten beschouwing gelaten bij deze toets. Als de inhoud van de feed onveranderd is, wordt de feed niet verwerkt. In het importlog kan de leverancier zien dat er die nacht geen wijzigingen zijn doorgevoerd.
![]()
Tijdens het downloaden controleert CLASS of er in de feed meerdere programs (leeractiviteiten) zitten met hetzelfde programId.
Ook controleert CLASS op de structuur van de xml feed. Deze moet voldoen aan de EDU-DEX standaard versie 2.0.
Als een van bovenstaande fouten voorkomt, dan wordt het importproces afgebroken en stuurt CLASS een e-mail aan de leverancier waarin vermeld is dat de feed niet verwerkt kan worden. De reden daarvan staat in de e-mail.
Voorbeeld van deze e-mail:

In het importlog ziet de leverancier in dit geval de opmerking ‘Import mislukt (feed bevat fouten)’.
![]()
Stap 2. Importeren van de gedownloade feed
Als stap 1 succesvol is, dan importeert CLASS in stap 2 de gedownloade feed.
Tijdens het importeren controleert CLASS of de data in de xml feed voldoet aan de eisen die de omgeving stelt. De fouten in de data die kunnen voorkomen, zijn allemaal beschreven in hoofdstuk 3 ‘Validatie op data’.
Als tijdens het importeren blijkt dat de data in de xml feed van een program niet voldoet aan de eisen die de omgeving stelt, dan wordt de betreffende program overgeslagen. Hierover stuurt CLASS een e-mail aan de leverancier waarin vermeld is dat de feed gedeeltelijk niet verwerkt kan worden.
Voorbeeld van deze e-mail:

De leverancier kan op basis van deze informatie de data van het overgeslagen program aanpassen. Nadat de aanpassing is gedaan zal CLASS de nacht daarop het overgeslagen program alsnog proberen te importeren.
In het importlog ziet de leverancier in dit geval de opmerking ‘Import uitgevoerd met fouten (batch)’.
![]()
⚠ Let op: Als de leverancier de data van eerder overgeslagen programs de dag na de import nog niet heeft aangepast, dan zal het importlog niet opnieuw de opmerking ‘Import uitgevoerd met fouten (batch)’ tonen. Op de tussenliggende dagen zal het importlog in plaats daarvan de opmerking ‘Geen wijzigingen t.o.v. vorige import’ tonen.
Omdat CLASS en EDU-DEX qua datamodel niet precies gelijk zijn, worden tijdens het importeren een aantal transformaties op de data gedaan. Deze transformaties op de data zijn allemaal beschreven in hoofdstuk 4 ‘Veldenmappings’.
Validatie op data
Tijdens het importeren controleert CLASS of de data in de xml feed van een program voldoet aan de eisen die de omgeving stelt. Zo niet, dan wordt de betreffende program overgeslagen. Hierover stuurt CLASS een e-mail aan de leverancier waarin vermeld is dat de feed gedeeltelijk niet verwerkt kan worden.
De volgende validatie vindt plaats:
Algemeen
- programAdmissionApplicationType moet ‘individual’ zijn.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
Import <program> with ID ‘1’
Skipping <program> with ID ‘1’ because <applicationType> is not ‘individual’ - Het aantal thema’s mag niet groter zijn dan het maximum aantal thema’s dat in CLASS is toegestaan (50 thema’s).Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
“Skipping <program> with ID ‘1’ because it has 52 themes, while only 50 are allowed.” - Meerdere programRuns (uitvoeringen) met hetzelfde ID zijn niet toegestaan.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
“Skipping <program> with ID ‘1 ‘ because it has <programRun>s with the same IDs (2, 3, 4).” - Meerdere courseDays (bijeenkomsten) met hetzelfde ID zijn niet toegestaan.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
“Skipping <program> with ID ‘1′ because it has <programRun>s with <courseDay>s with the same IDs: programRun 2: courseDays 3, 4.”
Kosten
- Van de kosten mag amountIsFinal niet ‘false’ of ‘0’ zijn.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
“Skipping program with ID ‘1’ because it contains <cost> elements where amountIsFinal is false” - Het kostentype singlePaymentDiscount mag niet gebruikt worden.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
“Skipping program with ID ‘1 ‘ because it contains <cost> elements with <costType> ‘single payment discount’.” - Meerdere programRuns die op dezelfde dag starten mogen geen verschillende bedragen hebben voor eenzelfde costType.Voorbeeld van hoe deze foutmelding in de e-mail wordt weergegeven:
Validating costs for <program> with ID ’66’
Skipping <program> with ID ’66’: Unable to merge prices. <programRun>s with the same start date (6-9-2022 00:00:00) have different amounts for the cost types Course
Import <program> with ID ’66’
⚠ Let op: als er geen kosten zijn voor programRuns, maar wel voor een genericProgramRun, wordt deze gebruikt voor de import en dan wordt daarop gevalideerd.