openwave:1.34:applicatiebeheer:probleemoplossing:programmablokken:verwerking_stuf_overdragenzaak

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisie Vorige revisie
Volgende revisie
Vorige revisie
openwave:1.34:applicatiebeheer:probleemoplossing:programmablokken:verwerking_stuf_overdragenzaak [2025/12/18 12:45] – verwijderd - Externe bewerking (Ongeldige datum) 127.0.0.1openwave:1.34:applicatiebeheer:probleemoplossing:programmablokken:verwerking_stuf_overdragenzaak [2025/12/18 12:49] (huidige) Kars Gottschal
Regel 1: Regel 1:
 +====== Verwerking StUF Zaak/dms 1.2 Overdragen Zaak ======
  
 +{{tag>openwave:1.34: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 <nowiki>https://acceptatie.rommeldam.open-wave.nl</nowiki>.
 +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: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. 
 +
 +<adm example voorbeeld overdragenZaak_Di01>
 +<code xml>
 +  <?xml version="1.0" encoding="utf-16"?>
 +  <overdragenZaak_Di01 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +    xmlns="http://www.stufstandaarden.nl/koppelvlak/zds0120">
 +    <stuurgegevens xmlns="http://www.egem.nl/StUF/sector/zkn/0310">
 +        <berichtcode xmlns="http://www.egem.nl/StUF/StUF0301">Di01</berichtcode>
 +        <zender xmlns="http://www.egem.nl/StUF/StUF0301">
 +            <organisatie>Rommeldam</organisatie>
 +            <applicatie>RDApp</applicatie>
 +            <gebruiker/>
 +        </zender>
 +        <ontvanger xmlns="http://www.egem.nl/StUF/StUF0301">
 +            <organisatie>ODRommeldam</organisatie>
 +            <applicatie>Openwave</applicatie>
 +        </ontvanger>
 +        <referentienummer xmlns="http://www.egem.nl/StUF/StUF0301"
 +            >93b81f42-f8ca-4221-97a3-7297f77f7544</referentienummer>
 +        <tijdstipBericht xmlns="http://www.egem.nl/StUF/StUF0301"
 +            >20250725104913460</tijdstipBericht>
 +        <functie xmlns="http://www.egem.nl/StUF/StUF0301">overdragenZaak</functie>
 +    </stuurgegevens>
 +    <object xmlns:d4p1="http://www.egem.nl/StUF/StUF0301"
 +        xmlns="http://www.egem.nl/StUF/sector/zkn/0310" d4p1:entiteittype="ZAK"
 +        d4p1:functie="entiteit">
 +        <identificatie>ROM123456</identificatie>
 +        <isVan d4p1:entiteittype="ZAKZKT">
 +            <gerelateerde d4p1:entiteittype="ZKT">
 +                <omschrijving>Aanvraag straatfeest</omschrijving>
 +                <code>24026</code>
 +            </gerelateerde>
 +        </isVan>
 +    </object>
 +  </overdragenZaak_Di01>
 +</code>
 +</adm>
 +
 +
 +==== 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//: <stuurgegevens><zender><organisatie> en de //Dmszaakidentificatie//: <object><identificatie>.\\
 +//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 ''<antwoord>'' 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 ''<antwoord>'' 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 <antwoord><object><IsVan><code> 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 ''<antwoord>'' 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 ''<identificatie>'' 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 ''<antwoord>'' 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 ''<heeftBetekkingOp>'' 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 ''<antwoord>'' 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 ''<heeftBetekkingOp>'' met entiteittype= //VES// bestaat  dan wordt de waarde van de tag ''<vestigingsNummer>'' 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 <verblijfsadres>.
 +
 +Nog geen perceeladres gevonden, dan wordt gekeken naar het blok met ''<heeftBetekkingOp>'' met entiteittype= //AOA//. Indien daarbinnen de tag <identificatie> 
 +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 ''<heeftAlsInitiator>'' bestaat met daarbinnen het blok ''<vestiging>'' met entiteittype= //VES// dan:
 +  * Indien tag ''<vestigingsnummer>'' gevuld, dan wordt de niet vervallen rij in tbcontactadressen gezocht met //dvvestigingsnr// =  ''<vestigingsnummer>'' 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 ''<heeftAlsInitiator>'' bestaat met daarbinnen het blok ''<natuurlijkPersoon>'' met entiteittype= //NPS// dan:
 +  * Indien tag //<inp.bsn>// gevuld, dan wordt de niet vervallen rij in tbcontactadressen gezocht met //dvsofinummer// =  //<inp.bsn>// 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 ''<heeftAlsInitiator>'' bestaat met daarbinnen het blok ''<nietNatuurlijkPersoon>'' 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 ''<antwoord>'' 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 <heeftAlsGemachtigde>. 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 ''<identificatie>'' van het antwoordbericht).
 +  * dvaanvraagnaam = ''<omschrijving>'' 
 +  * ddaanvraag = ''<startDatum>'' 
 +  * dvzaakcode = wordt samengesteld op basis van masker en lengte uit tbsoortomgverg
 +  * ddfataledatum = ''<startDatum>'' met daarbij opgeteld Fatale Periode uit tbsoortomgverg
 +  * dvaanvraagoms = ''<toelichting>'' 
 +  * dlzaakpubliceren = met publiceren ja.nee uit tbsoortomgverg
 +  * dnkeyteamszaakverantw = gekoppelde team uit tbsoortomgverg
 +  * dnkeymilinrichtingen met eventueel gevonden inrichting uit blok ''<heeftBetekkingOp>'' 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 ''<antwoord>'' de boodschap: overdracht geaccepteerd en in de tag ''<melding>'' de wavezaakcode waaronder de zaak is aangemaakt in OpenWave en in de tag ''<identificatie>'' 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.