Ga naar hoofdinhoud

PRD: MID-metercontrole tijdens Onboarding

Status: Draft Auteur: Product & Engineering Datum: 2026-03-18 Versie: 1.1 (verfijnd met vereenvoudigd ja/nee flow)


1. Context & Waarom Nu

Markt- en Regelgevingscontext

  • Vanaf 2027 is een MID-gecertificeerde meter verplicht voor deelname aan het ERE-systeem (Emissie Reductie Eenheden). In 2026 wordt een MID-meter in de meterkast nog gedoogd, maar dit is een tijdelijke overgangsregeling.
  • Het ERE-portaal van Den Hartog Charging laat gebruikers momenteel onboarden zonder harde controle op MID-certificering. Gebruikers met niet-MID-gecertificeerde laadpalen of zonder meetmethode kunnen het volledige onboardingproces doorlopen, waarna bij de admin-verificatie pas blijkt dat ze niet in aanmerking komen.
  • Dit leidt tot verspilde tijd voor zowel de gebruiker als het admin-team, en tot teleurgestelde gebruikers die pas achteraf horen dat ze een andere laadpaal nodig hebben.

Waarom Nu

  • Regelgeving 2027: De deadline voor verplichte MID-meters nadert. Hoe eerder gebruikers hierop worden gewezen, hoe meer tijd ze hebben om actie te ondernemen.
  • Gedoogjaar 2026 loopt af: Gebruikers met MID-meterkast moeten worden geinformeerd dat dit na 2026 niet meer voldoet.
  • Commerciele kans: Den Hartog biedt de Zaptec Go 2 aan als oplossing. Door dit aanbod op het juiste moment te tonen (wanneer de gebruiker ontdekt dat zijn laadpaal niet voldoet) wordt een probleem omgezet in een verkoopkans.
  • Admin-belasting: Elke niet-MID-gebruiker die volledig onboardt genereert verificatiewerk dat uiteindelijk wordt afgewezen. Vroege detectie bespaart admin-capaciteit.
  • Kosten van uitstel: Elke week zonder deze controle betekent meer gebruikers die het volledige onboardingproces doorlopen om vervolgens te worden afgewezen, met bijbehorende frustratie en support-tickets.

2. Gebruikers & Jobs-to-Be-Done

Persona 1: Particuliere Gebruiker (thuislader)

Beschrijving: Particulier met een elektrische auto en een thuislaadpunt. Wil deelnemen aan het ERE-programma om vergoedingen te ontvangen voor groene energie die via zijn laadpaal wordt geleverd.

JTBD: "Wanneer ik mijn laadpaal registreer en ontdek dat deze geen MID-meter heeft, wil ik direct begrijpen wat mijn opties zijn en hoe ik dit kan oplossen, zodat ik niet onnodig het hele proces doorloop om achteraf te worden afgewezen."

Huidige situatie: Zachte waarschuwingen die eenvoudig te negeren zijn. De gebruiker ontdekt het probleem pas bij admin-verificatie.

Persona 2: Zakelijke Gebruiker (BEDRIJF)

Beschrijving: Bedrijf met meerdere laadpunten (eventueel met meerdere EAN-codes). Registreert laadinfrastructuur voor ERE-deelname.

JTBD: "Wanneer ik laadpalen van mijn bedrijf registreer en een model geen MID-meter heeft, wil ik dit per laadpunt weten en een efficiënte manier hebben om dit op te lossen, zodat ik niet mijn hele vloot handmatig moet controleren na onboarding."

Huidige situatie: Geen onderscheid in urgentie; dezelfde zachte waarschuwingen als voor particulieren.

Persona 3: Admin Medewerker (Den Hartog)

Beschrijving: Verifieert dossiers en beantwoordt vragen van gebruikers die vastlopen.

JTBD: "Wanneer gebruikers zich aanmelden zonder MID-meter, wil ik dat ze vooraf zijn geinformeerd en gestuurd naar een oplossing, zodat ik minder tijd kwijt ben aan het uitleggen van MID-vereisten en het afwijzen van dossiers."

Huidige situatie: Moet handmatig uitleggen aan gebruikers waarom hun dossier niet voldoet, wat leidt tot herhaalde support-interacties.


3. Bedrijfsdoelen & Succesmetrieken

Leidende Indicatoren (zichtbaar binnen dagen/weken)

