diff --git a/docs/architecture/adr-0030-projection-sourced-from-the-register.md b/docs/architecture/adr-0030-projection-sourced-from-the-register.md
index 6bf0bb4..af3d9b6 100644
--- a/docs/architecture/adr-0030-projection-sourced-from-the-register.md
+++ b/docs/architecture/adr-0030-projection-sourced-from-the-register.md
@@ -34,6 +34,12 @@ notification points at. The projection is a cache of the register; ZGW is no lon
as a kenmerk — so the record is read back through the ACL (`POST /register-records/read`).
§8.1 applies to Objecten exactly as ADR-0028 established: the ACL is the only code that talks
to it.
+- The accepted acties are `create`, `update` and `partial_update`. The last one is not
+ defensive breadth: the ACL upserts with PATCH, and DRF routes a PATCH through the notifying
+ `update()` while naming the action `partial_update` — which is what Objecten publishes. So
+ every approval arrives as `partial_update`, and accepting only `create`/`update` drops the
+ one state change this slice exists to project. `destroy` is deliberately not accepted:
+ removing a registration from the public register is its own decision.
- The record already carries `id`, `status` and `reference`, so the row is the record. The
zaak-shaped surface goes: `IsZaakCreated`, `IsZaakStatusSet`, `ZaakUrl`, `ZaakId`, and
`ToEntry`'s `Resource == "status"` inference are replaced by `IsRegisterRecordWritten` +
diff --git a/services/event-subscriber/EventSubscriber.Application/Notification.cs b/services/event-subscriber/EventSubscriber.Application/Notification.cs
index b04672a..5a069ef 100644
--- a/services/event-subscriber/EventSubscriber.Application/Notification.cs
+++ b/services/event-subscriber/EventSubscriber.Application/Notification.cs
@@ -18,10 +18,20 @@ public sealed record Notification(
string Actie,
Uri ResourceUrl)
{
- /// A register record written to Objecten — create on submit, update on
- /// approval, since the ACL upserts the same object for a registration (§8.6).
+ ///
+ /// A register record written to Objecten — create on submit and partial_update on
+ /// approval, since the ACL upserts the same object for a registration (§8.6).
+ ///
+ ///
+ /// partial_update is what a PATCH actually reports: DRF routes it through the notifying
+ /// update() but names the action partial_update, and that is what Objecten puts in
+ /// the notification. update is accepted too, so a PUT-shaped write would project the same
+ /// way. destroy is deliberately not: removing a registration from the public register is
+ /// its own decision, not a side effect of this one.
+ ///
public bool IsRegisterRecordWritten =>
- Kanaal == "objecten" && Resource == "object" && Actie is "create" or "update";
+ Kanaal == "objecten" && Resource == "object"
+ && Actie is "create" or "update" or "partial_update";
/// The object holding the register record. For a resource: object notification
/// Objecten sends the object as both hoofdObject and resourceUrl — the object is