<# .SYNOPSIS Pusht die Roadmap-Tabelle als Confluence-Seite #> $ConfluenceUrl = "https://arija-confluence.jaas.service.deutschebahn.com" $SpaceKey = "BES" $ParentPageId = "581013135" $ApiBase = "$ConfluenceUrl/rest/api" $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $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" } $Title = "24. Roadmap-Tabelle (alle Themen)" Write-Host ">> Push: $Title" -ForegroundColor Yellow $Html = @"

Roadmap-Tabelle — Alle Themen nach Team

Stand: $(Get-Date -Format 'yyyy-MM-dd') | 77 Themen | Quellen: Technische Roadmap, PO-Input, BO-Input, Jira TTTSol, Risiko-Radar

Legende Prio: MUSS = regulatorisch/vertraglich | HOCH = geschaeftskritisch | MITTEL = wichtig | NIEDRIG = nice-to-have

Legende Dauer: S = Sprint (2W) | M = Monat | Q = Quartal | L = Langfristig (>Q)

Kritischer Pfad (harte Deadlines)

DeadlineThemaTeamKonsequenz bei Versaeumnis
Jun 2026Spring Boot 4AlleKein Security-Support mehr
Aug 2026SL Silber PlusOPsVertragsverletzung
Dez 2026FplJ 28AlleFahrplanwechsel gefaehrdet
LaufendAbrechnung TTTCIBFalsche Rechnungen an Kunden
LaufendNAÄ implizite AnnahmeCIBKundenversprechen gebrochen

Team CIB (17 Themen)

#ThemaKurzfassungPrioDauerDeadlineStatus
C1Implizite Annahme NAÄKundenversprechen: Standard-Prozess fuer NAÄ. O2CCIB-6931 unassigned.MUSSMPI 41⚠ Geschoben
C2Spring Boot 4 (SV, AV, IFP)EOL 3.5 Juni 2026. SV (Saurav), Archivierung (Hans-Henning), IFP aktiv.MUSSMJun 2026🔄 In Arbeit
C3Abrechnung TTT/AC41 offene Tickets, 8 Highest. Grundrisiko: Nicht korrekt abrechnen.MUSSQLaufend🔄 Taskforce
C420h Zug AbrechnungTTTSOL-2149 BLOCKED. Loesung funktioniert nicht.MUSSMPI 41❌ Blocked
C5Vertragskorrektur rueckwirkendTTTSOL-1956 Highest. Konzernreporting.HOCHMPI 41🔄
C6NEP2 FunktionalitaetAktueller TTT-Meilenstein. Laeuft stabil.HOCHQLaufend🔄
C7Aenderungswesen finalisierenParallele Aenderungsbestellungen validieren.HOCHMPI 41Offen
C8Vorpruefung PortalValidierung VOR Absenden. Verhindert Haengenbleiben.HOCHMPI 41/42Offen
C9Click&Ride AnbindungADR-72. SUBP arbeitet an Teilen.HOCHQPI 41Teilweise
C10Camunda 8.9Support-Zeitraeume beachten.MITTELSPI 41Offen
C11Full-Table-Scans AVPerformance-Problem.MITTELMPI 41Offen
C12RouteUpdate-ProzessNoch nicht implementiert. Nachlieferung.MITTELQPI 42Offen
C13§22 ERegGEintritt Drittunternehmen in Vertrag.MITTELMPI 42Offen
C14LeistungsverweigerungDurchsetzung Stufe 2.MITTELMPI 42Offen
C15Rahmenvertraege aufraeumenReduziert Pflegeaufwand.NIEDRIGSOffen
C16Mehrfach-Beanstandung FixNur erste wird weitergeleitet.NIEDRIGSOffen
C17SV-Smells abbauen2214 Smells. Sprint-weise.NIEDRIGLLaufendOffen
"@ $Html += @"

Team 404 (17 Themen)

