From 11ccb1b2beab0da8ca39fa6e14bdf1f0df851103 Mon Sep 17 00:00:00 2001 From: Johannes Battjes Date: Wed, 21 Jan 2026 17:37:51 +0100 Subject: [PATCH 1/2] a --- docs/nrc-db-subscriptions.md | 80 ++++++++++++++++++++++++++++++++ docs/nrc_db_subscriptions-1.png | Bin 0 -> 49863 bytes sidebars.ts | 5 ++ 3 files changed, 85 insertions(+) create mode 100644 docs/nrc-db-subscriptions.md create mode 100644 docs/nrc_db_subscriptions-1.png diff --git a/docs/nrc-db-subscriptions.md b/docs/nrc-db-subscriptions.md new file mode 100644 index 0000000..0459cd1 --- /dev/null +++ b/docs/nrc-db-subscriptions.md @@ -0,0 +1,80 @@ +# Explanation of the Notification database tables for subscriptions + +This document describes the subscription data model in the NRC database. The aim is to clarify the usage of the tables and especially the purpose of table abonnementkanalen that seemingly contains double records. We will explain that these double records are necessary for proper functioning of notification. There are four relevant tables: kanalen, abonnementen, abonnementkanalen, and filtervalues. The following ERD shows their relationships: + +![alt text](./nrc_db_subscriptions-1.png) + +Below follows an explanation of each of the tables. + +## kanalen + +The 'kanalen' table corresponds to the ['kanaal' resource in the OAS](https://vng-realisatie.github.io/gemma-zaken/standaard/notificaties/redoc-1.0.0#tag/kanaal/operation/kanaal_create). It represents the source from which notifications originate, such as 'zaken' in the ZRC. +The key columns are: + +1. id: PrimaryKey of table 'kanalen' +2. naam: name of the 'kanaal', for example 'zaken' or 'besluiten' +3. documentatielink: the URL to documentation about the 'kanaal' +4. filters: List of possible filter attributes for a kanaal. These filter attributes can be used when creating a subscription. + +## abonnementen + +The 'abonnementen' table corresponds to the ['abonnement' resource in the OAS](https://vng-realisatie.github.io/gemma-zaken/standaard/notificaties/redoc-1.0.0#tag/abonnement/operation/abonnement_create). +Subscriptions on ZGW notifications received by POST request are stored in this table. The most important columns are: + +1. id: PrimaryKey of table abonnementen +2. callbackurl: the full URL of the application's webhook to which the notification should be sent +3. auth: bearer token of the webhook receiver for authorization +4. owner: rsin of the organization that gives the application access + +## abonnementkanalen + +The 'abonnementkanalen' table corresponds to the individual elements in the 'kanalen' array within 'abonnement' in the OAS. +The table thus establishes the N:M relationship between 'abonnementen' and 'kanalen', which is enabled by the OAS. The PrimaryKey (id) of the table is referenced by the filtervalues table. This allows for a single subscription to be related to the same 'kanaal' multiple times (seemingly double information), but with different filter values in the filtervalues table ​​each time. + +The key columns are: + +1. id: PrimaryKey of table 'abonnementkanalen' +2. abonnement_id: ForeignKey pointing to a abonnement in the 'abonnementen' table +3. kanaal_id: ForeignKey pointing to a kanaal in the 'kanalen' table + +## filtervalues + +The 'filtervalues' table corresponds to the 'filters' element within 'abonnement' in the OAS. + +Often, it is undesirable to receive all notifications from a kanaal, as this would generate a lot of message traffic. Therefore, it is possible to specify filters on fields from the underlying kanaal in the subscription. Only notifications that match these filter values are being sent thus reducing traffic. The filters are stored in the filtervalues table. + +The most important columns are: + +1. id: PrimaryKey of table 'filtervalues' +2. abonnement_kanaal_id: foreign key to 'abonnementkanalen' table +3. key: the name of the filter. Possible values are shown in the table 'kanalen' in column 'filters'. Additionally, the values '#resource' and '#actie' are possible in the key field. These refer to the events that trigger the notification to be sent by the resource of the kanaal. +4. value: the value of the filter to be matched. + +For example, a filter-value definition for the 'zaken' kanaal could look like this: +- key='domein' +- value='VTH' + +In this example, the notification is only delivered if the zaak in question has a zaaktype from the catalog of domein 'VTH'. + +The data model allows for multiple filtervalues for each 'abonnementkanalen'. The example below illustrates this: + +Abonnementkanalen 1 of abonnement X +Filter A: + +- key='#resource' +- value='zaakinformatieobject' + +Filter B: +- key='#actie' +- value='create' + +Abonnementkanalen 2 of abonnement X +Filter A: +- key='#resource' +- value='zaakinformatieobject' + +Filter B: +- key='#actie' +- value='destroy' + +The combination of filters within an abonnementkanaal is evaluated as 'AND'. The combination of filters among abonnementkanalen of the same abonnement is evaluated as 'OR'. In this example therefore, the client application will only receive a notification from the zaken kanaal when a zaakinformatieobject is created or deleted. diff --git a/docs/nrc_db_subscriptions-1.png b/docs/nrc_db_subscriptions-1.png new file mode 100644 index 0000000000000000000000000000000000000000..db589e9c857b81af4775ef84ed4e9e0daea657d3 GIT binary patch literal 49863 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 SF)|VnGQYho&8B3Vcg$~tSGE`c literal 0 HcmV?d00001 diff --git a/sidebars.ts b/sidebars.ts index 98154ec..7985d01 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -6,6 +6,11 @@ const sidebars: SidebarsConfig = { "api-versions", "usage-of-clientids", "authorizations", + { + type: "doc", + id: "nrc-db-subscriptions", + label: "Notification database tables for subscriptions" + }, { type: "doc", id: "gebruik-van-subscriptions-in-autorisaties", From 413b70c94e0c96677696d66eb8a90eaec4d7084f Mon Sep 17 00:00:00 2001 From: Johannes Battjes Date: Wed, 21 Jan 2026 17:40:44 +0100 Subject: [PATCH 2/2] Update nrc-db-subscriptions.md --- docs/nrc-db-subscriptions.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/nrc-db-subscriptions.md b/docs/nrc-db-subscriptions.md index 0459cd1..8a5ac43 100644 --- a/docs/nrc-db-subscriptions.md +++ b/docs/nrc-db-subscriptions.md @@ -48,9 +48,10 @@ The most important columns are: 1. id: PrimaryKey of table 'filtervalues' 2. abonnement_kanaal_id: foreign key to 'abonnementkanalen' table 3. key: the name of the filter. Possible values are shown in the table 'kanalen' in column 'filters'. Additionally, the values '#resource' and '#actie' are possible in the key field. These refer to the events that trigger the notification to be sent by the resource of the kanaal. -4. value: the value of the filter to be matched. - +4. value: the value of the filter to be matched. + For example, a filter-value definition for the 'zaken' kanaal could look like this: + - key='domein' - value='VTH' @@ -65,15 +66,18 @@ Filter A: - value='zaakinformatieobject' Filter B: + - key='#actie' - value='create' Abonnementkanalen 2 of abonnement X Filter A: + - key='#resource' - value='zaakinformatieobject' Filter B: + - key='#actie' - value='destroy'