<# .SYNOPSIS Pusht pathOS-Analyse-Ergebnisse als Unterseiten nach Confluence .DESCRIPTION Erstellt Unterseiten unter der Seite "Analyse pathOS" (ID: 581013135) Kompatibel mit PowerShell 5.1 .USAGE powershell -ExecutionPolicy Bypass -File ".\project-audit\scripts\confluence-push.ps1" #> $ConfluenceUrl = "https://arija-confluence.jaas.service.deutschebahn.com" $SpaceKey = "BES" $ParentPageId = "581013135" $ApiBase = "$ConfluenceUrl/rest/api" $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $ProjectDir = Split-Path -Parent $ScriptDir [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Write-Host "============================================================" Write-Host " pathOS Analyse -> Confluence Push" Write-Host "============================================================" Write-Host " Ziel: $ConfluenceUrl/spaces/$SpaceKey/pages/$ParentPageId" Write-Host "" # Token aus .secrets laden (falls vorhanden) $SecretsPath = Join-Path $ScriptDir "..\.secrets" $PAT = $null if (Test-Path $SecretsPath) { Get-Content $SecretsPath | ForEach-Object { if ($_ -match "^CONFLUENCE_TOKEN=(.+)$") { $val = $Matches[1].Trim() if ($val -ne "HIER_TOKEN_EINTRAGEN") { $PAT = $val } } } } if (-not $PAT) { $PAT = Read-Host "Confluence PAT" } $Headers = @{ "Authorization" = "Bearer $PAT"; "Content-Type" = "application/json" } function Safe-String($val) { if ($null -eq $val) { return "" } return [string]$val } function HtmlEncode($text) { if ($null -eq $text) { return "" } return [System.Security.SecurityElement]::Escape($text) } # Umlaute als HTML-Entities ersetzen (PS5.1-sicher) function Fix-Umlauts($html) { if ($null -eq $html -or $html -eq "") { return $html } # Schritt 1: Englische/technische Woerter schuetzen $Protect = @( 'Israel','Michael','Raphael','Emmanuel','Manuel','Daniel','Samuel', 'Maurer','Enabler','enabler','Container','container','Cluster','cluster', 'User','user','Tracing','Staging','Logging','Alerting','Monitoring', 'Deployment','deployment','Security','security','Recovery','Discovery', 'Delivery','Pipeline','pipeline','Release','release', 'Performance','performance','Interface','interface', 'Service','service','Feature','feature','Issue','issue', 'value','true','blue','Due','due','Queue','queue', 'Unique','unique','Continue','continue', 'Funnel','Tunnel','tunnel','Buildpacks','Dockerfile', 'OpenSearch','Gherkin','Kubernetes','Helmfile','Renovate', 'Operate','Template','template','Tasklist', 'Smoke','smoke','Analyse','analyse','Analysis', 'Baseline','baseline','Namespace','namespace', 'Codebase','Database','database','Rescue','rescue', 'Oire','oire','Oire','Detailanalyse','detailanalyse', 'Unteranalyse','unteranalyse' ) foreach ($w in $Protect) { $html = $html.Replace($w, "PROTECT_$w") } # Schritt 2: Personen-Namen zuerst (exakt) $html = $html.Replace('Hoerpel', 'Hörpel') $html = $html.Replace('Ruecker', 'Rücker') $html = $html.Replace('Koehler', 'Köhler') $html = $html.Replace('Goendoer', 'Göndör') # Schritt 3: ss-Ligaturen $html = $html.Replace('Massnahme', 'Maßnahme') $html = $html.Replace('massnahme', 'maßnahme') $html = $html.Replace('Groesse', 'Größe') $html = $html.Replace('groesse', 'größe') $html = $html.Replace('gleichmaessig', 'gleichmäßig') $html = $html.Replace('regelmaessig', 'regelmäßig') $html = $html.Replace('schliessen', 'schließen') $html = $html.Replace('Schliessen', 'Schließen') # Schritt 4: ue-Muster $html = $html.Replace('Uebersicht', 'Übersicht') $html = $html.Replace('uebersicht', 'übersicht') $html = $html.Replace('Ueberblick', 'Überblick') $html = $html.Replace('ueberblick', 'überblick') $html = $html.Replace('Uebergreifend', 'Übergreifend') $html = $html.Replace('uebergreifend', 'übergreifend') $html = $html.Replace('Ueberwachung', 'Überwachung') $html = $html.Replace('ueberwachung', 'überwachung') $html = $html.Replace('Uebernahme', 'Übernahme') $html = $html.Replace('Ueberarbeitung', 'Überarbeitung') $html = $html.Replace('Ueber', 'Über') $html = $html.Replace('ueber', 'über') $html = $html.Replace('Pruefung', 'Prüfung') $html = $html.Replace('pruefung', 'prüfung') $html = $html.Replace('Pruef', 'Prüf') $html = $html.Replace('pruef', 'prüf') $html = $html.Replace('fuehrung', 'führung') $html = $html.Replace('Fuehrung', 'Führung') $html = $html.Replace('Ausfuehr', 'Ausführ') $html = $html.Replace('ausfuehr', 'ausführ') $html = $html.Replace('Einfuehr', 'Einführ') $html = $html.Replace('einfuehr', 'einführ') $html = $html.Replace('Verfueg', 'Verfüg') $html = $html.Replace('verfueg', 'verfüg') $html = $html.Replace('Abkuerz', 'Abkürz') $html = $html.Replace('abkuerz', 'abkürz') $html = $html.Replace('Verschluess', 'Verschlüss') $html = $html.Replace('verschluess', 'verschlüss') $html = $html.Replace('Schluess', 'Schlüss') $html = $html.Replace('schluess', 'schlüss') $html = $html.Replace('Verknuepf', 'Verknüpf') $html = $html.Replace('verknuepf', 'verknüpf') $html = $html.Replace('Unterstuetz', 'Unterstütz') $html = $html.Replace('unterstuetz', 'unterstütz') $html = $html.Replace('Stueck', 'Stück') $html = $html.Replace('stueck', 'stück') $html = $html.Replace('Luecke', 'Lücke') $html = $html.Replace('luecke', 'lücke') $html = $html.Replace('Rueckweg', 'Rückweg') $html = $html.Replace('rueckweg', 'rückweg') $html = $html.Replace('Rueckmeld', 'Rückmeld') $html = $html.Replace('rueckmeld', 'rückmeld') $html = $html.Replace('Frueh', 'Früh') $html = $html.Replace('frueh', 'früh') $html = $html.Replace('wuerde', 'würde') $html = $html.Replace('Wuerde', 'Würde') $html = $html.Replace('muessen', 'müssen') $html = $html.Replace('Muessen', 'Müssen') $html = $html.Replace('muesste', 'müsste') $html = $html.Replace('Muesste', 'Müsste') $html = $html.Replace('koennte', 'könnte') $html = $html.Replace('Koennte', 'Könnte') $html = $html.Replace('Nuetzlich', 'Nützlich') $html = $html.Replace('nuetzlich', 'nützlich') $html = $html.Replace('fuer ', 'für ') $html = $html.Replace('Fuer ', 'Für ') # Schritt 5: oe-Muster $html = $html.Replace('Loesung', 'Lösung') $html = $html.Replace('loesung', 'lösung') $html = $html.Replace('Erhoeh', 'Erhöh') $html = $html.Replace('erhoeh', 'erhöh') $html = $html.Replace('noetig', 'nötig') $html = $html.Replace('Noetig', 'Nötig') $html = $html.Replace('moeglich', 'möglich') $html = $html.Replace('Moeglich', 'Möglich') $html = $html.Replace('geloest', 'gelöst') $html = $html.Replace('hoechst', 'höchst') $html = $html.Replace('Hoechst', 'Höchst') $html = $html.Replace('koennen', 'können') $html = $html.Replace('Koennen', 'Können') $html = $html.Replace('Zugehoer', 'Zugehör') $html = $html.Replace('zugehoer', 'zugehör') $html = $html.Replace('gehoer', 'gehör') $html = $html.Replace('Behoerd', 'Behörd') $html = $html.Replace('behoerd', 'behörd') # Schritt 6: ae-Muster $html = $html.Replace('Aenderung', 'Änderung') $html = $html.Replace('aenderung', 'änderung') $html = $html.Replace('Aelteste', 'Älteste') $html = $html.Replace('aelteste', 'älteste') $html = $html.Replace('anfaellig', 'anfällig') $html = $html.Replace('Anfaellig', 'Anfällig') $html = $html.Replace('faellig', 'fällig') $html = $html.Replace('faehig', 'fähig') $html = $html.Replace('traeger', 'träger') $html = $html.Replace('Traeger', 'Träger') $html = $html.Replace('laenger', 'länger') $html = $html.Replace('Laenger', 'Länger') $html = $html.Replace('erklaer', 'erklär') $html = $html.Replace('klaer', 'klär') $html = $html.Replace('Klaer', 'Klär') $html = $html.Replace('verstaerk', 'verstärk') $html = $html.Replace('Verstaend', 'Verständ') $html = $html.Replace('verstaend', 'verständ') $html = $html.Replace('Abhaengig', 'Abhängig') $html = $html.Replace('abhaengig', 'abhängig') $html = $html.Replace('haeufig', 'häufig') $html = $html.Replace('Haeufig', 'Häufig') $html = $html.Replace('laeuft', 'läuft') $html = $html.Replace('Laeuft', 'Läuft') $html = $html.Replace('waere', 'wäre') $html = $html.Replace('Waere', 'Wäre') $html = $html.Replace('schaerfen', 'schärfen') $html = $html.Replace('Schaerfen', 'Schärfen') $html = $html.Replace('aufraeumen', 'aufräumen') $html = $html.Replace('Aufraeumen', 'Aufräumen') $html = $html.Replace('Verlaenger', 'Verlänger') $html = $html.Replace('verlaenger', 'verlänger') $html = $html.Replace('Naechst', 'Nächst') $html = $html.Replace('naechst', 'nächst') $html = $html.Replace('schaetz', 'schätz') $html = $html.Replace('Schaetz', 'Schätz') $html = $html.Replace('Qualitaet', 'Qualität') $html = $html.Replace('qualitaet', 'qualität') $html = $html.Replace('Aktivitaet', 'Aktivität') $html = $html.Replace('Stabilitaet', 'Stabilität') $html = $html.Replace('Komplexitaet', 'Komplexität') $html = $html.Replace('Prioritaet', 'Priorität') # Generisches -taet Suffix (Universitaet, Kapazitaet, etc.) $html = $html -replace '([a-z])taet\b', '$1tät' # Schritt 7: Schutz aufheben $html = $html.Replace('PROTECT_', '') return $html } function Create-Or-Update-Page { param([string]$Title, [string]$HtmlBody, [string]$ParentId) # Umlaute automatisch konvertieren $HtmlBody = Fix-Umlauts $HtmlBody # Pruefen ob Seite existiert $SearchUri = "$ApiBase/content?spaceKey=$SpaceKey&title=$([Uri]::EscapeDataString($Title))&type=page" try { $SearchResp = Invoke-WebRequest -Uri $SearchUri -Headers $Headers -UseBasicParsing -ErrorAction Stop $SearchData = $SearchResp.Content | ConvertFrom-Json } catch { Write-Host " FEHLER bei Suche: $($_.Exception.Message)" -ForegroundColor Red return $null } if ($SearchData.results -and $SearchData.results.Count -gt 0) { # Seite existiert - pruefen ob Inhalt sich geaendert hat $PageId = $SearchData.results[0].id try { $VerResp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId`?expand=version,body.storage" -Headers $Headers -UseBasicParsing -ErrorAction Stop $VerData = $VerResp.Content | ConvertFrom-Json $Version = $VerData.version.number + 1 $CurrentBody = "" if ($VerData.body -and $VerData.body.storage) { $CurrentBody = $VerData.body.storage.value } # Vergleich: HTML-normalisiert (Tags, Entities, Whitespace) $NormCurrent = ($CurrentBody -replace '<[^>]+>' -replace '&\w+;' -replace '\s+', ' ').Trim() $NormNew = ($HtmlBody -replace '<[^>]+>' -replace '&\w+;' -replace '\s+', ' ').Trim() if ($NormCurrent -eq $NormNew) { Write-Host " Keine Aenderung (ID: $PageId)" -ForegroundColor DarkGray return $PageId } } catch { $Version = $SearchData.results[0].version.number + 1 } Write-Host " Aktualisiere (ID: $PageId, Version: $Version)..." -NoNewline $Body = @{ version = @{ number = $Version } title = $Title type = "page" body = @{ storage = @{ value = $HtmlBody representation = "storage" } } } | ConvertTo-Json -Depth 10 try { $Resp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId" -Method Put -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing -ErrorAction Stop Write-Host " OK" -ForegroundColor Green return ($Resp.Content | ConvertFrom-Json).id } catch { Write-Host " FEHLER: $($_.Exception.Message)" -ForegroundColor Red return $null } } else { # Neue Seite erstellen Write-Host " Erstelle neue Seite..." -NoNewline $Body = @{ type = "page" title = $Title space = @{ key = $SpaceKey } ancestors = @(@{ id = $ParentId }) body = @{ storage = @{ value = $HtmlBody representation = "storage" } } } | ConvertTo-Json -Depth 10 try { $Resp = Invoke-WebRequest -Uri "$ApiBase/content" -Method Post -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing -ErrorAction Stop Write-Host " OK" -ForegroundColor Green return ($Resp.Content | ConvertFrom-Json).id } catch { Write-Host " FEHLER: $($_.Exception.Message)" -ForegroundColor Red return $null } } } # ============================================================ # SEITENINHALTE DEFINIEREN # ============================================================ Write-Host "" Write-Host ">> Teste Verbindung..." -ForegroundColor Yellow try { $TestResp = Invoke-WebRequest -Uri "$ApiBase/content/$ParentPageId" -Headers $Headers -UseBasicParsing -ErrorAction Stop $TestData = $TestResp.Content | ConvertFrom-Json Write-Host " Zielseite gefunden: $($TestData.title)" -ForegroundColor Green } catch { Write-Host " Verbindung fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor Red exit 1 } # --- Seite 1: Uebersicht --- Write-Host "" Write-Host ">> Seite 1: Uebersicht und Gesamtbild" -ForegroundColor Yellow $OverviewHtml = @"

pathOS Portfolio-Audit - Uebersicht

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Basis: 167 GitLab-Projekte, 143 Confluence-Seiten, Runbook (arc42)

Dieses Dokument wird iterativ erweitert. Aktuelle Phase: Domain Discovery + Technische Erstanalyse.

Was ist pathOS?

pathOS (ehemals "Bestellsystem") ist die Nachfolgeplattform des Trassenportal Netz (TPN) - dem seit 2002 produktiven System zur Trassenbestellung bei DB InfraGO. pathOS modernisiert den gesamten Bestellprozess fuer Zugtrassen.

EVU-Kunden bestellen ueber pathOS Trassen (Fahrwege) auf dem deutschen Schienennetz. Das System verarbeitet Anmeldungen, koordiniert mit dem Fahrplan, erstellt Angebote und verwaltet Vertraege.

Zahlen auf einen Blick

KennzahlWert
GitLab-Projekte gesamt167
Davon aktiv (< 6 Monate)~109
Davon archiviert32
Untergruppen9 (APIs, Apps, Docs, Infra, Libraries, Mocks, QA, Sandbox, Tools)
HauptspracheJava / Spring Boot (47 Projekte)
Build-SystemMaven (83 Projekte)
Containerisiert46 Projekte mit Dockerfile
Umgebungen17+ (DEV, ABN, PROD Stages)
Externe Schnittstellen15+
Kafka-Topics25+
ADRs75
Confluence-Seiten (pathOS Space)143+

Technologie-Stack

SchichtTechnologie
FrontendAngular, TypeScript, SCSS
BackendJava, Spring Boot
WorkflowCamunda 8 (BPMN)
MessagingApache Kafka (AWS MSK)
DatenbankPostgreSQL (AWS RDS), OpenSearch
IdentityKeycloak (Test), DB WebSSO / Entra ID (Prod)
ContainerDocker, Kubernetes (AWS EKS via CNP)
CI/CDGitLab CI, Helm, Helmfile, Cloud Native Buildpacks
MonitoringPrometheus, Grafana, Talo (Logging), Tempo (Tracing)
SecurityTrivy, OWASP ZAP, Fortify, SonarQube, DefectDojo, Renovate
DatenformatTAF/TAP TSI (EU-Standard), TDM (internes Modell)

Teams

