Formulier-intake (specificatie voor een nieuw formulier)¶
Vul dit in als je een nieuw formulier wilt laten bouwen in Open Formulieren. Hoe completer dit is, hoe sneller en onderhoudbaarder de beheerder het kan realiseren. Het formulier wordt vastgelegd als declaratieve config in git (een form-definitiescript + objecttype + documenttypen), zodat latere wijzigingen gewoon een aanpassing in die config zijn — reproduceerbaar en versioneerbaar.
Template om mee te starten:
config/forms/skeleton-form.py. Technische valkuilen:formulieren-tips.md.
1. Algemeen¶
| Veld | Invullen |
|---|---|
| Naam van het formulier | |
| Korte slug (URL, kleine letters) | bv. verlofaanvraag |
| Doel / context (1–3 zinnen) | |
| Wie vult het in? | (burger / medewerker / anoniem / ingelogd) |
| Eigenaar / contactpersoon | |
| Tenant | (welke omgeving / systeembreed) |
| Wat moet er ná indiening gebeuren? | (komt binnen onder Beheer → Verzoeken; evt. e-mail) |
2. Velden¶
Eén regel per veld. Key is technisch en mag later niet wijzigen (geen spaties, kleine letters). Type = textfield / textarea / email / phoneNumber / date / number / select (keuzelijst) / radio / checkbox / file (upload) / …
| Key | Label | Type | Verplicht | Standaardwaarde | Validatie / opties | Helptekst |
|---|---|---|---|---|---|---|
| voornaam | Voornaam | textfield | ja | |||
| … |
Voor keuzelijsten/radio: geef de keuze-opties (waarde + label).
3. Indeling & logica¶
- Stappen: één stap, of meerdere? Welke velden in welke stap, en in welke volgorde?
- Conditionele logica: welk veld tonen/verbergen op basis van welk antwoord?
- Samengestelde/berekende velden: bv. "volledige naam" uit voor-/tussen-/achternaam, of een totaalbedrag. Beschrijf de regel.
4. Bijlagen (uploads)¶
| Upload-veld (key) | Label | Verplicht | Toegestane types | Max. grootte | Documenttype (IOT) |
|---|---|---|---|---|---|
| bijlage | Bijlage | nee | pdf, png, jpg | 10MB | Bijlage |
Per upload-component kan een afwijkend documenttype worden gekozen (zie formulieren-tips.md). Geef aan welk IOT elk upload-veld krijgt; ontbreekt het IOT nog, dan maakt de beheerder het aan.
5. Gegevensmodel (registratie)¶
- Bestaat er al een objecttype voor deze inzending, of moet er een nieuw komen?
- Welke velden moeten op welke paden in het object terechtkomen? (bv. alle
NAW-velden onder
naw.*, bijlagen onderbijlagen.) - Inzendings-PDF meeleveren? Onder welk documenttype (standaard "Aanvraag")?
6. Bevestiging & communicatie¶
- Bevestigingsscherm-tekst.
- Bevestigings-e-mail naar de invuller? (onderwerp + tekst)
- Interne notificatie naar een beheerder/groep?
7. Akkoord¶
- [ ] Specificatie compleet en akkoord door de opdrachtgever.
- [ ] De beheerder legt het formulier vast in git (form-script + objecttype + IOT).
Voor de beheerder — van intake naar onderhoudbare config¶
- Kopieer
config/forms/skeleton-form.pynaarconfig/openforms/<slug>-form.pyen vul de velden/mapping in. - Nieuw gegevensmodel nodig? Voeg een objecttype toe in
config/objecttypes/en (indien nodig) een documenttype inscripts/bootstrap-informatieobjecttype.sh. - Voer het script idempotent uit tegen de draaiende stack (zie de kop van het skeleton). Commit alles → PR. Een latere wijziging = de spec bijwerken, het script aanpassen, opnieuw draaien, PR.