MetriekHuidige BaselineDoelTijdsbestek
% gebruikers dat aanbiedingspagina ziet na MID-checkN.v.t. (nieuw)Tracking activerenWeek 1 na livegang
Doorklik naar offertepagina / bestelformulierN.v.t. (nieuw)>20% van gebruikers die pagina zien4 weken na Phase 1
% niet-MID-gebruikers dat toch doorgaat met onboarding (ondanks waarschuwing)[Aanname: ~80% gaat nu door zonder actie]<40% in Phase 1 (soft block)6 weken na livegang
Gemiddelde admin-verwerkingstijd per afgewezen dossier (MID-gerelateerd)[Aanname: ~10 min per afwijzing]-50% door minder MID-afwijzingen8 weken na livegang

Achterblijvende Indicatoren (bedrijfsresultaten)

MetriekHuidige BaselineDoelTijdsbestek
Conversie aanbiedingspagina naar Zaptec Go 2 bestelling/offerteN.v.t.>5% van bezoekers aanbiedingspagina3 maanden (Phase 2)
Afname MID-gerelateerde admin-afwijzingen[Te meten via admin-verificatiestatus]-60%3 maanden
MID-adoptiepercentage nieuwe laadpalen[Te meten]>80% van nieuw geregistreerde laadpalen6 maanden
Onboarding funnel drop-off bij laadpaal-stap[Meetbaar via AdminAnalyticsPage]Stabiel of lichte daling (niet significant stijgen door blokkade)4 weken na livegang

4. Functionele Eisen

Hoofdflow: Vereenvoudigde Ja/Nee MID-controle

De huidige meetmethode-selector (4 opties) wordt voor niet-MID modellen vervangen door een eenvoudige binaire vraag. Dit maakt de flow intuïtiever en stuurt de gebruiker effectiever.

Triggermoment: Direct nadat een gebruiker een laadpaalmodel selecteert uit de standaardlijst dat NIET MID-gecertificeerd is (isMidCertified === false).

Flow-diagram:

Gebruiker selecteert model uit standaardlijst