TeamVerantwortung
Team ZeroTAF/TAP Schnittstellen, Stammdaten (Common Interface, Stammdaten-Bereitstellung)
Team 404Bestellportal (Portal UI, Portal Middleware)
Team CIBProzesse und Backend (Steuerung Vertrieb, Auftrags-Verwaltung)
Team STeamInfrastruktur, DevOps, Security (CI/CD, Deployment, Keycloak, Monitoring)
Team BSSUPPORT2nd Level Support
"@ $Page1Id = Create-Or-Update-Page -Title "1. Uebersicht und Gesamtbild" -HtmlBody $OverviewHtml -ParentId $ParentPageId # --- Seite 2: Problemfelder --- Write-Host "" Write-Host ">> Seite 2: Identifizierte Problemfelder" -ForegroundColor Yellow $ProblemsHtml = @"

Identifizierte Problemfelder

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Basierend auf GitLab-Inventar, Confluence-Analyse und Runbook

P1: Deployment-Komplexitaet (KRITISCH)

P2: Fehlende Dokumentation (HOCH)

P3: Technische Schulden (HOCH)

P4: Altsystem-Abhaengigkeit (HOCH)

P5: Team-Struktur und Wissen (MITTEL)

Positiv

"@ $Page2Id = Create-Or-Update-Page -Title "2. Identifizierte Problemfelder" -HtmlBody $ProblemsHtml -ParentId $ParentPageId # --- Seite 3: Technische Roadmap Zusammenfassung --- Write-Host "" Write-Host ">> Seite 3: Technische Roadmap 2026 - Zusammenfassung" -ForegroundColor Yellow $RoadmapHtml = @"

Technische Roadmap 2026 - Zusammenfassung

53 technische Themen, davon 17 MUSS (UKA/GELV), 24 MUSS 2026, 12 SOLL.

Status: 7 in Arbeit, 16 zu erledigen (mit Ticket), 30 ohne Ticket.

Kritischste Themen (MUSS UKA/GELV)

#ThemaStatusPI
1.1Umstellung Kubernetes-Cluster/NamespacesIn ArbeitPI 40
1.2Anbindung Netcool (Betriebsueberwachung)FunnelPI 40/41
1.3Laufzeit-Artefakte aus ECR statt ArtifactoryFunnelPI 41
2.1Vereinfachung StagingKein TicketPI 41
3.1Security-Groups auf egress-EbeneKein TicketPI 41
3.2Konzept Secret-RotationKein TicketPI 41
4.1Umsetzung Monitoring-KonzeptIn ArbeitPI 40-42
5.1Camunda Point-in-Time-RecoveryValidierungPI 39/40
5.2Desaster-Recovery-Test 3ValidierungPI 39/40
5.3Notfall-Recovery-Test (kompletter Neuaufbau)Kein TicketPI 40/41
6.1ADR 72: Anbindung TraPo und C&RAnalysisPI 40/41
7.1AV-Trasse: Full-Table-Scans vermeidenKein TicketPI 41
8.1Upgrade Spring Boot 4 (EOL 3.5: Juni 2026!)FunnelPI 40
8.2Upgrade Camunda 8.8Kein TicketPI 41
9.1Weiterentwicklung Testvorgehen (ADR-70)In ArbeitPI 40/41
9.2LuP Neo: Neu-KonzeptionAnalysisPI 41
10.1Ausarbeitung RunbookIn ArbeitPI 41
"@ $Page3Id = Create-Or-Update-Page -Title "3. Technische Roadmap 2026 - Zusammenfassung" -HtmlBody $RoadmapHtml -ParentId $ParentPageId # --- Seite 4: GitLab Projektlandschaft --- Write-Host "" Write-Host ">> Seite 4: GitLab Projektlandschaft" -ForegroundColor Yellow $GitlabHtml = @"

GitLab Projektlandschaft

167 Projekte in 9 Untergruppen. Generiert am $(Get-Date -Format 'yyyy-MM-dd').

Gruppenstruktur

GruppeAnzahlBeschreibung
apis/37API-Definitionen, OpenAPI-Specs, Datenmodelle
apps/19Laufende Services und Anwendungen
docs/7Dokumentation, Runbook, Schemas
infra/47Deployment, CI/CD, Helm Charts, Keycloak, Monitoring
libraries/7Shared Libraries (core-components, logging, signatures)
mocks/11Mock-Services fuer Tests
qa/15Tests (System, Integration, Performance, Security)
sandbox/13Experimente, PoCs, Pipeline-Tests
tools/10Hilfswerkzeuge (Camunda, Kafka, Migration)

Sprachen-Verteilung

SpracheProjekte
Java47
Dockerfile46
Shell22
Python15
Gherkin14
JavaScript/TypeScript10

Status-Verteilung

StatusAnzahl
Aktiv (letzte 6 Monate)~109
Inaktiv (6M+)21
Inaktiv (1Y+)5
Archiviert32
"@ $Page4Id = Create-Or-Update-Page -Title "4. GitLab Projektlandschaft" -HtmlBody $GitlabHtml -ParentId $ParentPageId # --- Seite 5: Abkuerzungsverzeichnis --- Write-Host "" Write-Host ">> Seite 5: Abkuerzungsverzeichnis" -ForegroundColor Yellow $GlossarHtml = @"

Abkuerzungsverzeichnis pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Alphabetisch sortiert

AbkuerzungBedeutung
ACAbrechnungsCockpit Trasse
ADRArchitecture Decision Record
AV / AVTAuftrags-Verwaltung-Trasse
BaDiFaBahndigitale Fahrplanung
BEPTrassenProduktPruefenUndErgaenzen (Bestelleingangspruefung)
BNetzABundesnetzagentur
CICommon Interface (TAF/TAP TSI)
CNPCloud Native Platform
CRDCommon Reference Data (RNE)
EIUEisenbahninfrastrukturunternehmen
ERegGEisenbahnregulierungsgesetz
EVUEisenbahnverkehrsunternehmen
GELVGelegenheitsverkehr (Meilenstein)
GFD-ZGelegenheitsfahrdienstleistung Zentral
IFPIntegrierte FahrPlanbearbeitung
IMInfrastruktur-Manager (M15)
ISGWInternet Service Gateway
KDVKundendatenverwaltung (CRM)
KOMBauKommunikationsplattform Bau
NEPNetzfahrplan-Erstellungsprozess (NEP1 = erste Anmeldephase, NEP2 = zweite)
NAÄNetzausgeloeste Aenderungen (Aenderungen an Trassen durch den Infrastrukturbetreiber)
NuRNutzer- und Rechteverwaltung (Einfachbahn)
NVNNeuverkehrsnachlass (Rabatt-Tool)
PIProgram Increment (SAFe)
PMWPortal MiddleWare
PzPPunkt-zu-Punkt Rabatte
RNERailNetEurope
RuT-KRechnerunterstuetzte Trassenkonstruktion
SIPSSecurity Infrastructure Proxy Service (Access Proxy)
SNBSchienennetz-Benutzungsbedingungen (Network Statement)
SVSteuerung Vertrieb (Camunda-Prozess)
TADEFTAF/TAP DEFinition (Connector)
TDMTrassen-Daten-Modell (internes Datenformat)
TPNTrassenportal Netz (Altsystem seit 2002)
TPSTrassenpreis-Service (Rabatt)
TTTTAF/TAP TSI (Telematics Applications for Freight/Passengers - Technical Specification for Interoperability)
TTTneoNeue Umsetzungsstrategie TTT (Trassenmanagement)
ujBauUnterjaehriger Baufahrplan
UKAUnternehmenskritische Anwendung
VDVVertragsdaten-Verteiler
"@ $Page5Id = Create-Or-Update-Page -Title "5. Abkuerzungsverzeichnis" -HtmlBody $GlossarHtml -ParentId $ParentPageId # --- Seite 6: Architekturskizze --- Write-Host "" Write-Host ">> Seite 6: Architekturskizze" -ForegroundColor Yellow # draw.io XML einlesen $DrawioPath = Join-Path $ProjectDir "diagrams\pathos-architektur.drawio" $DrawioXml = "" if (Test-Path $DrawioPath) { $DrawioXml = Get-Content $DrawioPath -Raw -Encoding UTF8 # XML-Sonderzeichen fuer Confluence Storage escapen $DrawioXml = $DrawioXml -replace '&(?!amp;|lt;|gt;|quot;|apos;)', '&' Write-Host " draw.io Datei geladen ($($DrawioXml.Length) Zeichen)" } else { Write-Host " WARNUNG: draw.io Datei nicht gefunden: $DrawioPath" -ForegroundColor Yellow } $ArchHtml = @"

Architekturskizze pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Systemkontext nach C4-Methodik

Das Diagramm zeigt den Systemkontext von pathOS mit allen internen Komponenten und externen Schnittstellen. Farbkodierung: Gruen = Portal/Benutzer, Gelb = Prozesse/Fahrplan, Blau = Backend/Daten, Rot = TAF-TAP/Altsystem, Orange = Infrastruktur.

Systemkontext

Interne Komponenten (pathOS)

KomponenteTechnologieFunktion
Portal UIAngularBenutzeroberflaeche fuer EVU und Kundenbetreuer
Portal MiddlewareSpring BootBackend fuer Portal, Validierung, Autorisierung
Steuerung VertriebCamunda 8Workflow-Engine, orchestriert den Bestellprozess
Common InterfaceSpring Boot, SOAPTAF/TAP TSI Schnittstelle fuer EVU-Systeme
Auftrags-VerwaltungSpring BootSpeicherung und Bereitstellung von Auftragsdaten
Kundendaten-BereitstellungSpring BootImport und Bereitstellung von CRM-Kundendaten
Stammdaten-BereitstellungSpring BootImport und Bereitstellung von IM-Stammdaten
Rabattnummern-BereitstellungSpring BootNVN, PzP, Elfen Rabattdaten
IFP-ConnectorSpring BootKafka-Adapter zu TPN/IFP
TAF/TAP-TDM-KonverterSpring BootKonvertierung TAF/TAP XML zu TDM JSON
Vertragsdaten-VerteilerSpring BootKafka-basierte Weiterleitung an Stationsportal
ArchivierungsserviceSpring BootArchivierung bei AC Trasse
TBV-Absicherung-KonverterSpring BootTunnelbegegnungsverbot-Pruefung

Externe Systeme

SystemProtokollFunktion
TPN (Altsystem)Kafka (MSK)Parallelbetrieb, Produktions-/Vertriebsauftraege
BaDiFaRESTFahrplankonstruktion, Kapazitaetsbuchung
BEPRESTBestelleingangspruefung
AC TrasseRESTPreise, Abrechnung, Archivierung
Infrastruktur-ManagerRESTBetriebsstellen, Strecken, Stammdaten
KDV (CRM)RESTKundenstammdaten
NuR / DB WebSSOOIDC / RESTAuthentifizierung und Autorisierung
NVN-ToolRESTNeuverkehrsnachlass-Rabatte
StationsportalKafkaVertragsdaten-Konsument
KOMBauKafkaKommunikation Bau
EVU-SystemeSOAP/XMLTAF/TAP Common Interfaces
Click&RideRESTVereinfachte Gelegenheitsverkehr-Bestellung
GeoServerWMS/WFSKartendarstellung
TBVKafkaTunnelbegegnungsverbot
RNE / CRDInternetEuropaeische Referenzdaten

Infrastruktur

DienstTechnologieDetails
Container-OrchestrierungAWS EKS via CNPMehrere Cluster (DEV, ABN, PROD)
MessagingApache Kafka (AWS MSK)12+ Cluster, 25+ Topics
DatenbankPostgreSQL (AWS RDS)3 Cluster in PROD (SV, AV, Rest)
SuchengineOpenSearchFuer Camunda Operate/Tasklist/Zeebe
IdentityKeycloak (Test) / DB WebSSO (Prod)OIDC, Entra ID
CI/CDGitLab CI, Helm, Helmfile167 Repositories
MonitoringPrometheus, Grafana, Talo, TempoMetriken, Logging, Tracing

Datenfluss: Trassenbestellung (vereinfacht)

  1. EVU erstellt Train-Objekt (Planungsphase, Portal oder API)
  2. Train wird in PathRequests aufgesplittet (Anmeldung)
  3. Steuerung Vertrieb orchestriert: BEP-Pruefung, Fahrplanauftrag an BaDiFa
  4. BaDiFa erstellt Path-Objekte, sendet PathDetailsMessages
  5. AC Trasse berechnet Trassenpreis
  6. Angebot wird dem EVU praesentiert (Portal oder Common Interface)
  7. EVU nimmt an: ProduktVertrag wird erstellt
  8. Vertragsdaten werden an Stationsportal, AC Trasse, Archiv verteilt
"@ $Page6Id = Create-Or-Update-Page -Title "6. Architekturskizze" -HtmlBody $ArchHtml -ParentId $ParentPageId # --- Seite 7: Projektfortschritt --- Write-Host "" Write-Host ">> Seite 7: Projektfortschritt" -ForegroundColor Yellow $ProgressHtml = @"

Projektfortschritt - pathOS Portfolio-Audit

Business Owner: Andre Knie | Methodik: Iterativ (Gather - Analyze - Condense - Explore)

Dieses Projekt analysiert systematisch die ~140 GitLab-Projekte, Confluence-Dokumentation und Architektur von pathOS. Ziel: Klares Gesamtbild, Problemanalyse und priorisierte Roadmap.

Phasenuebersicht

PhaseBeschreibungStatus
Phase 1: Domain DiscoveryDomaene verstehen, Daten sammeln, erstes Gesamtbild✅ Abgeschlossen (80 Min)
Phase 2: Technischer Deep DiveCode-Analyse, Dependencies, Architektur-Bewertung✅ Abgeschlossen (55 Min)
Phase 3: Team & WorkflowTeam-Mapping, Entwicklungsworkflows, Reorganisation✅ Abgeschlossen (30 Min)
Phase 4: Roadmap & AktionsplanPriorisierte Massnahmen, Management-Praesentation☐ Geplant

Iteration 01 - Domain Discovery

Datum: 2026-04-22 | Dauer: ~80 Minuten (09:00-10:20)

#AufgabeStatusZeitraumDauer
0Workspace-Setup, Interview, Scope/Rules/Glossar09:00-09:10~10 Min
1Oeffentliche Quellen recherchieren + Domaenenwissen09:10-09:15~5 Min
2GitLab-Zugang + Inventory-Script (Python -> PS5.1 Fixes)09:15-09:30~15 Min
3GitLab-Inventory ausfuehren + Erstanalyse (167 Projekte)09:30-09:35~5 Min
4Confluence-Zugang + Export-Script (Encoding-Fixes)09:35-09:45~10 Min
5Confluence-Export (143 Seiten) + Schluesselseiten analysieren09:45-09:50~5 Min
6Gesamtbild + Architektur-Diagramme09:50-09:55~5 Min
7Runbook einlesen und analysieren (arc42, ~346KB)09:55-10:00~5 Min
8Confluence-Push-Script + 5 Seiten publiziert10:00-10:08~8 Min
9UKA-Korrektur + Architekturskizze + Fortschritt-Seite10:08-10:20~12 Min
Gesamt Iteration 0109:00-10:20~80 Min

Iteration 02 - Technischer Deep Dive

Datum: 2026-04-22 | Dauer: ~55 Minuten (10:45-11:40)

#AufgabeStatusZeitraumDauer
1Kern-Service READMEs analysieren (apps/)10:45-10:50~5 Min
2pom.xml / package.json ziehen (23 Projekte, Script)10:50-11:00~10 Min
3Spring Boot + Java Versionen erfassen11:00-11:05~5 Min
4Dependency-Graph zwischen Services erstellen11:05-11:10~5 Min
5Shared Libraries + CVE-Patches analysieren11:10-11:20~10 Min
6Technische Gesundheits-Scorecard erstellen11:20-11:30~10 Min
7Ergebnisse dokumentieren + Confluence vorbereitet11:30-11:40~10 Min
Gesamt Iteration 0210:45-11:40~55 Min

Iteration 03 - Team und Workflow Analyse

Datum: 2026-04-22 | Dauer: ~30 Minuten (14:06-14:36)

#AufgabeStatusZeitraumDauer
1Team-zu-Projekt-Mapping aus Runbook + Confluence14:06-14:15~9 Min
2Umgebungs-Workflow analysieren (17+ Umgebungen)14:15-14:20~5 Min
3Release-Prozess + Engpaesse identifizieren14:20-14:28~8 Min
4Reorganisations-Empfehlungen + Confluence vorbereitet14:28-14:36~8 Min
Gesamt Iteration 0314:06-14:36~30 Min

Ergebnisse Iteration 01

ErgebnisDetails
GitLab-Inventar167 Projekte inventarisiert, klassifiziert, Sprachen/Tags erfasst
Confluence-Export143 Seiten exportiert (Markdown + HTML)
Runbook-AnalyseKomplettes arc42-Dokument (~346KB) eingelesen und ausgewertet
DomaenenwissenOeffentliche Quellen zu Trassenbestellung, ERegG, SNB recherchiert
Glossar35+ Abkuerzungen und Fachbegriffe dokumentiert
Problemfelder5 Hauptprobleme identifiziert (Deployment, Doku, Tech Debt, Altsystem, Teams)
ArchitekturskizzeSystemkontext mit allen Komponenten und Schnittstellen
Confluence-Seiten7 Seiten unter "Analyse pathOS" publiziert

