# 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).