Model is MID-gecertificeerd?
│ │
JA NEE
│ │
▼ ▼
Normale flow "Zit uw MID-meter
(MID_METER in de meterkast?"
auto-select) │ │
JA NEE
│ │
▼ ▼
Doorgaan met Toon Zaptec Go 2
MID_METERKAST aanbiedingspagina
+ waarschuwing
boekjaar 2026
FR-1: MID-meterkast vraag bij niet-MID model (standaardlijst)
- Beschrijving: Wanneer een gebruiker een laadpaalmodel selecteert uit de
standaard (goedgekeurde) lijst en dat model is NIET MID-gecertificeerd,
wordt een vervolgvraag getoond: "Zit uw MID-meter wel in de meterkast?"
Dit vervangt de huidige 4-optie meetmethode-selector voor niet-MID modellen.
- Acceptatiecriteria:
- [ ] Vraag verschijnt direct na modelselectie in de vereenvoudigde flow
(ChargingPointFormSimplified) wanneer model.isMidCertified === false
- [ ] Twee duidelijke antwoordopties:
(A) "Ja, mijn MID-meter zit in de meterkast"
(B) "Nee, ik heb geen MID-meter"
- [ ] Bij antwoord JA: measurementType wordt gezet op MID_METERKAST,
waarschuwingstekst wordt getoond (zie FR-4), gebruiker kan doorgaan
- [ ] Bij antwoord NEE: Zaptec Go 2 aanbiedingspagina wordt getoond (FR-2)
- [ ] Bij MID-gecertificeerde modellen: geen verandering, MID_METER wordt
automatisch geselecteerd zoals nu het geval is
- [ ] Werkt voor zowel PARTICULIER als BEDRIJF accounts
- Prioriteit: P0
FR-1b: MID-check bij handmatige invoer
- Beschrijving: Bij handmatige invoer (ManualFormView) blijft de huidige
MeasurementTypeSelector bestaan, maar wordt de MID-check getriggerd bij
submit wanneer geen MID-meetmethode is gekozen.
- Acceptatiecriteria:
- [ ] Bij submit zonder meetmethode of met "Geen van beide / Weet ik niet":
toon Zaptec Go 2 aanbiedingspagina
- [ ] Bij submit met SECUNDAIR_ALLOCATIEPUNT: toon Zaptec Go 2 aanbiedingspagina
(SAP telt niet als geldige MID-oplossing)
- [ ] MID_METER en MID_METERKAST: geen blokkade
- Prioriteit: P0
FR-2: Zaptec Go 2 aanbiedingspagina (in-app)
- Beschrijving: Een volledige pagina/overlay die wordt getoond wanneer de
gebruiker "Nee" antwoordt op de meterkast-vraag (FR-1) of de MID-check
triggert bij handmatige invoer (FR-1b). De pagina legt uit waarom MID
nodig is en toont het Zaptec Go 2 aanbod.
- Inhoud:
- Uitleg waarom MID-meter vereist is voor ERE-deelname
- Zaptec Go 2 productinformatie met afbeelding
- Prijzen: EUR 800 incl. BTW (kaal) / ca. EUR 1.600 incl. BTW (met installatie)
- CTA 1: "Vraag een offerte aan" -> link naar
https://www.denhartogbv.com/zero-emission/contact/offerte/?utm_source=ere-platform&utm_medium=referral&utm_campaign=mid-check
- CTA 2: "Terug naar laadpaal" (ander model kiezen of meetmethode aanpassen)
- CTA 3: "Toch doorgaan zonder MID-meter" (Phase 1: zachte blokkade, subtiele tekstlink)
- Acceptatiecriteria:
- [ ] Pagina toont correcte productinformatie en prijzen
- [ ] "Vraag een offerte aan" opent externe link in nieuw tabblad met UTM-parameters
- [ ] "Toch doorgaan" laat gebruiker verder gaan maar slaat een flag op
(midCheckBypassed: true) op de ChargingPoint
- [ ] "Terug" navigeert terug naar het laadpaalformulier
- [ ] Pagina is responsive (desktop, tablet, mobiel via Capacitor)
- [ ] Pagina bevat geen hardcoded prijzen maar leest uit een configuratiebestand
of constanten-bestand (voor toekomstige wijzigingen)
- [ ] Zaptec Go 2 afbeelding wordt geladen van een geoptimaliseerde bron
- Prioriteit: P0
FR-3: "Toch doorgaan" flow met waarschuwing
- Beschrijving: In Phase 1 mag de gebruiker toch doorgaan, maar met een
duidelijke waarschuwing en tracking.
- Acceptatiecriteria:
- [ ] Na klikken op "Toch doorgaan" wordt een bevestigingsdialoog getoond:
"Weet je zeker dat je wilt doorgaan zonder MID-meter? Je dossier kan
worden afgewezen bij verificatie."
- [ ] Bij bevestiging wordt de laadpaal opgeslagen met measurementType = null
en een veld midCheckBypassed = true
- [ ] Admin-dashboard toont een indicator bij laadpalen waar midCheckBypassed = true
- [ ] Event wordt gelogd voor analytics (gebruiker passeerde MID-check)
- Prioriteit: P0
FR-4: MID_METERKAST waarschuwing (bij "Ja, meterkast")
- Beschrijving: Wanneer de gebruiker "Ja, mijn MID-meter zit in de meterkast"
antwoordt, wordt een duidelijke waarschuwing getoond over de beperkte
geldigheid.
- Waarschuwingstekst:
"Goed voor dit jaar. Maar let op: de MID-meter in de meterkast is alleen
geldig voor boekjaar 2026. Voor boekjaar 2027 geldt dat alleen aanspraak
op ERE's kan worden gemaakt middels een MID-meter in de laadpaal."
- Acceptatiecriteria:
- [ ] Amber/oranje waarschuwing wordt direct getoond na selectie "Ja"
- [ ] Tekst bevat exacte formulering over boekjaar 2026 vs 2027
- [ ] Subtiele verwijzing naar Zaptec Go 2: "Wil je je laadpunt
toekomstbestendig maken? Bekijk onze Zaptec Go 2 aanbieding."
- [ ] Link naar offertepagina
- [ ] Gebruiker wordt NIET geblokkeerd (kan gewoon doorgaan met formulier)
- [ ] measurementType wordt gezet op MID_METERKAST
- Prioriteit: P0
FR-5: MID-check bij bewerken van bestaande laadpalen
- Beschrijving: Wanneer een gebruiker een bestaande laadpaal bewerkt en het
model wijzigt naar een niet-MID-model, wordt dezelfde ja/nee-vraag getoond.
- Acceptatiecriteria:
- [ ] Bij wijziging van model naar een niet-MID model: toon meterkast-vraag
- [ ] Bij handmatige bewerking: check bij submit (zelfde als FR-1b)
- [ ] Check werkt zowel vanuit onboarding als vanuit het dashboard
- Prioriteit: P1
FR-6: Admin-zichtbaarheid MID-bypass
- Beschrijving: Het admin-dashboard en verificatie-overzicht tonen een
indicator wanneer een gebruiker de MID-check heeft omzeild.
- Acceptatiecriteria:
- [ ] Admin charging point detailpagina toont een badge "MID-check omzeild"
wanneer midCheckBypassed = true
- [ ] Admin kan filteren op laadpalen met midCheckBypassed = true
- [ ] Admin notities bevatten automatisch een opmerking wanneer de check
is omzeild
- Prioriteit: P1
FR-7: Feature flag voor MID-check
- Beschrijving: De gehele MID-checkfunctionaliteit wordt achter een feature
flag geplaatst zodat deze kan worden aan/uitgezet zonder deployment.
- Acceptatiecriteria:
- [ ] Feature flag MID_CHECK_ENABLED in backend configuratie
- [ ] Wanneer uitgeschakeld: huidig gedrag (bestaande meetmethode-selector) blijft intact
- [ ] Wanneer ingeschakeld: FR-1 t/m FR-6 zijn actief, ja/nee-flow vervangt
de 4-optie selector voor niet-MID modellen
- [ ] Flag is configureerbaar per omgeving (development/staging/production)
- Prioriteit: P0