Naechste Schritte (Priorisierung offen)

OptionBeschreibungGeschaetzter Aufwand
Architektur-Diagramme verfeinerndraw.io Diagramm erstellen, Datenfluss detaillieren~30 Min
Team-zu-Projekt-MappingWelches Team besitzt welche Repos? Basis fuer Reorganisation~45 Min
Deep Dive Kern-Servicespom.xml, Dependencies, Code-Metriken der wichtigsten Services~60 Min
Geschaeftsprozesse vertiefenVorstudie Kapitel 3-5, BPMN-Prozesse aus Confluence~45 Min
Management-PraesentationErste Folien/Confluence-Homepage fuer Management Board~30 Min
"@ $Page7Id = Create-Or-Update-Page -Title "7. Projektfortschritt" -HtmlBody $ProgressHtml -ParentId $ParentPageId # --- Seite 8: Nuetzliche Links --- Write-Host "" Write-Host ">> Seite 8: Nuetzliche Links" -ForegroundColor Yellow $LinksHtml = @"

Nuetzliche Links - pathOS

Zentrale Anlaufstellen fuer das pathOS-Projekt und die Analyse.

Interne Systeme

SystemURLBeschreibung
GitLab (pathOS)git.tech.rz.db.de/bestellsystem1167 Projekte, 9 Untergruppen
Confluence (pathOS Space)Confluence BES SpaceFachliche und technische Dokumentation
Runbook (Architektur)Runbook Architekturarc42-Architekturdokumentation (aktuell)
Portal UI (Produktion)pathos.app.db.deProduktives Bestellportal
Portal UI (KTU/Test)pathos-iat.app.db.deKundentestumgebung ABN1
Portal UI (EVU-Test)pathos-test.app.db.deEVU-Integrationstests ABN8
Common Interface (Prod)api.pathos.dbinfrago.comTAF/TAP SOAP-Schnittstelle
Stammdaten (Prod)sb.pathos.dbinfrago.comStammdaten-REST-API fuer EVUs
Jiraarija.jaas.service.deutschebahn.comTicketsystem (O2CBS-, O2CSYS-, TTTI-Projekte)
Kafka UI (DEV)kafka-ui.bsz-dev.cnp-test.comp.db.deKafka-Topics Entwicklung
Kafka UI (ABN)kafka-ui.bsz-abn.cnp-test.comp.db.deKafka-Topics Abnahme
SonarQube(intern)Code-Qualitaet
DefectDojovistadojo-prd2-igo.vista.comp.db.deSchwachstellenverwaltung
Grafana (Monitoring)(via CNP)Metriken, Logging, Tracing

Oeffentliche Quellen

QuelleURLBeschreibung
DB InfraGOdbinfrago.comUnternehmensseite
DB InfraGO GitHubgithub.com/dbinfragoOeffentliche Repos (Capella, OpenStation, etc.)
Network Statement (SNB)SNB / Network StatementVertragliche Grundlage Trassennutzung
Bundesnetzagentur (Schiene)BNetzA TrassenpreiseRegulierung und Trassenpreise
DB API Marketplacedevelopers.deutschebahn.comOeffentliche DB APIs
TAF/TAP TSI (RNE)(RNE Website)EU-Standard fuer Trassenanmeldung

Analyse-Ergebnisse (dieses Projekt)

DokumentOrtBeschreibung
Lokaler Workspaceproject-audit/Alle Rohdaten, Scripts, Analysen
GitLab-Inventarproject-audit/data/gitlab-inventory/167 Projekte als JSON, CSV, Markdown
Confluence-Exportproject-audit/data/confluence-export/143 Seiten als Markdown + HTML
Analysenproject-audit/analysis/Gesamtbild, Runbook-Analyse, Diagramme
Scriptsproject-audit/scripts/GitLab-Inventory, Confluence-Export, Push
"@ $Page8Id = Create-Or-Update-Page -Title "8. Nuetzliche Links" -HtmlBody $LinksHtml -ParentId $ParentPageId # --- Seite 9: Customer Journey Happy Path --- Write-Host "" Write-Host ">> Seite 9: Customer Journey - Happy Path" -ForegroundColor Yellow $JourneyHtml = @"

Customer Journey: Happy Path Trassenbestellung

Szenario: Ein EVU-Sachbearbeiter bestellt eine Trasse im Gelegenheitsverkehr ueber das Bestellportal.

Dieser Happy Path zeigt den idealen Ablauf ohne Fehler, Ablehnungen oder Sonderfaelle. Er illustriert den Datenfluss durch alle beteiligten IT-Systeme aus Kundensicht.

Uebersicht: 7 Schritte aus Kundensicht

1. Login
Portal oeffnen
DB WebSSO
2. Planung
Route waehlen
Entwurf erstellen
3. Anmeldung
Train erstellen
Absenden
4. Warten
Status: In
Bearbeitung
5. Angebot
Preis + Laufweg
pruefen
6. Annehmen
Vertrag
abschliessen
7. Vertrag
einsehen
PDF laden

Detaillierter Datenfluss pro Schritt

Schritt 1: Login

KundensichtOeffnet pathos.app.db.de, wird zu DB WebSSO weitergeleitet, gibt Benutzername + Passwort + 2. Faktor ein
IT-SystemeSIPS Access ProxyDB WebSSO (Entra ID)Portal UIPortal Middleware (Token-Validierung) ➔ NuR-Service (Kundennummern laden)
DatenJWT Token, Benutzerrolle, zugeordnete Kundennummern
ProtokollOIDC (OpenID Connect), REST

Schritt 2: Planung

KundensichtWaehlt Start-/Zielbahnhof, Datum, Zuggattung, Geschwindigkeit. Sieht Route auf Karte. Kann Entwurf speichern.
IT-SystemePortal UIPortal Middleware (Stammdaten aus Cache) ➔ Stammdaten-Bereitstellung (Betriebsstellen, Strecken, Zuggattungen) ➔ GeoServer (Kartendarstellung)
DatenBetriebsstellen, Streckenklassen, Zuggattungen, Triebfahrzeuge, Ordnungsrahmen
ProtokollREST/JSON (intern), WMS/WFS (GeoServer)

Schritt 3: Anmeldung absenden

KundensichtKlickt "Anmeldung absenden". Sieht Bestaetigung mit Vorgangsnummer.
IT-SystemePortal UIPortal Middleware (Validierung) ➔ Kafka (Topic: eingangsnachricht) ➔ Steuerung Vertrieb (Camunda-Prozessinstanz starten) ➔ Auftrags-Verwaltung (Train + PathRequest speichern)
DatenTrain-Objekt (TDM JSON), PathRequest, TrainID, Kundennummer
ProtokollREST ➔ Kafka ➔ REST

Schritt 4: Verarbeitung (Kunde wartet)

KundensichtSieht Status "In Bearbeitung" im Portal. Kann andere Anmeldungen bearbeiten.
IT-Systeme
  1. Steuerung VertriebBEP (Bestelleingangspruefung, REST) - Plausibilitaetspruefung
  2. Steuerung VertriebKafka (produktionsauftrag-to-connector) ➔ IFP-ConnectorKafka (produktionsauftrag-to-ifp) ➔ TPN/BaDiFa - Fahrplankonstruktionsauftrag
  3. TPN/BaDiFa konstruiert Trasse (kann Minuten bis Wochen dauern)
  4. TPNKafka (vertriebsauftrag-to-connector) ➔ IFP-ConnectorKafka (vertriebsauftrag-to-sv) ➔ Steuerung Vertrieb - PathDetailsMessage empfangen
  5. Steuerung VertriebAC Trasse (REST) - Trassenpreis ermitteln
  6. Steuerung VertriebAuftrags-Verwaltung (Kafka: auftragsverwaltung) - Angebot speichern
  7. ArchivierungsserviceAC Trasse Archiv (REST) - Revisionssichere Ablage
DatenPathRequest ➔ Produktionsauftrag ➔ Path + PathDetailsMessage ➔ Trassenpreis ➔ VertragsAngebot
ProtokollKafka (async), REST (sync)

Schritt 5: Angebot pruefen

KundensichtErhaelt Benachrichtigung (oder sieht neuen Status im Portal). Oeffnet Angebot: Laufweg, Verkehrstage, Trassenpreis.
IT-SystemePortal UIPortal MiddlewareAuftrags-Verwaltung (REST: Auftraege-API) - Angebot mit PathDetails laden
DatenVertragsAngebot (PathDetailsMessage), Trassenpreis, Laufweg, Verkehrstage
ProtokollREST/JSON

Schritt 6: Angebot annehmen

KundensichtKlickt "Angebot annehmen". Sieht Bestaetigung: Vertrag geschlossen.
IT-SystemePortal UIPortal MiddlewareKafka (eingangsnachricht) ➔ Steuerung Vertrieb (Camunda: Annahme-Schritt) ➔ Auftrags-Verwaltung (ProduktVertrag erstellen, Kafka: auftragsverwaltung)
DatenAnnahme-Nachricht ➔ ProduktVertrag (TDM)
ProtokollREST ➔ Kafka ➔ REST

Schritt 7: Vertrag und Nachverarbeitung

KundensichtSieht Vertrag im Portal. Kann PDF herunterladen. Trasse ist gebucht.
IT-Systeme
  • Portal UIPortal MiddlewareAuftrags-Verwaltung - Vertrag anzeigen
  • Steuerung VertriebAC Trasse (REST) - Abrechnung ausloesen
  • ArchivierungsserviceAC Trasse Archiv - Vertrag revisionssicher ablegen
  • Vertragsdaten-VerteilerKafka (vertragsdaten-to-stationsportal) ➔ Stationsportal
  • TBV-Absicherung-KonverterKafka (tbvAbsicherung) ➔ TBV (Tunnelbegegnungsverbot)
DatenProduktVertrag, Abrechnungsdaten, Vertragsdaten fuer Stationsportal, TBV-Pruefung
ProtokollREST, Kafka

Zusammenfassung Datenfluss

SchrittBeteiligte SystemeKernobjektDauer (GELV)
1. LoginPortal, WebSSO, NuRJWT TokenSekunden
2. PlanungPortal, Stammdaten, GeoServerEntwurfMinuten
3. AnmeldungPortal, SV, AVTrain + PathRequestSekunden
4. VerarbeitungSV, BEP, IFP, TPN/BaDiFa, ACProduktionsauftrag ➔ PathDetailsMinuten-Stunden
5. AngebotPortal, AVVertragsAngebotSekunden
6. AnnahmePortal, SV, AVProduktVertragSekunden
7. VertragPortal, AV, AC, Archiv, Stationsportal, TBVProduktVertrag + AbrechnungSekunden-Minuten

Hinweis: Bei Netzfahrplan-Anmeldungen (NFPL) dauert Schritt 4 deutlich laenger (Wochen bis Monate), da die Fahrplankonstruktion im Rahmen des Jahresfahrplans erfolgt. Zusaetzlich gibt es VNP/ENP-Signale und ein Koordinierungsverfahren bei Konflikten.

"@ $Page9Id = Create-Or-Update-Page -Title "9. Customer Journey - Happy Path" -HtmlBody $JourneyHtml -ParentId $ParentPageId # --- Seite 10: Technischer Deep Dive --- Write-Host "" Write-Host ">> Seite 10: Technischer Deep Dive" -ForegroundColor Yellow $TechHtml = @"

Technischer Deep Dive - Versionen und Abhaengigkeiten

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Basis: 23 pom.xml + 1 package.json der Kern-Services

Technische Gesundheits-Scorecard

KategorieBewertungDetails
Java-Version🟡21 in Services, aber Parent-POM noch auf 17. Inkonsistenz.
Spring Boot🟡3.5.13 auf Master — Upgrade auf 4.0.5 laeuft aktiv. Portal fertig, CI/SV/AV in Arbeit. EOL 3.5: Juni 2026.
Camunda🟢8.8.22 - aktuell, Upgrade auf 8.9 geplant
Angular🟢21.2.4 - sehr aktuell
Dependencies🟢Renovate aktiv, CVEs werden gepatcht
Versionskonsistenz🟡SV hat eigenen Parent-POM, Cucumber/OTel Versionen divergieren
Modularitaet🟡SV mit 18 Maven-Modulen sehr komplex
API-Versionierung🟢Saubere OpenAPI-basierte Versionierung (data-model v10.0.0)
Security🟢Aktive CVE-Patches, Signature-Libs, OAuth2, Mutual SSL
Feature Toggles🟢Togglz integriert in SV und AV
Monitoring🟢OpenTelemetry, Micrometer, Prometheus
Testing🟡Cucumber + JUnit + WireMock, Testkonzept in Ueberarbeitung (ADR-70)

Zentrale Versionen

KomponenteVersionRisiko
Java17 (Parent) / 21 (Services)Parent noch auf 17
Spring Boot3.5.13 (Master) → 4.0.5 (in Arbeit)Upgrade laeuft, EOL Juni 2026
Camunda 88.8.22OK
Angular21.2.4OK
PostgreSQL Driver42.7.10OK
Flyway11.20.3OK
Log4j22.25.4OK
Jackson2.21.2OK
OpenAPI Generator7.21.0OK
AWS SDK2.42.34OK
TypeScript~5.9.2OK

Aktive CVE-Patches (aus pom.xml)

Folgende CVEs wurden aktiv in den pom.xml-Dateien gepatcht:

Steuerung-Vertrieb: Komplexester Service

18 Maven-Module: testutils, model-process, model, tdm-utils, kafka-utils, i18n, api-adapter, persistence, monitoring-utils, process-configuration, camunda-interface, camunda8, application, camunda8-jobworker, assemblies, kit, kafka, feature-toggle

10+ interne API-Dependencies: trassenanmeldung (v8.11.0), versandauftrag (v3.11.0), versandergebnis (v2.14.0), vertriebsauftraege (v8.3.0), produktionsauftrag (v3.5.0), eventmodel (v3.2.0), kundendaten (v2.9.0), objectinfomessage (v2.11.0), data-model (v10.0.0), camunda-events (v2.2.0)

Handlungsempfehlungen

PrioEmpfehlungBegruendung
HOCHSpring Boot 4 Upgrade abschliessenEOL 3.5 ist Juni 2026. Upgrade laeuft aktiv (Portal fertig, CI/SV/AV in Arbeit). Ziel: 4.0.5
KRITISCHParent-POM KonsolidierungSV nutzt eigenen Parent. Divergenz fuehrt zu Inkonsistenzen.
HOCHJava-Version im Parent auf 21Alle Services nutzen bereits 21, Parent hinkt hinterher.
HOCHCucumber-Version vereinheitlichen7.34.3 vs 7.23.0 zwischen Parent und SV.
HOCHSV-Modularitaet pruefen18 Module ist sehr viel. Konsolidierungspotenzial?
MITTELOpenTelemetry synchronisieren2.27.0 vs 2.26.1 zwischen Parent und SV
MITTELTestkonzept modernisierenADR-70 in Arbeit, Cucumber -> JUnit Migration
"@ $Page10Id = Create-Or-Update-Page -Title "10. Technischer Deep Dive" -HtmlBody $TechHtml -ParentId $ParentPageId # --- Seite 11: Team & Workflow Analyse --- Write-Host "" Write-Host ">> Seite 11: Team und Workflow Analyse" -ForegroundColor Yellow $TeamHtml = @"

Team und Workflow Analyse

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Basis: Runbook, Confluence, GitLab-Berechtigungen

Team-Struktur (IST - seit PI 39)

Seit PI 39 neue Struktur: Team STeam wurde aufgeloest. Stattdessen gibt es ein OPs-Team mit 2 festen + rotierenden Mitgliedern aus allen Teams. Die STeam-Aufgaben wurden auf die Entwicklungsteams verteilt.

TeamSubdomaeneKern-VerantwortungProjekte (ca.)
Team ZeroTAF/TAP SchnittstellenCommon Interface, Stammdaten, TAF/TAP-TDM-Konverter, TBV-Konverter + OPs-Anteil~12
Team 404BestellportalPortal UI (Angular), Portal Middleware + OPs-Anteil~4
Team CIBProzesse + BackendSteuerung Vertrieb (Camunda), Auftrags-Verwaltung, IFP-Connector + OPs-Anteil~15
Team OPs (NEU)Infrastruktur / DevOpsCI/CD, Deployment, Monitoring, Security. 2 feste + rotierende Mitglieder~47 (verteilt)
Team STeamInfrastrukturAUFGELOEST seit PI 39 - Aufgaben verteilt auf alle Teams + OPs
Team BSSUPPORTSupport2nd Level Support0 (Jira)
Team FbFFachliche BetriebsfuehrungFachlicher Betrieb, Konfiguration0

