Het is belangrijk om te weten dat in de context van dit document het gebruik van de term 'momentopname' verwijst naar het algemene proces van het ophalen van point-in-time gegevens uit het SIS om deze op te slaan in een plat bestand dat vervolgens wordt verwerkt.

Momentopname biedt de mogelijkheid van integratie met behulp van point-in-time gegevens zoals aangeleverd door het SIS met twee ondersteunde integratietypen (lees: gegevensindelingen) binnen het SIS Framework voor Momentopname: Momentopname-XML en Momentopname-bestand (of gescheiden gegevens). Het laatste integratietype, Momentopname-bestand, is de indeling van de toekomst en die wordt dan ook bijgewerkt voor ondersteuning van nieuwe gegevensobjecten. Momentopname-XML krijgt alleen nog onderhoudsupdates.

De verwerking voor beide integratietypen op basis van momentopnamen bestaat uit het via HTTP posten van het gegevensbestand naar het betreffende eindpunt.


Ondersteunde gegevens

Ondersteunde gegevens
GegevensobjectOndersteuning voor Momentopname-bestandOndersteuning voor Momentopname-XML
GebruikersJaJa
CursussenJaJa
Lidmaatschappen
(inschrijvingen en docententoewijzingen)
JaJa
CataloguscategorieënJaJa
OrganisatiesJaJa
WaarnemersJaJa
InstellingsrollenJaJa
KnooppuntenJa 
Gecombineerde cursussenJa 
PeriodesJa 
Normen (als een cursuskenmerk)Ja 

Vereisten

Mogelijkheid van het SIS om gegevens te genereren voor het gekozen integratietype: Momentopname-XML of Momentopname-bestand met het juiste scheidingsteken.

Nog een belangrijk punt: de Snapshot Controller of de gegevensindeling Momentopname-XML moet niet de eerste keuze zijn voor een integratie aangezien er alleen nog onderhoudsupdates worden uitgebracht en er geen ondersteuning voor nieuwe objecten is en er geen nieuwe functies meer worden ontwikkeld. De kans is groot dat er in de toekomst een aankondiging zal komen dat de ondersteuning helemaal gaat stoppen, uiteraard wel met voldoende tijd voor klanten om over te stappen naar een ander type integratie.

Raadpleeg de sectie met voorbeelden voor Enterprise 1.1 voor een uitvoerige beschrijving van het integratietype. Belangrijk hierbij is dat de gegevensindeling iets verschilt tussen de twee ondersteunde varianten van Enterprise 1.1 (Standard en Vista).

Configuratie: integratietypen met momentopnamen

Naast kennis van de gegevens die betrokken zijn bij een SIS-integratie, is voor de configuratie van de integratietypen met momentopnamen kennis vereist van de SIS-functies en eindpunten, met name om te bepalen of de gegevensobjecten die worden ondersteund in het geselecteerde type momentopname overeenkomen met de doelen die de klant heeft voor de integratie. Daarnaast is kennis van de specifieke bestandsindeling noodzakelijk. Je kunt een momentopname-integratie maken via de volgende stappen voor systeembeheerders in de gebruikersinterface van Learn voor SIS-integratie: Gegevensintegratie > Integraties van studenteninformatiesystemen.

