Files
biztalk-application-catalog/Dokumentation.md
T

8.0 KiB

Technische Dokumentation: BEW BizTalk Application Catalog

1. Zielbild

Das Werkzeug erstellt je Umgebung eine eigenständige Microsoft-Excel-Arbeitsmappe mit der vollständigen Liste der auf dem lokalen BizTalk Server 2020 installierten Anwendungen und den wichtigsten zugeordneten Kernparametern.

ACC
  +-- 1 BizTalk Server 2020 / Windows Server 2019  <-- Tool lokal ausführen
  +-- 1 SQL Server für die BizTalk-Datenbanken

PROD
  +-- 1 BizTalk Server 2020 / Windows Server 2019  <-- Tool lokal ausführen
  +-- 1 SQL Server für die BizTalk-Datenbanken

ACC und PROD werden getrennt inventarisiert. Da es pro Umgebung nur einen BizTalk-Knoten gibt, ist kein Node-Abgleich erforderlich.

2. Architektur

Administrative cmd.exe
  |
  +-- run-inventory.cmd ACC|PROD
        |
        +-- BizTalkApplicationCatalog.exe
              |
              +-- SystemCollector
              |     +-- Win32_OperatingSystem
              |     +-- lokale BizTalk Registry
              |     +-- MSBTS_GroupSetting
              |
              +-- BizTalkWmiCollector
              |     +-- vollständige Anwendungsliste
              |     +-- Artefaktdetails
              |     +-- Hosts und Handler
              |     +-- Abdeckungsstatus pro Klasse
              |
              +-- XlsxReportWriter
                    +-- Office Open XML / ZIP
                    +-- Inline Strings, keine Shared-String-Abhängigkeit
                    +-- Filter, Freeze Panes, Styles
                    +-- atomarer Dateiaustausch

Die Anwendung referenziert keine Microsoft.BizTalk.*-Assembly. Die einzige BizTalk-Schnittstelle ist der lokal installierte WMI-Provider. Dadurch besteht das Deployment nur aus EXE, Konfiguration, Startskript und Dokumentation.

3. Toolchain und Kompatibilität

Die Build-Baseline ist absichtlich auf die BizTalk-2020-Umgebung ausgerichtet:

  • Visual Studio 2019 / Solution Version 16
  • MSBuild 16.x, insbesondere 16.11
  • klassisches MSBuild-Projektformat mit ToolsVersion="15.0"
  • .NET Framework 4.7.2
  • C# 7.3
  • keine SDK-Style-Projekte
  • kein PackageReference
  • keine global.json
  • keine NuGet-Abhängigkeit

Damit wird nicht das installierte .NET SDK 8 oder neuer ausgewählt. Der bekannte Fehler „.NET SDK 8.x requires at least MSBuild 17.8.3“ kann bei dieser Solution nicht durch eine SDK-Auswahl entstehen.

4. Datenquellen

4.1 Pflichtquelle

MSBTS_Application liefert die Primärliste aller Anwendungen. Liefert diese Klasse keine Datensätze oder kann sie nicht gelesen werden, gilt der Pflichtabschnitt als fehlgeschlagen und der Prozess endet nach der dennoch versuchten XLSX-Erzeugung mit Exitcode 1.

Aufgenommene Parameter:

  • Name beziehungsweise ApplicationName
  • Description
  • Status
  • IsDefault, soweit vom Provider geliefert

4.2 Optionale Artefaktklassen

WMI-Klasse Berichtstyp
MSBTS_Orchestration Orchestrierung
MSBTS_SendPort Send Port
MSBTS_SendPortGroup Send Port Group
MSBTS_ReceivePort Receive Port
MSBTS_ReceiveLocation Receive Location
MSBTS_Assembly Assembly
MSBTS_Schema Schema
MSBTS_Map Map
MSBTS_Pipeline Pipeline

Die WMI-Klassen können abhängig von Installation, Providerstand und Berechtigung unterschiedliche Properties anbieten. Deshalb fragt der Collector SELECT * ab und liest bekannte Properties defensiv. Eine nicht vorhandene Property wird leer gelassen und beendet die Klasse nicht.

Receive Ports werden vor Receive Locations gelesen. Fehlt an einer Receive Location die direkte ApplicationName, wird die Anwendung über ReceivePortName bestmöglich aufgelöst.

4.3 Hosts und Handler

  • MSBTS_HostSetting
  • MSBTS_HostInstance
  • MSBTS_ReceiveHandler
  • MSBTS_SendHandler2
  • Fallback MSBTS_SendHandler

Erfasst werden Name, Server, Status, Hosttyp, Windows-Gruppe, 32-Bit-Kennzeichen, Trusted-Kennzeichen und Adaptername, soweit vorhanden.

4.4 Systeminformationen

  • Win32_OperatingSystem
  • HKLM\SOFTWARE\Microsoft\BizTalk Server\3.0
  • HKLM\SOFTWARE\Microsoft\BizTalk Server\3.0\Administration
  • MSBTS_GroupSetting