Umgebungs-Pipeline

StageUmgebungenZweck
DEVBU, EU, BASE-AT, IEU, SIT, SIT2, LUP, DemoEntwicklung, Review, Integration, Performance
ABNE2E, SAT1-3, ABN1-2-4-8, PREPRODTTT-Integration, Kundentests, Abnahme
PRODPRODProduktionsumgebung (SL Gold)

17+ Umgebungen mit jeweils eigenem Kafka-Cluster, DB-Instanz und Keycloak.

Identifizierte Engpaesse

IDEngpassSchwereDetails
E1Deployment-BottleneckKRITISCH17+ Umgebungen, manuelle Orchestrierung, kein Auto-Smoketest, TTT-Abstimmung noetig
E2OPs-Team KapazitaetHOCHNur 2 feste Mitglieder fuer 47 Infra-Projekte. Rotierende Besetzung birgt Wissensverlust-Risiko.
E3Cross-Team DependenciesHOCH10+ interne APIs, kein Contract Testing (ADR-50 obsolet), Schnittstellenaenderungen erfordern Koordination
E4TTT-AbhaengigkeitMITTELReleases muessen mit TTT-Releasemanagement abgestimmt werden
E5WissenskonzentrationMITTELDevOps-Know-How erst seit 02/2025 im Aufbau, Ziel "You build it, you run it" noch nicht erreicht

Reorganisations-Empfehlungen

Kurzfristig (naechste PIs)

  1. DevOps-Wissen verteilen: Jedes Team mindestens 2 Personen mit Deployment-Faehigkeit
  2. Deployment-Automatisierung: Smoketests nach jedem Deployment
  3. Release-Checkliste digitalisieren: Confluence-Checkliste in Pipeline integrieren

Mittelfristig (2-3 PIs)

  1. Infra-Verantwortung aufteilen: Teams uebernehmen Infra fuer eigene Services (STeam wird Enabler)
  2. Contract Testing einfuehren: Pact oder aehnliches zwischen den Teams
  3. Umgebungen reduzieren: 17+ pruefen, SAT1/SAT2/SAT3 konsolidieren?

Langfristig (6+ Monate)

  1. Team-Schnitt an Subdomaenen: Klare Ownership pro Bounded Context
  2. Platform Team: STeam wird Platform Team mit Self-Service-Tools
  3. TTT-Entkopplung: Eigene E2E-Tests die TTT-Abhaengigkeit reduzieren
"@ $Page11Id = Create-Or-Update-Page -Title "11. Team und Workflow Analyse" -HtmlBody $TeamHtml -ParentId $ParentPageId # --- Seite 12: Roadmap und Aktionsplan --- Write-Host "" Write-Host ">> Seite 12: Roadmap und Aktionsplan" -ForegroundColor Yellow $RoadmapActionHtml = @"

Roadmap und Aktionsplan pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Konsolidierung aller Findings aus Phase 1-3

Management Summary: pathOS ist ein funktionierendes, aktiv entwickeltes System mit solidem Tech-Stack. Die Hauptrisiken liegen nicht im Code, sondern in der operativen Komplexitaet: 17+ Umgebungen, 47 Infra-Projekte bei einem Team, Spring Boot EOL in 2 Monaten, Parallelbetrieb mit Altsystem TPN.

SOFORT (naechste 2 Monate)

#AktionBegruendungAufwand
A1Spring Boot 4 Upgrade abschliessenEOL 3.5 ist Juni 2026. Upgrade laeuft aktiv (Portal fertig, CI/SV/AV in Arbeit, Ziel: 4.0.5).HOCH (1-2 Sprints verbleibend)
A2Parent-POM Java auf 21 anhebenInkonsistenz: Parent=17, Services=21NIEDRIG (1 Tag)
A3Parent-POM Konsolidierung pruefenSV hat eigenen Parent, VersionsdivergenzenMITTEL (1 Sprint)

KURZFRISTIG (naechste 2-3 PIs)

#AktionBegruendungAufwand
A4Deployment-AutomatisierungSmoketests, Release-Checkliste in PipelineMITTEL (2 Sprints)
A5DevOps-Wissen verteilenJedes Team 2+ Personen mit Deployment-FaehigkeitMITTEL (laufend)
A6Camunda 8.8 auf 8.9 UpgradeRoadmap Item 8.2MITTEL (1-2 Sprints)
A7Monitoring-Konzept abschliessenRoadmap Item 4.1, seit PI 39MITTEL (1 Sprint)
A8Disaster-Recovery-Test 3Roadmap Item 5.2/5.3MITTEL (1 Sprint)
A9Secret-Rotation KonzeptRoadmap Item 3.2MITTEL (1 Sprint)
A10AppMesh-AlternativeAWS EOL 2026Abhaengig von CNP
A11Repo-Beschreibungen ergaenzen60% ohne BeschreibungNIEDRIG (1 Tag)
A12Archivierte Repos aufraeumen32 archivierte ProjekteNIEDRIG (1 Tag)

MITTELFRISTIG (3-6 Monate)

#AktionBegruendungAufwand
A13Infra-Verantwortung aufteilenSTeam als Bottleneck entlastenHOCH (mehrere PIs)
A14Contract Testing einfuehren10+ APIs ohne Contract TestsMITTEL (2-3 Sprints)
A15Umgebungen konsolidieren17+ pruefen, SAT1/2/3 zusammenlegen?MITTEL (1-2 Sprints)
A16Full-Table-Scans in AV behebenRoadmap Item 7.1MITTEL (1-2 Sprints)
A17Daten-Partitionierung FahrplanjahrRoadmap Item 7.2, bis Maerz 2027HOCH (2-3 Sprints)
A18Keycloak-Projekte konsolidieren5+ separate ReposNIEDRIG (1 Sprint)
A19API-Versionierung formalisierenRoadmap Item 6.4MITTEL (1 Sprint)
A20GitLab-Repos restrukturierenRoadmap Item 6.7MITTEL (1-2 Sprints)

LANGFRISTIG (6+ Monate)

#AktionBegruendungAufwand
A21Team-Schnitt an SubdomaenenKlare Ownership pro Bounded ContextHOCH (Orga)
A22STeam wird Platform TeamSelf-Service-Tools statt BottleneckHOCH (Orga)
A23TTT-EntkopplungEigene E2E-TestsHOCH (mehrere PIs)
A24TPN-Abloesung abschliessenParallelbetrieb beendenSEHR HOCH

Risiko-Matrix

RisikoWahrscheinlichkeitImpactMassnahme
Spring Boot EOL (Upgrade laeuft)MITTEL (Upgrade aktiv)HOCHA1 — Portal fertig, CI/SV/AV in Arbeit
AppMesh EOL ohne AlternativeMITTELHOCHA10
Deployment-Ausfall durch KomplexitaetMITTELHOCHA4, A5, A15
STeam-Mitarbeiter verlassen ProjektMITTELKRITISCHA5, A13, A22
DB-Performance bei WachstumMITTELHOCHA16, A17
Security-Incident (veraltete Deps)NIEDRIGHOCHRenovate aktiv
"@ $Page12Id = Create-Or-Update-Page -Title "12. Roadmap und Aktionsplan" -HtmlBody $RoadmapActionHtml -ParentId $ParentPageId # --- Seite 13: Jira-Analyse --- Write-Host "" Write-Host ">> Seite 13: Jira-Analyse" -ForegroundColor Yellow $JiraHtml = @"

Jira-Analyse pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 1949 Issues ueber 7 Team-Projekte + ART-Board (90 Tage)

Team-Uebersicht (alle Boards)

TeamKeyIssuesFertigIn ArbeitOffenBugsEnablerCompletion
Team 404O2C404500315331521655363%
Team ZeroO2CZERO41725115151645660%
OPs SquadO2COS37929214731166077%
Team CIBO2CCIB3422391390671670%
DevOpsO2CDEVOPS28915839922715655%
QA/TestO2CQST1411030179%
STeamO2CSYS85030463%
GESAMT1949127111456443934665%

Kritische Erkenntnisse

  1. Bug-Explosion bei Team 404: 165 Bugs (33% aller Issues!) — Portal hat massive Qualitaetsprobleme
  2. OPs: 116 Bugs (31%) — Infrastruktur-Stabilitaet
  3. DevOps = 54% Enabler: 156 von 289 Issues sind Enabler — reiner technischer Overhead
  4. Jan Lubenow: 114 von 289 DevOps-Issues (39%) — kritische Personenabhaengigkeit!
  5. STeam praktisch aufgeloest: Nur noch 8 Issues, Arbeit nach OPs + DevOps migriert

OPs-Team Rotation (bestaetigt)

Assignees im OPs-Board kommen aus allen Teams:

PersonStamm-TeamOPs-Issues
Steven MeixnerZero27
Hans-Henning RambergerCIB23
Jonas KoehlerCIB19
Henrik SchollOPs (fest)19
Kathrin SchleichZero12
Diego Da Costa Souza40410
Frank LemkeZero10

Teamgroessen (aus Assignees)

TeamAktive PersonenKern (>10 Issues)Top-Contributor
Team 404157Ana Cvitkovic (78)
Team CIB166Bishara Jaser (73)
Team Zero96Steven Meixner (64)
OPs Squad23 (rotierend)7Steven Meixner (27)
DevOps73Jan Lubenow (114!)

Naechste Iteration: Offene Datenquellen

QuelleBeschreibungStatus
TTTI BoardUebergreifende Issues pathOS <> TTT-VerbundNaechste Iteration
TTTSol BoardFachliche KlaerungenNaechste Iteration
Support-BoardKunden-Issues, anderes Jira, wird neu aufgesetztNaechste Iteration
"@ $Page13Id = Create-Or-Update-Page -Title "13. Jira-Analyse" -HtmlBody $JiraHtml -ParentId $ParentPageId # --- Seite 14: Audit-Backlog --- Write-Host "" Write-Host ">> Seite 14: Audit-Backlog" -ForegroundColor Yellow $NextHtml = @"

Audit-Backlog pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Wird regelmaessig aktualisiert

Dieses Backlog dokumentiert alle offenen Aufgaben, laufende Arbeiten und moegliche Erweiterungen des pathOS Portfolio-Audits. Status: 🟢 In Progress | 🟡 Bald | ⚪ Irgendwann

🟢 In Progress

#AufgabeBeschreibungSeit
1Personal-Analyse verfeinernTenure-Daten vollstaendig (176 Personen). Bug-Causation-Methodik dokumentiert. Naechster Schritt: Git-Contributions korrelieren.27.04.
2Confluence-Seiten pflegen22 Seiten + Stammseite aktiv. Regelmaessige Updates bei neuen Erkenntnissen.22.04.
3Knowledge Graph erweiternSQLite-DB mit 35 Nodes, 29 Edges. Jira-Exports und SonarQube-Metriken einpflegen.27.04.

🟡 Bald (naechste 1-2 Wochen)

#AufgabeBeschreibungPrioritaet
4Management-PraesentationKompakte Zusammenfassung fuer Management Board: Status, Findings, Herausforderungen, naechste Schritte. Als Confluence-Seite.HOCH
5Team-Reorganisation vertiefenKonkrete Vorschlaege basierend auf Velocity + Personendaten. OPs-Rotation optimieren, SPOF-Risiken adressieren.HOCH
6Code-Qualitaet / SonarQube vertiefenTestabdeckung pro Team/Service. Coverage-Trends. Kritische Smells priorisieren (S1192 in SV: 976 Duplikate).HOCH
7VDV-Erweiterung Abrechnung klaerenWelche Daten, Schnittstelle zu AC, Business Owner treibt an. 5 blocked High-Priority Tickets in TTTSol.MITTEL
8Confluence Seiten 1-5 Inhalt aktualisierenInhalte teilweise veraltet (noch aus Iteration 1). Mit aktuellen Erkenntnissen anreichern.MITTEL

⚪ Irgendwann (Backlog)

#AufgabeBeschreibungAbhaengigkeit
9Support-Board analysierenAnderes Jira-System, wird gerade neu aufgesetzt. 2nd-Level-Support-Tickets auswerten.Neues Board muss stehen
10Performance-DatenProduktions-Metriken (Response Times, Error Rates), LuP-Ergebnisse. Prometheus/Grafana-Zugang noetig.Zugang zu Monitoring
11Geschaeftsprozesse (BPMN) vertiefenCamunda-Prozesse aus Confluence dokumentiert. Tiefere Analyse der Prozess-Instanzen und Fehlerquoten.Camunda-Zugang
12draw.io Diagramme einbettenArchitektur-Diagramm als draw.io Macro in Confluence einbetten (manuell).Keine
13Git-Contributions analysierenCommit-Frequenz, Code-Ownership pro Service, Bus-Faktor berechnen.GitLab API
14Dependency-AnalyseAbhaengigkeiten zwischen Services (Kafka-Topics, REST-Calls). Service-Mesh-Topologie.Keine
15Incident-AnalyseProduktions-Incidents seit Go-Live (Dez 2025). MTTR, Haeufigkeit, betroffene Services.Incident-Daten
16Kosten-AnalyseAWS-Kosten pro Service/Team. Optimierungspotenzial (Right-Sizing, Reserved Instances).AWS Cost Explorer Zugang
17Automatisierte ReportsWoechentlicher/monatlicher Report-Generator (Velocity, Bug-Rate, SonarQube-Trends).Stabile Datenbasis
18Test-Seite loeschen"TEST Umlaut-Pruefung" (ID: 583338908) von Confluence entfernen.Keine

Erledigte Meilensteine

DatumMeilenstein
22.04.2026Domain Discovery: 167 GitLab-Projekte, 143 Confluence-Seiten, Runbook analysiert
22.04.2026Technical Deep Dive: 23 pom.xml, Dependency-Versionen, Tech-Stack dokumentiert
23.04.2026TTT-Programm: Go-Live Dez 2025, Hypercare, 8 Programmrisiken dokumentiert
23.04.2026Velocity 12 Monate: 4875 Issues, Go-Live-Effekt, Team-Trends identifiziert
24.04.2026SonarQube: 74 Projekte, Smells-Detail, Coverage pro Team
24.04.2026Geschaeftsprozesse: BPMN-Flows aus Camunda/Confluence dokumentiert
24.04.2026Produkt-Roadmap konsolidiert (PO-Input + technische Roadmap)
27.04.2026Personal-Analyse: Tenure (176 Personen), Bug-Korrelation, Risiko-Matrix
27.04.2026Knowledge Graph + Skills aufgesetzt (SQLite, FTS5, 3 Kiro-Skills)
30.04.2026Tenure vollstaendig, Bug-Causation Methodik dokumentiert, Backlog erstellt

Datenquellen-Status

QuelleUmfangStatus
GitLab167 Projekte✅ Inventarisiert
Confluence (BES Space)143 Seiten✅ Exportiert
Confluence (TTSI Space)44 Seiten✅ Exportiert
Runbook (arc42)~346KB✅ Eingelesen
pom.xml / package.json23 + 1✅ Analysiert
SonarQube74 Projekte + Smells✅ Analysiert
Jira (alle Boards)24.700 Issues✅ Analysiert
Velocity (12 Monate)4875 Issues✅ Analysiert
Tenure-Daten176 Personen✅ Vollstaendig
Support-BoardAnderes Jira⚠ Wird neu aufgesetzt
Performance-DatenProduktion❌ Kein Zugang
Incident-DatenSeit Go-Live❌ Kein Zugang
AWS-KostenCost Explorer❌ Kein Zugang
"@ $Page14Id = Create-Or-Update-Page -Title "14. Naechste Schritte" -HtmlBody $NextHtml -ParentId $ParentPageId # --- Seite 15: Management Summary --- Write-Host "" Write-Host ">> Seite 15: Management Summary" -ForegroundColor Yellow $MgmtHtml = @"

Management Summary — pathOS Portfolio-Audit

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Business Owner: Andre Knie

Kernaussagesolid#345B63

pathOS ist seit Dezember 2025 produktiv (Go/No-Go Sep 2025 positiv). Das System ist funktionierend und aktiv entwickelt mit solidem Tech-Stack und guter Security. Die Hauptrisiken liegen in der operativen Komplexitaet und Personenabhaengigkeiten — nicht im Code selbst.

Aktueller Status (April 2026)

BereichStatusDetails
Produktivbetrieb🟢 StabilSeit Dez 2025 produktiv. Verlaengerte Hypercare laeuft noch. NEP2 stabil.
Spring Boot Upgrade🟡 In ArbeitEOL 3.5: Juni 2026. Portal fertig, CI/SV/AV in Arbeit. Alle 3 Teams beteiligt.
Portal-Qualitaet (404)🟡 KritischBug-Rate 33% (steigend). Frontend-Qualitaetsproblem. 2 Entwickler mit >69% Bug-Anteil.
Backend (CIB)🟢 GutBug-Rate von 36% auf 9% gesunken. Erfolgsgeschichte nach Go-Live.
Schnittstellen (Zero)🟢 StabilNiedrigste Bug-Rate (15%). Beste Code-Qualitaet (91.8% Coverage).
DevOps SPOF🔴 RisikoJan Lubenow = 39% aller DevOps-Issues. Kritischer Single Point of Failure.

