Change history
2.16.0
April 10, 2026
New features
[#422] Implement health checks to monitor the status of each Docker container:
web,Celery worker,Celery Flower,postgresandredis. See Container health checks for more information.[#525] The fields
InterneTaak.nummer,Klantcontact.nummer, andPartij.nummerhave been deprecated, and the autogeneration ofnummerhas been removed. New fieldsInterneTaak.referentienummerandKlantcontact.referentienummerhave been introduced and can be used to store references if needed.[#529] Add additional filtering parameters for the
subIdentificatorVanrelationship field on the/partijenendpoint:subIdentificatorVan__objectIdsubIdentificatorVan__codeObjecttypesubIdentificatorVan__codeSoortObjectIdsubIdentificatorVan__codeRegister
[#554] Add new JSONField
metadatafor management information in Klantcontact[#575] Add new TextField
reactiefor additional details in Klantcontact
Maintenance
[#211] Optimize memory usage for uWSGI and celery-flower
Make sure uWSGI workers restart after 1000 requests
Set
FLOWER_MAX_TASKS=1000andFLOWER_MAX_WORKERS=50
Remove unnecessary dev packages from docker build
Upgrade python dependencies
djangoto 5.2.13maykin-commonto 0.18.0commonground-api-commonto 2.12.0mozilla-django-oidc-dbto 2.0.1cbor2to 5.9.0cryptographyto 46.0.7requeststo 2.33.1sphinxto 9.1.0
Documentation
[#197] Document versioning policy and supported versions. See Versioning policy for more details.
[#213] Apply consistent styling across documentation
2.15.0
February 6, 2026
New features
Implement Cloud Events, (see Cloud events for more information).
Warning
The zaak-gekoppeld and zaak-ontkoppeld pattern is still under active development
and could be subject to change in future releases. It is not recommended to rely on this pattern
in production yet.
[#549] Add query parameter
cascadetoDELETEmethod for OnderwerpObject. If set totrue, associated Klantcontact and Betrokkene entries are also deleted.
Maintenance
[#547] Minor code improvements for Referentielijsten API integration.
[#197] Include the maximum
pageSizefor pagination in the OAS documentation.Avoid using
eventkey in uwsgi logs.Upgrade python dependencies
commonground-api-commonto 2.10.7notifications-api-commonto 0.10.1open-api-frameworkto 0.13.4asgirefto 3.11.0cbor2to 5.8.0djangoto 5.2.11urllib3to 2.6.3
2.14.0
December 1, 2025
New features
[#152] Add OpenTelemetry (
OTel) for collecting and exporting application metrics.Metrics now exposed include:
HTTP request durations.
Number of active requests.
Number of users, logins, logouts, failed logins, and account lockouts.
CRUD operations for the following endpoints:
/klantcontacten/betrokkenen/partijen/actoren/digitaleadressen/internetaken
All metrics are exported using the OpenTelemetry standard, enabling seamless integration with existing monitoring and visualization platforms.
Note
The OpenTelemetry SDK is enabled by default.
If you do not have an endpoint to send system telemetry to, update your deployment to disable it by setting the environment variable:
OTEL_SDK_DISABLED=true
If this is not done, warnings will be emitted to the container logs. The application will continue to function normally.
All available metrics and details can be found in the Observability documentation.
[#500] Implement optional Referentielijsten API integration to validate
Klantcontact.kanaal. See the documentation for more details.Add Referentielijsten configuration model to manage the connection.
Add a configuration step to load this config via
setup_configuration.Add new validators for the configuration.
[#30] Add API design rules linter to CI.
[#188] Add CSV option to
dump_data.shscript (see Scripts for more information)
Bugfixes
[#250] Support multiple ways of serializing lists in query params for
expandfilter.[#489] Fix validation to ensure
SITE_DOMAINis set when configuring notifications via the admin interface.[#134] Fix exceptions in API endpoints not forwarded to Sentry when
DEBUG=False.
Maintenance
Fix 503, 404, 403 and account_blocked html templates
[#191]
nodejsto v24[#31]
codeqlto v4Upgrade python dependencies
[#171]
open-api-frameworkto 0.13.2commonground-api-commonto 2.10.5notifications-api-commonto 0.9.0django-setup-configurationto 0.11.0mozilla-django-oidc-dbto 1.1.1maykin-commonto 0.11.0djangoto 5.2.8uwsgito 2.0.31pipto 25.3
2.13.0
October 3, 2025
Warning
The default number of UWSGI_THREADS has been changed to 4.
New features
[#484] Update phone number validation rules
^(0[1-9][0-9]{8}|\+[0-9]{9,15}|00[0-9]{7,13})$Allowed numbers:
Local: 0612345678, 0201234567
International with ‘+’: +31612345678
International with ‘00’: 0031612345678
Not Allowed numbers:
0800, 0900, 088, 1400, 140xx
[#501] Add new migration script
migrate_to_v2_phonenumbersto also migrate phone numbers (see Migration)[#175] Changes to logging of handled and unhandled exceptions (see Exceptions for more information)
Log events for handled API exceptions (e.g. HTTP 400) now include
invalid_paramsLog events for unhandled API exceptions (e.g. HTTP 500) now include the traceback via
exception
[#184]
setup_configurationnow supports pulling values from environment variables in YAML configuration by usingvalue_from(see documentation_setup_configuration for more information)
Bugfixes
[#486] Fix
default_admin_index.jsonvia signal during migration execution[#508] Fix CSS issues on the landing page
[#510] Add missing
raw_id_fieldsfor PartijAdmin, improving performance on the admin detail page
Maintenance
2.12.1
September 4, 2025
Bugfixes
[#492] Ensure 8 digit BSNs get a leading 0 in
migrate_to_v2script
2.12.0
August 28, 2025
Warning
Changes to format of setup_configuration data for OpenID connect
In this release, mozilla-django-oidc-db has been updated to version 0.25.1, which requires the new data format.
The old format is deprecated and will be removed in future releases.
The new configuration must be used, as it splits the previous solo model configuration into OIDCProvider and OIDCClient
configurations, making it easier to re-use identity provider settings across multiple client IDs.
Additionally, any configuration using django-setup-configuration must be updated to reflect these changes,
as it is now split into two distinct sections: one for providers and one for clients.
This separation also exists in the admin interface, so both sections can be configured directly through the user interface.
For example:
providers:
- identifier: example-provider
# other provider settings
clients:
- identifier: admin-oidc
oidc_provider_identifier: example-provider
# other client settings
For detailed configuration, see Admin OIDC Configuration Step.
Make sure to check which fields are marked as DEPRECATED and replace them with the fields that are mentioned as replacements.
New features
[#419] Added query parameters on onderwerpobjecten for searching klantcontacten by referred klantcontact:
klantcontact__uuidklantcontact__urlwas_klantcontact__uuidwas_klantcontact__url
Bugfixes/QOL
[#470] Change
countrycodevalidation message to warn when the value has incorrect casing.
Documentation
[#159] Add functionality to create model image (see UML Diagrams)
Maintenance
Upgrade python dependencies
zgw-consumersto 1.0.0commonground-api-commonto 2.9.0mozilla-django-oidc-dbto 0.25.1
[#179] Add monkeypatch to requests applying a default timeout to all requests calls
2.11.1
August 8, 2025
Bugfixes/QOL
Fixes for migrate_to_v2 command:
2.11.0
August 5, 2025
New features
[#437] Add
verificatieDatumattribute toDigitaalAdres, as well as new query parametersverificatieDatum: match objects that have averificatieDatumthat is exactly this valueverificatieDatum__gt: match objects that have averificatieDatumgreater than this valueverificatieDatum__gte: match objects that have averificatieDatumgreater than or equal to this valueverificatieDatum__lt: match objects that have averificatieDatumless than this valueverificatieDatum__lte: match objects that have averificatieDatumless than or equal to this valueisGeverifieerd: match objects that have averificatieDatum
Bugfixes
[#457] Fix bug that caused deletes on
DigitaalAdresto cascade toPartij(viavoorkeurs_digitaal_adres)[#400] Fix error when using
expanddue to the value of the attribute beingNonefor some of the results[#454] Ensure
DB_CONN_MAX_AGEcan be set via envvarFix issue that caused Elastic APM to not show time spent on queries when connection pooling is enabled
Maintenance
Upgrade python dependencies
celeryto 5.5.3 (to fix Redis reconnection issues)billiardto 4.2.1django-privatesto 3.1.1open-api-frameworkto 0.12.0commonground-api-commonto 2.7.0
Remove unused
coreapidependency[#465] Upgrade NPM packages to fix security issues
Move database connection pooling envvars to
open-api-frameworkAdd missing
bump-my-versiondependency to dev deps
Documentation
2.10.0
July 4, 2025
Warning
This release upgrades Django to version 5.2.3, which requires PostgreSQL version 14 or higher. Attempting to deploy with PostgreSQL <14 will cause errors during deployment.
New features
Note
The logging format has been changed from unstructured to structured with structlog. For more information on the available log events and their context, see Format.
[#434] Add structlog for observability
[#445] Add log events for
create,update, anddeleteoperations on all API endpoints[#149] Add dark/light theme toggle to the admin interface
[#426] Add environment variables for database connection pooling (see Environment configuration reference for more information)
DB_POOL_ENABLED
DB_POOL_MIN_SIZE
DB_POOL_MAX_SIZE
DB_POOL_TIMEOUT
DB_POOL_MAX_WAITING
DB_POOL_MAX_LIFETIME
DB_POOL_MAX_IDLE
DB_POOL_RECONNECT_TIMEOUT
DB_POOL_NUM_WORKERS
DB_CONN_MAX_AGE
Warning
Experimental: — connection pooling is not yet recommended for production use. It may not behave as expected when running uWSGI with multiple processes or threads. Use this feature cautiously and test thoroughly before deployment. See the documentation for details.
Bugfixes
[#418] Fix incorrect URL reverse in
csrf_failurefunction[#424] Fix error in
digitaleadressenendpoint when handling different digital address types
Project maintenance
[#151] Move
ruffandbump-my-versionconfigurations intopyproject.tomlUpgrade dependencies:
django to 5.2.3
notifications-api-common to 0.7.3
open-api-framework to 0.11.0
commonground-api-common to 2.6.7
django-setup-configuration to 0.8.2
django-debug-toolbar to 5.2.0
django-webtest to 1.9.13
zgw-consumers to 0.38.0
pyjwt to 2.10.1
requests to 2.32.4
urllib3 to 2.5.0
vcrpy to 7.0.0
platformdirs to 4.3.8
Documentation
[#434] Add documentation for logging
2.9.0
May 28, 2025
New features
[#338] Add
isStandaardAdresto the list endpoint filters for DigitaalAdres[#388] Explicitly state in OAS that a space is required for postcodes
[#417] Add missing help texts in OAS for query parameters for
onderwerpobjecten,partij-identificatoren,rekeningnummersandbijlagen
Bugfixes
Do not use
save_outgoing_requestslog handler ifLOG_REQUESTSis set to false[#351] Remove overig from partijidentificator and deprecate
anderePartijIdentificator
Warning
The field anderePartijIdentificator for /partij-identificatoren endpoint is now deprecated and will be removed in the next major release
Project maintenance
Upgrade dependencies
tornado to 6.5.1
open-api-framework to 0.10.1
commonground-api-common to 2.6.4
Replace OAS GitHub actions workflows with single workflow
[#132] Remove
pytestandcheck_sphinx.py, replace with simpler commands[#133] Replace
black,isortandflake8withruffand update code-quality workflow
2.8.0
May 14, 2025
New features
[#320] Add
DigitaalAdres.referentieand allow filtering on this attribute with thereferentiequery parameter[#368] Fix validation for phone numbers
[#240] Make nullable fields optional for all endpoints
[#342] Add PartijIdentificator filters to
/klantcontacten,/betrokkenenand/digitaleadressen[#391] Make
huisnummernullable via the API[#395] Integrate
django-upgrade-checkto ensure that all required OpenKlant versions are correctly handled during instance upgrades
Bugfixes
[#378] Fix bug that occurred when trying to create a
Partijvia the admin interface and improve admin performance[#341] Add missing help texts for several query parameters in the API schema
[#401] Fix PATCH requests on
/partijen/{uuid}ifdigitaleAdressenand/orrekeningnummersare set tonull[#345] No longer make
Partij.soortPartijrequired for PATCH requests
Project maintenance
Upgrade commonground-api-common to 2.6.3
Upgrade NPM http-proxy-middleware to 2.0.9
[#395] Upgrade to Python 3.12
[#385] Improve performance of several endpoints
Note
Used select_related and prefetch_related to minimize query count and improve efficiency, improving key endpoints such as /actoren, /partijen, /partij-identificatoren, /klantcontacten
Documentation
2.7.0
April, 3, 2025
New features
[#212] Add
digitaleAdressenas expand option for/betrokkenenendpoint[#239] Accept Partij Identificatoren as part of Partij creation
[#355] Add Notifications for InterneTaak and Partij (see Configure Notificaties API)
Note
Additional configuration steps have been introduced to set up external services and notifications through django-setup-configuration (see Open Klant configuration (CLI))
[#59] Remove
django.contrib.sitesdependency
Warning
To save the domain of the application you have to declare the environment variable SITE_DOMAIN (see Environment configuration reference > Optional for more information)
Bugfixes
[#376] Fix camelCase naming for query parameters in GET requests
Project maintenance
[#115] Fix OAS check github action
[#116] Fix codecov publish
[#117] Upgrade version of CI dependencies
Confirm support for Postgres 17
Development tools: black to 25.1.0, flake8 to 7.1.2 and isort to 6.0.1
Upgrade GHA versions
Upgrade nodejs to 20
Remove
changed-filesactions from CI and moved in a separate scriptRemove duplicate CodeQL workflow
Fix
bump-my-versionfor package/package-lock.jsonUpgrade dependencies
Upgrade coverage to 7.7.0
Upgrade cryptography to 44.0.2
Upgrade jinja2 to 3.1.6
Upgrade kombu to 5.5.2
Upgrade django to 4.2.20
Upgrade django-setup-configuration to 0.7.2
Upgrade open-api-framework to 0.9.6
Upgrade notifications-api-common to 0.7.2
Upgrade commonground-api-common to 2.5.5
Documentation
Update documentation for configurations
2.6.1
March, 21, 2025
Bugfixes
[#369] Ensure PartijIdentificator.partij can be null
2.6.0
March, 4, 2025
New features
[#233] Fix set of values for PartijIdentificatoren (ENUM)
[#267] Enforce uniqueness of Partij and PartijIdentificatoren
[#309] Add separate fields for Dutch addresses next to address lines 1 to 3
[#310] Update BAG ID fields with new validations
[#311] Update country codes fields with ISO 3166
Warning
Issues #311, #310, #267 modify existing fields and add new constraints to models, which can cause them to break,
as some previous values will no longer be valid.
During migration, invalid values are logged so that they can be fixed manually and then migrations have to be executed again.
Project maintenance
Upgrading dependencies:
[#79] Disable admin nav sidebar
[#99] Add quick-start workflow to test docker-compose.yml
[#107] Add release template
[#299] Add Nginx to Open Klant helm chart
Documentation
Improvements to documentation structure and configuration steps (CLI and Admin)
2.5.0
January, 28, 2025
New features
- Add support for setup configuration
[#293] Configuring access tokens
[#294] Admin authentication via OIDC
Bugfixes/QoL:
Add UUID to Klantinteracties admin search fields and fieldsets
[#254] Fix incorrect URLs being returned in API responses for
Persoon,BijlageandCategorieRelatie[#265] Fix
adres__icontainsfor GET requests ondigitaleadressenendpoint[#272] Make
digitaalAdres.omschrijvingnot required[#252] Make
Persoon.overlijdensdatumoptional via admin interfacePoint help text for
DigitaalAdres.is_standaard_adresto correctly cased field name[maykinmedia/charts#148] Add timeouts to celery tasks
Project maintenance
[#66] Update zgw-consumers to 0.35.1
[#66] Update commonground-api-common to 2.1.2
[#66] Update notifications-api-common to 0.3.1
Update open-api-framework to 0.9.2
[maykinmedia/open-api-framework#92] Make sure documentation is built in CI
[maykinmedia/open-api-framework#92] Fix pushing of Docker latest tag
Fix code-analysis workflow
[maykinmedia/open-api-framework#81] Switch from pip-compile to UV
[maykinmedia/open-api-framework#93] Security updates for third party libraries
Documentation
Add documentation for OpenKlant v2 semantic information model
2.4.0
November, 26, 2024
New features
[#256] Added the
hadBetrokkene__wasPartij__urlandhadBetrokkene__wasPartij__uuidquery parameters to allow filteringKlantenContactbyPartij[#251] Added admin inlines for the
InterneTaakandActorto allow managing the relations between both. Also added search fields for both admins to search for both relations.[#197] Added a
migrate_to_v2management command which allows users of version1.0.0to migrate to version2.4.0More information can be found in the documentation <https://open-klant.readthedocs.io/en/latest/installation/migration.html>[#246] Added
isStandaardAdresforDigitaalAdresUpdated OAF version to 0.9.0. This upgrade allows admin users managing their sessions through the admin.
[#147] Added
/maak-klantcontactconvenience endpoint. This allows creating aKlantContact, aBetrokkeneand aOnderwerpObjectthrough a single API request[#232] Added
soortDigitaalAdresenum forDigitaalAdres
Bugfixes/QoL:
[#235] Added extra validation for phone numbers for
DigitaalAdres.adreswhenDigitaalAdres.soortDigitaalAdresistelefoonnummer.[#243] Fix expand query parameters. Shows the
_expandfield in the response body even though it might be empty. This behavior is applied to all available_expandparameters.[#258] Added correct API root paths in redoc OAS
[#234] Added validation for
DigitaalAdres.adreswhen it’s type isemail[#227] Fixed
partijencreation endpoint crash whenpartijIdentificatieis not provided[#261] Fixed
Onderwerpobjectadmin inline to useklantcontactinstead ofwas_klantcontact[#226] Made
betrokkenea non-required form field in the admin[#229] Fixed partijen admin search
Project maintenance
[#247] Added CI check to verify open API framework is updated to the latest version
Upgraded commonground-api-common to 1.13.4
[#13] Implemented open-api-workflows
2.3.0
October 4, 2024
New features
[#236] add dynamic pagination with
pageSizeparameter
Bugfixes/QoL:
[#258] Use correct API root in redoc OAS
[#255] Fix API schema not showing caused by CSP errors
[#255] Change SameSite session cookie to lax to fix OIDC login not working
2.2.0
September 5, 2024
New features
[#50] updated Python dependencies to minimize security risks.
[#208] fixed the bug within the API schema generation for expand paths.
[#209] added query parameters to the digitaleadressen endpoint.
[#214] Added expand path from digitaleadressen to internetaken.
[#182] added actoren field in internetaken.
[#207] changed indicatie geheimhouding from required to optional.
updated open-api-framework to 0.8.0, which includes adding CSRF, CSP and HSTS settings (#438). All new environment variables are added to the documentation
Warning
SECURE_HSTS_SECONDS has been added with a default of 31536000 seconds, ensure that
before upgrading to this version of open-api-framework, your entire application is served
over HTTPS, otherwise this setting can break parts of your application (see https://docs.djangoproject.com/en/4.2/ref/middleware/#http-strict-transport-security)
Warning
With the introduction of the actoren field in the internetaken endpoint, the field actor is now deprecated and will be removed in the next version.
2.1.0
July 16, 2024
New features:
Add support for mounting Open Klant on a
SUBPATHElastic APM service name can now be configured with
ELASTIC_APM_SERVICE_NAMEenvvar[#175] added expand for detail endpoints in redoc
Made user emails unique to prevent two users logging in with the same email, causing an error
[#183] added afgehandeld_op field for internetaken
[#189] Introduced two-factor authentification (2FA) for the Admin, which can be disabled by the environment variable
DISABLE_2FA
Warning
The service name for Elastic APM is now configurable via the ELASTIC_APM_SERVICE_NAME environment variable.
The default value changed from Open Klant - <ENVIRONMENT> to openklant - <ENVIRONMENT>
Warning
User email addresses will now be unique on a database level. The database migration will fail if there are already two or more users with the same email address. You must ensure this is not the case before upgrading.
Warning
Two-factor authentication is enabled by default. The DISABLE_2FA environment variable
can be used to disable it if needed.
Bugfixes/QoL:
Settings module was refactored to use generic settings provided by Open API Framework
[#187] Streamline environment variables
Fix help-text icon for datetime field in the admin
Documentation
[#196] remove links to outdated VNG documentation
Project maintenance
[#179] Fix Trivy github action
Update to Python 3.11
[#155] use open-api-framework
[#188] remove unused notification settings
Refactor settings module
2.0.0
March 15, 2024
VNG officially retired the Klanten and Contactmomenten API, which never had an official release. These API’s are replaced by the Klantinteractie API. In cooperation with several municipalities and VNG, Open Klant will implement the new API specification and might introduce backwards incompatible changes. Since Open Klant never had an official 1.0 release, we will continue versioning on the 0.x.x-scheme.
Initial release of Open Klant featuring the first iteration of the Klantinteracties API.
1.0.0
February 16, 2023
Only a version change has been applied to emphasize the major change from version 1.0.0 to 2.0.0 which features a completely different API.
0.5.0-pre
August 5, 2023
[#51] Showing version & git hash on the home page
0.3.0-pre
July 24, 2023
[#50] Added Notificatie API support
0.2.0-pre
June 14, 2023
[#46] Fixed CI code-quality issues
[#45] Updated docs and URLs to use new Github location
[#44] Updated project dependencies
[#48] Add missing auth to URLValidator for klantcontactmoment
0.1.0
February 13, 2023
Initial release.