De volgende stappen zijn hetzelfde voor beide soorten momentopname-integraties, met als enige verschil de keuze van het integratietype: XML-gegevens (kies Momentopname-XML) of gescheiden tekens (Momentopname-bestand).

  1. Selecteer Integratie maken.
  2. Selecteer Momentopname-XML of Momentopname-bestand.
  3. Op het volgende scherm zie je de opties voor de configuratie die je kunt bewerken:

    Als je geavanceerde configuratie wilt uitvoeren (zoals gegevenstoewijzing), moet een integratie de status Bezig met testen of Actief hebben

    1. Integratienaam: voer Momentopname-XML of Momentopname-bestand in.
    2. Beschrijving (optioneel): voer tekst in om de integratie te beschrijven, bijvoorbeeld: Momentopname-XML testen of Momentopname-bestand testen.
    3. De waarde voor Gedeelde gebruikersnaam wordt gebruikt voor het posten van gegevens, net als Gedeeld wachtwoord
    4. Stel de integratiestatus in:
      1. Inactief: geen verwerking door integratie
      2. Actief: verwerking door integratie en Learn-gegevens worden bijgewerkt
      3. Bezig met testen: verwerking door integratie en Learn-gegevens worden niet bijgewerkt
    5. Stel het detailniveau van de logboekfunctie in. Voor testdoeleinden wordt aangeraden om Alle diagnose- en foutopsporingsberichten te selecteren. Voor de status Actief wordt het aanbevolen om een lagere instelling te gebruiken, zoals Alleen fouten of Fouten en waarschuwingen.
    6. Selecteer vervolgens de gegevensbronsleutel (DSK) die je wilt gebruiken voor deze integratie. Je kunt een specifieke bestaande DSK selecteren, een nieuwe sleutel maken of de gegevensbron gebruiken die in de feed is opgenomen. In alle gevallen moet er een DSK zijn gemaakt voordat de gegevensfeeds kunnen worden verwerkt.
    7. Het beheer van bovenliggende knooppunten wordt alleen ondersteund door Momentopname-bestand. Maak de juiste keuze op basis van de doelen die de klant heeft.
    8. Selecteer ten slotte de objecten die worden verwerkt via deze integratie en geef aan hoe pariteit moet worden afgehandeld. In de meeste gevallen zijn de standaardwaarden prima.
    9. Je kunt verschillende integratietypen gebruiken, die elk een unieke subset van beschikbare integratieobjecten verwerken.
    10. Selecteer Verzenden en de nieuwe Momentopname-integratie wordt toegevoegd aan de lijst met integraties.

Je moet nog één stap uitvoeren om de Momentopname-integratie te ondersteunen en dat is het configureren van het SIS-systeem voor het posten van gegevens naar Learn of het configureren van een cron- of batchtaak op de toepassingsserver voor het posten van de gegevens naar Learn. Momentopname-eindpunten zijn specifiek voor de vereiste taak die moet worden uitgevoerd.

Het posten van gegevens naar Learn door de toepassingsserver kan worden uitgevoerd met behulp van CURL of een vergelijkbare toepassing die wordt geactiveerd door een cron- of batchtaak:

curl -k -w %{http_code} -H "Content-Type:text/plain" -u SHARED_USERNAME:SHARED_PASSWORD --data-binary @PATH_TO_TEST_FILE ENDPOINT_URL

Vervang:

SHARED_USERNAME door de gedeelde gebruikersnaam

SHARED_PASSWORD door het gedeelde wachtwoord

PATH_TO_TEXT_FILE door het pad naar het XML-gegevensbestand

Replace ENDPOINT_URL door de URL van het eindpunt

Je kunt een lijst met de eindpunten op de server bekijken door naar de pagina HTTP-gegevens te gaan (via het contextmenu van de integratie Momentopname-bestand):

Systeembeheer (Building Blocks) > Gegevensintegratie > Integraties van studenteninformatiesystemen > (contextmenu van jouw integratie) > HTTP-gegevens)

Als de integratie wordt ondersteund door middleware of door het SIS, kunnen gegevens rechtstreeks naar het eindpunt worden gepost door het bovenstaande protocol te volgen.

Als deze stappen zijn voltooid en het SIS is ingeschakeld voor het genereren van gegevens en het posten of opslaan naar bestand voor posten naar Learn, moeten er logboeken worden aangemaakt voor de integratie.

Bekijk de gegevens en bepaal of je de beschikbare gegevensobjecten moet aanpassen met behulp van Geavanceerde configuratie/Veldtoewijzing. Zie de sectie over veldtoewijzing aan het einde van de sectie met voorbeelden voor een beschrijving van deze functionaliteit.