Letzte Meilensteine

DatumMeilenstein
Dez 2025🟢 Go-Live pathOS (produktiv)
Sep 2025🟢 Go/No-Go positiv
Apr 2026🟢 Spring Boot 4 Portal abgeschlossen
Apr 2026🟡 Portfolio-Audit gestartet (167 Projekte, 24.7K Issues analysiert)
Apr 2026🟡 Personal-Analyse: 176 Personen, Tenure, Bug-Korrelation

🔎 Zentrale Findings

#FindingEvidenzBewertung
1Portal-Frontend hat systematisches QualitaetsproblemBug-Rate 33% (steigend), 2 Devs mit >69% Bug-Anteil, QA wenig aktiv. Tenure korreliert NICHT mit Qualitaet.KRITISCH
2DevOps ist personenabhaengigJan Lubenow: 39% aller Issues, 1222 Issues gesamt. Kein gleichwertiger Backup.KRITISCH
3CIB zeigt: Stabilisierung ist moeglichBug-Rate von 36% (Jan) auf 9% (Apr). Kern-Trio (Bishara/Saurav/Jonas) mit >93% Done-Rate.POSITIV
4Zero liefert beste Code-Qualitaet4.2 Smells/1K LoC, 91.8% Coverage. Stabiles Team + gute Praktiken = niedrige Bug-Rate.POSITIV
5OPs-Rotation belastet Zero ueberproportional3 von 5 Rotatoren kommen aus Zero. Steven Meixner: 91 Issues (Zero + OPs).MITTEL
6Inaktive Mitglieder blockieren KapazitaetNorbert Maurer (83% offen), Alexander Petioky (1 Issue/90d), Luca Caracciolo (QA, 5 Issues).MITTEL

⚠ Aktuelle Herausforderungen

Geschaeftskritisch (Kundenversprechen / Regulatorik)

#RisikoTicketsSituation
1Implizite Annahme NAÄTTTSOL-2184 (Highest)
O2CCIB-6931 (offen)
Kunden versprochen, dass sie den Standard-Prozess erleben. CIB-Umsetzung auf naechsten PI geschoben. Fachlich TopThema, technisch unpriorisiert.
220h Zug — AbrechnungTTTSOL-1677 (High)
TTTSOL-2149 (BLOCKED)
Loesung funktioniert nicht. Abrechnung des 20h-Zugs ist blockiert. Korrekte Abrechnung nicht moeglich.
3Abrechnung TTT / AC Trasse41 offene Tickets
8 davon Highest
Grundlegendes Risiko: Nicht korrekt abrechnen zu koennen. Taskforce-FplW aktiv. Tobias Gehrmann bearbeitet 3 Highest-Tickets.

Technisch / Operativ

  1. Spring Boot 3.5 EOL Juni 2026 — Upgrade laeuft, aber Zeitdruck. 3 Services noch nicht fertig.
  2. Portal-Bug-Rate steigt — Kundenseitig sichtbar (EVU-Feedback). Systematisches Frontend-Problem.
  3. DevOps-SPOF — Wenn Jan Lubenow ausfaellt, steht Deployment/CI/CD still.
  4. Hypercare-Belastung — Verlaengerte Hypercare bindet Kapazitaet (07:00-19:00).
  5. TTTI-Integration — 311 offene Tests, 42 echte Bugs. Weniger dramatisch als Zahlen suggerieren.

🚀 Empfohlene naechste Schritte (Top 5)

#MassnahmeZielZeithorizont
1Jan Lubenow entlastenWissenstransfer auf David Steinkopff + Henrik Scholl. Kein Einzelner >25%.Sofort
2Portal-Qualitaet steigernCode-Reviews Emmanuel/Leon. QA aktivieren. Frontend-Testautomatisierung.PI 40
3Steven Meixner entlastenOPs-Rotation auf CIB/404 ausweiten. Zero-Kernarbeit schuetzen.PI 40/41
4Spring Boot 4 abschliessenCI, SV, AV auf 4.0.5. Deadline: Juni 2026 (EOL).PI 40
5CIB Best Practices teilenBishara/Saurav/Jonas als Mentoren fuer 404. Arbeitsweise uebertragen.PI 41

📈 Zeitstrahl: Fachliche und technische Meilensteine

Thema Apr Mai Jun Jul Aug Sep Okt Nov Dez Jan 27 Feb Mär Apr Mai Jun
FACHLICHE MEILENSTEINE
Hypercare (verl.)
NEP2
GelV
ujBau
FplJ 28 Vorbereitung
SL Silber Plus
TECHNISCHE MEILENSTEINE
Spring Boot 4 EOL
Camunda 8.9
Monitoring + Netcool
DR-Test + Secrets
Deployment-Autom.
Daten-Partitionierung
Team-Reorg
TPN-Abloesung

Kritisch In Arbeit Geplant Strategisch

📋 Analyse-Basis

QuelleUmfang
GitLab-Projekte167 (automatisiert inventarisiert)
Confluence-Seiten187 (BES + TTSI Space)
Jira-Issues24.700 (Bulk-Export, 176 Personen)
SonarQube74 Projekte (Smells + Coverage)
Runbook/arc42~346KB Architekturdokumentation
pom.xml / package.json23 + 1 (Versionsanalyse)

Durchgefuehrt in 5 Sessions (Apr 2026). Alle Detail-Ergebnisse in den Unterseiten dokumentiert.

"@ $Page15Id = Create-Or-Update-Page -Title "Management Summary" -HtmlBody $MgmtHtml -ParentId $ParentPageId # --- Seite 16: TTT-Programm und NEP2 --- Write-Host "" Write-Host ">> Seite 16: TTT-Programm und NEP2" -ForegroundColor Yellow $TttHtml = @"

TTT-Programm und NEP2 — Kontext fuer pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Quelle: TTSI Confluence Space

Status: pathOS ist seit Dezember 2025 produktiv (FplJ 27). Go/No-Go war September 2025 — positiv entschieden. Aktuell: Verlaengerte Hypercare + NEP2.

Was ist TTT?

TTT (TAF/TAP TSI — Telematics Applications for Freight / Telematics Applications for Passengers, Technical Specification for Interoperability) ist das uebergreifende Programm zur Einfuehrung des europaeischen Standards fuer Trassenbestellung bei DB InfraGO. Regulatorisch verpflichtend (EU-Verordnungen). Bereits 4x verschoben seit 2014. ~400 Marktteilnehmer muessen gleichzeitig umgestellt werden.

Beteiligte Value Teams

Value TeamBereichSystem
O2C (Order2Cash)VertriebpathOS — Trassenbestellung
C2S (Capacity2Schedule)FahrplanFahrplanung, Kapazitaetsmanagement
S2O (Schedule2Operate)BetriebBetriebliche Meldungen

Meilensteine

MeilensteinBedeutungStatus
Go/No-GoEntscheidung September 2025✅ Positiv entschieden
Go-Live FplJ 27Fahrplanwechsel Dezember 2025✅ Produktiv seit ~4 Monaten
NEP1Netzfahrplan-Erstbestellung✅ Abgeschlossen
HypercareVerlaengerte Stabilisierungsphase⚠ Laeuft noch
NEP2Netzfahrplan Phase 2⚠ Aktuell in Arbeit
GelVGelegenheitsverkehr⚠ In Umsetzung
ujBauUmgebungsjahresbauIn Planung

Go/No-Go (ABGESCHLOSSEN)

DatumEreignisStatus
August 2025Messung vor Stellungnahmeverfahren
September 2025Messung nach Stellungnahmeverfahren
September 2025Go/No-Go Entscheidung — POSITIV
Dezember 2025Fahrplanwechsel — Go-Live FplJ 27
Seit Dezember 2025Hypercare (verlaengert)⚠ Laeuft noch

Programmrisiken (historisch — vor Go-Live identifiziert)

Diese Risiken wurden vor dem Go-Live (Dez 2025) identifiziert. Einige sind durch den erfolgreichen Go-Live mitigiert, andere bestehen in veraenderter Form weiter.

IDRisikoStatus nach Go-Live
TTTSOL-52Unrealistische Go-Live-Entscheidung✅ Go-Live war erfolgreich
TTTSOL-51Rueckstand bei funktionalen Anforderungen⚠ NEP2 + GelV noch in Arbeit
TTTSOL-50Budgetrisiken⚠ Weiterhin relevant
TTTSOL-48Ressourcenengpaesse⚠ Weiterhin relevant (Konkurrenz mit anderen Themen)
TTTSOL-47Mangelnde Qualitaetssicherung⚠ 165 Portal-Bugs, 476 TTTI-Issues offen
TTTSOL-44Ueberplanung ujBau (110 Capabilities)⚠ Weiterhin relevant

Aktueller Fokus fuer pathOS

✅ Go-Live
Dez 2025
JETZT
Hypercare
+ NEP2
Jun 2026
Spring Boot 4
(EOL 3.5!)
Aug 2026
SL Silber Plus
Hypercare Ende
H2 2026
GelV, ujBau
FplJ 28
2027
Team-Reorg
TPN-Abloesung
"@ $Page16Id = Create-Or-Update-Page -Title "15. TTT-Programm und NEP2" -HtmlBody $TttHtml -ParentId $ParentPageId # --- Seite 17: Roadmap uebergreifend + pathOS --- Write-Host "" Write-Host ">> Seite 17: Roadmap uebergreifend + pathOS" -ForegroundColor Yellow $RoadmapFullHtml = @"

Roadmap: TTT-Programm und pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | pathOS ist seit Dezember 2025 produktiv (FplJ 27)

Status: pathOS ist seit ~4 Monaten produktiv. Go-Live war Dezember 2025. Wir befinden uns in verlaengerter Hypercare + NEP2. Service Level Silber Plus wird ab August 2026 erwartet.

Zeitachse: April 2026 bis Mitte 2027

Apr-Jun 2026
JETZT
Stabilisieren
Spring Boot 4
NEP2
Jul-Sep 2026
Haerten
SL Silber Plus
Hypercare Ende
GelV
Okt-Dez 2026
Skalieren
ujBau
FplJ 28 Vorb.
Jan-Jun 2027
Weiterentwickeln
Team-Reorg
TPN-Abloesung

Phase A: JETZT (April-Juni 2026) — Stabilisieren + Schulden abbauen

Spring Boot 3.5 EOL ist Juni 2026. Upgrade muss jetzt laufen.

#AktionDeadlineTeam
A1Spring Boot 4 UpgradeJuni 2026 (EOL 3.5)Alle — LAEUFT! Portal fertig, CI/SV/AV in Arbeit
A2Parent-POM Java 21 + KonsolidierungMai 2026OPs
A3NEP2 Funktionalitaet liefernLaufendCIB, Zero
A4Hypercare-Bugs abarbeitenLaufendAlle
A5Monitoring + NetcoolJuni 2026OPs
A7Portal-Bugs reduzieren (165 Bugs!)Laufend404

Phase B: Sommer 2026 (Juli-September) — Haerten + Erweitern

#AktionDeadlineTeam
B1Hypercare beendenJuli 2026Alle
B2Service Level Silber Plus erreichenAugust 2026OPs
B3DR-Test 3 + Secret-RotationJuli 2026OPs
B5Camunda 8.9 + AV PerformanceAug 2026CIB
B7Deployment-AutomatisierungAug 2026OPs + alle
B8GelV ErweiterungenSep 2026CIB, 404
B10AppMesh-AlternativeSep 2026OPs/CNP

Phase C: Herbst 2026 (Oktober-Dezember) — Skalieren

#AktionDeadlineTeam
C1Daten-Partitionierung FahrplanjahrDez 2026CIB
C2ujBau-FunktionalitaetLaufendCIB, Zero
C3Umgebungen konsolidieren (17+ reduzieren)Nov 2026OPs
C4Contract Testing einfuehrenOkt 2026Alle
C6FplJ 28 VorbereitungDez 2026Alle

Phase D: Fruehling 2027 (Januar-Juni) — Weiterentwickeln

#AktionZeitraumTeam
D1Team-ReorganisationQ1 2027PM/RTE
D2OPs wird Platform TeamQ1 2027PM/RTE
D4GitLab-Repos restrukturierenQ1 2027OPs
D6TPN vollstaendig abloesenQ2 2027Zero, CIB
D7TTT-EntkopplungQ2 2027Alle

Zeitstrahl nach Teams (April 2026 — Juni 2027)

Team / Thema Apr 26 Mai Jun Jul Aug Sep Okt Nov Dez Jan 27 Feb Mär Apr Mai Jun
TEAM 404 (Portal)
Spring Boot 4
NEP2 Portal-Features
Portal-Bugs (165!)
GelV Portal
ujBau Portal
TEAM CIB (Prozesse/Backend)
Spring Boot 4 (SV)
NEP2 Prozesse
Camunda 8.9
AV Full-Table-Scans
Daten-Partitionierung
GelV Backend
TEAM ZERO (TAF/TAP)
Spring Boot 4 (CI/AV)
NEP2 Schnittstellen
EVU-Onboarding
TPN-Abloesung
OPs / DevOps
Monitoring + Netcool
DR-Test + Secrets
SL Silber Plus
Deployment-Autom.
AppMesh-Alternative
Umgebungen reduzieren
UEBERGREIFEND / ORGA
Hypercare (verl.)
TTTI-Bugs (42)
Contract Testing
Team-Reorganisation
Platform Team

Kritisch/Aktiv In Arbeit Geplant Strategisch ▲ = Meilenstein

Zusammenfassung

ZeitraumFokusKritischste Aktion
Apr-Jun 2026StabilisierenSpring Boot 4 (EOL Juni!), NEP2, Hypercare-Bugs
Jul-Sep 2026HaertenSL Silber Plus (Aug), Hypercare beenden, GelV
Okt-Dez 2026SkalierenDaten-Partitionierung, ujBau, FplJ 28
Jan-Jun 2027WeiterentwickelnTeam-Reorg, Platform Team, TPN-Abloesung
"@ $Page17Id = Create-Or-Update-Page -Title "16. Roadmap uebergreifend und pathOS" -HtmlBody $RoadmapFullHtml -ParentId $ParentPageId # --- Seite 18: TTTI Deep Dive --- Write-Host "" Write-Host ">> Seite 18: TTTI Deep Dive" -ForegroundColor Yellow $TttiHtml = @"

TTTI Board Deep Dive

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 1000 Issues gesamt, 558 offen

Bewertung: Der "Rueckstau" von 558 offenen Issues ist weniger dramatisch als es aussieht. Der Grossteil sind ungefuehrte Tests (311) und organisatorische Aufgaben (171). Die 42 echten Bugs sind der relevante Handlungsbedarf.

Aufschluesselung der 558 offenen Issues

TypAnzahlAnteilBewertung
Test Execution22039%Geplante Testlaeufe, noch nicht durchgefuehrt
Aufgabe17131%Organisatorische/koordinative Items
Test9116%Testfall-Definitionen
Bug428%Echte Fehler — relevanter Handlungsbedarf
Test Plan / Test Set285%Test-Organisation
Story61%Feature-Anforderungen

Bug-Status (42 offene Bugs)

StatusAnzahlBewertung
Ready for Release5Quasi geloest
Test9Fix wird getestet
In Bearbeitung10Wird aktiv bearbeitet
Offen12Noch nicht angefasst
Blocked6Blockiert durch Abhaengigkeiten

Kritischste Bugs (High/Highest/Kritisch)

pathOS-bezogen

KeyStatusBeschreibung
TTTI-8102OffenC-Kundennummern koennen nicht an GFD-Z uebergeben werden
TTTI-7983ReadyCamunda Tasklist PROD: Technischer Fehler TPN-TTTRelatedPlannedTransportId null
TTTI-7982ReadyCamunda Tasklist PROD: pathID kann nicht aufgeloest werden
TTTI-7200ReadyNAE wird nicht an Kunden uebergeben

TPN-bezogen

KeyStatusBeschreibung
TTTI-7949In BearbeitungKundenclient: Aenderung nur auf Primaervertrag ausloesbar
TTTI-7025BlockedTPN wirft Fehler bei Pruefung Bestellung in Abgeschlossen
TTTI-7297In BearbeitungPostkorb: Zugnummer-Spalte zeigt falsch Rot

ujBau-bezogen

KeyStatusBeschreibung
TTTI-6572OffenNetzausgeloeste Aenderung kommt nicht an (pathOS/TPN)
TTTI-8143BlockedVT fuer Bautrasse werden nicht ausgestanzt
TTTI-5654BlockedJourneyLocationTypeCode 05 nicht in PDM vorhanden
TTTI-7890OffenBautrasse bleibt im Phasenstatus FPE offen

