bmc_hub/fremtidige planer/eskaleringsplan-drift.md
Christian 28a92eeb55 Add tests for case tree structure, timeline UI, and relation tree
- Implement tests to ensure the case tree contains parent and child branches while preventing cycles.
- Verify that the timeline UI utilizes tree filters and cursor paging.
- Confirm that the relation tree is displayed as a separate tab with appropriate search filters and inline module content.

Enhance time tracking with prepaid card usage alerts

- Create a migration to track alerts for prepaid card usage at 80% and 100%.
- Implement triggers to generate cases when usage thresholds are reached, ensuring proper notifications and case management.

Introduce audit logging for time entry edits

- Modify the sync log to include time entry updates in the audit stream without altering existing records.

Establish tracking for vTiger case imports and exports

- Create tables to track cases imported from vTiger into Hub and exports from Hub to vTiger, ensuring idempotency and proper reference management.
2026-09-24 09:12:25 +02:00

1514 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PLAN – Eskaleringsplan / Drift i BMC Hub
> **Status: Fremtidig plan – ikke implementeret.**
>
> Denne plan er en udvidelse af den eksisterende Drift-funktion. Den må ikke
> fjerne, omdøbe eller ændre eksisterende Drift-adfærd uden udtrykkelig,
> bagudkompatibel migrering.
## 1. Formål
Der skal bygges et nyt modul i **The Hub**, som styrer:
- overvågning af kunders og BMC's driftsressourcer
- eskaleringsplaner
- fejlsituationer og driftsalarmer
- automatisk analyse af hvilke dele af infrastrukturen der sandsynligvis er berørt
- oprettelse af driftssager
- maintenance mode
- forslag til kundekommunikation
- intern eskalering
- SLA-regler
- historik og dokumentation
Systemet skal ikke kun vise, **at noget er nede**.
Det skal også kunne forklare:
> Hvad er nede?
> Hvem er berørt?
> Hvor tror vi fejlen ligger?
> Hvorfor tror systemet det?
> Hvad skal vi gøre nu?
> Hvem skal kontaktes?
> Må vi selv fejlrette?
> Kræver noget godkendelse?
> Skal kunden informeres?
---
# 2. Placering i Hub
Under kundens stamdata oprettes et nyt, selvstændigt faneblad:
**Eskaleringsplan**
Fanen supplerer den eksisterende **Drift**-fane. Drift-fanen bevarer dens
nuværende alarmoversigt og historik. Den nye fane viser og administrerer kun
eskaleringsplanens ressourcer, flows, SLA, kontaktregler, godkendelser og
historik for eskaleringer.
Herfra skal man kunne se kundens:
- driftsressourcer
- overvågede devices
- services
- eskaleringsflows
- kontaktpersoner
- kommunikationsregler
- SLA-regler
- godkendelsesregler
- aktuelle og tidligere driftsproblemer
Men selve en driftsressource må **ikke nødvendigvis eje én kunde**.
En internetforbindelse, switch, firewall eller anden ressource kan være delt mellem flere kunder.
---
# 3. Driftsressourcer
Der skal oprettes et generelt objekt:
`Driftsressource`
Eksempler:
- Internetforbindelse
- Gateway
- Firewall
- Switch
- Access Point
- Server
- VM
- Hosting cluster
- UPS
- WAN
- LAN
- Kundens router
- SaaS-service
- VPN
- DNS
- Microsoft 365
- Datacenter
- Bygning
- Etage
- Netværkssegment
En ressource skal kunne tilknyttes:
- én eller flere kunder
- andre driftsressourcer
- en eller flere overvågningskilder
- kontaktpersoner
- services
- eskaleringsplaner
---
# 4. Ressourcehierarki
Driftsressourcer skal kunne forbindes hierarkisk.
Eksempel:
```text
Internetforbindelse
│
▼
Gateway
/ \
▼ ▼
Switch 1 Switch 2
│ │
▼ ▼
Bygning 1 Bygning 2
│
┌──┴─────┐
▼ ▼
Kunde A Kunde B
```
Dette hierarki bruges til at analysere, **hvor fejlen sandsynligvis ligger**.
---
# 5. Visuel eskalerings-/flow-builder
Eskaleringsplanen skal bygges grafisk.
Det skal ligne eksempelvis:
- Power Automate
- Node-RED
- n8n
- workflow builder
Brugeren skal kunne trække blokke ind på et canvas og forbinde dem.
Eksempel:
```text
[Internet nede]
|
v
[Gateway oppe?]
/ \
JA NEJ
| |
v v
[Check [Mistanke:
Switches] udbyder]
|
v
[Switch 1 oppe?]
/ \
NEJ JA
| |
v v
Bygning 1 Check næste gren
berørt
```
---
# 6. Typer af blokke i flow-builderen
Systemet skal bl.a. have følgende node-typer:
### Trigger
Eksempel:
```text
Device bliver DOWN
```
eller:
```text
Internetforbindelse bliver DOWN
```
### Statuscheck
Eksempel:
```text
Er Gateway-01 UP?
```
### Kombination
Eksempel:
```text
Gateway = UP
OG
Switch-01 = DOWN
OG
Switch-02 = UP
```
### Timer
Eksempel:
```text
Har forbindelsen været nede i 15 minutter?
```
### Impact
Eksempel:
```text
Markér Bygning 1 som berørt
```
### Intern handling
Eksempel:
```text
Opret driftssag
```
### Intern notification
Eksempel:
```text
Send SMS til driftsteam
```
### Godkendelse
Eksempel:
```text
Kræver kundens godkendelse før hardwareudskiftning
```
### Kommunikation
Eksempel:
```text
Foreslå driftsbesked
```
**Må aldrig automatisk sende besked til kunden.**
---
# 7. Overvågningsintegrationer
Eksisterende integrationer, der allerede leverer Drift-events, skal fortsætte
uændret. Første nye integrationer eller udvidelser:
### Uptime Kuma
Bruges eksempelvis til:
- ping
- HTTP
- TCP
- serverstatus
- internetforbindelser
- gateway-status
### UniFi
Bruges eksempelvis til:
- gateways
- switches
- access points
- sites
- internetstatus
- device-status
Den eksisterende UISP-integration bevares som en separat eksisterende kilde;
UniFi tilføjes uden at ændre UISP- eller Uptime Kuma-events, deres synkronisering
eller deres nuværende visning.
Arkitekturen skal være generisk, så senere integrationer kan tilføjes, eksempelvis:
- Prometheus
- UISP
- PRTG
- Zabbix
- SNMP
- Azure Monitor
- Microsoft Graph
- VMware
- Proxmox
- custom API
Overvågningssystemerne skal primært levere **events og status**.
Hubben skal selv afgøre, hvad eventet betyder.
---
# 8. Eksempel – internetforbindelse
Antag:
```text
Internet
│
Gateway
│
┌─┴─────────┐
│ │
Switch 1 Switch 2
│ │
Bygning 1 Bygning 2
```
Hvis:
```text
Internet monitor = DOWN
Gateway = UP
Switch 1 = DOWN
Switch 2 = UP
```
kan Hub konkludere:
```text
Internetforbindelsen er sandsynligvis OK.
Problemet ser ud til at være omkring:
Bygning 1 / Switch 1.
```
Det betyder ikke nødvendigvis:
> Switch 1 er defekt.
Systemet skal i stedet kunne skrive:
> Fejlen er lokaliseret til området omkring Switch 1 / Bygning 1.
Mulige årsager kunne være:
- switch
- strøm
- fiber/kabel
- uplink
- lokalt netværk
---
# 9. Eksempel – kun én kunde berørt
Hvis:
```text
Gateway = UP
Switch = UP
Kunde A router = DOWN
Kunde B router = UP
Kunde C router = UP
```
skal Hub kunne konkludere:
```text
Fejlen ser ud til kun at påvirke Kunde A.
```
Systemet må ikke automatisk konkludere, at BMC's udstyr er defekt.
---
# 10. Hvorfor-visning
Dette er en vigtig funktion.
Når Hub har vurderet et problem, skal teknikeren kunne trykke:
**Hvorfor?**
Så vises hele beslutningsstien.
Eksempel:
```text
07:42 Internet monitor: DOWN
07:42 Gateway-01: UP
07:42 Switch-B1: DOWN
07:42 Switch-B2: UP
07:43 Router Kunde A: DOWN
07:43 Router Kunde B: DOWN
--------------------------------
Regel:
Gateway UP
+
Switch B1 DOWN
+
Switch B2 UP
Resultat:
Sandsynligt problem i Bygning 1.
```
Den aktive vej gennem diagrammet skal visuelt markeres.
Eksempel:
```text
Internet DOWN
↓
Gateway UP ✓
↓
Switch B1 DOWN ✕
↓
Bygning 1 berørt
```
---
# 11. Systemets sikkerhed omkring konklusioner
Hub må gerne lave en teknisk vurdering.
Men der skal skelnes mellem:
**Observeret**
og
**Vurderet**
Eksempel:
```text
Observeret:
Switch B1 svarer ikke.
Vurdering:
Fejlen ser ud til at være lokaliseret til Bygning 1.
```
Ikke:
```text
Switch B1 er defekt.
```
medmindre det faktisk kan konstateres.
---
# 12. Driftssag / Eskaleringssag
Når et relevant flow trigges, skal Hub kunne:
```text
Opret driftssag
```
Driftssagen kan være:
- automatisk oprettet
- manuelt oprettet
Den skal indeholde:
- starttidspunkt
- berørte ressourcer
- berørte kunder
- berørte services
- nuværende status
- severity
- eskaleringsplan
- ansvarlig
- events
- timeline
- vurderet årsag
- hvorfor-visning
- SLA
- notifications
- kundekommunikation
- maintenance status
---
# 13. Severity
Forslag:
```text
INFO
WARNING
MAJOR
CRITICAL
```
Eksempel:
BMC Hostingcenter nede:
```text
CRITICAL
```
En enkelt AP hos en kunde:
```text
WARNING
```
Severity skal kunne defineres i flow-builderen.
---
# 14. BMC's egen hosting
BMC's egen infrastruktur skal kunne have meget aggressive eskaleringsplaner.
Eksempel:
```text
Hosting cluster DOWN
↓
CRITICAL
↓
Opret driftssag
↓
SMS til alle relevante medarbejdere
↓
Push notification
↓
Start eskaleringsplan straks
```
Det må godt ske automatisk internt.
Begrænsningen omkring manuel godkendelse gælder **kundekommunikation**.
---
# 15. SLA
Eskaleringsplaner skal understøtte SLA.
Eksempel:
```text
0 min:
Registrér event
5 min:
Verificér fejlen
15 min:
Opret driftssag
30 min:
Kontakt ansvarlig
60 min:
Eskalér til senior tekniker
4 timer:
SLA-grænse
```
Der skal kunne være:
- responstid
- løsningstid
- tidsfrister
- advarsler
- escalation deadlines
---
# 16. Godkendelsesregler
Under kunden skal det være muligt at definere:
```text
Må BMC fejlrette uden godkendelse?
JA / NEJ
```
Eksempel:
```text
Fejlsøgning:
Tilladt
Genstart:
Tilladt
Firmware-opdatering:
Kræver godkendelse
Hardwareudskiftning:
Kræver godkendelse
Omkostninger over 2.500 kr:
Kræver godkendelse
```
Der skal kunne angives hvem der må godkende.
---
# 17. Kontaktpersoner og driftstilmelding
Kontaktpersoner skal kunne abonnere på drift.
Ikke kun:
```text
Kunde A
```
men også eksempelvis:
```text
Internetforbindelse 047
```
eller:
```text
Bygning 1
```
eller:
```text
Office 365
```
eller:
```text
Hovedkontorets netværk
```
En kontakt kan dermed være tilmeldt flere driftsressourcer.
---
# 18. Delte forbindelser
En internetforbindelse kan være delt mellem flere kunder.
Eksempel:
```text
Internetforbindelse #1028
```
benyttes af:
```text
Kunde A
Kunde B
Kunde C
Kunde D
```
Hub skal derfor kunne beregne:
```text
Berørte kunder: 4
Potentielle modtagere: 12
```
---
# 19. Impact engine
Systemet skal kunne beregne påvirkningen ud fra diagrammet.
Eksempel:
```text
Internetforbindelsen
↓
Gateway
↓
Switch Bygning 1
↓
Kunde A
Kunde B
Kunde C
```
Hvis Switch Bygning 1 går ned:
```text
Berørt:
Kunde A
Kunde B
Kunde C
Ikke berørt:
Kunde D
Kunde E
```
---
# 20. Driftsbeskeder
Fra en driftssag skal der være:
**Generér driftsbesked**
Hub kan automatisk foreslå:
- modtagere
- emne
- tekst
- hvilke kunder der er berørt
- hvilken bygning/service der er berørt
- kendt status
Men:
# Kundekommunikation må ALDRIG sendes automatisk.
Der skal altid være et menneskeligt klik:
```text
GODKEND OG SEND
```
---
# 21. AI / automatisk tekstforslag
Hub kan eksempelvis foreslå:
```text
Driftsforstyrrelse – Bygning 1
Vi oplever i øjeblikket problemer med netværksforbindelsen
i Bygning 1.
Vores overvågning viser, at øvrige dele af forbindelsen
fungerer normalt, og problemet ser derfor ud til at være
lokaliseret til netværket i Bygning 1.
Vi undersøger fejlen og sender en ny status, når der er
yderligere information.
```
Brugeren kan redigere teksten før udsendelse.
---
# 22. Beskedtyper
Systemet bør have mindst:
```text
Driftsforstyrrelse
Opdatering
Planlagt vedligehold
Forlænget nedetid
Drift normaliseret
```
---
# 23. Foreslå kommunikation
Flow-builderen skal kunne have en node:
```text
Foreslå kundekommunikation
```
Eksempel:
```text
Hvis nedetid > 15 minutter
↓
Foreslå driftbesked
```
Dette åbner eksempelvis:
```text
Der er 17 relevante modtagere.
Vil du oprette en driftsbesked?
```
Ikke automatisk sende den.
---
# 24. Maintenance mode
Der skal være en sagstype:
```text
Drift / Vedligehold
```
I sagen kan man vælge:
```text
Sæt devices i maintenance
```
Eksempel:
```text
Gateway-01
Switch-01
Switch-02
AP-01
```
Mens sagen er aktiv:
```text
Maintenance = aktiv
```
Når sagen lukkes:
```text
Maintenance = automatisk fjernet
```
---
# 25. Maintenance slutdato
Ved maintenance kan man sætte:
```text
Start:
24-09-2026 22:00
Forventet slut:
25-09-2026 01:00
```
Hvis maintenance stadig er aktiv efter sluttidspunktet:
```text
ADVARSEL
Maintenance skulle være afsluttet for 38 minutter siden.
```
---
# 26. Events under maintenance
Events skal ikke slettes.
Hvis et device går ned under maintenance:
```text
Event registreret
```
men eksempelvis:
```text
Alarm undertrykt:
Device er i maintenance via sag #1842
```
Så historikken stadig er komplet.
---
# 27. Kritiske undtagelser
Nogle alarmer må aldrig ignoreres under maintenance.
Eksempel:
```text
UPS batterifejl
Brandalarm
Temperatur kritisk
Hosting cluster helt nede
```
De kan markeres:
```text
Ignore maintenance = YES
```
---
# 28. Timeline
Driftssagen skal have én samlet timeline.
Eksempel:
```text
07:41 Uptime Kuma meldte Internet DOWN
07:42 Hub kontrollerede Gateway-01
07:42 Gateway-01 svarede
07:42 Switch-B1 svarede ikke
07:42 Switch-B2 svarede
07:43 Hub vurderede:
Problem sandsynligvis Bygning 1
07:44 Driftssag #1932 oprettet
07:46 Christian åbnede sagen
07:48 Driftsbesked genereret
07:49 Driftsbesked godkendt af Christian
07:50 14 modtagere informeret
```
---
# 29. Audit log
Alle automatiske beslutninger skal kunne spores.
Gem eksempelvis:
```text
regel-id
regel-version
input-data
status på devices
resultat
beslutningssti
timestamp
handlinger
brugerhandlinger
```
Det skal være muligt bagefter at forstå præcis:
> Hvorfor gjorde Hub dette?
---
# 30. Overstyring
Teknikeren skal kunne overstyre systemets vurdering.
Eksempel:
Hub siger:
```text
Mistanke: Netværk Bygning 1
```
Tekniker kan ændre til:
```text
Bekræftet årsag:
Fiberbrud mellem hovedbygning og Bygning 1
```
Den oprindelige automatiske vurdering skal dog stadig gemmes i historikken.
---
# 31. Skabeloner
Der skal kunne bygges templates.
Eksempel:
```text
Standard internetkunde
Standard UniFi-site
Delt erhvervsforbindelse
Hostingkunde
Microsoft 365 kunde
```
Ved oprettelse af ny kunde kan man eksempelvis vælge:
```text
Anvend:
Standard internetkunde
```
og derefter blot tilknytte de rigtige devices.
---
# 32. Regelversionering
Hvis en eskaleringsplan ændres, må historiske driftssager ikke ændre sig.
Eksempel:
```text
Eskaleringsplan v3
```
blev brugt på hændelsen.
Selv hvis planen senere bliver v4, skal sagen stadig kunne vise den regelversion, der faktisk blev brugt.
---
# 33. Systemarkitektur
Overvågningskilder bør sende normaliserede events til Hub.
Eksempel:
```json
{
"source": "uptime_kuma",
"resource_id": 812,
"event": "down",
"timestamp": "...",
"metadata": {}
}
```
Hub behandler eventet gennem:
```text
Monitoring Event
↓
Resource Mapping
↓
Escalation Engine
↓
Impact Engine
↓
Rule Flow
↓
Actions
```
---
# 34. Central event-model
Hub skal ikke være afhængig af et bestemt overvågningssystem.
Normaliser eksempelvis status til:
```text
UP
DOWN
DEGRADED
UNKNOWN
MAINTENANCE
```
Så samme flow kan bruge:
```text
Uptime Kuma
UniFi
Prometheus
UISP
andet
```
---
# 35. UI – kundens stamdata
Fanen:
```text
Eskaleringsplan
```
kunne have undermenuerne:
```text
OVERSIGT
RESSOURCER
FLOW
KONTAKTER
SLA
GODKENDELSER
HISTORIK
```
---
# 36. UI – live flow
Når en driftssag er aktiv, skal diagrammet kunne vises live.
Eksempel:
```text
[Internet DOWN]
↓
[Gateway]
UP ✓
↓
┌────────┴────────┐
↓ ↓
[Switch B1] [Switch B2]
DOWN ✕ UP ✓
↓
[BYGNING 1]
BERØRT
```
Aktive nodes skal fremhæves.
Teknikeren skal kunne klikke på en node og se:
```text
Status
Sidste check
Datakilde
Device
Regel
Resultat
```
---
# 37. Drift dashboard
På Hub's eksisterende **Drift**-side bør aktive eskaleringssager vises.
Eksempel:
```text
CRITICAL 1
MAJOR 2
WARNING 4
```
Kort kan eksempelvis vise:
```text
Norva24
Netværk – Bygning 1
Start: 07:42
Varighed: 28 min
3 kunder berørt
14 kontaktpersoner
Mistanke:
Lokalt netværk Bygning 1
```
---
# 38. MVP – første version
Første version bør fokusere på:
```text
Driftsressourcer
Kunde ↔ ressource relationer
Delte ressourcer
Uptime Kuma integration
UniFi integration
Visuel flow-builder
UP/DOWN conditions
AND / OR conditions
Tidsbetingelser
Opret driftssag
Impact analyse
Hvorfor-visning
Timeline
Maintenance mode
Kontaktperson ↔ driftsressource
Generér driftsbesked
MANUEL godkendelse og send
Audit log
```
---
# 39. Version 2
Efter MVP:
```text
Avancerede SLA-regler
SMS
Push
Telefoneskalering
Webhook actions
Flere overvågningssystemer
AI-genereret statusbesked
Automatisk root-cause forslag
Dependencies mellem services
Service maps
Statistik
Rapportering
SLA-performance
```
---
# 40. Absolutte regler
Disse regler skal overholdes:
**1. Kundebeskeder må aldrig sendes automatisk.**
Hub må:
```text
foreslå besked
foreslå modtagere
generere tekst
```
men et menneske skal altid godkende udsendelsen.
**2. Automatiske vurderinger skal kunne forklares.**
Man skal altid kunne se:
```text
Hvorfor nåede systemet frem til dette resultat?
```
**3. Observation og konklusion skal adskilles.**
Eksempel:
```text
Observation:
Switch svarer ikke.
Vurdering:
Problemet ser ud til at være lokaliseret omkring switchen.
```
**4. En driftsressource kan deles af flere kunder.**
**5. Alle beslutninger og ændringer skal logges.**
**6. Arkitekturen må ikke være låst til Uptime Kuma eller UniFi.**
---
# 41. Eksempel på komplet hændelse
```text
07:40
Internet monitor melder DOWN.
07:41
Gateway responderer stadig.
07:41
Hub følger eskaleringsdiagrammet.
07:41
Switch Bygning 1 = DOWN.
07:41
Switch Bygning 2 = UP.
07:42
Hub beregner impact.
Berørt:
Kunde A
Kunde B
Kunde C
Ikke berørt:
Kunde D
Kunde E
07:42
Hub vurderer:
"Problemet ser ud til at være lokaliseret til
netværket i Bygning 1."
07:42
Driftssag oprettes.
07:43
Teknikeren kan åbne "Hvorfor?"
Internet DOWN
→ Gateway UP
→ Switch B1 DOWN
→ Switch B2 UP
→ Bygning 1 berørt
07:45
Hub foreslår:
"Der er 8 kontaktpersoner tilmeldt de berørte
driftsressourcer.
Opret driftsbesked?"
Teknikeren trykker JA.
Hub genererer teksten.
Teknikeren retter evt. teksten.
Teknikeren trykker:
GODKEND OG SEND
```
---
# 42. Målet
Det færdige system skal gøre, at en tekniker ved en alarm ikke kun ser:
> Device DOWN
men i stedet får:
```text
HVAD SKER DER?
Netværksproblem Bygning 1
HVEM ER BERØRT?
3 kunder
8 kontaktpersoner
HVORFOR TROR HUB DET?
Gateway = UP
Switch B1 = DOWN
Switch B2 = UP
HVAD SKAL VI GØRE?
1. Kontrollér Switch B1
2. Kontrollér uplink
3. Kontakt onsite person hvis nødvendigt
KRÆVER DET GODKENDELSE?
Fejlsøgning: NEJ
Hardwareudskiftning: JA
KUNDEN INFORMERET?
NEJ
[ GENERÉR DRIFTSBESKED ]
```
Det er den retning, jeg ville bygge hele **Eskaleringsplan / Drift**-funktionen efter.
---
# 43. Sameksistens og bagudkompatibilitet – bindende krav
## 43.1 Eksisterende Drift-funktioner
Følgende skal bevares under hele implementeringen:
- Drift-siden med aktive alarmer, filtre, tællere og alarmhistorik
- kundens eksisterende fane **Drift**
- Uptime Kuma- og UISP-events og deres synkronisering
- eksisterende monitor-til-kunde-koblinger
- blacklist af driftsenheder
- godkendelse af alarmer
- eksisterende oprettelse og sammenkædning af sager fra driftsevents
- eksisterende API-endpoints og deres svar til nuværende klienter
Den nye fane **Eskaleringsplan** må ikke erstatte eller omdøbe Drift-fanen.
## 43.2 Data og migrering
Nye driftsressourcer, ressourceforbindelser, eskaleringsflows og abonnements-
relationer oprettes som nye tabeller eller additive felter. De eksisterende
`drift_events`, `drift_devices`, `drift_customer_mappings` og links til sager
må ikke slettes, nulstilles eller have betydning ændret.
En eksisterende monitor-kobling til én kunde skal fortsat virke. Delte
ressourcer modelleres i den nye ressource-relation, så én ressource kan have
flere kunder uden at ændre betydningen af den eksisterende monitor-kobling.
Alle migreringer skal være additive og reversible. Før produktionsmigrering
skal der være en læseprøve, som dokumenterer antal eksisterende events,
mappings, blacklists og sagslinks før og efter migreringen.
## 43.3 Status og API-kompatibilitet
Den eksisterende Drift-statusmodel fortsætter uændret for eksisterende
endpoints og skærme. Den nye eskaleringsmotor kan arbejde med normaliserede
observationer som `UP`, `DOWN`, `DEGRADED`, `UNKNOWN` og `MAINTENANCE`, men
skal oversætte dem ved grænsen til den eksisterende Drift-model.
Eksisterende filtrering, tællere og historik må derfor fortsat forstå aktive,
løste og godkendte alarmer. Nye API’er lægges under nye endpoints; eksisterende
Drift-endpoints ændres ikke i første version.
## 43.4 Sager og maintenance
Når et flow opretter en driftssag, skal det genbruge den eksisterende
sag-oprettelse og bevare linket mellem driftsevent og sag. En ny eskaleringssag
må have ekstra metadata om ressourcer, impact, flow-version og beslutningssti,
men må ikke miste sagens kunde, status, historik eller eksisterende sagslinks.
Maintenance på ressourcer er en ny, sagstyret undertrykkelse af eskalerings-
handlinger. Den holdes helt adskilt fra Hubs eksisterende system-maintenance.
Ressource-maintenance må ikke ændre systemets maintenance-status, og system-
maintenance må ikke automatisk ændre en ressources maintenance.
## 43.5 Implementeringsrækkefølge
1. Kortlæg og test eksisterende Drift-data, endpoints og visninger.
2. Tilføj den additive ressource- og relationsmodel uden at ændre eksisterende
Drift-data.
3. Tilføj fanen **Eskaleringsplan** under kunden.
4. Tilføj læsning, impact, audit og hvorfor-visning.
5. Tilføj flow-handlinger og sag-oprettelse med dubletbeskyttelse.
6. Tilføj resource-maintenance og kundekommunikationsforslag.
Hver fase frigives først, når eksisterende Drift-visning, events,
monitor-koblinger og sagslinks er verificeret uændrede.