Skip to content
Matthijs Laan edited this page Jun 8, 2016 · 3 revisions

Authentieke objecten NHR en splitsing

De NHR Dataservice kan bevraagd worden op de volgende sleutels:

  • bsn
  • rsin
  • kvkNummer
  • vestigingsnummer

bsn

Verwachte productrespons: natuurlijkPersoon met volledige elementen, waaronder isEigenaarVan maatschapplijkeActiviteit. De elementen van maatschappelijkeActiviteit zijn mogelijk minder volledig dan bij het direct opvragen op basis van kvk (nog te bepalen).

rsin

Mogelijke productrespons:

  • buitenlandseVennootschap (deze heeft een rsin, naast nog buitenlands inschrijfnummer)
  • eenmanszaakMetMeerdereEigenaren
  • rechtspersoon
  • rechtspersoonInOprichting
  • samenwerkingsverband

kvkNummer

Mogelijke productrespons:

  • maatschappelijkeActiviteit
  • onderneming (?) In voorbeelden van maatschappelijkeActiviteit heeft deze een manifesteertZichAls onderneming met hetzelfde kvkNummer.

vestigingsnummer

Mogelijke productrespons:

  • commercieleVestiging
  • nietCommercieleVestiging

Meerdere authentieke objecten in enkele productrespons

Het ontvangen product bevat naast het element met de gevraagde sleutel ook gerelateerde objecten die zelf als producten kunnen worden opgevraagd. Dit is niet altijd comfort-data.

Het probleem is dat deze objecten niet compleet zijn. Dit kan ook niet, want dan zou je een enorme boom van objecten krijgen (van onderneming naar eigenaar die weer eigenaar is van andere onderneming, en die relaties weer volledig volgen...) en circulaire referenties.

Hiervoor is in de NHR Dataservice voor een bepaalde oplossing gekozen die niet erg handig is. Deze is voorzover ik weet ook niet gedocumenteerd.

De blijkbaar gekozen oplossing is dat bij een object die een relatie heeft met een ander object (zoals maatschappelijkeActiviteit en vestiging) het vestigingsobject wordt meegeleverd, inclusief een aantal eigenschappen, maar niet volledig. Zo kan een maatschappelijkeActiviteit zich manifesteren als onderneming die wordt uitgeoefend in een 0..n commercieleVestiging. Dit commercieleVestiging element is niet compleet. Echter blijkt dat een maatschappelijkeActiviteit ook geleid wordt vanuit een (niet)commercieleVestiging. In veel voorbeelden is dit exact dezelfde vestiging, maar dan completer (maar niet volledig compleet, anders krijg je circulaire relaties doordat vestiging wordtUitgeoefendDoor weer terug zal leiden naar de onderneming die zich manifesteert als de originele maatschappelijkeActiviteit).

Het kan dus voorkomen dat in een productrespons van een maatschappelijkeActiviteit een complete en incomplete vestigingen voorkomen, afhankelijk van waaruit de maatschappelijkeActiviteit wordt geleid.

Betere oplossingen zouden xlink's, alleen ID's of duidelijkheid met xsd:restrictions zijn geweest.

Keuze voor splitsen productrespons in meerdere berichten

In de BRMO wordt uitgegaan van één bericht per update van een authentiek basisregistratie-object. Dit wordt gebruikt om wijzigingen bij updates toe te passen door bij een nieuw bericht de vorige versie erbij te zoeken en zo database-inserts, updates en deletes (en archivering) door te voeren.

Om deze werkwijze te behouden zal bij het inlezen van NHR productrespons het bericht worden gesplistst. Dit houdt wel in dat er complete en incomplete versies van authentieke berichten kunnen voorkomen. Zonder meer kan dit ertoe leiden dat indien eerst een complete versie wordt verwerkt en daarna een incomplete, de ontbrekende eigenschappen worden verwijderd.

Incomplete relaties

Bij enkele eigenschappen is dit mogelijk nog overkomelijk, maar ook relaties kunnen incompleet zijn.

Splitsingsprincipe

Splitsen wordt gedaan door deze XSL stylesheet.

maatschappelijkeActiviteit

De commercieleVestiging en nietCommercieleVestiging objecten worden afgesplitst in aparte berichten. Bij de afgesplitste elementen wordt een wordtUitgeoefendDoor element toegevoegd met de onderneming met kvkNummer (commercieleVestiging) of maatschappelijkeActiviteit met kvkNummer (nietCommercieleVestiging) om de RSGB-relatie naar maatschappelijkeActiviteit te leggen.

Bij het transformeren van een maatschappelijkeActiviteit worden geen vestigingen omgezet in RSGB, omdat deze afgesplitst zijn. Onderneming, alhoewel ook als los product opvraagbaar, is altijd (?) gekoppeld aan een maatschappelijkeActiviteit met hetzelfde kvkNummer. Deze wordt voorlopig niet opgesplitst. De subelementen van heeftAlsEigenaar worden afgesplitst.