#ThemaKurzfassungPrioDauerDeadlineStatus
P1Portal-Bug-Rate senken33% Bug-Rate. Emmanuel 69%, Leon 71%. Systematisch.HOCHLLaufend⚠ Kritisch
P2Entkopplung ZuglaufpunkteVererbungslogik entfernen — Hauptquelle vieler Bugs.HOCHQPI 41/42Offen
P3Fehlermeldungen-KonzeptVerstaendliche Meldungen. BO-Prioritaet.HOCHMPI 41Offen
P4Uebersichtsseite VorgaengeGruppiert nach RouteID.HOCHMPI 41Offen
P5E2E-Tests ausbauenPlaywright/Cypress. Coverage gut, Testqualitaet nicht.HOCHLLaufendOffen
P6Testumgebung mit TPNDauerhaft verfuegbar.HOCHMPI 41Offen
P7Vorab-Validierung (BEP)Zusammen mit CIB C8.HOCHMPI 41/42Offen
P8Benachrichtigungen E-MailBei NAÄ oder Angebotseingang.MITTELMPI 42Offen
P9ExpertenmodusKompakte Maske fuer Erfahrene.MITTELMPI 42Offen
P10Massenkopie TaktbestellungenMehrere Takte kopieren.MITTELMPI 42Offen
P11SuchfunktionLeistungsfaehige Suche.MITTELMPI 42Offen
P12KalenderfunktionKunden tun sich schwer.MITTELSPI 42Offen
P13VerknuepfungslogikPlanned/RelatedPlanned IDs.MITTELMPI 42Offen
P14Vorlagen ueberarbeitenFehleranfaellig. Konzept noetig.MITTELMPI 43Offen
P15Auslands-/NE-StreckenHilfe beim Anlegen.NIEDRIGMOffen
P16TPN-Import optimierenZu komplex.NIEDRIGQOffen
P17NutzerfuehrungVerkehrsart zu Beginn.NIEDRIGSOffen

Team Zero (16 Themen)

#ThemaKurzfassungPrioDauerDeadlineStatus
Z1Spring Boot 4 (CI, AV)AV-Trasse Test-Branch aktiv.MUSSMJun 2026🔄
Z2NEP2 SchnittstellenAktueller TTT-Meilenstein.HOCHQLaufend🔄
Z3Workarounds TTK aufraeumenTechnische Schuld.HOCHMPI 41Offen
Z4Performance AVAuftrags-Verwaltung.HOCHMPI 41Offen
Z5VerschluesselungSecurity-Anforderung.HOCHSPI 41Offen
Z6Monitoring GrafanaBoards nutzbar machen.MITTELMPI 41Offen
Z7StationsportalFertigstellen.MITTELMPI 41/42Offen
Z8LuP VNP VersandLast- und Performance.MITTELMPI 42Offen
Z9PCS aufraeumenGestaltung Rueckweg. Gross.MITTELQPI 42/43Offen
Z10RunbookAktualisieren.NIEDRIGMLaufendOffen
Z11Click&RideMit CIB.NIEDRIGQPI 43+Offen
Z12Infrastruktur RevisionenVerarbeiten.NIEDRIGMOffen
Z13Ersatz Message Routing IDSenderReference. Gross.NIEDRIGQOffen
Z14XSD 3.5.2Kann gross werden.NIEDRIGQOffen
Z15LuP neuKomplett neu.NIEDRIGLOffen
Z16TDM aufraeumenDatenmodell.NIEDRIGMOffen

OPs / DevOps (14 Themen)

#ThemaKurzfassungPrioDauerDeadlineStatus
O1Netcool-AnbindungBetriebsueberwachung. UKA.MUSSMPI 40/41🔄
O2Monitoring-KonzeptUmsetzung seit PI 40.MUSSMPI 41🔄
O3SL Silber PlusVertragliche Verpflichtung.MUSSQAug 2026Offen
O4DR-Test 3SL-Voraussetzung.HOCHMPI 40/41🔄
O5Secret-RotationSecurity-Konzept.HOCHMPI 41Offen
O6Deployment-AutomatisierungSmoketests. Seit 03/2026.HOCHQPI 41/42🔄
O7K8s-Cluster/NamespacesUmstellung. UKA.HOCHMPI 40🔄
O8Jan Lubenow entlastenSPOF 39%. Wissenstransfer.HOCHLLaufend
O9AppMesh-AlternativeAWS EOL 2026.MITTELQPI 42Offen
O10Umgebungen konsolidieren17+ reduzieren.MITTELQPI 42/43Offen
O11Keycloak konsolidieren5+ Repos.NIEDRIGMOffen
O12ECR statt ArtifactoryLaufzeit-Artefakte. UKA.MITTELMPI 41Offen
O13Security-Groups egressNetzwerk-Security.MITTELMPI 41Offen
O14Runbook beschleunigenDevOps-Doku.MITTELLLaufend🔄

