A specific law says that someone may apply for a decision. The Algemene wet bestuursrecht (Awb) says what every application contains and what follows once it is received. For vakantieverlof:
Article 13a does not mention the Awb, and it does not need to.
RFC-007 lets an article hook onto another, filtered on the legal character of a decision. An application is not a decision, so there was nothing to hook onto. RFC-008 has an AANVRAAG stage in the procedure of a beschikking, but a hook there only fires when a caller executes the decision from that stage, and none does.
An article can say that it establishes an application, and a hook can apply to one. Executing the article fires those hooks.
produces gets an optional block submission:
kind names what the belanghebbende submits. Schema v0.8.0 allows AANVRAAG (Awb 1:3 lid 3). A bezwaarschrift can later be a second kind. The block sits next to legal_character and does not change the article’s own outputs.
An article that also decides on the application writes produces as a list (schema v0.8.1, RFC-047). The application is then an item of its own, with type: AANVRAAG, the parameters it contains, and requests, the article whose decision it asks for:
applies_to gets two fields:
| Field | Matches |
|---|---|
submission | produces.submission.kind of the executing article, or the type of one of its items |
established_by | the executing article itself, <regulation>#<article> without a paragraph |
legal_character or submission, not both. The schema says so with oneOf, and the engine refuses such a law when it loads it.stage or decision_type. It fires whenever the establishing article runs.established_by narrows the hook to the application of one article, for policy that works out one law’s application.The RFC-007 hooks index gets a second kind of key, (hook_point, kind), next to (hook_point, legal_character).
The application holds the parameters of the establishing article plus those of the hooks that fire on it. When produces is a list, those of the article are the ones its item lists under parameters; in the object form, all of them. For vakantieverlof that is bsn_jongere, eerste_verlofdag and laatste_verlofdag from art. 13a, and the name, address, date and signature from Awb 4:2. The parameter a hook names in produces.moment, such as datum_ontvangst from Awb 4:13, holds the moment the body establishes and is no part of what the application contains. What the administrative body needs to decide, such as the judgement under art. 11 onder f, is a parameter of the decision, not of the application.
produces.moment says which moment counts in law for what an article produces. Its legal_basis cites the provision that says so, in the same form as the legal_basis on a field or an action:
The engine does not read it. It is there for a runtime that records the application as a dated fact.
LawExecutionService::submission(law_id, article, date) returns the kind and the articles that take part: the establishing article, then each hook in the order the engine fires it. RuleResolver::find_submission_hooks answers the same question for one hook point. Both use the index and filters that execution uses. Unlike an execution, they do not report a hook whose declaration comes from another version of its law.
requests; a hook filter on it is left for later.required: false, or the execution of the specific law fails.produces.submission fires Awb 4:2 and 4:13 at every execute_stage call. No article in the corpus has both yet. The slice that adds the decision on the application decides at which stage they fire. (Note, October 2026: RFC-047 fires them at the stage named after the kind, AANVRAAG.)The application as the first stage of the decision (RFC-008 as it stands). Rejected: the hooks never fire.
The specific law names the Awb (includes: algemene_wet_bestuursrecht#4:2). The text does not say it, and a law that forgets it loses the Awb fields without notice.
legal_character: AANVRAAG. An application is not a decision, and the legal character is decision vocabulary (Awb 1:3).
A string form for the provision behind the moment (algemene_wet_bestuursrecht#4:13 lid 1). Rejected: the schema already cites provisions with legal_basis, and a second notation would mean two ways to say the same thing.
A field on each parameter that says who supplies it (origin). Rejected: who supplies a value is process information, not law. The rulework says which data are needed; the structure above says which of them the application holds.
produces.submission, produces.moment, and applies_to.submission and established_by. Schema v0.8.1: the application as a list item with type, parameters and requests.packages/law-model reads them and refuses an established_by with a paragraph.packages/engine files hooks on a submission in the hooks index, fires them when the establishing article runs, and refuses a hook that names both a decision and a submission.AANVRAAG; Awb 4:2 and 4:13 hook onto it. A scenario next to the Leerplichtwet proves the result.An exploration into transparent, executable legislation, and one of the three projects in the starting selection of the Nederlandse Digitale Dienst.
GitHub repository
How it works
Stay informed
Roadmap (Dutch)
Documentation
Research
Nederlandse Digitale Dienst
Ministry of Economic Affairs and Climate Policy