Abrechnung-bezogen

KeyStatusBeschreibung
TTTI-8005In BearbeitungAufteilen scheitert (vmtl. wg. VZReg am EinbruchsBf)
TTTI-7986In BearbeitungFpl26: Berichte scheitern mit Timeout

35 Blocked Issues

TypAnzahl
Aufgabe21
Test7
Bug6
Story1

Primaer organisatorische Blocker und Abhaengigkeiten zu anderen Systemen (TPN, GFD-Z, ujBau-Tools).

Top-Labels (offene Issues)

LabelAnzahlBedeutung
TTT_MUSS21Muss-Anforderungen fuer TTT
FAHRPLAN17Fahrplan-Integration
TTT_ujBau10Bau-bezogene Integration
TTT_Kunde8Kundenseitige Themen
EVU_SST_TTT8EVU-Schnittstellen-Tests
"@ $Page18Id = Create-Or-Update-Page -Title "17. TTTI Deep Dive" -HtmlBody $TttiHtml -ParentId $ParentPageId # --- Seite 19: Velocity und Team-Analyse --- Write-Host "" Write-Host ">> Seite 19: Velocity und Team-Analyse" -ForegroundColor Yellow $VeloHtml = @"

Velocity und Team-Analyse (12 Monate)

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Zeitraum: April 2025 — April 2026 | 4875 Issues analysiert

Monatlicher Durchsatz (alle Teams)

Monat404CIBZeroOPsDevOpsTotalBugsBug%Kontext
2025-0510886154133613710%Entwicklung
2025-067763110322823412%Entwicklung
2025-0713788167844768317%Pre-Go/No-Go
2025-089041182994126516%Go/No-Go Vorb.
2025-0916082119784397116%Go/No-Go positiv
2025-1015878128574218119%Pre-Go-Live
2025-11178119926945810423%Pre-Go-Live Peak
2025-129748100452907325%GO-LIVE
2026-011348398391174719620%Hypercare
2026-021025479883836110329%Hypercare Peak
2026-03172741001275753011722%Stabilisierung
2026-04*108805251263176420%Normalisierung

*April noch nicht abgeschlossen

Bug-Rate Entwicklung

PhaseZeitraumBug-RateBewertung
EntwicklungApr-Jun 202510-14%Normal
Pre-Go-LiveJul-Nov 202516-23%Steigend (erwartbar)
Go-LiveDez 202525%Go-Live Stress
Hypercare PeakFeb 202629%Hoechster Wert!
NormalisierungApr 202620%Sinkend, aber noch hoch

Team-Ueberblicke

Team 404 (Portal) — 15 Personen, 1537 Issues/12M

Bug-Rate steigt seit Go-Live (22% → 33%). Portal ist Kundenfacing — Bugs werden direkt von EVUs gemeldet.

PersonTotalDoneOpenBugsBewertung
Ana Cvitkovic787173⭐ Top-Performer: Hoechster Output, niedrigste Bug-Rate
Jasmin Keskin45331219Hohe Bug-Zuweisung (42%)
Emmanuel Kontcheu Tagne42321029⚠ 69% Bugs! Primaer Bug-Fixer
Diego Da Costa Souza4130116Spring Boot 4 Portal — erledigt
Leon Hoerpel3522132571% Bugs, hoher Backlog
Dominik Ruecker3119121652% Bugs
Annette Halbhuber2613131250% offen, 46% Bugs
Simon Reitinger1515011100% Done, primaer Bug-Fixer
Marcel Hufgard8440Geringe Sichtbarkeit
4 weitere40-50Kaum sichtbar (je 0-1 Issues)

Team CIB (Backend) — 16 Personen, 905 Issues/12M

Bug-Rate sinkt dramatisch (36% Jan → 9% April). Backend stabilisiert sich. Positiver Trend.

PersonTotalDoneOpenBugsBewertung
Bishara Jaser7368516⭐ Top-Performer: 93% Done, solide Bug-Rate
Saurav Kumar484534⭐ 94% Done, nur 8% Bugs
Jonas Koehler3434014100% Done, 41% Bugs
Dong-Won Han201642Solide
Hans-Henning Ramberger161600100% Done, 0 Bugs — Enabler/Infra?
Vasileios Dimitriadis1192545% Bugs
Christian Meins963778% Bugs!
Harry Braun5040⚠ Spring Boot 4 SV — alles offen
5 weitere1-6Geringe Sichtbarkeit

Team Zero (TAF/TAP) — 9 Personen, 1409 Issues/12M

PersonTotalDoneOpenBugsBewertung
Steven Meixner6463121⭐ 98% Done, auch 27 OPs-Issues — Allrounder
Bing Shi6352114⭐ Hoher Output, nur 6% Bugs
Frank Lemke494366Solide, auch OPs-Beitraege
Kathrin Schleich27261796% Done
Michael Weisberg2311120⚠ 52% offen — Backlog-Problem?
Bernd Klebl166106⚠ 63% offen
Norbert Maurer [X]122100⚠ 83% offen, [X] = extern/ausgeschieden?

DevOps — 7 Personen, 719 Issues/12M

Jan Lubenow: 114 von 289 Issues (39%). Kritische Personenabhaengigkeit.

PersonTotalDoneOpenBugsBewertung
Jan Lubenow114823213⚠ 39% aller DevOps-Issues! Single Point of Failure
David Steinkopff1899250% offen
Henrik Scholl101000100% Done
4 weitere6-8Geringe Sichtbarkeit

Zusammenfassung: Kritische Erkenntnisse

ErkenntnisDetailsHandlungsbedarf
Jan Lubenow = DevOps SPOF39% aller DevOps-Issues, 32 offenWissenstransfer, zweite Person aufbauen
Team 404 Bug-Rate steigt33% im Maerz, Portal ist KundenfacingQualitaetsmassnahmen, mehr Testing
Norbert Maurer [X] — 83% offen12 Issues, 10 offen, markiert mit [X]Klaeren: Ausgeschieden? Issues umverteilen
Michael Weisberg — 52% offen23 Issues in Zero, 12 offenBacklog pruefen, ggf. umpriorisieren
Harry Braun — SB4 SV alles offen5 Issues, 0 Done, 4 offenSpring Boot 4 SV-Upgrade blockiert?
Ana Cvitkovic = 404 MVP78 Issues, 71 Done, nur 3 BugsAnerkennung, Wissenstransfer foerdern
CIB stabilisiert sichBug-Rate 36% → 9%Positiver Trend, beibehalten
Steven Meixner = Zero+OPs Allrounder64 Zero + 27 OPs = 91 IssuesWertvoll, aber Ueberlastungsrisiko
"@ $Page19Id = Create-Or-Update-Page -Title "18. Velocity und Team-Analyse" -HtmlBody $VeloHtml -ParentId $ParentPageId # --- Seite 20: SonarQube Code-Qualitaet --- Write-Host "" Write-Host ">> Seite 20: SonarQube Code-Qualitaet" -ForegroundColor Yellow $SonarHtml = @"

SonarQube Code-Qualitaet

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 74 Projekte (Master/Main Branches)

Code-Qualitaet nach Team

TeamLines of CodeBugsVulnsCode SmellsSmells/1K LinesAvg CoverageQGate OKQGate ERROR
Team CIB119K150273723.085.7%35
Team 40471K704506.483.2%03
Team Zero49K202094.291.8%73
OPs4K1619145.40%13
Shared Libs4K00328.50%14

Bewertung nach Team

Team Zero = Beste Code-Qualitaet: Niedrigste Smell-Dichte (4.2/1K), hoechste Coverage (91.8%), nur 2 Bugs, 7 von 10 Projekten bestehen Quality Gate.

Team CIB = Hoechste technische Schuld: 2737 Code Smells bei 119K Lines (23/1K). Primaer durch Steuerung-Vertrieb (93K Lines, 2214 Smells). Coverage ist gut (85.7%), aber die Smell-Dichte ist 5x hoeher als bei Zero.

Team 404 = Solide: 6.4 Smells/1K ist akzeptabel. Coverage 83.2%. Aber: Kein einziges Projekt besteht das Quality Gate (0 OK, 3 ERROR).

Kern-Services im Detail

ServiceTeamLinesBugsSmellsCoverageDupl%QGate
steuerung-vertriebCIB93K3221481.6%3.8%ERROR
portal-ui40443K47785.8%2.7%ERROR
tadef-connectorZero28K0990.0%5.3%ERROR
portal-middleware40426K134381.4%1.2%ERROR
auftrags-verwaltung-trasseCIB8.4K010286.2%2.3%OK
archivierungsserviceCIB6.7K28378.8%4.7%ERROR
taftap-tdm-konverterZero6.6K02690.6%0.0%OK
stammdaten-bereitstellungZero5K01382.0%2.4%OK
common-interfaceZero4K03793.8%0.0%OK
kundendaten-bereitstellungZero1.8K0296.9%0.0%OK
vertragsdaten-verteilerCIB3420397.2%0.0%OK

Kritische Findings

FindingDetailsHandlungsbedarf
tadef-connector: 0% Coverage28K Lines ohne einen einzigen TestHOCH: Tests schreiben oder Risiko akzeptieren
SV: 2214 Code Smells23 Smells pro 1000 Lines, 5x hoeher als ZeroMITTEL: Refactoring-Sprint einplanen
Team 404: 0 QGate OKKein Portal-Projekt besteht das Quality GateMITTEL: QGate-Kriterien pruefen
OPs: 6 VulnerabilitiesIn database-setup und Infra-ToolsMITTEL: Security-Fixes
Zero: Vorbildlich4.2 Smells/1K, 91.8% Coverage, 7/10 QGate OKBest Practice teilen

Rueckschluesse auf Umsetzungsqualitaet

TeamCode-QualitaetInterpretation
Team Zero⭐ Sehr gutHohe Coverage, wenig Smells, sauberer Code. Erfahrenes Team mit starkem Qualitaetsbewusstsein.
Team 404🟡 GutAkzeptable Smell-Dichte, gute Coverage. Aber QGate-Failures deuten auf neue Features ohne vollstaendige Qualitaetspruefung.
Team CIB🟡 GemischtSV ist der Problembereich (2214 Smells). Andere CIB-Projekte (AV, VDV) sind sauber. SV-Komplexitaet (18 Module, Camunda) erklaert teilweise die Smell-Dichte.
OPs🔴 VerbesserungswuerdigInfra-Code hat 6 Vulnerabilities und hohe Smell-Dichte. Aber: Infra-Code hat andere Qualitaetsanforderungen als Applikationscode.

Deep Dive: Coverage erklaert Bug-Rate NICHT

TeamCoverageJira Bug-Rate (90d)Korrelation?
40484.2%33% (steigend)NEIN — Hohe Coverage, trotzdem viele Bugs
CIB78.2%20% (sinkend)Teilweise — Niedrigere Coverage, aber Bug-Rate sinkt
Zero91.8%15% (stabil)JA — Beste Coverage = wenigste Bugs

Fazit: Team 404 hat gute Coverage aber die hoechste Bug-Rate. Das Problem liegt in der Testqualitaet (Edge Cases, Integration, E2E) — nicht in der Testquantitaet.

⚠ Shared Libraries ohne Tests

LibraryLinesCoverageGenutzt von
core-components-kafka1.5670%Allen Kafka-Services
core-components-common1.0960%Allen Services
signature-database1.0910%Signatur-Validierung
signature-message6220%Signatur-Validierung

Risiko: Ein Bug in diesen Libraries betrifft das gesamte System. Empfehlung: Coverage auf >90% bringen.

Top 5 Empfehlungen

  1. Shared Libraries testen (DRINGEND) — 0% Coverage bei Code der ueberall genutzt wird.
  2. Portal: E2E-Tests statt mehr Unit-Tests — Coverage ist gut (84%). Problem sind fehlende Edge-Case- und Integrationstests.
  3. SV-Smells abbauen — Sprint-weise 50-100 Smells pro PI. Start mit S1192 (976 String-Duplikate).
  4. tadef-connector klaeren — 27.6K Lines ohne Coverage. Generierter Code? Dann aus Metriken ausschliessen.
  5. Archivierungsservice stabilisieren — 2 Bugs fixen, Coverage von 78.8% auf >85%.

Branch-Analyse (GitLab, 13 Kern-Services)

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 452 Branches ueber 13 Services

MetrikWertBewertung
Branches gesamt452
Aktiv (≤30 Tage)166Gesunde Aktivitaet
Stale (>60 Tage)246Aufraeumen noetig!
Spring Boot 4 Branches9 (alle aktiv)Upgrade laeuft
Renovate-Branches95 (68 frisch)Bot funktioniert
Aeltester Branch1114 Tage (portal-ui)3+ Jahre!

Aktivste Entwickler (letzte 30 Tage)

EntwicklerBranchesServicesBemerkung
Leon Hoerpel259 ServicesBreiteste Streuung, aber 71% Bug-Rate
Jonas Koehler134 ServicesVielseitig, 100% Done-Rate
Diego Da Costa Souza6Portal (UI + MW)Spring Boot 4 Portal
Steven Meixner65 Services (Zero)Allrounder, SPOF-Risiko
Bishara Jaser4Archivierung, SVLeistungstraeger CIB
Saurav Kumar3IFP, PMW, SVSpring Boot 4 SV

Spring Boot 4 Status (aus Branches)

ServiceBranchBearbeiterStatus
Portal (UI + MW)renovate/spring-and-hibernateBot + Diego✅ Fertig
Steuerung Vertriebfeat/O2CCIB-8031-springboot-4Saurav Kumar🟡 In Arbeit
Archivierungsservicefeat/O2CCIB-8031-springboot-4Hans-Henning Ramberger🟡 In Arbeit
IFP-Connectorfeat/O2CCIB-8031-springboot-4(CIB)🟡 In Arbeit
AV-Trassetest/O2CZERO-7043(Zero)🟡 Test-Phase

⚠ Branch-Hygiene

portal-ui: 101 stale Branches — aeltester 1114 Tage (3 Jahre!). Empfehlung: Alle Branches >6 Monate loeschen.

246 stale Branches gesamt — erhoehen Merge-Konflikte. Regelmaessiges Cleanup empfohlen (monatlich Branches >90d pruefen).

"@ $Page20Id = Create-Or-Update-Page -Title "19. SonarQube Code-Qualitaet" -HtmlBody $SonarHtml -ParentId $ParentPageId # --- Seite 22: Smells Detail --- Write-Host "" Write-Host ">> Seite 22: SonarQube Smells Detail" -ForegroundColor Yellow $SmellsHtml = @"

SonarQube Smells Detail-Analyse

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 10 Kern-Services, Cross-Projekt-Analyse

Top 10 Smell-Kategorien (Cross-Projekt)

#RuleBeschreibungTotalHauptverursacherRoot Cause
1S1192String-Duplikate (hardcoded statt Konstanten)1078SV (976!)Fehlende String-Konstanten. Einfachster Quick-Win.
2S100Methoden-Namenskonvention verletzt429SV (300), Camunda BW (90)Vermutlich generierter Code (OpenAPI) oder Altlasten.
3S1874Deprecated API Usage210SV (188), AV (22)Veraltete APIs nach Framework-Upgrades nicht nachgezogen.
4S1104Public Fields (statt private + Getter)168SV (61), Camunda BW (46), TADEF (33)DTOs/Models ohne Encapsulation. Oft bei generierten Klassen.
5S1118Utility Class ohne private Constructor99SV (56), verteiltEinfacher Fix: Private Constructor hinzufuegen.
6S1117Local Variable Shadows Field92SV (78)Gleiche Variablennamen in Methode und Klasse. Bug-Risiko.
7S115Constant Naming Convention76PMW (36), SV (35)Namenskonventionen nicht eingehalten. Gleiche Root Cause.
8S116Field Naming Convention67SV (58)
9S1135TODO/FIXME Kommentare61SV (46), AV (10)Unerledigte technische Schuld im Code dokumentiert.
10S3776Cognitive Complexity zu hoch55PMW (28), SV (21)Methoden zu komplex. Wichtigster Wartbarkeits-Indikator!

Muster und Root Causes

Steuerung Vertrieb dominiert: SV verursacht 976 von 1078 String-Duplikaten, 300 von 429 Namenskonventions-Verletzungen, 188 von 210 Deprecated-API-Nutzungen. Das ist der mit Abstand groesste Hebel fuer Verbesserung.

MusterRulesTotalEmpfehlung
String-HygieneS11921078Strings in Konstanten extrahieren. Kann teilweise automatisiert werden (IDE Refactoring).
NamenskonventionenS100, S115, S116572Pruefen ob generierter Code (OpenAPI) die Ursache ist. Falls ja: Generator-Config anpassen. Falls nein: Rename-Refactoring.
Deprecated APIsS1874210Nach Spring Boot 4 Upgrade systematisch deprecated Calls ersetzen.
EncapsulationS1104, S1118267Public Fields privatisieren, Utility-Constructors. Niedrighaengende Fruechte.
KomplexitaetS377655Komplexe Methoden aufteilen. Hoechste Prioritaet fuer Wartbarkeit. PMW und SV.
Tech Debt MarkerS113561TODOs reviewen: Erledigen oder als Tickets erfassen und aus Code entfernen.