Uebergreifend / Programm (13 Themen)

#ThemaKurzfassungPrioDauerDeadlineStatus
U1Hypercare beendenNormalbetrieb.HOCHJul 2026Offen
U2GelV ErweiterungenTTT-Meilenstein.HOCHQSep 2026Offen
U3ujBau FunktionalitaetTTT-Meilenstein.HOCHQLaufend🔄
U4FplJ 28 VorbereitungFahrplanwechsel Dez 2026.HOCHQDez 2026Offen
U5DB Cargo Eskalation CIOTTTSOL-2186. PCS + VNP.HOCHMPI 41🔄
U6OTN-Vergabe Fpl 2027Muss vor FplW geloest sein.HOCHMDez 2026🔄
U7Ad-hoc Verkehre <1hBLOCKED. TopThema. FV.HOCHMPI 41
U8Mittiger Teilausfall SEVFernverkehr. Taskforce.HOCHMPI 41🔄
U9Team-ReorganisationSubdomaenen-Schnitt.MITTELQQ1 2027Offen
U10Support-EnablementTools, Zugang, Prozesse.MITTELMPI 42Offen
U11Contract TestingCross-Team Qualitaet.NIEDRIGQPI 43Offen
U12TPN abloesenParallelbetrieb beenden.NIEDRIGLQ2 2027Offen
U13Daten-PartitionierungPerformance wachsende Daten.MITTELQDez 2026Offen

Zusammenfassung

TeamMUSSHOCHMITTELNIEDRIGGesamt
CIB455317
404077317
Zero144716
OPs/DevOps354214
Uebergreifend083213
GESAMT829231777
"@ # Create or Update $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: $($_.Exception.Message)" -ForegroundColor Red; exit 1 } if ($SearchData.results -and $SearchData.results.Count -gt 0) { $PageId = $SearchData.results[0].id $VerResp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId`?expand=version" -Headers $Headers -UseBasicParsing $VerData = $VerResp.Content | ConvertFrom-Json $Version = $VerData.version.number + 1 Write-Host " Aktualisiere (ID: $PageId, v$Version)..." -NoNewline $Body = @{ version = @{ number = $Version }; title = $Title; type = "page"; body = @{ storage = @{ value = $Html; representation = "storage" } } } | ConvertTo-Json -Depth 10 $Resp = Invoke-WebRequest -Uri "$ApiBase/content/$PageId" -Method Put -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing Write-Host " OK" -ForegroundColor Green $ResultId = ($Resp.Content | ConvertFrom-Json).id } else { Write-Host " Erstelle neue Seite..." -NoNewline $Body = @{ type = "page"; title = $Title; space = @{ key = $SpaceKey }; ancestors = @(@{ id = $ParentPageId }); body = @{ storage = @{ value = $Html; representation = "storage" } } } | ConvertTo-Json -Depth 10 $Resp = Invoke-WebRequest -Uri "$ApiBase/content" -Method Post -Headers $Headers -Body ([System.Text.Encoding]::UTF8.GetBytes($Body)) -UseBasicParsing Write-Host " OK" -ForegroundColor Green $ResultId = ($Resp.Content | ConvertFrom-Json).id } Write-Host "" Write-Host "============================================================" -ForegroundColor Green Write-Host " Seite: $ConfluenceUrl/pages/viewpage.action?pageId=$ResultId" -ForegroundColor Green Write-Host "============================================================" -ForegroundColor Green