Fenix Nordic

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.

18færdige kommunale flows
6KOMBIT-integrationer
4ESDH-systemer
GPLkommunen ejer løsningen

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.

Borgerflow med MitID-login, fremdriftsindikator i fire trin og forklaring af hvad der sker bag kulisserne.
Borgerflow. Dansk og engelsk indbygget. Demo-tilstand er mærket tydeligt, ikke skjult.
Den visuelle workflow-editor med skoleskift-flowet: hændelse, betingelser og handlinger som forbundne noder.
Den visuelle editor. Bygget af folk der kender både sagsområdet og infrastrukturen, men læsbar for alle der skal godkende den.
Administrationsdashboard med status for Digital Post, MitID, tenants og auditlog.
Driftsoverblik: integrationer, køer, tenants og auditlog.
Evidence traces: tabel over indsendelser med sag, resultat, MitID-status og antal steps.
Hver indsendelse efterlader et spor gennem hver dansk servicekontrakt den rørte.

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.

Flowdiagram genereret fra det aktive ECA-flow med forgreninger til skoleleder, medunderskrift eller partshøring.
Diagrammet genereres fra det aktive flow, ikke tegnet i hånden. Grøn er start, blå er handling, rød er afvisning.
  • 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...
Tre steps og ud

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.

Se den køre

Sagsmotoren, trin for trin

To rigtige ECA-arbejdsgange optaget mens de kører: MitID, register-opslag, afgørelse, Digital Post og GDPR-spor. Se dem herunder, eller åbn den interaktive demo og gennemgå hvert trin.

Merudgifter (SEL §41)

AabenForms merudgifter-arbejdsgang eksekverer trin for trin til afgørelse og SF2900

Skoleskift (fælles forældremyndighed)

AabenForms skoleskift-arbejdsgang eksekverer trin for trin med medunderskrift

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.

18municipal flows ready
6KOMBIT integrations
4ESDH systems
GPLthe municipality owns it

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.

Citizen flow with MitID login, a four-step progress indicator and an explanation of what happens behind the scenes.
Citizen flow. Danish and English built in. Demo mode is labelled clearly, not hidden.
The visual workflow editor showing the school transfer flow as connected event, condition and action nodes.
The visual editor. Built by people who know both the case area and the infrastructure, but legible to everyone who has to approve it.
Administration dashboard showing Digital Post, MitID, tenants and audit log status.
Operations overview: integrations, queues, tenants and audit log.
Evidence traces: a table of submissions with case, result, MitID status and step count.
Every submission leaves a trace through each Danish service contract it touched.

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.

Flow diagram generated from the active ECA model, branching to school leader review, co-signature or partshøring.
The diagram is generated from the active flow, not drawn by hand. Green is start, blue is action, red is denial.
  • 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...
Three steps and out

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.

Watch it run

The case engine, step by step

Two real ECA workflows recorded as they run: MitID, registry lookups, a decision, Digital Post and a GDPR trace. Watch them below, or open the interactive demo to step through every node.

Disability costs (SEL §41)

AabenForms disability-costs workflow executing step by step to decision and SF2900

School transfer (joint custody)

AabenForms school-transfer workflow executing step by step with co-signature

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.