Changelog

2.3.0 (2026-05-29)

Voor een volledig overzicht van alle commits, zie v2.3.0.

Deployment aandachtspunten

  • [#2414]: De virusscanner maakt gebruik van een ClamAV-daemon. Om bestandsuploads te scannen dient een ClamAV-daemon bereikbaar te zijn en moet het veld Virusscanner inschakelen in de siteconfiguratie worden aangezet. Host, poort en time-out zijn instelbaar via de beheeromgeving (standaardwaarden: host clamav, poort 3310, time-out 30 seconden).

  • [#2363]: manage.py add_missing_templates is toegevoegd aan het opstartsscript (bin/docker_start.sh) en wordt voortaan automatisch uitgevoerd bij elke deploy.

  • [#2514]: Nieuwe omgevingsvariabele ZGW_CACHE_WARMUP_TIMEOUT (standaard: 120 seconden) stelt de maximale uitvoeringstijd in voor de Celery-taak die de ZGW-cache voorlaadt bij het inloggen. Pas deze waarde aan als de Celery-taak bij grote aantallen zaken regelmatig times out.

  • [#2513, #2514]: De standaardwaarde van CACHE_ZGW_ZAKEN_TIMEOUT is gewijzigd van 60 naar 300 seconden (5 minuten). Installaties die deze variabele niet expliciet hebben ingesteld krijgen hierdoor een langere cache-TTL voor zakengegevens.

  • [#2539]: Bij het inloggen van een gebruiker worden ZGW gegevens op de achtergrond ingeladen, zodat de pagina’s als “Mijn Zaken” sneller laden. Standaard worden deze taken op de bestaande Celery-worker uitgevoerd via de standaard queue: er is geen extra infrastructuur nodig. Operators die deze “cache warming” willen isoleren op een dedicated worker (zodat de cache tijdig gevuld is voor een gebruiker) kunnen de omgevingsvariabele CACHE_SEEDING_QUEUE instellen op een aparte queuenaam en een dedicated worker draaien. Zie voor een voorbeeld de celery-low-latency service in docker-compose.yml, configureerbaar via CELERY_WORKER_QUEUE en CELERY_WORKER_CONCURRENCY.

Nieuwe features

  • [#2414]: Bestandsuploads worden nu optioneel gescand op virussen met behulp van ClamAV. De virusscanner is in te schakelen via de siteconfiguratie en is van toepassing op alle bestandsuploads binnen de applicatie (zaken en plannen). Wanneer een geïnfecteerd bestand wordt gedetecteerd, wordt de upload geweigerd.

  • [#2363]: Gebruikers ontvangen nu automatisch een e-mailnotificatie wanneer een uitnodiging voor contact is geaccepteerd en de koppeling tot stand is gekomen. Zowel de uitnodiger als de uitgenodigde ontvangen een bericht zodra ze aan elkaar zijn gekoppeld als contactpersoon.

  • [#2470]: Support van lijsten toegevoegd aan veelgestelde vragen en vragenlijststappen.

  • [#2468]: Support van lijsten toegevoegd aan geen resultaten tekst op zoekpagina.

  • [#2454]: De synchronisatie van ZGW-configuratieobjecten is aangepast, zodat duplicaten die door OpenZaak worden aangemaakt (vermeldingen met dezelfde ‘omschrijving’ als bestaande vermeldingen) automatisch worden ingevuld met de configuratiewaarden van bestaande vermeldingen in OIP.

  • [#3639]: Overbodige API-aanroepen bij het bijwerken van digitale adressen verminderd.

  • [#2517]: min-release-age=2 toegevoegd aan .npmrc, minimale npm-versie vastgelegd via engines in package.json en node bijgewerkt naar 24.15 (LTS).

  • [#2142]: Verbeterde foutafhandeling voor Klanten API-services en clients.

  • [#2203, PR 41, PR 42 PR 43]: Alle ‘utrecht’ paragrafen vervangen door ‘nl’ paragrafen, als herbruikbaar web component, waardoor hun huisstijl overschrijfbaar wordt met de nieuwe candidate NL design-tokens.

  • [#2513]: De zakenlijst laadt sneller doordat status, statustype, resultaat en resultaattype nu alleen worden opgehaald voor de zaken op de huidige pagina in plaats van voor alle zichtbare zaken bij elk verzoek.

  • [#2514]: De ZGW-cache wordt bij het inloggen op de achtergrond voorgeladen via een Celery-taak, zodat de zakenlijst en zaakdetailpagina’s bij het eerste bezoek al vanuit de cache worden bediend.

Bugfixes

  • [#2544]: De uitlogknop gebruikt nu een tussenliggende bevestigingspagina in plaats van een formulier met een CSRF-token. Hierdoor werkt uitloggen ook na langdurig openstaan van een browser venster.

  • [#2537]: De mijn zaken-plugin gebruikt nu de vervolg_link van een formulier als doorlink-URL voor de kaart, in plaats van een zaakdetail-URL die niet van toepassing is op formulieren. Formulieren zonder vervolg_link tonen geen klikbare URL.

  • [#2535]: klantcontacten_for_partij in de OpenKlant2-service verwerkt nu robuust klantcontacten waarbij _expand.hadBetrokkenen ontbreekt of een onverwachte structuur heeft. Dergelijke items worden overgeslagen (met een waarschuwing in de log) in plaats van dat er helemaal niets getoond wordt.

  • [#2447]: De status van een zaak wordt nu correct bijgewerkt in de zakenlijst wanneer een ZGW-backend (bijv. eSuite) een bestaand statusobject aanpast zonder het URL te wijzigen. De cache-timeout van fetch_single_status is gelijkgesteld aan CACHE_ZGW_ZAKEN_TIMEOUT (standaard 300 seconden), zodat de zakenlijst dezelfde versheid garandeert als de zaakdetailpagina.

  • [#2289] Validate content-length in ZGW document downloads to prevent broken downloads when the backend returns error messages instead of file content.

  • [#2445]: Ongeldige inhoud in TextPlugin-velden (lege of platte tekst opgeslagen als JSON-string) wordt nu automatisch hersteld via een datamigatie. De CMS-wizard vult het tekstveld niet langer voor, zodat nieuwe corruptie wordt voorkomen.

  • [#2465]: CKEDITOR_CONFIGS aan de configuratie is toegevoegd om te voorkomen dat de opmaak van e-mailsjablonen verloren gaat bij het opslaan. Het beheeropdracht ‘find_modified_mail_templates’ is toegevoegd om e-mailsjablonen op te sporen en te melden die mogelijk beschadigd zijn.

  • [#2450]: De ProseMirror-migraties zijn aangepast om directe toewijzing van niet-JSON-inhoud te voorkomen.

  • [#2449]: Het ‘formaat’ van een bestand wordt ingesteld op het inhoudstype van de upload wanneer het naar een zaak wordt geüpload, zodat er een voorbeeld beschikbaar komt.

  • [#2438]: Lange bestandsnamen in notificaties worden nu correct afgebroken zodat ze niet buiten de notificatie vallen.

  • [#2443]: De zaaknotificatie-handler hield geen rekening met de instelling Rollen ophalen per betrokkene type. Wanneer deze instelling actief is, worden rollen nu ook bij het verwerken van zaaknotificaties apart opgevraagd per betrokkene type (natuurlijk persoon, niet-natuurlijk persoon, vestiging), zodat backends die verzoeken voor interne typen (medewerker, organisatorische eenheid) afwijzen geen problemen meer veroorzaken.

Onderhoud

  • Verschillende libraries bijgewerkt: pyopenssl (25.1.0 → 26.2.0), cbor2 (5.8.0 → 6.1.1), cryptography (45.0.7 → 48.0.0), urllib3 (2.6.3 → 2.7.0), python-dotenv (1.0.1 → 1.2.2), pytest (8.1.1 → 9.0.3), wheel (0.42.0 → 0.45.1), filelock (3.18.0 → 3.29.0), pygments (2.19.2 → 2.20.0), requests (2.32.5 → 2.34.2), virtualenv (20.34.0 → 21.4.1) en Django (5.2.13 → 5.2.14).

  • [#2414]: ClamAV Python-client (clamd) toegevoegd.

  • [#2455]: django-admin-index bijgewerkt naar versie 4.0.0.

  • [#2366, #2371]: Django bijgewerkt naar versie 5.2, samen met easy-thumbnails (2.10.1), django-debug-toolbar (6.3.0), django-silk (5.5.0) en django-cms (4.1.10).

  • [#2481]: zizmor toegevoegd aan de CI-pipeline voor automatische beveiligingsanalyse van GitHub Actions-workflows.

  • [#2499]: Python bijgewerkt naar versie 3.13.

  • [#2501]: Alle logica met betrekking tot ZGW is gecentraliseerd in de nieuwe ZGWService in openzaak/services.py. Een linting-regel zorgt ervoor dat MultiZgwClientProxy alleen wordt geïmporteerd in openzaak-modules die deze klasse nodig hebben. Andere sites moeten in plaats daarvan de nieuwe ZGWService gebruiken. Verbeterde testdekking door het toevoegen van tests voor ZGWService.

  • [#2494]: Uitloglink vervangen door een formulierknop (POST) conform Django 5-vereisten.

  • [#2142]: Foutafhandeling in API-clients verbeterd: fouten worden nu doorgegeven als getypeerde uitzonderingen in plaats van stilzwijgend onderdrukt. Bij het ophalen van zaakgegevens geeft een tijdelijke servicefout nu een duidelijke melding met de optie om het later opnieuw te proberen.

  • Verschillende afhankelijkheden bijgewerkt: pyopenssl (25.1.0 → 26.2.0), cbor2 (5.8.0 → 6.1.1), cryptography (45.0.7 → 48.0.0), urllib3 (2.6.3 → 2.7.0), python-dotenv (1.0.1 → 1.2.2), pytest (8.1.1 → 9.0.3), Django (5.2.13 → 5.2.14), filelock (3.18.0 → 3.29.0), markdown (3.3.6 → 3.10.2), pygments (2.19.2 → 2.20.0), requests (2.32.5 → 2.34.2) en virtualenv (20.34.0 → 21.4.1).

  • [#2491]: maykin-django-prosemirror bijgewerkt naar versie 0.7.0.

  • [CVE-2026-41305] postcss bijgewerkt naar versie (8.5.6 → 8.5.10)

  • [#2543]: Nederlandse vertalingen bijgewerkt: ontbrekende vertalingen toegevoegd, verouderde (obsolete) vermeldingen verwijderd en fuzzy vertalingen gecorrigeerd.

2.2.0 (2026-04-20)

Voor een volledig overzicht van alle commits, zie v2.2.0.

Deployment aandachtspunten

  • [#2362]: De omgevingsvariabele BRP_VERSION is vervangen door een instelbaar veld in de beheeromgeving. De upgrade verloopt automatisch: de waarde van BRP_VERSION wordt bij de migratie overgenomen en er is geen handmatige actie vereist. De omgevingsvariabele kan na de upgrade worden verwijderd.

  • [#2365]: Django CMS is bijgewerkt van versie 3 naar versie 4. Na het uitrollen dient het commando manage.py cms4_migration eenmalig te worden uitgevoerd om de CMS 3-gegevens te migreren naar het CMS 4-datamodel. Zonder dit commando is de site niet bruikbaar.

    Voor redacteuren en beheerders zijn de volgende werkwijzen gewijzigd:

    • Statische aliassen (voorheen statische placeholders): deze kunnen niet langer worden bewerkt via het pluginmenu van een pagina. Gebruik hiervoor de optie [Aliassen] in de CMS-werkbalk.

    • Publiceren: wijzigingen aan een pagina worden niet langer automatisch zichtbaar voor bezoekers na het opslaan. Er wordt nu altijd een conceptversie aangemaakt die expliciet gepubliceerd moet worden via [Publiceer veranderingen in de pagina].

Nieuwe features

  • [#2211]: Elasticsearch ondersteunt nu HTTP basic authenticatie via de omgevingsvariabelen ES_USERNAME en ES_PASSWORD. Wanneer beide zijn ingesteld, wordt de verbinding met Elasticsearch beveiligd met een gebruikersnaam en wachtwoord. De Docker Compose- en CI-configuratie zijn bijgewerkt om xpack.security.enabled in te schakelen.

  • [#2353]: Bij het uploaden van een document naar een zaak wordt de bestandsextensie nu verwijderd uit de documenttitel (bijv. rapport.pdf krijgt als titel rapport). De bestandsextensie in de documentenlijst wordt nu afgeleid van het formaat-veld (en als fallback bestandsnaam) in plaats van de titel, zodat de extensie correct wordt weergegeven ook wanneer eSuite het document heeft omgezet naar PDF/A. Daarnaast is de interne weergave van bestanden in templates gerefactored om de conversielogica te centraliseren en de templatetags eenvoudiger te maken.

  • [#2268]: WCAG toegankelijkheidsverbeteringen uit rapport gemeente Enschede toegepast.

  • [#2362]: De integratie met de Haal Centraal BRP API is uitgebreid en flexibeler gemaakt. De API-versie is nu instelbaar via de beheeromgeving in plaats van een omgevingsvariabele; ondersteunde versies zijn 1.3 en 2.0 t/m 2.7. De vaste, leverancierspecifieke request-headers (I Connect en Centric) zijn vervangen door een vrij configureerbaar sleutel/waarde-overzicht; bestaande headerwaarden worden automatisch gemigreerd.

  • [#2365]: django-cms bijgewerkt naar versie 4.1.3.

Bugfixes

  • CI: --concurrency=multiprocessing toegevoegd aan de coverage-run voor migratietests, zodat coverage ook de testmethoden in parallelle subprocessen correct registreert.

  • [#2411]: SSL-certificaatvalidatie werd ten onrechte uitgeschakeld bij verzoeken aan de Haal Centraal BRP API. Dit is gecorrigeerd; verzoeken valideren nu standaard het servercertificaat.

  • [#2384]: Foutieve verwijzingen naar case (in plaats van zaak) in de zaakstatus template zijn gecorrigeerd. Dit veroorzaakte onjuiste weergave van de afsluitende status, resultaatomschrijving en upload-knop in de zaakdetailpagina.

  • [#2331]: Een fout bij het synchroniseren van gebruikersgegevens met eSuite of OpenKlant2 tijdens registratie blokkeert de registratie niet langer. De fout wordt gelogd en de registratie wordt succesvol afgerond.

  • [#2355]: De importeer-views voor catalogus- en zaaktype-configuraties controleren nu of de gebruiker wijzigingsrechten heeft op het betreffende model, in plaats van enkel te vereisen dat de gebruiker een beheerdersaccount heeft.

  • [#2332]: KVK-nummer en vestigingsnummer worden nu beide meegestuurd naar het ZGW-backend bij het ophalen van zaken voor een eHerkenning-gebruiker met een vestiging, in plaats van alleen het vestigingsnummer.

  • [#2329]: attr_consuming_service_index wordt nu correct doorgegeven als queryparameter aan de eHerkenning SAML loginpagina, op basis van de waarde in de eHerkenning configuratie. Het ontbreken hiervan kon leiden tot authenticatiefouten.

  • [#2326]: Correctie van Nederlandse vertalingen voor ‘verwerking’ header in Haalcentraal BRP configuratie (was onjuist vertaald als ‘doelbinding’).

  • [#2323]: Correctie van Centric BRP HTTP header namen voor iConnect integratie (gebruik van ‘x-request-’ in plaats van ‘x-requests-‘).

  • [#2290]: Correctie van cache key voor fetch_zaak_roles om betrokkene_type parameter op te nemen, waardoor verkeerde cache hits worden voorkomen.

  • [#2294]: Aangepaste Sentry processor voor structlog geïmplementeerd om uitzonderingen efficiënter te loggen. De processor voorkomt database-toegang en serialisatie-fouten tijdens foutafhandeling door niet-primitieve types om te zetten naar veilige placeholders. Bevat recursie-bescherming en uitgebreide tests.

  • [#2278]: Correctie in de sortering zaken. Alle zaken worden nu gesorteerd op startdatum.

  • [#2309]: Uitlijning melding “Registratie voltooid” zonder banner afbeelding opgelost.

  • [#2307] Correctie van ProseMirror velden in zaakstatus templates om HTML correct weer te geven. status.description en document_upload_description gebruiken nu het prosemirror_content filter in plaats van direct de .html property of zonder filter, zodat opmaak (vet, cursief, links) correct wordt gerenderd.

  • [#2298]: Verbeterde foutafhandeling voor vragen en antwoorden in OpenKlant2, zodat één foutief geformuleerde vraag of antwoord niet verhindert dat de overige vragen en antwoorden worden weergegeven.

  • [#2305]: Mijn Zaken overzicht blijft niet meer hangen op een spinner wanneer er een fout optreedt.

  • [#2320]: Verbeterde controles op de rol van betrokkenen: gebruikers hebben alleen toegang tot een zaak en worden alleen op de hoogte gebracht van wijzigingen in een zaak als ze de juiste rol hebben.

  • [#2257]: Probleem opgelost waarbij de eerste rij van een productteksttabel altijd een header-rij is, ook wanneer dit was uitgeschakeld.

  • [#2358]: Probleem opgelost waarbij identieke telefoonnummers gesynchroniseerd vanuit eSuite een databasefout veroorzaakten, hetgeen tot een situatie kon leiden waarbij gebruikers bij het inloggen onterecht een melding kregen dat ze niet goed waren ingelogd (terwijl dit wel het geval is, en de fout met de synchronisatie te maken had, niet het inloggen). Het alternatieve nummer wordt nu geleegd als het gelijk is aan het primaire nummer.

  • [#2378]: Probleem opgelost waar markdown in ssd uitkering pdf niet correct wordt gerenderd.

  • [#2416]: Beheerpagina’s voor gebruikers, plannen en uitnodigingen konden vastlopen of crashen op productie wanneer er veel gebruikers in het systeem staan. De keuzelijsten voor contacten, categorieën, plandeelnemers en uitnodigingen laden nu alleen zoekresultaten op aanvraag in plaats van alle records tegelijk in te laden.

  • [#2390]: Probleem opgelost waarbij de hoogte van de waarschuwingsbanner onjuist werd weergegeven.

  • [#2398]: Probleem opgelost waarbij DigiD-gebruikers na uitloggen werden doorgestuurd naar een niet-bestaande URL wanneer OIDC niet was ingeschakeld. Omdat de single logout-functie van DigiD SAML is komen te vervallen, wordt de DigiD-sessie niet langer actief beëindigd en worden gebruikers nu correct doorgestuurd naar de standaard uitlogpagina.

  • [#2426]: De zaakstatus feedmelding toont de statusomschrijving nu tussen dubbele aanhalingstekens (bijv. "Aanvraag is in behandeling") in plaats van een HTML <span>-element.

  • Correctie aangebracht in de controle van ‘request.path’ bij het ophalen van menu-items voor de ‘SideMenu’.

  • [#2421]: verbeterde foutafhandeling voor de SSD-app: geldige XML-respons met ‘fwi’ (fout, waarschuwing, informatie) wordt nu correct verwerkt.

Onderhoud

  • [#2364]: Nederlandse vertalingen bijgewerkt: ontbrekende vertalingen toegevoegd, verouderde (obsolete) vermeldingen verwijderd en fuzzy vertalingen gecorrigeerd. format_lazy toegepast in het BRP-versieveld om te voorkomen dat de actieve taal wordt ingebakken in migraties.

  • [#2283]: De grafiek en filters op de Mijn Afval pagina zijn niet meer zichtbaar wanneer er geen data beschikbaar is.

  • [#2303, CVE-2026-29074, CVE-2026-29063]: cssnano bijgewerkt om CVE-2026-29074 te mitigeren en immutable override bijgewerkt om CVE-2026-29063 te mitigeren.

  • [#2314, CVE-2026-32597]: PyJWT bijgewerkt naar versie 2.10.1 om kwetsbaarheid in crit header te mitigeren.

  • [#2295]: Zaken-kaartjes op de homepage gebruiken nu het arrow_forward icoon en hebben een gelijke hoogte.

  • [#2318]: vitest en @vitest/ui bijgewerkt naar versie 4.1.0.

  • [#2372]: typing-extensions bijgewerkt naar versie 4.15.0.

  • [#2395]: Django bijgewerkt naar versie 4.2.30.

  • [#2409]: De web component-architectuur is gerefactored om shadow DOM te ondersteunen. Componenten (Accordion, Action, ActionList, Chart) beschikken nu over factory-functies die een web component registreren. De testopzet is herschreven: gedeelde test-utilities zijn ondergebracht in react/lib/testing/, Storybook-decorators en web component-decorators zijn gesplitst in afzonderlijke modules, en de Vitest-configuratie is bijgewerkt. Daarnaast zijn de CI-workflow en Storybook-configuratie samengevoegd en gemoderniseerd.

  • [#2412, CVE-2026-39364, CVE-2026-4800]: vite bijgewerkt naar versie 7.3.2.

  • storybook bijgewerkt naar versie 10.3.5.

  • lodash bijgewerkt naar versie 4.18.1.

  • lodash-es override bijgewerkt om CVE-2026-4800 te mitigeren.

  • maykin-django-prosemirror bijgewerkt naar versie 0.6.0.

  • [#2370]: djangocms-link bijgewerkt naar versie 5.1.1.

  • [#2370]: djangocms-file verwijderd.

2.1.2 (2026-05-22)

Voor een volledig overzicht van alle commits, zie v2.1.2.

Deployment aandachtspunten

  • [#2465]: E-mailsjablonen die handmatig zijn bewerkt en opgeslagen via het beheerscherm kunnen opmaak zijn kwijtgeraakt. Dit is een gevolg van een migratieprobleem bij de Django Prosemirror-upgrade (geïntroduceerd in release 2.0.0) dat nu pas aan het licht is gekomen. Installaties die zijn geüpgraded naar versie 2.1.0 of hoger en sindsdien e-mailsjablonen hebben bewerkt, kunnen door dit probleem zijn getroffen.

    Controleer na de upgrade of de opmaak van uw e-mailsjablonen intact is. Voer het management command find_modified_mail_templates uit voor een overzicht van mogelijk aangetaste sjablonen, of controleer alle sjablonen visueel via het beheerscherm (via “Configuratie → Mail templates”). Herstel aangetaste sjablonen op één van de volgende manieren:

    • Open het sjabloon in de productieomgeving (op een versie vóór 2.1.0) via de Broncode-knop en kopieer de broncode. Open vervolgens hetzelfde sjabloon in de acceptatieomgeving via de Broncode-weergave en plak de gekopieerde inhoud daar in. Dit werkt alleen als de productieomgeving nog op een versie vóór 2.1.0 draait; vanaf 2.1.0 is de opmaak mogelijk al verwijderd.

    • Of: Herstel naar de standaardopmaak via Actie → Reset templates en pas daarna de gewenste aanpassingen opnieuw toe.

Bugfixes

  • [#2447]: De status van een zaak wordt nu correct bijgewerkt in de zakenlijst wanneer een ZGW-backend (bijv. eSuite) een bestaand statusobject aanpast zonder het URL te wijzigen. De cache-timeout van fetch_single_status is gelijkgesteld aan CACHE_ZGW_ZAKEN_TIMEOUT (standaard 60 seconden), zodat de zakenlijst dezelfde versheid garandeert als de zaakdetailpagina.

  • [#2411]: SSL-certificaatvalidatie werd ten onrechte uitgeschakeld bij verzoeken aan de Haal Centraal BRP API. Dit is gecorrigeerd; verzoeken valideren nu standaard het servercertificaat.

  • [#2465]: CKEDITOR_CONFIGS is toegevoegd aan de configuratie om te voorkomen dat de opmaak van e-mailsjablonen verloren gaat bij het opslaan. Het beheercommando find_modified_mail_templates is toegevoegd om e-mailsjablonen op te sporen die mogelijk beschadigd zijn.

  • [#2450]: De ProseMirror-migraties zijn aangepast om directe toewijzing van niet-JSON-inhoud te voorkomen.

  • [#2384]: Foutieve verwijzingen naar case (in plaats van zaak) in de zaakstatus template zijn gecorrigeerd. Dit veroorzaakte onjuiste weergave van de afsluitende status, resultaatomschrijving en upload-knop in de zaakdetailpagina.

  • [#2416]: Beheerpagina’s voor gebruikers, plannen en uitnodigingen konden vastlopen of crashen op productie wanneer er veel gebruikers in het systeem staan. De keuzelijsten voor contacten, categorieën, plandeelnemers en uitnodigingen laden nu alleen zoekresultaten op aanvraag in plaats van alle records tegelijk in te laden.

  • [#2390]: Probleem opgelost waarbij de hoogte van de waarschuwingsbanner onjuist werd weergegeven.

  • [#2320]: Verbeterde controles op de rol van betrokkenen: gebruikers hebben alleen toegang tot een zaak en worden alleen op de hoogte gebracht van wijzigingen in een zaak als ze de juiste rol hebben.

  • [#2426]: De zaakstatus feedmelding toont de statusomschrijving nu tussen dubbele aanhalingstekens (bijv. "Aanvraag is in behandeling") in plaats van een HTML <span>-element.

Onderhoud

  • [#2395]: Django bijgewerkt naar versie 4.2.30.

  • maykin-django-prosemirror bijgewerkt naar versie 0.6.0.

  • lodash bijgewerkt naar versie 4.18.1.

2.1.2-rc2 (2026-05-13)

Voor een volledig overzicht van alle commits, zie v2.1.2-rc2.

Note

Dit is een release candidate, bedoeld voor beoordeling en kwaliteitsborging. Deze versie is niet bestemd voor productie. Feedback wordt verwerkt in een volgende RC, of - als er geen problemen worden gevonden - resulteert dit in een definitieve release.

Bugfixes

  • [#2426]: De zaakstatus feedmelding toont de statusomschrijving nu tussen dubbele aanhalingstekens (bijv. "Aanvraag is in behandeling") in plaats van een HTML <span>-element.

2.1.2-rc1 (2026-05-12)

Voor een volledig overzicht van alle commits, zie v2.1.2-rc1.

Note

Dit is een release candidate, bedoeld voor beoordeling en kwaliteitsborging. Deze versie is niet bestemd voor productie. Feedback wordt verwerkt in een volgende RC, of - als er geen problemen worden gevonden - resulteert dit in een definitieve release.

Deployment aandachtspunten

  • [#2465]: E-mailsjablonen die handmatig zijn bewerkt en opgeslagen via het beheerscherm kunnen opmaak zijn kwijtgeraakt. Dit is een gevolg van een migratieprobleem bij de Django Prosemirror-upgrade (geïntroduceerd in release 2.0.0) dat nu pas aan het licht is gekomen. Installaties die zijn geüpgraded naar versie 2.1.0 of hoger en sindsdien e-mailsjablonen hebben bewerkt, kunnen door dit probleem zijn getroffen.

    Controleer na de upgrade of de opmaak van uw e-mailsjablonen intact is. Voer het management command find_modified_mail_templates uit voor een overzicht van mogelijk aangetaste sjablonen, of controleer alle sjablonen visueel via het beheerscherm (via “Configuratie → Mail templates”). Herstel aangetaste sjablonen op één van de volgende manieren:

    • Open het sjabloon in de productieomgeving (op een versie vóór 2.1.0) via de Broncode-knop en kopieer de broncode. Open vervolgens hetzelfde sjabloon in de acceptatieomgeving via de Broncode-weergave en plak de gekopieerde inhoud daar in. Dit werkt alleen als de productieomgeving nog op een versie vóór 2.1.0 draait; vanaf 2.1.0 is de opmaak mogelijk al verwijderd.

    • Of: Herstel naar de standaardopmaak via Actie → Reset templates en pas daarna de gewenste aanpassingen opnieuw toe.

Bugfixes

  • [#2447]: De status van een zaak wordt nu correct bijgewerkt in de zakenlijst wanneer een ZGW-backend (bijv. eSuite) een bestaand statusobject aanpast zonder het URL te wijzigen. De cache-timeout van fetch_single_status is gelijkgesteld aan CACHE_ZGW_ZAKEN_TIMEOUT (standaard 60 seconden), zodat de zakenlijst dezelfde versheid garandeert als de zaakdetailpagina.

  • [#2411]: SSL-certificaatvalidatie werd ten onrechte uitgeschakeld bij verzoeken aan de Haal Centraal BRP API. Dit is gecorrigeerd; verzoeken valideren nu standaard het servercertificaat.

  • [#2465]: CKEDITOR_CONFIGS is toegevoegd aan de configuratie om te voorkomen dat de opmaak van e-mailsjablonen verloren gaat bij het opslaan. Het beheercommando find_modified_mail_templates is toegevoegd om e-mailsjablonen op te sporen die mogelijk beschadigd zijn.

  • [#2450]: De ProseMirror-migraties zijn aangepast om directe toewijzing van niet-JSON-inhoud te voorkomen.

  • [#2384]: Foutieve verwijzingen naar case (in plaats van zaak) in de zaakstatus template zijn gecorrigeerd. Dit veroorzaakte onjuiste weergave van de afsluitende status, resultaatomschrijving en upload-knop in de zaakdetailpagina.

  • [#2416]: Beheerpagina’s voor gebruikers, plannen en uitnodigingen konden vastlopen of crashen op productie wanneer er veel gebruikers in het systeem staan. De keuzelijsten voor contacten, categorieën, plandeelnemers en uitnodigingen laden nu alleen zoekresultaten op aanvraag in plaats van alle records tegelijk in te laden.

  • [#2390]: Probleem opgelost waarbij de hoogte van de waarschuwingsbanner onjuist werd weergegeven.

  • [#2320]: Verbeterde controles op de rol van betrokkenen: gebruikers hebben alleen toegang tot een zaak en worden alleen op de hoogte gebracht van wijzigingen in een zaak als ze de juiste rol hebben.

Onderhoud

  • [#2395]: Django bijgewerkt naar versie 4.2.30.

  • maykin-django-prosemirror bijgewerkt naar versie 0.6.0.

  • lodash bijgewerkt naar versie 4.18.1.

2.1.1 (2026-03-19)

Voor een volledig overzicht van alle commits, zie v2.1.1.

Bugfixes

  • [#2332]: KVK-nummer en vestigingsnummer worden nu beide meegestuurd naar het ZGW-backend bij het ophalen van zaken voor een eHerkenning-gebruiker met een vestiging, in plaats van alleen het vestigingsnummer.

  • [#2329]: attr_consuming_service_index wordt nu correct doorgegeven als queryparameter aan de eHerkenning SAML loginpagina, op basis van de waarde in de eHerkenning configuratie. Het ontbreken hiervan kon leiden tot authenticatiefouten.

  • [#2326]: Correctie van Nederlandse vertalingen voor ‘verwerking’ header in Haalcentraal BRP configuratie (was onjuist vertaald als ‘doelbinding’).

  • [#2323]: Correctie van Centric BRP HTTP header namen voor iConnect integratie (gebruik van ‘x-request-’ in plaats van ‘x-requests-‘).

  • [#2301]: De fetch_rollen_with_betrokkene_type instelling wordt nu ook toegepast bij het ophalen van zaakrollen via fetch_case_roles, fetch_case_roles_for_eherkenning_user en fetch_case_roles_for_vestiging.

  • [#2290]: Correctie van cache key voor fetch_zaak_roles om betrokkene_type parameter op te nemen, waardoor verkeerde cache hits worden voorkomen.

  • [#2307] Correctie van ProseMirror velden in zaakstatus templates om HTML correct weer te geven. status.description en document_upload_description gebruiken nu het prosemirror_content filter in plaats van direct de .html property of zonder filter, zodat opmaak (vet, cursief, links) correct wordt gerenderd.

Onderhoud

  • [#2314, CVE-2026-32597]: PyJWT bijgewerkt naar versie 2.10.1 om kwetsbaarheid in crit header te mitigeren.

2.1.0 (2026-03-04)

Voor een volledig overzicht van alle commits, zie v2.1.0.

Deployment aandachtspunten

  • [#2156]: De omgevingsvariabele OIDC_RENEW_ID_TOKEN_EXPIRY_SECONDS is nu beschikbaar om de sessie-vernieuwingsinterval voor OpenID Connect (DigiD/eHerkenning) te configureren. De standaardwaarde is 900 seconden (15 minuten). Zie hoofdstuk 10 van de beheerhandleiding voor meer informatie.

  • [#2130]: Er zijn nu gestandardiseerde HTTP healthchecks beschikbaar voor gebruik in Docker/Kubernetes. Zie de documentatie over health checks.

Nieuwe features

  • [#3607, PR 2075, PR 2079, PR 2193]: Basisapp ‘Mijn Afval’ geïmplementeerd en geïntegreerd met Django CMS.

  • [#2101, PR 30, PR 34]: Styling van tegels op de Home pagina en van externe-links plugin op de Home pagina overgezet naar design-tokens zodat deze volgens de NLDS principes gebruikt kunnen worden.

  • [#2098, #2177]: Nieuw accordion web component toegevoegd dat gebruikt wordt in Mijn Afval.

  • [#2096, PR 32]: Table component toegevoegd ten behoeve van de ‘Mijn Afval’ app inclusief NL Design-System design-tokens.

  • [#2099] De OIP Storybook is nu beschikbaar via GitHub pages.

  • [#2130]: Er zijn nu gestandardiseerde HTTP healthchecks beschikbaar voor gebruik in Docker/Kubernetes.

  • [#2113]: Diagram (chart.js) toegevoegd ten behoeve van de ‘Mijn Afval’ app.

  • [#2119, #2182, PR 2151]: API-client en configuratie voor ‘Mijn Afval’ aangemaakt.

  • [#2157, #2205]: Toon het nieuwste antwoord op OpenKlant-vragen.

  • [#2220, PR 40]: De community-versie van het NL Design System File-component, waarmee een bestand kan worden weergegeven, is toegevoegd aan de Samenwerkingen-detailpagina, de Samenwerkingen-preview pop-up, de Actie-bewerkpagina en de Acties-overzichtslijst.

  • [#2192, PR 2195, PR 2200]: Filters voor ‘Mijn Afval’ geïmplementeerd.

  • [#2156]: Omgevingsvariabele OIDC_RENEW_ID_TOKEN_EXPIRY_SECONDS toegevoegd om de sessie-vernieuwingsinterval voor OpenID Connect (DigiD/eHerkenning) te configureren. OIDC-foutmeldingen vereenvoudigd om alleen op foutcode te matchen. Nederlandse foutmeldingen voor DigiD en eHerkenning verbeterd.

  • [#2247]: Documentatie toegevoegd voor het configureren van de Takenlijst CMS plugin in de beheerhandleiding. Pydantic modellen voor externe taken herzien om field conflicts op te lossen: record data (ExternFormulierTaakRecord, UrlTaakRecord) gescheiden van Objects API envelope models (ExternFormulierTaakObject, UrlTaakObject).

  • [#2255]: Titels en tabellen toegevoegd aan de product-veelgestelde-vragen tekstopties.

  • [#2280]: Verbeteringen doorgevoerd aan de Mijn Taken-plugin op de homepagina. De titel heeft extra spacing gekregen, kaartjes openen nu in een nieuw tabblad en de aanduiding ‘Soort:’ is verwijderd.

  • [#2254] Shift+Enter voegt nu een hard break (br) toe in alle ProseMirror-velden.

Bugfixes

  • [#2091]: Beheerders toestaan om uit te loggen via frontend.

  • [#2131]: Probleem met vite bundler opgelost waardoor de marker van de kaart weer correct wordt geladen.

  • [#2125]: django-digid-eherkenning bijgewerkt naar custom release zodat de juiste DigiD SAML Foutmeldingen worden gebruikt.

  • [#2191]: Foutmelding opgelost in Afval Profiel pagina waar messages.error() en messages.info() zonder verplicht request argument werden aangeroepn.

  • [#2209, PR 2213]: Ckeditor opnieuw toegevoegd aan INSTALLED_APPS voor compatibiliteit met mail-editor.

  • [#2214]: Datamigratie toegevoegd die oude djangocms_text_ckeditor_text tabel opruimt door CKEditor TextPlugin instanties te migreren naar het nieuwe Prosemirror formaat. HTML content wordt geconverteerd naar Prosemirror’s JSON structuur, met fallback strategieën voor ongeldige HTML. Na succesvolle migratie wordt de oude tabel verwijderd.

  • [#2208]: Link plugin rendert nu correct HTML uit ProsemirrorModelField in plaats van markup als tekst weer te geven.

  • [#2210]: Exports en imports van de ZGW catalogi via bestanden gaat nu correct om met prosemirror velden. Tevens zullen via een datamigratie de bestaande velden in de ZGW catalogus gechecked worden op valide waarden voor de prosemirror velden.

  • [#2212]: referrerpolicy="strict-origin-when-cross-origin" toegevoegd aan de video iframe om het site-brede referrerbeleid te overschrijven voor dit specifieke element.

  • [#2256]: Probleem opgelost waarbij externe link-iconen bij product-veelgestelde vragen ontbraken.

  • [#2263]: Het woord ‘E-mailmeldingen’ is onterecht met een hoofdletter is geschreven in de zaakmeldingen optie.

Onderhoud

  • [#3615]: zgw-klassen, methoden en variabelen hernoemd om Nederlandse termen te gebruiken

  • [#2126, CVE-2026-27148]: storybook en storybook plugins bijgewerkt naar versie 10.2.14.

  • [#2112] README.rst bijgewerkt met Storybook link en correctie in badges en copyright.

  • [#2104]: Verwijderen in ongebruik geraakte NPM dependencies, jest en karma test suite en configuratie (karma.conf.js) en configuratie bestanden (stylelint.rc, .babelrc en .jshintrc).

  • [#2166]: weasyprint bijgewerkt naar versie 0.68.

  • [#2179, CVE-2025-13465]: @utrecht/component-library-react bijgewerkt naar versie 13.0.0.

  • [#2198, PR 2197]: Django bijgewerkt naar versie 4.2.28.

  • Django bijgewerkt naar versie 4.2.29.

  • [#2206, PR 2207]: setuptools bijgewerkt naar versie <81.

  • [#2178, CVE-2023-44270]: autoprefixer bijgewerkt naar versie 10.4.23.

  • [#2181]: Alle (huidige) postcss waarschuwingen opgelost.

  • [PR 2226]: Verwijderde dubbele vermeldingen uit changelog.

  • [#2228]: vite configuratie verbeterd.

  • [#2232]: Bijgewerkte admin index-fixture.

  • [#2082]: Elasticsearch-verbindingscache gewist in tests.

  • [#2251, CVE-2026-27606]: rollup bijgewerkt naar versie ^4.59.0.

  • urllib3 bijgewerkt naar versie 2.6.3.

  • protobuf bijgewerkt naar versie 6.33.5.

  • sqlparse bijgewerkt naar versie 0.5.5.

2.0.4 (2026-03-19)

Voor een volledig overzicht van alle commits, zie v2.0.4.

Bugfixes

  • [#2307] Correctie van ProseMirror velden in zaakstatus templates om HTML correct weer te geven. status.description en document_upload_description gebruiken nu het prosemirror_content filter in plaats van direct de .html property of zonder filter, zodat opmaak (vet, cursief, links) correct wordt gerenderd.

  • [#2323]: Correctie van Centric BRP HTTP header namen voor iConnect integratie (gebruik van ‘x-request-’ in plaats van ‘x-requests-‘).

  • [#2326]: Correctie van Nederlandse vertalingen voor ‘verwerking’ header in Haalcentraal BRP configuratie (was onjuist vertaald als ‘doelbinding’).

  • [#2280]: Verbeteringen doorgevoerd aan de Mijn Taken-plugin op de homepagina. De titel heeft extra spacing gekregen, kaartjes openen nu in een nieuw tabblad en de aanduiding ‘Soort:’ is verwijderd.

  • [#2332]: KVK-nummer en vestigingsnummer worden nu beide meegestuurd naar het ZGW-backend bij het ophalen van zaken voor een eHerkenning-gebruiker met een vestiging, in plaats van alleen het vestigingsnummer.

Onderhoud

  • [#2314, CVE-2026-32597]: PyJWT bijgewerkt naar versie 2.10.1 om kwetsbaarheid in crit header te mitigeren.

  • Django bijgewerkt naar 4.2.29.

2.0.3 (2026-02-20)

Voor een volledig overzicht van alle commits, zie v2.0.3.

Bugfixes

  • [#2206]: setuptools versie vastgezet op <81 om pkg_resources beschikbaar te houden voor legacy dependencies (django-axes, django-formtools).

  • [#2214]: Datamigratie toegevoegd die oude djangocms_text_ckeditor_text tabel opruimt door CKEditor TextPlugin instanties te migreren naar het nieuwe Prosemirror formaat. HTML content wordt geconverteerd naar Prosemirror’s JSON structuur, met fallback strategieën voor ongeldige HTML. Na succesvolle migratie wordt de oude tabel verwijderd.

  • [#2208]: Link plugin rendert nu correct HTML uit ProsemirrorModelField in plaats van markup als tekst weer te geven.

  • [#2210]: Exports en imports van de ZGW catalogi via bestanden gaat nu correct om met prosemirror velden. Tevens zullen via een datamigratie de bestaande velden in de ZGW catalogus gechecked worden op valide waarden voor de prosemirror velden.

  • [#2209, PR 2213]: Ckeditor opnieuw toegevoegd aan INSTALLED_APPS voor compatibiliteit met mail-editor.

2.0.2 (2026-01-27)

Voor een volledig overzicht van alle commits, zie v2.0.2.

Bugfixes

  • [#2166]: weasyprint bijgewerkt naar versie 0.68.

2.0.1 (2026-01-26)

Voor een volledig overzicht van alle commits, zie v2.0.1.

Bugfixes

  • [#2116]: Naamgeving conflict tussen Prosemirror en Leaflet opgelost, waardoor de Prosemirror editor op alle pagina’s naar verwachting werkt.

  • [#2107]: Productie logs worden weggeschreven als JSON voor gebruik in log analyse tools.

  • [#2158]: PDC product content editor mag nu ook lijsten gebruiken.

  • [#2164, CVE-2026-22028] preact bijgewerkt naar versie 10.27.3.

2.0.0 (2026-01-05)

Voor een volledig overzicht van alle commits, zie v2.0.0.

Deployment aandachtspunten

  • OpenTelemetry ondersteuning is toegevoegd voor metrics en logging. De applicatie kan nu telemetrie data exporteren naar een OpenTelemetry collector via gRPC. Configuratie gebeurt via omgevingsvariabelen zoals gedocumenteerd in de OpenTelemetry specificatie. Belangrijke variabelen zijn:

    • OTEL_SDK_DISABLED (standaard: true) - Zet op false om OpenTelemetry te activeren

    • OTEL_EXPORTER_OTLP_ENDPOINT - gRPC endpoint van de OpenTelemetry collector (bijv. http://otel-collector:4317)

    • OTEL_EXPORTER_OTLP_HEADERS - Optionele headers voor authenticatie (bijv. Authorization=Basic ...)

    • OTEL_EXPORTER_OTLP_METRICS_INSECURE (standaard: true) - Sta onveilige verbindingen toe voor development

    De OpenTelemetry SDK is standaard uitgeschakeld en moet expliciet worden geactiveerd per deployment. De applicatie verwacht een gRPC OpenTelemetry collector endpoint.

  • De YAML structuur van django-setup-configuration voor het configureren van het klantensysteem is aangepast. De nieuwe structuur is omschreven in de documentatie.

  • Zaaktype Configuraties die in eerdere versies zijn geëxporteerd, kunnen niet worden geïmporteerd in versie 2.0.0 vanwege wijzigingen in het database formaat. Upgrade eerst uw bronomgeving naar 2.0.0 zodat bron en bestemming hetzelfde formaat hanteren.

  • De vervanging van CKEditor door Prosemirror vereiste het converteren van gegevens in HTML en markdown naar een nieuwe structuur. In sommige gevallen (vooral wanneer de gegevens tabellen of andere geavanceerde elementen bevatten) is de opmaak mogelijk niet behouden gebleven. In deze gevallen blijft de ruwe inhoud van de oorspronkelijke CKEditor behouden zonder opmaak. Controleer de opmaak van de inhoud van de rich text editor, met name voor de onderwerpen en de producten.

  • De database migraties, die tijdens het deployen eenmalig zullen worden uitgevoerd, kunnen langer duren dan normaal voor installaties met een groot aantal gebruikers. Dit is een gevolg van nieuwe database indices die zijn toegevoegd in het kader van de de nieuwe eIDAS ondersteuning.

  • Het aantal requests aan zaken API’s is nu configureerbaar via een omgevingsvariabele ZGW_MAX_REQUESTS (standaardwaarde is 8).

  • De nieuwe omgevingsvariabele OIDC_FRONTEND_LOGOUT_WITH_HINTS (standaard: true) bepaalt of hints zoals id_token_hint en post_logout_redirect_uri worden meegegeven bij OIDC frontend logout redirects. Wanneer het ID token gevoelige claims bevat die niet in de querystring van de user agent mogen verschijnen (bijvoorbeeld voor security compliance), kan deze variabele op false worden gezet om alleen naar het logout endpoint te redirecten zonder aanvullende parameters.

  • Wanneer via de color-picker of in CSS een secundaire kleur wordt ingesteld die anders is dan de primaire kleur (CSS-variabelen --color-primary en --color-secondary) is hier nu een stijl verandering te zien. Call-to-action elementen gebruiken nu altijd de primaire kleur. Hierdoor worden de knoppen in tegels niet langer in een afwijkende secundaire kleur weergegeven.

  • Hou er rekening mee dat de nieuwe frontend web-componenten mogelijk niet meteen correct worden weergegeven bij het initieel laden van de pagina. Zorg dat u in dat geval een zogenaamde “hard refresh” doet om er zeker van te zijn dat de frontend javascript en CSS bestanden opnieuw worden geladen (in meeste browsers is dit de toetsencombinatie Shift/CTRL + F5).

Nieuwe features

  • [#3478, PR 1953, PR 2089]: Extra OpenTelemetry metrics toegevoegd voor account- en profiel gerelateerde acties, zoals aanmeldingen, registraties, uitnodigingen en profielwijzigingen.

  • [#3461, #3473, PR 1932]: Basisinfrastructuur voor OpenTelemetry toegevoegd, inclusief logging en metrics ondersteuning voor observability.

  • [#3408, PR 1881]: Nieuw selectiescherm voor eHerkenning-inlog met zoek- en dropdownfunctie voor betere UX waarmee gewiseld kan worden tussen vestigingen.

  • [#3450, #3454, PR 2067]: CKEditor wordt vervangen door Prosemirror

  • [#3408, PR 1948]: Het selectiescherm voor eHerkenning-inlog met zoek- en dropdownfunctie aan Storybook toegevoegd.

  • [#3499, PR 1962]: WCAG toegankelijkheidsverbeteringen op de Profiel pagina en de zakenoverzichtspagina.

  • [#3492, PR 1960, PR 2001]: Header en logo zijn verkleind; onderwerpen en zoekveld zijn omgewisseld op desktop; mobiele navigatie omgezet naar een overlay; mobiele welkomsttekst hoger geplaatst; welkomsttekst wordt nu los onder de bannerafbeelding weergegeven op desktop.

  • [#3508, PR 1979]: Alle logging aangepast om gebruikt te maken van structlog, waardoor de logging data beter kan worden verwerkt door andere observability tools zoals Grafana.

  • [#3519, PR 1981]: Nieuw design van openstaande acties plugin op de homepagina geïmplementeerd.

  • [#3556, PR 1995]: Uitgaande requests worden nu gelogd als gestructureerde events met structlog, waardoor ze beter verwerkt kunnen worden door observability tools.

  • [#3512, PR 2003]: De taken die worden weergegeven onder ‘Openstaande acties’ en ‘Mijn taken’ zijn nu samengevoegd en worden nu samen weergegeven onder ‘Mijn taken’.

  • [#3321, PR 2008]: Dubbele links in sitemap verwijderd.

  • [#3510, PR 1988, PR 2002]: CMS-plugin toegevoegd voor links naar andere portalen van de gemeente.

  • [#3511, #3583, #3531, PR 1996, PR 2022]: Front-end voor CMS-plugin voor links naar andere portalen gebouwd, inclusief nieuwe design-tokens volgens NLDS conventies. Opmaak is verbeterd voor inhoud met langere linkteksten die naar een nieuwe regel worden afgebroken.

  • [#3509, PR 1997]: Ondersteuning voor eIDAS login via OIDC is toegevoegd.

  • [#3575, PR 2020, PR 2037, PR 2042, PR 2058]: CMS plug-in ‘Mijn Zaken’ aangemaakt voor het ontsluiten van zaken in de startpagina.

  • [#3574, PR 2026]: Aantal requests aan zaken API’s configureerbaar gemaakt via omgevingsvariabele.

  • [#3576, PR 2034]: Front-end voor CMS plug-in ‘Mijn Zaken’ gebouwd met design-tokens volgens het NLDS principe.

  • [#3596, PR 2036]: Hints (zoals id_token_hint en post_logout_redirect_uri) bij OIDC frontend logout zijn nu optioneel configureerbaar via de omgevingsvariabele OIDC_FRONTEND_LOGOUT_WITH_HINTS. Dit voorkomt dat gevoelige claims in de querystring van de user agent terechtkomen, wat belangrijk kan zijn voor security audits (zoals PENTests) van bijvoorbeeld DigiD. Standaard blijven de hints ingeschakeld om het huidige gedrag te behouden.

  • [#3580, PR 2033]: De zoekfunctie kan nu worden uitgeschakeld in de Algemene Configuratie.

  • [#3600, PR 2046]: ‘Signing requests’ toegevoegd aan admin. Beheerders kunnen nu een CSR (Certificate Signing Request) genereren in de admin via ‘Datakoppelingen > Ondertekeningsverzoeken’.

  • [#3579, PR 2049, PR 2056, PR 2064]: Het commando om de ZGW Catalogus te importeren geeft nu uitgebreidere informatie (bijvoorbeeld welke zaaktypes wel zijn ontvangen maar niet gesynchroniseerd vanwege een geconfigureerd filter), en zorgt ervoor dat alle velden uit de API correct worden overgenomen in de lokale versie van de catalogus. ZGW objecten die niet meer in de API gevonden worden, worden nu gemarkeerd met een found_in_api vlag zodat verweesde configuratie makkelijk kan worden geïdentificeerd.

  • [#3578, PR 2043]: Nieuw Front-end ontwerp voor CMS plug-in ‘Balie Afspraken’ gebouwd met design-tokens volgens het NLDS principe.

  • [#3615, PR 2051, PR 2065]: Zaken en open formulieren hebben nu verschillende teksten voor de status en actieknop/link en op de Home pagina. Het zaaknummer wordt alleen getoond voor reguliere zaken, niet voor formulieren.

  • [#3606]: Experimentele client geïmplementeerd met mock data ter ondersteuning van het ontwikkelen van de ‘Mijn Afval’ module.

  • [PR 1983]: Optie toegevoegd om zaken rollen te filteren op type betrokkene (‘natuurlijke persoon’, ‘niet-natuurlijke persoon’, ‘vestiging’).

Bugfixes

  • [#3518, PR 2000]: maykin-django-prosemirror bijgewerkt naar versie 0.3.0, waardoor het te vroeg laden van de prosemirror JS op bepaalde admin pagina’s is verholpen.

  • [#3561, PR 1995]: CMS Categories plugin probeert nu niet meer om zaken op te halen wanneer er geen ZGW backend is geconfigureerd.

  • [#3559, PR 1994]: OpenKlant2 service veld in admin is nu nullable, zodat configuraties kunnen worden opgeslagen zonder dat een service is ingesteld.

  • [#2522:, PR 1969]: Zaken die niet volledig opgehaald kunnen worden uit het zaaksysteem worden nu gefilterd uit de zakenlijst om te voorkomen dat de gehele lijst van Mijn Zaken toegankelijk blijft.

  • [#3494: PR 1955]: Verhelpen bug waardoor er sporadisch errors werden getoond tijdens het zoeken naar zaken via de algemene zoek-functie.

  • [#3495: PR 1956]: Bij het aanmaken van contactmomenten onder een zaak in OpenKlant2 werd de zaak omschrijving als onderwerp gebruikt. Dit veld is in OpenKlant2 echter verplicht, en de omschrijving kan leeg zijn, hetgeen sporadisch tot errors leidde. We gebruiken nu de zaak identificatie en een standaard tekst, die altijd aanwezig is.

  • [#3486: PR 1946]: Menu-items op pagina ‘Mijn Zaken’ worden niet langer dubbel getoond in de sidebar en het dropdownmenu.

  • [#3480, PR 1934]: De paginering van de contactmomenten lijstweergave ontbrak, maar is nu toegevoegd.

  • [#3483, PR 1937]: Typo’s in BRP API request headers verholpen (x-requets-* naar x-requests-*).

  • [#3477: PR 1935]: Wanneer er geen CMS-pagina’s zijn en het menu leeg is, dan wordt de zijnavigatie nu onzichtbaar, zodat de rest van de inhoud niet meer te smal wordt weergegeven.

  • [#3484]: De pagina voor contactmomenten crashte wanneer het contactformulier niet was geconfigureerd.

  • [#3479: PR 1940]: Ongepubliceerde CMS pagina’s worden niet meer weergegeven in de zijnavigatie.

  • [#3493: PR 1954]: Paginering op contactmomenten lijst wordt nu correct weergegeven.

  • [#3497: PR 1958]: Het ophalen van vragen in Openklant geeft geen foutmeldingen meer als er ook anonieme vragen voorkomen in de backend.

  • [PR 1972]: Informatieobjecttpen die bij de ZGW synchronisatie niet kunnen worden opgehaald zullen worden overgeslagen, zodat de overgebleven objecten wel gesynchroniseerd kunnen worden.

  • [#3520, PR 1967]: Missende labels hersteld, die tijdens de migratie voor sommige Prosemirror-velden niet waren gekopieerd.

  • [#3519: PR 1966]: Probleem opgelost in de side menu waarbij de ‘mijn vragen’ item niet geselecteerd wordt als huidige pagina.

  • [#3507: PR 1963]: Verander kleur van menu items bij actieve en hover status naar de correcte primaire kleur.

  • [#3525: PR 1978]: De positie van CMS-pagina’s bepaalt niet langer welke items worden weergegeven in het verkorte dropdown menu. Menu-items worden nu alleen getoond in het dropdown menu als er geen sidenav beschikbaar is en als ze expliciet zijn geconfigureerd (op dit moment alleen de link naar “Mijn Profiel”).

  • [#3521, PR 1975]: Probleem opgelost waar de notificatie en mobiele welkom tekst overlay op de home pagina in elkaar overlopen.

  • [#3530: PR 1984]: Uitkeringspagina’s tonen nu correct het verkorte dropdown menu wanneer er geen sidenav beschikbaar is.

  • [#3557, PR 1987]: Ontbrekende verplichte velden toegevoegd aan de Subscription detail admin, waardoor het weer mogelijk is om nieuwe Subscription objecten aan te maken.

  • [#3507: PR 1993]: De vaste NLDS-huisstijlkleuren (primaire-, secundaire en accent- kleuren) kunnen nu worden overschreven met de kleuren van de colorpicker.

  • [#3471: PR 2007]: De paginatitel van de sitemap verandert nu mee met de in de configuratie meegegeven site-naam.

  • [#dimpact-358, PR 2009]: Het alternatieve telefoonnummer wordt nu correct verwerkt vanuit de eSuite.

  • [#3590: PR 2030]: Bug opgelost waarbij tablet gebruikers geen volledig uitgevuld navigatie menu zagen.

  • [#3572: PR 2019]: De kleuren van call-to-action links en knoppen in tegels komen nu overeen met de primaire kleur zoals die in de Figma designs vastgelegd is.

  • [#3588, PR 2029]: Ontbrekende logout URL voor reguliere gebruikers is toegoevegd, en de logica voor alle login types is opgeschoond.

  • [#3599, PR 2045]: Bij het bekijken van de bron code van componenten in Storybook wordt nu de correcte styling getoond.

  • [#3636, PR 2068]: Automatisch toegevoegen van een extra veelgestelde vraag in product admin is uitgezet.

  • [#3537, #3321, PR 2061]: Sitemap bijgewerkt: duplicaten verwijderd, structuur vereenvoudigd.

Onderhoud

  • [PR 2044]: django-simple-certmanager bijgewerkt naar versie 2.5.0.

  • [PR 2039]: locust bijgewerkt naar versie 2.39.1.

  • [PR 2039]: jinja2 bijgewerkt naar versie 3.1.6.

  • [PR 2024]: brotli bijgewerkt naar versie 1.2.0.

  • [PR 1943]: waitress bijgewerkt naar versie 3.0.2.

  • [PR 1943]: Flask-CORS bijgewerkt naar versie 6.0.1.

  • [PR 1944]: djangorestframework bijgewerkt naar versie 3.16.1.

  • [#3461, #3472, PR 1834]: Python versie bijgewerkt naar v3.12.

  • [#3450, PR 1927]: maykin-django-prosemirror dependency toegevoegd.

  • [#3473, PR 1931]: maykin-common dependency toegevoegd.

  • [PR 1942] sqlparse bijgewerkt naar versie 0.5.3.

  • [PR 1951] django bijgewerkt naar versie 4.2.25.

  • [PR 2014] django bijgewerkt naar versie 4.2.26.

  • [PR 2048] django bijgewerkt naar versie 4.2.27.

  • [#3496, PR 1957]: De django-setup-configuration structuur voor configuratie van het klantensysteem is gereorganiseerd om de structuur van het beheerscherm te volgen, met een overkoepelend config en sub-configs voor eSuite en Openklant.

  • [#3454]: django-prosemirror bijgewerkt naar nieuwste versie

  • [#1514, PR 1976]: Vertalingen bijgewerkt.

  • [PR 1974] De primaire CI testsuite draait op enhanced runner met meer cores, en testen voor migrations zijn afgesplitst in een eigen pipeline.

  • [PR 1977] Logging is uitgeschakeld in de CI test runs.

  • [PR 1982] playwright (npm) bijgewerkt naar >=1.55.1.

  • [PR 1980] Cache decorator ondersteunt kwargs met default argumenten, en maakt correct onderscheid tussen None en "None" waarden.

  • [PR 1991, #3626] Vervang het woord “notificaties” met “meldingen” omwille van de B1 taaleis.

  • [PR 2031] Verouderde mozilla-django-oidc-db cache-instellingen verwijderd.

  • [PR 2041]: certifi bijgewerkt naar versie 2025.11.12.

  • [#3581, PR 2050]: Vertalingen bijgewerkt.

  • [PR 2018, PR 2063] objects-api-client-django bijgewerkt naar nieuwste versie 0.5.0.

  • [PR 2057]: node bijgewerkt naar versie 24.12 en node:20-bookworm-slim bijgewerkt naar node:24-bookworm-slim in Docker container.

  • [PR 2070]: fonttools bijgewerkt naar versie 4.46.1, cryptography bijgewerkt naar 45.0.7, webob bijgewerkt naar 1.8.9, en urllib3 bijgewerkt naar 2.6.2.

  • [PR 2087]: cbor2 bijgewerkt naar versie 5.8.0.

  • [PR 2054]: webpack volledig vervangen met vite.

1.35.3 (2025-11-24)

Voor een volledig overzicht van alle commits, zie v1.35.3.

Deployment aandachtspunten

  • De nieuwe omgevingsvariabele OIDC_FRONTEND_LOGOUT_WITH_HINTS (standaard: true) bepaalt of hints zoals id_token_hint en post_logout_redirect_uri worden meegegeven bij OIDC frontend logout redirects. Wanneer het ID token gevoelige claims bevat die niet in de querystring van de user agent mogen verschijnen (bijvoorbeeld voor security compliance), kan deze variabele op false worden gezet om alleen naar het logout endpoint te redirecten zonder aanvullende parameters.

Nieuwe features

  • [#3596, PR 2036]: Hints (zoals id_token_hint en post_logout_redirect_uri) bij OIDC frontend logout zijn nu optioneel configureerbaar via de omgevingsvariabele OIDC_FRONTEND_LOGOUT_WITH_HINTS. Dit voorkomt dat gevoelige claims in de querystring van de user agent terechtkomen, wat belangrijk kan zijn voor security audits (zoals PENTests) van bijvoorbeeld DigiD. Standaard blijven de hints ingeschakeld om het huidige gedrag te behouden.

1.35.2 (2025-11-13)

Voor een volledig overzicht van alle commits, zie v1.35.2.

Onderhoud

  • [PR 2014]: django bijgewerkt naar versie 4.2.26.

  • [PR 2024]: brotli bijgewerkt naar versie 1.2.0.

Bugfixes

  • [#dimpact-358, PR 2009]: Het alternatieve telefoonnummer wordt nu correct verwerkt vanuit de eSuite.

  • [#3321, PR 2008]: Dubbele links in sitemap verwijderd.

1.35.2 (2025-11-13)

Voor een volledig overzicht van alle commits, zie v1.35.2.

Onderhoud

  • [PR 2014]: django bijgewerkt naar versie 4.2.26.

  • [PR 2024]: brotli bijgewerkt naar versie 1.2.0.

Bugfixes

  • [#dimpact-358, PR 2009]: Het alternatieve telefoonnummer wordt nu correct verwerkt vanuit de eSuite.

  • [#3321, PR 2008]: Dubbele links in sitemap verwijderd.

1.35.1 (2025-10-29)

Voor een volledig overzicht van alle commits, zie v1.35.1.

Bugfixes

  • [#3561, PR 1995]: CMS Categories plugin probeert nu niet meer om zaken op te halen wanneer er geen ZGW backend is geconfigureerd.

  • [#2522:, PR 1969]: Zaken die niet volledig opgehaald kunnen worden uit het zaaksysteem worden nu gefilterd uit de zakenlijst om te voorkomen dat de gehele lijst van Mijn Zaken toegankelijk blijft.

  • [#3494: PR 1955]: Verhelpen bug waardoor er sporadisch errors werden getoond tijdens het zoeken naar zaken via de algemene zoek-functie.

  • [#3495: PR 1956]: Bij het aanmaken van contactmomenten onder een zaak in OpenKlant2 werd de zaak omschrijving als onderwerp gebruikt. Dit veld is in OpenKlant2 echter verplicht, en de omschrijving kan leeg zijn, hetgeen sporadisch tot errors leidde. We gebruiken nu de zaak identificatie en een standaard tekst, die altijd aanwezig is.

  • [#3486: PR 1946]: Menu-items op pagina ‘Mijn Zaken’ worden niet langer dubbel getoond in de sidebar en het dropdownmenu.

  • [#3480, PR 1934]: De paginering van de contactmomenten lijstweergave ontbrak, maar is nu toegevoegd.

  • [#3477: PR 1935]: Wanneer er geen CMS-pagina’s zijn en het menu leeg is, dan wordt de zijnavigatie nu onzichtbaar, zodat de rest van de inhoud niet meer te smal wordt weergegeven.

  • [#3483, PR 1937]: Typo’s in BRP API request headers verholpen (x-requets-* naar x-requests-*).

  • [#3484]: De pagina voor contactmomenten crashte wanneer het contactformulier niet was geconfigureerd.

  • [#3479: PR 1940]: Ongepubliceerde CMS pagina’s worden niet meer weergegeven in de zijnavigatie.

  • [#3493: PR 1954]: Paginering op contactmomenten lijst wordt nu correct weergegeven.

  • [#3497: PR 1958]: Het ophalen van vragen in Openklant geeft geen foutmeldingen meer als er ook anonieme vragen voorkomen in de backend.

  • [#3519: PR 1966]: Probleem opgelost in de side menu waarbij de ‘mijn vragen’ item niet geselecteerd wordt als huidige pagina.

  • [PR 1972]: Informatieobjecttpen die bij de ZGW synchronisatie niet kunnen worden opgehaald zullen worden overgeslagen, zodat de overgebleven objecten wel gesynchroniseerd kunnen worden.

  • [#3525: PR 1978]: De positie van CMS-pagina’s bepaalt niet langer welke items worden weergegeven in het verkorte dropdown menu. Menu-items worden nu alleen getoond in het dropdown menu als er geen sidenav beschikbaar is en als ze expliciet zijn geconfigureerd (op dit moment alleen de link naar “Mijn Profiel”).

  • [#3589, PR 2028]: de omgekeerde migratie voor het toevoegen van gedeeltelijke rechten voor de algemene configuratie geeft geen foutmelding meer wanneer er geen rechten bestaan

Onderhoud

  • [PR 1980] Cache decorator ondersteunt kwargs met default argumenten, en maakt correct onderscheid tussen None en "None" waarden.

  • [PR 1982] playwright (npm) bijgewerkt naar >=1.55.1.

  • [#3557, PR 1987]: Ontbrekende verplichte velden toegevoegd aan de Subscription detail admin, waardoor het weer mogelijk is om nieuwe Subscription objecten aan te maken.

1.35.0 (2025-09-18)

Voor een volledig overzicht van alle commits, zie v1.35.0.

Deployment aandachtspunten

  • Het zgw_dev_status management commando is verwijderd.

  • Het contactformulier is omgezet naar een CMS pagina. Verifieer na deployment de beschrijvingen van het contactformulier.

Nieuwe features

  • [#3370, PR 1888]: Navigatiemenu-items correct weergegeven op verschillende schermbreedtes; @gemeente-denhaag/side-navigation bijgewerkt naar 4.0.2, waardoor notificatiebadges in navigatiemenu-items de rode indicator niet meer tonen.

  • [#3406, PR 1872]: Het contactformulier wordt omgezet in een CMS-pagina. In plaats van één beschrijving heeft het contactformulier nu twee beschrijvingen, één voor geauthenticeerde en één voor anonieme gebruikers. De oude beschrijving wordt naar beide nieuwe velden gekopieerd. Pas één of beide beschrijvingen naar behoefte aan.

  • [PR 1901, #3447]: ID en abonnement status toegevoegd als alleen-lezen velden in de admin detailpagina van de Webhook abonnementen.

  • [#3407, PR 1873]: De mogelijkheid voor admin gebruikers om een custom Javascript bestand te uploaden dat automatisch op alle pagina’s van de website wordt geladen. Deze functionaliteit wordt gecontroleerd door de ALLOW_CUSTOM_JS environment variabele die op deployment niveau moet worden ingesteld.

  • [#3317, PR 1890]: Er is een nieuwe flag toegevoegd op de ZGW API sets (ZGWApiGroupConfig) om, bij het opvragen van zaken, gebruik te maken van de rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__kvkNummer en rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__vestigingsNummer query parameters, die sinds Open Zaak 1.20 beschikbaar zijn, in plaats van rol__betrokkeneIdentificatie__vestiging__vestigingsNummer en rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__innNnpId. Deze flag staat standaard uit en moet expliciet aangezet worden voor een specifieke API set in het beheerscherm. Zie de documentatie onder “Open Zaak” voor verdere informatie.

  • [#3816, PR 1865]: Het e-mailverificatiebericht voor nieuwe gebruikers is nu configureerbaar.

  • [#2942, PR 1896, PR 1924]: Er zijn nieuwe rechten toegevoegd waarmee gebruikers uitsluitend op specifieke subsets van de Algemene configuratie beheer-toegang kunnen ontvangen (kleuren, afbeeldingen, waarschuwingsbanner, paginateksten, helpteksten).

  • [#3405, PR 1889, PR 1916] De documentatie is op verschillende punten bijgewerkt en verbeterd.

  • [#3449, PR 1904]: Verbeterde logmelding voor mislukte API-services tijdens updates van gebruikersprofielen

Bugfixes

  • [#3445, PR 1898]: De sjabloontag field_as_widget ging er onterecht vanuit dat het primaire argument een formulierveld was en veroorzaakte daardoor sporadisch fouten.

  • [#3459: PR 1908]: Haal de CMS-pagina voor het contactformulier op basis van de sjabloon in plaats van de plug-in (zodat de pagina in de voettekst wordt gekoppeld zodra deze is aangemaakt).

  • [#3377, PR 1917]: De static/bundles/images map wordt nu correct opgebouwd in de Docker container, waardoor o.m. marker-icon.png bestanden correct ontsloten worden.

  • [#3466, PR 1922]: De bitnami images in CI en docker-compose zijn vervangen met de officiële Elasticsearch images.

  • [#3460, #3449, PR 1904]: Het indienen van lege tekstwaarden tijdens het bijwerken van het profiel, wat leidde tot fouten in eSuite klant, is opgelost.

  • [PR 1919] De docker-compose variabelen voor de Elasticsearch verbinding gebruiken nu de verplichte, volledig gekwalificeerde versie van de URL.

Onderhoud

1.34.2 (2025-10-07)

Voor een volledig overzicht van alle commits, zie v1.34.2.

Bugfixes

  • [#3493: PR 1954]: Paginering op contactmomenten lijst wordt nu correct weergegeven.

1.34.1 (2025-10-02)

Voor een volledig overzicht van alle commits, zie v1.34.1.

Bugfixes

  • [#3377, PR 1917]: De static/bundles/images map wordt nu correct opgebouwd in de Docker container, waardoor o.m. marker-icon.png bestanden correct ontsloten worden.

  • [#3480, PR 1934]: De paginering van de contactmomenten lijstweergave ontbrak, maar is nu toegevoegd.

  • [#3483, PR 1937]: Typo’s in BRP API request headers verholpen (x-requets-* naar x-requests-*).

  • [#3477: PR 1935]: Wanneer er geen CMS-pagina’s zijn en het menu leeg is, dan wordt de zijnavigatie nu onzichtbaar, zodat de rest van de inhoud niet meer te smal wordt weergegeven.

  • [#3479: PR 1940]: Ongepubliceerde CMS pagina’s worden niet meer weergegeven in de zijnavigatie.

  • [#3486: PR 1946]: Menu-items op pagina ‘Mijn Zaken’ worden niet langer dubbel getoond in de sidebar en het dropdownmenu.

  • [#3445, PR 1898]: De sjabloontag field_as_widget ging er onterecht vanuit dat het primaire argument een formulierveld was en veroorzaakte daardoor sporadisch fouten.

  • [#3466, PR 1922]: De bitnami images in CI en docker-compose zijn vervangen met de officiële Elasticsearch images.

  • [#3460, #3449, PR 1904]: Het indienen van lege tekstwaarden tijdens het bijwerken van het profiel, wat leidde tot fouten in eSuite klant, is opgelost.

Onderhoud

1.34.0 (2025-09-03)

Voor een volledig overzicht van alle commits, zie v1.34.0.

Nieuwe features

  • [#3368, PR 1839]: Een anoniem ingevuld contactformulier wordt nu ook in de OpenKlant2 backend opgeslagen.

  • [#3370, PR 1837, PR 1869]: Het navigatiemenu is nu conform het NL Design System op de meeste pagina’s aan de linkerkant van het scherm geplaatst. Sommige detailpagina’s behouden voorlopig het dropdownmenu in afwachting van nieuwe designs.

Bugfixes

  • [#3396, #3395, PR 1852, PR 1853]: Verschillende problemen bij het ophalen van contactmomenten uit OpenKlant2 zijn opgelost.

  • [#3389, PR 1845]: De synchronisatie van gebruikersprofielen met OpenKlant gebeurt nu ook direct na registratie, niet alleen na inloggen.

  • [#3375, PR 1868]: Correct afbreken van lange woorden en e-mailadressen in smalle tegels, zoals bij productlocaties.

  • [#dimpact-297, PR 1866]: Het verwijderen van websites en het toevoegen van sites naast de primaire website wordt voorkomen.

Onderhoud

  • [#3393, PR 1871]: Kleine tekstuele verbeteringen zijn doorgevoerd om de teksten B1-conform te maken.

  • [PR 1878]: Aanpassen pipeline for het bijhouden en publiceren van de changelog op de documentatie pagina.

  • [PR 1884]: django-setup-configuration bijgewerkt naar versie 0.9.0. Hiermee ondersteunt Open Inwoner het verwijzen naar environment variables in de setup configuration YAML bestanden.

  • [PR 1886, CVE-2025-57833]: django bijgewerkt naar versie 4.2.24, waarmee een beveiligingsissue met severity “high” wordt opgelost.