Registry-Werte werden in 64- und 32-Bit-Ansicht gelesen. Kommandozeilenwerte für Management Server und Datenbank überschreiben ermittelte Werte.

5. Abdeckungsmodell

Jede abgefragte BizTalk-WMI-Klasse erzeugt einen Datensatz im Blatt Abdeckung:

Status Bedeutung
Vollständig Abfrage erfolgreich; die angegebene Zeilenzahl ist technisch belegt
Begrenzt Abfrage erfolgreich, aber das konfigurierte Zeilenlimit wurde erreicht
Nicht verfügbar Klasse oder Berechtigung nicht verfügbar; eine Null ist nicht fachlich bestätigt
Fehler Pflichtquelle lieferte kein verwertbares Ergebnis

Dieses Modell verhindert die irreführende Interpretation eines fehlenden WMI-Ergebnisses als „keine Artefakte vorhanden“.

MaxRowsPerArtifactType begrenzt optional die Details pro Artefakttyp. Der Standard ist 10000. Die Anwendungsliste aus MSBTS_Application wird nicht begrenzt.

6. Excel-Erzeugung

Die .xlsx-Datei ist ein OPC-/ZIP-Paket mit folgenden Kernteilen:

[Content_Types].xml
_rels/.rels
docProps/core.xml
docProps/app.xml
xl/workbook.xml
xl/_rels/workbook.xml.rels
xl/styles.xml
xl/worksheets/sheet1.xml ... sheet10.xml

Zelltexte werden als inlineStr geschrieben. Dadurch wird keine Shared-String-Tabelle im Arbeitsspeicher aufgebaut. Zahlen werden als numerische Zellen gespeichert und können in Excel direkt summiert oder gefiltert werden.

Der Writer:

  1. erzeugt eine eindeutige temporäre Datei im Zielordner,
  2. schreibt und schließt alle XML-/ZIP-Teile,
  3. entfernt eine gegebenenfalls vorhandene Zieldatei gleichen Namens,
  4. verschiebt die vollständige temporäre Datei atomar auf den Zielnamen,
  5. löscht temporäre Reste auch im Fehlerfall.

Ein einzelner Zelltext wird auf das Excel-Limit von 32.767 Zeichen begrenzt. Nicht XML-konforme Steuerzeichen werden entfernt.

7. Resilienz

  • SafeCollector isoliert voneinander unabhängige Abschnitte.
  • Jeder Abschnitt schreibt Start, Ende, Dauer und Fehler in Konsole und Log.
  • Optionale WMI-Klassen werden einzeln behandelt.
  • Timeout und maximale Detailzeilen sind in App.config konfigurierbar.
  • Die XLSX wird auch bei optionalen Lücken erstellt.
  • Die vollständige Anwendungsliste ist ein Pflichtabschnitt.
  • Findings erklären Lücken und nennen eine konkrete Prüfung.

8. Datenschutz und Secrets

Das Inventar soll keine Credentials enthalten. Bekannte Kennwort-, Secret- und Tokenmuster in Text- und Adresswerten werden durch [REDACTED] ersetzt. Das ersetzt keine Schutzklassifizierung: interne Adressen, Servernamen, Hostgruppen und Anwendungsbezeichnungen bleiben sensible Betriebsinformationen.

Es werden keine Kennwörter abgefragt, keine Bindings exportiert und keine aktiven Endpunktverbindungen getestet.

9. Build, Test und Paketierung

Windows-Build:

scripts\build-release.cmd

Der Build:

  1. findet MSBuild über vswhere.exe oder PATH,
  2. baut Release|Any CPU,
  3. führt das Testprogramm aus,
  4. führt den Self-Test der eigentlichen EXE aus.

Der Self-Test benötigt kein BizTalk. Er prüft:

  • Secret-Redaktion
  • Erstellung aller zehn Tabellenblätter
  • Vorhandensein der erforderlichen OPC-/XLSX-Teile
  • XML-Wohlgeformtheit aller Paketbestandteile
  • erwartete Blattnamen
  • Abwesenheit des Testkennworts

Deployment:

scripts\package-release.cmd

Quell-ZIP und certutil-dekodierbarer Text:

scripts\package-source.cmd

10. Validierung in ACC und PROD

Je Umgebung:

  1. EXE mit --self-test starten.
  2. Inventar in einer administrativen cmd.exe ausführen.
  3. Exitcode und Log prüfen.
  4. XLSX öffnen und Blatt Abdeckung prüfen.
  5. Zahl der Anwendungen mit der BizTalk Administration Console vergleichen.
  6. Stichproben für Ports, Orchestrierungen und Assemblies durchführen.
  7. XLSX und Log im geschützten Umgebungsordner archivieren.

ACC- und PROD-Dateien dürfen nicht zusammengeführt werden, ohne die Spalten Umgebung und Server beizubehalten.