Zie Automatisering van Momentopname-bestand voor meer informatie over het verwerken van gegevensbestanden.


Momentopname-integraties

Momentopname-integraties zijn gebaseerd op sets met gegevens die voldoen aan specifieke voorwaarden, bijvoorbeeld voor het beheren van gebruikers of cursussen in het systeem. Van de twee ondersteunde typen, Momentopname-XML en Momentopname-bestand, kan alleen van Momentopname-bestand worden gezegd dat dit type het meest actueel is qua ondersteunde gegevensobjecten van Learn.

Net als bij alle op "bestanden gebaseerde" integratietypen (beide Momentopname-varianten en Enterprise 1.1) zijn er twee processen voor het benutten van gegevens in deze bestanden: via de optie Invoerbestand uploaden in de GUI of via een HTTP-gegevensoverdracht (bijvoorbeeld: cURL). In het geval van een HTTP-gegevensoverdracht kan een cron- of batchtaak worden gebruikt om de bewerking te activeren. Indien dit wordt ondersteund door het SIS of middleware kan een gegevensstream bovendien rechtstreeks worden gepost.

Elke bewerking wordt gerealiseerd via een bepaald eindpunt. Deze eindpunten voor de toepassingsserver zijn beschikbaar via de koppeling HTTP-gegevens in het menu van de integratie.


Momentopname-eindpunten

Eindpunten voor momentopnamebewerkingen voor plat bestand

Gebruik deze gegevens om het SIS in te stellen voor het publiceren van Momentopname-invoerbestanden naar de integratie. Opgeslagen objecten blijven behouden, evenals de bijbehorende gegevens. Verwijderde objecten worden verwijderd. Met Volledig vernieuwen worden alle bestaande objecten verwijderd die niet in het invoerbestand staan. Als er gegevens van een bepaald objecttype worden gepost naar een andersoortig eindpunt, mislukt de bewerking. Bijvoorbeeld: als je een gegevensbestand van een cursus post naar een Person-eindpunt, mislukt dit.

Als je een cursus uitschakelt, worden lidmaatschappen in die cursus ook uitgeschakeld. Dit is nieuw gedrag.

De URL van een eindpunt van een bewerking vind je ook in de gebruikersinterface van Blackboard Learn. Navigeer naar Configuratiescherm voor systeembeheer > Gegevensintegratie > Integraties van studenteninformatiesystemen. Zoek de integratie, open het menu en selecteer HTTP-gegevens. De URL's van het eindpunt van de integratie staan vermeld.

