12 KiB
BizTalk Platform Management Tool Dokumentation
Stand: 2026-08-11
Implementierung: C# WinForms, .NET Framework 4.6.1
Archivierte PowerShell-Version: archive/powershell/BizTalkPlatformManagementTool.ps1
Zweck
Das BizTalk Platform Management Tool unterstützt kontrollierte Wartungsfenster für Microsoft BizTalk Server 2020:
- Exakten Laufzeitstatus vor einer Wartung erfassen.
- Receive Locations, Orchestrations, Send Ports und Host Instances in definierter Reihenfolge herunterfahren.
- Den Laufzeitstatus aus einer gespeicherten
before.jsonwiederherstellen. - Den Status nach der Wartung erfassen und beide Snapshots vergleichen.
- Plan- und Ergebnisdateien für Review, Audit und Nachvollziehbarkeit schreiben.
Projektstruktur
- Solution:
BizTalkPlatformManagementTool.sln - Projekt:
src/BizTalkPlatformManagementTool/BizTalkPlatformManagementTool.csproj - UI:
src/BizTalkPlatformManagementTool/Ui/MainForm.cs - WMI-Zugriff:
src/BizTalkPlatformManagementTool/Services/BizTalkWmiClient.cs - Operationslogik:
src/BizTalkPlatformManagementTool/Services/BizTalkOperationService.cs - Snapshot-Validierung:
src/BizTalkPlatformManagementTool/Services/SnapshotValidator.cs - Installer:
src/BizTalkPlatformManagementTool.Setup - Release-Paketierung:
src/BizTalkPlatformManagementTool.Packager - Regressionstests:
tests/BizTalkPlatformManagementTool.Tests - PowerShell-Archiv:
archive/powershell/BizTalkPlatformManagementTool.ps1
UI Workflow
- Anwendung mit Administratorrechten starten.
- BizTalk-Servernamen eintragen.
- Ausgabeverzeichnis wählen.
- Dry run aktiviert lassen.
- Mit Diagnose den Zugriff auf
root\MicrosoftBizTalkServerprüfen. - Mit Snapshot Before die Datei
before.jsonerzeugen. - Mit Shutdown den Plan
shutdown-plan.jsonerzeugen und prüfen. - Dry run erst deaktivieren, wenn der Plan korrekt ist.
- Nach der Wartung mit Restore aus
before.jsonwiederherstellen. - Mit Snapshot After und Compare die Umgebung validieren.
Die Statusanzeige rechts im Kopfbereich bewertet die Host-Instance-Zustaende des letzten Snapshots und zeigt Started, Stopped, Partial oder Unknown. Clear leert die sichtbaren Ergebnis- und Log-Grids, loescht aber keine Dateien. Close beendet die Anwendung.
Sicherheitsdesign
- Dry-run ist standardmäßig aktiviert.
- Beim Start wird geprüft, ob die Anwendung mit Administratorrechten läuft. Ohne erhöhte Rechte wird eine Fehlermeldung angezeigt und die Anwendung beendet.
- Echte Shutdown-/Restore-Aktionen verlangen erst nach Erzeugung und Speicherung des frischen Plans eine zusätzliche Bestätigung mit Zielserver, Plandatei und exakter Zahl ausführbarer Schritte.
- Jede Operation schreibt Einträge in das sichtbare Operation Log.
- Zusätzlich wird unter
%ProgramData%\BizTalkPlatformManagementTool\Logseine tägliche LogdateiBizTalkPlatformManagementTool-yyyy-MM-dd.loggeschrieben. Nur wenn ProgramData nicht verfügbar ist, wird auf das EXE-Verzeichnis zurückgefallen. - Logdateien werden rollierend für den aktuellen Tag plus vier vorherige Tage vorgehalten.
- Der Kopfbereich zeigt den zuletzt erkannten Umgebungsstatus aus den Host Instances.
- Operationspläne werden vor Laufzeitänderungen gespeichert.
- WMI-Methodenrückgaben werden geprüft.
- Wartezeiten nutzen konfigurierbare Timeout- und Polling-Werte.
- Host Instances auf anderen Servern werden übersprungen und als Warnung protokolliert.
- Echte Shutdown-/Restore-Schritte protokollieren WMI-Klasse, Schlüssel, Zielobjekt und Methode, damit Fehler wie WMI-Query- oder Methodenfehler eindeutig zugeordnet werden können.
- Restore-Pläne werden abgelehnt, wenn Snapshot-Server und ausgewählter Zielserver nicht übereinstimmen; Kurzname und FQDN desselben Hosts gelten als identisch.
- Pro Windows-Sitzung ist nur eine Toolinstanz zulässig; das Fenster kann während einer aktiven WMI-Operation nicht geschlossen werden.
- Die EXE enthält zusätzlich einen WMI-freien
--self-test, den der Installer vor und nach der Aktivierung ausführt.
Shutdown-Reihenfolge
- Receive Locations deaktivieren, die im Snapshot aktiviert waren.
- Orchestrations stoppen, die gestartet waren.
- Send Ports stoppen, die gestartet waren.
- Host Instances stoppen, die auf dem ausgewählten Server gestartet waren.
Restore-Reihenfolge
- Host Instances starten, die auf dem ausgewählten Server zuvor gestartet waren.
- Send Ports wiederherstellen.
- Orchestrations wiederherstellen, soweit dies sicher möglich ist.
- Receive Locations zuletzt wiederherstellen.
Restore-Grenzen
- Send Ports werden auf
Started,StoppedoderBoundzurückgesetzt. - Orchestrations mit Status
Started,StoppedoderUnboundwerden direkt behandelt. - Orchestrations mit Status
Boundbleiben unverändert und werden zur manuellen Prüfung markiert, weil ein blindes Unenlist zuUnboundführen kann. - Receive Locations werden zuletzt aktiviert, damit eingehender Verkehr erst nach Host Instances und abhängigen Artefakten wieder aufgenommen wird.
Ausgabedateien
- Snapshots:
before.json,after.json - Operationspläne:
shutdown-plan.json,restore-plan.json - Nachher-Snapshots:
shutdown-after.json,restore-after.json - Diff:
diff.json,diff.csv,diff.html - Snapshot-Reports:
*.csv,*.hosts.csv,*.html - Laufzeitlogs:
%ProgramData%\BizTalkPlatformManagementTool\Logs\BizTalkPlatformManagementTool-yyyy-MM-dd.log - Installerlogs:
%ProgramData%\BizTalkPlatformManagementTool\InstallerLogs\setup-*.log
Fehleranalyse
Bei echten Shutdown- und Restore-Aktionen wird jeder Schritt vor der Ausführung mit Artefakttyp, WMI-Klasse, Schlüsselproperty, Schlüsselwert und Methodenname protokolliert. Die Objektauflösung verwendet eine breite SELECT * FROM <class>-Abfrage und filtert danach im Prozess auf den Schlüsselwert. Dadurch können Host-Instance-Namen und andere BizTalk-Namen mit Sonderzeichen keine ungültige WMI-WQL-WHERE-Query mehr erzeugen.
Snapshot- und Plan-JSON-Dateien werden als UTF-8 ohne BOM über eine temporäre Datei im Zielverzeichnis und anschließenden atomaren Austausch geschrieben. Beim Laden werden vorhandene Dateien mit UTF-8-BOM oder durch Encoding-Konvertierung sichtbar gewordenem BOM-Marker toleriert. Deserialisierte Snapshots werden normalisiert und auf leere Namen, Duplikate und fehlende Strukturen geprüft.
Diffs verwenden den zusammengesetzten Schlüssel aus Anwendung und Artefaktname. Gleichnamige Artefakte in verschiedenen BizTalk-Anwendungen überschreiben sich daher nicht mehr. CSV-Werte mit Präfix =, +, -, @ oder Tab werden mit einem Apostroph neutralisiert, damit Tabellenkalkulationen sie nicht als Formel ausführen.
WMI-Abfrageobjekte sowie Rückgabeobjekte von WMI-Methoden werden deterministisch freigegeben. Polling wartet am Timeout-Ende nur noch für die tatsächlich verbleibende Zeit.
Installer- und Updatearchitektur
Das Releasepaket enthält Setup.exe, application.manifest, den Payload-Ordner application und die Installationsanleitung. Vor jeder Änderung prüft der Installer, dass jede Payload-Datei vollständig im Manifest enthalten ist und Länge sowie SHA-256 entsprechen. Nicht deklarierte Zusatzdateien führen zum Abbruch.
Die Aktivierung ist transaktional aufgebaut:
- Payload validieren.
- Eindeutiges Staging-Verzeichnis neben dem Installationsziel erstellen.
- Kopierte Dateien nochmals per SHA-256 und die Staging-EXE per
--self-testprüfen. - Laufende Toolinstanz ausschließen.
- Bestehendes Verzeichnis in ein eindeutiges Backup verschieben.
- Staging auf demselben Volume als produktives Verzeichnis aktivieren.
- Aktivierte EXE erneut per
--self-testprüfen. - Erst danach Startmenü, optionale Desktop-Verknüpfung und Windows-Uninstall-Eintrag schreiben.
- Windows-Integration durch Rücklesen der Verknüpfungen und der wesentlichen Registrywerte verifizieren.
- Bei einem Fehler nach der ersten Mutation die neue Version entfernen und das Backup einschließlich Windows-Integration wiederherstellen.
Fehler vor der ersten Mutation werden als Kein Rollback erforderlich ausgewiesen. Ein Rollback wird nur als erfolgreich bezeichnet, wenn seine einzelnen Schritte ohne Fehler abgeschlossen wurden; ein verbliebenes Backup ohne aktives Programmverzeichnis verletzt eine zusätzlich geprüfte Invariante und wird als unvollständiger Rollback gemeldet. Bereinigungsprobleme an einem nicht mehr benötigten Backup oder Deinstallations-Quarantäneverzeichnis werden als erfolgreiche Operation mit Warnung protokolliert und zerstören die wiederherstellbaren Dateien nicht blind.
Das dauerhafte Setup-Log enthält pro Lauf einen Kontextkopf mit Version, Betriebssystem, 32-/64-Bit-Kontext, CLR, Rechner, Identität und Elevation. Hinzu kommen Pfade, freier Speicher, Dateiversion/-größe/-SHA-256, vollständige Self-Test-Ausgaben mit Exitcode, Exception-Ketten mit HRESULT und Stacktrace sowie jeder Rollbackschritt. Stabile SETUP-*- und UNINSTALL-*-Fehlercodes ermöglichen die Zuordnung unabhängig vom lokalisierten Meldungstext. Die Aufbewahrung beträgt 90 Tage. Wenn ProgramData für die Diagnose nicht verfügbar ist, wird ein Temp-Fallback verwendet und sichtbar gemeldet; die Schaltfläche Diagnoselogs öffnen öffnet den regulären Ablageort.
Der Self-Test ist eine technische Installationsabnahme ohne BizTalk-WMI. Ein fachlicher Umgebungszustand wie fehlender WMI-Zugriff oder Unknown führt deshalb nicht zum Installer-Rollback. Nach erfolgreicher Installation bleiben Diagnose und ein Dry-run gegen das Zielsystem verpflichtende Abnahmeschritte.
Das äußere ZIP erhält zusätzlich eine SHA-256-Datei und eine Certutil-kompatible Base64-TXT-Datei. Diese äußere Prüfsumme erkennt Übertragungsfehler; sie ist keine digitale Herausgebersignatur. Details und Befehle stehen in Installation.md.
Automatisierte Verifikation
tests/BizTalkPlatformManagementTool.Tests prüft derzeit:
- Atomare JSON-Aktualisierung und BOM-Kompatibilität.
- Anwendungsbezogene Diff-Identität bei gleichnamigen Artefakten.
- Restore-Servergrenze und sichere Restore-Reihenfolge.
- Neutralisierung formelartiger CSV-Werte.
- Erkennung manipulierter Payload-Dateien.
- Ablehnung nicht deklarierter Dateien und aus dem Payload-Verzeichnis ausbrechender Manifestpfade.
- Staging-Fehler ohne Mutation einer bestehenden Installation.
- Erfolgreiche Staging-Aktivierung.
- Wiederherstellung der Vorversion, wenn der Self-Test nach Aktivierung fehlschlägt.
- Deinstallation durch atomare Umbenennung des Programmverzeichnisses vor der bestmöglichen Bereinigung.
- Eindeutige Fehlerphase ohne irreführende Rollbackmeldung bei einem Staging-Fehler.
- Vollständiger Diagnosekontext mit Exception-Kette und Temp-Fallback für das Setup-Log.
- Unabhängigkeit der Installation von Fehlern der UI-Fortschrittsanzeige.
Der portable Build, die Tests, der Anwendungsselftest und die Paketkonsistenz sind lokal unter Mono prüfbar. Die endgültige Freigabe erfordert zusätzlich einen Windows-Test von UAC, Registry, Verknüpfungen und Setup-Rollback sowie einen repräsentativen BizTalk-2020-Test von Diagnose, Dry-run, Shutdown und Restore.
Status Mapping
MSBTS_SendPort.Status:1=Bound,2=Stopped,3=StartedMSBTS_Orchestration.OrchestrationStatus:1=Unbound,2=Bound,3=Stopped,4=StartedMSBTS_ReceiveLocation:Enabled = !IsDisabledMSBTS_HostInstance.ServiceState:1=Stopped,2=StartPending,3=StopPending,4=Started
Anforderungen
- Windows Server oder Administrationshost mit .NET Framework 4.6.1
- BizTalk Server 2020 oder installierte BizTalk Administration Tools
- Berechtigungen auf den WMI-Namespace
root\MicrosoftBizTalkServer - Lokale Administratorrechte und Start der Anwendung mit Als Administrator ausführen
- Visual Studio mit .NET Framework 4.6.1 Developer Pack für Builds