Phase 2: In-App Bestellen (Toekomst)

FR-8: In-app bestelformulier Zaptec Go 2
- Beschrijving: Gebruikers kunnen direct vanuit de aanbiedingspagina de
Zaptec Go 2 bestellen. Het formulier is vooringevuld met profielgegevens.
- Acceptatiecriteria:
- [ ] Bestelformulier met velden: naam, adres, e-mail, telefoon, keuze
kaal/met installatie, eventuele opmerkingen
- [ ] Profielgegevens (naam, adres, e-mail, telefoon) worden automatisch
ingevuld vanuit het gebruikersprofiel
- [ ] Bij BEDRIJF: bedrijfsnaam en KVK-nummer worden ook ingevuld
- [ ] Bestelling wordt opgeslagen in een nieuw ZaptecOrder model
- [ ] Bevestigingsmail wordt verstuurd naar gebruiker en naar
ere@denhartogbv.com
- [ ] Admin-dashboard toont overzicht van bestellingen
- Prioriteit: P2
FR-9: Harde blokkade (optioneel, Phase 2+)
- Beschrijving: Na evaluatie van Phase 1 resultaten kan de soft block worden
omgezet naar een harde blokkade waarbij "Toch doorgaan" niet meer beschikbaar
is. Gebruiker MOET een MID-oplossing hebben om door te gaan.
- Acceptatiecriteria:
- [ ] "Toch doorgaan" knop is verwijderd of uitgeschakeld
- [ ] Gebruiker kan alleen verder na: (A) meetmethode wijzigen naar
MID_METER of MID_METERKAST, (B) bestelling plaatsen, of
(C) offerte aanvragen
- [ ] Feature flag HARD_BLOCK_ENABLED schakelt tussen soft en hard block
- [ ] Bestaande gebruikers die al zonder MID door onboarding zijn:
worden NIET retroactief geblokkeerd
- Prioriteit: P2

Phase 3: Volledige Integratie (Toekomst)

FR-10: Betaalintegratie Zaptec Go 2 bestelling
- Beschrijving: Online betaling voor de Zaptec Go 2 via Mollie (iDEAL),
vergelijkbaar met de bestaande autorisatie-flow.
- Acceptatiecriteria:
- [ ] Mollie betaalflow voor EUR 800 (kaal) of EUR 1.600 (met installatie)
- [ ] Orderbevestiging na succesvolle betaling
- [ ] Orderstatus tracking in het gebruikersdashboard
- [ ] Webhook-afhandeling voor betalingsstatus-updates
- Prioriteit: P2
FR-11: Installatieplanning
- Beschrijving: Na bestelling met installatie kunnen gebruikers een
installatiedatum selecteren of worden ze doorverwezen naar de planner.
- Acceptatiecriteria:
- [ ] Gebruiker ontvangt e-mail met link naar installatieplanning
- [ ] Of: eenvoudige datumvoorkeur in het bestelformulier
- [ ] Admin ziet installatieplanning in het bestellingsoverzicht
- Prioriteit: P2

5. Niet-Functionele Eisen

Performance

  • De MID-check is puur frontend-logica in Phase 1 (geen extra API-call nodig; isMidCertified is al beschikbaar op het ChargingPointModel object)
  • De aanbiedingspagina moet binnen 300ms renderen na trigger
  • Afbeeldingen van de Zaptec Go 2 worden geoptimaliseerd (WebP, lazy-loaded, max 200KB)

