Reduce catalog to Phase 1 ACC/PROD view

This commit is contained in:
2026-07-27 18:03:39 +02:00
parent 2b5b97c869
commit 53fcfb84a4
17 changed files with 1208 additions and 1555 deletions
+88 -131
View File
@@ -1,82 +1,61 @@
# BEW BizTalk Application Catalog
# BEW BizTalk Application Catalog Phase 1
`BEW BizTalk Application Catalog` inventarisiert die auf einem BizTalk Server 2020 installierten Anwendungen und erzeugt eine kompakte, filterbare Microsoft-Excel-Arbeitsmappe (`.xlsx`).
Das Tool erzeugt nur die für die Phase-1-Excel-Sicht benötigten Daten:
Das Tool wird lokal einmal auf dem BizTalk-Server in `ACC` und einmal auf dem BizTalk-Server in `PROD` ausgeführt. Beide Umgebungen bestehen jeweils aus:
- einem BizTalk Server 2020 auf Windows Server 2019
- einem separaten SQL Server für die BizTalk-Datenbanken
Microsoft Excel, Microsoft Office, PowerShell, Internetzugriff und ein .NET SDK werden auf dem Zielserver nicht benötigt.
## Ergebnis
Die erzeugte Arbeitsmappe enthält zehn Tabellenblätter:
| Blatt | Inhalt |
| Spalte | Inhalt |
| --- | --- |
| `Übersicht` | Umgebung, Server, BizTalk-/Windows-Metadaten, Gesamtzahlen und Laufstatus |
| `Anwendungen` | vollständige, kompakte Anwendungsliste mit Status, Beschreibung und Artefaktzahlen |
| `Artefakte` | konsolidierte technische Detailansicht |
| `Ports` | Send Ports, Send Port Groups, Receive Ports und Receive Locations |
| `Orchestrierungen` | Orchestrierungen, Status und Hostzuordnung |
| `Schemas-Maps-Pipelines` | Schemas, Maps und Pipelines |
| `Assemblies` | bereitgestellte BizTalk-Assemblies |
| `Hosts-Handler` | Hosts, Hostinstanzen sowie Receive-/Send-Handler |
| `Abdeckung` | Erfolg, Zeilenzahl und mögliche Lücken jeder WMI-Datenquelle |
| `Findings` | Warnungen, Fehler und empfohlene Prüfungen |
| `BizTalk-Anwendung` | Name der BizTalk-Anwendung |
| `Umgebung` | `ACC + PRD`, `nur ACC` oder `nur PRD` |
| `Adapter-Typ` | Adapter mit Anzahl, zum Beispiel `FILE (2x) / SFTP (1x)` |
| `Anzahl Endpunkte` | Summe der Endpunkte in den berücksichtigten Umgebungen |
| `BizTalk-Anwendung in ACC` | `✓` oder `` |
| `BizTalk-Anwendung in PRD` | `✓` oder `` |
| `Hinweis` | Kennzeichnung einer nur einseitig vorhandenen Anwendung |
Alle Detailblätter besitzen Filter, fixierte Kopfzeilen und angepasste Spaltenbreiten.
Die Arbeitsmappe enthält exakt ein Blatt namens `Phase 1`. Es werden keine weiteren Übersichts-, Artefakt-, Port-, Host-, Abdeckungs- oder Findings-Blätter erzeugt.
## Kernparameter je Anwendung
## Ablauf
Das Blatt `Anwendungen` enthält unter anderem:
ACC und PROD sind getrennte BizTalk-Umgebungen. Deshalb arbeitet das Tool in zwei Schritten:
- Umgebung und ausführenden BizTalk Server
- Anwendungsname, Beschreibung, Status und Standardanwendungskennzeichen
- Gesamtzahl zugeordneter Artefakte
- Anzahl Orchestrierungen
- Anzahl Send Ports und Send Port Groups
- Anzahl Receive Ports und Receive Locations
- Anzahl Assemblies, Schemas, Maps und Pipelines
- erkannte Hosts beziehungsweise Handler
- verwendete Adapter
- expliziten Status der Detailabdeckung
1. Auf dem lokalen ACC-BizTalk-Server wird ein ACC-JSON-Snapshot erzeugt.
2. Auf dem lokalen PROD-BizTalk-Server wird ein PROD-JSON-Snapshot erzeugt.
3. Beide JSON-Dateien werden mit demselben Tool zur gemeinsamen Excel-Sicht zusammengeführt.
Die vollständige Anwendungsliste stammt aus `MSBTS_Application`. Eine nicht verfügbare optionale Artefaktklasse wird nicht stillschweigend als fachliche Null interpretiert, sondern im Blatt `Abdeckung` ausgewiesen.
Jeder lokale Lauf erzeugt zusätzlich eine einblättrige Excel-Sicht für die jeweilige Umgebung. Erst der Merge liefert den belastbaren ACC/PRD-Vergleich wie in der Zielansicht.
## Sicherheits- und Betriebsprinzip
## Erfasste Daten
- ausschließlich lokale, lesende WMI- und Registry-Abfragen
- keine Änderungen an Anwendungen, Ports, Hosts oder Runtime-Instanzen
- keine direkte SQL-Abfrage und keine Datenbankänderung
- keine Office-Automation und keine COM-Interop
- zusätzliche Redigierung versehentlich gelieferter Kennwort-/Tokenwerte
- atomare XLSX-Erzeugung über eine temporäre Datei
- Fehler optionaler WMI-Klassen stoppen die übrige Erfassung nicht
- identische Fortschrittsausgabe auf Konsole und in der Logdatei
Das Tool liest ausschließlich:
Die XLSX- und Logdatei enthält interne Server-, Anwendungs-, Host- und Endpunktinformationen und muss entsprechend geschützt abgelegt werden.
- `MSBTS_Application` für die vollständige Anwendungsliste
- `MSBTS_SendPort` für primäre und gegebenenfalls sekundäre Send-Endpunkte
- `MSBTS_ReceivePort` nur zur Zuordnung einer Receive Location zur Anwendung
- `MSBTS_ReceiveLocation` für Receive-Endpunkte
## Voraussetzungen auf ACC und PROD
Ein Endpunkt ist:
- lokale Ausführung auf dem jeweiligen BizTalk Server 2020
- Windows Server 2019
- administrative `cmd.exe` empfohlen
- Konto mit Leserechten auf `root\MicrosoftBizTalkServer`, regulär ein BizTalk-Administratoren- oder geeignetes Operatorenkonto
- die primäre Transportkonfiguration eines Send Ports,
- eine konfigurierte sekundäre Transportkonfiguration eines Send Ports oder
- eine Receive Location.
Receive Ports selbst sind Container und werden nicht als Endpunkt gezählt. Anwendungen ohne Endpunkt bleiben mit `0` und Adapter-Typ `` in der Sicht enthalten.
Nicht erfasst werden insbesondere Adressen, Credentials, Beschreibungen, Status, Hosts, Handler, Orchestrierungen, Schemas, Maps, Pipelines, Assemblies, Betriebssystem- oder SQL-Daten.
## Voraussetzungen
- BizTalk Server 2020 auf Windows Server 2019
- lokale Ausführung auf dem jeweiligen BizTalk-Server
- .NET Framework 4.7.2 oder höher
- funktionierender lokaler BizTalk-WMI-Provider
- Leserechte auf `root\MicrosoftBizTalkServer`
- administrative `cmd.exe` empfohlen
Microsoft Office ist ausdrücklich keine Voraussetzung.
Microsoft Excel, Microsoft Office, PowerShell, Internetzugriff, NuGet und ein .NET SDK werden auf dem Zielserver nicht benötigt.
## Schnellstart
## Lokalen Snapshot erzeugen
1. Deployment-Ordner auf den BizTalk Server kopieren.
2. Administrative `cmd.exe` öffnen.
3. Self-Test ohne BizTalk-Zugriff ausführen.
4. Inventar für die jeweilige Umgebung erzeugen.
Self-Test:
Zuerst den Self-Test ausführen:
```cmd
BizTalkApplicationCatalog.exe --self-test
@@ -94,117 +73,95 @@ PROD:
run-inventory.cmd PROD C:\BizTalk-Doku\PROD
```
Ergebnis eines erfolgreichen lokalen Laufs:
```text
Phase1-BizTalk-Anwendungskatalog-ACC-SERVER-20260727-150000.json
Phase1-BizTalk-Anwendungskatalog-ACC-SERVER-20260727-150000.xlsx
Phase1-BizTalk-Anwendungskatalog-ACC-SERVER-20260727-150000.log
```
Nur JSON-Dateien eines Laufs mit Exitcode `0` dürfen zusammengeführt werden. Ein unvollständiger Snapshot trägt `IsComplete: false` und wird vom Merge abgelehnt.
## ACC und PROD zusammenführen
Beide JSON-Dateien in einen gemeinsamen, geschützten Ordner kopieren und ausführen:
```cmd
run-merge.cmd ^
C:\BizTalk-Doku\ACC\Phase1-BizTalk-Anwendungskatalog-ACC-SERVER-20260727-150000.json ^
C:\BizTalk-Doku\PROD\Phase1-BizTalk-Anwendungskatalog-PROD-SERVER-20260727-151500.json ^
C:\BizTalk-Doku\ACC-PROD
```
Direkter Aufruf:
```cmd
BizTalkApplicationCatalog.exe ^
--environment ACC ^
--output C:\BizTalk-Doku\ACC
--merge ^
--acc-json C:\BizTalk-Doku\ACC\ACC.json ^
--prod-json C:\BizTalk-Doku\PROD\PROD.json ^
--output C:\BizTalk-Doku\ACC-PROD
```
## Konsolenausgabe
Das Tool zeigt laufend, was es gerade erfasst und wann die Excel-Datei geschrieben wurde:
Die gemeinsame Datei heißt beispielsweise:
```text
[INFO] Starte Abschnitt: Anwendungen und Artefakte
[INFO] 34 installierte BizTalk-Anwendung(en) gefunden.
[INFO] Send Port: 87 Datensatz/Datensätze.
[INFO] Erzeuge Microsoft-Excel-Datei: C:\BizTalk-Doku\ACC\...
[INFO] Excel-Datei erfolgreich erzeugt: C:\BizTalk-Doku\ACC\...
Phase1-BizTalk-Anwendungskatalog-ACC-PROD-20260727-153000.xlsx
```
## Ausgabedateien
Bei identischer Adapterverteilung in ACC und PROD wird sie einmal angezeigt. Bei Abweichungen kennzeichnet die Zelle beide Werte, zum Beispiel:
```text
BizTalk-Anwendungsinventar-ACC-BIZTALKSERVER-20260727-150000.xlsx
BizTalk-Anwendungsinventar-ACC-BIZTALKSERVER-20260727-150000.log
ACC: FILE (2x) | PRD: FILE (1x) / SFTP (1x)
```
`Anzahl Endpunkte` ist im Merge die Summe aus ACC und PROD.
## Optionen und Exitcodes
| Option | Bedeutung |
| --- | --- |
| `--environment NAME` | Umgebung, regulär `ACC` oder `PROD` |
| `--output PFAD` | Zielordner für XLSX und Log |
| `--management-server NAME` | optionaler Management-SQL-Server-Hinweis |
| `--management-database NAME` | optionale Management-Datenbank; Fallback `BizTalkMgmtDb` |
| `--self-test` | prüft XLSX-Struktur, Tabellen und Secret-Redaktion |
| `--help` | zeigt die Hilfe |
| `--environment ACC\|PROD` | lokaler Inventarlauf |
| `--output PFAD` | Zielordner |
| `--merge` | ACC- und PROD-Snapshot zusammenführen |
| `--acc-json PFAD` | vollständiger ACC-Snapshot |
| `--prod-json PFAD` | vollständiger PROD-Snapshot |
| `--self-test` | JSON-, Merge- und XLSX-Test ohne BizTalk |
| `--help` | Hilfe |
| Exitcode | Bedeutung |
| ---: | --- |
| `0` | vollständige Anwendungserfassung und XLSX erfolgreich |
| `1` | XLSX erzeugt, aber ein Pflichtabschnitt war unvollständig |
| `2` | Aufruf-, Ausgabe- oder Berichtserzeugungsfehler |
| `0` | Snapshot beziehungsweise Merge vollständig erzeugt |
| `1` | lokaler Pflichtabschnitt unvollständig; JSON nicht mergen |
| `2` | Aufruf-, Datei-, JSON- oder XLSX-Fehler |
## Build mit Visual Studio 2019
## Build
Die Solution vermeidet bewusst den beim früheren IIS Inventory aufgetretenen .NET-SDK-/MSBuild-Konflikt:
| Komponente | Vorgabe |
| --- | --- |
| Ziel | .NET Framework 4.7.2 |
| Sprache | C# 7.3 |
| Solution | Visual Studio 2019, Formatversion 16 |
| Projektformat | klassisches MSBuild mit `ToolsVersion="15.0"` |
| MSBuild | 16.x, einschließlich 16.11 |
| NuGet | keine Pakete und kein Restore |
| .NET SDK / `global.json` | nicht erforderlich |
Voraussetzung auf dem Buildrechner ist das `.NET Framework 4.7.2 Developer/Targeting Pack`.
Die Solution verwendet das klassische MSBuild-Projektformat für Visual Studio 2019 / MSBuild 16.x, .NET Framework 4.7.2 und C# 7.3. Es gibt keine NuGet-Abhängigkeiten.
```cmd
scripts\build-release.cmd
scripts\package-release.cmd
```
Das Deployment liegt anschließend unter:
```text
artifacts\BizTalkApplicationCatalog-deploy\
```
## Quellpaket und Base64-Text
Für eine dateibasierte Übergabe:
## Quellpaket als certutil-Text
```cmd
scripts\package-source.cmd
```
Erzeugt werden:
Erzeugt:
```text
artifacts\BizTalkApplicationCatalog-source.zip
artifacts\BizTalkApplicationCatalog-source.zip.txt
```
Dekodieren unter Windows:
Dekodieren:
```cmd
certutil -decode BizTalkApplicationCatalog-source.zip.txt BizTalkApplicationCatalog-source.zip
```
## Gitea
Das Repository enthält `.gitea/workflows/build.yml`. Ein Windows-Runner mit Visual Studio 2019 Build Tools und .NET Framework 4.7.2 Developer Pack baut die Solution, führt Tests und Self-Test aus und stellt den Deployment-Ordner als Artefakt bereit.
## Troubleshooting
### Solution lässt sich in VS 2019 nicht öffnen
Prüfen, dass wirklich diese klassische Solution geöffnet wird und das .NET Framework 4.7.2 Developer Pack installiert ist. Das Repository enthält weder SDK-Style-Projekte noch `global.json` oder `PackageReference`.
### Keine Anwendungen
- Tool lokal auf dem BizTalk Server ausführen
- Konto und WMI-Leserechte prüfen
- Namespace `root\MicrosoftBizTalkServer` prüfen
- BizTalk Administration Console auf demselben Konto testen
### Einzelne Zählwerte sind 0
Zuerst das Blatt `Abdeckung` prüfen. Nur bei Status `Vollständig` ist die Null durch eine erfolgreich gelesene WMI-Klasse belegt. Bei `Nicht verfügbar` oder `Begrenzt` muss die Ursache geprüft werden.
Weitere technische Details stehen in [Dokumentation.md](Dokumentation.md).
Technische Details stehen in [Dokumentation.md](Dokumentation.md).