Ga naar inhoud

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 Standaard­waarde 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 onder bijlagen.)
  • 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

  1. Kopieer config/forms/skeleton-form.py naar config/openforms/<slug>-form.py en vul de velden/mapping in.
  2. Nieuw gegevensmodel nodig? Voeg een objecttype toe in config/objecttypes/ en (indien nodig) een documenttype in scripts/bootstrap-informatieobjecttype.sh.
  3. 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.