Schaalbaarheid

  • Geen impact op bestaande backend-belasting in Phase 1
  • Phase 2 (bestelformulier) voegt maximaal een handvol bestellingen per dag toe -- verwaarloosbare belasting
  • [Aanname: <50 gebruikers per dag bereiken de laadpaal-stap in onboarding]

SLOs/SLAs

  • Beschikbaarheid: Volgt bestaande applicatie-SLA (geen aparte SLO nodig)
  • De feature flag moet binnen 5 minuten de functionaliteit kunnen uitschakelen na configuratiewijziging

Privacy

  • Geen nieuwe persoonsgegevens worden verzameld in Phase 1
  • Phase 2 (bestelformulier): bestaande profielgegevens worden hergebruikt, geen aanvullende consent nodig
  • midCheckBypassed flag bevat geen persoonsgegevens
  • GDPR/AVG: geen impact in Phase 1

Beveiliging

  • Externe links naar de offertepagina gebruiken rel="noopener noreferrer" en target="_blank" (al bestaand patroon in de codebase)
  • Phase 2: bestelformulier volgt bestaande CSRF-protectie en rate-limiting
  • Feature flag is alleen wijzigbaar via server-side configuratie (niet via client)

Observability

  • Frontend events (Grafana Faro):
    • mid_check.triggered -- MID-check is getriggerd (met context: modelId, measurementType, accountType)
    • mid_check.offer_page.viewed -- Aanbiedingspagina bekeken
    • mid_check.offer_page.cta_clicked -- CTA geklikt (met label: offerte/doorgaan/terug)
    • mid_check.bypassed -- Gebruiker heeft "toch doorgaan" gekozen
  • Backend logging (bij Phase 2+):
    • Bestellingen worden gelogd met audit trail
  • Admin analytics: Nieuw filter op MID-bypass status in admin charging point overzicht

6. Scope

In Scope

  • Phase 1 (dit PRD, nu te bouwen):
    • Vereenvoudigde flow (standaardlijst): Ja/nee meterkast-vraag bij niet-MID modellen (vervangt 4-optie meetmethode-selector)
    • Handmatige invoer flow: MID-check bij submit (bestaande MeasurementTypeSelector blijft)
    • Zaptec Go 2 aanbiedingspagina (modal) met productinfo en offerte-link
    • MID_METERKAST waarschuwing met tekst over boekjaar 2026 vs. 2027
    • "Toch doorgaan" flow met bevestigingsdialoog en bypass-tracking
    • Feature flag (MID_CHECK_ENABLED)
    • Database-veld midCheckBypassed op ChargingPoint model
    • Admin-indicator voor MID-bypass
    • Analytics events via Grafana Faro
    • Werkt voor PARTICULIER en BEDRIJF
    • Werkt voor zowel toevoegen als bewerken van laadpalen
    • Responsive design (desktop + mobiel/Capacitor)

Buiten Scope

  • In-app bestelformulier -- Phase 2, afhankelijk van resultaten Phase 1
  • Mollie betaalintegratie voor Zaptec -- Phase 3
  • Installatieplanning -- Phase 3
  • Harde blokkade (verwijdering "toch doorgaan") -- Phase 2, na evaluatie Phase 1 data
  • Retroactieve controle bestaande gebruikers -- Bestaande gebruikers die al door onboarding zijn worden niet retroactief geblokkeerd of genotificeerd (kan als apart initiatief)
  • Andere laadpaal-aanbiedingen -- Alleen Zaptec Go 2 in eerste instantie
  • Backend validatie/blokkade -- Phase 1 is volledig frontend; backend validatie volgt in Phase 2+
  • Multi-EAN flow aanpassingen -- De MID-check geldt per individuele laadpaal; de multi-EAN flow hoeft niet structureel te worden aangepast

