Selvbetjening og sagsgange til kommuner
Sagsgange der kører sig selv
AabenForms er en open source platform (Drupal 11 + Nuxt) til kommunale selvbetjeningsløsninger og sagsgange. Sagsgange bygges som konfiguration i en visuel editor og eksekveres automatisk. Resultatet er et læsbart artefakt, ikke skræddersyet kode i en leverandørs kodebase.
Interfacet
Moderne for borgeren. Gennemsigtig for forvaltningen.
Borgeren møder en hurtig, tilgængelig frontend. Forvaltningen kan læse, gennemgå og godkende selve sagsgangen, fordi den er et diagram og ikke kode.
Bygget til Danmark
Integrationerne følger KOMBIT-standarderne direkte
Ikke et generisk formularværktøj med danske felter ovenpå. Servicekontrakterne er en del af motoren.
MitID og NemLog-in
OIDC med PKCE og nonce. NSIS-assurance håndhæves i selve flowet, ikke kun ved login.
CPR- og CVR-opslag
Serviceplatformen SF1520 og SF1530. Familie- og forældremyndighedsopslag via SF6006.
Digital Post (SF1601)
MeMo-format, kvitteringer via Beskedfordeler, fjernprint som fallback.
Sagsindeks og fordeling
Journalisering via SF1470 og fordeling til fagsystem via Fordelingskomponenten (SF2900).
ESDH
GetOrganized, SBSYS, WorkZone og Acadre. ESDH er en udskiftelig connector, ikke en afhængighed.
Forvaltningsloven er kodet ind
Partshøring og klagevejledning er obligatoriske trin. Fristberegning springer helligdage over.
Ud over formularer
En fuld sagsmotor, ikke en formularmodtager
Hele forløbet
Fra ansøgning over journalisering og afgørelse til klage og aflevering til fagsystem.
Lovlige statusændringer håndhæves i databasen
Ingen kodesti, heller ikke admin-formularen eller JSON:API, kan bringe en sag i en ulovlig tilstand.
Alle skift logges som revisioner
Hvem, hvornår og hvorfor. Fuldt audit-spor.
Frister beregnes korrekt
Hverdage i dansk tidszone, helligdage sprunget over, per sagsområde.
CPR krypteres altid
AES-256. Systemet nægter at gemme klartekst.
Multi-tenant
En installation kan betjene flere kommuner eller magistrater med isolerede data.
Case study
Skoleskift: den kæde ingen har samlet
Byggetilladelser og adresseændringer er lineære. Sagsgange om børn er det ikke. De involverer flere parter med hver deres rettigheder, og en forkert afsendelse er et databrud.
Et skoleskift kræver, at nogen med forældremyndighed ansøger. Ved fælles myndighed er skolevalg en væsentlig beslutning efter forældreansvarslovens §3, så begge indehavere skal være enige. Ved kendt uenighed kan kommunen slet ikke gennemføre skiftet. Afgørelsen skal sendes til begge indehavere i Digital Post hver for sig. Det har været lov siden 21. marts 2022.
Alle byggeklodser findes i dansk infrastruktur. CPR indeholder forældremyndighed. SF1601 sender Digital Post. borger.dk har kørt medunderskrift via link i årevis. Ingen har samlet kæden. I OS2Forms er ønsket om parallelle parter i et forløb registreret som åbent siden januar 2026, og der findes ikke en eneste sag om opslag af forældremyndighed i de offentlige OS2-trackere.
Eneforældremyndighed
Registret bekræfter eneindehaver. Sagen går direkte til skolelederen på den ønskede skole.
Fælles myndighed, enige
Den anden indehaver får et sikkert link i Digital Post, logger ind med MitID og underskriver. 14 dages frist.
Kendt uenighed
Flowet nægter at træffe afgørelse. Sagen overgår til manuel behandling med partshøring (FOB 2025-9).
Verificeret
Testet mod motoren, ikke mod en mock
Testene opretter en rigtig MitID-session, sender til det live endpoint og læser det step-spor motoren returnerer. Workflow-laget er ikke mocket.
Ansøger uden forældremyndighed
- completedaabenforms_mitid_validate
Citizen identity verified via NemID/MitID national eID - failedaabenforms_custody_verify
Adult is not a registered custody holder of the child - failedaabenforms_workflow_deny
Ansøgningen blev ikke behandlet, fordi CPR-registret ikke bekræfter, at du har foræld...
Ingen sag, intet journalnummer, intet brev. Registret sagde nej, og den dyre del af maskineriet startede aldrig.
Ærlig status
Pre-pilot POC. Her er præcis hvad det betyder.
- KørerLive på aabenforms.dk og api.aabenforms.dk.
- TestrailMod test- og mock-integrationer. Der er ikke udstedt Serviceplatformen-certifikat, så CPR-opslag kører mod testdata og Digital Post skrives til en lokal log i stedet for SF1601.
- ÆrligtEt step der kørte mod testdata skriver "demo" i sporet. Et audit-spor der lyver er værre end intet audit-spor.
- ReeltMotoren, sagsmodellen, forgreningerne, fristberegningen, kryptering og audit. Det der mangler er certifikater og en pilotkommune.
Klar til en POC med rigtige integrationer
Næste skridt er en pilotkommune, der stiller certifikater og et konkret sagsområde til rådighed. Platformen er der allerede.
Self-service and case workflows for municipalities
Case workflows that run themselves
AabenForms is an open source platform (Drupal 11 + Nuxt) for municipal self-service and case handling. Workflows are built as configuration in a visual editor and execute automatically. The result is a readable artifact rather than bespoke code inside a vendor codebase.
The interface
Modern for the citizen. Transparent for the administration.
Citizens meet a fast, accessible frontend. The administration can read, review and sign off on the workflow itself, because it is a diagram rather than code.
Built for Denmark
Integrations follow the KOMBIT standards directly
Not a generic form builder with Danish fields bolted on. The service contracts are part of the engine.
MitID and NemLog-in
OIDC with PKCE and nonce. NSIS assurance is enforced inside the flow, not only at login.
CPR and CVR lookups
Serviceplatformen SF1520 and SF1530. Family and custody lookups via SF6006.
Digital Post (SF1601)
MeMo format, delivery receipts via Beskedfordeler, remote print as fallback.
Case index and distribution
Journalising via SF1470 and distribution to line-of-business systems via Fordelingskomponenten (SF2900).
ESDH
GetOrganized, SBSYS, WorkZone and Acadre. ESDH is a swappable connector, not a dependency.
Administrative law is encoded
Partshøring and appeal guidance are mandatory steps. Deadline calculation skips public holidays.
Beyond forms
A full case engine, not a form collector
The whole journey
From application through journalising and decision to appeal and handover to the line-of-business system.
Lawful state changes enforced in the database
No code path, not the admin form nor JSON:API, can move a case into an unlawful state.
Every transition is a revision
Who, when and why. A complete audit trail.
Deadlines computed correctly
Working days in Danish local time, public holidays skipped, per case area.
CPR is always encrypted
AES-256. The system refuses to store plaintext.
Multi-tenant
One installation can serve several municipalities or departments with isolated data.
Case study
School transfer: the chain nobody assembled
Building permits and address changes are linear. Workflows about children are not. They involve several parties with distinct rights, and sending to the wrong one is a data breach.
A school transfer requires somebody with parental custody to apply. Under shared custody, school choice is a significant decision under the Danish Parental Responsibility Act, so both holders must agree. Where disagreement is known, the municipality cannot proceed at all. The decision must reach both custody holders in Digital Post separately. That has been law since 21 March 2022.
Every building block exists in Danish infrastructure. CPR holds custody. SF1601 sends Digital Post. borger.dk has run co-signature by link for years. Nobody has assembled the chain. In OS2Forms the request for parallel parties in a workflow has been open since January 2026, and there is not a single issue about custody lookup anywhere in the public OS2 trackers.
Sole custody
The registry confirms a single holder. The case goes straight to the school leader at the requested school.
Shared custody, agreed
The other holder receives a secure link in Digital Post, signs in with MitID and approves. A 14 day window.
Known disagreement
The flow refuses to decide. The case moves to manual handling with partshøring, per the Ombudsman ruling FOB 2025-9.
Verified
Tested against the engine, not against a mock
The tests create a real MitID session, post to the live endpoint and read the step trace the engine returns. The workflow layer is not mocked.
Applicant without custody
- completedaabenforms_mitid_validate
Citizen identity verified via NemID/MitID national eID - failedaabenforms_custody_verify
Adult is not a registered custody holder of the child - failedaabenforms_workflow_deny
Ansøgningen blev ikke behandlet, fordi CPR-registret ikke bekræfter, at du har foræld...
No case, no journal number, no letter. The registry said no, and the expensive part of the machinery never started.
Honest status
Pre-pilot POC. Here is exactly what that means.
- RunningLive on aabenforms.dk and api.aabenforms.dk.
- Test railsAgainst test and mock integrations. No Serviceplatformen certificate has been issued, so CPR lookups run against test data and Digital Post writes to a local log instead of SF1601.
- HonestA step that ran against test data writes "demo" in the trace. An audit trail that lies is worse than no audit trail.
- RealThe engine, the case model, the branching, deadline calculation, encryption and audit. What is missing is certificates and a pilot municipality.
Ready for a POC with real integrations
The next step is a pilot municipality that provides certificates and one concrete case area. The platform is already there.