======Verwerking StUF Zaak/dms 1.2 Overdragen Zaak======
{{tag>openwave:1.33:applicatiebeheer:functionaliteiten:stuf_zaak_dms}}
Vanuit een DMS kan een verzoek gedaan worden aan OpenWave om een zaak aan te maken. Hieronder een beschrijving van welke berichten daartoe uitgewisseld moeten worden, welke instellingen aan OpenWave-kant noodzakelijk zijn en welke onderdelen van het antwoord op geefZaakDetails door OpenWave verwerkt worden.\\
Naast de noodzakelijke instellingen geldt:
* het externe zaaktype van de overgedragen zaak moet gemapt zijn in openwave (tbsoortomgverg of tbsoortovverg)
* er moet een intiator (aanvrager) overgedragen worden
* de zaak moet nog niet bestaan
=====Endpoint en beveiliging via certificaten, whitelist=====
Het externe zaaksysteem/dms roept het SOAP-endpoint //**base-url/**api/stuf/ontvangAsynchroonOverdragen// van OpenWave aan met het verzoekbericht //overdragenZaak_Di01//.\\
Een base-URL is een implementatie van OpenWave zoals bijvoorbeeld https://acceptatie.rommeldam.open-wave.nl .\\
De wsdl van het endpoint is bereikbaar op //**base-url**/api/stuf/ontvangAsynchroonOverdragen.wsdl//
De OpenWave StUF webservice op dat SOAP-endpoint maakt gebruik van 2-way SSL onder het TLS1.2 encryptieprotocol.\\
De authenticatie gebeurt op endpoint-niveau door controle op IP-adres en aangeleverd client-certificaat: het IP-adres en de fingerprint van het client-certificaat van het externe zaaksysteem/dms wordt door OpenWave gecontroleerd in de tabel tbendpointlist (beheerportaal: zie Endpoints whitelist):
* In tbendpointlist moet een rij worden gedefinieerd met als endpoint //api/stuf/ontvangasynchroonoverdragen// (dus zonder base-url).
* En vervolgens dienen de IP-adressen die toestemming moeten krijgen om de StUF overdragenZaak berichten te posten op dit soap-endpoint te worden toegevoegd (dochtertabel tbipauthorisationlist), waar de fingerprint een onderdeel van de omschrijving kan zijn.
Indien het bericht van het externe zaak/dms systeem NIET door deze firewall heen komt, wordt de HTTP-code 401 geretourneerd.
=====Berichtenverkeer=====
{{:openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:stufzaakdms_overdagenzaak.png?800|}}
====Stap 1A en 1B: overdragenZaak_Di01====
Indien het bericht van het externe zaak/dms systeem NIET door de firewall heen komt, wordt de HTTP-code 401 geretourneerd.\\
Indien het bericht van het externe zaak/dms systeem WEL door de firewall heen is, antwoord Openwave ongezien op het overdragenZaak_Di01- bericht met een Bv03 (bevestigings-)bericht. \\
Beide berichten worden opgeslagen in de messagelog-tabel onder de rubriek: //DMS overdragenZaak// mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staan.
Di01
Rommeldam
RDApp
ODRommeldam
Openwave
93b81f42-f8ca-4221-97a3-7297f77f7544
20250725104913460
overdragenZaak
ROM123456
Aanvraag straatfeest
24026
====Stap 2A en 2B geefZaakDetails_ZakLv01====
OpenWave vraagt aan het externe Zaak/DMS systeem de zaakgegevens op. Uit het ontvangen //overdragenZaak_diO1// bericht worden twee gegevens gebruikt: de //Zender//: en de //Dmszaakidentificatie//: .\\
//ROM123456// in bovenstaand voorbeeld is de identificatie waaronder de zaak in het externe zaak/dms bekend is.\\
//Rommeldam// is daarin de naam van de zender-organisatie.
De //Zender// wordt opgezocht in de medewerkerstabel in de kolom dvloginnaam. Op grond van bovenstaand voorbeeld zou de zender-organisatie //Rommeldam// dus moeten voorkomen in de dvloginnaam van de medewerkerstabel (en maar één keer). Deze robot-medewerker:
* heeft geen wachtwoord,
* heeft geen 2-factor authenticatie
* hoeft geen loginverklaringen af te tekenen
* heeft in de kolom dnmaginapp (1=robot, 2=browser, 3=beide) de waarde 3
* is lid van een rechtengroep die insertrechten heeft op de omgevingstabel en/of de apv/overige tabel
* heeft in de kolom dvtelefoon een codering staan (bij afspraak bestaande uit 4 letters) die verwijst naar de kolom //dvgemeentecode// van de tabel tb33gemeente.
Indien GEEN robot-medewerker gevonden dan:
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het proces afgesloten zonder dan de externe partij dit weet: geen stuurgegevens en certificaatgegevens bekend.
Openwave zoekt in de betreffende kaart van tb33gemeente naar de noodzakelijke StUf stuurgegevens-instellingen en certificaat-gegevens om een bericht aan het externe zaak/dms te kunnen sturen.\\
In het blok //StUF zaak/dms endpoint credentials// dienen de kolommen
* //Endpoint asynchroon// (dvzknendpoint_ asynchroon) gevuld te worden met het asynchrone endpoint voor StUF zaak/dms 1.2 berichten van het externe zaak/dms
* //Endpoint Beantwoordvraag// (dvzknendpoint_beantwoordvraag) met het beantwoordvraag endpoint voor StUF zaak/dms 1.2 berichten
* //Client-Certificaatnaam// (dvzknSslKeystore) met de naam van het geinstalleerde clientcertificaat van het externe zaak/dms/
* //Client-Certificaattype// (dvzknSslKeystoreType) met het bijbehorende certiifciaat type
* //Certificaat password// (dvzknSslKeystorePassword) met het bijbehorende certificaat password. Deze wordt automatisch gecrypt opgeslagen.
In het blok //StUF zaak/dms stuurgegevens// dienen de kolommen
* //Zender applicatie// (dvstufzknzenderapp) bijv OpenWave
* //Zender organisatie// (dvstufzknzenderorg) bijv ODRommeldam
* //Ontvanger applicatie// (dvstufzknontvapp) bijv RDApp (gelijk aan de zender-applicatie uit het binnengekomen overdragenZaak_Di01)
* //Ontvanger organisatie// (dvstufzknontvorg) bijv Rommeldam (gelijk aan de zender-organisatie uit het binnengekomen overdragenZaak_Di01)
En indien het externe zaak/dms dat verlangt kunnen ook de kolommen administratie en gebruiker worden gevuld.\\
Bovenstaande waarden moeten afgestemd zijn met het externe zaak/dms.\\
Indien GEEN kaart gevonden in tb33gemeente OF endpointgegevens en/of stuurgegevens en/of certificaat gegevens zijn niet compleet dan
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het proces afgesloten zonder dan de externe partij dit weet: geen stuurgegevesn en certificaatgegevens bekend.
Alles wel OK dan verzendt OpenWave het //geefZaakDetails_ZakLv01// naar het beantwoordVraag -endpoint met het verzoek om alle zaakdetails te retourneren voor het betreffende //Dmszaakidentificatie//nummer.\\
Het externe zaak/dms antwoord synchroon met een //geefZaakDetails_ZakLa01//.
Beide berichten worden opgeslagen in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen sectie Koppeling ZAAK en item: Messagelog EN de instelling Sectie: OWB en Item: MessageLog aangevinkt staan.
====Stap 3A verwerk zaakdetails tot zaak en slotbericht overdragenZaak_Du01=====
**Antwoordbericht niet volledig**\\
Het antwoordbericht kan een fault-bericht zijn (zie messagelog). In dat geval gaat iets mis in het transport.\\
Het antwoordbericht kan wel een //geefZaakDetails_ZakLa01// bericht zijn, maar het blok ontbreekt daarin.\\
In beide gevallen verzendt Openwave het slotbericht //overdragenZaak_Du01// naar het ontvangasynchroon endpoint van het externe zaak/dms. In dat bericht in de tag de boodschap: overdracht geweigerd.. Het externe zaak/dms antwoord hierop met een Bv03-bericht.\\
Beide berichten worden opgeslagen in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling// Sectie: OWB en Item: MessageLog// aangevinkt staan.
**Zoek mapping zaaktype**\\
Indien het antwoordbericht //geefZaakDetails_ZakLa01// WEL volledig is, dan is in de tag het zaaktype opgenomen, waaronder de zaak in het externe zaak/dms bekend is. OpenWave zoekt deze codering op in de kolom //dvdmszaaktypecode// van de tabel zaaktypes omgeving (tbsoortomgverg) onder de niet vervallen rijen waarvan de kolom //dlnaardms// aangevinkt is.\\
Indien niet gevonden dan wordt dezelfde zoekopracht uitgevoerd maar dan in de tabel zaaktypes apv/overig (tbsoortovverg).\\
Indien er meerdere gegadigden zijn, dan wordt de eerste de beste gepakt.\\
Indien echter geen mapping gevonden voor het zaaktype dan:
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het slotbericht //overdragenZaak_Du01// naar het ontvangasynchroon endpoint van het externe zaak/dms gestuurd. In dat bericht in de tag de boodschap: overdracht geweigerd.. Het externe zaak/dms antwoord hierop met een Bv03-bericht.
* worden beide berichten gelogd in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staan.
**Bestaat de zaak al?**\\
De van het antwoordbericht wordt opgezocht in tbomgvergunning.dvintzaakcode en/of in tbovvergunningen.dvintzaakcode. Indien gevonden dan bestaat de zaak reeds en
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het slotbericht //overdragenZaak_Du01// naar het ontvangasynchroon endpoint van het externe zaak/dms gestuurd. In dat bericht in de tag de boodschap: overdracht geweigerd.. Het externe zaak/dms antwoord hierop met een Bv03-bericht.
* worden beide berichten gelogd in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staan.
**Controle overige noodzakelijke instellingen ** \\
* Openwave dient de nieuw zaak te koppelen aan een kaart in tbperceeladressen. Indien deze niet gevonden wordt op grond van de gegevens in het blok //// dan valt Openwave terug op //Getal2// van de instelling van //Sectie: Koppeling Zaak Item: DummyLokatiePerceelkey//. Dit moet een valide keyverwijzing zijn naar een rij in tbperceeladressen.
* In de tabel tbadressoort dient zowel een niet vervallen rij te bestaan voor de dvcode //AVR// (aanvrager) als voor de dvcode: //GEM// (gemachtigde).
* Indien de zaaktype mapping is uitgekomen op rij uit tbsoortovverg (apv/overige zaaktypes) dan moet ook //Getal2// van de instelling //sectie Koppeling ZAAK en item: DummyMeldingAPVOVWerzKey// bestaan en verwijzen naar een valide dnkey van de tabel tbovwerkz.
* Indien er geen defaultbehandelaar is gevonden bij de gevonden rij in tbsoortomgverg of tbsoortovverg met de zaaktype mapping, dan valt OpenWave terug op de kolom //Tekst// van de instelling //Sectie: Koppeling OLO en Item: dossierbehandelaar//.
Indien aan deze voorwaarden niet is voldaan dan:
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het slotbericht //overdragenZaak_Du01// naar het ontvangasynchroon endpoint van het externe zaak/dms gestuurd. In dat bericht in de tag de boodschap: overdracht geweigerd.. Het externe zaak/dms antwoord hierop met een Bv03-bericht.
* worden beide berichten gelogd in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staan.
**Bepaling perceeladres** \\
Indien het blok //// met entiteittype= //VES// bestaat dan wordt de waarde van de tag opgezocht in tbmilinrichtingen op de kolom //dvvestigingsnr//. Indien meerdere gegadigden dan wordt de eerste de beste genomen. Het perceeladres is dat van de gevonden inrichting.
Indien niet gevonden dan wordt gezocht op de gegevens uit het blok .
Nog geen perceeladres gevonden, dan wordt gekeken naar het blok met //// met entiteittype= //AOA//. Indien daarbinnen de tag
is gevuld, dan wordt deze opgezocht in de niet vervallen rijen van tbperceeladressen op respectievelijk de kolommen //dvidentificatiecode// en //dvbagidentcode_3// . Indien niet gevonden dan wordt gezocht op adresgegevens. Indien meerdere gegadigden dan wordt de eerste de beste genomen.
Indien nog geen perceeladres gevonden dan wordt //Getal2// van de instelling van //Sectie: Koppeling Zaak Item: DummyLokatiePerceelkey// als tbperceeladressen.dnkey genomen.
**Bepaling aanvrager** \\
Indien het blok //// bestaat met daarbinnen het blok //// met entiteittype= //VES// dan:
* Indien tag //// gevuld, dan wordt de niet vervallen rij in tbcontactadressen gezocht met //dvvestigingsnr// = ////. Indien meerdere gegadigden dan wordt de eerste de beste genomen. Indien:
* Gevonden dan is aanvrager bekend. indien //Sectie: Koppeling Zaak en Item: BestaandContactNietOverschrijven// NIET is aangevinkt, dan worden de gegevens overschreven.
* Niet gevonden dan wordt een nieuwe kaart aangemaakt in tbcontactadressen met de gegevens uit dit blok.
Anders, Indien het blok //// bestaat met daarbinnen het blok //// met entiteittype= //NPS// dan:
* Indien tag //// gevuld, dan wordt de niet vervallen rij in tbcontactadressen gezocht met //dvsofinummer// = ////. Indien meerdere gegadigden dan wordt de eerste de beste genomen. Indien:
* Gevonden dan is aanvrager bekend. indien //Sectie: Koppeling Zaak en Item: BestaandContactNietOverschrijven// NIET is aangevinkt, dan worden de gegevens overschreven.
* Niet gevonden dan wordt een nieuwe kaart aangemaakt in tbcontactadressen met de gegevens uit dit blok.
Anders, Indien het blok //// bestaat met daarbinnen het blok //// met entiteittype= //NNP// dan:
* Indien tag //inn.nnpId// gevuld, dan wordt de niet vervallen rij in tbcontactadressen gezocht met //dvrsin// = //inn.nnpId//. Indien meerdere gegadigden dan wordt de eerste de beste genomen. Indien:
* Gevonden dan is aanvrager bekend. indien //Sectie: Koppeling Zaak en Item: BestaandContactNietOverschrijven// NIET is aangevinkt, dan worden de gegevens overschreven.
* Niet gevonden dan wordt een nieuwe kaart aangemaakt in tbcontactadressen met de gegevens uit dit blok.
Anders, indien nog steeds geen contactadres gevonden of aangemaakt voor de aanvrager dan:
* wordt een kaart in tbmissingconfiguration aangemaakt onder de apinaam: //creeerStufOverdrachtZaak: geefZaakDetails//.
* wordt het slotbericht //overdragenZaak_Du01// naar het ontvangasynchroon endpoint van het externe zaak/dms gestuurd. In dat bericht in de tag de boodschap: overdracht geweigerd.. Het externe zaak/dms antwoord hierop met een Bv03-bericht.
* worden beide berichten gelogd in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staan.
**Bepaling gemachtigde**\\
Idem als bij aanvrager maar nu bij blok . Een gemachtigde hoeft niet opgenomen te zijn in het bericht.
**Aanmaken zaak in tbomgvergunning of in tbovvergunningen**\\
Op grond van de gevonden mapping van het zaaktype maakt OpenWave een zaak aan in tbomgvergunning of in tbovvergunningen, gekoopeld aan het gevonden perceeladres, waarbij (in geval van omgevingzaak) :
* de kolom dvintzaakcode (de externe zaakidentifier) wordt gevuld met //Dmszaakidentificatie// (kolom //// van het antwoordbericht).
* dvaanvraagnaam = ////
* ddaanvraag = ////
* dvzaakcode = wordt samengesteld op basis van masker en lengte uit tbsoortomgverg
* ddfataledatum = //// met daarbij opgeteld Fatale Periode uit tbsoortomgverg
* dvaanvraagoms = ////
* dlzaakpubliceren = met publiceren ja.nee uit tbsoortomgverg
* dnkeyteamszaakverantw = gekoppelde team uit tbsoortomgverg
* dnkeymilinrichtingen met eventueel gevonden inrichting uit blok //// met entiteittype= //VES//
**Behandelaar en aanvrager/gemachtigde toevoegen**\\
Op grond van de gevonden defaultbehandelaar uit de zaaktypes in tbsoortomgverg of tbsoortovverg wordt de behandelaar in tbinbehandelingbij toegveoegd (indien leeg dan valt OpenWave terug op de kolom// Tekst// van de instelling //Sectie: Koppeling OLO en Item: dossierbehandelaar//.\\
De aanvrager wordt toegevoegd aan de zaak (tbomgcontactennn of tbovcontactennn) met de adresrol //AVR// en de eventuele gemachtigde onder de rol //GEM//.
**Processen, mappen en hyperlinks aanmaken **\\
Zoals bij een handmatig aangemaakte zaak worden nu processen toegevoegd, mappen aangemaakt en hyperlink gevuld. Mits zo is ingesteld.
**Verzenden slotbericht overdragenZaak_Du01 met succesmelding**\\
Tot slot wordt het bericht overdragenZaak_Du01 naar het ontvangasynchroon endpoint van het externe zaak/dms gestuurd. In dat bericht in de tag de boodschap: overdracht geaccepteerd en in de tag de wavezaakcode waaronder de zaak is aangemaakt in OpenWave en in de tag het oorspronkelijke identificatienummer van het externe zaaksysteem.\\
Het externe zaak/dms antwoord hierop met een Bv03-bericht. \\
Beide berichten worden gelogd in de messagelog-tabel onder de rubriek: DMS overdragenZaak mits de instellingen //sectie Koppeling ZAAK en item: Messagelog// EN de instelling //Sectie: OWB en Item: MessageLog aangevinkt// staan.\\
Indien //overdracht geaccepteerd// dan komt in de kolom dvmessage_casid de wavezaakcode van de net aangemaakte zaak.