Toekomstige Overwegingen

  • Uitbreiding naar meerdere laadpaal-modellen in het aanbod (niet alleen Zaptec Go 2)
  • CRM-integratie met HubSpot voor lead tracking bij offerte-aanvragen
  • Automatische notificatie aan bestaande gebruikers zonder MID als 2027 nadert
  • A/B-testing van aanbiedingspagina (prijsweergave, CTA-tekst, productfoto's)
  • Integratie met Zaptec partner-portaal voor directe orderverwerking

7. Uitrolplan

Phase 1a: Feature Flag + Detectielogica (Sprint 1)

Werkzaamheden:

  1. Database-migratie: midCheckBypassed Boolean veld op ChargingPoint (default false)
  2. Feature flag MID_CHECK_ENABLED in backend config + frontend constanten
  3. MID-detectielogica in ChargingPointFormSimplified.tsx en MeasurementTypeSelector.tsx
  4. Aanbiedingspagina component (MidMeterOfferPage.tsx of MidMeterOfferModal.tsx)
  5. "Toch doorgaan" flow met bevestigingsdialoog
  6. Grafana Faro events

Gate: Functioneel testen op staging met feature flag AAN. Verifieer dat bestaand gedrag intact is met flag UIT.

Phase 1b: Admin-zichtbaarheid + MID_METERKAST aanpassing (Sprint 2)

Werkzaamheden:

  1. Admin charging point overzicht: badge + filter voor midCheckBypassed
  2. Aangepaste MID_METERKAST warning met Zaptec-verwijzing
  3. MID-check bij bewerken van bestaande laadpalen
  4. Constanten-bestand voor productinformatie en prijzen

Gate: End-to-end test van volledige onboarding flow (PARTICULIER + BEDRIJF). Admin team review van MID-bypass zichtbaarheid.

Phase 1c: Productie-uitrol (Week 3)

Werkzaamheden:

  1. Uitrol naar productie met feature flag UIT
  2. Monitoring van baseline metrics (1-2 dagen)
  3. Feature flag AAN voor 10% van nieuwe gebruikers (canary)
  4. Na 48 uur zonder problemen: feature flag AAN voor 100%

Gate: Geen stijging in support-tickets. Onboarding funnel drop-off bij laadpaal-stap stijgt niet meer dan 10% relatief.

Guardrails

MetriekDrempelActie
Onboarding funnel drop-off bij laadpaal-stap>25% relatieve stijging t.o.v. baselineOnderzoek; mogelijk UX-aanpassing aanbiedingspagina
Support-tickets over MID-check>10 per weekTekst/UX review van aanbiedingspagina
Onboarding completion rate (totaal)>15% relatieve dalingFeature flag UIT, evaluatie
Error rate op aanbiedingspagina>1%Bugfix met prioriteit

Kill-switch

  • Feature flag MID_CHECK_ENABLED: Zet naar false in de server-configuratie (environment variable). Na herstart/herconfiguratie is de MID-check volledig uitgeschakeld en keert het systeem terug naar het huidige gedrag (zachte waarschuwingen).
  • Tijdsinvestering kill-switch: <5 minuten (configuratiewijziging + eventueel container restart)
  • Geen dataverlies: Het midCheckBypassed veld blijft intact maar heeft geen functioneel effect wanneer de feature flag uit staat.

8. Risico's & Open Vragen

Bekende Risico's

RisicoImpactKansMitigatie
Gebruikers haken af bij de MID-check en voltooien onboarding nietHoogMiddelPhase 1 is een soft block -- gebruiker kan altijd doorgaan. Guardrail: monitor funnel drop-off.
Aanbiedingspagina voelt als agressieve verkoopMiddelMiddelUX-review met focus op informatief i.p.v. pushy. Toon eerst het "waarom" (regelgeving), dan het aanbod als hulp.
Prijzen van Zaptec Go 2 wijzigenLaagHoogPrijzen in configuratiebestand/constanten, niet hardcoded in componenten.
Bestaande gebruikers in onboarding-flow die halverwege zittenMiddelLaagFeature flag: bestaande onboarding sessions worden niet beinvloed als flag UIT staat. Na activatie: check geldt alleen bij nieuwe laadpaal-toevoegingen.
Multi-EAN BEDRIJF gebruikers worden herhaaldelijk geconfronteerd met MID-check per laadpaalMiddelMiddelToon een "Niet meer tonen voor deze sessie" optie na eerste keer. Of: toon check eenmalig per onboarding-sessie i.p.v. per laadpaal.

Open Vragen

#VraagEigenaarDeadlineStatus
1Moeten bestaande gebruikers (al door onboarding) genotificeerd worden over de MID-vereiste voor 2027?ProductVoor Phase 1cOpen — buiten scope Phase 1, kan als apart initiatief
2Wordt SAP behandeld als "geen MID"?----Beantwoord: Ja, SAP triggert de MID-check
3Moeten prijzen incl. of excl. BTW worden getoond? Verschilt dit voor BEDRIJF?ProductVoor Phase 1aOpen — [Aanname: prijzen zijn incl. BTW, zoals opgegeven door stakeholder]
4Is er een Zaptec Go 2 productafbeelding beschikbaar voor gebruik in de app?MarketingVoor Phase 1aOpen — nodig voor aanbiedingspagina
5Volledige pagina of modal/overlay?----Beantwoord: Modal/overlay (behoud context formulier)
6Hoe wordt MID-check getriggerd bij handmatige invoer?----Beantwoord: Bij submit
7Wordt bij een BEDRIJF met meerdere laadpalen de meterkast-vraag per laadpaal getoond?ProductVoor Phase 1aOpen — [Aanname: per laadpaal, elke laadpaal kan anders zijn]
8Moet de meterkast-vraag verschijnen als inline element in het formulier of als apart tussenscherm?Design/UXVoor Phase 1aOpen — [Aanname: inline in het formulier, direct onder de modelkaart]

Afhankelijkheden

  • Zaptec Go 2 productmateriaal: Afbeelding en actuele prijzen van marketing/sales
  • Offertepagina (extern): De bestaande offertepagina op denhartogbv.com moet UTM-parameters correct verwerken voor tracking
  • Grafana Faro: Custom events moeten correct doorstromen naar het Grafana dashboard (bestaande setup)
  • Database-migratie: Nieuw veld midCheckBypassed vereist een Prisma-migratie die voor productie-deploy moet worden uitgevoerd

Aannames

  • [Aanname: SECUNDAIR_ALLOCATIEPUNT telt niet als geldige MID-oplossing en triggert de MID-check]
  • [Aanname: De aanbiedingspagina wordt als modal/overlay geimplementeerd, niet als aparte route]
  • [Aanname: Phase 1 is volledig frontend-logica; geen backend-validatie of blokkade]
  • [Aanname: <50 gebruikers per dag bereiken de laadpaal-stap -- schaalbaarheid is geen risico]
  • [Aanname: De bestaande InfoCallout en Modal componenten uit het design system worden hergebruikt]

Bijlage A: Technische Impactanalyse

Te wijzigen bestanden (Phase 1)

BestandWijziging
backend/prisma/schema.prismaToevoegen midCheckBypassed Boolean @default(false) op ChargingPoint
backend/src/routes/chargingPoint.routes.tsVerwerken midCheckBypassed bij POST/PATCH
frontend/src/types/index.tsToevoegen midCheckBypassed aan ChargingPoint type
frontend/src/components/charging-points/ChargingPointFormSimplified.tsxMeetmethode-sectie vervangen door ja/nee meterkast-vraag voor niet-MID modellen. MID-modellen behouden huidige auto-select.
frontend/src/components/onboarding/charging-point/MeasurementTypeSelector.tsxBlijft bestaan voor ManualFormView; MID-check bij submit toevoegen
frontend/src/components/onboarding/charging-point/ManualFormView.tsxMID-check bij submit (wanneer geen MID meetmethode)
frontend/src/hooks/useOnboardingChargingPoint.tsState management voor MID-check flow + meterkast-vraag state
frontend/src/hooks/onboardingChargingPointReducer.tsNieuwe actions: SHOW_MID_OFFER, SET_METERKAST_ANSWER, SET_MID_BYPASSED
frontend/src/constants/midMeterOffer.tsNieuw: Constanten voor Zaptec Go 2 product/prijzen
frontend/src/components/onboarding/charging-point/MidMeterkastQuestion.tsxNieuw: Ja/nee vraag component voor niet-MID modellen
frontend/src/components/onboarding/charging-point/MidMeterOfferModal.tsxNieuw: Zaptec Go 2 aanbiedingspagina component
frontend/src/components/onboarding/charging-point/index.tsExport toevoegen voor nieuwe componenten

Nieuwe database-migratie

-- AddMidCheckBypassed
ALTER TABLE charging_points ADD COLUMN mid_check_bypassed BOOLEAN NOT NULL DEFAULT FALSE;

Datamodel-uitbreiding

model ChargingPoint {
// ... bestaande velden ...
midCheckBypassed Boolean @default(false) @map("mid_check_bypassed")
}

Bijlage B: Wireframe Beschrijvingen

B1: Meterkast-vraag (bij niet-MID model uit standaardlijst)

Wordt getoond in het formulier, direct onder de modelkaart, wanneer model.isMidCertified === false.

+---------------------------------------------------------+
| |
| [i] Dit model heeft geen ingebouwde MID-meter |
| |
| Om deel te nemen aan het ERE-programma is een |
| MID-gecertificeerde meter vereist. |
| |
| Zit uw MID-meter in de meterkast? |
| |
| +---------------------------------------------------+ |
| | [o] Ja, mijn MID-meter zit in de meterkast | |
| | (Dit is geldig voor boekjaar 2026) | |
| +---------------------------------------------------+ |
| |
| +---------------------------------------------------+ |
| | [ ] Nee, ik heb geen MID-meter | |
| +---------------------------------------------------+ |
| |
+---------------------------------------------------------+

B2: Waarschuwing bij "Ja, meterkast" (inline, onder de vraag)

+---------------------------------------------------------+
| [!] Let op: boekjaar 2026 vs. 2027 |
| |
| Goed voor dit jaar. Maar let op: de MID-meter in de |
| meterkast is alleen geldig voor boekjaar 2026. Voor |
| boekjaar 2027 geldt dat alleen aanspraak op ERE's kan |
| worden gemaakt middels een MID-meter in de laadpaal. |
| |
| Wil je je laadpunt toekomstbestendig maken? |
| > Bekijk onze Zaptec Go 2 aanbieding (link) |
| |
+---------------------------------------------------------+

B3: Zaptec Go 2 aanbiedingspagina (bij "Nee, geen MID-meter")

Getoond als modal/overlay of als vervangend scherm in het formulier.

+----------------------------------------------------------+
| [X] |
| |
| [!] Je hebt een MID-meter nodig |
| |
| Om deel te nemen aan het ERE-programma heb je een |
| MID-gecertificeerde energiemeter nodig. Vanaf 2027 |
| is dit wettelijk verplicht. |
| |
| Wij bieden een voordelige oplossing: |
| |
| +-------------------------------------------------+ |
| | [Afbeelding Zaptec Go 2] | |
| | | |
| | Zaptec Go 2 | |
| | Laadpaal met ingebouwde MID-meter | |
| | | |
| | Kaal: EUR 800 incl. BTW | |
| | Met installatie: ca. EUR 1.600 incl. BTW | |
| | (afhankelijk van complexiteit installatie) | |
| | | |
| | * MID-gecertificeerde meter ingebouwd | |
| | * Direct geschikt voor ERE-deelname | |
| | * Toekomstbestendig (voldoet aan 2027 eisen) | |
| +-------------------------------------------------+ |
| |
| [ Vraag een offerte aan ] (primary, externe link) |
| |
| [ Terug naar laadpaal ] (outline) |
| |
| Toch doorgaan zonder MID-meter (tekstlink, subtiel) |
| |
+----------------------------------------------------------+

Bijlage C: Beslissingslogica (Pseudocode)

C1: Vereenvoudigde flow (standaardlijst, ChargingPointFormSimplified)

FUNCTIE verwerkModelSelectie(model):

ALS model.isMidCertified === true:
ZET measurementType = "MID_METER" // auto-select, zoals nu
GA DOOR met formulier // geen extra vraag
RETURN

// Model is NIET MID-gecertificeerd
TOON meterkast-vraag: "Zit uw MID-meter in de meterkast?"

ALS antwoord === "JA":
ZET measurementType = "MID_METERKAST"
TOON waarschuwing:
"Goed voor dit jaar. Maar let op: alleen geldig voor boekjaar 2026.
Voor boekjaar 2027 geldt dat alleen aanspraak op ERE's kan worden
gemaakt middels MID-meter in laadpaal."
TOON link naar Zaptec Go 2 offerte (subtiel, als tip)
GA DOOR met formulier

ALS antwoord === "NEE":
TOON ZaptecGo2AanbiedingsModal
LOG event "mid_check.triggered" { modelId, accountType }

ALS gebruiker klikt "Vraag een offerte aan":
OPEN externe offertepagina (nieuw tabblad)
LOG event "mid_check.offer_page.cta_clicked" { label: "offerte" }

ALS gebruiker klikt "Terug naar laadpaal":
SLUIT modal, terug naar model-zoeken
LOG event "mid_check.offer_page.cta_clicked" { label: "terug" }

ALS gebruiker klikt "Toch doorgaan zonder MID-meter":
TOON bevestigingsdialoog
ALS bevestigd:
ZET measurementType = null
ZET midCheckBypassed = true
LOG event "mid_check.bypassed"
GA DOOR met formulier

C2: Handmatige invoer flow (ManualFormView)

FUNCTIE verwerkHandmatigSubmit(formData):

ALS formData.measurementType === "MID_METER":
GA DOOR // OK

ALS formData.measurementType === "MID_METERKAST":
GA DOOR // Gedoogd 2026, waarschuwing al zichtbaar

ALS formData.measurementType === "SECUNDAIR_ALLOCATIEPUNT"
OF formData.measurementType === undefined/null:
TOON ZaptecGo2AanbiedingsModal
// Zelfde flow als C1 "NEE" pad