From 9dbcc04d2e63143a60765e874699396d1c966d4c Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 18 Jun 2024 17:04:04 +0200 Subject: [PATCH 01/34] Update for community meetings --- README.md | 6 ++++-- docs/GOVERNANCE.md | 14 ++++++++++++-- docs/NavbarContent.json | 13 +++++++++++++ docs/OverigFlow.puml | 13 +++++++++++++ docs/VerzoekFlow.puml | 13 +++++++++++++ 5 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 docs/OverigFlow.puml create mode 100644 docs/VerzoekFlow.puml diff --git a/README.md b/README.md index 34bde4c2..94a5fa36 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,13 @@ > Meer weten over deze oplossing? Dat kan! Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. Uiteraard kan je ook altijd mailen naar [info@conduction.nl](mailto:info@conduction.nl) > > Tevens worden vanuit de aangesloten leveranciers worden regelmatig webinars georganiseerd. -> -> - [8 Mei 13:00 | Community Meeting](https://www.linkedin.com/events/openwoo-appcommunitymeetingmei7184090446346768385/comments/). +> +> - [10 Juli 10:00 | Community Meeting](https://www.linkedin.com/events/7206649524776284161/comments/?originTrackingId=BVZjR39lT72%2BfNaik99cew%3D%3D). > > Terug kijken afgelopen webinars en meetings? > +> - [12-04-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). +> - [09-05-2024 | Community Meeting](https://www.youtube.com/watch?v=Q0ElcTP-R4M). > - [10-04-2024 | Community Meeting](https://www.youtube.com/watch?v=zMqElLzy0BM). > - [25-03-2024 | Sim-Groep Webinar](https://www.simgroep.nl/toekomstbestendige-woo-oplossing) > - [13-03-2024 | Community Meeting](https://www.youtube.com/watch?v=TNZghskRu5c). diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md index 68b02b61..5e5a1c8a 100644 --- a/docs/GOVERNANCE.md +++ b/docs/GOVERNANCE.md @@ -2,11 +2,21 @@ Het succes en de continue verbetering van het OpenWoo.app project zijn afhankelijk van een effectieve governance-structuur. Een belangrijk onderdeel van deze structuur is de stuurgroep, die verantwoordelijk is voor het beoordelen en prioriteren van de issues die op GitHub worden ingediend, en voor het bepalen welke daarvan worden opgenomen in de roadmap van het project. +## Open Webconcept + +OpenWoo.app is een doorontwikkeling van de OpenWoo wordpress plugin uit OpenWebconcept. Vanuit die oorsprong is OpenWoo.app eigenlijk een subcommunity van OpenWebconcept. De community staat echter nadrukkenlijk open voor niet OWC afnemers en leveranciers. + +De gemeente Gouda vormt hierin de linking pin + + +Gemeenten zo als Noordwijk, Gouda, Barendrecht, Allbaserwaard, Ridderkerk en Hoeksewaard vormen met de deelname aan + + ## Community Meetings Iedereen die actief gebruik maakt OpenWoo.app of intresse heeft in de ontwikkeling hiervan is welkom op de maandenlijke community meeting. De community meetings zijn de plek waar we de roadmap doornemen daar proberen gemeenchapenlijk beslutien op te nemen -De community meetings worden aangekondigd via openwoo.app. +De community meetings worden aangekondigd via openwoo.app, linkedin en per mail aan de bekenende leveranciers en afnemeners. ## Stuurgroep @@ -14,7 +24,7 @@ De Stuurgroep is samengesteld uit verschillende leden die een breed scala aan pe - **Conduction (Leverancier)**: Met een rijke ervaring in het leveren van technologische oplossingen, brengt Conduction waardevolle inzichten en technische expertise in het project. - **xxlnce (Leverancier)**: Als leverancier draagt xxlnce bij aan de technologische vooruitgang en zorgt ervoor dat het project blijft voldoen aan de behoeften van de gebruikers. -- **Epe (Pilot Gemeente)** +- **Epe ( Gemeente)** - **Noordwijk (Pilot Gemeente)** - **Noaberkracht (Pilot Samenwerkingsverband)** diff --git a/docs/NavbarContent.json b/docs/NavbarContent.json index cdc1ccd7..28a51f60 100644 --- a/docs/NavbarContent.json +++ b/docs/NavbarContent.json @@ -70,6 +70,19 @@ } } }, + { + "label": "Community", + "type": "internalMarkdown", + "current": { + "pathname": "/GOVERNANCE" + }, + "handleClick": { + "internalMarkdown": { + "directoryName": "docs", + "fileName": "GOVERNANCE" + } + } + }, { "label": "Veel gestelde vragen", "type": "internalMarkdown", diff --git a/docs/OverigFlow.puml b/docs/OverigFlow.puml new file mode 100644 index 00000000..67cc071c --- /dev/null +++ b/docs/OverigFlow.puml @@ -0,0 +1,13 @@ +@startuml +title Open Webconcept zonder integratie + +' User Interface Component +interface "Open Webconcept Website" as Website + +' Backend Components +component "Open Webconcept CMS" as CMS + +' Relationships +Website -down-> CMS : Directly connected + +@enduml \ No newline at end of file diff --git a/docs/VerzoekFlow.puml b/docs/VerzoekFlow.puml new file mode 100644 index 00000000..67cc071c --- /dev/null +++ b/docs/VerzoekFlow.puml @@ -0,0 +1,13 @@ +@startuml +title Open Webconcept zonder integratie + +' User Interface Component +interface "Open Webconcept Website" as Website + +' Backend Components +component "Open Webconcept CMS" as CMS + +' Relationships +Website -down-> CMS : Directly connected + +@enduml \ No newline at end of file From d8860563b681d85e6a18ccacaaa5b193d1392707 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Mon, 24 Jun 2024 16:26:38 +0200 Subject: [PATCH 02/34] Vervlechting met Open Catalogi opgestart --- README.md | 2 +- docs/Bronnen.puml | 14 ++-- docs/Componenten.puml | 36 +++++++++ ...licatie.puml => PublicatiePlatformen.puml} | 23 ++---- docs/product/Features.md | 13 ++++ docs/techniek/Architectuur.md | 77 ++++++++++++------- 6 files changed, 110 insertions(+), 55 deletions(-) create mode 100644 docs/Componenten.puml rename docs/{Publicatie.puml => PublicatiePlatformen.puml} (61%) diff --git a/README.md b/README.md index 94a5fa36..dc7eb15c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ > > Terug kijken afgelopen webinars en meetings? > -> - [12-04-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). +> - [12-06-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). > - [09-05-2024 | Community Meeting](https://www.youtube.com/watch?v=Q0ElcTP-R4M). > - [10-04-2024 | Community Meeting](https://www.youtube.com/watch?v=zMqElLzy0BM). > - [25-03-2024 | Sim-Groep Webinar](https://www.simgroep.nl/toekomstbestendige-woo-oplossing) diff --git a/docs/Bronnen.puml b/docs/Bronnen.puml index 43c8beb8..5bb7972d 100644 --- a/docs/Bronnen.puml +++ b/docs/Bronnen.puml @@ -3,19 +3,16 @@ title Integratie op bronnen footer: OpenWoo.app header: OpenWoo.app -' Publicatie platformen (Laag 5 UI) -frame "Publicatie platformen " { - interface "Afnemer" as Searchsite #1abc9c -} -' Services(Laag 4) -frame "Services" { + +' Services (Laag 4) +frame "Services (Laag 4)" { process "OpenWoo Service" as OWS #1abc9c } ' Integratie (Laag 3) -frame "Integratie" { - database "Open Index" as OI #1abc9c +frame "API (Laag 3)" { + database "Open Index" as OI #1abc9c } ' Bronnen (Laag 2) @@ -29,7 +26,6 @@ frame "Bronnen" { } ' Relationships -Searchsite -down-> OI : Bevraagd (API) OWS ..> OI: Slaat op in OWS -down-> CMS : Scrapes periodically\nUses as source diff --git a/docs/Componenten.puml b/docs/Componenten.puml new file mode 100644 index 00000000..ce7aecfc --- /dev/null +++ b/docs/Componenten.puml @@ -0,0 +1,36 @@ +@startuml +title Motorblok +footer: OpenWoo.app +header: OpenWoo.app + +package "Layer 4 (Logic)" as layer4 { + [Synchronisaties] as service +} + +package "Layer 2 (API)" as layer2 { + +package "Open Index" { + [Search API] as SearchAPI +} +package "Open Registers" { + [Admin API] as ObjectsAPI +} +} + +package "Layer 1 (Data)" { + +package "Search Index" { + [Elastic Search] as search +} + +package "Object Store" { + [ORC] as db +} +} + +db .left.> search: Update +ObjectsAPI .down.> db: Persist +SearchAPI <.down. search: Lookup +service .down.> ObjectsAPI: In synchroniseren van publicaties + +@enduml \ No newline at end of file diff --git a/docs/Publicatie.puml b/docs/PublicatiePlatformen.puml similarity index 61% rename from docs/Publicatie.puml rename to docs/PublicatiePlatformen.puml index 11232649..f7bea2d6 100644 --- a/docs/Publicatie.puml +++ b/docs/PublicatiePlatformen.puml @@ -7,37 +7,26 @@ header: OpenWoo.app frame "Publicatie platformen " { actor "KOOP" as KOOP #cce5ff actor "WOOGLE" as WOOGLE #cce5ff + actor "Open Catalogi" AS OpenCatalogi #1abc9c + interface "KoopHulpje" AS KoopHulpje #1abc9c interface "Website" AS Website #1abc9c interface "Thema site" as Themasite #1abc9c interface "Zoek pagina" as Searchsite #1abc9c } -' Services(Laag 4) -frame "Services" { - process "OpenWoo Service" as OWS #1abc9c -} - -' Integratie (Laag 3) +' API's (Laag 2) frame "Integratie" { - database "Open Index" as OI #1abc9c + database "Search API" as OI #1abc9c } -' Bronnen (Laag 2) -frame "API" { - component "Bronnen" as Bronnen #cce5ff -} ' Relationships KOOP -down-> OI : Indexeerd (XML Sitemap) WOOGLE -down-> OI : Indexeerd (API) +OpenCatalogi -down-> OI : Bevraagd (API) +KoopHulpje -down-> OI : Bevraagd (API) Website -down-> OI : Bevraagd (API) Themasite -down-> OI : Bevraagd (API) Searchsite -down-> OI : Bevraagd (API) -OWS ..> OI: Slaat op in - -OWS -down-> Bronnen : Scrapes periodically\nUses as source - -' Notifications -Bronnen -up-> OWS : Notifies of changes or deletes @enduml \ No newline at end of file diff --git a/docs/product/Features.md b/docs/product/Features.md index c9b0393d..12c07b05 100644 --- a/docs/product/Features.md +++ b/docs/product/Features.md @@ -17,3 +17,16 @@ Automatiseer het publicatieproces en verminder handmatige inspanningen met de sl ## Toekomstbestendig en Veilig Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. + + + +| Functionaliteit | Component | Laag | Beschrijving | +| Publicatie platform | Woo Website Template | 5 (UI) | +| Search (Openbaar) | Open Index | API (2) | Een zoek index met geavenceerde facet search opties +| Search (Vertrouwlijk) |Open Index | API (2) | +| Publicatie Register | Open Register | API (2) | Het publicatie register bevat de publicatie objecten, en onder +| Publicatie Beheer | OpenWoo.plugin voor drupal (Io), OpenWoo app voor nextCloud (Conduction), React container (Acato) | +| Document Creatie | OpenWoo app voor nextCloud (Conduction) | | Creert PDF versies van documenten en bijvoorbeeld voorbladen en inhouds opgaven | +| Harvesting | Woo Service | 3(integratie) | +| + diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index f1c23e2f..83e4d6c2 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -4,22 +4,24 @@ > > Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. -## Versimpelde opzet +## Hergebruik tot op het bot -OpenWoo.app bestaat in essentie uit een drietal onderdelen die samen de totaaloplossing vormen. - -![Basis Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Basis.svg) +OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [Open Catalogi](https://documentatie.opencatalogi.nl/) meer informatie technsiche informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). ### Publicatieplatform (onderdeel 1) -Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. De OpenWoo.app ondersteund meerdere mogelijke publicatieplatformen waarbij de keuze bij u als organisatie ligt of u het publicatieplatform binnen uw website wilt integreren of niet. +Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschickbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoektinterface als los component als voor een intergratie binnen uw huidoge website. + +Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). U kunt de interfaces dan ook niet gebruiken zonder een Open Catalogi zoeken-api. +. | Component | Open Source | Leverancier(s) | Beschrijving | Meer informatie | |-------------------------------|-------------|----------------------------------------------------------|-------------------------------------------------------------------|-----------------| -| Losse React pagina | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | -| Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | -| Sim Site | ? | SIMgroep | Een weergavecomponent voor SIM Site | | -| Drupal Site | ? | "??" | Een weergavecomponent voor Drupal | | +| Open Catalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| OpenWoo.app default zoeken-Ui | Ja | [Conduction](https://conduction.nl/), [Shift2](https://www.shift2.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | +| Tilburgse frontend | Ja | [Acato](https://acato.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Conduction](https://conduction.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | +| Drupal Site | Ja | [Drupal voor Overheden](https://www.drupalvooroverheden.nl/) | Een weergavecomponent voor Drupal | | | TYPO3 thema site | Ja | [OpenGemeenten](https://www.opengemeenten.nl/) | Een weergavecomponent voor TYPO3-websites | | Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgende landelijke publicatieplatformen @@ -27,30 +29,53 @@ Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgen - Een gestandaardiseerde verbinding met het Kennis- en Exploitatiecentrum Officiële Publicaties (KOOP) - Een federale zoekvraag via [koophulpje.nl](https://koophulpje.nl/). - WooGLe van de Wooverheid van de UvA. +- KoopHulpje van OpenWoo.app +- OpenCatalogi.nl van Rotterdam > **notice** > Voor Open Source componenten bent u natuurlijk niet beperkt tot deze leveranciers, dit zijn de op dit moment bij ons bekende leveranciers. > > Weet u niet welk frontend framework uw organisatie op dit moment gebruikt? Kijk dan eens op [digimonitor](https://www.digimonitor.nl/cms-en/gemeenten/). -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Publicatie.svg) +![Publicatie Platformen Architectuur](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/PublicatiePlatformen.svg) ### Motorblok (onderdeel 2) -Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) component [OpenIndex](https://openindex.online/) dat haar oorsprong vindt in het [OpenCatalogi](https://opencatalogi.nl/) project. Dit OpenIndex-component stel ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van een MongoDB-object store. +Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [Open Catalogi](https://documentatie.opencatalogi.nl/) vanuit dit poject nemen we een 2 tal componenten over te te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). + +**Open Index** stel ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van elastic search. Open index normaliseerd en standaaardiseerd elastic search voor ons door het toevoegen van json-ld, contextueele metadata, organisaties, directory en catalogi waardoor de onderliggende infrastructuur ontstaat voor een federatieve zoekvraag. Het vormt daarmee het hard van zoeken in OpenWoo.app. Meer informatie over hoe we de techniek van Open Index inzetten vind je in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). + +**Open Registers** levert voor ons een publicatie register waar publicaties binnen komen (automtatisch aan de hand van synchronysatie of handmatig) en we deze behandelen voordat ze verder worden gecomuniseerd naar Open Index. + +Er is dus een bewuste en harde scheiding tussen de werkbak (open Registers) en de publicatie bak (open INdex) waarbij de zoek-API (en daarme de burger interface) gebruii maakt van de zoekbak. De medewerkers maken via de Admin-UI en beheers interface gebruik van Open Registers om publicaties te behandelen, onder het behandelen van publicatie verstaan we onder andere +- Controleren en aanvullen van metadata +- Toevoegen van documenten +- Controleren van annonimisering +- Evenuteel annonimiseren a.h.v. externe servcie +- Accoderen voor publicatie +- Eventueel terugtrekken van publicaties +- Archiveren + +Hierbij dient te worden opgemerkt dat het publicatie princiepe niet allen de WOO maar ook WHO en DSO onderstuend. + +Ahankenlijk van de specifieke configuratie wensen van overheden kunnen sommige van deze handelingen worden geautomatiseerd (bijvoorbeeld terugtrekken van en DSO publicatie die ter inzage ligt na het verloop van het termijn). Hiervoor ondersteunen we twee patronen -Het tweede component is de [OpenWoo service](https://openwoo.openservices.online/), gebaseerd op het Common Ground [OpenServices](https://openservices.online/) framework. Deze service faciliteert de data-uitwisseling tussen de onderliggende bronnen en de [Open Index](https://openindex.online/). +- Een BPMN (Camunda) task die wordt afgetrap n.a.v een notificatie bericht +- Een NextCloud workflow + +**OpenWoo Service** gebaseerd op het Common Ground [OpenS ervices](https://openservices.online/) framework faciliteerd het inlezen van externe bronnen naar `open index`toe. Hierbij wordt bij voorkeur gebruik gemaakt van een pubsub principe (abbonement op notifiacties vanuit de bron) maar kan ook (indien gewenst) gebruik worden gemaakt van crawling. | Component | Leverancier | Meer informatie | |-----------------|---------------|---------------------------------------------------| -| Open Index | Conduction | [Open Index](https://index.openregisters.app/) | -| OpenWoo Service | Conduction | [Lees meer](https://openwoo.openservices.online/) | +| Open Index | [Conduction](https://conduction.nl/) | [Documentatie](https://index.openregisters.app/) | +| Open Registers | [Conduction](https://conduction.nl/) | [Documentatie](https://openregisters.app/) | +| OpenWoo Service | [Conduction](https://conduction.nl/) | [Documentatie](https://openwoo.openservices.online/) | -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Integratie.svg) +![Componenten Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Componenten.svg) ### Bronnen (onderdeel 3) -Een van de krachten van OpenWoo.app is het ondersteunen en automatisch publiceren vanuit een groot aantal bronnen +Een van de krachten van OpenWoo.app is het ondersteunen en (automatisch) publiceren vanuit een groot aantal bronnen | Component | Koppelvlak | Open Source | Leveranciers(s) | Meer informatie | |------------------|------------|-------------|-----------------------------------------------|-----------------| @@ -76,18 +101,22 @@ De drie onderdelen samen geven ons een totaalbeeld van samenwerkende componenten ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Totaal.svg) -## Hoe werkt dat scrapen vanuit de integratievoorziening? +## Hoe werkt dat scrapen vanuit de woo service? -De integratievoorziening "scraped" elke nacht alle relevante informatie en bouwt hier een organisatie-specifieke index over op. De stappen zijn als volgt: +De woo service "scraped" elke nacht alle relevante informatie en synchronyseerd deze met de publicatie objecten in Open Registers. De stappen zijn (bijvoorbeeld bij een zaaksysteem) als volgt: 1. Ophalen van alle zaaktypen. 2. Per zaaktype worden de beschikbare eigenschappen gecontroleerd (zie inrichting zaaksysteem). 3. Voor elk zaaktype dat aan de voorwaarden voldoet, worden de zaken opgehaald. -4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen in de index. -5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in de index staan, worden verwijderd. +4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen opgenomen of bijgewerkt als publicatie object in Open Registers. +5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in Open Registers staan, worden gedepubliceerd en geoormerkt. Het bovenstaande proces zorgt ervoor dat het zaaksysteem leidend is en dat zaken zowel kunnen worden gepubliceerd als worden gedepubliceerd. + + + + ## Integraal (Organisatiebreed) zoeken De kern van de Woo is het zoeken in de openbare informatie van een overheid organisatie, hierbij zou het in theorie niet mogen uitmaken in welke bron/applicatie informatie staat. Deze vorm van bron en domein overstijgend zoeken kennen we vanuit overheid architectuur al langer en noemen we doorgaans integrale zoekvraag. @@ -101,14 +130,6 @@ Er word hierbij dus géén gebruik gemaakt van een landelijke index, het geen da De bevragingen tussen de federale zoekvraag en de verschillende organisaties kan via [NLX/FSC]( https://www.nlx.io/) lopen, of daarbuiten. Gezien het publieke bevragingen zijn op openbare informatie is NLX an zich niet verplicht en kan het inregelen van een PKI certificaat nodeloos complex zijn. Dat gezegd hebbende biedt NLX ook voordelen met betrekking tot het monitoren en loggen van verkeer. ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Federatie.svg) -## Commonground -Als commonground applicatie is OpenWoo.app uitaard op te delen in componenten - -- Publicatie Platform (laag 5 Interactie) -- Woo Service (laag 4 Services) -- Open Index (laag 3 Integratie) - -![Common Ground](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/CommonGround.svg) ## Domeinen OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties onderling een federatief netwerk vormen. Dat kan het wat onduidenlijk maken wat waar leeft. From 8341faf0939a2eafbba3ea9635a7f042fded86a8 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 25 Jun 2024 07:56:40 +0200 Subject: [PATCH 03/34] Herschrijven van Architectuur in lijn met Open Catalogi --- docs/product/Features.md | 3 ++ docs/techniek/Architectuur.md | 60 ++++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/docs/product/Features.md b/docs/product/Features.md index 12c07b05..bd00f8a1 100644 --- a/docs/product/Features.md +++ b/docs/product/Features.md @@ -1,5 +1,8 @@ # Features +Een federaale search API + + ## Centrale Index Pagina Een overzichtelijke locatie voor alle openbare data van uw organisatie, verbetert de vindbaarheid van informatie. diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index 83e4d6c2..6821b08c 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -4,10 +4,57 @@ > > Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. + +## Doel van OpenWoo.app +De OpenWoo.app heeft als doel om een ecosysteem van samenwerkende componenten te bieden dat voorziet in de volgende functionaliteit + +- Opslag en ontsluiting van documenten en metadata middels API's; +- Het indexeren van documenten en metadata, en het ontsluiten van zoekresultaten middels API's; +- Het werken met (concept) publicaties +- Het uploaden, registreren en publiceren van documenten en metadata door medewerkers; +- Het (door)zoeken, vinden en raadplegen van documenten en metadata door burgers; +- Het beheren van autorisaties, configuratie en publicaties door beheerders; +- Integratie met de landelijke voorziening PLOOI/KOOP, Woogle, Koophulpje, DSO. +- Integratie met standaard gemeentenlijke bronnen zo als zaaksysteem, raadsinformatie systeem en website +- Afhandenlings flow voor zowel publiceren als woo verzoeken +- Generatie van documenten ten behoefe van publiceren en inhouds lijsten +- Koppeling met annonimiserings software +- Naar PDF kunnen omzeten van documenten +- Archiveren +- Opslaan van zoek filters en resultaten +- Aboneren op nieuwe publicaties die voldoen aan een opgeslagen zoek filter +- Het kunnen terugtrekken van publicaties t.b.v herstel op procedurele fouten +- Help functie voor medewerkers aan de hand van werk instructies + +We hebben deze functionaliteit opgedeeld in drie blokken +1. Publicatieplatform +2. Motorblok +3. Bronnen + +Secundair doel daarbij is wat idialistischer: om een gemeenschappenlijke codebase te realiseren die door meerdere leveranciers kan worden uitgeleverd en deze vanaf dag één te betrekken. Het voorkomgen van een locked in vraagt om een open source oplossing die door en door begrepen word door meerdere markt partijen. OpenWoo.app + ## Hergebruik tot op het bot OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [Open Catalogi](https://documentatie.opencatalogi.nl/) meer informatie technsiche informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). +Daar waar we het binnen Open Catalogi over burgers hebben defineren we voor de woo de (sub)doelgroepen inwoners, onderzoekers, journalisten, raadsleden en ondernemers. Het ORC als opslag voor publicaties vertolkt richting de WOO ook de rol van Openbare Documenten Registratie Component (ODRC). Waarbij het configureerdbaar is of documenten daadwerkenlijk worden overgenomen naar het ORC of bij iedere inzage uit de bron worden gehaald (in welk geval alleen de metadata wordt overgenomen). Deze configuratie keuze wordt met name aangeboden om bronsystemen te ontzien of om trage bronsystemen heen te werken. In Elastic Search (die de rol van search vertolkt) worden ten allertijde alleen de metedata gegevens van bestanden opgenomen. + +## Uitdagingen +Bij het ontwikkelen van een publicatie voorziening komen een aantal uitdagingen in beeld + +- Woo gegeves staan vaak opgeslagen in bronnen die niet makkenlijk toegangenlijk zijn +- De scope van de WOO (alle niet vertrouwelijke gegevens) in combinatie met het concept actieve openbaarmaken raakt de volledige informatie huishouden +- Handmatig publiceren kan daarmee geen eindoplossing zijn, maar eigenlijk ook al geen tussen oplossing +- Er mogen géén fouten worden gemaakt met annonimisren, dit vraagt om een afgebakende proces flow met checks en balances rondom publiceren + +Dat leid tot de conclusie dat we niet op zoek zijn naar een WOO publicatie platform maar een algemene publicatie voorzienen die één of meerdere publicatie kanalen kan 'voeden', daarbij denken we naast de WOO Index (koop) ook nadrukenlijk aan een organisatie eigen publicatie platform, Woogle en bijvoorbeeld een gemeentenlijke website. In het verlengde hiervan liggen ook DROP, SDG, Algoritme registers en WHO als kanalen die vanuit een generiek publicatie platform moeten kunnen worden ontsloten. + +## Belangrijkste verschillen ten opzicht van OpenWoo.app 1.0 + +**Splitsing opslag en search** Binnen de OpenWoo.app 1.0 werd er één mongoDB instance als opslag en search gebruikt, we hebben deze zowel qua opslag uit elkaar getrokken in een elastic search en orc instansie als vereeld over twee aparte api's (zoeken en beheer). +**Lostrekken integratie component** De 1.0 versie was direct gebouwd op de common gateway, een integratie voorziening. Vanaf 2.0 zijn de zoek api en beheer api gepositioneerd als losse componenten die (desgewenst) ook op NLX/FSC kunnen worden ontsloten. +**Publicatie flow** De 1.0 versie was gebouwd op de gedachte dat objecten vanuit de bron altijd automatisch moesten worden gepubliceerd. In de 2.0 is dit omgedraaid en wordt er vanuit gegaan dat er actief beheer is op publicaties en dat ze pas worden gepubliceerd als daarte is geacodeerd. Wel kunnen er nog steeds automatische spelregels worden afgesproken. + ### Publicatieplatform (onderdeel 1) Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschickbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoektinterface als los component als voor een intergratie binnen uw huidoge website. @@ -114,9 +161,6 @@ De woo service "scraped" elke nacht alle relevante informatie en synchronyseerd Het bovenstaande proces zorgt ervoor dat het zaaksysteem leidend is en dat zaken zowel kunnen worden gepubliceerd als worden gedepubliceerd. - - - ## Integraal (Organisatiebreed) zoeken De kern van de Woo is het zoeken in de openbare informatie van een overheid organisatie, hierbij zou het in theorie niet mogen uitmaken in welke bron/applicatie informatie staat. Deze vorm van bron en domein overstijgend zoeken kennen we vanuit overheid architectuur al langer en noemen we doorgaans integrale zoekvraag. @@ -151,9 +195,15 @@ OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties ond Dit zijn de aangeboden domeinen vanuit OpenWoo.app, daarnaast zien de dat de meeste organisaties hun publicatie pagina ontsluiten op hun eigen domein e.g. open.[organisatie_naam].nl -## Woo Publicatie-object +## Documenten vs Publicatie Objecten +Vanuit de WOO denken we doorgaans aan documenten die gepubliceerd moeten worden, vanuit OpenWoo.app denken we echter in publicatie objecten waar een of meer documenten aan kunnen worden gekoppeld. Publicatie objecten omvatten de metadata waarmee documenten kunnen worden gevonden, geclusterd en weergegeven (zo als bijvoorbeeld thema's en typen). Publicatie objecten kunnen ook aan elkaar worden gerelateerd, dat is met name relavant in de casus van raads informatie systemen waarbij een stuk hoort bij een agenda item dat hoort bij een agenda bij een vergadering en gekopeld kan zijn aan stem gedrag van personen of facties. + +Het onderling aan elkaar relateren van publicatie objecten leid onderwater tot een 3 dimensionaal datamodel en is een van de redenen waarom er binnen OpenWoo.app is gekozen voor linked data. + +## Metadata +Ieder publicatie object beschickt over een type (bijvoorbeeld woo_verzoek) en een voorgedefineerde metadata set. De metadataset beschrijft wat er in de publicatie aan gegevens wordt verwacht en typeerd dese (bijvoorbeeld heeft titel, de titel is een string) en biedt daarmee context voor de weergave van de publicatie. Dit bied de search UI de mogenlijkheid om cards te maken die geoptimaliseerd zijn voor specifieke WOO categorien en een algemene card voor niet op voorhand gedefineerde of onbekende categorien. -Het Woo Publicatie-object vormt de kern van zowel de Woo-API als de Woo-website. Dit object bevat alle essentiële informatie over een Woo-publicatie, inclusief metadata, publicatiedatum, bijlagen en andere relevante eigenschappen. Het dient als de centrale entiteit waaromheen de functionaliteiten van de API en de website zijn gebouwd. Door deze gecentraliseerde aanpak is het eenvoudiger om Woo-publicaties efficiënt te beheren, op te halen en weer te geven, en draagt het bij aan een coherente en gestroomlijnde gebruikerservaring. +Dat laatste kan voorkomen als een organisatie zelf metedata sets toevoegd, dat mag. Het is mogenlijk voor organisaties om zelf extra metadata beschrijvingen te defineren en hierop te publiceren. Organisaties zijn daarmee ook niet gelimiteerd tot de door KOOP gedefineerde categorien. Dit is ook een van de redenen waarom zoeken UI de faceted search MOET implementeren (zie ook de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/)). Het is niet op voorhand voorspelbaar op welke aspecten kan worden gezocht, dit is afhankenlijk van de publicaties en gedefineerde metadata zo als gepubliceerd door deelnemende organisaties. ## Roadmap From b36363e0d620fbabe41f8c30f0e3643718ab60d8 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 25 Jun 2024 11:57:08 +0200 Subject: [PATCH 04/34] Inzichtenlijk gemaakt wat wel en wat niet af is --- docs/techniek/Architectuur.md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index 6821b08c..4946e03d 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -8,23 +8,24 @@ ## Doel van OpenWoo.app De OpenWoo.app heeft als doel om een ecosysteem van samenwerkende componenten te bieden dat voorziet in de volgende functionaliteit -- Opslag en ontsluiting van documenten en metadata middels API's; -- Het indexeren van documenten en metadata, en het ontsluiten van zoekresultaten middels API's; -- Het werken met (concept) publicaties -- Het uploaden, registreren en publiceren van documenten en metadata door medewerkers; -- Het (door)zoeken, vinden en raadplegen van documenten en metadata door burgers; -- Het beheren van autorisaties, configuratie en publicaties door beheerders; -- Integratie met de landelijke voorziening PLOOI/KOOP, Woogle, Koophulpje, DSO. -- Integratie met standaard gemeentenlijke bronnen zo als zaaksysteem, raadsinformatie systeem en website -- Afhandenlings flow voor zowel publiceren als woo verzoeken -- Generatie van documenten ten behoefe van publiceren en inhouds lijsten -- Koppeling met annonimiserings software -- Naar PDF kunnen omzeten van documenten -- Archiveren -- Opslaan van zoek filters en resultaten -- Aboneren op nieuwe publicaties die voldoen aan een opgeslagen zoek filter -- Het kunnen terugtrekken van publicaties t.b.v herstel op procedurele fouten -- Help functie voor medewerkers aan de hand van werk instructies +- [X] Opslag en ontsluiting van documenten en metadata middels API's; +- [X] Het indexeren van documenten en metadata, en het ontsluiten van zoekresultaten middels API's; +- [X] Het werken met (concept) publicaties +- [X] Het uploaden, registreren en publiceren van documenten en metadata door medewerkers; +- [X] Het (door)zoeken, vinden en raadplegen van documenten en metadata door burgers; +- [X] Het beheren van autorisaties, configuratie en publicaties door beheerders; +- [X] Integratie met de landelijke voorziening PLOOI/KOOP, Woogle, Koophulpje, DSO. +- [X] Integratie met standaard gemeentenlijke bronnen zo als zaaksysteem, raadsinformatie systeem en website +- [X] Afhandenlings flow voor zowel publiceren als woo verzoeken +- [X] Het kunnen terugtrekken van publicaties t.b.v herstel op procedurele fouten +- [X] Help functie voor medewerkers aan de hand van werk instructies +- [X] Interne publicaties die niet openbaar toegankenlijk zijn +- [ ] (Roadmap) Generatie van documenten ten behoefe van publiceren en inhouds lijsten +- [ ] (Roadmap) Koppeling met annonimiserings software +- [ ] (Roadmap) Naar PDF kunnen omzeten van documenten +- [ ] (Roadmap) Archiveren +- [ ] (Roadmap) Opslaan van zoek filters en resultaten +- [ ] (Roadmap) Aboneren op nieuwe publicaties die voldoen aan een opgeslagen zoek filter We hebben deze functionaliteit opgedeeld in drie blokken 1. Publicatieplatform From cc95350fdb59d978c87e9f792088e53ee8b86697 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 25 Jun 2024 14:42:21 +0200 Subject: [PATCH 05/34] Fix for missing svg fles --- docs/Componenten.puml | 61 +++++++++++++++++--- docs/PublicatiePlatformen.svg | 1 + docs/componenten.svg | 1 + docs/components.puml | 101 +++++++++++++++++++++------------- 4 files changed, 119 insertions(+), 45 deletions(-) create mode 100644 docs/PublicatiePlatformen.svg create mode 100644 docs/componenten.svg diff --git a/docs/Componenten.puml b/docs/Componenten.puml index ce7aecfc..71d53c80 100644 --- a/docs/Componenten.puml +++ b/docs/Componenten.puml @@ -1,7 +1,39 @@ @startuml -title Motorblok -footer: OpenWoo.app -header: OpenWoo.app +title: Components +footer: Open Catalogi | Components +header: Open Catalogi | Components + +cloud "Identity & Access"{ + [ADFS] as identity +} + +cloud "Gebruikers"{ +actor "Burger" as burger +actor "Ambtenaar" as medewerker +actor "Beheerder" as adminUser +} + +cloud "Externe Applicaties"{ +package "Bronnen" { + [Zaaksysteem] as ZGW + [Etc.] as ETC +} +package "Catalogi" { + [Externe Catalogus] as externalCatalogue +} +} + +cloud "Kubernetes"{ + +package "Layer 5 (Interaction)" { +package "React NL Design" { + [Zoeken UI] as ui +} + +package "Vue NL Design" { + [Beheer UI] as admin +} +} package "Layer 4 (Logic)" as layer4 { [Synchronisaties] as service @@ -10,10 +42,10 @@ package "Layer 4 (Logic)" as layer4 { package "Layer 2 (API)" as layer2 { package "Open Index" { - [Search API] as SearchAPI + [Zoeken API] as SearchAPI } package "Open Registers" { - [Admin API] as ObjectsAPI + [Beheer API] as ObjectsAPI } } @@ -26,11 +58,26 @@ package "Search Index" { package "Object Store" { [ORC] as db } + +package "Document Store" { + [DRC] as drc } +} + +externalCatalogue <..> SearchAPI: Search + Directory +burger <..> ui: Zoeken via browser (ANONIEM) +medewerker <..> ui: Zoeken via browser (ANONIEM) +adminUser <..> admin: Beheren via browser (JWT Claim) + +ui <..> SearchAPI: Search + Directory +admin <..> ObjectsAPI: Publicaties + Catalogi + Metadata +ZGW <..> service: Synchronisatie +ETC <..> service: Synchronisatie -db .left.> search: Update ObjectsAPI .down.> db: Persist +ObjectsAPI .down.> drc: Persist SearchAPI <.down. search: Lookup +SearchAPI <.down. drc: Lookup +layer2 .down.> identity: AUTH service .down.> ObjectsAPI: In synchroniseren van publicaties - @enduml \ No newline at end of file diff --git a/docs/PublicatiePlatformen.svg b/docs/PublicatiePlatformen.svg new file mode 100644 index 00000000..9ec47df8 --- /dev/null +++ b/docs/PublicatiePlatformen.svg @@ -0,0 +1 @@ +OpenWoo.appPublicatie platformenPublicatie platformenAPI's (Laag 2)KOOPWOOGLEOpen CatalogiKoopHulpjeWebsiteThema siteZoek paginaSearch APIIndexeerd (XML Sitemap)Indexeerd (API)Bevraagd (API)Bevraagd (API)Bevraagd (API)Bevraagd (API)Bevraagd (API)OpenWoo.app \ No newline at end of file diff --git a/docs/componenten.svg b/docs/componenten.svg new file mode 100644 index 00000000..58dc183a --- /dev/null +++ b/docs/componenten.svg @@ -0,0 +1 @@ +Open Catalogi | ComponentsComponentsIdentity & AccessGebruikersExterne ApplicatiesBronnenCatalogiKubernetesLayer 5 (Interaction)React NL DesignVue NL DesignLayer 4 (Logic)Layer 2 (API)Open IndexOpen RegistersLayer 1 (Data)Search IndexObject StoreDocument StoreADFSBurgerAmbtenaarBeheerderZaaksysteemEtc.Externe CatalogusZoeken UIBeheer UISynchronisatiesZoeken APIBeheer APIElastic SearchORCDRCSearch + DirectoryZoeken via browser (ANONIEM)Zoeken via browser (ANONIEM)Beheren via browser (JWT Claim)Search + DirectoryPublicaties + Catalogi + MetadataSynchronisatieSynchronisatiePersistPersistLookupLookupAUTHIn synchroniseren van publicatiesOpen Catalogi | Components \ No newline at end of file diff --git a/docs/components.puml b/docs/components.puml index 5fad89d3..605e5e00 100644 --- a/docs/components.puml +++ b/docs/components.puml @@ -1,55 +1,80 @@ @startuml -title Algemene Architectuur en keuze mogenlijkheden -footer: OpenWoo.app -header: OpenWoo.app +title: Open Catalogi +footer: Open Catalogi | Components +header: Components +interface "F5 extern (port 443)" as f5extern +interface "F5 intern (port 443)" as f5intern -' Publicatie platformen (Laag 5 UI) -frame "Publicatie platformen " { - actor "KOOP" as KOOP #1abc9c - actor "WOOGLE" as WOOGLE #1abc9c - interface "Website" AS Website #cce5ff - interface "Thema site" as Themasite #cce5ff - interface "Zoek pagina" as Searchsite #1abc9c +interface "Hipp (outd of scope)" as hipp + +cloud "Azure"{ + [ADFS] as identity } -' Services(Laag 4) -frame "Services" { - process "OpenWoo Service" as OWS #1abc9c +cloud "Internet"{ +actor "User" as user +actor "Admin" as adminUser +actor "Externe Catalogus" as externalCatalouge + } -' Integratie (Laag 3) -frame "Integratie" { - database "Open Index" as OI #1abc9c - component "Federatieve Connectie" as FCS #1abc9c + +cloud "Kubernetes"{ + +package "Layer 5 (interaction)" { +package "React NL Design" { + [User Interface] as ui } -' Bronnen (Laag 2) -frame "Bronnen" { - database "Zaaksysteem (ZGW)" as ZRC #cce5ff - database "Raadsinformatiesysteem (RIS)" as RIS #cce5ff - database "Website (CMS)" as CMS #cce5ff - database "Archief" as DEPOT #cce5ff +package "Vue NL Design" { + [Admin Interface] as admin +} } -frame "Legenda" { - component "Standaard onderdeel" #1abc9c - component "Optioneel" #cce5ff +package "Layer 4 (Logic)" as layer4 { + [Synchronysations] as service +} + + +package "Layer 2 (API)" as layer2 { + + +package "Open Catalogi App" { + [Search API] as SearchAPI + [CRUD API] as ObjectsAPI +} + + +} + +} + +package "Layer 1 (data)" { + +package "Search index" { + [Elastic Search] as search +} + +package "Object Store" { + [ORC] as db +} } -OWS -down-> ZRC: Indexeerd -OWS -down-> RIS: Indexeerd -OWS -down-> CMS: Indexeerd -OWS -down-> DEPOT: Indexeerd -OWS ..> OI: Slaat op in +externalCatalouge <..> hipp: PKIO +hipp <..> SearchAPI: Catalogus uitwisselingen -FCS ..> OI : Bevraagd -KOOP -down-> FCS : Indexeerd (XML Sitemap) -WOOGLE -down-> FCS : Indexeerd (API) -Website -down-> FCS : Bevraagd (API) -Themasite -down-> FCS : Bevraagd (API) -Searchsite -down-> FCS : Bevraagd (API) +user <..> f5extern: Browser ANONIEM +adminUser <..> f5intern : Browser MET JWT Claim +f5extern <..> ui: Alleen openbare endpoints en objecten +f5intern <..> admin: Alle endpionts +ui <..> SearchAPI: Alle endpionts +admin <..> ObjectsAPI: Alle endpionts +ObjectsAPI .down.> db: Persist +SearchAPI .down.> search: Look up +layer2 .down.> identity: AUTH +service .down.> ObjectsAPI: AUTH -@enduml +@enduml \ No newline at end of file From aa03d0f46758a81d47354025a365693925d8ed66 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 26 Jun 2024 22:44:30 +0200 Subject: [PATCH 06/34] spellcheck doen --- docs/techniek/Architectuur.md | 170 ++++++++++++++++++---------------- docs/techniek/Configuratie.md | 30 +++--- docs/techniek/Installatie.md | 6 +- docs/techniek/Tests.md | 20 ++-- 4 files changed, 118 insertions(+), 108 deletions(-) diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index 4946e03d..b5905381 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -4,8 +4,8 @@ > > Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. - ## Doel van OpenWoo.app + De OpenWoo.app heeft als doel om een ecosysteem van samenwerkende componenten te bieden dat voorziet in de volgende functionaliteit - [X] Opslag en ontsluiting van documenten en metadata middels API's; @@ -14,59 +14,61 @@ De OpenWoo.app heeft als doel om een ecosysteem van samenwerkende componenten te - [X] Het uploaden, registreren en publiceren van documenten en metadata door medewerkers; - [X] Het (door)zoeken, vinden en raadplegen van documenten en metadata door burgers; - [X] Het beheren van autorisaties, configuratie en publicaties door beheerders; -- [X] Integratie met de landelijke voorziening PLOOI/KOOP, Woogle, Koophulpje, DSO. -- [X] Integratie met standaard gemeentenlijke bronnen zo als zaaksysteem, raadsinformatie systeem en website -- [X] Afhandenlings flow voor zowel publiceren als woo verzoeken +- [X] Integratie met de landelijke voorziening PLOOI/KOOP, WooGLe, Koophulpje, DSO. +- [X] Integratie met standaard gemeentenlijke bronnen zoals zaaksysteem, raadsinformatiesysteem en website +- [X] Afhandelingsflow voor zowel publiceren als Woo-verzoeken - [X] Het kunnen terugtrekken van publicaties t.b.v herstel op procedurele fouten - [X] Help functie voor medewerkers aan de hand van werk instructies -- [X] Interne publicaties die niet openbaar toegankenlijk zijn -- [ ] (Roadmap) Generatie van documenten ten behoefe van publiceren en inhouds lijsten -- [ ] (Roadmap) Koppeling met annonimiserings software -- [ ] (Roadmap) Naar PDF kunnen omzeten van documenten +- [X] Interne publicaties die niet openbaar toegankelijk zijn +- [ ] (Roadmap) Generatie van documenten ten behoefe van publiceren en inhoudslijsten +- [ ] (Roadmap) Koppeling met anonimiseringssoftware +- [ ] (Roadmap) Naar PDF kunnen omzetten van documenten - [ ] (Roadmap) Archiveren -- [ ] (Roadmap) Opslaan van zoek filters en resultaten -- [ ] (Roadmap) Aboneren op nieuwe publicaties die voldoen aan een opgeslagen zoek filter +- [ ] (Roadmap) Opslaan van zoekfilters en resultaten +- [ ] (Roadmap) Abboneren op nieuwe publicaties die voldoen aan een opgeslagen zoekfilter We hebben deze functionaliteit opgedeeld in drie blokken + 1. Publicatieplatform -2. Motorblok +2. Motorblok 3. Bronnen -Secundair doel daarbij is wat idialistischer: om een gemeenschappenlijke codebase te realiseren die door meerdere leveranciers kan worden uitgeleverd en deze vanaf dag één te betrekken. Het voorkomgen van een locked in vraagt om een open source oplossing die door en door begrepen word door meerdere markt partijen. OpenWoo.app +Secundair doel daarbij is wat idealistischer: om een gemeenschappelijke codebase te realiseren die door meerdere leveranciers kan worden uitgeleverd en deze vanaf dag één te betrekken. Het voorkomen van een locked in vraagt om een open source oplossing die door en door begrepen wordt door meerdere markt partijen. ## Hergebruik tot op het bot -OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [Open Catalogi](https://documentatie.opencatalogi.nl/) meer informatie technsiche informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). +OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [OpenCatalogi](https://documentatie.opencatalogi.nl/). Meer technische informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). -Daar waar we het binnen Open Catalogi over burgers hebben defineren we voor de woo de (sub)doelgroepen inwoners, onderzoekers, journalisten, raadsleden en ondernemers. Het ORC als opslag voor publicaties vertolkt richting de WOO ook de rol van Openbare Documenten Registratie Component (ODRC). Waarbij het configureerdbaar is of documenten daadwerkenlijk worden overgenomen naar het ORC of bij iedere inzage uit de bron worden gehaald (in welk geval alleen de metadata wordt overgenomen). Deze configuratie keuze wordt met name aangeboden om bronsystemen te ontzien of om trage bronsystemen heen te werken. In Elastic Search (die de rol van search vertolkt) worden ten allertijde alleen de metedata gegevens van bestanden opgenomen. +Daar waar we het binnen Open Catalogi over burgers hebben definiëren we voor de Woo de (sub)doelgroepen, inwoners, onderzoekers, journalisten, raadsleden en ondernemers. Het ORC als opslag voor publicaties vertolkt richting de WOO ook de rol van Openbare Documenten Registratie Component (ODRC). Waarbij het configureerbaar is of documenten daadwerkelijk worden overgenomen naar het ORC of bij iedere inzage uit de bron worden gehaald (in welk geval alleen de metadata wordt overgenomen). Deze configuratie keuze wordt met name aangeboden om bronsystemen te ontzien of om trage bronsystemen heen te werken. In Elastic Search (die de rol van search vertolkt) worden ten allestijden alleen de metadata gegevens van bestanden opgenomen. ## Uitdagingen + Bij het ontwikkelen van een publicatie voorziening komen een aantal uitdagingen in beeld -- Woo gegeves staan vaak opgeslagen in bronnen die niet makkenlijk toegangenlijk zijn -- De scope van de WOO (alle niet vertrouwelijke gegevens) in combinatie met het concept actieve openbaarmaken raakt de volledige informatie huishouden +- Woo gegevens staan vaak opgeslagen in bronnen die niet makkelijk toegankelijk zijn +- De scope van de WOO (alle niet vertrouwelijke gegevens) in combinatie met het concept actieve openbaarmaking raakt de volledige informatie huishouden - Handmatig publiceren kan daarmee geen eindoplossing zijn, maar eigenlijk ook al geen tussen oplossing -- Er mogen géén fouten worden gemaakt met annonimisren, dit vraagt om een afgebakende proces flow met checks en balances rondom publiceren +- Er mogen géén fouten worden gemaakt met anonimiseren, dit vraagt om een afgebakende proces flow met checks en balances rondom publiceren -Dat leid tot de conclusie dat we niet op zoek zijn naar een WOO publicatie platform maar een algemene publicatie voorzienen die één of meerdere publicatie kanalen kan 'voeden', daarbij denken we naast de WOO Index (koop) ook nadrukenlijk aan een organisatie eigen publicatie platform, Woogle en bijvoorbeeld een gemeentenlijke website. In het verlengde hiervan liggen ook DROP, SDG, Algoritme registers en WHO als kanalen die vanuit een generiek publicatie platform moeten kunnen worden ontsloten. +Dat leidt tot de conclusie dat we niet op zoek zijn naar een WOO-publicatieplatform maar een algemene publicatie voorzienen die één of meerdere publicatie kanalen kan 'voeden', daarbij denken we naast de WOO-Index (koop) ook nadrukkelijk aan een organisatie eigen publicatie platform, WooGLe en bijvoorbeeld een gemeentelijke website. In het verlengde hiervan liggen ook DROP, SDG, Algoritme registers en WHO als kanalen die vanuit een generiek publicatie platform moeten kunnen worden ontsloten. ## Belangrijkste verschillen ten opzicht van OpenWoo.app 1.0 -**Splitsing opslag en search** Binnen de OpenWoo.app 1.0 werd er één mongoDB instance als opslag en search gebruikt, we hebben deze zowel qua opslag uit elkaar getrokken in een elastic search en orc instansie als vereeld over twee aparte api's (zoeken en beheer). -**Lostrekken integratie component** De 1.0 versie was direct gebouwd op de common gateway, een integratie voorziening. Vanaf 2.0 zijn de zoek api en beheer api gepositioneerd als losse componenten die (desgewenst) ook op NLX/FSC kunnen worden ontsloten. -**Publicatie flow** De 1.0 versie was gebouwd op de gedachte dat objecten vanuit de bron altijd automatisch moesten worden gepubliceerd. In de 2.0 is dit omgedraaid en wordt er vanuit gegaan dat er actief beheer is op publicaties en dat ze pas worden gepubliceerd als daarte is geacodeerd. Wel kunnen er nog steeds automatische spelregels worden afgesproken. +**Splitsing opslag en search** Binnen de OpenWoo.app 1.0 werd er één mongoDB instance als opslag en search gebruikt, we hebben deze zowel qua opslag uit elkaar getrokken in een Elasticsearch en ORC-instantie als verdeeld over twee aparte API's (zoeken en beheer). +**Lostrekken integratie component** De 1.0 versie was direct gebouwd op de Common Gateway, een integratie voorziening. Vanaf 2.0 zijn de zoek-API en beheer-API gepositioneerd als losse componenten die (desgewenst) ook op NLX/FSC kunnen worden ontsloten. +**Publicatie flow** De 1.0 versie was gebouwd op de gedachte dat objecten vanuit de bron altijd automatisch moesten worden gepubliceerd. In de 2.0 is dit omgedraaid en wordt er vanuit gegaan dat er actief beheer is op publicaties en dat ze pas worden gepubliceerd als daartoe is geaccordeerd. Wel kunnen er nog steeds automatische spelregels worden afgesproken. ### Publicatieplatform (onderdeel 1) -Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschickbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoektinterface als los component als voor een intergratie binnen uw huidoge website. +Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI, maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschikbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoekinterface als los component als voor een integratie binnen uw huidige website. -Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). U kunt de interfaces dan ook niet gebruiken zonder een Open Catalogi zoeken-api. +Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). U kunt de interfaces dan ook niet gebruiken zonder een Open Catalogi zoeken-API. . | Component | Open Source | Leverancier(s) | Beschrijving | Meer informatie | |-------------------------------|-------------|----------------------------------------------------------|-------------------------------------------------------------------|-----------------| -| Open Catalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | -| OpenWoo.app default zoeken-Ui | Ja | [Conduction](https://conduction.nl/), [Shift2](https://www.shift2.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | +| Open Catalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| OpenWoo.app default zoeken-Ui | Ja | [Conduction](https://conduction.nl/), [Shift2](https://www.shift2.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | Tilburgse frontend | Ja | [Acato](https://acato.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | | Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Conduction](https://conduction.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | | Drupal Site | Ja | [Drupal voor Overheden](https://www.drupalvooroverheden.nl/) | Een weergavecomponent voor Drupal | | @@ -89,29 +91,30 @@ Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgen ### Motorblok (onderdeel 2) -Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [Open Catalogi](https://documentatie.opencatalogi.nl/) vanuit dit poject nemen we een 2 tal componenten over te te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). +Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [Open Catalogi](https://documentatie.opencatalogi.nl/) vanuit dit project nemen we een 2-tal componenten over; te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). + +**Open Index** stelt ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van Elasticsearch. Open Index normaliseert en standaardiseert Elasticsearch voor ons door het toevoegen van JSON-ld, contextuele metadata, organisaties, directory en catalogi waardoor de onderliggende infrastructuur ontstaat voor een federatieve zoekvraag. Het vormt daarmee het hard van zoeken in OpenWoo.app. Meer informatie over hoe we de techniek van Open Index inzetten vind je in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). -**Open Index** stel ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van elastic search. Open index normaliseerd en standaaardiseerd elastic search voor ons door het toevoegen van json-ld, contextueele metadata, organisaties, directory en catalogi waardoor de onderliggende infrastructuur ontstaat voor een federatieve zoekvraag. Het vormt daarmee het hard van zoeken in OpenWoo.app. Meer informatie over hoe we de techniek van Open Index inzetten vind je in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). +**Open Registers** levert voor ons een publicatie register waar publicaties binnen komen (automatisch aan de hand van synchronisatie of handmatig) en we deze behandelen voordat ze verder worden gecommuniceerd naar Open Index. -**Open Registers** levert voor ons een publicatie register waar publicaties binnen komen (automtatisch aan de hand van synchronysatie of handmatig) en we deze behandelen voordat ze verder worden gecomuniseerd naar Open Index. +Er is dus een bewuste en harde scheiding tussen de werkbak (Open Registers) en de publicatiebak (Open Index) waarbij de zoek-API (en daarmee de burger interface) gebruik maakt van de zoekbak. De medewerkers maken via de Admin-UI en beheerinterface gebruik van Open Registers om publicaties te behandelen. Onder het behandelen van publicatie verstaan we onder andere: -Er is dus een bewuste en harde scheiding tussen de werkbak (open Registers) en de publicatie bak (open INdex) waarbij de zoek-API (en daarme de burger interface) gebruii maakt van de zoekbak. De medewerkers maken via de Admin-UI en beheers interface gebruik van Open Registers om publicaties te behandelen, onder het behandelen van publicatie verstaan we onder andere - Controleren en aanvullen van metadata - Toevoegen van documenten -- Controleren van annonimisering -- Evenuteel annonimiseren a.h.v. externe servcie -- Accoderen voor publicatie +- Controleren van anonimisering +- Eventueel anonimiseren a.h.v. externe service +- Accorderen voor publicatie - Eventueel terugtrekken van publicaties - Archiveren -Hierbij dient te worden opgemerkt dat het publicatie princiepe niet allen de WOO maar ook WHO en DSO onderstuend. +Hierbij dient te worden opgemerkt dat het publicatieprincipe niet allen de WOO maar ook WHO en DSO ondersteund. -Ahankenlijk van de specifieke configuratie wensen van overheden kunnen sommige van deze handelingen worden geautomatiseerd (bijvoorbeeld terugtrekken van en DSO publicatie die ter inzage ligt na het verloop van het termijn). Hiervoor ondersteunen we twee patronen +Afhankelijk van de specifieke configuratie wensen van overheden kunnen sommige van deze handelingen worden geautomatiseerd (bijvoorbeeld terugtrekken van en DSO-publicatie die ter inzage ligt na het verloop van de termijn). Hiervoor ondersteunen we twee patronen -- Een BPMN (Camunda) task die wordt afgetrap n.a.v een notificatie bericht -- Een NextCloud workflow +- Een BPMN (Camunda) task die wordt afgetrapt n.a.v een notificatiebericht +- Een NextCloud-workflow -**OpenWoo Service** gebaseerd op het Common Ground [OpenS ervices](https://openservices.online/) framework faciliteerd het inlezen van externe bronnen naar `open index`toe. Hierbij wordt bij voorkeur gebruik gemaakt van een pubsub principe (abbonement op notifiacties vanuit de bron) maar kan ook (indien gewenst) gebruik worden gemaakt van crawling. +**OpenWoo Service** gebaseerd op het Common Ground [Open Services](https://openservices.online/) framework faciliteert het inlezen van externe bronnen naar `open index` toe. Hierbij wordt bij voorkeur gebruik gemaakt van een Pub/Sub-principe (abonnement op notificaties vanuit de bron) maar kan ook (indien gewenst) gebruik worden gemaakt van crawling. | Component | Leverancier | Meer informatie | |-----------------|---------------|---------------------------------------------------| @@ -125,21 +128,21 @@ Ahankenlijk van de specifieke configuratie wensen van overheden kunnen sommige v Een van de krachten van OpenWoo.app is het ondersteunen en (automatisch) publiceren vanuit een groot aantal bronnen -| Component | Koppelvlak | Open Source | Leveranciers(s) | Meer informatie | +| Component        | Koppelvlak | Open Source | Leveranciers(s)                                  | Meer informatie | |------------------|------------|-------------|-----------------------------------------------|-----------------| -| Zaaksysteem.nl | Search | Ja | [Xxllnc](https://xxllnc.nl/) | | -| RX Fundament | ZGW | Nee | [Roxit](https://www.roxit.nl/) | | -| Decos JOIN | ZGW | Nee | [Decos](https://www.decos.com/nl) | | -| OpenZaak | ZGW | Ja | [Maykin Media](https://www.maykinmedia.nl/nl/) | | -| SimSite | Custom API | ? | [SIM Groep](https://www.simgroep.nl/) | | -| Open Verzoeken | Custom API | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | | -| Open Convenanten | Custom API | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | | -| Open Klachten | Custom API | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | | -| Open PUB | Custom API | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | | -| Open PDC | Custom API | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | | +| Zaaksysteem.nl   | Search     | Ja          | [Xxllnc](https://xxllnc.nl/)                  |                 | +| RX Fundament     | ZGW        | Nee         | [Roxit](https://www.roxit.nl/)                |                 | +| Decos JOIN       | ZGW        | Nee         | [Decos](https://www.decos.com/nl)             |                 | +| OpenZaak         | ZGW        | Ja          | [Maykin Media](https://www.maykinmedia.nl/nl/) |                 | +| SimSite          | Custom API | ?           | [SIM Groep](https://www.simgroep.nl/)                                      |                 | +| Open Verzoeken   | Custom API | Ja          | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/)                                          |                 | +| Open Convenanten | Custom API | Ja          | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) |                 | +| Open Klachten    | Custom API | Ja          | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) |                 | +| Open PUB         | Custom API | Ja          | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) |                 | +| Open PDC         | Custom API | Ja          | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) |                 | > **notice** -> Er zijn meer koppelvlakken en daarmee bronnen beschickbaar (bijvoorbeeld StUF en ZDS). Bovenstaande is slechts een overzicht van de bij ons bekende en beproefte bronnen. Andere koppelvlakken en maatwerk zijn uiteraard ook mogenlijk, neem daarvoor contact op met een leverancier. +> Er zijn meer koppelvlakken en daarmee bronnen beschickbaar (bijvoorbeeld StUF en ZDS). Bovenstaande is slechts een overzicht van de bij ons bekende en beproefte bronnen. Andere koppelvlakken en maatwerk zijn uiteraard ook mogenlijk, neem daarvoor contact op met een leverancier.   ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Bronnen.svg) @@ -149,62 +152,65 @@ De drie onderdelen samen geven ons een totaalbeeld van samenwerkende componenten ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Totaal.svg) -## Hoe werkt dat scrapen vanuit de woo service? +## Hoe werkt dat scrapen vanuit de Woo-service? -De woo service "scraped" elke nacht alle relevante informatie en synchronyseerd deze met de publicatie objecten in Open Registers. De stappen zijn (bijvoorbeeld bij een zaaksysteem) als volgt: +De Woo-service "scraped" elke nacht alle relevante informatie en synchroniseert deze met de publicatie objecten in Open Registers. De stappen zijn (bijvoorbeeld bij een zaaksysteem) als volgt: 1. Ophalen van alle zaaktypen. 2. Per zaaktype worden de beschikbare eigenschappen gecontroleerd (zie inrichting zaaksysteem). 3. Voor elk zaaktype dat aan de voorwaarden voldoet, worden de zaken opgehaald. -4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen opgenomen of bijgewerkt als publicatie object in Open Registers. -5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in Open Registers staan, worden gedepubliceerd en geoormerkt. - -Het bovenstaande proces zorgt ervoor dat het zaaksysteem leidend is en dat zaken zowel kunnen worden gepubliceerd als worden gedepubliceerd. +4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen of bijgewerkt als publicatie object in Open Registers. +5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in Open Registers staan, worden gedepubliceerd(ingetrokken) en geoormerkt. +Het bovenstaande proces zorgt ervoor dat het zaaksysteem leidend is en dat zaken zowel kunnen worden gepubliceerd als worden ingetrokken. ## Integraal (Organisatiebreed) zoeken -De kern van de Woo is het zoeken in de openbare informatie van een overheid organisatie, hierbij zou het in theorie niet mogen uitmaken in welke bron/applicatie informatie staat. Deze vorm van bron en domein overstijgend zoeken kennen we vanuit overheid architectuur al langer en noemen we doorgaans integrale zoekvraag. -OpenWoo.app geeft invulling aan deze integrale zoekvraag door gebruik te maken van het commonground component [Open Index](), wat een standaardisatie is op reeds bestaande (en eventueel al binnen de organisatie beschikbare) tools. Waarin OpenWoo.app afwijkt is dat zij alleen publieke informatie in deze index opneemt waardoor een zoek index openbare informatie ontstaat. Dit heeft een aantal privacy, security en architectuur voordeelen. +De kern van de Woo is het zoeken in de openbare informatie van een overheid organisatie, hierbij zou het in theorie niet mogen uitmaken in welke bron, of applicatie, informatie staat. Deze vorm van bron- en domeinoverstijgend zoeken kennen we vanuit de overheidsarchitectuur al langer en noemen we doorgaans integrale zoekvraag. -Deze OpenIndex is echter ook buiten OpenWoo bruikbaar en kan bijvoorbeeld worden ingezet vanuit de website, zaaksysteem of klant contact centrum om burgers, inwoners en medewerkers van relevante informatie te voorzien. +OpenWoo.app geeft invulling aan deze integrale zoekvraag door gebruik te maken van het Common Ground component [Open Index](https://index.openregisters.app/), wat een standaardisatie is op reeds bestaande (en eventueel al binnen de organisatie beschikbare) tools. Waarin OpenWoo.app afwijkt, is dat zij alleen publieke informatie in deze index opneemt waardoor een zoek index openbare informatie ontstaat. Dit heeft een aantal privacy, security en architectuur voordelen. + +Deze Open Index is echter ook buiten OpenWoo bruikbaar en kan bijvoorbeeld worden ingezet vanuit de website, zaaksysteem of klant contact centrum om burgers, inwoners en medewerkers van relevante informatie te voorzien. ## Federatief (Landelijk) zoeken -OpenWoo.app maakt gebruik van de federatieve zoekvraag ontwikkeld binnen [OpenCatalogi](https://opencatalogi.nl/) om verschillende integrale zoekvragen virtueel samen te voegen. Simpel gezegd roept de landelijke zoek API meerdere instanties van [Open Index]() aan en aggregeert de resultaten. Technisch zitten daar nog wat haken en ogen aan die binnen Open Index worden [uitgelegd](). -Er word hierbij dus géén gebruik gemaakt van een landelijke index, het geen data duplicatie voorkomt en organisaties zelf in controlle houdt op hun publicaties. Dit dit concept is verder uitgewerkt in [koophulpje.nl](https://koophulpje.nl/) waarbij ook een voorziening is gerealiseerd voor het genereren van `robot.txt` en `sitemap.xml` bestanden (ten behoeve van KOOP). De facto is hiermee dus ook een landelijke Woo-API gerealiseerd met de beperking dat deze alleen organisaties bevat die participeren in OpenWoo.app -De bevragingen tussen de federale zoekvraag en de verschillende organisaties kan via [NLX/FSC]( https://www.nlx.io/) lopen, of daarbuiten. Gezien het publieke bevragingen zijn op openbare informatie is NLX an zich niet verplicht en kan het inregelen van een PKI certificaat nodeloos complex zijn. Dat gezegd hebbende biedt NLX ook voordelen met betrekking tot het monitoren en loggen van verkeer. -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Federatie.svg) +OpenWoo.app maakt gebruik van de federatieve zoekvraag ontwikkeld binnen [OpenCatalogi](https://opencatalogi.nl/) om verschillende integrale zoekvragen virtueel samen te voegen.  Simpel gezegd roept de landelijke zoek API meerdere instanties van [Open Index]() aan en aggregeert de resultaten. Technisch zitten daar nog wat haken en ogen aan die binnen Open Index worden [uitgelegd](). +Er wordt hierbij dus géén gebruik gemaakt van een landelijke index, het geen data duplicatie voorkomt en organisaties zelf in controle houdt op hun publicaties. Dit dit concept is verder uitgewerkt in [koophulpje.nl](https://koophulpje.nl/) waarbij ook een voorziening is gerealiseerd voor het genereren van `robot.txt` en `sitemap.xml` bestanden (ten behoeve van KOOP). De facto is hiermee dus ook een landelijke Woo-API gerealiseerd met de beperking dat deze alleen organisaties bevat die participeren in OpenWoo.app +De bevragingen tussen de federale zoekvraag en de verschillende organisaties kan via [NLX/FSC]( https://www.nlx.io/) lopen, of daarbuiten. Gezien het publieke bevragingen zijn op openbare informatie is NLX an sich niet verplicht en kan het inregelen van een PKI-certificaat nodeloos complex zijn. Dat gezegd hebbende biedt NLX ook voordelen met betrekking tot het monitoren en loggen van verkeer. +![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Federatie.svg) ## Domeinen -OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties onderling een federatief netwerk vormen. Dat kan het wat onduidenlijk maken wat waar leeft. -| Type | Domein | Status | Type | +OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties onderling een federatief netwerk vormen. Dat kan het wat onduidelijk maken wat waar leeft. + +| Type                  | Domein                                        | Status       | Type              | |-----------------------|-----------------------------------------------|--------------|-------------------| -| Federatief | koophulpje.nl | productie | Publicatie Pagina | -| Federatief | acceptatie.koophulpje.nl | acceptatie | Publicatie Pagina | -| Organisatie Specifiek | [organisatie_naam].koophulpje.nl | productie | Publicatie Pagina | -| Organisatie Specifiek | acceptatie.[organisatie_naam].koophulpje.nl | acceptatie | Publicatie Pagina | -| n.v.t | OpenWoo.app | productie | Product Pagina | -| n.v.t | acceptatie.OpenWoo.app | acceptatie | Product Pagina | -| Organisatie Specifiek | [organisatie_naam].OpenWoo.app | productie | Publicatie Pagina | -| Organisatie Specifiek | acceptatie.[organisatie_naam].OpenWoo.app | acceptatie | Publicatie Pagina | -| Federatief | api.OpenWoo.app | productie | API | -| Federatief | acceptatie.api.OpenWoo.app | acceptatie | API | -| Organisatie Specifiek | api.[organisatie_naam].OpenWoo.app | productie | API | -| Organisatie Specifiek | acceptatie.api.[organisatie_naam].OpenWoo.app | acceptatie | API | - -Dit zijn de aangeboden domeinen vanuit OpenWoo.app, daarnaast zien de dat de meeste organisaties hun publicatie pagina ontsluiten op hun eigen domein e.g. open.[organisatie_naam].nl +| Federatief            | koophulpje.nl                                 | productie    | Publicatiepagina | +| Federatief            | acceptatie.koophulpje.nl                      | acceptatie   | Publicatiepagina | +| Organisatie Specifiek | [organisatie_naam].koophulpje.nl              | productie    | Publicatiepagina | +| Organisatie Specifiek | acceptatie.[organisatie_naam].koophulpje.nl   | acceptatie   | Publicatiepagina | +| n.v.t                 | OpenWoo.app                                   | productie    | Product Pagina    | +| n.v.t                 | acceptatie.OpenWoo.app                        | acceptatie   | Product Pagina    | +| Organisatie Specifiek | [organisatie_naam].OpenWoo.app                | productie    | Publicatiepagina | +| Organisatie Specifiek | acceptatie.[organisatie_naam].OpenWoo.app     | acceptatie   | Publicatiepagina | +| Federatief            | api.OpenWoo.app                               | productie    | API               | +| Federatief            | acceptatie.api.OpenWoo.app                    | acceptatie   | API               | +| Organisatie Specifiek | api.[organisatie_naam].OpenWoo.app            | productie    | API               | +| Organisatie Specifiek | acceptatie.api.[organisatie_naam].OpenWoo.app | acceptatie   | API               | + +Dit zijn de aangeboden domeinen vanuit OpenWoo.app, daarnaast zien de dat de meeste organisaties hun publicatiepagina ontsluiten op hun eigen domein e.g. open.[organisatie_naam].nl ## Documenten vs Publicatie Objecten -Vanuit de WOO denken we doorgaans aan documenten die gepubliceerd moeten worden, vanuit OpenWoo.app denken we echter in publicatie objecten waar een of meer documenten aan kunnen worden gekoppeld. Publicatie objecten omvatten de metadata waarmee documenten kunnen worden gevonden, geclusterd en weergegeven (zo als bijvoorbeeld thema's en typen). Publicatie objecten kunnen ook aan elkaar worden gerelateerd, dat is met name relavant in de casus van raads informatie systemen waarbij een stuk hoort bij een agenda item dat hoort bij een agenda bij een vergadering en gekopeld kan zijn aan stem gedrag van personen of facties. -Het onderling aan elkaar relateren van publicatie objecten leid onderwater tot een 3 dimensionaal datamodel en is een van de redenen waarom er binnen OpenWoo.app is gekozen voor linked data. +Vanuit de WOO denken we doorgaans aan documenten die gepubliceerd moeten worden, vanuit OpenWoo.app denken we echter in publicatie objecten waar een of meer documenten aan kunnen worden gekoppeld. Publicatie objecten omvatten de metadata waarmee documenten kunnen worden gevonden, geclusterd en weergegeven (zoals bijvoorbeeld thema's en typen). Publicatie objecten kunnen ook aan elkaar worden gerelateerd, dat is met name relevant in de casus van raadsinformatiesystemen waarbij een stuk hoort bij een agenda-item dat hoort bij een agenda bij een vergadering en gekoppeld kan zijn aan stemgedrag van personen of facties. + +Het onderling aan elkaar relateren van publicatieobjecten leidt onder water tot een driedimensionaal datamodel en is een van de redenen waarom er binnen OpenWoo.app is gekozen voor linked data. ## Metadata -Ieder publicatie object beschickt over een type (bijvoorbeeld woo_verzoek) en een voorgedefineerde metadata set. De metadataset beschrijft wat er in de publicatie aan gegevens wordt verwacht en typeerd dese (bijvoorbeeld heeft titel, de titel is een string) en biedt daarmee context voor de weergave van de publicatie. Dit bied de search UI de mogenlijkheid om cards te maken die geoptimaliseerd zijn voor specifieke WOO categorien en een algemene card voor niet op voorhand gedefineerde of onbekende categorien. -Dat laatste kan voorkomen als een organisatie zelf metedata sets toevoegd, dat mag. Het is mogenlijk voor organisaties om zelf extra metadata beschrijvingen te defineren en hierop te publiceren. Organisaties zijn daarmee ook niet gelimiteerd tot de door KOOP gedefineerde categorien. Dit is ook een van de redenen waarom zoeken UI de faceted search MOET implementeren (zie ook de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/)). Het is niet op voorhand voorspelbaar op welke aspecten kan worden gezocht, dit is afhankenlijk van de publicaties en gedefineerde metadata zo als gepubliceerd door deelnemende organisaties. +Ieder publicatie object beschikt over een type (bijvoorbeeld woo_verzoek) en een voorgedefinieerde metadata set. De metadataset beschrijft wat er in de publicatie aan gegevens wordt verwacht en typeert deze (bijvoorbeeld heeft titel, de titel is een string) en biedt daarmee context voor de weergave van de publicatie. Dit bied de search UI de mogelijkheid om cards te maken die geoptimaliseerd zijn voor specifieke WOO-categorieën en een algemene card voor niet op voorhand gedefinieerde of onbekende categorieën. + +Dat laatste kan voorkomen als een organisatie zelf metadata sets toevoegt, dat mag. Het is mogelijk voor organisaties om zelf extra metadata beschrijvingen te definiëren en hierop te publiceren. Organisaties zijn daarmee ook niet gelimiteerd tot de door KOOP gedefinieerde categorieën. Dit is ook een van de redenen waarom zoeken in de UI de faceted search MOET implementeren (zie ook de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/)). Het is niet op voorhand voorspelbaar op welke aspecten kan worden gezocht, dit is afhankelijk van de publicaties en gedefinieerde metadata zoals gepubliceerd door deelnemende organisaties. ## Roadmap diff --git a/docs/techniek/Configuratie.md b/docs/techniek/Configuratie.md index a623fe46..e54c10ca 100644 --- a/docs/techniek/Configuratie.md +++ b/docs/techniek/Configuratie.md @@ -33,7 +33,8 @@ In de overzichtspagina worden de properties op de volgende plekken weergegeven. ![img_4.png](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/img_4.png) -## Algemene inrichting +## Algemene inrichting + Voor het kunnen publiceren van zaken vanuit het zaaksysteem is het belangrijk dat het zaaksysteem beschikt over de juiste inrichting. Indien er via de [OpenWoo service](https://openwoo.openservices.online/) zaken worden opgehaald, gelden daarvoor de volgende spelregels. - OpenWoo.app kijkt alleen naar eigenschappen die vooraf worden gegaan door `woo_` @@ -42,9 +43,10 @@ Voor het kunnen publiceren van zaken vanuit het zaaksysteem is het belangrijk da - Voor de velden volgen we daarnaast ook [diwoo](https://standaarden.overheid.nl/diwoo/metadata/diwoo-handleiding-sitemapindex-en-sitemaps). - Naast deze categoerien mag een organisatie ook eigen categorien voeren maar dan worden alleen de algemene eigenschappen over genomen -Het is niet per definitie nodig om alle eigenschappen in het bron systeem handmatig in te regelen en vullen, sommige eigenschapen kunnen worden overgenomen uit algemene metadata van een bron systeem. Kijk onder [Mappigns](#Mappigns) om te zien welke eigenschappen automatisch worden gevuld. +Het is niet per definitie nodig om alle eigenschappen in het bron systeem handmatig in te regelen en vullen, sommige eigenschapen kunnen worden overgenomen uit algemene metadata van een bron systeem. Kijk onder [Mappings](#Mappings) om te zien welke eigenschappen automatisch worden gevuld. ### Algemene eigenschappen + Een aantal zaakatributen zijn noodzakenlijk voor het voor het goed werken van de OpenWoo.app, ze zijn dan ook altijd verplicht ongeacht de Woo categori. | Property | Verplicht | Gebruik | Toegestane waardes | @@ -57,9 +59,10 @@ Een aantal zaakatributen zijn noodzakenlijk voor het voor het goed werken van de | woo_beschrijving | Nee | De UITGEBREIDE beschrijving van de publicatie zoals online getoond | string, max 2555 characters | ### Specifieke eigenschappen + | Eigenschap | Verplicht | Gebruik | Toegestane waardes | |---------------------------|-----------|----------------------------------------------------------------------------------|--------------------| -| woo_termijnoverschrijding | Nee | | | +| woo_termijnoverschrijding | Nee | | | | woo_datum_besluit | Nee | De datum waarop het besluit over de zaak genomen is | string formatted as date-time (e.g., 2023-09-12 09:00) or string formatted as date (e.g., 2023-09-12). If a date is presented instead of a date-time, the time will be automatically set to 00:00. | | woo_datum_ontvangst | Nee | De datum waarop de zaak genomen is geregistreerd | string formatted as date-time (e.g., 2023-09-12 09:00) or string formatted as date (e.g., 2023-09-12). If a date is presented instead of a date-time, the time will be automatically set to 00:00. | | woo_organisatieonderdeel | Nee | Vrije invulling tot op welk niveau ‘organisatieonderdeel’ wordt geïnterpreteerd. | string, max 2555 characters | @@ -99,8 +102,8 @@ Een aantal zaakatributen zijn noodzakenlijk voor het voor het goed werken van de > **Note** > Nog niet vastgestelde categorien of categorien die buiten de OpenWoo.app vallen kunnen wel worden ontsloten via OpenWoo.app, daarbij kan gebruik worden gemaakt van de algemene eigenschappen en documenten/bijlagen. De specifieke eigenschappen worden echter pas opgenomen op het moment dat de categorie door KOOP is vastgesteld. - ### Documenten/Bijlagen + Bijlagen nemen een bijzondere positie in binnen de OpenWoo.app, ze vormen de kern van de naar de bezoeker over te dragen informatie en zijn het centrale onderdeel van de Woo. De manier waarop deze worden getoond wordt beïnvloed door labels. Daarvoor gelden de volgende regels: | Label | Effect van label | @@ -114,7 +117,7 @@ Bijlagen nemen een bijzondere positie in binnen de OpenWoo.app, ze vormen de ker > **Spelregels omtrend labels** > > - Het is mogelijk om als organisatie zelf extra labels toe te voegen, als deze het juist format volgen `woo_[[labelnaam]]]` worden deze automatisch overgenomen in de weergave door boven de rij `Bijlagen` een extra rij toe te voegen in de form `[[labelnaam]]: Alle hieraan gekoppelde bestanden`. -> - Bestanden die geen andere label hebben dan `woo_publicatie` worden getoond in de rij `Bijlagen`. +> - Bestanden die geen andere label hebben dan `woo_publicatie` worden getoond in de rij `Bijlagen`. > - Als bestanden meerdere labels hebben worden ze op meerdere plekken getoond (met uitzondering van `Bijlagen` daar worden alleen bestanden getoond zonder label) > - Bestanden zonder het label `woo_publicatie` worden niet getoond (ook al zijn ze wel van een ander `woo_` label voorzien) @@ -128,15 +131,15 @@ Gebaseerd op: [VNG ZGW Standaard](https://vng.nl/projecten/zaakgericht-werken-ap Gebaseerd op: [xxllc-zaken mapping](https://github.com/CommonGateway/WooBundle/blob/main/Installation/Mapping/woo.xxllncCaseToWoo.mapping.json) -| Eigenschap | Zaaksysteem.nl eigenschap | +| Eigenschap | Zaaksysteem.nl eigenschap | |---------------------------|-----------------------------------------| -| woo_titel | values.case.subject_external | -| woo_termijnoverschrijding | case.dateTarget - case.dateOfCompletion | -| woo_datum_ontvangst | values.case.date_of_registration | -| woo_id | object_id | +| woo_titel | values.case.subject_external | +| woo_termijnoverschrijding | case.dateTarget - case.dateOfCompletion | +| woo_datum_ontvangst | values.case.date_of_registration | +| woo_id | object_id | > **Note** -> Voor de eigenschapen word verder gekeken naar values.attribute.[`eigenschap e.g. woo_beschrijving`] +> Voor de eigenschapen word verder gekeken naar values.attribute.[`eigenschap e.g. woo_beschrijving`] Bijlagen @@ -149,10 +152,11 @@ Bijlagen | url | {{fetchedFromZaaksysteem}} | ## Configuratie + Als laatste zijn er ook een aantal waarde op het publicatie object die worden gezet aan de hand van configuratie in de [OpenWoo service](https://openwoo.openservices.online/), te weten -| Eigenchap | Invulling | Gebruik | +| Eigenchap | Invulling | Gebruik | |------------------|-------------------------------------|-------------------| | portalUrl | {{config}}/{{id van de publicatie}} | Metadata | | organisatie.naam | {{config}} | Metadata | -| organisatie.oin | {{config}} | Metadata | \ No newline at end of file +| organisatie.oin | {{config}} | Metadata | diff --git a/docs/techniek/Installatie.md b/docs/techniek/Installatie.md index caf5c1e4..acf5c110 100644 --- a/docs/techniek/Installatie.md +++ b/docs/techniek/Installatie.md @@ -12,13 +12,13 @@ Om dit template te gebruiken, moet je beschikken over: - Een GitHub-organisatie en beheerdersrechten daarop OF (zie [Serverless Installatie](#serverless-installatie)) - Een APACHE/NGINX-server (zie [Server Installatie](#server-installatie)) - Een Open Webconcept CMS (WordPress) met de [OpenWoo](https://github.com/OpenWebconcept/plugin-openwoo) en [Open Convenanten](https://github.com/OpenWebconcept/plugin-openconvenanten) plugins OF -- Een Common Gateway-installatie (on-premise of SaaS) met de [Woo Bundle](https://github.com/ConductionNL/WooBundle/tree/main) +- Een losse installatie (on-premise of SaaS) met de [Woo Bundle](https://github.com/ConductionNL/WooBundle/tree/main) ## Frontend ### Serverless Installatie -De Open WOO Website is in eerste instantie opgezet om serverless gebruikt te worden via GitHub. Dat scheelt niet alleen in de kosten, maar levert ook voordeel op in de beschikbaarheid en belasting. Simpel gezegd, de GitHub CDN is gebouwd om flink wat meer aan te kunnen dan de gemiddelde gemeente. +De OpenWOO Website is in eerste instantie opgezet om serverless gebruikt te worden via GitHub. Dat scheelt niet alleen in de kosten, maar levert ook voordeel op in de beschikbaarheid en belasting. Simpel gezegd, de GitHub CDN is gebouwd om flink wat meer aan te kunnen dan de gemiddelde gemeente. > **Stappen** > @@ -85,7 +85,7 @@ In dit geval koppel je de React frontend rechtstreeks op een WordPress installat Volg de installatiehandleiding op [https://github.com/OpenWebconcept/plugin-openwoo](https://github.com/OpenWebconcept/plugin-openwoo) en op [https://github.com/OpenWebconcept/plugin-openconvenanten](https://github.com/OpenWebconcept/plugin-openconvenanten). -### Common Gateway met OpenWoo-Plugin +### Core Gateway met OpenWoo-Plugin In dit geval koppel je de React frontend op een gateway installatie, dat betekent dat alle publicaties automatisch worden opgehaald uit bestaande bronnen diff --git a/docs/techniek/Tests.md b/docs/techniek/Tests.md index f7b53d92..fc8930bf 100644 --- a/docs/techniek/Tests.md +++ b/docs/techniek/Tests.md @@ -1,6 +1,6 @@ # Testscenario's -Om de Open WOO Website zelfstandig te kunnen installeren of doorontwikkelen, is het belangrijk om ook over herbruikbare testscenario's te beschikken. Daarnaast wilt u als afnemer ook graag weten of uw SAAS of SLA product graag werkt. Daarvoor hebben we de volgende testscripts uitgeschreven. +Om de Open WOO Website zelfstandig te kunnen installeren of doorontwikkelen, is het belangrijk om ook over herbruikbare testscenario's te beschikken. Daarnaast wilt u als afnemer ook graag weten of uw SAAS of SLA-product graag werkt. Daarvoor hebben we de volgende testscripts uitgeschreven. We kunnen de testscripts opsplitsen in de volgende categorieën: @@ -114,11 +114,11 @@ Zorg ervoor dat het zaaksysteem is geconfigureerd zoals beschreven in de documen 1. Voeg een nieuwe WOO-publicatie toe in het zaaksysteem met een publicatiedatum die nu is of in het verleden en met de categorie `Woo-verzoeken en -besluiten`. 2. Voeg meerdere bijlagen toe, waarvan: - - Minimaal één gelabeld als besluit (en publiek) - - Minimaal één gelabeld als informatieverzoek (en publiek) - - Minimaal één gelabeld als inventarisatielijst (en publiek) - - Minimaal één niet-gelabeld (en publiek) - - Minimaal één niet publiek +   - Minimaal één gelabeld als besluit (en publiek) +   - Minimaal één gelabeld als informatieverzoek (en publiek) +   - Minimaal één gelabeld als inventarisatielijst (en publiek) +   - Minimaal één niet-gelabeld (en publiek) +   - Minimaal één niet publiek 3. Geef een onderwerp op 4. Geef een omschrijving op 5. Geef meerdere thema's op, gescheiden door een komma @@ -142,15 +142,15 @@ Verwijder alle testdata uit het zaaksysteem en de WOO-website. ## Technische test -Naast functioneele tests is het ook belangrijk om te controleren of de website voldoet aan de teschnsiche eisen voor overheids websites. +Naast functionele tests is het ook belangrijk om te controleren of de website voldoet aan de technische eisen voor overheidswebsites. ### WCAG -Er is een [WCAG raportage](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/WCAG-Raportage.pdf) beschickbaar voor de website. +Er is een [WCAG raportage](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/WCAG-Raportage.pdf) beschikbaar voor de website. -U kunt de test zelf herhalen, vervang in de volgende url https://conductionnl.github.io/woo-website-xxllnc/ door het addres van uw OpenWOO app +U kunt de test zelf herhalen, vervang in de volgende URL door het adres van uw OpenWoo.app [https://accessibe.com/accessscan?website=https://conductionnl.github.io/woo-website-xxllnc/](https://accessibe.com/accessscan?website=https://conductionnl.github.io/woo-website-xxllnc/) ### Pentest -Er is een [Pentest raportage](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/PENTEST-Raportage.pdf) beschickbaar voor de website. +Er is een [Pentest raportage](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/PENTEST-Raportage.pdf) beschikbaar voor de website. From 2bd53b7657ccda17b55a0a7f8d3d695d2f408050 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 26 Jun 2024 22:46:16 +0200 Subject: [PATCH 07/34] all committed --- docs/GOVERNANCE.md | 10 ++++------ docs/KoopHulp.md | 4 ---- docs/partners/Datamask.md | 27 +++++++++++++++++---------- docs/partners/DeVault.md | 14 +++++--------- docs/partners/Dimpact.md | 34 +++++++++++++++++++--------------- docs/partners/Tilburg.md | 12 ++++++------ 6 files changed, 51 insertions(+), 50 deletions(-) diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md index 5e5a1c8a..401a5c8d 100644 --- a/docs/GOVERNANCE.md +++ b/docs/GOVERNANCE.md @@ -4,19 +4,17 @@ Het succes en de continue verbetering van het OpenWoo.app project zijn afhankeli ## Open Webconcept -OpenWoo.app is een doorontwikkeling van de OpenWoo wordpress plugin uit OpenWebconcept. Vanuit die oorsprong is OpenWoo.app eigenlijk een subcommunity van OpenWebconcept. De community staat echter nadrukkenlijk open voor niet OWC afnemers en leveranciers. +OpenWoo.app is een doorontwikkeling van de OpenWoo WordPress-plugin uit Open Webconcept. Vanuit die oorsprong is OpenWoo.app eigenlijk een subcommunity van OpenWebconcept. De community staat echter nadrukkelijk open voor niet OWC-afnemers en leveranciers. De gemeente Gouda vormt hierin de linking pin - -Gemeenten zo als Noordwijk, Gouda, Barendrecht, Allbaserwaard, Ridderkerk en Hoeksewaard vormen met de deelname aan - +Gemeenten zo als Noordwijk, Gouda, Barendrecht, Alblasserwaard, Ridderkerk en Hoeksche Waard vormen met de deelname aan ## Community Meetings -Iedereen die actief gebruik maakt OpenWoo.app of intresse heeft in de ontwikkeling hiervan is welkom op de maandenlijke community meeting. De community meetings zijn de plek waar we de roadmap doornemen daar proberen gemeenchapenlijk beslutien op te nemen +Iedereen die actief gebruik maakt OpenWoo.app of interesse heeft in de ontwikkeling hiervan is welkom op de maandelijkse community meeting. De community meetings zijn de plek waar we de roadmap doornemen daar proberen gemeenschappelijk besluiten op te nemen -De community meetings worden aangekondigd via openwoo.app, linkedin en per mail aan de bekenende leveranciers en afnemeners. +De community meetings worden aangekondigd via openwoo.app, LinkedIn en per mail aan de bekende leveranciers en afnemers. ## Stuurgroep diff --git a/docs/KoopHulp.md b/docs/KoopHulp.md index b70102a1..14743d9c 100644 --- a/docs/KoopHulp.md +++ b/docs/KoopHulp.md @@ -2,10 +2,6 @@ Vanuit de gemeente Buren is Koophulpje.nl opgezet. Het doel van Koophulpje is het doen van een proof of concept (poc) met de OpenWoo.app en het stellen van integrale zoek vragen aan de hand van het federale data stelsel (FSC) en API's. -## Voorgeschiedenis - -asd - ## Voordelen - Het uitvragen van informatie via API's is gemakkelijker te integreren dan sitemap.xml diff --git a/docs/partners/Datamask.md b/docs/partners/Datamask.md index 4879d856..0af7ffee 100644 --- a/docs/partners/Datamask.md +++ b/docs/partners/Datamask.md @@ -1,37 +1,44 @@ # Datamask -OpenWoo.app en Datamask willen graag een gemeenschappenlijek propositie voeren voor de WOO + +OpenWoo.app en Datamask willen graag een gemeenschappelijke propositie voeren voor de WOO ## Product Datamask -Datamask zet de kracht van haar reeds bestaande koppelingen vanuit haar anonimiserings tool (en e.v.t. publicatie platform) in + +Datamask zet de kracht van haar reeds bestaande koppelingen vanuit haar anonimiseringstool (en e.v.t. publicatie platform) in Heeft wel -- Anonimesering + +- Anonimisering - Zoekindex a.h.v huidige koppelingen - Organisatie breder publicatie pagina - Beheerschermen en configuratie op de inrichting Heeft niet + - Federatief en organisatie overkoepelend zoeken ## Product OpenWoo.app + Datamask zet de kracht van haar data federalisatie en common ground netwerk in. Heeft wel + - Federaliseren van indexen - NL Design voorkant - Volledig open source - Koppeling met Koop -- Meezoeken in andere organisaties (samenwerkings verbanden, provincies etc) -- Ondersteuning vanuit het common ground programma +- Meezoeken in andere organisaties (samenwerkingsverbanden, provincies etc.) +- Ondersteuning vanuit het Common Ground programma -Heeft niet -- Anonimeseringstool -- Beheers interface op het koppelvlak +Heeft geen + +- Anonimiseringstool +- Beheerinterface op het koppelvlak ## Samenwerking -De samenwerking kan er redelijk simpel uitzien, Datamask kan als aditionele funtionaliteit publiceren richting OpenWoo.app (daarvoor moet de betreffende afnemer wel over het motorblok van OpenWoo.app en Datamask beschicken). Vervolgens kan OpenWoo.app deze data beschickbaar maken op haar federale netwerk en door publiceren naar KOOP en WOOGLE aanvullend kan Datamask ook gegevens ophalen vanuit OpenWoo.app en zo ook aanvullende catageorien naast verzoeken weergeven in haar publicatie platform. +De samenwerking kan er redelijk simpel uitzien, Datamask kan als additionele functionaliteit publiceren richting OpenWoo.app (daarvoor moet de betreffende afnemer wel over het motorblok van OpenWoo.app en Datamask beschikken). Vervolgens kan OpenWoo.app deze data beschikbaar maken op haar federale netwerk en door publiceren naar KOOP en WooGLe aanvullend kan Datamask ook gegevens ophalen vanuit OpenWoo.app en zo ook aanvullende categorieën naast verzoeken weergeven in haar publicatie platform. ## Architectuur -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Datamask.svg) \ No newline at end of file +![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Datamask.svg) diff --git a/docs/partners/DeVault.md b/docs/partners/DeVault.md index b70102a1..7d0fc063 100644 --- a/docs/partners/DeVault.md +++ b/docs/partners/DeVault.md @@ -1,10 +1,6 @@ # Koop Hulp(je) -Vanuit de gemeente Buren is Koophulpje.nl opgezet. Het doel van Koophulpje is het doen van een proof of concept (poc) met de OpenWoo.app en het stellen van integrale zoek vragen aan de hand van het federale data stelsel (FSC) en API's. - -## Voorgeschiedenis - -asd +Vanuit de gemeente Buren is [Koophulpje.nl](koophulpje.nl) opgezet. Het doel van Koophulpje is het doen van een Proof-of-Concept (poc) met de OpenWoo.app en het stellen van integrale zoekvragen aan de hand van het federale datastelsel (FSC) en API's. ## Voordelen @@ -16,18 +12,18 @@ asd - Koophulpje.nl is een 'platte' React pagina, ze beschikt niet over een eigen server, maar maakt direct gebruikt van één API - Deze API bevat de gegevens van meerdere gemeenten aan de hand van federale bevraging -- Ter vergelijking creëren we ook sitemap en robot bestanden voor dezelfde gemeenten t.b.v van de door KOOP voorgestelde harverster +- Ter vergelijking creëren we ook sitemap en robot bestanden voor dezelfde gemeenten t.b.v van de door KOOP voorgestelde harverster. ## Bevindingen -Dataveiligheid: Tijdens vroege testen kwam snel naar voren dat het via API de bron bevragen in plaats van het opbouwen van een index een databeveiligheidsverbeteringen opleverde. Foutieve test data kon snel worden verwijderd en was na verwijdering in het bronsysteem geen onderdeel meer van het federale netwerk en daardoor niet meer vindbaar via Koophulpje. +Dataveiligheid: Tijdens vroege testen kwam snel naar voren dat het via API de bron bevragen in plaats van het opbouwen van een index een verbetering voor de databeveiliging opleverde. Foutieve test data kon snel worden verwijderd en was na verwijdering in het bronsysteem geen onderdeel meer van het federale netwerk en daardoor niet meer vindbaar via Koophulpje. Hoewel dit bij het testen vooral fijn was, levert het bij daadwerkelijke productie gang een sterk voordeel op. Het stelt organisaties in staat om gegevens terug te trekken. Bijvoorbeeld bij het per ongeluk publiceren van persoonsgegevens kunnen de gegevens onmiddellijk worden teruggetrokken (i.p.v. dat er moet worden gewacht op de volgende keer data de harvester langs komt). Schaalbaarheid: Het generen van sitemap.xml-bestanden aan de hand van grotere datasets (1000+) blijkt intensief te zijn -Belasting en kosten: Het genereren van grote sitemap bestanden is server intensief, het confronteert de publicerende overheid daarmee met relatief hoge kosten. We vermoeden dat dit ook geld aan de kant van de harvester. +Belasting en kosten: Het genereren van grote sitemap bestanden is server intensief, het confronteert de publicerende overheid daarmee met relatief hoge kosten. We vermoeden dat dit ook geld aan de kant van de harvester.   -Actualiteit: Doordat de sitemap xml bestanden groot zijn blijkt het niet uitvoerbaar om ze bij elke wijziging bij te werken (bijvoorbeeld toegekende vergunning of afgeronde zaak) ipv daarvan worden ze 's nachts gegenereerd. Dit betekent dat het koppelvlak per definitie achterloopt. +Actualiteit: Doordat de sitemap xml bestanden groot zijn blijkt het niet uitvoerbaar om ze bij elke wijziging bij te werken (bijvoorbeeld toegekende vergunning of afgeronde zaak) i.p.v. daarvan worden ze 's nachts gegenereerd. Dit betekent dat het koppelvlak per definitie achterloopt. We interpreteren de WOO als alle niet vertrouwelijke gegevens moeten pro-actief openbaar worden gemaakt. Door gebruik te maken van API's in plaats van sitemap xml bestanden zorgen we dat de gegevens alleen worden verstuurd op het moment dat ze worden opgevraagd. Dat vergroot het dataverkeer bij gebruik, maar voorkomt dataverkeer vooraf. diff --git a/docs/partners/Dimpact.md b/docs/partners/Dimpact.md index 13643e87..674d2c1b 100644 --- a/docs/partners/Dimpact.md +++ b/docs/partners/Dimpact.md @@ -1,32 +1,36 @@ # Dimpact -Dimpact heeft als samenwerkings en inkoop organisatie vanuit diverce van haar leden de vraag gekregen om te verkennen hoe een eventueele in het kader van de Wet open overheid zou kunnen worden vormgegeven. Dimpact heeft deze verkenning in eerste instantie gemeenschappenlijk met de gemeente Rotterdam uitgevoerd. +Dimpact heeft als samenwerkings- en inkooporganisatie vanuit diverse van haar leden de vraag gekregen om te verkennen hoe een eventuele in het kader van de Wet open overheid zou kunnen worden vormgegeven. Dimpact heeft deze verkenning in eerste instantie gemeenschappelijk met de gemeente Rotterdam uitgevoerd. -Tijdens deze verkenning is Dimpact de oplossing OpenWoo.app tegen gekomen voor het publiceren van Woo verzoeken naar een publicatie pagina én landelijke platformen zo als KOOP. Vanuit hergebruik heeft Dimpact de wens om deze oplossing in te zetten en zich eventueel aan te sluiten bij de OpenWoo.app community. +Tijdens deze verkenning is Dimpact de oplossing OpenWoo.app tegengekomen voor het publiceren van Woo verzoeken naar een publicatie pagina én landelijke platformen zo als KOOP. Vanuit hergebruik heeft Dimpact de wens om deze oplossing in te zetten en zich eventueel aan te sluiten bij de OpenWoo.app community. ## Overwegingen -- OpenWoo.app kent een community van actieve leden waaronder naast gemeentelijke overheden ook provincies, code for nl, open state foundation en het nationaal archief. + +- OpenWoo.app kent een community van actieve leden waaronder naast gemeentelijke overheden ook provincies, Code for NL, Open State foundation en het Nationaal Archief. - OpenWoo.app heeft een beproefde koppeling met KOOP - OpenWoo.app kan publiceren vanuit open zaak. -- OpenWoo.app maakt hergebruik van binnen Open Catalogi ontwikkelde componenten -- OpenWoo.app is onderdeel van het commonground portfolio met een rating van zilver +- OpenWoo.app maakt hergebruik van binnen OpenCatalogi ontwikkelde componenten +- OpenWoo.app is onderdeel van het Common Ground-portfolio met een rating van goud - OpenWoo.app bied naast het zaaksysteem ook werkende koppelingen met andere bronnen -- OpenWoo.app draaid reeds bij verscheidende overheden in productie -- OpenWoo.app heeft *geen* annonimiserings component -- OpenWoo.app heeft *geen* afhandel component voor Woo verzoeken +- OpenWoo.app draait reeds bij verscheidende overheden in productie +- OpenWoo.app heeft *geen* annonimiseringscomponent +- OpenWoo.app heeft *geen* afhandelcomponent voor Woo verzoeken ## Conclusie -De OpenWoo.app kan op een goede manier invulling geven aan de publicatie vraag van Dinpact. De reeds gekopelde bronnen geven invulling aan de behoefte van de Dimpact leden en daar waar nieuwe extra bronnen nodig zijn is er een actieve community waarin deze (ook buiten Dimpact om) ontwikkeld kunnen worden. Ook de samenwerking met IO bied Dimpact gemeente een snel implementeerbare route op Open Online richting productie. Het inzetten van de oplossing ligt dan ook voor de hand. -Echter, naar OpenWoo.app zal Dimpact echter wel zelf moeten faciliteren op het afhandelen en anonimiseren van Woo verzoeken. Dit zal seperaat moeten worden neergezet, zowel Datamask, Mylex als andere markt partijen bieden hier ook losse oplossingen voor aan. Als alternatief voor deze losse oplossingen zou Dimpact ook kunnen inzetten op afhandeling via haar eigen podium d componenten zo als open formulieren en zaak afhandel component. Voor het annonimiseren zou samenwekring kunnen worden gezocht met de gemeente Buren (OWC) die wil inzetten op een open source annonimiserings tool. + +De OpenWoo.app kan op een goede manier invulling geven aan de publicatie vraag van Dimpact. De reeds gekoppelde bronnen geven invulling aan de behoefte van de Dimpact leden en daar waar nieuwe extra bronnen nodig zijn is er een actieve community waarin deze (ook buiten Dimpact om) ontwikkeld kunnen worden. Ook de samenwerking met IO biedt Dimpact gemeente een snel implementeerbare route op Open Online richting productie. Het inzetten van de oplossing ligt dan ook voor de hand. +Echter, naar OpenWoo.app zal Dimpact echter wel zelf moeten faciliteren op het afhandelen en anonimiseren van Woo verzoeken. Dit zal separaat moeten worden neergezet, zowel Datamask, My-Lex als andere markt partijen bieden hier ook losse oplossingen voor aan.  Als alternatief voor deze losse oplossingen zou Dimpact ook kunnen inzetten op afhandeling via haar eigen Podium D-componenten zo als open formulieren en zaak afhandel component. Voor het annonimiseren zou samenwerking kunnen worden gezocht met de gemeente Buren (OWC) die wil inzetten op een open source annonimiseringstool. ## Werkzaamheden -Voor beheer, onderhoud en support kan Dimpact aansluiten bij de huidige community, dit heeft als voordeel dat Dimpact niet alleen minder verantwoordelijkheid naar zich toetrekt maar ook een reeds goedlopende community (financieel) ondersteund en beloond voor haar inspanningen. Dit aanhaken boven overnemen verstevigd het opensource ecosysteem zonder hogere kosten. + +Voor beheer, onderhoud en support kan Dimpact aansluiten bij de huidige community, dit heeft als voordeel dat Dimpact niet alleen minder verantwoordelijkheid naar zich toetrekt, maar ook een reeds goedlopende community (financieel) ondersteund en beloond voor haar inspanningen. Dit aanhaken boven overnemen verstevigt het open source ecosysteem zonder hogere kosten. Voor het traject tót publicatie staat Dimpact echter voor een meer ingewikkelde keuze, kort samengevat zijn er drie opties: -- De opensource keten overnemen zo als deze bij OWC staat (dat zou de introductie van xxllnc zaak registraties betekenen) -- Op haar eigen podium d componenten een oplossing vormgeven (dit zou werk voor eigen ontwikkelaars betekeken, en los hiervan een annonimiserings tool onboarden) -- Een commerciele woo verzoeken afhandelings flow inkopen + +- De open source keten overnemen zo als deze bij OWC staat (dat zou de introductie van xxllnc zaak registraties betekenen) +- Op haar eigen podium d componenten een oplossing vormgeven (dit zou werk voor eigen ontwikkelaars betekenen, en los hiervan een annonimiseringstool onboarden) +- Een commerciële Woo-verzoeken afhandelingsflow inkopen ## Opmerkingen -Het “gat” met betrekking tot de woo afhandeling bestaat alleen voor Woo verzoeken, voor de overige Woo categorieën kan direct worden gepubliceerd vanuit de huidig bronnen. Hier zal een voorziening voor moeten worden getroffen, maar het is goed om in het oog te houden dat deze per definitie tijdelijk is. Het einddoel van de Woo is dat alle relevante informatie pro-actief openbaar word gemaakt. In de context bestaat een verzoek tot openbaar making niet meer. +Het “gat” met betrekking tot de Woo-afhandeling bestaat alleen voor Woo-verzoeken, voor de overige Woo categorieën kan direct worden gepubliceerd vanuit de huidig bronnen. Hier zal een voorziening voor moeten worden getroffen, maar het is goed om in het oog te houden dat deze per definitie tijdelijk is. Het einddoel van de Woo is dat alle relevante informatie pro-actief openbaar wordt gemaakt. In de context bestaat een verzoek tot openbaarmaking niet meer. diff --git a/docs/partners/Tilburg.md b/docs/partners/Tilburg.md index 0b094c27..64b637dd 100644 --- a/docs/partners/Tilburg.md +++ b/docs/partners/Tilburg.md @@ -2,7 +2,7 @@ ## Context -De gemeente Tilburg wil graag een WOO publicatieplatform inrichten met daarbij een focus op zo min mogelijk handmatige acties. Zij heeft hiervoor de leverancier Acato aangetrokken. Zij heeft kennis genomen van OpenWoo.app en wil graag kijken of dit onderdeel kan zijn van haar oplossing. Acato en Conduction hebben hier al vaker contact over gehad en het lijkt ons inderdaad een reële oplossing. +De gemeente Tilburg wil graag een WOO-publicatieplatform inrichten met daarbij een focus op zo min mogelijk handmatige acties. Zij heeft hiervoor de leverancier Acato aangetrokken. Zij heeft kennis genomen van OpenWoo.app en wil graag kijken of dit onderdeel kan zijn van haar oplossing. Acato en Conduction hebben hier al vaker contact over gehad en het lijkt ons inderdaad een reële oplossing. We hebben hierbij gekeken naar wat er reeds beschikbaar is en zonder uitbreiding kan worden ingezet, welke componenten er nog uitgebreid zouden moeten worden en welke er überhaupt zouden moeten worden gebouwd. Dat brengt ons tot het volgende inzicht. @@ -19,18 +19,18 @@ Naast de standaard koppelingen (KOOP, WooGLe), heeft de gemeente een keuze te ma - **`OpenGemeente` Website (keuze / uitbreiden):** Vanuit Open Gemeenten is er een Typo3 plugin beschikbaar voor het integreren van OpenWoo.app in de bestaande site. - **`Acato/OpenGemeente` Themapagina (keuze / uitbreiden):** Vanuit Open Gemeenten wordt een losse TYPO3 themapagina aangeboden, maar er zou er ook een kunnen worden gebouwd door Acato. Een themapagina zou een mooie oplossing kunnen zijn voor Tilburg maar is naar waarschijnlijkheid niet direct herbruikbaar door andere gemeenten. - **`Acato` Zoekpagina (keuze / uitbreiden):** Er is momenteel reeds een zoekpagina beschikbaar, maar deze kan zeker nog wat doorontwikkeling aan de hand van gebruikersonderzoek gebruiken. Dit zou kunnen worden uitgevoerd door Acato, voordeel daarvan is dat de ontwikkeling direct bijdraagt aan de gemeenten die deze pagina reeds gebruiken. -- **`Acato` Woo Dashboard:** Op dit moment beschikt de OpenIndex nog niet over een beheersomgeving. Deze zal dus in zijn geheel ontwikkeld moeten worden. +- **`Acato` Woo Dashboard:** Op dit moment beschikt de OpenIndex nog niet over een beheeromgeving. Deze zal dus in zijn geheel ontwikkeld moeten worden. ### Services (laag 4) -- **Backend for frontend:** Op dit moment beschikt de OpenIndex nog niet over een beheersomgeving. Deze zal dus in zijn geheel ontwikkeld moeten worden. +- **Backend for frontend:** Op dit moment beschikt de Open Index nog niet over een beheeromgeving. Deze zal dus in zijn geheel ontwikkeld moeten worden. ### Integratie (laag 3) - **`Conduction`OpenWoo Service (Uitbreiden):** De OpenWoo service is reeds beschikbaar en in gebruik, toch verwachten wij dat er nog kleine aanpassingen nodig zijn voor het inlezen van nog niet ondersteunde bronnen (Notubiz, iBabs, SharePoint en DeVault) als het bevragen via de integratievoorziening. Wat in ieder geval positief is, is dat we momenteel reeds in gesprek zijn met Notubiz en DeVault over een koppeling. - **`n.v.t` Federatief Netwerk (Beschikbaar):** Het federatieve netwerk van OpenWoo (gebaseerd op FSC/NLX) is reeds beschikbaar en in gebruik. We verwachten niet dat hier aanpassingen op nodig zijn. - **`Tilburg` Integratieplatform (Beschikbaar):** De gemeente Tilburg heeft zelf reeds een integratieplatform beschikbaar, hiermee kunnen de in Tilburg reeds beschikbare bronnen worden benaderd door de OpenWoo-service. We verwachten niet dat er aanpassingen nodig zijn aan de integratievoorziening. -- **`Conduction` OpenIndex (Uitbreiden):** Voor het indexgedeelte van de OpenWoo.app geldt dat deze publicaties niet langer automatisch door moet zetten maar pas na een controle en aanvulling door een medewerker. Dat betekent een aantal zaken, om te beginnen zal de index een soort van buffer moeten kunnen zijn voor publicatieobjecten daarnaast zullen er API-endpoints en business logica moeten komen voor het beheer van publicaties. Hierbij doen zich ook een aantal vragen voor als een publicatie daadwerkelijk wordt aangepast (is dan de bron of index leidend). Met name het uitvogelen van de benodigde business logica zal nog flink wat uitwerking vragen. +- **`Conduction` OpenIndex (Uitbreiden):** Voor het indexgedeelte van de OpenWoo.app geldt dat deze publicaties niet langer automatisch door moet zetten, maar pas na een controle en aanvulling door een medewerker. Dat betekent een aantal zaken, om te beginnen zal de index een soort van buffer moeten kunnen zijn voor publicatieobjecten daarnaast zullen er API-endpoints en business logica moeten komen voor het beheer van publicaties. Hierbij doen zich ook een aantal vragen voor als een publicatie daadwerkelijk wordt aangepast (is dan de bron of index leidend). Met name het uitvogelen van de benodigde business logica zal nog flink wat uitwerking vragen. ### Bronnen (laag 2) @@ -45,9 +45,9 @@ Naast de standaard koppelingen (KOOP, WooGLe), heeft de gemeente een keuze te ma ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Tilburg.svg) -## Overige werksaamheden +## Overige werkzaamheden -- **`Acato` Project menagment:** +- **`Acato` Project management:** - **`Acato` Validatie:** - **`Acato` Design:** - **`Acato` Gebruikers Onderzoek:** From dcb144b54c9114e3dd352e798f0ef38de55cb708 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 26 Jun 2024 22:52:46 +0200 Subject: [PATCH 08/34] last editions before push --- docs/partners/Dimpact.md | 4 ++-- docs/partners/Yard.md | 3 +++ docs/partners/iO.md | 1 + docs/partners/xxllnc.md | 3 +++ 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 docs/partners/Yard.md create mode 100644 docs/partners/iO.md create mode 100644 docs/partners/xxllnc.md diff --git a/docs/partners/Dimpact.md b/docs/partners/Dimpact.md index 674d2c1b..bde7da6b 100644 --- a/docs/partners/Dimpact.md +++ b/docs/partners/Dimpact.md @@ -1,8 +1,8 @@ # Dimpact -Dimpact heeft als samenwerkings- en inkooporganisatie vanuit diverse van haar leden de vraag gekregen om te verkennen hoe een eventuele in het kader van de Wet open overheid zou kunnen worden vormgegeven. Dimpact heeft deze verkenning in eerste instantie gemeenschappelijk met de gemeente Rotterdam uitgevoerd. +Dimpact heeft als samenwerkings- en inkooporganisatie vanuit diverse van haar leden de vraag gekregen om te verkennen hoe een eventuele proof-of-concept(PoC) in het kader van de Wet open overheid zou kunnen worden vormgegeven. Dimpact heeft deze verkenning in eerste instantie gemeenschappelijk met de gemeente Rotterdam uitgevoerd. -Tijdens deze verkenning is Dimpact de oplossing OpenWoo.app tegengekomen voor het publiceren van Woo verzoeken naar een publicatie pagina én landelijke platformen zo als KOOP. Vanuit hergebruik heeft Dimpact de wens om deze oplossing in te zetten en zich eventueel aan te sluiten bij de OpenWoo.app community. +Tijdens deze verkenning is Dimpact de oplossing OpenWoo.app tegengekomen voor het publiceren van Woo verzoeken naar een publicatiepagina én landelijke platformen zoals KOOP. Vanuit hergebruik heeft Dimpact de wens om deze oplossing in te zetten en zich mogelijk aan te sluiten bij de OpenWoo.app community. ## Overwegingen diff --git a/docs/partners/Yard.md b/docs/partners/Yard.md new file mode 100644 index 00000000..8ed4bcdd --- /dev/null +++ b/docs/partners/Yard.md @@ -0,0 +1,3 @@ +# Yard + +(moet nog ingevuld worden) diff --git a/docs/partners/iO.md b/docs/partners/iO.md new file mode 100644 index 00000000..c0163791 --- /dev/null +++ b/docs/partners/iO.md @@ -0,0 +1 @@ +# iO diff --git a/docs/partners/xxllnc.md b/docs/partners/xxllnc.md new file mode 100644 index 00000000..adbc909d --- /dev/null +++ b/docs/partners/xxllnc.md @@ -0,0 +1,3 @@ +# xxllnc (Zaaksysteem.nl) + +(moet nog ingevuld worden) From c534fc0fc00d5ad8d15a35785a5e4cce33dcb3ba Mon Sep 17 00:00:00 2001 From: Remko Huisman <43807324+remko48@users.noreply.github.com> Date: Tue, 9 Jul 2024 09:01:21 +0200 Subject: [PATCH 09/34] Update rijssen-holten.json --- .../municipalities/rijssen-holten/rijssen-holten.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten.json b/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten.json index 8fc1d43c..71ab4296 100644 --- a/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten.json +++ b/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten.json @@ -3,7 +3,7 @@ "GATSBY_API_BASE_URL": "https://api.common-gateway.commonground.nu/api", "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADCklEQVRYhe2XXUhTYRjHf+fM5ZpzbVOXNqVtlbnUnE6syBTSPhWLsC4iKoxKSRDJvAmim8ComwqiKCgI+rwpqIsIuwgiIqIoQ/qgxNQwm5/zM/Xtojhw2kpH27zpuTrv83/O8/+/z/u873mPJIQQzKDJM0n+XwBAVLgJxodGaW18jRifRBdnwJKewuy4WAWXwt2EYmKSK+m19L7t+MUICdkOcg6WsXh7fvgFALy52Ejj3nN+/qILlZERMDH6ncvOAwx29Kj8Roc1Mk2oidbirinx8w98/ha5XZBRuYZZc/Qqn2GeJTS7oL/lKzeXH0bWajA6raSsziB9TxGG5DglJtqoJ7NqLc8bbis+a+6C0FTAaLdizXXia/PS8aiZp0dvcdVdR9/HTlWcu2YjmmitMnaUekK3BJ76zarxiNfHq7P3Vb6YRDOuXYUA6CwGFm1dEToBtgIXiStSVb6xviG/uJy6MiRZIu9IOVqDLjgBfR876XrxiWHvQED89yqYUpP8YkyLkig4VcHS6g1AkEfxu+uPeXL4GgAJbjuFZyqYl+9ScGeZB7PLRk9zOwApRZkB82RVr1eeg6pAZtU6tLGzAeh62cK9LSeZGBtXcEmW8RzaBEC8205CtmPKnEEJ0JljyNxfrIyHu/oZ7R1UxSzeno8hOY6Vx3cgSdKUOYM+in3t3Vx2HmBybJxoUwz7vJeQZDVRd3M7FpdtWvkCVuDsjYesqmig6tgVmj60qTCDzULajgIA5q93+5ED0yYHQASwD62dQpOzR+CuEOaCauEbGlHh3uY2cVqzTXx5+j7Q60FZwAosSLFSXpwLQE//EN5en3qGaTZK79STmLdw+jP9g/2xCet3/9yn8SYDyXPNfrijxPPP5ABRd7ec4LtvhOzaUuwbshUgxzWf4mVLyEpNRpbD+NF8ff6BOEW5uJC01299njV9Ej39g/+8zn/tgbSdhegTTeitRj9xuel2TLH6ALJDZ1FROi3umo3Is8J+QQ5okhBCjA0Mo9Fp0WgjLyIil9K/2Yz/Gf0X8APbf6r2zmXaDwAAAABJRU5ErkJggg==", - "GATSBY_ORGANISATION_NAME": "Gemeente Rijsen-Holten", + "GATSBY_ORGANISATION_NAME": "Gemeente Rijssen-Holten", "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/jumbotronRijssenHolten.jpg", "GATSBY_FOOTER_LOGO_HREF": "https://www.rijssen-holten.nl/", "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", From 16eedf215af569b65af0f1ebcb8d8b9cfb8c64a1 Mon Sep 17 00:00:00 2001 From: Remko Huisman <43807324+remko48@users.noreply.github.com> Date: Tue, 9 Jul 2024 09:03:27 +0200 Subject: [PATCH 10/34] Update rijssen-holten-accept.json --- .../municipalities/rijssen-holten/rijssen-holten-accept.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten-accept.json b/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten-accept.json index 62eb9415..5d7a07b8 100644 --- a/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten-accept.json +++ b/pwa/static/configFiles/municipalities/rijssen-holten/rijssen-holten-accept.json @@ -3,7 +3,7 @@ "GATSBY_API_BASE_URL": "https://rijssen-holten.accept.openwoo.app/api", "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADCklEQVRYhe2XXUhTYRjHf+fM5ZpzbVOXNqVtlbnUnE6syBTSPhWLsC4iKoxKSRDJvAmim8ComwqiKCgI+rwpqIsIuwgiIqIoQ/qgxNQwm5/zM/Xtojhw2kpH27zpuTrv83/O8/+/z/u873mPJIQQzKDJM0n+XwBAVLgJxodGaW18jRifRBdnwJKewuy4WAWXwt2EYmKSK+m19L7t+MUICdkOcg6WsXh7fvgFALy52Ejj3nN+/qILlZERMDH6ncvOAwx29Kj8Roc1Mk2oidbirinx8w98/ha5XZBRuYZZc/Qqn2GeJTS7oL/lKzeXH0bWajA6raSsziB9TxGG5DglJtqoJ7NqLc8bbis+a+6C0FTAaLdizXXia/PS8aiZp0dvcdVdR9/HTlWcu2YjmmitMnaUekK3BJ76zarxiNfHq7P3Vb6YRDOuXYUA6CwGFm1dEToBtgIXiStSVb6xviG/uJy6MiRZIu9IOVqDLjgBfR876XrxiWHvQED89yqYUpP8YkyLkig4VcHS6g1AkEfxu+uPeXL4GgAJbjuFZyqYl+9ScGeZB7PLRk9zOwApRZkB82RVr1eeg6pAZtU6tLGzAeh62cK9LSeZGBtXcEmW8RzaBEC8205CtmPKnEEJ0JljyNxfrIyHu/oZ7R1UxSzeno8hOY6Vx3cgSdKUOYM+in3t3Vx2HmBybJxoUwz7vJeQZDVRd3M7FpdtWvkCVuDsjYesqmig6tgVmj60qTCDzULajgIA5q93+5ED0yYHQASwD62dQpOzR+CuEOaCauEbGlHh3uY2cVqzTXx5+j7Q60FZwAosSLFSXpwLQE//EN5en3qGaTZK79STmLdw+jP9g/2xCet3/9yn8SYDyXPNfrijxPPP5ABRd7ec4LtvhOzaUuwbshUgxzWf4mVLyEpNRpbD+NF8ff6BOEW5uJC01299njV9Ej39g/+8zn/tgbSdhegTTeitRj9xuel2TLH6ALJDZ1FROi3umo3Is8J+QQ5okhBCjA0Mo9Fp0WgjLyIil9K/2Yz/Gf0X8APbf6r2zmXaDwAAAABJRU5ErkJggg==", - "GATSBY_ORGANISATION_NAME": "Gemeente Rijsen-Holten", + "GATSBY_ORGANISATION_NAME": "Gemeente Rijssen-Holten", "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/jumbotronRijssenHolten.jpg", "GATSBY_FOOTER_LOGO_HREF": "https://www.rijssen-holten.nl/", "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", From 183b5f6557cd0f9d2d6d824d21ff1c21093c1cc4 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:59:48 +0200 Subject: [PATCH 11/34] Update Kosten.md n.v.t -> Onbekend --- docs/product/Kosten.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/Kosten.md b/docs/product/Kosten.md index c0f9444f..8bb5bd9a 100644 --- a/docs/product/Kosten.md +++ b/docs/product/Kosten.md @@ -35,7 +35,7 @@ U kunt meerdere bronnen koppelen, sommige van deze bronnen vragen daarvoor zelf | Component | Leveranciers(s) | Eenmalig | Maandelijks | Meer informatie | |------------------|----------------------------------------------------------|----------|-------------|-------------| -| Zaaksysteem.nl | [Xxllnc](https://xxllnc.nl/) | € 3000,- | n.v.t | | +| Zaaksysteem.nl | [Xxllnc](https://xxllnc.nl/) | € 3000,- | Onbekend | | | RX Fundament | [Roxit](https://www.roxit.nl/) | Onbekend | Onbekend | | | Decos JOIN | [Decos](https://www.decos.com/nl) | Onbekend | Onbekend | | | OpenZaak | [Maykin Media](https://www.maykinmedia.nl/nl/) | Onbekend | Onbekend | | From 3e757a877c46435821b44964d121a5aa2cc40ae2 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Mon, 15 Jul 2024 11:31:31 +0200 Subject: [PATCH 12/34] Fix dinkelland accept ref --- pwa/src/services/getConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwa/src/services/getConfig.ts b/pwa/src/services/getConfig.ts index f14fb4cd..917c2e5e 100644 --- a/pwa/src/services/getConfig.ts +++ b/pwa/src/services/getConfig.ts @@ -6,7 +6,7 @@ import BarendrechtAccept from "./../../static/configFiles/municipalities/barendr import Buren from "./../../static/configFiles/municipalities/buren/buren.json"; import BurenAccept from "./../../static/configFiles/municipalities/buren/buren-accept.json"; import Dinkelland from "./../../static/configFiles/municipalities/dinkelland/dinkelland.json"; -import DinkellandAccept from "./../../static/configFiles/municipalities/dinkelland/dinkelland.json"; +import DinkellandAccept from "./../../static/configFiles/municipalities/dinkelland/dinkelland-accept.json"; import Epe from "./../../static/configFiles/municipalities/epe/epe.json"; import EpeAccept from "./../../static/configFiles/municipalities/epe/epe-accept.json"; import GooiseMeren from "./../../static/configFiles/municipalities/gooise-meren/gooise-meren.json"; From faaff095f4d058d558da10936bcb2543f4ad5058 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Mon, 15 Jul 2024 14:09:04 +0200 Subject: [PATCH 13/34] Update Kosten.md --- docs/product/Kosten.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/Kosten.md b/docs/product/Kosten.md index 8bb5bd9a..2ed75c55 100644 --- a/docs/product/Kosten.md +++ b/docs/product/Kosten.md @@ -16,7 +16,7 @@ Als organisatie dient u te beschikken over minimaal één publicatieplatform | Integratie in Open Webconcept | [Yard](https://www.yard.nl/) of [Acato](https://acato.nl/) | Onbekend | Onbekend | | | Sim Site | [SIMgroep](https://www.simgroep.nl) | Onbekend | Onbekend | | | Drupal Site | "??" | Onbekend | Onbekend | | -| TYPO3 themasite | [OpenGemeenten](https://www.opengemeenten.nl/) | Onbekend | Onbekend | | +| TYPO3 themasite | [OpenGemeenten](https://www.opengemeenten.nl/) | € 6000.- | € 250.- | | > **notice** > Weet u niet welk frontend framework uw organisatie op dit moment gebruikt? Kijk dan eens op [digimonitor](https://www.digimonitor.nl/cms-en/gemeenten/). From 6305cc79fd8291e7679cd08e385af402e8d3e9a3 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Mon, 15 Jul 2024 14:12:41 +0200 Subject: [PATCH 14/34] Update Kosten.md --- docs/product/Kosten.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product/Kosten.md b/docs/product/Kosten.md index 2ed75c55..7774888c 100644 --- a/docs/product/Kosten.md +++ b/docs/product/Kosten.md @@ -16,7 +16,7 @@ Als organisatie dient u te beschikken over minimaal één publicatieplatform | Integratie in Open Webconcept | [Yard](https://www.yard.nl/) of [Acato](https://acato.nl/) | Onbekend | Onbekend | | | Sim Site | [SIMgroep](https://www.simgroep.nl) | Onbekend | Onbekend | | | Drupal Site | "??" | Onbekend | Onbekend | | -| TYPO3 themasite | [OpenGemeenten](https://www.opengemeenten.nl/) | € 6000.- | € 250.- | | +| TYPO3 themasite | [[OpenGemeenten](https://www.opengemeenten.nl/](https://www.opengemeenten.nl/oplossingen/website-en-koppeling-voor-de-wet-open-overheid)) | € 6000.- | € 250.- | | > **notice** > Weet u niet welk frontend framework uw organisatie op dit moment gebruikt? Kijk dan eens op [digimonitor](https://www.digimonitor.nl/cms-en/gemeenten/). From 6c1935b43fc3d326873bb252b7b2d72ee37f160e Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Tue, 16 Jul 2024 12:19:20 +0200 Subject: [PATCH 15/34] PoC vragenlijst --- docs/POC-check.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/POC-check.md diff --git a/docs/POC-check.md b/docs/POC-check.md new file mode 100644 index 00000000..e69de29b From cf2331bced6a737b0ddac207bff7f55147c9cacf Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Tue, 16 Jul 2024 13:55:29 +0200 Subject: [PATCH 16/34] all --- docs/POC-check.md | 0 docs/partners/POC-check.md | 126 +++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) delete mode 100644 docs/POC-check.md create mode 100644 docs/partners/POC-check.md diff --git a/docs/POC-check.md b/docs/POC-check.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md new file mode 100644 index 00000000..0496434a --- /dev/null +++ b/docs/partners/POC-check.md @@ -0,0 +1,126 @@ +# Vragenlijst POC + +## Common Ground Architectuur + +Voldoet de oplossing aan de CG architectuur. Zie ook figuur 5 in de PSA. + +- Ja, de architectuur voldoent aan de CG architectuur(het heeft immers status goud). De Gebruikersinterfaces "Authorisatiebeheer" en "Publiceren" bevinden zich op laag 4 (procesinrichting) en laag 5 (interactie). De integratie verloopt via een oplossing op laag 3(connectiviteit), met daaronder de Woo-service op laag 2 (Diensten) en de bronnen op laag 5(databronnen). + +Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? + +- Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Gegevens worden enkel tijdelijk in een cache-laag opgeslagen. + +Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? + +- OpenWoo.app is ontworpen met flexibiliteit en schaalbaarheid in gedachten, waardoor het eenvoudig is om andere applicaties, zoals websites, portalen, en mobiele apps, aan te sluiten op de API's van de oplossing. De centrale Woo-service fungeert als een motorblok dat meerdere bronnen ondersteunt en gestandaardiseerde API's aanbiedt voor gegevensuitwisseling en functionaliteit. Hierdoor kunnen verschillende applicaties uniform en efficiënt gebruik maken van gemeentelijke diensten en gegevens. Er zijn momenteel meerdere website-ontwikkelaars die verschillende websites maken, inclusief portalen. + +## Technologie + +Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. + +- De technologiestack van OpenWoo.app maakt gebruik van een combinatie van moderne technologieën die zorgen voor flexibiliteit, schaalbaarheid, en efficiëntie. Door het gebruik van PHP en het Laravel framework wordt een robuuste basis gelegd voor de webapplicatie. MongoDB en Elasticsearch bieden krachtige oplossingen voor gegevensbeheer en zoekfunctionaliteiten. De API Gateway en RESTful API's zorgen voor gestandaardiseerde en veilige communicatie tussen verschillende applicaties en diensten. Ten slotte biedt Nextcloud een betrouwbare oplossing voor bestandsbeheer en samenwerking. + +Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? + +Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? +Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? + +Bronnen +Welke bronnen kunnen nu worden aangesloten? +Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? +Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? + +Zoeken +Hoe verhoudt de zoekindex zich tot de ODRC? +Slaat Elastic alle gegevens (docs) zelf op? +Is de API voor zoeken een Elastic API of specifieke API voor WOO? + +SaaS +Dimpact wil de oplossing als SaaS-dienst aanbieden aan haar leden. Wat is er nodig om de oplossing als SaaS aan te bieden? +Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie. + +Authenticatie en autorisatie +Kan de oplossing worden aangesloten op AD (OIDC)? +Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? +Kunnen beide bij installatie worden ingericht via de Helm chart? + +Standaarden +Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. +Is de ODRC API een standaard API? + +Aan te tonen functionaliteiten bij PoC OpenWoo.app + +ODRC / gebruikersinterface “Model- en publicatiebeheer” + +Inloggen (met SSO?) +Modelbeheer: +Toevoegen, wijzigen en intrekken/verwijderen van extra informatiecategorieën, rekening houdend met TOOI-waardelijst +Toevoegen, wijzigen en intrekken/verwijderen van organisaties, rekening houdend met TOOI-waardelijst +Toevoegen, wijzigen en intrekken/verwijderen van organisatie-onderdelen +Toevoegen, wijzigen en intrekken/verwijderen van extra metadata-velden (per informatiecategorie) +Toevoegen, wijzigen en intrekken/verwijderen van thema’s / onderwerpen +Publicatiebeheer: +Wijzigen en intrekken/verwijderen van een concept-publicatie +Wijzigen en intrekken/verwijderen van een publicatie +Waarderen archief +Raadplegen logging / audittrail van een (concept-)publicati +Rapportages +Help-functie + +ODPC / gebruikersinterface “Autorisatiebeheer”: + +Inloggen (met SSO?) +Toevoegen, wijzigen en verwijderen van autorisatiegroepen +Medewerkers toevoegen aan en verwijderen uit een autorisatiegroep +Een autorisatiegroep autoriseren voor: +Informatiecategorieën (cq “publiceren van”) +organisaties (cq “publiceren namens”) +organisatie-onderdelen (cq “publiceren namens”) +thema’s / onderwerpen (cq “publicatie hoort bij”) +Raadplegen logging van (wijzigingen in) autorisaties +Help-functie + +ODPC / gebruikersinterface “Publiceren” + +Inloggen (met SSO?) +Aanmaken nieuwe (concept-)publicatie, met o.a.: +Uploaden een of meerdere bestanden +Selecteren een of meerdere informatiecategorieën +Selecteren organisatie +Selecteren een of meerdere thema’s / onderwerpen +Verplichte DiWoo-velden +Invullen extra metadata-velden +Opslaan als concept of direct publiceren +Een concept-publicatie muteren en alsnog publiceren +Een publicatie intrekken +Help-functie + +ODBP / gebruikersinterface “Contentbeheer” + +Inloggen (met SSO?) +Wijzigen welkomstpagina +Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites +Raadplegen rapportage bezoekers- / gebruiks-statistieken +Help-functie + +ODBP / gebruikersinterface “Zoeken en raadplegen” + +Huisstijl / NL design +Raadplegen welkomstpagina (zie 17) en overige pagina’s (zie 18) +Zoeken met behulp van een zoekbalk: +Full-tekst +In metadata-waarde +Gebruik van bolean operators +Zoeken met behulp van filters +Raadplegen lijst met zoekresultaten +Openen van een zoekresultaat en raadplegen van een publicatie +Downloaden van een publicatie +Help-functie + +Technisch + +ODRC API: +Raadplegen model (zie 2) +Creëren, raadplegen, updaten en verwijderen van (concept-)publicaties +Search API +Genereren sitemap(-index) From 47d749dd94038149a7ac812388c06be25aa3e218 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Tue, 16 Jul 2024 17:06:45 +0200 Subject: [PATCH 17/34] part 1 --- docs/partners/POC-check.md | 79 ++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 7 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 0496434a..6c8f76ab 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -18,37 +18,102 @@ Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. web Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. -- De technologiestack van OpenWoo.app maakt gebruik van een combinatie van moderne technologieën die zorgen voor flexibiliteit, schaalbaarheid, en efficiëntie. Door het gebruik van PHP en het Laravel framework wordt een robuuste basis gelegd voor de webapplicatie. MongoDB en Elasticsearch bieden krachtige oplossingen voor gegevensbeheer en zoekfunctionaliteiten. De API Gateway en RESTful API's zorgen voor gestandaardiseerde en veilige communicatie tussen verschillende applicaties en diensten. Ten slotte biedt Nextcloud een betrouwbare oplossing voor bestandsbeheer en samenwerking. +- De technologiestack van OpenWoo.app maakt gebruik van een combinatie van moderne technologieën die zorgen voor flexibiliteit, schaalbaarheid, en efficiëntie. Door het gebruik van PHP wordt een stevige, doch voor developers bekende, basis gelegd voor de webapplicatie. MongoDB en Elasticsearch bieden krachtige oplossingen voor gegevensbeheer en zoekfunctionaliteiten. De API Gateway en RESTful API's zorgen voor gestandaardiseerde en veilige communicatie tussen verschillende applicaties en diensten. Ten slotte biedt Nextcloud een betrouwbare oplossing voor bestandsbeheer en samenwerking. + +### Technologiestack van OpenWoo.app + +| Component | Technologie | Opmerking | +|--------------------|-------------------|-------------------------------------------------------------| +| Taal | PHP | Flexibele en breed ondersteunde webontwikkelingstaal | +| Database | MongoDB | NoSQL database voor gestructureerde en ongestructureerde gegevens | +| Zoekfunctionaliteit| Elasticsearch | Voor snelle en efficiënte zoekfunctionaliteiten | +| API Management | API Gateway | Beheer en routering van API-verzoeken | +| API's | RESTful API's | Gestandaardiseerde communicatie tussen applicaties | +| Bestandsbeheer | Nextcloud | Veilige en schaalbare oplossing voor bestandsbeheer | Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? +- OpenWoo.app maakt gebruik van diverse bestaande componenten om een robuuste, veilige en schaalbare oplossing te bieden. Hieronder staan de belangrijkste componenten die in de technologiestack worden gebruikt: + +- Elasticsearch wordt gebruitk voor geavanceerde zoekfunctionaliteit en datatoegang. Elasticsearch wordt tevens gebruikt voor doorzoekbaarheid en analyse. Daarnaast is Nextcloud vooral gekozen omdat het industriestandaarden zoals Keycloak, Splunk en Nagios ondersteund. + Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? + +- Er worden momenteel unit tests geschreven in de overgang naar een MVP. Nextcloud vereist dit ook voor plaatsing in de Nextcloud appstore. + Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? -Bronnen +- Er is een docker-compose voor het draaien in een container. De instructies zijn [hier](https://github.com/ConductionNL/opencatalogi?tab=readme-ov-file#open-catalog) te vinden. Er is een officiele Helm-chart, we kijken ernaar om deze uit te breiden zodat dit inclusief de app is gebeurd. + +Na installatie zijn er enige vereiste, zoals een API-sleutel voor MongoDB en clusternaam en voor het activeren van Elastic een sleutel en index. We kiezen er expres voor niet omgevingsvariableen niet allemaal mee te geven. + +## Bronnen + Welke bronnen kunnen nu worden aangesloten? + +- Momenteel de volgende bronnen: +- (xxllnc) zaaksysteem.nl +- Elasticsearch +- ZGW-api bronnen +- Bronnen met een REST API + Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? + +- Ja, zolang bronnen gebruik maken van de ZGW-api's of RESTful API, dan is aansluiting nu al ondersteund. + Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? -Zoeken +- Er is een cronjob die elke 10 minuten een synchronisatie met de bronnen uitvoert. Hierdoor hoeft er niet lang gewacht te worden voor de publicaites op de publicatiepagina getoond worden. Dit geeft tevens ook een buffer voor een check of er mogelijk toch iets onjuist is gepubliceerd. + +## Zoeken + Hoe verhoudt de zoekindex zich tot de ODRC? + +De zoekindex + Slaat Elastic alle gegevens (docs) zelf op? + +- Elastic slaat in principe alles op. Er is een keuze te maken wat je naar Elasticsearch stuurt natuurlijk. + Is de API voor zoeken een Elastic API of specifieke API voor WOO? -SaaS +- Er bestaat een specifieke API voor OpenWoo.app, die bovenop Elasticsearch gezet is. Wel is het mogelijk Elastic direct te bevragen + +### SaaS + Dimpact wil de oplossing als SaaS-dienst aanbieden aan haar leden. Wat is er nodig om de oplossing als SaaS aan te bieden? Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie. -Authenticatie en autorisatie +- Voor het aanbieden van SaaS voor de leden van Dimpact moet er gedacht worden aan multitenancy om aan de diverse leden en hun speicfieke eisen te voldoen. Hiervoor moeten we met de leden in kwesite in gesprek gaan en uitzoeken of er maatwerk nodig is. Indien dit niet het geval is, dan zou het enkel om configureerwerk gaan en kan het implementatieproces snel verlopen. Ter verduidelijking, de snelste organisaite die we hebben aangesloten duurde 2 weken. Aan de andere kant zijn er een gemeente die het traject zelf uitstrijkt over meerdere maanden. Kortom, om OpenWoo.app als SaaS-dienst aan te bieden, wordt er gebruik gemaakt van een multi-tenant architectuur om afzonderlijke omgevingen voor verschillende gemeenten te beheren. Dit omvat het creëren van tenants, het schalen van resources, integratie met SSO en AD/LDAP systemen, en het bieden van beveiliging, compliance, en ondersteuning. Een gemeentelijke implementatie omvat voorbereiding, technische integratie, configuratie, training, livegang, en nazorg. + +## Authenticatie en autorisatie + Kan de oplossing worden aangesloten op AD (OIDC)? + +- Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. + Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? + +- Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. + Kunnen beide bij installatie worden ingericht via de Helm chart? -Standaarden +- Dit zou kunnendoor gebruik te maken van [Openldap](https://kb.symas.com/using-openldap-with-nextcloud), maar hebben we zelf nog niet eerder gedaan. + +## Standaarden + Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. + +- ZGW api +- REST API (OpenAPI) +- MDTO (voorheen TMLO) +- JSON-LD + Is de ODRC API een standaard API? -Aan te tonen functionaliteiten bij PoC OpenWoo.app +- Het is een API die volgens de NL API strategie functioneert, met 'reguliere' endpoints en convenience endpoints. + +## **Aan te tonen functionaliteiten bij PoC OpenWoo.app** ODRC / gebruikersinterface “Model- en publicatiebeheer” From 311d2951faf79b93bc3a326654dc69f83e2b0dbb Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Tue, 16 Jul 2024 19:32:35 +0200 Subject: [PATCH 18/34] part 2 --- docs/partners/POC-check.md | 210 +++++++++++++++++++++++++------------ 1 file changed, 142 insertions(+), 68 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 6c8f76ab..0e1a5063 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -115,77 +115,151 @@ Is de ODRC API een standaard API? ## **Aan te tonen functionaliteiten bij PoC OpenWoo.app** -ODRC / gebruikersinterface “Model- en publicatiebeheer” +Onderstaande functionaliteien worden ondersteund, of worden op zeer korte termijn gerealiseerd. -Inloggen (met SSO?) -Modelbeheer: +## ODRC / gebruikersinterface “Model- en publicatiebeheer” + +1. Inloggen (met SSO?) + +- SSO via ADFS of SAML via Nextcloud + +2. Modelbeheer: Toevoegen, wijzigen en intrekken/verwijderen van extra informatiecategorieën, rekening houdend met TOOI-waardelijst Toevoegen, wijzigen en intrekken/verwijderen van organisaties, rekening houdend met TOOI-waardelijst Toevoegen, wijzigen en intrekken/verwijderen van organisatie-onderdelen Toevoegen, wijzigen en intrekken/verwijderen van extra metadata-velden (per informatiecategorie) Toevoegen, wijzigen en intrekken/verwijderen van thema’s / onderwerpen -Publicatiebeheer: -Wijzigen en intrekken/verwijderen van een concept-publicatie -Wijzigen en intrekken/verwijderen van een publicatie -Waarderen archief -Raadplegen logging / audittrail van een (concept-)publicati -Rapportages -Help-functie - -ODPC / gebruikersinterface “Autorisatiebeheer”: - -Inloggen (met SSO?) -Toevoegen, wijzigen en verwijderen van autorisatiegroepen -Medewerkers toevoegen aan en verwijderen uit een autorisatiegroep -Een autorisatiegroep autoriseren voor: -Informatiecategorieën (cq “publiceren van”) -organisaties (cq “publiceren namens”) -organisatie-onderdelen (cq “publiceren namens”) -thema’s / onderwerpen (cq “publicatie hoort bij”) -Raadplegen logging van (wijzigingen in) autorisaties -Help-functie - -ODPC / gebruikersinterface “Publiceren” - -Inloggen (met SSO?) -Aanmaken nieuwe (concept-)publicatie, met o.a.: -Uploaden een of meerdere bestanden -Selecteren een of meerdere informatiecategorieën -Selecteren organisatie -Selecteren een of meerdere thema’s / onderwerpen -Verplichte DiWoo-velden -Invullen extra metadata-velden -Opslaan als concept of direct publiceren -Een concept-publicatie muteren en alsnog publiceren -Een publicatie intrekken -Help-functie - -ODBP / gebruikersinterface “Contentbeheer” - -Inloggen (met SSO?) -Wijzigen welkomstpagina -Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites -Raadplegen rapportage bezoekers- / gebruiks-statistieken -Help-functie - -ODBP / gebruikersinterface “Zoeken en raadplegen” - -Huisstijl / NL design -Raadplegen welkomstpagina (zie 17) en overige pagina’s (zie 18) -Zoeken met behulp van een zoekbalk: -Full-tekst -In metadata-waarde -Gebruik van bolean operators -Zoeken met behulp van filters -Raadplegen lijst met zoekresultaten -Openen van een zoekresultaat en raadplegen van een publicatie -Downloaden van een publicatie -Help-functie - -Technisch - -ODRC API: -Raadplegen model (zie 2) -Creëren, raadplegen, updaten en verwijderen van (concept-)publicaties -Search API -Genereren sitemap(-index) + +De OpenWoo.app ondersteund het CRUD + intrekken van alle beovenstaande functionaliteiten voor het beheer van de modellen. + +3. Publicatiebeheer: + +- a. Wijzigen en intrekken/verwijderen van een concept-publicatie +- b. Wijzigen en intrekken/verwijderen van een publicatie +- c. Waarderen archief +- d. Raadplegen logging / audittrail van een (concept-)publicati +- e. Rapportages + +De OpenWoo.app ondersteund het CRUD + intrekken van alle beovenstaande functionaliteiten voor het beheer van de publicaties. + +4. Help-functie + +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODRC. + +## ODPC / gebruikersinterface “Autorisatiebeheer” + +5. Inloggen (met SSO?) + +- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. + +6. Toevoegen, wijzigen en verwijderen van autorisatiegroepen + +- Gebruikers kunnen autorisatiegroepen toevoegen, wijzigen en verwijderen. Deze groepen worden beheerd via LDAP. + +7. Medewerkers toevoegen aan en verwijderen uit een autorisatiegroep + +- Medewerkers kunnen worden toegevoegd aan of verwijderd uit een autorisatiegroep. Dit wordt beheerd via LDAP. + +8. Een autorisatiegroep autoriseren voor: + +- a. Informatiecategorieën (cq “publiceren van”) +- b. organisaties (cq “publiceren namens”) +- c. organisatie-onderdelen (cq “publiceren namens”) +- d. thema’s / onderwerpen (cq “publicatie hoort bij”) + +- Configuratie en Authorisatieschema's: De configuratie en authorisatieschema's voor bovenstaande autorisaties worden al ondersteund via LDAP. De beheerinterface voor het uitvoeren van deze taken wordt momenteel ontwikkeld. + +9. Raadplegen logging van (wijzigingen in) autorisaties + +- Het is een herleidbaar audittrail dat inzichtelijk wordt gemaakt voor het raadplegen van de logging. + +10. Help-functie + +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODPC. + +## ODPC / gebruikersinterface “Publiceren” + +11. Inloggen (met SSO?) + +- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. + +12. aanmaken nieuwe (concept-)publicatie, met o.a.: + +- a. Uploaden een of meerdere bestanden +- b. Selecteren een of meerdere informatiecategorieën +- c. Selecteren organisatie +- d. Selecteren een of meerdere thema’s / onderwerpen +- e. Verplichte DiWoo-velden +- f. Invullen extra metadata-velden +- g. Opslaan als concept of direct publiceren + +Alle bovenstaande functionaliteit wordt ondersteund in het publicaitemodal in de beheerinterface voor publicaties. + +13. Een concept-publicatie muteren en alsnog publiceren + +14. Een publicatie intrekken + +Publicaites intrekken wordt al ondersteund door het verwijderen van een verplicht veld. Zo is een conceptpublicatie ook al gelijk ondersteund. Met andere woorden, een publicicatie zonder alle verplichte velden ís een concept-publicatie. Let wel op dat als een publicatie eenmaal is gepubliceerd en een derde partij een kopie heeft gemaakt, de OpenWoo.app daar niets meer aan kan doen. In dat geval moet er contact opgenomen worden met bijv. WooGle of KOOP. + +15. Help-functie + +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODPC. + +## ODBP / gebruikersinterface “Contentbeheer” + +16. Inloggen (met SSO?) + +- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. + +17. Wijzigen welkomstpagina + +Dit wordt ondersteund. + +18. Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites + +@rubenvdlinde - dit via Acato front? + +19. Raadplegen rapportage bezoekers- / gebruiks-statistieken + +Dit wordt ondersteund door bijvoorbeeld Google Analystics, Nextcloud Analystics, maar er kan gedacht worden aan dit op te lossen via Elastic(Stack) in hoeverre hier vraag naar is. + +20. Help-functie + +Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODBP. + +## ODBP / gebruikersinterface “Zoeken en raadplegen” + +21. Huisstijl / NL design +22. Raadplegen welkomstpagina (zie 17) en overige pagina’s (zie 18) +23. Zoeken met behulp van een zoekbalk: + +- a. Full-tekst +- b. 25. In metadata-waarde + +24. Gebruik van boolean operators +25. Zoeken met behulp van filters +26. Raadplegen lijst met zoekresultaten +27. Openen van een zoekresultaat en raadplegen van een publicatie +28. Downloaden van een publicatie + +Alle bovenstaande functionalitiet wordt ondersteund. + +29. Help-functie + +Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODBP. + +## Technisch + +29. ODRC API: + +- a. Raadplegen model (zie 2) +- b. Creëren, raadplegen, updaten en verwijderen van (concept-)publicaties + +Wordt ondersteund via API. Sterker nog, de interfaces sturen de API aan. + +30. Search API + +Deze is ontwikkeld en wordt (vanzelfsprekend) doorontwikkeld +31. Genereren sitemap(-index) + +- voor zolang dat nodig is voor KOOP, ondersteunen we dat. From 1ebfd35e576799cd88caafdce1955f7162805d30 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 17 Jul 2024 17:17:34 +0200 Subject: [PATCH 19/34] Herschrijven van de POC tekst --- docs/PublicatiePlatformen.puml | 3 +- docs/partners/POC-check.md | 121 +++++++++++++++++++-------------- docs/techniek/Architectuur.md | 29 +++++++- 3 files changed, 97 insertions(+), 56 deletions(-) diff --git a/docs/PublicatiePlatformen.puml b/docs/PublicatiePlatformen.puml index f7bea2d6..6cc443b6 100644 --- a/docs/PublicatiePlatformen.puml +++ b/docs/PublicatiePlatformen.puml @@ -15,7 +15,7 @@ frame "Publicatie platformen " { } ' API's (Laag 2) -frame "Integratie" { +frame "API's (Laag 2)" { database "Search API" as OI #1abc9c } @@ -28,5 +28,4 @@ KoopHulpje -down-> OI : Bevraagd (API) Website -down-> OI : Bevraagd (API) Themasite -down-> OI : Bevraagd (API) Searchsite -down-> OI : Bevraagd (API) - @enduml \ No newline at end of file diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 0e1a5063..4fbf2b78 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -2,54 +2,64 @@ ## Common Ground Architectuur -Voldoet de oplossing aan de CG architectuur. Zie ook figuur 5 in de PSA. +### Voldoet de oplossing aan de CG architectuur. Zie ook figuur 5 in de PSA. -- Ja, de architectuur voldoent aan de CG architectuur(het heeft immers status goud). De Gebruikersinterfaces "Authorisatiebeheer" en "Publiceren" bevinden zich op laag 4 (procesinrichting) en laag 5 (interactie). De integratie verloopt via een oplossing op laag 3(connectiviteit), met daaronder de Woo-service op laag 2 (Diensten) en de bronnen op laag 5(databronnen). +- Ja, de architectuur voldoent aan de CG architectuur (het heeft immers status goud). In princiepe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. -Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? +### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? -- Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Gegevens worden enkel tijdelijk in een cache-laag opgeslagen. +- Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geld bijvoorbeeld voor Publicaties en Bestanden. De beheer interface beschikt daarnaast echter over een eigen database voor het opslaan van configuratie zo als rollen, rechten, logging etc. Het is een -Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? +### Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? +- Zekers, sterker nog dat is gangbaar. Er zijn op dit moment 5 verschillende Publicatie platformen aangesloten op de Open Catalogi api, waarvan 4 onderdeel zijn van de OpenWoo.app community. in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruikt van de de API. Er zijn op dit moment geen mobiele app's die gebruik maken van de API maar er zijn wel organisaties die overwegen om hem in de mijn omgeving op te nemen (voor locaal nieuws). + +In een iets bredere context zijn naar koophulje (de sitemapxml adaptor voor koop) ook andere adaptors in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren uit open catalogi). Voorbeelden hiervan zijn DROP en SDG. -- OpenWoo.app is ontworpen met flexibiliteit en schaalbaarheid in gedachten, waardoor het eenvoudig is om andere applicaties, zoals websites, portalen, en mobiele apps, aan te sluiten op de API's van de oplossing. De centrale Woo-service fungeert als een motorblok dat meerdere bronnen ondersteunt en gestandaardiseerde API's aanbiedt voor gegevensuitwisseling en functionaliteit. Hierdoor kunnen verschillende applicaties uniform en efficiënt gebruik maken van gemeentelijke diensten en gegevens. Er zijn momenteel meerdere website-ontwikkelaars die verschillende websites maken, inclusief portalen. ## Technologie -Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. +### Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. + +- Voor de publicatie platformen wisselen technologiestack's per leverancier, Conduction en Acato bouwen statische voorkanten aan de hand van NL Design react framework(bijvoorbeeld de ui van tilburg) en IO Digital volledige php wordpress plugins. +- Op de backend zijn we recentenlijk overgestapt van conductions eigen oude framework (commong gateway) naar nextcloud framework (php+vue). Daar zijn veel redenen voor en die staan uitgelegd op in een [blog](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/) maar nextcloud als framework is echt gericht op kubernetes (en bevat dsu onboard integratie voor logging wegschrijven, monitoring, adfs etc). +- Op de datalaag wordt er door nextcloud zelf gebruik gemaakt van postgress. Vanuit applicatie oogpunt shrijven we de overige data bij voorkeur weg naar ORC (overige objecten), DRC (de documenten api van ZGW maar bijvoorbeeld ook corsa) + Elastic Search. Wie bieden echter ook de API aan overheden om één of al deze te vervangen door mongodb of alle data in de nexloud postgress op te slaan. Dat is een bewuste keuze, kubernetes blijkt voor veel overheden een drempel en we willen de applicatie ook geschickt houden van organisaties die en traditionele LAMP stack op VM's draaien. -- De technologiestack van OpenWoo.app maakt gebruik van een combinatie van moderne technologieën die zorgen voor flexibiliteit, schaalbaarheid, en efficiëntie. Door het gebruik van PHP wordt een stevige, doch voor developers bekende, basis gelegd voor de webapplicatie. MongoDB en Elasticsearch bieden krachtige oplossingen voor gegevensbeheer en zoekfunctionaliteiten. De API Gateway en RESTful API's zorgen voor gestandaardiseerde en veilige communicatie tussen verschillende applicaties en diensten. Ten slotte biedt Nextcloud een betrouwbare oplossing voor bestandsbeheer en samenwerking. -### Technologiestack van OpenWoo.app +### Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? +OpenWoo.app maakt gebruik van diverse bestaande componenten om een robuuste, veilige en schaalbare oplossing te bieden. Hieronder staan de belangrijkste componenten die in de technologiestack worden gebruikt: -| Component | Technologie | Opmerking | -|--------------------|-------------------|-------------------------------------------------------------| -| Taal | PHP | Flexibele en breed ondersteunde webontwikkelingstaal | -| Database | MongoDB | NoSQL database voor gestructureerde en ongestructureerde gegevens | -| Zoekfunctionaliteit| Elasticsearch | Voor snelle en efficiënte zoekfunctionaliteiten | -| API Management | API Gateway | Beheer en routering van API-verzoeken | -| API's | RESTful API's | Gestandaardiseerde communicatie tussen applicaties | -| Bestandsbeheer | Nextcloud | Veilige en schaalbare oplossing voor bestandsbeheer | +- DRC, +- ORC +- Elasticsearch +- FSC/NLX +- Nextcloud asl basis framework +- Diverse NL Design React componenten -Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? +Hieromheen is het vooral belangrijk om te vermelden dat de keuze voor nextcloud als basis framework voortkomt uit de goede out of the box ondersteuning voor +Keycloak, Splunk, Nagios, Apache spark, PRometheus, Loki, Gravana, Harbour, Open Shift en Azure. Dat is belangrijk omdat dit het platform goed schaalbaar en monitorbaar maakt in complexe kubernates omgevingen. -- OpenWoo.app maakt gebruik van diverse bestaande componenten om een robuuste, veilige en schaalbare oplossing te bieden. Hieronder staan de belangrijkste componenten die in de technologiestack worden gebruikt: +### Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? -- Elasticsearch wordt gebruitk voor geavanceerde zoekfunctionaliteit en datatoegang. Elasticsearch wordt tevens gebruikt voor doorzoekbaarheid en analyse. Daarnaast is Nextcloud vooral gekozen omdat het industriestandaarden zoals Keycloak, Splunk en Nagios ondersteund. +- We draaiden bijde soorten test, voor end-to-end testing maken we gebruik van [vitest](https://vitest.dev/) en voor unit tests van [php-unit](https://phpunit.de/index.html). De test covaradges wisselt wat rond de xx procent. -Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? +### Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? -- Er worden momenteel unit tests geschreven in de overgang naar een MVP. Nextcloud vereist dit ook voor plaatsing in de Nextcloud appstore. +Zeker, goede installeerheid was een drive achter deze stack keuze. Er zijn een aantal installatie routes beschickbaar, voor (kubernetes) productie omgevingen zijn de stapppen redenlijk simpel +- Installeer Nexcloud (bijvoorbeeld via [Azure](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nextcloudgmbh1597841818906.nextcloud?tab=overview), [Open Shift](https://catalog.redhat.com/software/container-stacks/detail/65e9dc6f6365ba88288a412c) of [Artifact HUb](https://artifacthub.io/packages/helm/nextcloud/nextcloud) de officieele cloud native foundation marktplaats) +- Installeer via de nextcloud ui de Open Catalogi app +- Activeer in de Open Catalogi app de OpenWoo.app metadata bestanden -Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? +De herbruikte componenten binnen commonground kennen hun eigen installatie handeleidingen (ORC en DRC). Elastic (en optioneel MongoDB) zijn op Azure en Open Shift standaard als apps beschickbaar. -- Er is een docker-compose voor het draaien in een container. De instructies zijn [hier](https://github.com/ConductionNL/opencatalogi?tab=readme-ov-file#open-catalog) te vinden. Er is een officiele Helm-chart, we kijken ernaar om deze uit te breiden zodat dit inclusief de app is gebeurd. +Optioneel kan er een losse frontend als container worden geinstalleerd, maar dat is in het van de standaard react container niet nodig. Die kan aan de hand van NL design tokens serverless worden gedraaid vanuit de [github marketplace](https://github.com/marketplace?query=opencatalogi) . -Na installatie zijn er enige vereiste, zoals een API-sleutel voor MongoDB en clusternaam en voor het activeren van Elastic een sleutel en index. We kiezen er expres voor niet omgevingsvariableen niet allemaal mee te geven. +Voor (locaal) ontwikkleen en demo'en is er een docker-compose voor het draaien in een container. De instructies zijn [hier](https://github.com/ConductionNL/opencatalogi?tab=readme-ov-file#open-catalog) te vinden. Deze word momenteel door Acato getest (so far so good) + +Na installatie zijn er enige (optionele) vereiste, zoals een API-sleutel voor MongoDB en clusternaam en voor het activeren van Elastic een sleutel en index of voor productie omgevingen een ORC en DRC. ## Bronnen -Welke bronnen kunnen nu worden aangesloten? +### Welke bronnen kunnen nu worden aangesloten? - Momenteel de volgende bronnen: - (xxllnc) zaaksysteem.nl @@ -57,61 +67,68 @@ Welke bronnen kunnen nu worden aangesloten? - ZGW-api bronnen - Bronnen met een REST API -Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? - -- Ja, zolang bronnen gebruik maken van de ZGW-api's of RESTful API, dan is aansluiting nu al ondersteund. +### Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? +Ja momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de commongateway, dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped) maar willen we eigenlijk ook over trekken naar een nextcloud app voor kubernetes. -Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? +Voor ZGW, DRC en ORI is er nu al een addaptor voor ondersteuning en Tilburg en Acato zijn aan het afronden op Stuf en Sharepoint. -- Er is een cronjob die elke 10 minuten een synchronisatie met de bronnen uitvoert. Hierdoor hoeft er niet lang gewacht te worden voor de publicaites op de publicatiepagina getoond worden. Dit geeft tevens ook een buffer voor een check of er mogelijk toch iets onjuist is gepubliceerd. +### Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? +Bijde, bijvoorkeur gebruiken we een pubsub patroon zo als notificaties bij ZGW. Of een tussenvorm via een data distributie syseem (haal nu deze stuf zaak op). Maar in de praktijk ondersteunen lang niet alle pakketen dit. In die gevalen grijpen we terug op batch verwerking. Hoe vaak die draaien hangt van de bron af en is per bron instelbaar. Dat kan elke uur of iedere nacht. Maar als de bron bijvoorbeeld kan fileren op items die afgelopen x minuten zijn gewijzigd kijken we graag idere 5 tot 10 minuten even (als het antwoord dan leeg is zijn we ook niet exsesief aan het vragen) ## Zoeken -Hoe verhoudt de zoekindex zich tot de ODRC? +### Hoe verhoudt de zoekindex zich tot de ODRC? +Deze is bewust losgekopeld, we hanteren het princiepe dat in de zoekindex alleen openbare informatie mag staan. -De zoekindex -Slaat Elastic alle gegevens (docs) zelf op? +## Slaat Elastic alle gegevens (docs) zelf op? +Dat hang van de configuratie keuzes van de gemeente af, maar bij voorkeur slaan we alleen de metedata van documenten op en halen we het document zelf uit het DRC op het moment dat het word opgevraagd. Er zijn echter casssusen waarin dat vanuit belasting of performance niet wensenlijk is. -- Elastic slaat in principe alles op. Er is een keuze te maken wat je naar Elasticsearch stuurt natuurlijk. - -Is de API voor zoeken een Elastic API of specifieke API voor WOO? - -- Er bestaat een specifieke API voor OpenWoo.app, die bovenop Elasticsearch gezet is. Wel is het mogelijk Elastic direct te bevragen +### Is de API voor zoeken een Elastic API of specifieke API voor WOO? +Het is een specifieke API voor de WOO die binnen de parameters valt van wat Elastic zelf ook kan uitleveren met wat configuraite. Met andere woorden de elastic instantie kan ook direct worden bevraagd. De adaptor er boven op voorziet echter in twee extra functionaliteiten die wij binnen de WOO wensenlijk vinden +- Federatief zoeken over meerdere elastic search instanties +- Ophalen documenten door routeren naar b.v. DRC ipv elastic. ### SaaS -Dimpact wil de oplossing als SaaS-dienst aanbieden aan haar leden. Wat is er nodig om de oplossing als SaaS aan te bieden? -Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie. +### Dimpact wil de oplossing als SaaS-dienst aanbieden aan haar leden. Wat is er nodig om de oplossing als SaaS aan te bieden? +Een kubernetes of azure omgeving met daarop bij voorkeur een managment tool voor container orchestratie die artifacthub ondersteund (er zijn er een aantal). In dat geval kan er visueel geinstalleerd worden. -- Voor het aanbieden van SaaS voor de leden van Dimpact moet er gedacht worden aan multitenancy om aan de diverse leden en hun speicfieke eisen te voldoen. Hiervoor moeten we met de leden in kwesite in gesprek gaan en uitzoeken of er maatwerk nodig is. Indien dit niet het geval is, dan zou het enkel om configureerwerk gaan en kan het implementatieproces snel verlopen. Ter verduidelijking, de snelste organisaite die we hebben aangesloten duurde 2 weken. Aan de andere kant zijn er een gemeente die het traject zelf uitstrijkt over meerdere maanden. Kortom, om OpenWoo.app als SaaS-dienst aan te bieden, wordt er gebruik gemaakt van een multi-tenant architectuur om afzonderlijke omgevingen voor verschillende gemeenten te beheren. Dit omvat het creëren van tenants, het schalen van resources, integratie met SSO en AD/LDAP systemen, en het bieden van beveiliging, compliance, en ondersteuning. Een gemeentelijke implementatie omvat voorbereiding, technische integratie, configuratie, training, livegang, en nazorg. +Daarnaast ondersteunen we best een flink aantal monitoring en dashboard tools, het is verstandig om die ook operationeel te hebben (bijvoorbeeld graffana) -## Authenticatie en autorisatie +### Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie. -Kan de oplossing worden aangesloten op AD (OIDC)? +Hiervoor is een handleiding beschickbaar op https://openwoo.app/Techniek/Productie/ -- Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. -Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? +## Authenticatie en autorisatie -- Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. +### Kan de oplossing worden aangesloten op AD (OIDC)? +Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. Hiervoor zijn meerdere [handleidingen](https://www.schiessle.org/articles/2023/07/04/nextcloud-and-openid-connect/) beschickbaar die bijvoorbeeld ook gebruik maken van Keycloak (er kan ook direct met LDAP op AD worden gekopeld). -Kunnen beide bij installatie worden ingericht via de Helm chart? +### Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? +Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. Het toekenen van specifieke rechten aan rollen (bijvoorbeeld publiceren) gebeurd vervolgens in de applicatie zelf. -- Dit zou kunnendoor gebruik te maken van [Openldap](https://kb.symas.com/using-openldap-with-nextcloud), maar hebben we zelf nog niet eerder gedaan. +### Kunnen beide bij installatie worden ingericht via de Helm chart? +Ja, voor zover wij weten zijn alle configuratie opties (dus ook adaptors) zijn via de config optie van de [helm chart](https://artifacthub.io/packages/helm/nextcloud/nextcloud?modal=values) in te stellen. Dat betend dus dat de applicaite (in theorie) volledig werkend kan worden opgesponnen. ## Standaarden Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. -- ZGW api +- ZGW - REST API (OpenAPI) - MDTO (voorheen TMLO) - JSON-LD +- [Triple Store](https://en.wikipedia.org/wiki/Triplestore) +- Geo-JSON +- NFC/NLX + +Zie voor meer standaarden de [Open Catalogi Architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). -Is de ODRC API een standaard API? +### Is de ODRC API een standaard API? -- Het is een API die volgens de NL API strategie functioneert, met 'reguliere' endpoints en convenience endpoints. +- Het is een API die volgens de NL API strategie functioneert, met 'reguliere' endpoints en convenience endpoints. We zijn nu in overleg met VNG en KOOP over standaardisatie, we verwachten daarbij maandag 22 juli een eerste besluit vanuit Koop. De VNG heeft 27 Juni reeds aangegeven de API als kandidaat te zien. ## **Aan te tonen functionaliteiten bij PoC OpenWoo.app** diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index b5905381..85b75e6a 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -37,9 +37,34 @@ Secundair doel daarbij is wat idealistischer: om een gemeenschappelijke codebase ## Hergebruik tot op het bot -OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [OpenCatalogi](https://documentatie.opencatalogi.nl/). Meer technische informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). +OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [OpenCatalogi](https://documentatie.opencatalogi.nl/). Meer technische informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). Er zijn echter een paar zaken die we binnen OpenWoo.app aanvullend regelen. -Daar waar we het binnen Open Catalogi over burgers hebben definiëren we voor de Woo de (sub)doelgroepen, inwoners, onderzoekers, journalisten, raadsleden en ondernemers. Het ORC als opslag voor publicaties vertolkt richting de WOO ook de rol van Openbare Documenten Registratie Component (ODRC). Waarbij het configureerbaar is of documenten daadwerkelijk worden overgenomen naar het ORC of bij iedere inzage uit de bron worden gehaald (in welk geval alleen de metadata wordt overgenomen). Deze configuratie keuze wordt met name aangeboden om bronsystemen te ontzien of om trage bronsystemen heen te werken. In Elastic Search (die de rol van search vertolkt) worden ten allestijden alleen de metadata gegevens van bestanden opgenomen. +1. In plaats van de standaard Open Catalogi voorkant gebruikeren en een publicatie pagina die geoptimalisseerd is voor de WOO, dit kan een (sub)site zijn bij de website leverancier van de gemeente, of een van de twee losstaande react pagina's. We laten de keuze hiervoor bewust bij de deelnemende overheden zelf. + +2. We gebruiken een aantal aanvullende metadata moddelen in plaats van DCAT en PublicCode, deze wordenn landelijk onderhouden. + +3. We maken gebruik van een lose WOO (micro) service die vanuit verschillende bronnen (o.a. zaaksystemen en raadsinformatie systemen) informatie ophaalt en klaar zet als publicatie. Of en hoe publicaties vervolgens automatisch worden gepubliseerd is een configuratie keuze. + +4. Er is naast de standaard beheer omgeving van Open Catalogi ook een Publicatie Taak applicatie beschickbaar die specifiek gericht is op het (handmatig) verwerken van WOO verzoeken en beheren van publicacties + +In een meer algemene zin hebben we bij OpenWoo.app voor andere (sub)doelgroepen gekozen dan binnen Open Catalogi, inwoners, onderzoekers, journalisten, raadsleden en ondernemers staan centraal. + +## Codebases +Voor de installatie van OpenWoo.app zijn meerdere codebases bechickbaar, dat heeft zowel een historische achtergrond als dat het een bewuste keuze is om van (met name UI) componenten meerdere versies te hebben. Omdat deze ook nog eens over verschillede organisaties verdeeld zijn kan het moeilijk zijn om overzicht te houden op welke code waar staat. We houden daarom hier een overizcht bij van de extra componenten en codebases ten opzichte van de standaard Open Catalogi componenten. + +| Codebase | Rol | Leverancier | Licentie | +|----------|------------------------------| | | +| [Github]() | Taakapplicatie publiceren, Publicatie Platform | IO Digital | | +| [Github]() | Taakapplicatie publiceren | Acato | | +| [Github]() | Publicatie Platform | Acato | | +| [Github](https://github.com/OpenWebconcept/plugin-openwoo) | Publicatie Platform | Yard | EUPL | +| [Github](https://github.com/ConductionNL/woo-website-template) | Publicatie Platform | Conduction | EUPL | +| [Github](https://github.com/ConductionNL/plugin-openwoo) | Synchronysatie Service | Conduction | EUPL | + + +Hierop zijn een paar opmerkingen te maken +- We gebruiken de synchronisatie service van Open Catalogi niet (die is immers gericht op Github, Gitlab en Dcat), in plaats daarvan is er een WOO synchronysatie service gericht op ZGW, STUF, DRC en ORI. +- We gebruiken voorkant van Open Catalogi niet (die is immers sotware en data gericht), in plaats daarvan hebben meerdere leveranciers eigen publicatie platformen ontwikkeld. ## Uitdagingen From f97fb339cbd38d1260d9e685bec98f098471b58e Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 17 Jul 2024 17:25:11 +0200 Subject: [PATCH 20/34] Afgebroken zin uitgeschreven --- docs/partners/POC-check.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 4fbf2b78..c3d19fee 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -8,10 +8,12 @@ ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? -- Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geld bijvoorbeeld voor Publicaties en Bestanden. De beheer interface beschikt daarnaast echter over een eigen database voor het opslaan van configuratie zo als rollen, rechten, logging etc. Het is een +Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geld bijvoorbeeld voor Publicaties en Bestanden. De beheer interface beschikt daarnaast echter over een eigen database voor het opslaan van configuratie zo als rollen, rechten, logging etc. + +Het is een tevens een keuze (configuratie mogenlijkheid) om in plaats van ORC/DRC gebruik te maken van MongoDB (object store) of zelfs de interne postgress database van de beheer interface. Het laatste wordt afgeraden voor productie maar maakt het bijvoorbeeld makkenlijk om de applicatie even locaal op een laptop op te starten. ### Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? -- Zekers, sterker nog dat is gangbaar. Er zijn op dit moment 5 verschillende Publicatie platformen aangesloten op de Open Catalogi api, waarvan 4 onderdeel zijn van de OpenWoo.app community. in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruikt van de de API. Er zijn op dit moment geen mobiele app's die gebruik maken van de API maar er zijn wel organisaties die overwegen om hem in de mijn omgeving op te nemen (voor locaal nieuws). +Zekers, sterker nog dat is gangbaar. Er zijn op dit moment 5 verschillende Publicatie platformen aangesloten op de Open Catalogi api, waarvan 4 onderdeel zijn van de OpenWoo.app community. in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruikt van de de API. Er zijn op dit moment geen mobiele app's die gebruik maken van de API maar er zijn wel organisaties die overwegen om hem in de mijn omgeving op te nemen (voor locaal nieuws). In een iets bredere context zijn naar koophulje (de sitemapxml adaptor voor koop) ook andere adaptors in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren uit open catalogi). Voorbeelden hiervan zijn DROP en SDG. From d64b77375264366324cd39d96a5b47ddcd58f30b Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 17 Jul 2024 22:43:08 +0200 Subject: [PATCH 21/34] Kleine tekstuele wijzigingen --- docs/partners/POC-check.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index c3d19fee..b94deb81 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -228,7 +228,7 @@ Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aa 16. Inloggen (met SSO?) -- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. +Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. 17. Wijzigen welkomstpagina @@ -236,7 +236,7 @@ Dit wordt ondersteund. 18. Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites -@rubenvdlinde - dit via Acato front? +Deze functie wordt niet direct door Open Catalogi ondersteund, althans contect en url beheer zo als we dat kennen binnen CMS systemen. We kunnen natuurlijk prima een metedata type toevoegen (of de gebruiker zelf) voor pagina's. Op dezelfde manier als waarop we die kennen voor producten en diensten (SDG) en nieuwsberichten. 19. Raadplegen rapportage bezoekers- / gebruiks-statistieken @@ -278,7 +278,16 @@ Wordt ondersteund via API. Sterker nog, de interfaces sturen de API aan. 30. Search API -Deze is ontwikkeld en wordt (vanzelfsprekend) doorontwikkeld +De search API is het kloppende hard van Open Catalogi. Het ondersteund naast full tekst search twee belangrijke mogenlijkheden +- Agregeted search (ofwel federatief over organisaties zoeken) +- Faceted search (van te voren zien hoeveel zoek resutleren een een aanpassing in de zoekopdracht opleverd) + +De documentatie van de search API is aan uitbreiding onderhevig maar bevind zich momenteel op [stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) (een api design tool). + 31. Genereren sitemap(-index) -- voor zolang dat nodig is voor KOOP, ondersteunen we dat. +Op dit moment heeft OpenWoo.app een tweetal keer meegedaan aan de beproeving van de sitemap xml koppeling naar KOOP. Een keer met als onderligende bron zaaksysteem.nl en een keer met Notubiz. Bijde keren zijn de gegevens succesvol overgebracht naar KOOP (en trouwens ook woogle) wel merken we hierbij de volgende problemen op. + + - Het sitemap xml format slaat de gegevens plat, hierdoor verdwijnen onderlinge verbanden tussen publicaties. Een voorbeeld hiervan is een raadsstuk, daarvan wil je eigenlijk zien dat het daarvoor in een commisie is behandeld en daarvoor bij B&W. In de opbouw van KOOP gaat deze context verloren. Terwijl juist dit intressant is voor het transperant maken van besluit vorming. + - KOOP ondersteund geen video bestanden + - KOOP ondersteund alleen documenten waardoor sommige objecten (e.g. raads agenda's) moeten worden omgeslagen naar PDF en minder toegankenlijk worden. From 102bd6cb30d7fc1e5628cc3ec570d1f3cdd0b9ca Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 18 Jul 2024 13:47:48 +0200 Subject: [PATCH 22/34] Unit tests afbeelding --- docs/partners/POC-check.md | 4 +++- docs/partners/image.png | Bin 0 -> 112606 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 docs/partners/image.png diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index b94deb81..fc630ae7 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -42,7 +42,9 @@ Keycloak, Splunk, Nagios, Apache spark, PRometheus, Loki, Gravana, Harbour, Open ### Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? -- We draaiden bijde soorten test, voor end-to-end testing maken we gebruik van [vitest](https://vitest.dev/) en voor unit tests van [php-unit](https://phpunit.de/index.html). De test covaradges wisselt wat rond de xx procent. +- We draaiden bijde soorten test, voor end-to-end testing maken we gebruik van [vitest](https://vitest.dev/) en voor unit tests van [php-unit](https://phpunit.de/index.html). De test covaradges wisselt wat rond de 60 procent, het doel is om dat voor 12 augustus naar 80% te hebben. + +![alt text](image.png) ### Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? diff --git a/docs/partners/image.png b/docs/partners/image.png new file mode 100644 index 0000000000000000000000000000000000000000..d09a9439011d53970209a769475d7e586b1c0f6d GIT binary patch literal 112606 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 literal 0 HcmV?d00001 From a0226191211ee2dec1d6e95ff8706a3469417fd3 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Mon, 22 Jul 2024 11:45:54 +0200 Subject: [PATCH 23/34] Samenwerking met koop toegevoegd --- docs/partners/Koop.md | 50 ++++++++++++++++++++++++++++++++++++++ docs/partners/POC-check.md | 2 +- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 docs/partners/Koop.md diff --git a/docs/partners/Koop.md b/docs/partners/Koop.md new file mode 100644 index 00000000..105f76c2 --- /dev/null +++ b/docs/partners/Koop.md @@ -0,0 +1,50 @@ +# Koop integratie van search API + +Vanuit verschillende overheden is aan KOOP de vraag gesteld of zij ook een API kunnen ondersteunen (naast de sitemap.xml) + +Voordelen van API gebruik +- Stabielere standaard en minder fout gevoelig +- Kleineere bevragingen + +## API versus Sitemap +OpenWoo.app maakt onder water gebruik van Open Catalogi als infrastructuur. Kort samengevat faciltieerd Open Catalogi het per organisatie neerzetten van een Woo catalogus. Binnen deze woo catalogus worden vervolgens publicaties (met bijlagen) aangemaakt die binnen een federatief netwerk worden gedeeld (vindbaar zijn). + +Om de publicaties voorspelbaar te houden wordt er vervolgens gebruik gemaakt van json-ld context die voor de normale json api is vertaald naar schema.json. Dat wil zeggen dat centraal wordt beheerd welke properties er per publicatie type beschickbaar zijn. Hiermee onstaat een moderne goed leesbare JSON api die ook gemakkenlijk door andere partijen te implementeren is. De meest basale voorwaarde voor een partij om mee te doen aan het federatief stelsel is een `/search` endpoint beschickbaar stellen waarop zij de data die zij doorzoekbaar wil maken aanbied in een JSON standaard. Het is dus niet per definitie nodig om de gehele OpenCatalogi standaard te implementeren of een installatie van Open Catalogi neer te zetten. Dat maakt de standaard voor andere leveraniers behapbaar. + +Documentatie +- [API definties](https://conduction.stoplight.io/docs/open-catalogi/liqfp3acl8cro-publication) +- [Open Catalogi Architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) + +Dit is in de praktijk een stuk sneller te organiseren vo + +## Crawling (harvesting) versus pub/sub +Op dit moment crawled KOOP iedere nacht alle overheids organisaties die een sitemap XML hebben aangeleverd. Dat heeft een aantal nadelen +- **Server intensief:** De volledige sitemap xml word opgehaald en verwekt dat kan over duizende bestanden gaan +- **Foutgevoelig:** De sitemap xml nor blijkt in de praktijk lastig te volgen voor ontwikkel partijen +- **Latend:** Er wordt alleen s'nachts gecrawled, hierdoor loopt de data altijd achter +- **Privacy gevoelig** Evenutele datalekken worden pas na 24 uur autatisch bijgewerkt + +Vanuit OpenWoo.app bieden we daarom een pub/sub patroon aan conform het NL GOV profiel voor cloud events. Dat betkend dat KOOP bij iedere CRUD actie op publicaties of bijlagen een systeem notifiatie `event` ontvangt. Aan de hand waarvan zij publicaties en documenten kan herindexeren of verwijderen. Hierdoor wordt de server belasting gelijkmatiger over de dag verdeerd en eventueele publicaties meteen zichtbaar. + +Om te zorgen dat er gedurende de dag geen notificaties verloren gaan hanteren we naast de ontvangst protocollen vanuit cloud events ook de mogenlijkheid om iedere nacht aan de API alle wijzigingen op te vragen zodat de administratie vierkant kan worden gemaakt. + +## Aanmelden versus discovery +Op dit moment moeten sitemap.xml bestanden handmatig worden aangemeld en verwerkt door KOOP. Vanuit Open Catalogi gebruiken we een adverticing/discovery waarbij nieuwe API's zichzelf kenbaar maken op het netwerk waarbij `trust` wordt gehandhaaft aan de hand van PKI certificaten. Vanuit Koop gezien betkend dit dat de Koop API bij iedere nieuwe `Woo Catalogus` een bericht krijgt, contact kan leggen met deze catalogus om aan de hand van het PKI certificaat te bepalen of deze legitiem is en dan een notificatie abbonement te nemen aan de hand van pub/sub. + +## Variant 1, Koop leest in via centrale dienst (koophulpje.nl) +In de meest makkenlijke opzet kan koop inlezen via de reeds bestaande landelijke voorziening van openwoo.app, deze biedt een federatieve API naast het search meganisme ook het notificatie megansisme. Hetgeen betekend dat KOOP (net als woogle) aan de hand van deze éné API de gegevens van alle deelnemende organisaties kan ophalen. + +Voordelen: Snel te realiseren +Nadelen: Het betkend dat en een flinke verschuiving van verkeer naar koophulpje optreed. Hiervoor zal om een bijdrage worden gevraagd + +## Variant 2, Koop leest in via de decentrale catalogi +Onder water is het federaal stelsel Open Catalogi een versameling van decentrale catalogi. Koop kan de verschillende Catalogi zelf in kaart brengen aan de henad van het in de API ingebouwde discovery meganisme. Om verolgens per organisatie een connectie te nemen + +## Variant 3, Koop installeerd Open Catalogi +Open Catalogi is een set van scripts die onderling zoek indexen uitlijnen. Daarmee bevat zij in de kern de logica die nodig is om deel te nemen aan het federatief netwerk. Hoewel er hierbij voor is gekozen om géén data duplicatie maar vragen bij de bron toe te passen zou dat in theorie wel kunnen. Dat betekend dat er vanuit een OpenWoo.app perspectief twee uitbreidingen nodig zouden zijn om de gefederaliseerde data de huidige WOO index in te lezen. + +1 - Ondersteuning/Koppeling met de onderligende zoek engine +2 - Ondersteuning/Koppeling voor het locaal opbouwen van een zoek index + +Voordeel: Dit betkend dat Open Catalogi een door Koop gehoste uitbreiding kan zijn op haar huidige index, ofwel weinig "bouw" +Nadeel: Koop zal en Open Catalogi instantie moeten (laten) hosten. Er zullen ook ontwikkelkosten zijn aan de kant van OpenCatalogi en OpenWoo \ No newline at end of file diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index fc630ae7..63a1303c 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -4,7 +4,7 @@ ### Voldoet de oplossing aan de CG architectuur. Zie ook figuur 5 in de PSA. -- Ja, de architectuur voldoent aan de CG architectuur (het heeft immers status goud). In princiepe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. +Ja, de architectuur voldoent aan de CG architectuur (het heeft immers status goud). In princiepe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? From 45e3db6223411b2f80a55b05b55a4c0e03697bcf Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 24 Jul 2024 07:36:35 +0200 Subject: [PATCH 24/34] Verwerken van feedback Martin --- docs/partners/POC-check.md | 199 ++++++++++++++++++++----------------- 1 file changed, 110 insertions(+), 89 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 63a1303c..d278f85b 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -2,123 +2,144 @@ ## Common Ground Architectuur -### Voldoet de oplossing aan de CG architectuur. Zie ook figuur 5 in de PSA. +### Voldoet de oplossing aan de CG architectuur? Zie ook figuur 5 in de PSA. -Ja, de architectuur voldoent aan de CG architectuur (het heeft immers status goud). In princiepe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. +Ja, de architectuur voldoet aan de common ground architectuur (het heeft immers status [goud](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc)). In principe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. Deze komen neer op diverse extra frontends (de publicatiepagina's van de leveranciers) en een service voor het inladen van gegevens uit diverse bronnen. -### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant. Slaat de applicatie zelf nog gegevens op direct in een database? Welke? +De componenten zijn allen los te draaien en vervangbaar, en juist de inzet van meerdere frontends toont aan dat de applicatie voldoet aan een goede architecturale scheiding. De codebases van open catalogi zelf zijn terug te vinden onder [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) en de aanvullende codebases van OpenWoo.app onder [OpenWoo architectuur](https://openwoo.app/Techniek/Architectuur/). -Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geld bijvoorbeeld voor Publicaties en Bestanden. De beheer interface beschikt daarnaast echter over een eigen database voor het opslaan van configuratie zo als rollen, rechten, logging etc. +### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant? Slaat de applicatie zelf nog gegevens op direct in een database? Welke? -Het is een tevens een keuze (configuratie mogenlijkheid) om in plaats van ORC/DRC gebruik te maken van MongoDB (object store) of zelfs de interne postgress database van de beheer interface. Het laatste wordt afgeraden voor productie maar maakt het bijvoorbeeld makkenlijk om de applicatie even locaal op een laptop op te starten. +Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. + +Het is belangrijk om te vermelden dat OpenCatalogi beschikt over drie mogelijkheden voor het opslaan van data: +- Opslag in MongoDB (hierbij wordt Open Catalogi zelf een register) +- Opslag in Overige Objecten en Document Registratie Component +- Opslag in de interne PostgreSQL database van de beheeromgeving (alleen bedoeld voor demo en development) ### Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? -Zekers, sterker nog dat is gangbaar. Er zijn op dit moment 5 verschillende Publicatie platformen aangesloten op de Open Catalogi api, waarvan 4 onderdeel zijn van de OpenWoo.app community. in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruikt van de de API. Er zijn op dit moment geen mobiele app's die gebruik maken van de API maar er zijn wel organisaties die overwegen om hem in de mijn omgeving op te nemen (voor locaal nieuws). -In een iets bredere context zijn naar koophulje (de sitemapxml adaptor voor koop) ook andere adaptors in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren uit open catalogi). Voorbeelden hiervan zijn DROP en SDG. +Zeker, sterker nog, dat is gangbaar. Er zijn op dit moment vijf verschillende publicatieplatformen aangesloten op de Open Catalogi API, waarvan vier onderdeel zijn van de OpenWoo.app community. In de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht met verwijzingen naar de codebases. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruik van de API. Er zijn op dit moment geen mobiele apps die gebruik maken van de API, maar er zijn wel organisaties die overwegen om deze in hun omgeving op te nemen (voor lokaal nieuws, met name het OpenWeb-concept). +In een bredere context zijn naast koophulje (de sitemapxml adaptor voor koop) ook andere adapters in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren vanuit open catalogi). Voorbeelden hiervan zijn DROP en SDG. ## Technologie ### Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. -- Voor de publicatie platformen wisselen technologiestack's per leverancier, Conduction en Acato bouwen statische voorkanten aan de hand van NL Design react framework(bijvoorbeeld de ui van tilburg) en IO Digital volledige php wordpress plugins. -- Op de backend zijn we recentenlijk overgestapt van conductions eigen oude framework (commong gateway) naar nextcloud framework (php+vue). Daar zijn veel redenen voor en die staan uitgelegd op in een [blog](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/) maar nextcloud als framework is echt gericht op kubernetes (en bevat dsu onboard integratie voor logging wegschrijven, monitoring, adfs etc). -- Op de datalaag wordt er door nextcloud zelf gebruik gemaakt van postgress. Vanuit applicatie oogpunt shrijven we de overige data bij voorkeur weg naar ORC (overige objecten), DRC (de documenten api van ZGW maar bijvoorbeeld ook corsa) + Elastic Search. Wie bieden echter ook de API aan overheden om één of al deze te vervangen door mongodb of alle data in de nexloud postgress op te slaan. Dat is een bewuste keuze, kubernetes blijkt voor veel overheden een drempel en we willen de applicatie ook geschickt houden van organisaties die en traditionele LAMP stack op VM's draaien. +- **Laag 5 en 4** Voor de publicatieplatformen (inwoners frontends) wisselen technologiestacks per leverancier. Conduction en Acato bouwen statische voorkanten aan de hand van het NL Design React framework (bijvoorbeeld de UI van de gemeente Tilburg) en IO Digital volledige PHP WordPress-plugins. +- **Laag 2** Op de backend zijn we recentelijk overgestapt van Conduction's eigen oude Common Gateway (PHP+React) naar het Nextcloud framework (PHP+Vue). Er zijn veel redenen voor deze overstap, die uitgelegd staan in een [blog](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/), maar kort samengevat is Nextcloud als framework echt gericht op Kubernetes (en bevat dus van zichzelf integratie voor logging, monitoring, ADFS, etc.). +- **Laag 1** Op de datalaag wordt er door Nextcloud zelf gebruik gemaakt van [PostgreSQL](https://www.postgresql.org/). Vanuit applicatieoogpunt schrijven we de overige data bij voorkeur weg naar objectregistraties (zoals overige objecten of MongoDB) en documenten naar een gespecialiseerd documentmanagementsysteem (zoals documentregistratiecomponent). Voor zoekfuncties wordt weggeschreven naar een gespecialiseerde zoekindex (Elastic Search). +Let op: Voor veel overheden blijkt deze opzet (te) complex. We bieden daarom ook de optie aan om de volledige setup te draaien vanuit de PostgreSQL van de Nextcloud-installatie. Er kan in de configuratie per opslagtype (object, document, zoekfunctie) worden aangegeven of een externe bron moet worden gebruikt of de interne PostgreSQL. ### Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? + OpenWoo.app maakt gebruik van diverse bestaande componenten om een robuuste, veilige en schaalbare oplossing te bieden. Hieronder staan de belangrijkste componenten die in de technologiestack worden gebruikt: -- DRC, -- ORC +- Document Registratie Component (uit bijvoorbeeld Open Zaak) +- Object Registratie Component +- Object Type Catalogus - Elasticsearch - FSC/NLX -- Nextcloud asl basis framework +- Nextcloud als basisframework - Diverse NL Design React componenten -Hieromheen is het vooral belangrijk om te vermelden dat de keuze voor nextcloud als basis framework voortkomt uit de goede out of the box ondersteuning voor -Keycloak, Splunk, Nagios, Apache spark, PRometheus, Loki, Gravana, Harbour, Open Shift en Azure. Dat is belangrijk omdat dit het platform goed schaalbaar en monitorbaar maakt in complexe kubernates omgevingen. +Daarnaast is het belangrijk om te vermelden dat de keuze voor Nextcloud als basisframework voortkomt uit de goede out-of-the-box ondersteuning voor Keycloak, Splunk, Nagios, Apache Spark, Prometheus, Loki, Grafana, Harbour, OpenShift en Azure. Dit is belangrijk omdat dit het platform goed schaalbaar en monitorbaar maakt in complexe Kubernetes-omgevingen en daarmee bij uitstek geschikt is voor uitlevering als SAAS-platform. ### Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? -- We draaiden bijde soorten test, voor end-to-end testing maken we gebruik van [vitest](https://vitest.dev/) en voor unit tests van [php-unit](https://phpunit.de/index.html). De test covaradges wisselt wat rond de 60 procent, het doel is om dat voor 12 augustus naar 80% te hebben. +We draaien beide soorten tests. Voor end-to-end testing maken we gebruik van [Vitest](https://vitest.dev/) en voor unit tests van [PHPUnit](https://phpunit.de/index.html) en [Jest](https://jestjs.io/). De test coverage wisselt rond de 60 procent. Het doel is om dat voor 12 augustus naar 80% te hebben. Meer documentatie hierover is opgenomen in de [GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/verder-documentatie) van de Open Catalogi Nextcloud-app. ![alt text](image.png) -### Zijn er installatiescripts? Is er een Helm chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? +### Zijn er installatiescripts? Is er een Helm-chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? -Zeker, goede installeerheid was een drive achter deze stack keuze. Er zijn een aantal installatie routes beschickbaar, voor (kubernetes) productie omgevingen zijn de stapppen redenlijk simpel -- Installeer Nexcloud (bijvoorbeeld via [Azure](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nextcloudgmbh1597841818906.nextcloud?tab=overview), [Open Shift](https://catalog.redhat.com/software/container-stacks/detail/65e9dc6f6365ba88288a412c) of [Artifact HUb](https://artifacthub.io/packages/helm/nextcloud/nextcloud) de officieele cloud native foundation marktplaats) -- Installeer via de nextcloud ui de Open Catalogi app -- Activeer in de Open Catalogi app de OpenWoo.app metadata bestanden +Zeker, goede installeerbaarheid was een drijfveer achter deze stackkeuze. Simpel gezegd komen alle Open Catalogi-installaties neer op drie stappen, met een extra stap voor OpenWoo.app: -De herbruikte componenten binnen commonground kennen hun eigen installatie handeleidingen (ORC en DRC). Elastic (en optioneel MongoDB) zijn op Azure en Open Shift standaard als apps beschickbaar. +1. Installeer Nextcloud: + - Via Helm, zie [Artifact Hub](https://artifacthub.io/packages/helm/nextcloud/nextcloud) + - Als Azure-app, zie de [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nextcloudgmbh1597841818906.nextcloud?tab=overview) + - Via OpenShift, zie de [OpenShift-catalogus](https://catalog.redhat.com/software/container-stacks/detail/65e9dc6f6365ba88288a412c) +2. Activeer de Open Catalogi-app, instructie op de [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) +3. Configureer de Nextcloud-app, instructie op de [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) +4. Installeer de WooPublicatie-pagina, instructies op de [OpenWoo.app GitHub](https://github.com/ConductionNL/woo-website-template) -Optioneel kan er een losse frontend als container worden geinstalleerd, maar dat is in het van de standaard react container niet nodig. Die kan aan de hand van NL design tokens serverless worden gedraaid vanuit de [github marketplace](https://github.com/marketplace?query=opencatalogi) . +Deze stappen staan ook nader beschreven in de nieuwe [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud). -Voor (locaal) ontwikkleen en demo'en is er een docker-compose voor het draaien in een container. De instructies zijn [hier](https://github.com/ConductionNL/opencatalogi?tab=readme-ov-file#open-catalog) te vinden. Deze word momenteel door Acato getest (so far so good) +Voor (lokaal) ontwikkelen en demo's is er ook een `docker-compose` voor het draaien in een container. De instructies zijn [hier](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-docker) te vinden. Deze wordt momenteel door Acato getest (so far so good). -Na installatie zijn er enige (optionele) vereiste, zoals een API-sleutel voor MongoDB en clusternaam en voor het activeren van Elastic een sleutel en index of voor productie omgevingen een ORC en DRC. +Na installatie zijn er enige (optionele) vereisten, zoals een API-sleutel voor MongoDB en clusternaam en voor het activeren van Elastic een sleutel en index of voor productieomgevingen toegang tot de objecten API, objecttype API en documentregistratiecomponent. ## Bronnen ### Welke bronnen kunnen nu worden aangesloten? -- Momenteel de volgende bronnen: +Momenteel de volgende bronnen: - (xxllnc) zaaksysteem.nl -- Elasticsearch -- ZGW-api bronnen -- Bronnen met een REST API +- ZGW-API-bronnen (DRC en ZRC) +- ORI-API-bronnen (Notubiz en andere raadsinformatiesysteemleveranciers) +- Objectregistraties (MongoDB en overige objecten) +- KOOP en WOOGLE +- SharePoint +- StUF en ZDS +- Bronnen met een REST API kunnen in theorie worden geconfigureerd ### Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? -Ja momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de commongateway, dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped) maar willen we eigenlijk ook over trekken naar een nextcloud app voor kubernetes. -Voor ZGW, DRC en ORI is er nu al een addaptor voor ondersteuning en Tilburg en Acato zijn aan het afronden op Stuf en Sharepoint. +Ja, momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de CommonGateway. Dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped), maar we willen deze eigenlijk ook overzetten naar een Nextcloud-app voor Kubernetes. Voor zaakgericht werken, objectregistraties en open raadsinformatie is er nu al een adapter voor ondersteuning en Tilburg en Acato zijn aan het afronden op StUF en SharePoint. + +Deze adapter voorziet in het ontsluiten van bronnen náár het publicatieregister toe. Omdat Dimpact binnen de MVP gebruikmaakt van handmatig publiceren, is de CommonGateway voor de MVP out of scope. In een bredere context geldt dat we de CommonGateway in Q3 gaan uitfaseren. Het doel is om bij de inwerkingtreding Woo (1 november) alles op Nextcloud te draaien. ### Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? -Bijde, bijvoorkeur gebruiken we een pubsub patroon zo als notificaties bij ZGW. Of een tussenvorm via een data distributie syseem (haal nu deze stuf zaak op). Maar in de praktijk ondersteunen lang niet alle pakketen dit. In die gevalen grijpen we terug op batch verwerking. Hoe vaak die draaien hangt van de bron af en is per bron instelbaar. Dat kan elke uur of iedere nacht. Maar als de bron bijvoorbeeld kan fileren op items die afgelopen x minuten zijn gewijzigd kijken we graag idere 5 tot 10 minuten even (als het antwoord dan leeg is zijn we ook niet exsesief aan het vragen) + +Beide, bij voorkeur gebruiken we een pubsub-patroon zoals notificaties bij ZGW of een tussenvorm via een datadistributiesysteem (haal nu deze stufzaak op). Maar in de praktijk ondersteunen lang niet alle pakketten dit. In die gevallen grijpen we terug op batchverwerking. Hoe vaak die draaien hangt van de bron af en is per bron instelbaar. Dat kan elk uur of elke nacht. Maar als de bron bijvoorbeeld kan filteren op items die afgelopen x minuten zijn gewijzigd, kijken we graag iedere 5 tot 10 minuten even (als het antwoord dan leeg is, zijn we ook niet excessief aan het vragen). ## Zoeken ### Hoe verhoudt de zoekindex zich tot de ODRC? -Deze is bewust losgekopeld, we hanteren het princiepe dat in de zoekindex alleen openbare informatie mag staan. +Deze is bewust losgekoppeld, we hanteren het principe dat in de zoekindex alleen openbare informatie mag staan. -## Slaat Elastic alle gegevens (docs) zelf op? -Dat hang van de configuratie keuzes van de gemeente af, maar bij voorkeur slaan we alleen de metedata van documenten op en halen we het document zelf uit het DRC op het moment dat het word opgevraagd. Er zijn echter casssusen waarin dat vanuit belasting of performance niet wensenlijk is. +### Slaat Elastic alle gegevens (docs) zelf op? + +Dat hangt van de configuratiekeuzes van de gemeente af, maar bij voorkeur slaan we alleen de metadata van documenten op en halen we het document zelf uit het DRC op het moment dat het wordt opgevraagd. Er zijn echter casussen waarin dat vanuit belasting of performance niet wenselijk is. ### Is de API voor zoeken een Elastic API of specifieke API voor WOO? -Het is een specifieke API voor de WOO die binnen de parameters valt van wat Elastic zelf ook kan uitleveren met wat configuraite. Met andere woorden de elastic instantie kan ook direct worden bevraagd. De adaptor er boven op voorziet echter in twee extra functionaliteiten die wij binnen de WOO wensenlijk vinden -- Federatief zoeken over meerdere elastic search instanties -- Ophalen documenten door routeren naar b.v. DRC ipv elastic. + +Het is een specifieke API voor de WOO die binnen de parameters valt van wat Elastic zelf ook kan leveren met wat configuratie. Met andere woorden, de Elastic-instantie kan ook direct worden bevraagd. De adapter erbovenop voorziet echter in twee extra functionaliteiten die wij binnen de WOO wenselijk vinden: +- Federatief zoeken over meerdere Elastic Search-instanties +- Ophalen documenten door routeren naar bijvoorbeeld DRC in plaats van Elastic. ### SaaS ### Dimpact wil de oplossing als SaaS-dienst aanbieden aan haar leden. Wat is er nodig om de oplossing als SaaS aan te bieden? -Een kubernetes of azure omgeving met daarop bij voorkeur een managment tool voor container orchestratie die artifacthub ondersteund (er zijn er een aantal). In dat geval kan er visueel geinstalleerd worden. -Daarnaast ondersteunen we best een flink aantal monitoring en dashboard tools, het is verstandig om die ook operationeel te hebben (bijvoorbeeld graffana) +Een Kubernetes- of Azure-omgeving met daarop bij voorkeur een managementtool voor container orchestratie die Artifact Hub ondersteunt (er zijn er een aantal). In dat geval kan er visueel geïnstalleerd worden. -### Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie. +Daarnaast ondersteunen we best een flink aantal monitoring- en dashboardtools, het is verstandig om die ook operationeel te hebben (bijvoorbeeld Grafana). -Hiervoor is een handleiding beschickbaar op https://openwoo.app/Techniek/Productie/ +### Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie? +Hiervoor is een handleiding beschikbaar op https://openwoo.app/Techniek/Productie/. ## Authenticatie en autorisatie ### Kan de oplossing worden aangesloten op AD (OIDC)? -Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. Hiervoor zijn meerdere [handleidingen](https://www.schiessle.org/articles/2023/07/04/nextcloud-and-openid-connect/) beschickbaar die bijvoorbeeld ook gebruik maken van Keycloak (er kan ook direct met LDAP op AD worden gekopeld). + +Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. Hiervoor zijn meerdere [handleidingen](https://www.schiessle.org/articles/2023/07/04/nextcloud-and-openid-connect/) beschikbaar die bijvoorbeeld ook gebruik maken van Keycloak (er kan ook direct met LDAP op AD worden gekoppeld). ### Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? -Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. Het toekenen van specifieke rechten aan rollen (bijvoorbeeld publiceren) gebeurd vervolgens in de applicatie zelf. -### Kunnen beide bij installatie worden ingericht via de Helm chart? -Ja, voor zover wij weten zijn alle configuratie opties (dus ook adaptors) zijn via de config optie van de [helm chart](https://artifacthub.io/packages/helm/nextcloud/nextcloud?modal=values) in te stellen. Dat betend dus dat de applicaite (in theorie) volledig werkend kan worden opgesponnen. +Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. Het toekennen van specifieke rechten aan rollen (bijvoorbeeld publiceren) gebeurt vervolgens in de applicatie zelf. + +### Kunnen beide bij installatie worden ingericht via de Helm-chart? + +Ja, voor zover wij weten zijn alle configuratieopties (dus ook adapters) via de config-optie van de [Helm-chart](https://artifacthub.io/packages/helm/nextcloud/nextcloud?modal=values) in te stellen. Dat betekent dus dat de applicatie (in theorie) volledig werkend kan worden opgespannen. ## Standaarden -Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. +### Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. - ZGW - REST API (OpenAPI) @@ -132,11 +153,11 @@ Zie voor meer standaarden de [Open Catalogi Architectuur](https://documentatie.o ### Is de ODRC API een standaard API? -- Het is een API die volgens de NL API strategie functioneert, met 'reguliere' endpoints en convenience endpoints. We zijn nu in overleg met VNG en KOOP over standaardisatie, we verwachten daarbij maandag 22 juli een eerste besluit vanuit Koop. De VNG heeft 27 Juni reeds aangegeven de API als kandidaat te zien. +Het is een API die volgens de NL API-strategie functioneert, met 'reguliere' endpoints en convenience-endpoints. We zijn nu in overleg met VNG en KOOP over standaardisatie, we verwachten daarbij maandag 22 juli een eerste besluit vanuit Koop. De VNG heeft 27 juni reeds aangegeven de API als kandidaat te zien. ## **Aan te tonen functionaliteiten bij PoC OpenWoo.app** -Onderstaande functionaliteien worden ondersteund, of worden op zeer korte termijn gerealiseerd. +Onderstaande functionaliteiten worden ondersteund of worden op zeer korte termijn gerealiseerd. ## ODRC / gebruikersinterface “Model- en publicatiebeheer” @@ -149,88 +170,88 @@ Toevoegen, wijzigen en intrekken/verwijderen van extra informatiecategorieën, r Toevoegen, wijzigen en intrekken/verwijderen van organisaties, rekening houdend met TOOI-waardelijst Toevoegen, wijzigen en intrekken/verwijderen van organisatie-onderdelen Toevoegen, wijzigen en intrekken/verwijderen van extra metadata-velden (per informatiecategorie) -Toevoegen, wijzigen en intrekken/verwijderen van thema’s / onderwerpen +Toevoegen, wijzigen en intrekken/verwijderen van thema’s/onderwerpen -De OpenWoo.app ondersteund het CRUD + intrekken van alle beovenstaande functionaliteiten voor het beheer van de modellen. +De OpenWoo.app ondersteunt het CRUD + intrekken van alle bovenstaande functionaliteiten voor het beheer van de modellen. 3. Publicatiebeheer: - a. Wijzigen en intrekken/verwijderen van een concept-publicatie - b. Wijzigen en intrekken/verwijderen van een publicatie - c. Waarderen archief -- d. Raadplegen logging / audittrail van een (concept-)publicati +- d. Raadplegen logging/audittrail van een (concept-)publicatie - e. Rapportages -De OpenWoo.app ondersteund het CRUD + intrekken van alle beovenstaande functionaliteiten voor het beheer van de publicaties. +De OpenWoo.app ondersteunt het CRUD + intrekken van alle bovenstaande functionaliteiten voor het beheer van de publicaties. 4. Help-functie -Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODRC. +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips en documentatie voor zowel gebruikers, beheerders als ontwikkelaars van het ODRC. ## ODPC / gebruikersinterface “Autorisatiebeheer” 5. Inloggen (met SSO?) -- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. +Dit gebeurt op dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. 6. Toevoegen, wijzigen en verwijderen van autorisatiegroepen -- Gebruikers kunnen autorisatiegroepen toevoegen, wijzigen en verwijderen. Deze groepen worden beheerd via LDAP. +Gebruikers kunnen autorisatiegroepen toevoegen, wijzigen en verwijderen. Deze groepen worden beheerd via LDAP. 7. Medewerkers toevoegen aan en verwijderen uit een autorisatiegroep -- Medewerkers kunnen worden toegevoegd aan of verwijderd uit een autorisatiegroep. Dit wordt beheerd via LDAP. +Medewerkers kunnen worden toegevoegd aan of verwijderd uit een autorisatiegroep. Dit wordt beheerd via LDAP. 8. Een autorisatiegroep autoriseren voor: - a. Informatiecategorieën (cq “publiceren van”) -- b. organisaties (cq “publiceren namens”) -- c. organisatie-onderdelen (cq “publiceren namens”) -- d. thema’s / onderwerpen (cq “publicatie hoort bij”) +- b. Organisaties (cq “publiceren namens”) +- c. Organisatie-onderdelen (cq “publiceren namens”) +- d. Thema’s/onderwerpen (cq “publicatie hoort bij”) -- Configuratie en Authorisatieschema's: De configuratie en authorisatieschema's voor bovenstaande autorisaties worden al ondersteund via LDAP. De beheerinterface voor het uitvoeren van deze taken wordt momenteel ontwikkeld. +Configuratie en authorisatieschema's: De configuratie en authorisatieschema's voor bovenstaande autorisaties worden al ondersteund via LDAP. De beheerinterface voor het uitvoeren van deze taken wordt momenteel ontwikkeld. 9. Raadplegen logging van (wijzigingen in) autorisaties -- Het is een herleidbaar audittrail dat inzichtelijk wordt gemaakt voor het raadplegen van de logging. +Het is een herleidbaar audittrail dat inzichtelijk wordt gemaakt voor het raadplegen van de logging. 10. Help-functie -Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODPC. +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips en documentatie voor zowel gebruikers, beheerders als ontwikkelaars van het ODPC. ## ODPC / gebruikersinterface “Publiceren” 11. Inloggen (met SSO?) -- Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. +Dit gebeurt op dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. -12. aanmaken nieuwe (concept-)publicatie, met o.a.: +12. Aanmaken nieuwe (concept-)publicatie, met o.a.: -- a. Uploaden een of meerdere bestanden -- b. Selecteren een of meerdere informatiecategorieën -- c. Selecteren organisatie -- d. Selecteren een of meerdere thema’s / onderwerpen +- a. Uploaden van een of meerdere bestanden +- b. Selecteren van een of meerdere informatiecategorieën +- c. Selecteren van een organisatie +- d. Selecteren van een of meerdere thema’s/onderwerpen - e. Verplichte DiWoo-velden -- f. Invullen extra metadata-velden +- f. Invullen van extra metadata-velden - g. Opslaan als concept of direct publiceren -Alle bovenstaande functionaliteit wordt ondersteund in het publicaitemodal in de beheerinterface voor publicaties. +Alle bovenstaande functionaliteiten worden ondersteund in het publicatiemodel in de beheerinterface voor publicaties. 13. Een concept-publicatie muteren en alsnog publiceren 14. Een publicatie intrekken -Publicaites intrekken wordt al ondersteund door het verwijderen van een verplicht veld. Zo is een conceptpublicatie ook al gelijk ondersteund. Met andere woorden, een publicicatie zonder alle verplichte velden ís een concept-publicatie. Let wel op dat als een publicatie eenmaal is gepubliceerd en een derde partij een kopie heeft gemaakt, de OpenWoo.app daar niets meer aan kan doen. In dat geval moet er contact opgenomen worden met bijv. WooGle of KOOP. +Publicaties intrekken wordt al ondersteund door het verwijderen van een verplicht veld. Zo is een conceptpublicatie ook al gelijk ondersteund. Met andere woorden, een publicatie zonder alle verplichte velden ís een concept-publicatie. Let wel op dat als een publicatie eenmaal is gepubliceerd en een derde partij een kopie heeft gemaakt, de OpenWoo.app daar niets meer aan kan doen. In dat geval moet er contact opgenomen worden met bijvoorbeeld WooGle of KOOP. 15. Help-functie -Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODPC. +Er wordt nagedacht over help-functies binnen de beheerinterface. Denk hierbij aan tooltips en documentatie voor zowel gebruikers, beheerders als ontwikkelaars van het ODPC. ## ODBP / gebruikersinterface “Contentbeheer” 16. Inloggen (met SSO?) -Dit gebeurd op een dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. +Dit gebeurt op dezelfde manier als het inloggen voor het ODRC, via ADFS, LDAP of SAML. 17. Wijzigen welkomstpagina @@ -238,15 +259,15 @@ Dit wordt ondersteund. 18. Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites -Deze functie wordt niet direct door Open Catalogi ondersteund, althans contect en url beheer zo als we dat kennen binnen CMS systemen. We kunnen natuurlijk prima een metedata type toevoegen (of de gebruiker zelf) voor pagina's. Op dezelfde manier als waarop we die kennen voor producten en diensten (SDG) en nieuwsberichten. +Deze functie wordt niet direct door Open Catalogi ondersteund, althans content en url-beheer zoals we dat kennen binnen CMS-systemen. We kunnen natuurlijk prima een metadatatype toevoegen (of de gebruiker zelf) voor pagina's. Op dezelfde manier als waarop we die kennen voor producten en diensten (SDG) en nieuwsberichten. -19. Raadplegen rapportage bezoekers- / gebruiks-statistieken +19. Raadplegen rapportage bezoekers-/gebruiksstatistieken -Dit wordt ondersteund door bijvoorbeeld Google Analystics, Nextcloud Analystics, maar er kan gedacht worden aan dit op te lossen via Elastic(Stack) in hoeverre hier vraag naar is. +Dit wordt ondersteund door bijvoorbeeld Google Analytics, Nextcloud Analytics, maar er kan gedacht worden aan dit op te lossen via Elastic(Stack) in hoeverre hier vraag naar is. 20. Help-functie -Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODBP. +Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips en documentatie voor zowel gebruikers, beheerders als ontwikkelaars van het ODBP. ## ODBP / gebruikersinterface “Zoeken en raadplegen” @@ -255,7 +276,7 @@ Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbi 23. Zoeken met behulp van een zoekbalk: - a. Full-tekst -- b. 25. In metadata-waarde +- b. In metadata-waarde 24. Gebruik van boolean operators 25. Zoeken met behulp van filters @@ -263,11 +284,11 @@ Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbi 27. Openen van een zoekresultaat en raadplegen van een publicatie 28. Downloaden van een publicatie -Alle bovenstaande functionalitiet wordt ondersteund. +Alle bovenstaande functionaliteiten worden ondersteund. 29. Help-functie -Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips, documentatie voor zowel gebruikers, beheerders en ontwikkelaars van het ODBP. +Er wordt nagedacht over help-functies binnen de gebruikersinterface. Denk hierbij aan tooltips en documentatie voor zowel gebruikers, beheerders als ontwikkelaars van het ODBP. ## Technisch @@ -280,16 +301,16 @@ Wordt ondersteund via API. Sterker nog, de interfaces sturen de API aan. 30. Search API -De search API is het kloppende hard van Open Catalogi. Het ondersteund naast full tekst search twee belangrijke mogenlijkheden -- Agregeted search (ofwel federatief over organisaties zoeken) -- Faceted search (van te voren zien hoeveel zoek resutleren een een aanpassing in de zoekopdracht opleverd) +De search API is het kloppende hart van Open Catalogi. Het ondersteunt naast full-text search twee belangrijke mogelijkheden: +- Aggregated search (ofwel federatief over organisaties zoeken) +- Faceted search (van te voren zien hoeveel zoekresultaten een aanpassing in de zoekopdracht oplevert) -De documentatie van de search API is aan uitbreiding onderhevig maar bevind zich momenteel op [stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) (een api design tool). +De documentatie van de search API is aan uitbreiding onderhevig, maar bevindt zich momenteel op [Stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) (een API-design tool). 31. Genereren sitemap(-index) -Op dit moment heeft OpenWoo.app een tweetal keer meegedaan aan de beproeving van de sitemap xml koppeling naar KOOP. Een keer met als onderligende bron zaaksysteem.nl en een keer met Notubiz. Bijde keren zijn de gegevens succesvol overgebracht naar KOOP (en trouwens ook woogle) wel merken we hierbij de volgende problemen op. +Op dit moment heeft OpenWoo.app een tweetal keer meegedaan aan de beproeving van de sitemap-XML-koppeling naar KOOP. Een keer met als onderliggende bron zaaksysteem.nl en een keer met Notubiz. Beide keren zijn de gegevens succesvol overgebracht naar KOOP (en trouwens ook Woogle). Wel merken we hierbij de volgende problemen op: - - Het sitemap xml format slaat de gegevens plat, hierdoor verdwijnen onderlinge verbanden tussen publicaties. Een voorbeeld hiervan is een raadsstuk, daarvan wil je eigenlijk zien dat het daarvoor in een commisie is behandeld en daarvoor bij B&W. In de opbouw van KOOP gaat deze context verloren. Terwijl juist dit intressant is voor het transperant maken van besluit vorming. - - KOOP ondersteund geen video bestanden - - KOOP ondersteund alleen documenten waardoor sommige objecten (e.g. raads agenda's) moeten worden omgeslagen naar PDF en minder toegankenlijk worden. +- Het sitemap-XML-formaat slaat de gegevens plat, hierdoor verdwijnen onderlinge verbanden tussen publicaties. Een voorbeeld hiervan is een raadsstuk. Daarvan wil je eigenlijk zien dat het daarvoor in een commissie is behandeld en daarvoor bij B&W. In de opbouw van KOOP gaat deze context verloren, terwijl juist dit interessant is voor het transparant maken van besluitvorming. +- KOOP ondersteunt geen videobestanden +- KOOP ondersteunt alleen documenten, waardoor sommige objecten (e.g. raadsagenda's) moeten worden omgezet naar PDF en minder toegankelijk worden. From 7b62f41967b91b8698f84e9f0aa0c40ce9363da5 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 24 Jul 2024 08:47:34 +0200 Subject: [PATCH 25/34] Add images --- docs/partners/POC-check.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index d278f85b..a5dbc9c6 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -6,8 +6,14 @@ Ja, de architectuur voldoet aan de common ground architectuur (het heeft immers status [goud](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc)). In principe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. Deze komen neer op diverse extra frontends (de publicatiepagina's van de leveranciers) en een service voor het inladen van gegevens uit diverse bronnen. +Versimpeld komt de architectuur daarmee neer op ![architectuur versimpeld](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). + De componenten zijn allen los te draaien en vervangbaar, en juist de inzet van meerdere frontends toont aan dat de applicatie voldoet aan een goede architecturale scheiding. De codebases van open catalogi zelf zijn terug te vinden onder [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) en de aanvullende codebases van OpenWoo.app onder [OpenWoo architectuur](https://openwoo.app/Techniek/Architectuur/). +Als we de verschillende oplossingen in kaart brengen die invulling geven aan de bovenstaande componenten komen we uit op de volgende plaat. + + ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). + ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant? Slaat de applicatie zelf nog gegevens op direct in een database? Welke? Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. From c891fbba8ca8e97d8917ffab3d20592d1ca98fb0 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 24 Jul 2024 08:54:50 +0200 Subject: [PATCH 26/34] Fixed images --- docs/partners/POC-check.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index a5dbc9c6..4dbad500 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -6,13 +6,15 @@ Ja, de architectuur voldoet aan de common ground architectuur (het heeft immers status [goud](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc)). In principe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. Deze komen neer op diverse extra frontends (de publicatiepagina's van de leveranciers) en een service voor het inladen van gegevens uit diverse bronnen. -Versimpeld komt de architectuur daarmee neer op ![architectuur versimpeld](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). +Versimpeld komt de architectuur daarmee neer op: +![architectuur versimpeld](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). De componenten zijn allen los te draaien en vervangbaar, en juist de inzet van meerdere frontends toont aan dat de applicatie voldoet aan een goede architecturale scheiding. De codebases van open catalogi zelf zijn terug te vinden onder [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) en de aanvullende codebases van OpenWoo.app onder [OpenWoo architectuur](https://openwoo.app/Techniek/Architectuur/). -Als we de verschillende oplossingen in kaart brengen die invulling geven aan de bovenstaande componenten komen we uit op de volgende plaat. +Als we de verschillende oplossingen in kaart brengen die invulling geven aan de bovenstaande componenten komen we uit op de volgende plaat: + ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components.svg). - ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). + ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant? Slaat de applicatie zelf nog gegevens op direct in een database? Welke? From 7127fca35e2a1aac62ffcfe97a1005f72ee90cc5 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Fri, 26 Jul 2024 15:25:29 +0200 Subject: [PATCH 27/34] Update op POC documentatie --- docs/partners/POC-check.md | 51 +++++++++++++++--- ...impact_architectuur_publicatieplatform.png | Bin 0 -> 116884 bytes docs/partners/image-1.png | Bin 0 -> 124316 bytes 3 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 docs/partners/dimpact_architectuur_publicatieplatform.png create mode 100644 docs/partners/image-1.png diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 4dbad500..0f42f83c 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -14,17 +14,47 @@ De componenten zijn allen los te draaien en vervangbaar, en juist de inzet van m Als we de verschillende oplossingen in kaart brengen die invulling geven aan de bovenstaande componenten komen we uit op de volgende plaat: ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components.svg). - +Opmerkingen +- Documenten worden (bij voorkeur) alléén opgeslagen in het document managment systeem +- Metadata over documenten wordt opgeslagen in de object store + ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant? Slaat de applicatie zelf nog gegevens op direct in een database? Welke? -Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. - +Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. Het is belangrijk om te vermelden dat OpenCatalogi beschikt over drie mogelijkheden voor het opslaan van data: - Opslag in MongoDB (hierbij wordt Open Catalogi zelf een register) - Opslag in Overige Objecten en Document Registratie Component - Opslag in de interne PostgreSQL database van de beheeromgeving (alleen bedoeld voor demo en development) +In afwijking van de Dimpact architectuur kiest Open Catalogi (en daarmee OpenWoo.app) ervoor om documenten en metadata daaruit los op te slaan, metadata wordt opgeslagen als object en een document binnen een DMS (via DRC) de overweging hier achter is dat objecten en documenten gebaad zijn bij gespecialiseerde systemen waarbij met name rondom documnenten die inzet van een DMS binnen een overheid gangbaar is. + +![alt text](dimpact_architectuur_publicatieplatform.png) + +Daarmee is de volgende vertaal tabel te maken van de Dimpact Publicatie PSA naar OpenWoo.app + +| Doel | Dimpact component | OpenWoo.app component | Repository | +| ------ | ------------------|-----------------------|-------| +| Ambtenaar | Openbare Documenten Publicitie Component (Publiceren)| Publicatie Afhandel Component | Nog niet openbaar | +| Beheerder | Openbaar Documenten Burger Portaal (Contenbeheer)| Technische Beheer Omgeving | [OpenCatalogi.app](https://github.com/ConductionNL/opencatalogi) | +| Burger | Openbaar Documenten Burger Portaal (Zoeken en raadplegen)| Publicatie Platform | Nog niet openbaar | +| Opslag | Openbaar Documenten Registratie Component (Model en publicatiebeheer)| Technische Beheer Omgeving | [OpenCatalogi.app](https://github.com/ConductionNL/opencatalogi) | +| Opslag | Openbaar Documenten Registratie Component (ODRC API)| Overige Objecten + Document Registratie Component | [Objects-api](https://github.com/maykinmedia/objects-api) , [Open zaak](https://github.com/open-zaak/open-zaak) | +| Index | Search Engine | Search Engine | [Elastic](https://github.com/ConductionNL/opencatalogi) | + +Hierbij hanteren we overigens scheiding tussen laag 1 en 2 waarbij op laag twee gebruik wordt gemaakt van "convience" api's die bronnen combineren, te weten + +- **Publicatie API** Gebruikt: +- - Objects API (voor publicatie objecten en meta data over documenten) +- - Documenten API (voor documenten) +- **Search API** Gebruikt: +- - Elastic API (voor zoeken) +- - Documenten API (voor ophalen en uitleveren van documenten) + +Voor bijde API's is de documentatie te vinden op [stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) + + + ### Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? Zeker, sterker nog, dat is gangbaar. Er zijn op dit moment vijf verschillende publicatieplatformen aangesloten op de Open Catalogi API, waarvan vier onderdeel zijn van de OpenWoo.app community. In de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht met verwijzingen naar de codebases. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruik van de API. Er zijn op dit moment geen mobiele apps die gebruik maken van de API, maar er zijn wel organisaties die overwegen om deze in hun omgeving op te nemen (voor lokaal nieuws, met name het OpenWeb-concept). @@ -39,7 +69,7 @@ In een bredere context zijn naast koophulje (de sitemapxml adaptor voor koop) oo - **Laag 2** Op de backend zijn we recentelijk overgestapt van Conduction's eigen oude Common Gateway (PHP+React) naar het Nextcloud framework (PHP+Vue). Er zijn veel redenen voor deze overstap, die uitgelegd staan in een [blog](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/), maar kort samengevat is Nextcloud als framework echt gericht op Kubernetes (en bevat dus van zichzelf integratie voor logging, monitoring, ADFS, etc.). - **Laag 1** Op de datalaag wordt er door Nextcloud zelf gebruik gemaakt van [PostgreSQL](https://www.postgresql.org/). Vanuit applicatieoogpunt schrijven we de overige data bij voorkeur weg naar objectregistraties (zoals overige objecten of MongoDB) en documenten naar een gespecialiseerd documentmanagementsysteem (zoals documentregistratiecomponent). Voor zoekfuncties wordt weggeschreven naar een gespecialiseerde zoekindex (Elastic Search). -Let op: Voor veel overheden blijkt deze opzet (te) complex. We bieden daarom ook de optie aan om de volledige setup te draaien vanuit de PostgreSQL van de Nextcloud-installatie. Er kan in de configuratie per opslagtype (object, document, zoekfunctie) worden aangegeven of een externe bron moet worden gebruikt of de interne PostgreSQL. + ### Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? @@ -88,11 +118,18 @@ Momenteel de volgende bronnen: - ZGW-API-bronnen (DRC en ZRC) - ORI-API-bronnen (Notubiz en andere raadsinformatiesysteemleveranciers) - Objectregistraties (MongoDB en overige objecten) -- KOOP en WOOGLE - SharePoint - StUF en ZDS - Bronnen met een REST API kunnen in theorie worden geconfigureerd +Daarnaast zijn er ook diverse afnemeners van de search api +- KOOP +- WOOGLE +- IO (website) +- Acatao (publicatie platform) +- Yard (website) + + ### Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? Ja, momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de CommonGateway. Dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped), maar we willen deze eigenlijk ook overzetten naar een Nextcloud-app voor Kubernetes. Voor zaakgericht werken, objectregistraties en open raadsinformatie is er nu al een adapter voor ondersteuning en Tilburg en Acato zijn aan het afronden op StUF en SharePoint. @@ -101,7 +138,7 @@ Deze adapter voorziet in het ontsluiten van bronnen náár het publicatieregiste ### Worden bronnen via streaming aangesloten? Of is dat batch (bijv. 's nachts of ieder uur)? -Beide, bij voorkeur gebruiken we een pubsub-patroon zoals notificaties bij ZGW of een tussenvorm via een datadistributiesysteem (haal nu deze stufzaak op). Maar in de praktijk ondersteunen lang niet alle pakketten dit. In die gevallen grijpen we terug op batchverwerking. Hoe vaak die draaien hangt van de bron af en is per bron instelbaar. Dat kan elk uur of elke nacht. Maar als de bron bijvoorbeeld kan filteren op items die afgelopen x minuten zijn gewijzigd, kijken we graag iedere 5 tot 10 minuten even (als het antwoord dan leeg is, zijn we ook niet excessief aan het vragen). +Beide, bij voorkeur gebruiken we een [pubsub-patroon](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) zoals notificaties bij ZGW. Bij pubsub nemen we een notificatie op CRUD acties op bron objecten (bijvoorbeeld zaken van het type w00-verzoeken) en werken we het publicatie opbject bij op het moment dat er iets wijzigd in de onderligende zaak. Zo zorgen we dat gegevens altijd bij zijn, en we niet afhankenlijk zijn van nachtenlijk crawlen of harvesten. Maar in de praktijk ondersteunen lang niet alle pakketten dit. In die gevallen grijpen we terug op batchverwerking. Hoe vaak die draaien hangt van de bron af en is per bron instelbaar. Dat kan elk uur of elke nacht. Maar als de bron bijvoorbeeld kan filteren op items die afgelopen x minuten zijn gewijzigd, kijken we graag iedere 5 tot 10 minuten even (als het antwoord dan leeg is, zijn we ook niet excessief aan het vragen). ## Zoeken @@ -139,7 +176,7 @@ Ja, Nextcloud werkt met LDAP voor het AD, of (onder andere) ADFS voor SSO. Hierv ### Hoe worden rollen en rechten ingeregeld? Kan de oplossing rollen uit AD gebruiken? -Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. Het toekennen van specifieke rechten aan rollen (bijvoorbeeld publiceren) gebeurt vervolgens in de applicatie zelf. +Dit werkt via [LDAP](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html). De oplossing kan dus de rollen uit het AD overnemen. Het toekennen van specifieke rechten aan rollen (bijvoorbeeld publiceren) gebeurt vervolgens in de applicatie zelf. Ook kunnen in de applicatie rollen worden aangemaakt waardoor er flexibiliteit is ten aanzien van de rollen structuur van de afnemende overheid. ### Kunnen beide bij installatie worden ingericht via de Helm-chart? diff --git a/docs/partners/dimpact_architectuur_publicatieplatform.png b/docs/partners/dimpact_architectuur_publicatieplatform.png new file mode 100644 index 0000000000000000000000000000000000000000..bb05cf539af512c2aba69de85011e244d0b1d9cf GIT binary patch literal 116884 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%0DK+#@Rt@2jU8UC{5;wNG)wJW%wLg3!U*n>D zly^Znlu`F8yjsB8{Fp&iFO?@^*oxc-nc z0q7XMl@hPl@=G2`Mak22+&I?XFx7dsq@Hqcb#D>#kgYi&am@B*iCF_{jKq1LKr_SD-f{rf&Hf&A`OF`zxJHAS+!Q36V`~sD zhb`iIkR!9VN504>3)Re-m#B)m!=)eN5@uCo<9fWF)5D=Q^6Ffi@iKCrwi872Z@l~K z)2sg1f|Wc!<^2PSQJq?aEY)jTc0U%Llrc>D7u;^AF4{jUR3Et9WVdbCZVx`swrWb` zvvoex30<=F$Q_8%6kA=v zmc2p_4_!mo-Q#!8 z_Z`o@7kphbjZ5&8T2D5zzcNG z9t_>x)z5O-{RnL9Pj+2DP8j01Ti~(7+*EAyP(H!Qn*m7g%Y<-7J zEnL6iYxrzg!FDnY{cI@juBPN}lRC|f_Nv+UD(>K*MOMi3nqyfk@2=ekIpXkq7~*`s z7_gJJlXm$z5bmw5cFsrAS?~B9u{d8;?$i5$B53BiZWh3cRY}{{$47D1E^Ev;?@&(e z@t%0ADK)kh>^M4`SJ2FaXM2O- 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

K_C1IHaz$o}wf` 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 literal 0 HcmV?d00001 From 15c2452854bf9902ea629ecb8c2b89da283cb108 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:07:03 +0200 Subject: [PATCH 28/34] Update POC-check.md --- docs/partners/POC-check.md | 74 +++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/partners/POC-check.md b/docs/partners/POC-check.md index 0f42f83c..6618e355 100644 --- a/docs/partners/POC-check.md +++ b/docs/partners/POC-check.md @@ -2,38 +2,39 @@ ## Common Ground Architectuur -### Voldoet de oplossing aan de CG architectuur? Zie ook figuur 5 in de PSA. +### Voldoet de oplossing aan de CG architectuur? Zie ook figuur 5 in de PSA -Ja, de architectuur voldoet aan de common ground architectuur (het heeft immers status [goud](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc)). In principe is de OpenWoo.app een implementatie van de [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. Deze komen neer op diverse extra frontends (de publicatiepagina's van de leveranciers) en een service voor het inladen van gegevens uit diverse bronnen. +Ja, de architectuur voldoet aan de Common Ground-architectuur (het heeft immers status [goud](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc)). In principe is de OpenWoo.app een implementatie van de [OpenCatalogi-architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) aangevuld met een aantal extra componenten en inrichtingen. De aanvullingen staan beschreven in de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) architectuur. Deze komen neer op diverse extra frontends (de publicatiepagina's van de leveranciers) en een service voor het inladen van gegevens uit diverse bronnen. -Versimpeld komt de architectuur daarmee neer op: +Versimpeld komt de architectuur daarmee neer op: ![architectuur versimpeld](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg). -De componenten zijn allen los te draaien en vervangbaar, en juist de inzet van meerdere frontends toont aan dat de applicatie voldoet aan een goede architecturale scheiding. De codebases van open catalogi zelf zijn terug te vinden onder [open catalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) en de aanvullende codebases van OpenWoo.app onder [OpenWoo architectuur](https://openwoo.app/Techniek/Architectuur/). +Alle componenten zijn los te draaien en vervangbaar, en de inzet van meerdere frontends toont aan dat de applicatie voldoet aan een goede architecturale scheiding. De codebases van OpenCatalogi zelf zijn terug te vinden onder [OpenCatalogi architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/) en de aanvullende codebases van OpenWoo.app onder [OpenWoo architectuur](https://openwoo.app/Techniek/Architectuur/). Als we de verschillende oplossingen in kaart brengen die invulling geven aan de bovenstaande componenten komen we uit op de volgende plaat: - ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components.svg). + ![architectuur componenten](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components.svg). Opmerkingen -- Documenten worden (bij voorkeur) alléén opgeslagen in het document managment systeem -- Metadata over documenten wordt opgeslagen in de object store - +- Documenten worden (bij voorkeur) alléén opgeslagen in het documentmanagmentsysteem(DMS) +- Metadata over documenten wordt opgeslagen in de objectstore + ### Wordt er een scheiding gemaakt tussen gegevens ontsloten door API's aan de ene kant en applicaties aan de andere kant? Slaat de applicatie zelf nog gegevens op direct in een database? Welke? -Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. +Ja, er wordt een duidelijke scheiding gemaakt tussen gegevens ontsloten door API's en applicaties. OpenWoo.app is ontworpen volgens de Common Ground principes, waarbij gegevens worden ontsloten via API's. Dit betekent dat de applicatie zelf niet direct gegevens opslaat, maar gebruikmaakt van API's om toegang te krijgen tot de benodigde data. Dit geldt bijvoorbeeld voor Publicaties en Bestanden. De beheerinterface beschikt daarnaast echter wel over een eigen database voor het opslaan van configuratie zoals rollen, rechten, logging, etc. Het is belangrijk om te vermelden dat OpenCatalogi beschikt over drie mogelijkheden voor het opslaan van data: -- Opslag in MongoDB (hierbij wordt Open Catalogi zelf een register) + +- Opslag in MongoDB (hierbij wordt OpenCatalogi zelf een register) - Opslag in Overige Objecten en Document Registratie Component - Opslag in de interne PostgreSQL database van de beheeromgeving (alleen bedoeld voor demo en development) -In afwijking van de Dimpact architectuur kiest Open Catalogi (en daarmee OpenWoo.app) ervoor om documenten en metadata daaruit los op te slaan, metadata wordt opgeslagen als object en een document binnen een DMS (via DRC) de overweging hier achter is dat objecten en documenten gebaad zijn bij gespecialiseerde systemen waarbij met name rondom documnenten die inzet van een DMS binnen een overheid gangbaar is. +In afwijking van de Dimpact-architectuur kiest OpenCatalogi (en daarmee OpenWoo.app) ervoor om documenten en de metadata daarvan los op te slaan. Metadata wordt opgeslagen als object en een document binnen een DMS (via DRC). De overweging hierachter is dat objecten en documenten gebaat zijn bij gespecialiseerde systemen, waarbij met name rondom documenten de inzet van een DMS binnen een overheid gangbaar is. ![alt text](dimpact_architectuur_publicatieplatform.png) -Daarmee is de volgende vertaal tabel te maken van de Dimpact Publicatie PSA naar OpenWoo.app +Daarmee is de volgende vertaaltabel te maken van de Dimpact Publicatie-PSA naar OpenWoo.app -| Doel | Dimpact component | OpenWoo.app component | Repository | +| Doel | Dimpact component | OpenWoo.app component | Repository | | ------ | ------------------|-----------------------|-------| | Ambtenaar | Openbare Documenten Publicitie Component (Publiceren)| Publicatie Afhandel Component | Nog niet openbaar | | Beheerder | Openbaar Documenten Burger Portaal (Contenbeheer)| Technische Beheer Omgeving | [OpenCatalogi.app](https://github.com/ConductionNL/opencatalogi) | @@ -42,7 +43,7 @@ Daarmee is de volgende vertaal tabel te maken van de Dimpact Publicatie PSA naar | Opslag | Openbaar Documenten Registratie Component (ODRC API)| Overige Objecten + Document Registratie Component | [Objects-api](https://github.com/maykinmedia/objects-api) , [Open zaak](https://github.com/open-zaak/open-zaak) | | Index | Search Engine | Search Engine | [Elastic](https://github.com/ConductionNL/opencatalogi) | -Hierbij hanteren we overigens scheiding tussen laag 1 en 2 waarbij op laag twee gebruik wordt gemaakt van "convience" api's die bronnen combineren, te weten +Hierbij hanteren we overigens scheiding tussen laag 1 en 2 waarbij op laag twee gebruik wordt gemaakt van "convience" APIs die bronnen combineren, te weten - **Publicatie API** Gebruikt: - - Objects API (voor publicatie objecten en meta data over documenten) @@ -51,26 +52,22 @@ Hierbij hanteren we overigens scheiding tussen laag 1 en 2 waarbij op laag twee - - Elastic API (voor zoeken) - - Documenten API (voor ophalen en uitleveren van documenten) -Voor bijde API's is de documentatie te vinden op [stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) - - +Voor beide API's is de documentatie te vinden op [stoplight](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) ### Kun je ook andere applicaties aansluiten op de API's van de oplossing? Bijv. website, portaal of een mobiele app? -Zeker, sterker nog, dat is gangbaar. Er zijn op dit moment vijf verschillende publicatieplatformen aangesloten op de Open Catalogi API, waarvan vier onderdeel zijn van de OpenWoo.app community. In de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht met verwijzingen naar de codebases. Daarnaast maken Koop (via koophulpje), Woogle en een tweetal gemeenten ook direct gebruik van de API. Er zijn op dit moment geen mobiele apps die gebruik maken van de API, maar er zijn wel organisaties die overwegen om deze in hun omgeving op te nemen (voor lokaal nieuws, met name het OpenWeb-concept). +Zeker, sterker nog, dat is gangbaar. Er zijn op dit moment vijf verschillende publicatieplatformen aangesloten op de OpenCatalogi-API, waarvan vier onderdeel zijn van de OpenWoo.app community. In de [OpenWoo](https://openwoo.app/Techniek/Architectuur/) staat een overzicht met verwijzingen naar de codebases. Daarnaast maken Koop (via Koophulpje.nl), WooGLe en een tweetal gemeenten ook direct gebruik van de API. Er zijn op dit moment geen mobiele apps die gebruik maken van de API, maar er zijn wel organisaties die overwegen om deze in hun omgeving op te nemen (voor lokaal nieuws, met name het OpenWeb-concept). -In een bredere context zijn naast koophulje (de sitemapxml adaptor voor koop) ook andere adapters in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren vanuit open catalogi). Voorbeelden hiervan zijn DROP en SDG. +In een bredere context zijn naast Koophulpje.nl (de sitemap.xml-adaptor voor KOOP) ook andere adapters in verkenning of ontwikkeling die de API weer omslaan naar externe bronnen (voor publiceren vanuit OpenCatalogi). Voorbeelden hiervan zijn DROP en SDG. ## Technologie -### Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc. +### Hoe ziet de technologiestack van de oplossing eruit? Taal, frameworks, databases, etc - **Laag 5 en 4** Voor de publicatieplatformen (inwoners frontends) wisselen technologiestacks per leverancier. Conduction en Acato bouwen statische voorkanten aan de hand van het NL Design React framework (bijvoorbeeld de UI van de gemeente Tilburg) en IO Digital volledige PHP WordPress-plugins. - **Laag 2** Op de backend zijn we recentelijk overgestapt van Conduction's eigen oude Common Gateway (PHP+React) naar het Nextcloud framework (PHP+Vue). Er zijn veel redenen voor deze overstap, die uitgelegd staan in een [blog](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/), maar kort samengevat is Nextcloud als framework echt gericht op Kubernetes (en bevat dus van zichzelf integratie voor logging, monitoring, ADFS, etc.). - **Laag 1** Op de datalaag wordt er door Nextcloud zelf gebruik gemaakt van [PostgreSQL](https://www.postgresql.org/). Vanuit applicatieoogpunt schrijven we de overige data bij voorkeur weg naar objectregistraties (zoals overige objecten of MongoDB) en documenten naar een gespecialiseerd documentmanagementsysteem (zoals documentregistratiecomponent). Voor zoekfuncties wordt weggeschreven naar een gespecialiseerde zoekindex (Elastic Search). - - ### Welke bestaande componenten (zoals Elastic of KeyCloak) worden gebruikt? OpenWoo.app maakt gebruik van diverse bestaande componenten om een robuuste, veilige en schaalbare oplossing te bieden. Hieronder staan de belangrijkste componenten die in de technologiestack worden gebruikt: @@ -87,23 +84,23 @@ Daarnaast is het belangrijk om te vermelden dat de keuze voor Nextcloud als basi ### Zijn er automatische tests? Welke soort (unit, end-to-end)? Wat is de dekkingsgraad? -We draaien beide soorten tests. Voor end-to-end testing maken we gebruik van [Vitest](https://vitest.dev/) en voor unit tests van [PHPUnit](https://phpunit.de/index.html) en [Jest](https://jestjs.io/). De test coverage wisselt rond de 60 procent. Het doel is om dat voor 12 augustus naar 80% te hebben. Meer documentatie hierover is opgenomen in de [GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/verder-documentatie) van de Open Catalogi Nextcloud-app. +We draaien beide soorten tests. Voor end-to-end testing maken we gebruik van [Vitest](https://vitest.dev/) en voor unit tests van [PHPUnit](https://phpunit.de/index.html) en [Jest](https://jestjs.io/). De test coverage wisselt rond de 60 procent. Het doel is om dat voor 12 augustus naar 80% te hebben. Meer documentatie hierover is opgenomen in de [GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/verder-documentatie) van de OpenCatalogi Nextcloud-app. ![alt text](image.png) ### Zijn er installatiescripts? Is er een Helm-chart? Zijn voldoende omgevingsvariabelen ontsloten voor een volledige automatische installatie? -Zeker, goede installeerbaarheid was een drijfveer achter deze stackkeuze. Simpel gezegd komen alle Open Catalogi-installaties neer op drie stappen, met een extra stap voor OpenWoo.app: +Zeker, goede installeerbaarheid was een drijfveer achter deze stackkeuze. Simpel gezegd komen alle OpenCatalogi-installaties neer op drie stappen, met een extra stap voor OpenWoo.app: 1. Installeer Nextcloud: - Via Helm, zie [Artifact Hub](https://artifacthub.io/packages/helm/nextcloud/nextcloud) - Als Azure-app, zie de [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nextcloudgmbh1597841818906.nextcloud?tab=overview) - Via OpenShift, zie de [OpenShift-catalogus](https://catalog.redhat.com/software/container-stacks/detail/65e9dc6f6365ba88288a412c) -2. Activeer de Open Catalogi-app, instructie op de [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) -3. Configureer de Nextcloud-app, instructie op de [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) +2. Activeer de OpenCatalogi-app, instructie op de [OpenCatalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) +3. Configureer de Nextcloud-app, instructie op de [OpenCatalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-nextcloud-lokaal-deel-2-een-app-toevoegen) 4. Installeer de WooPublicatie-pagina, instructies op de [OpenWoo.app GitHub](https://github.com/ConductionNL/woo-website-template) -Deze stappen staan ook nader beschreven in de nieuwe [Open Catalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud). +Deze stappen staan ook nader beschreven in de nieuwe [OpenCatalogi GitBook](https://conduction.gitbook.io/opencatalogi-nextcloud). Voor (lokaal) ontwikkelen en demo's is er ook een `docker-compose` voor het draaien in een container. De instructies zijn [hier](https://conduction.gitbook.io/opencatalogi-nextcloud/developers/installatie-via-docker) te vinden. Deze wordt momenteel door Acato getest (so far so good). @@ -114,6 +111,7 @@ Na installatie zijn er enige (optionele) vereisten, zoals een API-sleutel voor M ### Welke bronnen kunnen nu worden aangesloten? Momenteel de volgende bronnen: + - (xxllnc) zaaksysteem.nl - ZGW-API-bronnen (DRC en ZRC) - ORI-API-bronnen (Notubiz en andere raadsinformatiesysteemleveranciers) @@ -123,16 +121,16 @@ Momenteel de volgende bronnen: - Bronnen met een REST API kunnen in theorie worden geconfigureerd Daarnaast zijn er ook diverse afnemeners van de search api + - KOOP -- WOOGLE +- WooGLe - IO (website) -- Acatao (publicatie platform) +- Acato (publicatieplatform) - Yard (website) - ### Is er een adapter framework of iets anders voor het aansluiten van nieuwe bronnen? -Ja, momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de CommonGateway. Dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped), maar we willen deze eigenlijk ook overzetten naar een Nextcloud-app voor Kubernetes. Voor zaakgericht werken, objectregistraties en open raadsinformatie is er nu al een adapter voor ondersteuning en Tilburg en Acato zijn aan het afronden op StUF en SharePoint. +Ja, momenteel gebruiken we voor dit specifieke stukje van het ecosysteem nog wel de CommonGateway. Dat werkt aardig (Acato heeft daar nu ook de eerste koppelingen mee gemapped), maar we willen deze eigenlijk ook overzetten naar een Nextcloud-app voor Kubernetes. Voor zaakgerichtwerken, objectregistraties en open raadsinformatie is er nu al een adapter voor ondersteuning en Tilburg en Acato zijn aan het afronden op StUF en SharePoint. Deze adapter voorziet in het ontsluiten van bronnen náár het publicatieregister toe. Omdat Dimpact binnen de MVP gebruikmaakt van handmatig publiceren, is de CommonGateway voor de MVP out of scope. In een bredere context geldt dat we de CommonGateway in Q3 gaan uitfaseren. Het doel is om bij de inwerkingtreding Woo (1 november) alles op Nextcloud te draaien. @@ -153,6 +151,7 @@ Dat hangt van de configuratiekeuzes van de gemeente af, maar bij voorkeur slaan ### Is de API voor zoeken een Elastic API of specifieke API voor WOO? Het is een specifieke API voor de WOO die binnen de parameters valt van wat Elastic zelf ook kan leveren met wat configuratie. Met andere woorden, de Elastic-instantie kan ook direct worden bevraagd. De adapter erbovenop voorziet echter in twee extra functionaliteiten die wij binnen de WOO wenselijk vinden: + - Federatief zoeken over meerdere Elastic Search-instanties - Ophalen documenten door routeren naar bijvoorbeeld DRC in plaats van Elastic. @@ -166,7 +165,7 @@ Daarnaast ondersteunen we best een flink aantal monitoring- en dashboardtools, h ### Hoe ziet een gemeentelijke implementatie eruit? Ervan uitgaande dat alle technische integratie al gedaan is bij installatie? -Hiervoor is een handleiding beschikbaar op https://openwoo.app/Techniek/Productie/. +Hiervoor is een handleiding beschikbaar op . ## Authenticatie en autorisatie @@ -184,9 +183,9 @@ Ja, voor zover wij weten zijn alle configuratieopties (dus ook adapters) via de ## Standaarden -### Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc. +### Welke standaarden worden nu al gebruikt en ondersteund? TMLO, ZGW API's, etc -- ZGW +- ZGW - REST API (OpenAPI) - MDTO (voorheen TMLO) - JSON-LD @@ -194,7 +193,7 @@ Ja, voor zover wij weten zijn alle configuratieopties (dus ook adapters) via de - Geo-JSON - NFC/NLX -Zie voor meer standaarden de [Open Catalogi Architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). +Zie voor meer standaarden de [OpenCatalogi Architectuur](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). ### Is de ODRC API een standaard API? @@ -304,7 +303,7 @@ Dit wordt ondersteund. 18. Aanmaken, wijzigen en verwijderen webpagina met overzicht andere relevante websites -Deze functie wordt niet direct door Open Catalogi ondersteund, althans content en url-beheer zoals we dat kennen binnen CMS-systemen. We kunnen natuurlijk prima een metadatatype toevoegen (of de gebruiker zelf) voor pagina's. Op dezelfde manier als waarop we die kennen voor producten en diensten (SDG) en nieuwsberichten. +Deze functie wordt niet direct door OpenCatalogi ondersteund, althans content en url-beheer zoals we dat kennen binnen CMS-systemen. We kunnen natuurlijk prima een metadatatype toevoegen (of de gebruiker zelf) voor pagina's. Op dezelfde manier als waarop we die kennen voor producten en diensten (SDG) en nieuwsberichten. 19. Raadplegen rapportage bezoekers-/gebruiksstatistieken @@ -346,7 +345,8 @@ Wordt ondersteund via API. Sterker nog, de interfaces sturen de API aan. 30. Search API -De search API is het kloppende hart van Open Catalogi. Het ondersteunt naast full-text search twee belangrijke mogelijkheden: +De search API is het kloppende hart van OpenCatalogi. Het ondersteunt naast full-text search twee belangrijke mogelijkheden: + - Aggregated search (ofwel federatief over organisaties zoeken) - Faceted search (van te voren zien hoeveel zoekresultaten een aanpassing in de zoekopdracht oplevert) From 9a741854e618d2ba4bc4cfd7863dafaede59c08e Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Fri, 2 Aug 2024 15:59:36 +0200 Subject: [PATCH 29/34] spelling en links --- README.md | 21 +++--- docs/GOVERNANCE.md | 2 +- docs/NavbarContent.json | 2 +- docs/product/Features.md | 16 ++-- docs/techniek/Architectuur.md | 63 ++++++++-------- docs/techniek/Configuratie.md | 30 ++++---- docs/techniek/Installatie.md | 4 +- docs/techniek/Integratie.md | 136 ++++++++++++++++------------------ docs/techniek/Productie.md | 6 +- 9 files changed, 137 insertions(+), 143 deletions(-) diff --git a/README.md b/README.md index dc7eb15c..25786cfa 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ > **Ondersteuning en bijeenkomsten** > -> +> > Meer weten over deze oplossing? Dat kan! Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. Uiteraard kan je ook altijd mailen naar [info@conduction.nl](mailto:info@conduction.nl) > > Tevens worden vanuit de aangesloten leveranciers worden regelmatig webinars georganiseerd. > > - [10 Juli 10:00 | Community Meeting](https://www.linkedin.com/events/7206649524776284161/comments/?originTrackingId=BVZjR39lT72%2BfNaik99cew%3D%3D). -> +> > Terug kijken afgelopen webinars en meetings? > > - [12-06-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). @@ -18,8 +18,8 @@ > - [13-03-2024 | Community Meeting](https://www.youtube.com/watch?v=TNZghskRu5c). > - [14-02-2024 | Community meeting](https://www.youtube.com/watch?v=ri5U8x-lsxo) > - [30-01-2024 | OpenGemeente Woobinar](https://vimeo.com/909134953) -> - [19-12-2023 | xxllnc Demo ](https://www.youtube.com/watch?v=_FGpUYH1yd0) -> - [17-11-2023 | xxllnc Woobinar ](https://www.youtube.com/watch?v=NCnLDEoPh5A) +> - [19-12-2023 | xxllnc Demo](https://www.youtube.com/watch?v=_FGpUYH1yd0) +> - [17-11-2023 | xxllnc Woobinar](https://www.youtube.com/watch?v=NCnLDEoPh5A) De Wet Open Overheid (Woo) is een initiatief gericht op het verbeteren van de openbaarheid van overheidsinformatie. Het doel is om overheidsinformatie beter toegankelijk te maken voor iedereen. Meer informatie over de Wet Open Overheid kan [hier](https://www.open-overheid.nl/onderwerpen/actieve-openbaarmaking) worden gevonden. @@ -39,19 +39,20 @@ Deze uitdagingen kunnen niet effectief worden aangepakt met een enkel Content Ma |-----------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------------------| | [](https://www.conduction.nl/) | [](https://xxllnc.nl/) | [](https://www.opengemeenten.nl/) | [](https://www.simgroep.nl/) | [](https://acato.nl/) | [](https://www.notubiz.nl/)| [](https://www.drupalvoorgemeenten.nl/)| -## Belangrijkste functionaliteiten en voordelen van OpenWoo.app: +## Belangrijkste functionaliteiten en voordelen van OpenWoo.app + - **Centrale Index Pagina:** Een overzichtelijke locatie voor alle openbare data van uw organisatie voor verbeterde vindbaarheid van informatie. - **Multibron Dataweergave:** Een naadloze integratie en presentatie van data uit diverse bronnen, zoals het zaaksysteem, websites, raadsinformatiesystemen en archieven. - **Keuze uit Publicatieplatformen:** Met opties zoals NL Design React en Open Gemeente Typo 3, biedt OpenWoo.app flexibiliteit in de manier waarop uw gegevens gepubliceerd worden, terwijl het tegelijkertijd eenvoudig integreerbaar is in uw huidige website. - **Automatische Data-aanlevering:** Efficiënte aanlevering bij landelijke indexen zoals KOOP en Woogle, door middel van sitemap.xml-bestanden en API's, vergroot het bereik en de zichtbaarheid van uw gegevens. - **Proactieve Publicatie:** Automatiseer het publicatieproces en verminder handmatige inspanningen met de slimme, proactieve publicatiefuncties van OpenWoo.app. -- **Toekomstbestendig en Veilig:** Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. +- **Toekomstbestendig en Veilig:** Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. ![epe.png](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/epe.png "Woo Website van de Gemeente Epe") Wil je meer weten over de functionaliteiten van de Open Woo-app? Kijk dan op de [architectuur pagina](/docs/product/Features.md). -## Oplossing van OpenWoo.app: +## Oplossing van OpenWoo.app OpenWoo.app gaat verder dan alleen deze basisfunctionaliteiten door een geïntegreerde oplossing aan te bieden die bestaat uit essentiële componenten: @@ -60,12 +61,12 @@ OpenWoo.app gaat verder dan alleen deze basisfunctionaliteiten door een geïnteg - **Zoekpagina (Optioneel):** Een op NL Design gebaseerd publicatieplatform dat belanghebbenden in staat stelt om naar relevante informatie te zoeken. - **Open WooService:** Deze module verzamelt informatie uit verschillende bronnen, waardoor een gecentraliseerde toegang tot diverse categorieën van gegevens mogelijk wordt. - **Open Index:** Een opgebouwde index van openbare informatie die samen met andere zoekindexen een landelijke federatie vormt. -- **Overige Bronnen (Optioneel):** Bronnen zoals het Zaaksysteem, Raadsinformatiesysteem en archief kunnen optioneel worden gekoppeld, met ondersteuning voor handmatige uploads via het CMS van uw huidige website. - +- **Overige Bronnen (Optioneel):** Bronnen zoals het Zaaksysteem, Raadsinformatiesysteem en archief kunnen optioneel worden gekoppeld, met ondersteuning voor handmatige uploads via het CMS van uw huidige website. Deze geïntegreerde aanpak zorgt voor een naadloze, efficiënte en effectieve implementatie van de Wet Open Overheid (Woo), waardoor overheidsorganisaties hun informatie op een gebruiksvriendelijke en toegankelijke wijze kunnen delen. OpenWoo.app is niet alleen een tool om te voldoen aan de Wet open overheid (Woo), maar een strategische partner die handwerk vermindert, transparantie bevordert, en de toegankelijkheid van overheidsinformatie aanzienlijk verbetert. De OpenWoo.app architectuur is bewust ontworpen om gemeenten de keuze te geven in hoe zij willen omgaan met de Wet Open Overheid en KOOP + - Wil je automatisch publiceren uit je huidige zaaksysteem? dat kan! - Liever publiceren uit je huidige website? dat kan ook! - Of wil je bij KOOP aanleveren vanuit een kleine openzaak installatie? dan kan dat natuurlijk ook. @@ -82,6 +83,8 @@ Op dit moment wordt de OpenWoo.app al door een aantal organisaties gebruikt |-------------|------|------------|--------------|--------| | [Noordwijk](https://www.noordwijk.nl/) | Gemeente | [Pagina](open.noordwijk.nl) | Zaaksysteem.nl | Productie | | [Epe](https://www.epe.nl/) | Gemeente |[Pagina](https://open.epe.nl/) | Zaaksysteem | Productie | +| [Roosendaal](https://www.roosendaal.nl/) | Gemeente |[Pagina](https://open.roosendaal.nl/) | Zaaksysteem | Productie | +| [Zutphen](https://www.zutphen.nl/) | Gemeente |[Pagina](https://open.zutphen.nl/) | Zaaksysteem | Productie | | [Tubbergen](https://www.tubbergen.nl/) | Gemeente |[Pagina](https://conductionnl.github.io/woo-website-tubbergen/) | Zaaksysteem.nl | Acceptatie | | [Dinkelland](https://www.dinkelland.nl/) | Gemeente |[Pagina](https://conductionnl.github.io/woo-website-dinkelland/) | Zaaksysteem.nl | Acceptatie | | [Gouda](https://www.gouda.nl/) | Gemeente |[Pagina](https://conductionnl.github.io/woo-website-gouda/) | Zaaksysteem.nl | Acceptatie | diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md index 401a5c8d..cdbcafd6 100644 --- a/docs/GOVERNANCE.md +++ b/docs/GOVERNANCE.md @@ -6,7 +6,7 @@ Het succes en de continue verbetering van het OpenWoo.app project zijn afhankeli OpenWoo.app is een doorontwikkeling van de OpenWoo WordPress-plugin uit Open Webconcept. Vanuit die oorsprong is OpenWoo.app eigenlijk een subcommunity van OpenWebconcept. De community staat echter nadrukkelijk open voor niet OWC-afnemers en leveranciers. -De gemeente Gouda vormt hierin de linking pin +De gemeente Gouda vormt hierin de linking pin. Gemeenten zo als Noordwijk, Gouda, Barendrecht, Alblasserwaard, Ridderkerk en Hoeksche Waard vormen met de deelname aan diff --git a/docs/NavbarContent.json b/docs/NavbarContent.json index 28a51f60..1ca1be28 100644 --- a/docs/NavbarContent.json +++ b/docs/NavbarContent.json @@ -78,7 +78,7 @@ }, "handleClick": { "internalMarkdown": { - "directoryName": "docs", + "directoryName": "/docs", "fileName": "GOVERNANCE" } } diff --git a/docs/product/Features.md b/docs/product/Features.md index bd00f8a1..315cef00 100644 --- a/docs/product/Features.md +++ b/docs/product/Features.md @@ -2,34 +2,36 @@ Een federaale search API - ## Centrale Index Pagina + Een overzichtelijke locatie voor alle openbare data van uw organisatie, verbetert de vindbaarheid van informatie. ## Multibron Dataweergave + Een naadloze integratie en presentatie van data uit diverse bronnen, zoals het zaaksysteem, websites, raadsinformatiesystemen en archieven. ## Keuze uit Publicatieplatformen + Met opties zoals NL Design React en Open Gemeente Typo 3, biedt OpenWoo.app flexibiliteit in de manier waarop uw gegevens gepubliceerd worden, terwijl het tegelijkertijd eenvoudig integreerbaar is in uw huidige website. ## Automatische Data-aanlevering + Efficiënte aanlevering bij landelijke indexen zoals KOOP en Woogle, door middel van sitemap.xml-bestanden en API's, vergroot het bereik en de zichtbaarheid van uw gegevens. ## Proactieve Publicatie + Automatiseer het publicatieproces en verminder handmatige inspanningen met de slimme, proactieve publicatiefuncties van OpenWoo.app. ## Toekomstbestendig en Veilig -Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. - +Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. | Functionaliteit | Component | Laag | Beschrijving | -| Publicatie platform | Woo Website Template | 5 (UI) | +| Publicatie platform | Woo Website Template | 5 (UI) | | Search (Openbaar) | Open Index | API (2) | Een zoek index met geavenceerde facet search opties | Search (Vertrouwlijk) |Open Index | API (2) | | Publicatie Register | Open Register | API (2) | Het publicatie register bevat de publicatie objecten, en onder -| Publicatie Beheer | OpenWoo.plugin voor drupal (Io), OpenWoo app voor nextCloud (Conduction), React container (Acato) | +| Publicatie Beheer | OpenWoo.plugin voor drupal (Io), OpenWoo app voor nextCloud (Conduction), React container (Acato) | | Document Creatie | OpenWoo app voor nextCloud (Conduction) | | Creert PDF versies van documenten en bijvoorbeeld voorbladen en inhouds opgaven | | Harvesting | Woo Service | 3(integratie) | -| - +| diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index 85b75e6a..40b460c1 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -15,17 +15,17 @@ De OpenWoo.app heeft als doel om een ecosysteem van samenwerkende componenten te - [X] Het (door)zoeken, vinden en raadplegen van documenten en metadata door burgers; - [X] Het beheren van autorisaties, configuratie en publicaties door beheerders; - [X] Integratie met de landelijke voorziening PLOOI/KOOP, WooGLe, Koophulpje, DSO. -- [X] Integratie met standaard gemeentenlijke bronnen zoals zaaksysteem, raadsinformatiesysteem en website +- [X] Integratie met standaard gemeentelijke bronnen zoals een zaaksysteem, raadsinformatiesysteem of website - [X] Afhandelingsflow voor zowel publiceren als Woo-verzoeken - [X] Het kunnen terugtrekken van publicaties t.b.v herstel op procedurele fouten - [X] Help functie voor medewerkers aan de hand van werk instructies - [X] Interne publicaties die niet openbaar toegankelijk zijn -- [ ] (Roadmap) Generatie van documenten ten behoefe van publiceren en inhoudslijsten +- [ ] (Roadmap) Generatie van documenten ten behoeve van publiceren en inhoudslijsten - [ ] (Roadmap) Koppeling met anonimiseringssoftware - [ ] (Roadmap) Naar PDF kunnen omzetten van documenten - [ ] (Roadmap) Archiveren - [ ] (Roadmap) Opslaan van zoekfilters en resultaten -- [ ] (Roadmap) Abboneren op nieuwe publicaties die voldoen aan een opgeslagen zoekfilter +- [ ] (Roadmap) Abonneren op nieuwe publicaties die voldoen aan een opgeslagen zoekfilter We hebben deze functionaliteit opgedeeld in drie blokken @@ -33,53 +33,54 @@ We hebben deze functionaliteit opgedeeld in drie blokken 2. Motorblok 3. Bronnen -Secundair doel daarbij is wat idealistischer: om een gemeenschappelijke codebase te realiseren die door meerdere leveranciers kan worden uitgeleverd en deze vanaf dag één te betrekken. Het voorkomen van een locked in vraagt om een open source oplossing die door en door begrepen wordt door meerdere markt partijen. +Secundair doel daarbij is wat idealistischer: om een gemeenschappelijke codebase te realiseren die door meerdere leveranciers kan worden uitgeleverd en deze vanaf dag één te betrekken. Het voorkomen van een lock-in vraagt om een open source oplossing die door en door begrepen wordt door meerdere markt partijen. ## Hergebruik tot op het bot OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [OpenCatalogi](https://documentatie.opencatalogi.nl/). Meer technische informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). Er zijn echter een paar zaken die we binnen OpenWoo.app aanvullend regelen. -1. In plaats van de standaard Open Catalogi voorkant gebruikeren en een publicatie pagina die geoptimalisseerd is voor de WOO, dit kan een (sub)site zijn bij de website leverancier van de gemeente, of een van de twee losstaande react pagina's. We laten de keuze hiervoor bewust bij de deelnemende overheden zelf. +1. In plaats van de standaard OpenCatalogi-voorkant gebruikt OpenWoo en een publicatiepagina die geoptimaliseerd is voor de Woo, dit kan een (sub)site zijn bij de website leverancier van de gemeente, of een van de twee losstaande React pagina's. We laten de keuze hiervoor bewust bij de deelnemende overheden zelf. -2. We gebruiken een aantal aanvullende metadata moddelen in plaats van DCAT en PublicCode, deze wordenn landelijk onderhouden. +2. We gebruiken een aantal aanvullende metadata modellen in plaats van DCAT en PublicCode, deze worden landelijk onderhouden. -3. We maken gebruik van een lose WOO (micro) service die vanuit verschillende bronnen (o.a. zaaksystemen en raadsinformatie systemen) informatie ophaalt en klaar zet als publicatie. Of en hoe publicaties vervolgens automatisch worden gepubliseerd is een configuratie keuze. +3. We maken gebruik van een losse WOO (micro) service die vanuit verschillende bronnen (o.a. zaaksystemen en raadsinformatie systemen) informatie ophaalt en klaar zet als publicatie. Of en hoe publicaties vervolgens automatisch worden gepubliceerd is een configuratie keuze. -4. Er is naast de standaard beheer omgeving van Open Catalogi ook een Publicatie Taak applicatie beschickbaar die specifiek gericht is op het (handmatig) verwerken van WOO verzoeken en beheren van publicacties +4. Er is naast de standaard beheer omgeving van Open Catalogi ook een Publicatie Taak applicatie beschikbaar die specifiek gericht is op het (handmatig) verwerken van Woo-verzoeken en beheren van publicaties. -In een meer algemene zin hebben we bij OpenWoo.app voor andere (sub)doelgroepen gekozen dan binnen Open Catalogi, inwoners, onderzoekers, journalisten, raadsleden en ondernemers staan centraal. +In een meer algemene zin hebben we bij OpenWoo.app voor andere (sub)doelgroepen gekozen dan binnen Open Catalogi, inwoners, onderzoekers, journalisten, raadsleden en ondernemers staan centraal. ## Codebases -Voor de installatie van OpenWoo.app zijn meerdere codebases bechickbaar, dat heeft zowel een historische achtergrond als dat het een bewuste keuze is om van (met name UI) componenten meerdere versies te hebben. Omdat deze ook nog eens over verschillede organisaties verdeeld zijn kan het moeilijk zijn om overzicht te houden op welke code waar staat. We houden daarom hier een overizcht bij van de extra componenten en codebases ten opzichte van de standaard Open Catalogi componenten. + +Voor de installatie van OpenWoo.app zijn meerdere codebases beschikbaar, dat heeft zowel een historische achtergrond als dat het een bewuste keuze is om van (met name UI) componenten meerdere versies te hebben. Omdat deze ook nog eens over verschillende organisaties verdeeld zijn, kan het moeilijk zijn om overzicht te houden op welke code waar staat. We houden daarom hier een overzicht bij van de extra componenten en codebases ten opzichte van de standaard OpenCatalogi-componenten. | Codebase | Rol | Leverancier | Licentie | |----------|------------------------------| | | -| [Github]() | Taakapplicatie publiceren, Publicatie Platform | IO Digital | | +| [Github]() | Taakapplicatie publiceren, Publicatieplatform | IO Digital | | | [Github]() | Taakapplicatie publiceren | Acato | | -| [Github]() | Publicatie Platform | Acato | | -| [Github](https://github.com/OpenWebconcept/plugin-openwoo) | Publicatie Platform | Yard | EUPL | -| [Github](https://github.com/ConductionNL/woo-website-template) | Publicatie Platform | Conduction | EUPL | -| [Github](https://github.com/ConductionNL/plugin-openwoo) | Synchronysatie Service | Conduction | EUPL | - +| [Github]() | Publicatieplatform | Acato | | +| [Github](https://github.com/OpenWebconcept/plugin-openwoo) | Publicatieplatform | Yard | EUPL | +| [Github](https://github.com/ConductionNL/woo-website-template) | Publicatieplatform | Conduction | EUPL | +| [Github](https://github.com/ConductionNL/plugin-openwoo) | Synchronisatieservice | Conduction | EUPL | Hierop zijn een paar opmerkingen te maken -- We gebruiken de synchronisatie service van Open Catalogi niet (die is immers gericht op Github, Gitlab en Dcat), in plaats daarvan is er een WOO synchronysatie service gericht op ZGW, STUF, DRC en ORI. -- We gebruiken voorkant van Open Catalogi niet (die is immers sotware en data gericht), in plaats daarvan hebben meerdere leveranciers eigen publicatie platformen ontwikkeld. + +- We gebruiken de synchronisatie service van Open Catalogi niet (die is immers gericht op GitHub, GitLab en DCAT), in plaats daarvan is er een Woo-synchronisatieservice gericht op ZGW, STUF, DRC en ORI. +- We gebruiken voorkant van Open Catalogi niet (die is immers software en datagericht), in plaats daarvan hebben meerdere leveranciers eigen publicatieplatformen ontwikkeld. ## Uitdagingen Bij het ontwikkelen van een publicatie voorziening komen een aantal uitdagingen in beeld - Woo gegevens staan vaak opgeslagen in bronnen die niet makkelijk toegankelijk zijn -- De scope van de WOO (alle niet vertrouwelijke gegevens) in combinatie met het concept actieve openbaarmaking raakt de volledige informatie huishouden -- Handmatig publiceren kan daarmee geen eindoplossing zijn, maar eigenlijk ook al geen tussen oplossing +- De scope van de Woo (alle niet vertrouwelijke gegevens) in combinatie met het concept actieve openbaarmaking raakt de volledige informatie huishouden +- Handmatig publiceren kan daarmee geen eindoplossing zijn, maar eigenlijk ook al geen tussenoplossing - Er mogen géén fouten worden gemaakt met anonimiseren, dit vraagt om een afgebakende proces flow met checks en balances rondom publiceren -Dat leidt tot de conclusie dat we niet op zoek zijn naar een WOO-publicatieplatform maar een algemene publicatie voorzienen die één of meerdere publicatie kanalen kan 'voeden', daarbij denken we naast de WOO-Index (koop) ook nadrukkelijk aan een organisatie eigen publicatie platform, WooGLe en bijvoorbeeld een gemeentelijke website. In het verlengde hiervan liggen ook DROP, SDG, Algoritme registers en WHO als kanalen die vanuit een generiek publicatie platform moeten kunnen worden ontsloten. +Dat leidt tot de conclusie dat we niet op zoek zijn naar een WOO-publicatieplatform maar een algemene publicatie voorzienen die één of meerdere publicatie kanalen kan 'voeden', daarbij denken we naast de WOO-Index (koop) ook nadrukkelijk aan een organisatie eigen publicatie platform, WooGLe en bijvoorbeeld een gemeentelijke website. In het verlengde hiervan liggen ook DROP, SDG, Algoritme registers en WHO als kanalen die vanuit een generiek publicatieplatform moeten kunnen worden ontsloten. ## Belangrijkste verschillen ten opzicht van OpenWoo.app 1.0 -**Splitsing opslag en search** Binnen de OpenWoo.app 1.0 werd er één mongoDB instance als opslag en search gebruikt, we hebben deze zowel qua opslag uit elkaar getrokken in een Elasticsearch en ORC-instantie als verdeeld over twee aparte API's (zoeken en beheer). +**Splitsing opslag en search** Binnen de OpenWoo.app 1.0 werd er één MongoDB-instance als opslag en search gebruikt, we hebben deze zowel qua opslag uit elkaar getrokken in een Elasticsearch en ORC-instantie als verdeeld over twee aparte API's (zoeken en beheer). **Lostrekken integratie component** De 1.0 versie was direct gebouwd op de Common Gateway, een integratie voorziening. Vanaf 2.0 zijn de zoek-API en beheer-API gepositioneerd als losse componenten die (desgewenst) ook op NLX/FSC kunnen worden ontsloten. **Publicatie flow** De 1.0 versie was gebouwd op de gedachte dat objecten vanuit de bron altijd automatisch moesten worden gepubliceerd. In de 2.0 is dit omgedraaid en wordt er vanuit gegaan dat er actief beheer is op publicaties en dat ze pas worden gepubliceerd als daartoe is geaccordeerd. Wel kunnen er nog steeds automatische spelregels worden afgesproken. @@ -87,12 +88,12 @@ Dat leidt tot de conclusie dat we niet op zoek zijn naar een WOO-publicatieplatf Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI, maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschikbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoekinterface als los component als voor een integratie binnen uw huidige website. -Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). U kunt de interfaces dan ook niet gebruiken zonder een Open Catalogi zoeken-API. +Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). De interface is dan ook niet te gebruiken zonder een OpenCatalogi zoeken-API. . | Component | Open Source | Leverancier(s) | Beschrijving | Meer informatie | |-------------------------------|-------------|----------------------------------------------------------|-------------------------------------------------------------------|-----------------| -| Open Catalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| OpenCatalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | | OpenWoo.app default zoeken-Ui | Ja | [Conduction](https://conduction.nl/), [Shift2](https://www.shift2.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | Tilburgse frontend | Ja | [Acato](https://acato.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | | Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Conduction](https://conduction.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | @@ -116,11 +117,11 @@ Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgen ### Motorblok (onderdeel 2) -Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [Open Catalogi](https://documentatie.opencatalogi.nl/) vanuit dit project nemen we een 2-tal componenten over; te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). +Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [OpenCatalogi](https://documentatie.opencatalogi.nl/) vanuit dit project nemen we een tweetal componenten over; te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). **Open Index** stelt ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van Elasticsearch. Open Index normaliseert en standaardiseert Elasticsearch voor ons door het toevoegen van JSON-ld, contextuele metadata, organisaties, directory en catalogi waardoor de onderliggende infrastructuur ontstaat voor een federatieve zoekvraag. Het vormt daarmee het hard van zoeken in OpenWoo.app. Meer informatie over hoe we de techniek van Open Index inzetten vind je in de [architectuurdocumentatie van OpenCatalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). -**Open Registers** levert voor ons een publicatie register waar publicaties binnen komen (automatisch aan de hand van synchronisatie of handmatig) en we deze behandelen voordat ze verder worden gecommuniceerd naar Open Index. +**Open Registers** levert voor ons een publicatieregister waar publicaties binnen komen (automatisch aan de hand van synchronisatie of handmatig) en we deze behandelen voordat ze verder worden gecommuniceerd naar Open Index. Er is dus een bewuste en harde scheiding tussen de werkbak (Open Registers) en de publicatiebak (Open Index) waarbij de zoek-API (en daarmee de burger interface) gebruik maakt van de zoekbak. De medewerkers maken via de Admin-UI en beheerinterface gebruik van Open Registers om publicaties te behandelen. Onder het behandelen van publicatie verstaan we onder andere: @@ -132,7 +133,7 @@ Er is dus een bewuste en harde scheiding tussen de werkbak (Open Registers) en d - Eventueel terugtrekken van publicaties - Archiveren -Hierbij dient te worden opgemerkt dat het publicatieprincipe niet allen de WOO maar ook WHO en DSO ondersteund. +Hierbij dient te worden opgemerkt dat het publicatieprincipe niet alleen de Woo, maar ook [WHO](https://wetten.overheid.nl/BWBR0036795/2024-06-19/0) en [DSO](https://iplo.nl/digitaal-stelsel/) ondersteund. Afhankelijk van de specifieke configuratie wensen van overheden kunnen sommige van deze handelingen worden geautomatiseerd (bijvoorbeeld terugtrekken van en DSO-publicatie die ter inzage ligt na het verloop van de termijn). Hiervoor ondersteunen we twee patronen @@ -199,7 +200,7 @@ Deze Open Index is echter ook buiten OpenWoo bruikbaar en kan bijvoorbeeld worde ## Federatief (Landelijk) zoeken -OpenWoo.app maakt gebruik van de federatieve zoekvraag ontwikkeld binnen [OpenCatalogi](https://opencatalogi.nl/) om verschillende integrale zoekvragen virtueel samen te voegen.  Simpel gezegd roept de landelijke zoek API meerdere instanties van [Open Index]() aan en aggregeert de resultaten. Technisch zitten daar nog wat haken en ogen aan die binnen Open Index worden [uitgelegd](). +OpenWoo.app maakt gebruik van de federatieve zoekvraag ontwikkeld binnen [OpenCatalogi](https://opencatalogi.nl/) om verschillende integrale zoekvragen virtueel samen te voegen.  Simpel gezegd roept de landelijke zoek-API meerdere instanties van [Open Index](https://index.openregisters.app) aan en aggregeert de resultaten. Technisch zitten daar nog wat haken en ogen aan die binnen Open Index worden [uitgelegd](). Er wordt hierbij dus géén gebruik gemaakt van een landelijke index, het geen data duplicatie voorkomt en organisaties zelf in controle houdt op hun publicaties. Dit dit concept is verder uitgewerkt in [koophulpje.nl](https://koophulpje.nl/) waarbij ook een voorziening is gerealiseerd voor het genereren van `robot.txt` en `sitemap.xml` bestanden (ten behoeve van KOOP). De facto is hiermee dus ook een landelijke Woo-API gerealiseerd met de beperking dat deze alleen organisaties bevat die participeren in OpenWoo.app De bevragingen tussen de federale zoekvraag en de verschillende organisaties kan via [NLX/FSC]( https://www.nlx.io/) lopen, of daarbuiten. Gezien het publieke bevragingen zijn op openbare informatie is NLX an sich niet verplicht en kan het inregelen van een PKI-certificaat nodeloos complex zijn. Dat gezegd hebbende biedt NLX ook voordelen met betrekking tot het monitoren en loggen van verkeer. ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Federatie.svg) @@ -225,15 +226,15 @@ OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties ond Dit zijn de aangeboden domeinen vanuit OpenWoo.app, daarnaast zien de dat de meeste organisaties hun publicatiepagina ontsluiten op hun eigen domein e.g. open.[organisatie_naam].nl -## Documenten vs Publicatie Objecten +## Documenten vs Publicatieobjecten -Vanuit de WOO denken we doorgaans aan documenten die gepubliceerd moeten worden, vanuit OpenWoo.app denken we echter in publicatie objecten waar een of meer documenten aan kunnen worden gekoppeld. Publicatie objecten omvatten de metadata waarmee documenten kunnen worden gevonden, geclusterd en weergegeven (zoals bijvoorbeeld thema's en typen). Publicatie objecten kunnen ook aan elkaar worden gerelateerd, dat is met name relevant in de casus van raadsinformatiesystemen waarbij een stuk hoort bij een agenda-item dat hoort bij een agenda bij een vergadering en gekoppeld kan zijn aan stemgedrag van personen of facties. +Vanuit de Woo denken we doorgaans aan documenten die gepubliceerd moeten worden. Vanuit OpenWoo.app denken we echter in termen van publicatieobjecten waaraan één of meer documenten kunnen worden gekoppeld. Publicatieobjecten bevatten de metadata waarmee documenten kunnen worden gevonden, geclusterd en weergegeven, zoals thema's en typen. Ook kunnen publicatieobjecten aan elkaar worden gerelateerd. Dit is vooral relevant in raadsinformatiesystemen, waar een stuk hoort bij een agenda-item, dat weer hoort bij een agenda van een vergadering en gekoppeld kan zijn aan stemgedrag van personen of fracties. Het onderling aan elkaar relateren van publicatieobjecten leidt onder water tot een driedimensionaal datamodel en is een van de redenen waarom er binnen OpenWoo.app is gekozen voor linked data. ## Metadata -Ieder publicatie object beschikt over een type (bijvoorbeeld woo_verzoek) en een voorgedefinieerde metadata set. De metadataset beschrijft wat er in de publicatie aan gegevens wordt verwacht en typeert deze (bijvoorbeeld heeft titel, de titel is een string) en biedt daarmee context voor de weergave van de publicatie. Dit bied de search UI de mogelijkheid om cards te maken die geoptimaliseerd zijn voor specifieke WOO-categorieën en een algemene card voor niet op voorhand gedefinieerde of onbekende categorieën. +Ieder publicatie object beschikt over een type (bijvoorbeeld woo_verzoek) en een voorgedefinieerde metadataset. De metadataset beschrijft wat er in de publicatie aan gegevens wordt verwacht en typeert deze (bijvoorbeeld heeft titel, de titel is een string) en biedt daarmee context voor de weergave van de publicatie. Dit biedt de search UI de mogelijkheid om cards te maken die geoptimaliseerd zijn voor specifieke WOO-categorieën en een algemene card voor niet op voorhand gedefinieerde of onbekende categorieën. Dat laatste kan voorkomen als een organisatie zelf metadata sets toevoegt, dat mag. Het is mogelijk voor organisaties om zelf extra metadata beschrijvingen te definiëren en hierop te publiceren. Organisaties zijn daarmee ook niet gelimiteerd tot de door KOOP gedefinieerde categorieën. Dit is ook een van de redenen waarom zoeken in de UI de faceted search MOET implementeren (zie ook de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/)). Het is niet op voorhand voorspelbaar op welke aspecten kan worden gezocht, dit is afhankelijk van de publicaties en gedefinieerde metadata zoals gepubliceerd door deelnemende organisaties. diff --git a/docs/techniek/Configuratie.md b/docs/techniek/Configuratie.md index e54c10ca..4736a18e 100644 --- a/docs/techniek/Configuratie.md +++ b/docs/techniek/Configuratie.md @@ -4,9 +4,9 @@ Om te zorgen dat de OpenWoo-website goed werkt, is het belangrijk dat de onderli - [Configuratie](#configuratie) - [Gebruik variabelen](#gebruik-variabelen) - - [Algemene inrichting zaaksysteem](#algemene-inrichting-zaaksysteem) - - [Categorieën](#categorieën) - - [Bijlagen](#bijlagen) + - [Algemene inrichting zaaksysteem](#algemene-inrichting) + - [Categorieën](#eigenschappen-naar-categorie) + - [Bijlagen](#documentenbijlagen) - [Mapping ZGW](#mapping-zgw) - [Mapping vanuit zaaksysteem.nl search endpoint](#mapping-vanuit-zaaksysteemnl-search-endpoint) @@ -38,16 +38,16 @@ In de overzichtspagina worden de properties op de volgende plekken weergegeven. Voor het kunnen publiceren van zaken vanuit het zaaksysteem is het belangrijk dat het zaaksysteem beschikt over de juiste inrichting. Indien er via de [OpenWoo service](https://openwoo.openservices.online/) zaken worden opgehaald, gelden daarvoor de volgende spelregels. - OpenWoo.app kijkt alleen naar eigenschappen die vooraf worden gegaan door `woo_` -- Er zijn algemene eigenschappen (geldend voor alle categorien) en specifieke eigenschapen (alleen geldend voor bepaalde categoerien) -- Voor de gedefineerde categeriën volgen we de [informatiecategorieen-en-werkdefinities](https://www.open-overheid.nl/onderwerpen/actieve-openbaarmaking/informatiecategorieen-en-werkdefinities) van koop -- Voor de velden volgen we daarnaast ook [diwoo](https://standaarden.overheid.nl/diwoo/metadata/diwoo-handleiding-sitemapindex-en-sitemaps). -- Naast deze categoerien mag een organisatie ook eigen categorien voeren maar dan worden alleen de algemene eigenschappen over genomen +- Er zijn algemene eigenschappen (geldend voor alle categorieën) en specifieke eigenschappen (alleen geldend voor bepaalde categorieën) +- Voor de gedefinieerde categorieën volgen we de [informatiecategorieen-en-werkdefinities](https://www.open-overheid.nl/onderwerpen/actieve-openbaarmaking/informatiecategorieen-en-werkdefinities) van koop +- Voor de velden volgen we daarnaast ook [DiWoo](https://standaarden.overheid.nl/diwoo/metadata/diwoo-handleiding-sitemapindex-en-sitemaps). +- Naast deze categorieën mag een organisatie ook eigen categorieën voeren, maar dan worden alleen de algemene eigenschappen over genomen -Het is niet per definitie nodig om alle eigenschappen in het bron systeem handmatig in te regelen en vullen, sommige eigenschapen kunnen worden overgenomen uit algemene metadata van een bron systeem. Kijk onder [Mappings](#Mappings) om te zien welke eigenschappen automatisch worden gevuld. +Het is niet per definitie nodig om alle eigenschappen in het bronsysteem handmatig in te regelen en vullen, sommige eigenschappen kunnen worden overgenomen uit algemene metadata van een bron systeem. Kijk onder [Mappings](#mappings) om te zien welke eigenschappen automatisch worden gevuld. ### Algemene eigenschappen -Een aantal zaakatributen zijn noodzakenlijk voor het voor het goed werken van de OpenWoo.app, ze zijn dan ook altijd verplicht ongeacht de Woo categori. +Een aantal zaakattributen zijn noodzakelijk voor het voor het goed werken van de OpenWoo.app, ze zijn dan ook altijd verplicht ongeacht de Woo categorie.   | Property | Verplicht | Gebruik | Toegestane waardes | |---------------------|-----------|---------------------------------------------------------------------------------------------------------|--------------------| @@ -100,7 +100,7 @@ Een aantal zaakatributen zijn noodzakenlijk voor het voor het goed werken van de | 2l | Klachtoordelen | `woo_datum_ontvangst`, `woo_organisatieonderdeel`, `woo_functiebenaming`, `woo_gedraging`, `woo_bevindingen`, `woo_oordeel`, `woo_conclusies`, `woo_datum_besluit`,`woo_termijnoverschrijding` | [definitie](https://www.open-overheid.nl/onderwerpen/actieve-openbaarmaking/instrumenten-en-diensten/richtlijnen/2024/2/16/werkdefinitie-klachtoordelen) | > **Note** -> Nog niet vastgestelde categorien of categorien die buiten de OpenWoo.app vallen kunnen wel worden ontsloten via OpenWoo.app, daarbij kan gebruik worden gemaakt van de algemene eigenschappen en documenten/bijlagen. De specifieke eigenschappen worden echter pas opgenomen op het moment dat de categorie door KOOP is vastgesteld. +> Nog niet vastgestelde categorieën of categorieën die buiten de OpenWoo.app vallen kunnen wel worden ontsloten via OpenWoo.app, daarbij kan gebruik worden gemaakt van de algemene eigenschappen en documenten/bijlagen. De specifieke eigenschappen worden echter pas opgenomen op het moment dat de categorie door KOOP is vastgesteld. ### Documenten/Bijlagen @@ -114,14 +114,14 @@ Bijlagen nemen een bijzondere positie in binnen de OpenWoo.app, ze vormen de ker | woo_besluit | Documenten met dit label worden weergegeven onder de titel 'Besluit' in plaats van onder bijlagen | | woo_convenant | Documenten met dit label worden weergegeven onder de titel 'Convenant' in plaats van onder bijlagen | -> **Spelregels omtrend labels** +> **Spelregels omtrent labels** > -> - Het is mogelijk om als organisatie zelf extra labels toe te voegen, als deze het juist format volgen `woo_[[labelnaam]]]` worden deze automatisch overgenomen in de weergave door boven de rij `Bijlagen` een extra rij toe te voegen in de form `[[labelnaam]]: Alle hieraan gekoppelde bestanden`. +> - Het is mogelijk om als organisatie zelf extra labels toe te voegen, als deze het juiste format volgen `woo_[[labelnaam]]]` worden deze automatisch overgenomen in de weergave door boven de rij `Bijlagen` een extra rij toe te voegen in de form `[[labelnaam]]: Alle hieraan gekoppelde bestanden`. > - Bestanden die geen andere label hebben dan `woo_publicatie` worden getoond in de rij `Bijlagen`. > - Als bestanden meerdere labels hebben worden ze op meerdere plekken getoond (met uitzondering van `Bijlagen` daar worden alleen bestanden getoond zonder label) -> - Bestanden zonder het label `woo_publicatie` worden niet getoond (ook al zijn ze wel van een ander `woo_` label voorzien) +> - Bestanden zonder het label `woo_publicatie` worden niet getoond (ook al zijn ze wel van een ander `woo_`-label voorzien) -## Mappigns +## Mappings ### Mapping ZGW @@ -153,7 +153,7 @@ Bijlagen ## Configuratie -Als laatste zijn er ook een aantal waarde op het publicatie object die worden gezet aan de hand van configuratie in de [OpenWoo service](https://openwoo.openservices.online/), te weten +Als laatste zijn er ook een aantal waarde op het publicatieobject die worden gezet aan de hand van configuratie in de [OpenWoo service](https://openwoo.openservices.online/), te weten | Eigenchap | Invulling | Gebruik | |------------------|-------------------------------------|-------------------| diff --git a/docs/techniek/Installatie.md b/docs/techniek/Installatie.md index acf5c110..2696ab38 100644 --- a/docs/techniek/Installatie.md +++ b/docs/techniek/Installatie.md @@ -1,6 +1,6 @@ # Installatie -Deze installatiehandleiding is bedoeld voor overheden en leveranciers die zelfstandig aan de slag willen met OpenWoo-website. Als je OpenWoo-website als SaaS wilt afnemen, kijk dan onder [kosten](/docs/product/Kosten.md). +Deze installatiehandleiding is bedoeld voor overheden en leveranciers die zelfstandig aan de slag willen met OpenWoo-website. Als je OpenWoo-website als SaaS wilt afnemen, kijk dan onder [kosten](../product/Kosten.md). Het template voor de OpenWoo-website is gebaseerd op de Conduction [Productpage-template](https://github.com/ConductionNL/product-website-template) voor Common Ground. Hieronder tref je een verkorte installatiehandleiding aan die vooral focust op de onderliggende bronnen. Voor meer en uitgebreidere details kun je de documentatie van het Productpage-website-template gebruiken. @@ -93,7 +93,7 @@ Volg de installatiehandleiding op [Woo Bundle](https://github.com/ConductionNL/W ## Externe Systemen -Voor het koppelen van externe systemen geldt dat zij op de juiste manier moeten zijn geconfigureerd. Kijk daarvoor onder [configuratie](/docs/techniek/Configuratie.md). +Voor het koppelen van externe systemen geldt dat zij op de juiste manier moeten zijn geconfigureerd. Kijk daarvoor onder [configuratie](./Configuratie.md). ## Verdere documentatie diff --git a/docs/techniek/Integratie.md b/docs/techniek/Integratie.md index 35504d7b..250a46af 100644 --- a/docs/techniek/Integratie.md +++ b/docs/techniek/Integratie.md @@ -24,11 +24,11 @@ Als u vanuit uw casus een API nodig heeft zonder throttling, ratelimit of namens ### Documentatie -Voor de API is een [redoc documentatie](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/oas.yaml) beschikbaar met voorbeelden van de verschillende API-endpoints, calls en resultaten. Omdat de API daarnaast kan worden gebruikt zonder authenticatie is deze ook goed te beproeven via onze [Postman-collectie](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Woo.postman_collection.json). We raden developers van ook van harte aan om aan de hand van deze collectie te spelen en te ontwikkelen. +Voor de API is een [Stoplight documentatie](https://conduction.stoplight.io/studio/open-catalogi?) beschikbaar met voorbeelden van de verschillende API-endpoints, calls en resultaten. Omdat de API daarnaast kan worden gebruikt zonder authenticatie is deze ook goed te beproeven via onze [Postman-collectie](https://github.com/ConductionNL/opencatalogi/blob/feature/docs/postmancollection/docs/assets/Opencatalogi%20CRUD.postman_collection.json). We raden developers van ook van harte aan om aan de hand van deze collectie te spelen en te ontwikkelen. ### Voorbeelden -In het merendeel van de gevallen zult u een zoekvraag willen uitvoeren binnen de Woo-publicaties van OpenWoo.app, het endpoint daarvoor is: . Er zijn 4 voor de hand liggende zoekparameters waarmee gezocht wordt (overige opties vindt u terug in de [Redoc documentatie](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/oas.yaml)). +In het merendeel van de gevallen zult u een zoekvraag willen uitvoeren binnen de Woo-publicaties van OpenWoo.app, het endpoint daarvoor is: . Er zijn een aantal voor de hand liggende zoekparameters waarmee gezocht wordt (overige opties zijn terug te vinden in de [Stoplight documentatie](https://conduction.stoplight.io/studio/open-catalogi?)). 1. Op een of meerdere zoek woorden, b.v. `_search=test` 2. Op organisatie, dit gaat aan de hand van OIN (de volledige OIN-lijst vind u [hier](https://oinregister.logius.nl/oin-register)) b.v. `oin=00000001001299992000` @@ -36,88 +36,76 @@ In het merendeel van de gevallen zult u een zoekvraag willen uitvoeren binnen de 4. Op datum, Hierbij kunt u een begin en eindatum opgeven om een periode (bijvoorbeeld jaar) te doorzoeken publicatiedatum[after]=2022-12-31T23:59:59Z&publicatiedatum[before]=2024-01-01T00:00:00Z& ````cli -GET 'https://api.gateway.commonground.nu/api/publicaties?extend[]=all&_search=Afvalwaterakkoord&_order[publicatiedatum]=desc&_limit=12&_page=1' +GET 'https://api.gateway.commonground.nu/api/publicaties?extend[]=all&_search=verzoek&_order[publicatiedatum]=desc&_limit=12&_page=1' Response { "results": [ { - "_id": "3c75db6d-55b5-48da-aef8-a5768dd8ec89", - "id": "3082", - "titel": "Afvalwaterakkoord", - "beschrijving": null, - "samenvatting": "In dit bestuursakkoord is afgesproken door de koepelorganisaties, dat het waterschap en de gemeenten moeten samenwerken in de afvalwaterketen "als ware het één bedrijf’.", - "categorie": "Convenant", - "publicatiedatum": "2023-11-24 11:31:47", - "portalUrl": "https://conductionnl.github.io/woo-website-epe/19cdec3f-896f-4765-8d62-c6c8570926b7", - "bijlagen": [ - { + "_id": "385628ef-dd81-4ab2-98e1-3051ab1b3ef6", + "_self": { + "id": "385628ef-dd81-4ab2-98e1-3051ab1b3ef6", + "name": "informatieverzoek evenementenvergunning", + "self": "/api/publicaties/385628ef-dd81-4ab2-98e1-3051ab1b3ef6", + "schema": { + "id": "40c1041c-1526-4494-b191-244fdd30aefd", + "name": "Publicatie", + "ref": "https://commongateway.nl/woo.publicatie.schema.json" + }, + "level": 1, + "dateCreated": "2024-07-03T07:51:59+00:00", + "dateModified": "2024-08-02T12:26:46+00:00", + "dateDeleted": null, + "database": { + "id": null, + "name": null, + "ref": null + }, + "owner": { + "id": "06ef47a7-a2f1-4589-af59-b00a611d5692", + "name": "Default User", + "ref": "https://docs.commongateway.nl/user/default.user.json" + }, + "organization": { + "id": "a1c8e0b6-2f78-480d-a9fb-9792142f4761", + "name": "Default Organization", + "ref": "https://docs.commongateway.nl/organization/default.organization.json" + }, + "application": { "id": null, - "titel": "Naam_Bijlage", - "categorie": null, - "type": null, - "status": null, - "url": "https://openpub.ridderkerk.nl/wp-content/uploads/sites/3/2023/02/ondertekend-afvalwaterakkoord-Ridderkerk-2022.pdf" - } - ], - "themas": [ - { - "hoofdthema": "Milieu", - "subthema": null, - "aanvullendThema": null - } - ], - "organisatie": { - "naam": "Gemeente Ridderkerk", - "rsin": null, - "tooi": null, - "oidn": "ridderkerk", - "id": "37165afb-0e33-4813-8f66-d504501e6128" - }, - "metadata": { - "volgnummer": null, - "besluitdatum": "2022-12-21", - "verzoek": { - "inventarisatielijst": { - "categorie": null, - "type": null, - "status": "accepted", - "url": "http://localhost/api/view-file/f9358a25-ee51-4079-a1d1-e98d53c4ca80", - "titel": "Temporarily title so a object gets created for file fetching and url genering.", - "id": null - }, - "informatieverzoek": { - "categorie": null, - "type": null, - "status": "accepted", - "url": "http://localhost/api/view-file/f723f34c-ef3d-453b-b395-fe60b5127cde", - "titel": "Temporarily title so a object gets created for file fetching and url genering.", - "id": null - }, - "besluit": { - "categorie": null, - "type": null, - "status": "accepted", - "url": "http://localhost/api/view-file/4b7978e8-6cf9-469e-b27c-08f895e5f653", - "titel": "Temporarily title so a object gets created for file fetching and url genering.", - "id": null - }, - "termijnoverschrijding": null, - "ontvangstdatum": "2023-10-02T10:31:12Z", - "ontvangerInformatieverzoek": null, - "status": null + "name": null, + "ref": null }, - "id": "8e1084b5-ba4d-4d33-a5c2-f98e7f893f07" + "synchronizations": [ + { + "id": "c04f118a-d853-48c4-a8d4-d4d86ef11b36", + "source": { + "id": "f1cf401b-fbbc-4416-b2da-519eac0163b9", + "ref": "https://commongateway.woo.nl/source/conduction.zaaksysteem.source.json", + "name": "Conduction zaaksysteem", + "description": "Conduction zaaksysteem api", + "location": "https://openwoo.zaaksysteem.net/api" + }, + "endpoint": null, + "sourceId": "001046b9-0a9b-4068-a6bf-3e7efcf75c67", + "dateCreated": "2024-07-03T07:51:59+00:00", + "dateModified": "2024-07-03T07:52:00+00:00", + "lastChecked": null, + "lastSynced": null, + "sourceLastChanged": null + } + ] } } + // 1 enkele voorbeeld publicaite, in dit geval zijn het er 64 ], - "count": 1, + "count": 12, "limit": 12, - "total": 1, + "total": 64, "offset": 0, "page": 1, - "pages": 1 + "pages": 6 } ```` @@ -125,7 +113,7 @@ Vanuit een het weergeven van een zoekformulier is het goed mogelijk dat u alleen ````cli GET 'https://api.gateway.commonground.nu/api/publicaties?_queries[]=categorie' -Content-Type: application/json+aggregations +Accept: application/json+aggregations Response @@ -168,7 +156,7 @@ De kerngegevens van een Woo-publicatie zitten in het metadata-object, de inhoud | Property | Verplicht | Gebruik | Toegestane waardes | |-----------------------|---------------|--------------|-----------------------| -#### Klachten +#### Klachtoordelen | Property | Verplicht | Gebruik | Toegestane waardes | |-----------------------|---------------|--------------|-----------------------| @@ -183,8 +171,8 @@ De kerngegevens van een Woo-publicatie zitten in het metadata-object, de inhoud Er zijn twéé manieren waarop een bron kan worden gekoppeld, beide vereisen dat de bron beschikt over een koppelvlak dat benaderbaar is door de OpenWoo.app. 1. **De bron biedt een reeds door OpenWoo.app ondersteund koppelvlak aan of ontwikkelt deze.** Dit is vanuit de OpenWoo.app natuurlijk de snelste route -2. **OpenWoo.app ontwikkeld ondersteuning voor een bron specifiek koppelvlak.** Deze route vergt minder van de aan te sluiten bron (die zal doorgaans al over een koppelvlak zo als API beschikken). Maar vergt inspanning aan de kant van de OpenWoo.app leveranciers. Daarnaast zal de OpenWoo.app community akkoord moeten gaan met de ontwikkeling en bekostiging (in de praktijk zal de aanvragen worden gevraagd de kosten te dekken). +2. **OpenWoo.app ontwikkeld ondersteuning voor een bron specifiek koppelvlak.** Deze route vergt minder van de aan te sluiten bron (die zal doorgaans al over een koppelvlak zoals een API beschikken). Maar vergt inspanning aan de kant van de OpenWoo.app leveranciers. Daarnaast zal de OpenWoo.app community akkoord moeten gaan met de ontwikkeling en bekostiging (in de praktijk zal de aanvragen worden gevraagd de kosten te dekken). ## Het koppelen van een organisatie -Zie voor het koppelen van een organisatie de [naar productiepagina](/docs/techniek/Productie.md). +Zie voor het koppelen van een organisatie de [naar productiepagina](../techniek/Productie.md). diff --git a/docs/techniek/Productie.md b/docs/techniek/Productie.md index b97c7bf9..ecb1ae6f 100644 --- a/docs/techniek/Productie.md +++ b/docs/techniek/Productie.md @@ -7,13 +7,13 @@ Het in productie nemen van OpenWoo.app voor uw organisatie is makkelijker dan u - Vraag tijdig een PKI-certificaat en DNS-wijziging aan bij uw ICT-leverancier(s) - Zorg dat u tijd beschikbaar hebt voor het grondig doortesten van de keten aan de hand van de testscenario's -Als u de OpenWOO APP zelfstandig installeert zult u de [acties voor leverancier](#acties-voor-leverancier) uiteraard zelf moeten uitvoeren. +Als u de OpenWoo.app zelfstandig installeert zult u de [acties voor leverancier](#acties-voor-leverancier) uiteraard zelf moeten uitvoeren. ## Benodigde informatie voor de vormgeving Om de vormgeving van OpenWoo.app aan te passen aan uw organisatie, heeft uw leverancier of u de volgende informatie nodig: -- Logo in vector formaat (e.g. .svg, .eps of .ai) +- Logo in vector formaat (e.g. `.svg`, `.eps` of `.ai`) - Huisstijlhandboek of website die als voorbeeld gebruikt kan worden - Contactgegevens (naam, e-mailadres, telefoonnummer en functie) van een medewerker die eventuele vragen over de huisstijl kan beantwoorden. @@ -24,7 +24,7 @@ Om te beoordelen of uw organisatie NL Design tokens nodig heeft of moet aanpasse Voor de inrichting van OpenWoo.app heeft uw leverancier of u de volgende informatie nodig: - Welke afbeelding moet er worden getoond in de jumbotron? (afbeelding boven aan de landingspagina) -- Welke contactgegevens moeten er in de footer worden getoond? Denk daarbij aan +- Welke contactgegevens moeten er in de footer worden getoond? Denk daarbij aan: - Adresgegevens (bezoekadres en postadres) - Email - Telefoonnummer From 3cdc24a3eb9c9226a2a47da0368fbdcf4c37e130 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Mon, 5 Aug 2024 12:24:02 +0200 Subject: [PATCH 30/34] Update dockerimage.yml --- .github/workflows/dockerimage.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 3931a768..9790803f 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -44,15 +44,15 @@ jobs: - name: Print definitive APP_ENV run: echo "APP_ENV is now $APP_ENV and APP_BUILD is now $APP_BUILD" - name: Build the Docker image - run: docker-compose build --build-arg APP_ENV=$APP_ENV --build-arg APP_BUILD=$APP_BUILD --build-arg APP_BUILD_ALL_FIXTURES=true + run: docker compose build --build-arg APP_ENV=$APP_ENV --build-arg APP_BUILD=$APP_BUILD --build-arg APP_BUILD_ALL_FIXTURES=true - name: Run the docker image - run: docker-compose up -d + run: docker compose up -d - name: Taking some sleep (for containers to come up) run: sleep 20 - name: Check if all containers are running run: docker ps - name: Dumping the logs - run: docker-compose logs + run: docker compose logs - name: Show all images run: docker images - name: Login to Container Registry @@ -66,13 +66,13 @@ jobs: fi - if: steps.containerregistry-login.outputs.success == 'true' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/development') name: Push to Container Registry - run: docker-compose push + run: docker compose push - if: steps.containerregistry-login.outputs.success == 'true' && github.ref == 'refs/heads/main' name: Push versioned containers to Container Registry id: version-push run: | - images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) + images=$(docker compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) for image in $images do docker push "${image}":"${APP_BUILD}" @@ -96,4 +96,4 @@ jobs: prerelease: false - name: Chores if: (success() || failure()) - run: docker-compose down + run: docker compose down From ba75d314d612bba92ea0a31897319c918ee59b8a Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Wed, 11 Sep 2024 13:07:44 +0200 Subject: [PATCH 31/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 25786cfa..e1e8efe2 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ > - [12-06-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). > - [09-05-2024 | Community Meeting](https://www.youtube.com/watch?v=Q0ElcTP-R4M). > - [10-04-2024 | Community Meeting](https://www.youtube.com/watch?v=zMqElLzy0BM). -> - [25-03-2024 | Sim-Groep Webinar](https://www.simgroep.nl/toekomstbestendige-woo-oplossing) +> - [25-03-2024 | SHIFT2](https://www.shift2.nl/een-toekomstbestendige-woo-oplossing) > - [13-03-2024 | Community Meeting](https://www.youtube.com/watch?v=TNZghskRu5c). > - [14-02-2024 | Community meeting](https://www.youtube.com/watch?v=ri5U8x-lsxo) > - [30-01-2024 | OpenGemeente Woobinar](https://vimeo.com/909134953) From 9cbb670a293fc6e2efea77fad527f616e537e90f Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Mon, 16 Sep 2024 14:59:05 +0200 Subject: [PATCH 32/34] Create hof-van-twente --- .../configFiles/municipalities/hof-van-twente | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 pwa/static/configFiles/municipalities/hof-van-twente diff --git a/pwa/static/configFiles/municipalities/hof-van-twente b/pwa/static/configFiles/municipalities/hof-van-twente new file mode 100644 index 00000000..90acec82 --- /dev/null +++ b/pwa/static/configFiles/municipalities/hof-van-twente @@ -0,0 +1,15 @@ +{ + "GATSBY_SHOW_THEME_SWITCHER": "false", + "GATSBY_API_BASE_URL": "https://api.common-gateway.commonground.nu/api", + "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", + "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", + "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", + // "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/HEBBENWEDIE.jpg", + "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", + "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", + "GATSBY_FOOTER_CONTENT_HEADER": "", + "GATSBY_OIDN_NUMBER": "00000001809250901000", + "GATSBY_SHOW_CATEGORY": "true", + "GATSBY_SHOW_ORGANIZATION": "", + "GATSBY_DATE_FULL_MONTH": "false" +} From 6b7f51c6cd75c9d104699bfc161451672731ed77 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Mon, 16 Sep 2024 15:34:08 +0200 Subject: [PATCH 33/34] config --- .../configFiles/municipalities/hof-van-twente | 15 --------------- .../hof-van-twente/hof-van-twente-accept.json | 15 +++++++++++++++ .../hof-van-twente/hof-van-twente.json | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 15 deletions(-) delete mode 100644 pwa/static/configFiles/municipalities/hof-van-twente create mode 100644 pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json create mode 100644 pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json diff --git a/pwa/static/configFiles/municipalities/hof-van-twente b/pwa/static/configFiles/municipalities/hof-van-twente deleted file mode 100644 index 90acec82..00000000 --- a/pwa/static/configFiles/municipalities/hof-van-twente +++ /dev/null @@ -1,15 +0,0 @@ -{ - "GATSBY_SHOW_THEME_SWITCHER": "false", - "GATSBY_API_BASE_URL": "https://api.common-gateway.commonground.nu/api", - "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", - "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", - "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", - // "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/HEBBENWEDIE.jpg", - "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", - "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", - "GATSBY_FOOTER_CONTENT_HEADER": "", - "GATSBY_OIDN_NUMBER": "00000001809250901000", - "GATSBY_SHOW_CATEGORY": "true", - "GATSBY_SHOW_ORGANIZATION": "", - "GATSBY_DATE_FULL_MONTH": "false" -} diff --git a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json new file mode 100644 index 00000000..8110b3cb --- /dev/null +++ b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json @@ -0,0 +1,15 @@ +{ + "GATSBY_SHOW_THEME_SWITCHER": "false", + "GATSBY_API_BASE_URL": "https://hofvantwente.accept.openwoo.app/ap", + "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", + "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", + "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", + "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/MISTNOG.jpg", + "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", + "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", + "GATSBY_FOOTER_CONTENT_HEADER": "", + "GATSBY_OIDN_NUMBER": "00000001809250901000", + "GATSBY_SHOW_CATEGORY": "true", + "GATSBY_SHOW_ORGANIZATION": "", + "GATSBY_DATE_FULL_MONTH": "false" + } \ No newline at end of file diff --git a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json new file mode 100644 index 00000000..f964ab01 --- /dev/null +++ b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json @@ -0,0 +1,15 @@ +{ + "GATSBY_SHOW_THEME_SWITCHER": "false", + "GATSBY_API_BASE_URL": "https://api.common-gateway.commonground.nu/api", + "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", + "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", + "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", + "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/MISTNOG.jpg", + "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", + "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", + "GATSBY_FOOTER_CONTENT_HEADER": "", + "GATSBY_OIDN_NUMBER": "00000001809250901000", + "GATSBY_SHOW_CATEGORY": "true", + "GATSBY_SHOW_ORGANIZATION": "", + "GATSBY_DATE_FULL_MONTH": "false" + } \ No newline at end of file From cd7ce4979c8df0ee1554244e7774c054cb5a9078 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Tue, 17 Sep 2024 10:24:14 +0200 Subject: [PATCH 34/34] review changes --- .../hof-van-twente/hof-van-twente-accept.json | 8 ++++---- .../municipalities/hof-van-twente/hof-van-twente.json | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json index 8110b3cb..de696d1c 100644 --- a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json +++ b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente-accept.json @@ -1,12 +1,12 @@ { "GATSBY_SHOW_THEME_SWITCHER": "false", - "GATSBY_API_BASE_URL": "https://hofvantwente.accept.openwoo.app/ap", + "GATSBY_API_BASE_URL": "https://hofvantwente.accept.openwoo.app/api", "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", - "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", + "GATSBY_FAVICON_URL": "data:image/x-icon;base64,AAABAAEAk2MAAAEAIABI6wAAFgAAACgAAACTAAAAxgAAAAEAIAAAAAAAZOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHRIbHR3AGx0dzRsdHYobHR0aGx0dABsdHTMbHR3BGx0dOxsdHXAbHR26Gx0dIxsdHQAbHR0AGx0dABsdHQAbHR0AFxkeACEjGwByeAQAeoABAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR19Gx0dUBsdHRAbHR0DGx0dABsdHQAbHR1LGx0doxsdHaMbHR09Gx0dARsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABgaHgAeIBwANTcVAISKAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////vwf/////////gAP///////////8fB/////////+AA////////////A8H/////////4AD///////////8Bwf/////////gAP//////////BwHj/////////+AA//////////4DAf//////////4AD//////////AEB///////////gAP/////////8Acf//////////+AA//////////wB////////////4AD//////////AH////////////gAP////////4eA////////////+AA/////////A4D////////////4AD////////4B4/////////////gAP////////AD/////////////+AA////////8AP/////////////4AD/////8f/wA//////////////gAP/////j//AD/////////////+AA/////+f/8AP/////////////4AD/////z//4B//////////////gAP////+P//wH/////////////+AA/////x/+Dhg+DD8BBg4PA///4AD/////H/gH+D4MHAAGDAwB///gAP////4/8AP4PggYAQYICAH//+AA/////D/gAfg8ABgBBggAAf//4AD////8f+AB+DwACAAGCDAB///gAP////x/4AD4PAAIAIYIMAH//+AA////+P/AAPg4AAgAhggwAf//4AD////4/8AA+DgAAACCCDAB///gAP////D/4AH4OEEAIIAAAAH//+AA////8P/gAfgwQQAAAAAIAf//4AD////x//AD+DBBBAEAEAwB///gAP////H/+Af4MGGGAwAwDgf//+AA////4f/8D4AD///f/vg/n///4AD////h////gAP/////+D/////gAP///+H///+AA//////8H////+AA////4f///4AD////////////4AD////h///////////////////gAP//4+H//////////////////+AA//+A4f8Hg4Dgf8PgBDB/////4AD//wBh/weDAGB/gcAEMH/////gAP//HGH/B4IAIH+BwAQwf////+AA//8iYf8HgAgAfwDCBDB/////4AD//yBg/weACAB/AMEEMH/////gAP//AGD/B4AcAH8AwAQwf////+AA//8QYP8AABwAfgBgBDB/////4AD////w/wAACBB+AHAEEH/////gAP//+DB/AAIAADwIIAwAf////+AA///wMH8AAgAAPAgADAB/////4AD//+AQPweDAEA8GAAcAP/////gAP//5Bg/B4PBwDwYMDwB/////+AA///gGB8Hg//w////////////4AD///B8HweD//Af///////////gAP//+IwPB4P/8B///////////+AA////DAcHg//4H///////////4AD///weB/////4f///////////gAP///GID/////////////////+AA///8wwH/////////////////4AD///4HgP/////////////////gAP///hnAf/////+//////////+AA////IOA//////j//////////4AD///8D8A/////8f//////////gAP///4Y4B/////j//////////+AA/////BwB////4f//////////4AD////4DgB////D///////////gAP////hPAB///gf//////////+AA////+BmAAH/AH///////////4AD////4APAAAAB////////////gAP////wgfAAAAf///////////+AA/////8J/AAAH////////////4AD/////wM/gAD/////////////gAP/////AyP+P/////////////+AA/////+CIh///////////////4AD/////85iEH//////////////gAP//////EQAf/////////////+AA//////8BGd//////////////4AD//////8MYH//////////////gAP//////5hgf/////////////+AA///////+CB//////////////4AD///////8MH//////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AA=", "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", - "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/MISTNOG.jpg", + "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-hofvantwente/main/pwa/src/assets/jumbotron/MISTNOG.jpg", "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", - "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", + "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-hofvantwente/main/docs/FooterContent.json", "GATSBY_FOOTER_CONTENT_HEADER": "", "GATSBY_OIDN_NUMBER": "00000001809250901000", "GATSBY_SHOW_CATEGORY": "true", diff --git a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json index f964ab01..541b5a50 100644 --- a/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json +++ b/pwa/static/configFiles/municipalities/hof-van-twente/hof-van-twente.json @@ -2,11 +2,11 @@ "GATSBY_SHOW_THEME_SWITCHER": "false", "GATSBY_API_BASE_URL": "https://api.common-gateway.commonground.nu/api", "GATSBY_NL_DESIGN_THEME_CLASSNAME": "open-webconcept-theme", - "GATSBY_FAVICON_URL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7UlEQVRYhe2WTUgVURTHfz0GkQgXESJCA0VJzCIixIWIWWNQLmwSWtgiXkGraNlaWrQoCYIgIxfNIqKiYAgqogY/CKOIsJIhzEXNwuRljwiRkIe0uPfm8TZPn6C0yD883pn/vefjnnPuB6xjHf87NlQ8081XAznScFbSfuQ1AmeBT8ClOEjmVhKAU6HzDuAu4ODmT5OGt7TzKuAJsEXPnAGu6DEH6NT8wzhISlmmcxUG2gNsAqq1bNAknANsFXIv8ED/LpczvJABN58DtgPTpOEPwdcAjUKnIORWy95LAD/ycsBxwR8oF4DMQD+qjl9w802Cb7HmDQp5n2VvWP/vAmoF/15O8iPP0UFqw26+Djilx2uAk0s4GdJGqoBmwSdxkJjstFk6A8J5F/Ad+OZHXrtTRuErbr4TOAJ0Cb4EjGh5L6ovDIaFXC4zoHqjRsvnTQC2Qg/ZDfqGNJwpE/QA/Km/7I1JYEKP7UD1mcG0cWI3U7ndUckqG4A6ycdBMq/lQ5bO0xxuvhbwyji0YVbpoJrT4GMcJFNathczJORua+yxnS6AeeA5qhFl91Za//2WvUEddDuLm/Z1HCSfcxkKh0nDg8A91HYyeEsa/tRy5ioz6l8Axv3Ia0WdpBJ9oGotFWZZ2OfNQJUYW3aVqAarF/ykdjwEbBb8GHAb1EnYIAZGSENzmZTb/3b9J+IgmdRym6WzR/8kikC3ubQc4A5wAlX7PjFRZmYeeKHl3SzsY4CNfuTFqNW7LI0EOBYHSWIIB9Vs/UCBNBwXk6WxUXE/tFlG61mc9iwUgIvAtThIfskBhzSUq5PoBa6iuv+C4Hcu48yghOqbm8B927HB0g8SdUaUSMOiofzIawGeoa5mgzkgBcZRW/cV6gAqsgwyA/AjrwN1D7wDbtiPCT/y6lA1LwLTQFGcdivCXy8i7fyRoLYB5+QcfepNsQrIOvOPWt/BajhaSQAfrO+xtQwg61F6HZX2LmAUOLOWAazjn+M3zrbSaI+Ix4cAAAAASUVORK5CYII=", + "GATSBY_FAVICON_URL": "data:image/x-icon;base64,AAABAAEAk2MAAAEAIABI6wAAFgAAACgAAACTAAAAxgAAAAEAIAAAAAAAZOMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHRIbHR3AGx0dzRsdHYobHR0aGx0dABsdHTMbHR3BGx0dOxsdHXAbHR26Gx0dIxsdHQAbHR0AGx0dABsdHQAbHR0AFxkeACEjGwByeAQAeoABAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR19Gx0dUBsdHRAbHR0DGx0dABsdHQAbHR1LGx0doxsdHaMbHR09Gx0dARsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABgaHgAeIBwANTcVAISKAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAAB+hAAAfoQAAH6EAACBhwAAbHEFABUXHwAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AGx0dABsdHQAbHR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////vwf/////////gAP///////////8fB/////////+AA////////////A8H/////////4AD///////////8Bwf/////////gAP//////////BwHj/////////+AA//////////4DAf//////////4AD//////////AEB///////////gAP/////////8Acf//////////+AA//////////wB////////////4AD//////////AH////////////gAP////////4eA////////////+AA/////////A4D////////////4AD////////4B4/////////////gAP////////AD/////////////+AA////////8AP/////////////4AD/////8f/wA//////////////gAP/////j//AD/////////////+AA/////+f/8AP/////////////4AD/////z//4B//////////////gAP////+P//wH/////////////+AA/////x/+Dhg+DD8BBg4PA///4AD/////H/gH+D4MHAAGDAwB///gAP////4/8AP4PggYAQYICAH//+AA/////D/gAfg8ABgBBggAAf//4AD////8f+AB+DwACAAGCDAB///gAP////x/4AD4PAAIAIYIMAH//+AA////+P/AAPg4AAgAhggwAf//4AD////4/8AA+DgAAACCCDAB///gAP////D/4AH4OEEAIIAAAAH//+AA////8P/gAfgwQQAAAAAIAf//4AD////x//AD+DBBBAEAEAwB///gAP////H/+Af4MGGGAwAwDgf//+AA////4f/8D4AD///f/vg/n///4AD////h////gAP/////+D/////gAP///+H///+AA//////8H////+AA////4f///4AD////////////4AD////h///////////////////gAP//4+H//////////////////+AA//+A4f8Hg4Dgf8PgBDB/////4AD//wBh/weDAGB/gcAEMH/////gAP//HGH/B4IAIH+BwAQwf////+AA//8iYf8HgAgAfwDCBDB/////4AD//yBg/weACAB/AMEEMH/////gAP//AGD/B4AcAH8AwAQwf////+AA//8QYP8AABwAfgBgBDB/////4AD////w/wAACBB+AHAEEH/////gAP//+DB/AAIAADwIIAwAf////+AA///wMH8AAgAAPAgADAB/////4AD//+AQPweDAEA8GAAcAP/////gAP//5Bg/B4PBwDwYMDwB/////+AA///gGB8Hg//w////////////4AD///B8HweD//Af///////////gAP//+IwPB4P/8B///////////+AA////DAcHg//4H///////////4AD///weB/////4f///////////gAP///GID/////////////////+AA///8wwH/////////////////4AD///4HgP/////////////////gAP///hnAf/////+//////////+AA////IOA//////j//////////4AD///8D8A/////8f//////////gAP///4Y4B/////j//////////+AA/////BwB////4f//////////4AD////4DgB////D///////////gAP////hPAB///gf//////////+AA////+BmAAH/AH///////////4AD////4APAAAAB////////////gAP////wgfAAAAf///////////+AA/////8J/AAAH////////////4AD/////wM/gAD/////////////gAP/////AyP+P/////////////+AA/////+CIh///////////////4AD/////85iEH//////////////gAP//////EQAf/////////////+AA//////8BGd//////////////4AD//////8MYH//////////////gAP//////5hgf/////////////+AA///////+CB//////////////4AD///////8MH//////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AD////////////////////////gAP///////////////////////+AA////////////////////////4AA=", "GATSBY_ORGANISATION_NAME": "Gemeente Hof van Twente", - "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/pwa/src/assets/jumbotron/MISTNOG.jpg", + "GATSBY_JUMBOTRON_IMAGE_URL": "https://raw.githubusercontent.com/ConductionNL/woo-website-hofvantwente/main/pwa/src/assets/jumbotron/MISTNOG.jpg", "GATSBY_FOOTER_LOGO_HREF": "https://www.hofvantwente.nl/", - "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/FooterContent.json", + "GATSBY_FOOTER_CONTENT": "https://raw.githubusercontent.com/ConductionNL/woo-website-hofvantwente/main/docs/FooterContent.json", "GATSBY_FOOTER_CONTENT_HEADER": "", "GATSBY_OIDN_NUMBER": "00000001809250901000", "GATSBY_SHOW_CATEGORY": "true",