BewerkingURL van eindpunt
Cursus - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/course/store
Cursus - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/course/refresh
Cursus - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/course/refreshlegacy
Cursus - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/course/delete
Cursuskoppeling - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/courseassociation/store
Cursuskoppeling - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/courseassociation/refresh
Cursuskoppeling - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/courseassociation/refreshlegacy
Cursuskoppeling - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/courseassociation/delete
Cursuscategorie - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategory/store
Cursuscategorie - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategory/refresh
Cursuscategorie - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategory/refreshlegacy
Cursuscategorie - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategory/delete
Lidmaatschap cursuscategorie - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategorymembership/store
Lidmaatschap cursuscategorie - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategorymembership/refresh
Lidmaatschap cursuscategorie - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategorymembership/refreshlegacy
Lidmaatschap cursuscategorie - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/coursecategorymembership/delete
Cursuslidmaatschap - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/membership/store
Cursuslidmaatschap - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/membership/refresh
Cursuslidmaatschap - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/membership/refreshlegacy
Cursuslidmaatschap - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/membership/delete
Koppeling cursusstandaard - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/standardsassociation/store
Koppeling cursusstandaard - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/standardsassociation/refresh
Koppeling cursusstandaard - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/standardsassociation/refreshlegacy
Koppeling cursusstandaard - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/standardsassociation/delete
Hiërarchieknooppunt - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/node/store
Hiërarchieknooppunt - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/node/refresh
Hiërarchieknooppunt - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/node/refreshlegacy
Hiërarchieknooppunt - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/node/delete
Waarnemerskoppeling - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/associateobserver/store
Waarnemerskoppeling - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/associateobserver/refresh
Waarnemerskoppeling - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/associateobserver/refreshlegacy
Waarnemerskoppeling - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/associateobserver/delete
Organisatie - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organization/store
Organisatie - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organization/refresh
Organisatie - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organization/refreshlegacy
Organisatie - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organization/delete
Organisatiekoppeling - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationassociation/store
Organisatiekoppeling - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationassociation/refresh
Organisatiekoppeling - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationassociation/refreshlegacy
Organisatiekoppeling - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationassociation/delete
Organisatiecategorie - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategory/store
Organisatiecategorie - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategory/refresh
Organisatiecategorie - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategory/refreshlegacy
Organisatiecategorie - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategory/delete
Lidmaatschap organisatiecategorie - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategorymembership/store
Lidmaatschap organisatiecategorie - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategorymembership/refresh
Lidmaatschap organisatiecategorie - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategorymembership/refreshlegacy
Lidmaatschap organisatiecategorie - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationcategorymembership/delete
Organisatielidmaatschap - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationmembership/store
Organisatielidmaatschap - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationmembership/refresh
Organisatielidmaatschap - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationmembership/refreshlegacy
Organisatielidmaatschap - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/organizationmembership/delete
Persoon - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/person/store
Persoon - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/person/refresh
Persoon - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/person/refreshlegacy
Persoon - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/person/delete
Periode - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/term/store
Periode - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/term/refresh
Periode - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/term/refreshlegacy
Periode - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/term/delete
Gebruikerskoppeling - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/userassociation/store
Gebruikerskoppeling - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/userassociation/refresh
Gebruikerskoppeling - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/userassociation/refreshlegacy
Gebruikerskoppeling - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/userassociation/delete
Secundaire instellingsrol van gebruiker - Storehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/secondaryinstrole/store
Secundaire instellingsrol van gebruiker - Complete Refreshhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/secondaryinstrole/refresh
Secundaire instellingsrol van gebruiker - Complete Refresh by DSKhttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/secondaryinstrole/refreshlegacy
Secundaire instellingsrol van gebruiker - Deletehttps://<servername.domain.edu>/webapps/bb-data-integration-flatfile-BB<DATABASEIDENTIFIER>/endpoint/secondaryinstrole/delete

Als je bekend bent met de oude variant van momentopnamen, zul je zien dat het type Momentopname-bestand van het SIS Framework een ongewijzigde indeling heeft, afgezien van de toevoeging van headers voor de nieuwe ondersteunde gegevensobjecten. Zie Gegevensindeling van Momentopname-bestand en Voorbeelden van Momentopname-bestanden voor meer informatie.

Eindpunten voor momentopnamebewerkingen voor XML

Gebruik deze gegevens om de POST XML-invoerbestanden voor de integratie van het SIS in te stellen. Opgeslagen objecten blijven behouden, evenals de bijbehorende gegevens. Verwijderde objecten worden verwijderd. Met Volledig vernieuwen worden alle bestaande objecten verwijderd die niet in het invoerbestand staan. Het publiceren van een object met een onjuist objecttype is niet mogelijk.

BewerkingEindpunt
Recordstatus gebruikenhttps://<servername.domain.edu>/webapps/bb-data-integration-ss-xml-BB<DATABASEIDENTIFIER>/endpoint
Volledig vernieuwenhttps://<servername.domain.edu>/webapps/bb-data-integration-ss-xml-BB<DATABASEIDENTIFIER>/endpoint/refresh
Alleen verwijderenhttps://<servername.domain.edu>/webapps/bb-data-integration-ss-xml-BB<DATABASEIDENTIFIER>/endpoint/delete

Meer informatie

Overzicht van SIS Framework

Overzicht van gegevensbronsleutels