Empfohlene Reihenfolge fuer Cleanup

  1. S3776 Cognitive Complexity (55) — Hoechste Prioritaet, direkte Auswirkung auf Wartbarkeit und Bug-Rate
  2. S1874 Deprecated APIs (210) — Im Zuge des Spring Boot 4 Upgrades miterledigen
  3. S1192 String-Duplikate (1078) — Groesste Zahl, aber einfacher Fix. IDE-Refactoring.
  4. S100/S115/S116 Namenskonventionen (572) — Pruefen ob OpenAPI-Generator die Ursache ist
  5. S1135 TODOs (61) — Review und aufraumen

Top Smells pro Kern-Service

Steuerung Vertrieb (CIB) — 2214 Smells

RuleCountBeschreibung
S1192976String-Duplikate
S100300Methoden-Namenskonvention
S1874188Deprecated API
S325279Static member access via instance
S111778Variable shadows field

Portal Middleware (404) — 343 Smells

RuleCountBeschreibung
S185440Unused assignments
S148139Unused local variables
S11536Constant naming
S377628Cognitive complexity
S635323Regex simplification

Portal UI (404) — 77 Smells

RuleCountBeschreibung
S432515Unnecessary type assertion (TS)
AvoidCommentedOutCode12Auskommentierter Code
S113512TODO comments
S11288Unused imports
S46237Undefined should not be passed as argument
"@ $Page22Id = Create-Or-Update-Page -Title "19a. SonarQube Smells Detail" -HtmlBody $SmellsHtml -ParentId $ParentPageId # Neue Seiten in Reorg-Liste merken (fuer manuelles Verschieben) Write-Host "" Write-Host " HINWEIS: Neue Seiten manuell verschieben:" -ForegroundColor Yellow if ($Page22Id) { Write-Host " - '19a. SonarQube Smells Detail' -> unter 'Technische Analyse'" } if ($Page21Id) { Write-Host " - '20. Geschaeftsprozesse' -> unter 'Systemueberblick'" } # --- Seite 21: Geschaeftsprozesse --- Write-Host "" Write-Host ">> Seite 21: Geschaeftsprozesse" -ForegroundColor Yellow $ProzessHtml = @"

Geschaeftsprozesse pathOS

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Quellen: Vorstudie (Kap. 3), Runbook (Kap. 6), TTSI Fachliche Dokumentation

Fahrplanphasen im Netzfahrplan

NEP1
Erstbestellung
FCFS-Vorteil
✅ Abgeschlossen
NEP2
Phase 2
Koordinierung
⚠ Aktuell
VNP
Vorlaeufiger
Netzfahrplan
ENP
Endgueltiger
Netzfahrplan
GelV
Gelegenheits-
verkehr (24/7)
✅ Produktiv

Leistungsprozesse

ProzessBeschreibungpathOS-Rolle
LN34-01 NetzfahrplanJaehrliche Erstellung (NEP1, NEP2, VNP, ENP)Anmeldung, Angebot, Vertrag
LN34-03 GelegenheitsverkehrKurzfristige Bestellungen (48h bis 4 Wochen)Vollstaendiger Bestellprozess
LN34-02 RahmenvertragMehrjaehrige Kapazitaet (auslaufend, letzte bis 2031)Begrenzt (Verweis auf bestehende RV)
LN34-07 KapazitaetsmanagementBetriebsprogrammstudienNicht direkt in pathOS

Kernprozess: Trassenbestellung End-to-End

#SchrittAkteurSystemNachricht/AktionDetails
1PlanungEVUPortal UIRoute, Stammdaten, EntwurfStammdaten aus SB, Karte aus GeoServer
2AnmeldungEVUPortal/CIPathRequestMessageTrain + PathRequest erstellen, Validierung in PMW
3BEP-PruefungpathOSSV → BEPFahrlagePruefen (REST)Automatische Plausibilitaetspruefung
4KonstruktionFahrplanSV → IFP → TPN/BaDiFaProduktionsauftrag (Kafka)Fahrplankonstruktion, kann Minuten bis Wochen dauern
5AngebotFahrplanTPN → IFP → SVVertriebsauftrag (Kafka)PathDetailsMessage mit Laufweg
6PreispathOSSV → AC TrasseermittleTrassenPreis (REST)Verbindliche Preisauskunft
7Angebot pruefenEVUPortal/CIPathDetailsMessage anzeigenLaufweg, Verkehrstage, Preis
8AnnehmenEVUPortal/CIAnnahmeProduktVertrag wird erstellt
9NachverarbeitungpathOSAV, AC, Archiv, VDVVertrag, Abrechnung, ArchivStationsportal, TBV, ggf. Abrechnung ueber VDV

Weitere Geschaeftsvorfaelle

VorfallBeschreibungBesonderheit
Netzausgeloeste Aenderung (NAE)DB InfraGO aendert/storniert Trassen (z.B. Bauarbeiten)Ausgeloest durch Fahrplan, nicht EVU. Verzoegert.
Vertragsaenderung (VAEND)Aenderungen nach Vertragsschluss (Zeit, Raum, Storno)Erfordert neues Train-Objekt nach Vertragsschluss
ujBauBau-bezogene TrassenbestellungenBautrassen, GPE-Stellungnahmen, KOMBau-Plattform
RahmenvertragVerweis auf bestehende RV bei NEP-AnmeldungAuslaufend (letzte bis 2031), kein Neuabschluss

Datenfluss zwischen Domaenen

VERTRIEB (pathOS)FAHRPLAN (TPN/BaDiFa)BETRIEB (S2O)
Trassenanmeldung ➔
➔ Konstruktionsergebnis
Angebot an EVU
Vertragsschluss ➔
Abrechnung (AC)
Archivierung
➔ Konstruktionsauftrag
Konstruktionsergebnis ➔

➔ Fahrplanveroeffentlichung




➔ Betriebsplanung
➔ Betriebliche Meldungen

Offene Erweiterungen

ThemaStatusBeschreibung
BuendelprodukteVisionTrasse + Anlage + Stationshalt + Energie in einem Bestellvorgang
Click&Ride IntegrationADR-72, in ArbeitVereinfachte GelV-Bestellung
TraPo-AnbindungADR-74, in ArbeitNeues Trassenportal
VDV fuer AbrechnungStrategischVertragsdaten-Verteiler auch fuer AC Trasse
Rolling PlanningLangfristigNachfolger Rahmenvertraege (TTR-Projekt)
"@ $Page21Id = Create-Or-Update-Page -Title "20. Geschaeftsprozesse" -HtmlBody $ProzessHtml -ParentId $ParentPageId # --- Seite 23: Produkt-Roadmap (konsolidiert) --- Write-Host "" Write-Host ">> Seite 23: Produkt-Roadmap (konsolidiert)" -ForegroundColor Yellow $ProdRoadmapHtml = @"

Produkt-Roadmap pathOS (konsolidiert)

Stand: 2026-04-24 | Quellen: PO-Input (CIB, Zero, 404), BO-Sicht, Technische Analyse, Jira

Diese Roadmap konsolidiert die Team-Roadmaps der POs mit der BO-Sicht und den technischen Findings. Sie ersetzt die rein technische Roadmap (Seite 16) durch eine ganzheitliche Produkt-Perspektive.

Strategische Handlungsfelder (BO-Sicht)

FeldKernfrageMassnahmen
Support-EnablementWas braucht der Support, was muss er liefern?Tools, Zugang, Wissen, SLAs, Eskalationswege
MonitoringWas fehlt dem OPs Squad?Grafana Boards, Alerting, Netcool
Axt schaerfenWie steigern wir Entwicklungseffizienz?Smells reduzieren, Tests ausbauen, Pipelines beschleunigen
Feature-EnablementWelche Features brauchen Support und Squad?Vorpruefung, Fehlermeldungen, Suchfunktion
Organisatorische RegelnWelche Regeln fuer Support und Squad?Deployment-Verantwortung, Wissenstransfer
Fachlichkeits-LoopWie kommt Kundenfeedback schneller ins Produkt?Feedback-Prozess, fachliches Verstaendnis aufbauen

Zeitstrahl: April 2026 — Mitte 2027

Thema AprMaiJun JulAugSep OktNovDez JanFebMar AprMaiJun
STABILISIEREN (Hypercare beenden)
Spring Boot 4
Monitoring + Alerting
Support-Enablement
Portal-Bugs (165)
HAERTEN (Qualitaet + Effizienz)
Vorpruefung Portal
Aenderungswesen final.
Fehlermeldungen-Konzept
Smells reduzieren (SV)
Tests ausbauen
RV aufraeumen
ERWEITERN (Kundenmehrwert)
Uebersichtsseite Vorg.
Expertenmodus
Massenkopie Takt
E-Mail Benachrichtig.
Suchfunktion
Click&Ride
RouteUpdate-Prozess
WEITERENTWICKELN (Langfristig)
Entkopplung Zuglaufp.
Ersatz Msg Routing ID
LuP neu
Team-Reorganisation

Kritisch Kurzfristig Mittelfristig Langfristig

Phase 1: STABILISIEREN (April—Juli 2026)

Hypercare beenden, Monitoring aufbauen, Support enablen.

ThemaTeamDetails
Spring Boot 4 abschliessenAllePortal fertig, CI/SV/AV in Arbeit. EOL 3.5: Juni 2026.
Monitoring + AlertingOPs, ZeroGrafana Boards nutzbar machen, Netcool, Logs anpassen. Kein Dauerzustand.
Support-EnablementBSSUPPORT, OPsWas braucht Support? Tools, Zugang, Wissen, SLAs, Eskalationswege definieren.
Portal-Bugs reduzieren404165 Bugs, 33% Bug-Rate. Stabilisierung vor neuen Features.
Workarounds TTK aufraeumenZeroTechnische Schuld aus Go-Live Phase.
Verschluesselung einschaltenZeroSecurity-Anforderung.

Phase 2: HAERTEN (Juli—Oktober 2026)

Qualitaet steigern, Entwicklungseffizienz erhoehen, "Axt schaerfen".

ThemaTeamDetails
Vorpruefung PortalCIB, 404Button "Vorpruefung": PMW+SV+BEP Validierung vor Absenden. Hohe Kundenwirkung.
Aenderungswesen finalisierenCIBParallele Aenderungsbestellungen validieren. Mit Fahrplan abgestimmt.
Fehlermeldungen-Konzept404Verstaendliche, benutzerfreundliche Meldungen. Reduziert Support-Aufwand.
Smells reduzieren (SV)CIB2214 Code Smells, 976 String-Duplikate. IDE-Refactoring.
Automatisierte Tests ausbauen404, alleDeutlich erweitern. Testumgebung mit TPN dauerhaft bereitstellen.
Rahmenvertraege aufraeumenCIBProzesse/Tests ausbauen. Reduziert Pipeline-Laufzeiten.
Camunda 8.9CIBNach 8.8 ist vor 8.9. Support-Zeitraeume beachten.
Performance AVZeroFull-Table-Scans, Optimierung.

Phase 3: ERWEITERN (Oktober 2026—Maerz 2027)

Kundenmehrwert liefern, nachgelieferte Features umsetzen.

ThemaTeamDetails
Uebersichtsseite Vorgaenge404Zusammengehoerige Vorgaenge gruppiert nach RouteID.
Expertenmodus404Kompakte Maske fuer erfahrene Nutzer.
Massenkopie Taktbestellungen404Mehrere Takte per Massenkopierfunktion.
E-Mail Benachrichtigungen404Bei NAE oder Angebotseingang.
Suchfunktion404Leistungsfaehige Suche integrieren.
Click&Ride AnbindungCIB, ZeroADR-72. SUBP arbeitet bereits an Teilen.
RouteUpdate-ProzessCIBNach Go-Live verschoben. Gross.
§22 ERegGCIBEintritt Drittunternehmen.
Stationsportal fertigstellenZeroAnbindung abschliessen.
PCS aufraeumen + RueckwegZeroGross.

Phase 4: WEITERENTWICKELN (ab Q2 2027)

Strategische Themen, grosse Umbauten.

ThemaTeamDetails
Entkopplung Zuglaufpunkte/Zugcharakteristik404Vererbungslogik entfernen. Gross.
Ersatz Message Routing IDZeroSenderReference, iRFP. Gross.
LuP neuZeroKomplett neu. Gross.
XSD 3.5.2ZeroKann gross werden.
TDM aufraeumenZeroTechnische Schuld.
Team-ReorganisationPM/RTESubdomaenen-Schnitt, Platform Team.
Abrechnung klaerenCIBVDV-Erweiterung oder andere Loesung. Unklar.

Laufende Themen (alle Teams, permanent)

ThemaTeam
Bug Fix + SupportAlle
Lieferungen testen, bauen, dokumentierenAlle
Framework-Updates (Camunda, Spring, Angular)Alle
Neue Mitarbeiter aufgleisenAlle
Fachlichkeits-Loop: Kundenfeedback schneller ins Produkt404, CIB, FbF
"@ $Page23Id = Create-Or-Update-Page -Title "21. Produkt-Roadmap (konsolidiert)" -HtmlBody $ProdRoadmapHtml -ParentId $ParentPageId # --- Seite 24: Personal- und Bug-Analyse --- Write-Host "" Write-Host ">> Seite 22: Personal- und Bug-Analyse" -ForegroundColor Yellow $PersonalHtml = @"

Personal- und Bug-Analyse pathOS

Stand: 2026-04-30 | Quellen: Jira (90d + 12M), Rollen-Mapping (BO-Input), Tenure-Daten (176 Personen, 24.7K Issues)

Diese Analyse korreliert Personaldaten (Rollen, Tenure, Aktivitaet) mit Bug-Raten und Qualitaetskennzahlen pro Team und Entwickler.

Team-Gesundheit im Ueberblick

TeamPersonenKern-DevsBug-Rate (90d)Bug-Rate (12M)TrendBewertung
Team 40410733%25%↑ SteigendKRITISCH
Team CIB13620%23%↓ SinkendGUT
Team Zero9615%15%→ StabilGUT
OPs Squad7+ rot.2 fest31%27%↓ SinkendBEOBACHTEN
DevOps739%7%→ StabilOK (SPOF)

Team 404 (Portal) — KRITISCH

Hoechste Bug-Rate (33%), steigend seit Go-Live. Portal ist kundenseitig — Bugs werden direkt von EVUs gemeldet.

PersonRolleSeitIssues (90d)Bug-AnteilDone%Bewertung
Ana CvitkovicBusiness Engineer2021-0878niedrighochTOP — Anker des Teams
Jasmin KeskinFrontend Dev2021-084542%mittelBug-anfaellig
Emmanuel Kontcheu TagneFrontend Dev2021-084269%mittelKRITISCH
Diego Da Costa SouzaFrontend Dev2021-0941mittelmittelSpring Boot 4 Portal
Leon HoerpelDev2023-033571%mittelKRITISCH
Dominik RueckerBackend Dev2021-0831mittelmittelVeteran (434 Issues)
Annette HalbhuberLead Dev2021-0926niedrighochStabil, Lead
Simon ReitingerDev2025-11150%100%Exzellenter Start
Marcel HufgardPO2021-128Product Owner
Luca CaraccioloQA2021-095Wenig aktiv

Kernproblem: Emmanuel (69% Bugs) und Leon (71% Bugs) arbeiten beide im Frontend. Das Portal-Frontend hat ein systematisches Qualitaetsproblem. QA (Luca) ist wenig aktiv — Testabdeckung unzureichend.

Team CIB (Prozesse/Backend) — Erfolgsgeschichte

Bug-Rate von 36% (Jan) auf 9% (Apr) gesunken. Backend stabilisiert sich nach Go-Live.

PersonRolleSeitIssues (90d)Bug-AnteilDone%Bewertung
Bishara JaserDev2022-0873niedrig93%TOP — Leistungstraeger
Saurav KumarDev2022-01488%94%TOP — niedrigste Bug-Rate
Jonas KoehlerDev2024-0434niedrig100%Exzellent
Dong-Won HanDev2021-0920mittelmittelVeteran
Hans-Henning RambergerDev2024-0516mittelmittelAuch OPs
Vasileios DimitriadisDev2023-1111mittelmittelWenig aktiv
Christian MeinsPO2021-109Product Owner
Harry BraunDev2025-125mittelmittelSB4 SV
Olaf BeckenBusiness Engineer2024-055
Alexander PetiokyDev2021-101Kaum aktiv

