272 lines
10 KiB
Markdown
272 lines
10 KiB
Markdown
# BEW BizTalk SAP Environment Inventory
|
|
|
|
`BEW BizTalk SAP Environment Inventory` erzeugt lokal auf einem BizTalk Server 2020 eine Microsoft-Word-Dokumentation (`.docx`) der SAP-Adapterverbindungen und eine vollständige Liste aller BizTalk-Anwendungen.
|
|
|
|
Das Tool wird 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
|
|
- einem separaten SQL Server für die BizTalk-Datenbanken
|
|
|
|
Microsoft Office, Word, PowerShell, ein .NET SDK, Internetzugriff und separat
|
|
mitgelieferte BizTalk-DLLs werden auf dem Zielserver nicht benötigt. Die mit den
|
|
lokalen BizTalk-Verwaltungskomponenten installierte
|
|
`Microsoft.BizTalk.ExplorerOM.dll` wird zur Laufzeit aus GAC beziehungsweise
|
|
BizTalk-Installationspfad geladen.
|
|
|
|
## Erfasster Umfang
|
|
|
|
### Vollständige BizTalk-Anwendungsliste
|
|
|
|
- alle Anwendungen read-only aus dem BizTalk Explorer Object Model
|
|
- Anwendungsstatus und Beschreibung, soweit ExplorerOM sie bereitstellt
|
|
- Anzahl und Zuordnung von Orchestrierungen
|
|
- Send Ports und Send Port Groups
|
|
- Receive Ports und Receive Locations
|
|
- Assemblies, Schemas, Maps und Pipelines aus ExplorerOM
|
|
- SAP-/IDoc-Indikatoren aus bereitgestellten Schemas, Actions und Artefaktnamen
|
|
|
|
Die Liste ist nicht auf eine bisher bekannte 15-App-Liste begrenzt. Damit werden auch weitere Anwendungen wie beispielsweise `MasterData_SAP_WebGIS`, `MasterDataHeat`, `WoWHeatInvoice` oder `MeterChangeInfo/Order` sichtbar, sofern sie tatsächlich in der jeweiligen BizTalk-Gruppe installiert sind.
|
|
|
|
### SAP-Adapterverbindungen
|
|
|
|
Aus dem BizTalk-Gruppenbinding und WMI werden unter anderem dokumentiert:
|
|
|
|
- BizTalk-Anwendung und Portzuordnung
|
|
- Sende- oder Empfangsrichtung
|
|
- WCF-SAP bzw. WCF-Custom mit `sapBinding`
|
|
- Port-, Receive-Location- und Handlername
|
|
- RFC-/Listener-Destination
|
|
- SAP-System-ID beziehungsweise R/3-Systemname
|
|
- Application Server oder Message Server
|
|
- Systemnummer
|
|
- Gateway Host und Gateway Service
|
|
- SAP Client und Sprache
|
|
- Listener Program ID
|
|
- SAP Router
|
|
- Actions beziehungsweise erkannte RFC-/IDoc-Operationen
|
|
- SSO-/Benutzerreferenz, jedoch niemals das Kennwort
|
|
|
|
### SAP NCo, Hosts und SNC
|
|
|
|
- konfigurierte SAP-Adapterdefinitionen
|
|
- Receive-/Send-Handler und BizTalk Hosts
|
|
- bekannte ERP-/ISU-Hostfamilien werden nicht fest verdrahtet, sondern aus der realen Umgebung gelesen
|
|
- SAP .NET Connector und Adapter-Pack-Installationen
|
|
- `sapnco.dll`, `sapnco_utils.dll` und Dateiversion/Architektur
|
|
- `UseSnc`, `SncLibrary`, `SncPartnerName`, `SncMyName` und `SncQop`
|
|
- `SNC_LIB`, `SECUDIR` und `SAPNWRFC_HOME`
|
|
- PSE-/Zertifikatspfad, Gültigkeit und Fingerprint, soweit lokal lesbar
|
|
|
|
## Was nicht automatisch aus BizTalk ausgelesen werden kann
|
|
|
|
Folgende Informationen liegen im SAP-System oder in Betriebsprozessen und werden im Bericht als offene Nachweise ausgewiesen:
|
|
|
|
- Partnerprofile aus Transaktion `WE20`
|
|
- Portdefinitionen aus Transaktion `WE21`
|
|
- vollständige SAP-seitige RFC-Destination einschließlich Verbindungstest
|
|
- verbindliche Liste der IDoc-Basistypen und Erweiterungen
|
|
- tatsächliche SAP-Kennwörter
|
|
- Owner und Rotationsprozess für SAP-Credentials bzw. SNC-PSE/Zertifikate
|
|
- DR-Verfahren für die SAP-seitige Umschaltung der RFC-Destination nach Frankfurt
|
|
|
|
Das Tool erfindet hierfür keine Werte. Es dokumentiert nur lokal belegbare Indikatoren und nennt die erforderliche Ergänzung sowie die zuständige Rolle.
|
|
|
|
## Sicherheitsprinzip
|
|
|
|
- ausschließlich read-only ExplorerOM-, WMI- und Registry-Zugriffe
|
|
- `BTSTask ExportBindings /GroupLevel` wird nur zum Lesen verwendet
|
|
- temporärer Binding-Export wird nach dem Parsen gelöscht
|
|
- BizTalk entfernt Kennwörter bereits beim Binding-Export
|
|
- zusätzliche Redigierung von Passwort-, Secret-, Token-, Private-Key- und Connection-String-Feldern
|
|
- keine privaten Schlüssel oder PSE-Inhalte im DOCX
|
|
- kein SAP-Login und kein aktiver RFC-Verbindungstest
|
|
|
|
DOCX und Log enthalten trotzdem interne Host-, Anwendungs-, Zertifikats- und Pfadinformationen und müssen geschützt abgelegt werden.
|
|
|
|
## Voraussetzungen auf ACC und PROD
|
|
|
|
- lokale Ausführung auf dem jeweiligen BizTalk Server
|
|
- administrative `cmd.exe`
|
|
- Konto ist Mitglied von `BizTalk Server Administrators` oder besitzt vergleichbare Leserechte
|
|
- .NET Framework 4.7.2 oder höher
|
|
- Zugriff auf die konfigurierte BizTalk Management Database
|
|
- lokale BizTalk-Verwaltungskomponenten einschließlich
|
|
`Microsoft.BizTalk.ExplorerOM.dll`
|
|
- `BTSTask.exe` aus der lokalen BizTalk-Installation
|
|
|
|
## Schnellstart
|
|
|
|
1. Deployment-Ordner auf den BizTalk Server kopieren.
|
|
2. Administrative `cmd.exe` öffnen.
|
|
3. In den Deployment-Ordner wechseln.
|
|
4. Self-Test starten.
|
|
5. Inventarisierung für die richtige Umgebung ausführen.
|
|
|
|
Self-Test:
|
|
|
|
```cmd
|
|
BizTalkSapEnvironmentInventory.exe --self-test
|
|
```
|
|
|
|
ACC:
|
|
|
|
```cmd
|
|
run-inventory.cmd ACC C:\BizTalk-Doku\ACC
|
|
```
|
|
|
|
PROD:
|
|
|
|
```cmd
|
|
run-inventory.cmd PROD C:\BizTalk-Doku\PROD
|
|
```
|
|
|
|
Direkter Aufruf:
|
|
|
|
```cmd
|
|
BizTalkSapEnvironmentInventory.exe ^
|
|
--environment ACC ^
|
|
--output C:\BizTalk-Doku\ACC
|
|
```
|
|
|
|
## Konsolenausgabe
|
|
|
|
Das Tool zeigt jeden Abschnitt und die erzeugten Dateien direkt auf der Konsole an:
|
|
|
|
```text
|
|
[INFO] Ermittle die BizTalk-Gruppe über MSBTS_GroupSetting.
|
|
[DETAIL] WQL: SELECT Name,MgmtDbServerName,MgmtDbName FROM MSBTS_GroupSetting
|
|
[INFO] MSBTS_GroupSetting abgeschlossen: Datensätze=1; Dauer=84 ms.
|
|
[INFO] Suche die lokale Assembly Microsoft.BizTalk.ExplorerOM.dll.
|
|
[INFO] ExplorerOM-Assembly geladen: Microsoft.BizTalk.ExplorerOM, Version=...
|
|
[INFO] 34 BizTalk-Anwendung(en) geladen (412 ms).
|
|
[INFO] ExplorerOM Schema: 87 Artefakt(e).
|
|
[INFO] Verbinde lokal mit dem BizTalk-WMI-Namespace für optionale Zusatzdaten.
|
|
[INFO] WMI-Abfrage abgeschlossen: SendPort; Datensätze=91; Dauer=173 ms.
|
|
[INFO] Exportiere BizTalk-Gruppenbindings read-only mit BTSTask.
|
|
[INFO] BTSTask ExportBindings erfolgreich abgeschlossen (1865 ms).
|
|
[INFO] 12 SAP-Endpunkt(e) aus dem Binding-Export ausgewertet.
|
|
[INFO] Ergebnisübersicht: Anwendungen=34; SAP-Endpunkte=12; Findings=4.
|
|
```
|
|
|
|
Konsole und Log erhalten dieselben Fortschritts- und Diagnosemeldungen.
|
|
Pflichtfehler erscheinen als `[FEHLER]`, durch einen Fallback abgedeckte oder
|
|
optionale Zugriffsfehler als `[WARNUNG]`. Ausnahmedetails enthalten Typ, HRESULT,
|
|
WMI-Status, innere Ausnahmen und Stacktrace. Fehler eines Collectors stoppen die
|
|
übrigen Abschnitte nicht; Fehler optionaler Zusatzdaten verwerfen insbesondere
|
|
nicht die über ExplorerOM geladene Anwendungsliste.
|
|
|
|
## Ausgabedateien
|
|
|
|
```text
|
|
BizTalk-SAP-Dokumentation-ACC-BIZTALKSERVER-20260727-150000.docx
|
|
BizTalk-SAP-Dokumentation-ACC-BIZTALKSERVER-20260727-150000.log
|
|
```
|
|
|
|
Das DOCX wird direkt als Office Open XML erzeugt. Auf dem BizTalk Server wird keine Office-Anwendung benötigt.
|
|
|
|
## Kommandozeilenoptionen
|
|
|
|
| Option | Bedeutung |
|
|
| --- | --- |
|
|
| `--environment NAME` | Umgebung, regulär `ACC` oder `PROD`. |
|
|
| `--output PFAD` | Zielordner für DOCX und Log. |
|
|
| `--management-server NAME` | SQL-Server der BizTalk Management Database; normalerweise aus Registry. |
|
|
| `--management-database NAME` | Name der Management Database; Standard/Fallback `BizTalkMgmtDb`. |
|
|
| `--btstask DATEI` | Expliziter Pfad zu `BTSTask.exe`. |
|
|
| `--binding-file DATEI` | Vorhandenen Binding-Export offline auswerten, ohne `BTSTask` aufzurufen. |
|
|
| `--self-test` | Prüft Secret-Redaktion, SAP-Parser und DOCX-Struktur. |
|
|
| `--help` | Hilfe anzeigen. |
|
|
|
|
## Exitcodes
|
|
|
|
| Code | Bedeutung |
|
|
| ---: | --- |
|
|
| `0` | Pflichtabschnitte vollständig und DOCX erzeugt. |
|
|
| `1` | DOCX erzeugt, aber mindestens ein Pflichtabschnitt war unvollständig. |
|
|
| `2` | Fataler Aufruf-, Ausgabe- oder Berichtserzeugungsfehler. |
|
|
|
|
## Build für BizTalk Server 2020
|
|
|
|
Die Solution verwendet bewusst das klassische Visual-Studio-2019-Projektformat:
|
|
|
|
| Komponente | Vorgabe |
|
|
| --- | --- |
|
|
| Ziel | .NET Framework 4.7.2 |
|
|
| Sprache | C# 7.3 |
|
|
| Projektformat | klassisches MSBuild, kein `Microsoft.NET.Sdk` |
|
|
| Buildumgebung | Visual Studio 2019/Build Tools, MSBuild 16.x oder neuer |
|
|
| Pakete | keine NuGet-Abhängigkeiten |
|
|
|
|
Build und Tests:
|
|
|
|
```cmd
|
|
scripts\build-release.cmd
|
|
scripts\package-release.cmd
|
|
```
|
|
|
|
Deployment:
|
|
|
|
```text
|
|
artifacts\BizTalkSapEnvironmentInventory-deploy\
|
|
```
|
|
|
|
Die Gitea-Workflowdatei `.gitea/workflows/build.yml` baut, testet und veröffentlicht den Deployment-Ordner auf einem Windows-Runner.
|
|
|
|
## Troubleshooting
|
|
|
|
### Keine Anwendungen
|
|
|
|
- lokal auf dem BizTalk Server ausführen
|
|
- Konto und Mitgliedschaft in den BizTalk-Administrator-/Operator-Gruppen prüfen
|
|
- im Log das ermittelte Management-Datenbankziel prüfen
|
|
- geladene ExplorerOM-Assembly einschließlich Version und Pfad prüfen
|
|
- Zugriff auf die BizTalk Management Database mit integrierter
|
|
Windows-Authentifizierung prüfen
|
|
- bei fehlender Erkennung `--management-server` und
|
|
`--management-database` explizit angeben
|
|
|
|
### WMI meldet `Invalid class`
|
|
|
|
Die Anwendungsliste verwendet nicht mehr die nicht verlässlich vorhandene Klasse
|
|
`MSBTS_Application`, sondern ExplorerOM. Auch Assemblies, Schemas, Maps und
|
|
Pipelines werden über ExplorerOM gelesen, weil `MSBTS_Assembly`, `MSBTS_Schema`,
|
|
`MSBTS_Map` und `MSBTS_Pipeline` nicht zu den verlässlich registrierten
|
|
BizTalk-WMI-Kernklassen gehören. Verbleibende optionale WMI-Fehler erscheinen mit
|
|
WQL, HRESULT und WMI-Status als `[WARNUNG]`; der Lauf wird fortgesetzt. Schlägt
|
|
bereits `MSBTS_GroupSetting` fehl, kann die Management-Datenbank über die beiden
|
|
`--management-*`-Optionen vorgegeben werden.
|
|
|
|
### ExplorerOM-Assembly fehlt
|
|
|
|
- prüfen, ob die BizTalk-Verwaltungskomponenten lokal installiert sind
|
|
- im Log die geprüften GAC-/Installationspfade kontrollieren
|
|
- keine DLL von einem anderen BizTalk-Server oder einer anderen CU-Version
|
|
in den Deployment-Ordner kopieren
|
|
|
|
### BTSTask findet die Management Database nicht
|
|
|
|
Management SQL Server und Datenbank explizit angeben:
|
|
|
|
```cmd
|
|
BizTalkSapEnvironmentInventory.exe ^
|
|
--environment ACC ^
|
|
--management-server SQL-ACC ^
|
|
--management-database BizTalkMgmtDb
|
|
```
|
|
|
|
Alternativ einen autorisierten Binding-Export bereitstellen:
|
|
|
|
```cmd
|
|
BizTalkSapEnvironmentInventory.exe ^
|
|
--environment ACC ^
|
|
--binding-file C:\Temp\ACC-GroupBindings.xml
|
|
```
|
|
|
|
### Keine SAP-Endpunkte
|
|
|
|
- prüfen, ob der Adapter als `WCF-SAP` oder als `WCF-Custom` mit `sapBinding` verwendet wird
|
|
- vollständigen Gruppenbindingexport statt nur einer Anwendung verwenden
|
|
- DOCX-Findings und Log prüfen
|
|
|
|
Weitere Architektur- und Sicherheitsdetails stehen in [Dokumentation.md](Dokumentation.md).
|