Zelf verzonnen namespace voor NHR objecten

Zie deze XSL stylesheet.

De NHR gebruikt geen unieke identifiers met namespace zoals in de BRK. Dit kan tot een clash leiden in gemeenschappelijke superclass tabellen zoals subject. Daarom wordt bijvoorbeeld een vestigingsnummer geprefixed met de zelf verzonnen namespace 'nhr.comVestg.' of 'nhr.nietComVestg', omdat in subject ook andere classes met andere keys kunnen komen. Zonder prefix zouden deze clashen. Hier wordt niet de code 31 voor gebruikt zoals in RSGB 2.2 pagina 441, een namespace is duidelijker dan een numerieke code en de BRK gebruikt al namespaces.

Een authentiek NHR-object zal dus een ander ID hebben dan hetzelfde object als comfort-data uit de BRK, ook al hebben ze hetzelfde kvk nummer. Het object kan dus ook niet geupgrade worden van comfort naar authentiek.

Het is wel mogelijk om de lijst met kvk nummers van comfort-data te gebruiken om authentieke objecten bij de NHR Dataservice op te halen en in te laden. Via een view kan bij een zakelijk recht van een kadastraal object de authentieke NHR-objecten gejoined worden.

Mapping naar RSGB

De mapping naar RSGB wordt gedaan door deze XSL stylesheet.

Maatschappelijke activiteit (maatschapp_activiteit)

RSGB 2.2 pagina 55
RSGB 3.0 pagina 128

Eigenschappen:

NHR element BRMO kolom Opmerking
registratie/datumAanvang datum_aanvang Speciale kolom
registratie/datumEinde datum_einde_geldig Speciale kolom tbv archivering
kvkNummer kvk_nummer PK
nonMailing
hoofdSbiActiviteit
nevenSbiActiviteit
incidenteelUitlenenArbeidskrachten
bezoekLocatie
postLocatie
communicatiegegevens
naam
wordtUitgeoefendIn
wordtGeleidVanuit
indicatie economisch actief RSGB 3.0, true indien manifesteertZichAls

Relaties:

NHR element BRMO kolom Opmerking
manifesteertZichAls fk_3ond_kvk_nummer ondrnmng.kvk_nummer
heeftAlsEigenaar fk_mac_as_4 subject.sc_identif (TODO)

manifesteertZichAls wordt in NHR via het OndernemingRelatieRegistratieType geregistreerd met datum aanvang en datum einde, in RSGB 2.2 niet.

Onderneming (ondrnmng)

RSGB 2.2 pagina 62
RSGB 3.0 niet aanwezig

Een onderneming kan een hoofelement zijn, maar ook worden meegeleverd als onderdeel van een maatschappelijke activiteit. Indien kvkNummer ontbreekt, leidt dit tot een transformatiefout.

Onderneming is niet aanwezig in RSGB 3.0, vervangen door incidactie economisch actief.

Eigenschappen:

NHR element BRMO kolom Opmerking
registratie/datumAanvang datum_aanvang Speciale kolom
registratie/datumEinde datum_einde_geldig Speciale kolom tbv archivering
kvkNummer kvk_nummer PK
hoofdSbiActiviteit TODO, koppeltabel maken
nevenSbiActiviteit TODO, koppeltabel maken
fulltimeWerkzamePersonen
parttimeWerkzamePersonen
totaalWerkzamePersonen

Relaties:

NHR element BRMO kolom Opmerking
fk_4mac_kvk_nummer “is voortgezet door” niet aanwezig in NHR
handeltOnder Niet in RSGB, alleen voor vestiging
wordtUitgeoefendIn vestg.fk_15ond_kvk_nummer 0..n commercieleVestiging
wordtUitgeoefendDoor maatschappelijkeActiviteit
heeftOvergenomenVan
0..n onderneming / Niet meer in RSGB 3.0
isOvergedragenAan fk_1ond_kvk_nummer 1)
  1. isOvergedragenAan wordt in NHR via het OndernemingRelatieRegistratieType geregistreerd met datum aanvang en datum einde, in RSGB 2.2 niet. In RSGB 3.0 is dit afwezig. Geen testcase voor aanwezig, alleen een kvk_nummer in de kolom zetten is niet voldoende. Dus of de foreign key verwijderen of, indien de onderneming waaraan is overgedragen in het product is opgenomen (is niet duidelijk zonder testcase), deze onderneming eerst (recursief) inserten. Voorlopig wordt dit genegeerd.

Vestiging (vestg, vestg_naam, vestg_activiteit, subject)

NHR elementen nietCommercieleVestiging en commercieleVestiging.

Clone this wiki locally