Kern-Trio: Bishara + Saurav + Jonas (155 Issues, >93% Done). Deren Arbeitsweise sollte als Vorbild fuer andere Teams dienen.

Team Zero (TAF/TAP) — Stabil

Niedrigste Bug-Rate (15%), stabiler Output. Beste SonarQube-Qualitaet (4.2 Smells/1K, 91.8% Coverage).

PersonRolleSeitIssues (90d)Bug-AnteilBewertung
Steven MeixnerDev2022-0764 + 27 OPsniedrigTOP — Allrounder (SPOF!)
Bing ShiDev2022-0463niedrigStark
Frank LemkeDev2022-1249niedrigAuch OPs
Kathrin SchleichDev2021-0927niedrigAuch OPs
Michael WeisbergTest2024-112352% offen
Bernd KleblPO2021-0916Auch OPs
Norbert MaurerDev2021-111283% offen — ausgeschieden?

DevOps — SPOF-Risiko

Jan Lubenow = 39% aller DevOps-Issues — kritischster Single Point of Failure im gesamten Programm.

PersonRolleSeitIssues (90d)Anteil
Jan LubenowLead Dev2022-0911439%
David SteinkopffDev2023-03186%
Henrik SchollDev2024-10103%
Christian PrauseDev2025-0872%
Patrick LewandowskiDev2025-0762%
Michael Mh JahnDev2022-0162%
Sebastian GoendoerDev2023-0531%

Tenure vs. Bug-Rate — Korrelation

TeamHypothese: Laenger dabei = weniger Bugs?Ergebnis
Team 404Emmanuel (56 Mon., 69% Bugs), Leon (37 Mon., 71%), Simon (5 Mon., 0%)WIDERLEGT — Systematisches Problem
Team CIBSaurav (51 Monate, 8% Bugs), Bishara (44 Monate, niedrig)BESTAETIGT — Erfahrung + gute Prozesse
Team ZeroAlle Veteranen niedrige Bug-Rate, beste SonarQube-WerteBESTAETIGT — Stabiles Team + Praktiken

Fazit: Tenure allein erklaert die Bug-Rate nicht. Team 404 hat ein systematisches Frontend-Qualitaetsproblem, das nicht durch Erfahrung geloest wird. CIB und Zero zeigen, dass gute Prozesse + Erfahrung zusammen wirken.

Methodischer Hinweis

Die Bug-Raten in den Team-Tabellen basieren auf dem Anteil der Bug-Tickets an den zugewiesenen Issues einer Person (90 Tage). Separate Causation-CSVs verwenden eine Korrelationsmethodik (14-Tage-Fenster), die Raten >100% erzeugt und nur als relative Gewichtung innerhalb eines Teams nuetzlich ist.

Risiko-Matrix Personal

KRITISCH (sofort handeln)

RisikoPerson(en)ImpactMassnahme
SPOF DevOpsJan Lubenow (39%)Deployment, CI/CD, InfraWissenstransfer, Dokumentation
SPOF Zero/OPsSteven Meixner (91 Issues)TAF/TAP + InfrastrukturEntlastung, Backup aufbauen
Bug-Verursacher 404Emmanuel (69%), Leon (71%)Portal-QualitaetCode-Reviews, Pair Programming

HOCH (kurzfristig)

RisikoPerson(en)ImpactMassnahme
QA-Engpass 404Luca Caracciolo (5 Issues)Testabdeckung PortalAktivieren oder ersetzen
Test-Backlog ZeroMichael Weisberg (52% offen)Testabdeckung TAF/TAPPriorisierung
Inaktive MitgliederNorbert Maurer, Alexander PetiokyOffene Issues, WissenStatus klaeren

Top 5 Massnahmen (priorisiert)

  1. Jan Lubenow entlasten — Wissenstransfer auf David Steinkopff + Henrik Scholl. DevOps-Runbook beschleunigen. Ziel: Kein Einzelner >25% der Issues.
  2. Portal-Qualitaet steigern (404) — Code-Reviews fuer Emmanuel/Leon verstaerken. Frontend-Testautomatisierung ausbauen. QA aktivieren. Fehlermeldungen-Konzept umsetzen.
  3. Steven Meixner entlasten — OPs-Rotation auf CIB/404 ausweiten. Steven soll sich auf Zero-Kernarbeit konzentrieren.
  4. Inaktive klaeren — Norbert Maurer (Zero), Alexander Petioky (CIB), Sebastian Goendoer (OPs): Status klaeren, offene Issues umverteilen.
  5. CIB Best Practices teilen — Bishara/Saurav/Jonas als Mentoren. Deren Arbeitsweise (>93% Done, <10% Bugs) als Vorbild fuer 404.
"@ $Page24Id = Create-Or-Update-Page -Title "22. Personal- und Bug-Analyse" -HtmlBody $PersonalHtml -ParentId $ParentPageId # --- Seite 25: Risiko-Radar --- Write-Host "" Write-Host ">> Seite 23: Risiko-Radar" -ForegroundColor Yellow $RisikoHtml = @"

Risiko-Radar — Geschaeftskritische Themen

Stand: $(Get-Date -Format 'yyyy-MM-dd') | Quelle: Jira (Labels TopThema, Konzernreporting, Taskforce-FplW, TTT_Kunde)

Diese Seite zeigt geschaeftskritische Risiken die ueber rein technische Probleme hinausgehen: Kundenversprechen, regulatorische Anforderungen, Eskalationen, Abrechnungsrisiken. Wird woechentlich aktualisiert.

🔴 Kritisch (sofort handeln)

#TicketThemaStatusImpact / Risiko
1TTTSOL-2184
O2CCIB-6931
Implizite Annahme NAÄHighest
Umsetzung geschoben
Kundenversprechen gebrochen. EVUs erleben nicht den Standard-Prozess. Fernverkehr + Regio betroffen.
2TTTSOL-1677
TTTSOL-2149
20h Zug — AbrechnungHigh
BLOCKED
Loesung funktioniert nicht. Korrekte Abrechnung nicht moeglich. Cargo betroffen.
3TTTSOL-2186DB Cargo Eskalation CIO BoardHighest
In Bearbeitung
PCS + gestaffelter VNP-Versand. Eskaliert bis CIO-Ebene. Konzernreporting.
4TTTSOL-2035
TTTSOL-2147
TTTSOL-2148
Abrechnung TTT / AC TrasseHighest (3x)
Taskforce aktiv
41 offene Tickets, 8 Highest. Grundlegendes Risiko: Nicht korrekt abrechnen zu koennen.
5TTTSOL-1956Vertragskorrektur in die VergangenheitHighest
In Bearbeitung
Rueckwirkende Korrekturen = Abrechnungsrisiko. Konzernreporting.

🟠 Hoch (kurzfristig klaeren)

#TicketThemaStatusImpact / Risiko
6TTTSOL-1900
TTTSOL-2185
Mittiger Teilausfall (SEV)Highest
Taskforce
Fernverkehr: Kein Workaround fuer SEV-Faelle. Betrieb + E2E-Test betroffen.
7TTTSOL-1819Ad-hoc Verkehre <1h (FV)BLOCKED
TopThema
Fernverkehr kann kurzfristige Zuege nicht bestellen. Konzernreporting.
8TTTSOL-1853Teilstorno in LeiDaFHighest
Taskforce
Stornierungen werden nicht verarbeitet. Fahrplanwechsel betroffen.
9TTTSOL-1683OTN-Vergabe Fpl 2027Highest
Taskforce
Fahrplan 2027 betroffen. Muss vor Fahrplanwechsel geloest sein.
10TTTSOL-1707Nachtsprung auf Fremd-EIUHighest
In Bearbeitung
Sonderfall innerdeutsch. Handover-Problem.
11TTTSOL-433TrainID mit anderer Trasse verknuepfenHigh
TopThema
Alternativangebote. Konzernreporting + Kundenkommunikation.

🟡 Beobachten

#TicketThemaStatusImpact / Risiko
12TTTI-7811KV-Profile loeschen nicht moeglichZeitkritischTPN-Import betroffen. Kunde gemeldet.
13TTTI-8171PROD Operate-Incident ConstraintViolationHigh, OffenProduktions-Incident. Kunde betroffen.
14TTTI-7751IFP-Connector: value too longHigh, In BearbeitungDatenintegritaet. Kunde gemeldet.
15TTTSOL-2043OIM-Aktualisierung nicht unterstuetztHigh, ReviewDB Cargo + Kundenkommunikation. InfraGO-Entscheidung.

Kennzahlen

MetrikWertTrend
TopThema (offen)3→ Stabil
Konzernreporting (offen)26
Taskforce-FplW (offen)15
TTT_Kunde (offen)65
Blocked + High/Highest38
TTT_offenePunkte + Highest13
TTT_MUSS (offen)196

Erkennungsmethodik

Geschaeftskritische Risiken werden ueber folgende Jira-Signale identifiziert:

Script: jira-critical-scan.py — wird woechentlich ausgefuehrt.

"@ $Page25Id = Create-Or-Update-Page -Title "23. Risiko-Radar" -HtmlBody $RisikoHtml -ParentId $ParentPageId # --- Stammseite aktualisieren --- Write-Host "" Write-Host ">> Stammseite aktualisieren..." -ForegroundColor Yellow $StammHtml = @"

Analyse pathOS — Portfolio-Audit

Business Owner: Andre Knie | Start: 2026-04-22 | Stand: $(Get-Date -Format 'yyyy-MM-dd')

Systematische Analyse der pathOS-Plattform (167 GitLab-Projekte, 24.700 Jira-Issues, 187 Confluence-Seiten, SonarQube, Runbook). pathOS ist seit Dezember 2025 produktiv (Go/No-Go Sep 2025 positiv). Aktuell: Verlaengerte Hypercare + NEP2 + Spring Boot 4 Upgrade.

⚠ Geschaeftskritische Risiken (aktuell)

RisikoTicketStatusImpact
Implizite Annahme NAÄTTTSOL-2184 / O2CCIB-6931Fachlich Highest, Umsetzung auf naechsten PI geschobenKundenversprechen nicht eingehalten. EVUs erleben nicht den Standard-Prozess.
20h Zug — AbrechnungTTTSOL-1677 / TTTSOL-2149TTTSOL-2149 BLOCKEDLoesung funktioniert nicht. Korrekte Abrechnung nicht moeglich.
Abrechnung TTT / AC Trasse41 offene Tickets (8 Highest)Taskforce aktivGrundlegendes Risiko: Nicht korrekt abrechnen zu koennen.

Schnelleinstieg

Kompakte Zusammenfassung: Status, Findings, Herausforderungen, naechste Schritte. Fuer Management Board.

Priorisierte Aktionen und Zeitplaene bis Mitte 2027.

Bereiche

BereichInhalt
Architektur, Komponenten, Customer Journey, GitLab-Landschaft, Glossar
Versionen, SonarQube (Coverage vs. Bug-Rate), Branch-Analyse, Technische Roadmap
Team-Struktur, 12-Monats-Velocity, Personal-Analyse (176 Personen), Risiko-Matrix
TAF/TAP TSI Kontext, NEP2, TTTI-Integration, Geschaeftskritische Risiken
Aktionsplan (24 Massnahmen), Produkt-Roadmap, Audit-Backlog

Letzte Aktualisierungen

DatumWas
30.04.2026Geschaeftskritische Risiken (NAÄ, 20h Zug, Abrechnung) aufgenommen
30.04.2026Branch-Analyse (452 Branches, 13 Services, Spring Boot 4 Status)
30.04.2026SonarQube Deep Dive: Coverage erklaert Bug-Rate nicht
30.04.2026Personal-Analyse: Tenure vollstaendig (176 Personen)
27.04.2026Knowledge Graph + Skills aufgesetzt
24.04.2026SonarQube, Geschaeftsprozesse, Produkt-Roadmap
23.04.2026TTT-Programm, TTTI, Velocity 12M, Team-Personenanalyse
22.04.2026Domain Discovery, Tech Deep Dive, Team-Analyse, Roadmap
"@ # Stammseite updaten (ID bekannt: 581013135) try { $StammResp = Invoke-WebRequest -Uri "$ApiBase/content/$ParentPageId`?expand=version" -Headers $Headers -UseBasicParsing -ErrorAction Stop $StammData = $StammResp.Content | ConvertFrom-Json $StammVersion = $StammData.version.number + 1 Write-Host " Aktualisiere Stammseite (Version: $StammVersion)..." -NoNewline $StammHtml = Fix-Umlauts $StammHtml $StammBody = @{ version = @{ number = $StammVersion } title = "Analyse pathOS" type = "page" body = @{ storage = @{ value = $StammHtml representation = "storage" } } } | ConvertTo-Json -Depth 10 $StammResult = Invoke-WebRequest -Uri "$ApiBase/content/$ParentPageId" -Method Put -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($StammBody)) -UseBasicParsing -ErrorAction Stop Write-Host " OK" -ForegroundColor Green } catch { Write-Host " FEHLER: $($_.Exception.Message)" -ForegroundColor Red } # --- Zusammenfassung --- Write-Host "" Write-Host "============================================================" -ForegroundColor Green Write-Host " FERTIG! Seiten erstellt/aktualisiert:" -ForegroundColor Green if ($Page1Id) { Write-Host " 1. Uebersicht: $ConfluenceUrl/pages/viewpage.action?pageId=$Page1Id" } if ($Page2Id) { Write-Host " 2. Problemfelder: $ConfluenceUrl/pages/viewpage.action?pageId=$Page2Id" } if ($Page3Id) { Write-Host " 3. Roadmap: $ConfluenceUrl/pages/viewpage.action?pageId=$Page3Id" } if ($Page4Id) { Write-Host " 4. GitLab: $ConfluenceUrl/pages/viewpage.action?pageId=$Page4Id" } if ($Page5Id) { Write-Host " 5. Glossar: $ConfluenceUrl/pages/viewpage.action?pageId=$Page5Id" } if ($Page6Id) { Write-Host " 6. Architektur: $ConfluenceUrl/pages/viewpage.action?pageId=$Page6Id" } if ($Page7Id) { Write-Host " 7. Fortschritt: $ConfluenceUrl/pages/viewpage.action?pageId=$Page7Id" } if ($Page8Id) { Write-Host " 8. Links: $ConfluenceUrl/pages/viewpage.action?pageId=$Page8Id" } if ($Page9Id) { Write-Host " 9. Customer Journey: $ConfluenceUrl/pages/viewpage.action?pageId=$Page9Id" } if ($Page10Id) { Write-Host " 10. Tech Deep Dive: $ConfluenceUrl/pages/viewpage.action?pageId=$Page10Id" } if ($Page11Id) { Write-Host " 11. Team Analyse: $ConfluenceUrl/pages/viewpage.action?pageId=$Page11Id" } if ($Page12Id) { Write-Host " 12. Roadmap: $ConfluenceUrl/pages/viewpage.action?pageId=$Page12Id" } if ($Page13Id) { Write-Host " 13. Jira: $ConfluenceUrl/pages/viewpage.action?pageId=$Page13Id" } if ($Page14Id) { Write-Host " 14. Naechste Schritte: $ConfluenceUrl/pages/viewpage.action?pageId=$Page14Id" } if ($Page15Id) { Write-Host " 0. Management Summary: $ConfluenceUrl/pages/viewpage.action?pageId=$Page15Id" } if ($Page16Id) { Write-Host " 15. TTT/NEP2: $ConfluenceUrl/pages/viewpage.action?pageId=$Page16Id" } if ($Page17Id) { Write-Host " 16. Roadmap: $ConfluenceUrl/pages/viewpage.action?pageId=$Page17Id" } if ($Page18Id) { Write-Host " 17. TTTI: $ConfluenceUrl/pages/viewpage.action?pageId=$Page18Id" } if ($Page19Id) { Write-Host " 18. Velocity: $ConfluenceUrl/pages/viewpage.action?pageId=$Page19Id" } if ($Page20Id) { Write-Host " 19. SonarQube: $ConfluenceUrl/pages/viewpage.action?pageId=$Page20Id" } if ($Page22Id) { Write-Host " 19a. Smells: $ConfluenceUrl/pages/viewpage.action?pageId=$Page22Id" } if ($Page21Id) { Write-Host " 20. Prozesse: $ConfluenceUrl/pages/viewpage.action?pageId=$Page21Id" } if ($Page23Id) { Write-Host " 21. Produkt-Roadmap: $ConfluenceUrl/pages/viewpage.action?pageId=$Page23Id" } if ($Page24Id) { Write-Host " 22. Personal-Analyse: $ConfluenceUrl/pages/viewpage.action?pageId=$Page24Id" } if ($Page25Id) { Write-Host " 23. Risiko-Radar: $ConfluenceUrl/pages/viewpage.action?pageId=$Page25Id" } Write-Host " Stammseite: $ConfluenceUrl/spaces/$SpaceKey/pages/$ParentPageId" Write-Host "============================================================" -ForegroundColor Green