openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:verwerking_stuf_overdragenzaak

Verschillen

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


Vorige revisie
openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:verwerking_stuf_overdragenzaak [Ongeldige datum] (huidige) – Externe bewerking (Ongeldige datum) 127.0.0.1
Regel 1: Regel 1:
 +====== 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 <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.