OCT Gateway DATEVCONNECT.Accounting
Funktionalität
Das Gateway überträgt die Daten der API DATEVCONNECT.Accounting https://developer.datev.de/de/product-detail/accounting/1.7.3/overview in eine beliebige MS SQL Server Datenbank.
Systemvoraussetzungen
Zugang zu einer DATEVCONNECT.Accounting URL mit einem Benutzerkonto, welches über lesende Rechte auf allen Endpunkten verfügt. Die Einrichtung von DATEVconnect unterscheidet je nachdem ob,
der Kunde DATEV on-premises nutzt.
der Kunde DATEVasp, DATEV PARTNERasp oder DATEV SmartIT nutzt.
Der Ablauf der Einrichtung ist hier beschrieben: Zugang für eine DATEV Desktop API erstellen

Einrichtung des Gateways on-premises
Python Version 3.13 oder höher ist installiert (“für alle Benutzer”, um den automatischen Aufruf durch OCT zu ermöglichen) https://www.python.org/.
ODBC Treiber 18 in 64Bit für MSSQL Server ist installiert (https://learn.microsoft.com/de-de/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16).
Visual Studio Code ist mit den Erweiterungen Python / Python Debugger von Microsoft
installiert.
notwendige Python Bibliotheken installieren - das muss auch für alle Benutzer erfolgen, daher Ausführung über CMD (als Admin) oder Powerhell (als Admin)
python -m pip install pandas
python -m pip install requests
python -m pip install pyodbc
Die Bibliotheken müssen danach unter C:\Program Files\Python313\Lib\site-packages liegen - nicht im Userverzeichnis eines User oder des Admins!
Sollte die Bibliothek schon installiert worden sein, dann im admin Verzeichnis, python noch mal deinstallieren und folgende Verzeichnisse löschen:
C:\Program Files\PythonXX\
C:\Users\DeinBenutzer\AppData\Local\Programs\Python\
C:\Users\DeinBenutzer\AppData\Roaming\Python\
Zugangsdaten für eine MSQL Server Datenbank mit db_owner Rechten sind vorhanden - diese Datenbank ist typischerweise eine OCT Datenbank, muss es aber nicht sein.
Vom Rechner mit der Python Installation kann eine Verbindung über den SQL Server Port (meist 1433) zur MSSQL Server Datenbank aufgebaut werden.
Den aktuellsten Deployment Order aus Bitbucket Repo (https://bitbucket.org/SX_Admin/gateways_datev/src/main/DATEV_CONNECT_Desktop_APIs/DATEVCONNECT.Accounting/) in ein lokales Verzeichnis kopieren.
Den Ordner passend benennen, z.B. “DATEV Gateway Lokal2AzureDB”.
Datenbankobjekte durch Ausführen des Scripts “SETUP_DATEVconnect.Accounting_FOR_OCT” einspielen (falls die Datenbank eine OCT Datenbank ist) oder “SETUP_DATEVconnect.Accounting_WITHOUT_OCT” (für eine beliebige Datenbank). Die OCT Variante legt auch auch die Pipeline und Validierungsoberfläche an, der Prozess kann aber auch ohne OCT GUI gestartet werden.
Die “credential.config” Datei im DATEV Gateway Ordner bearbeiten (Credentials für DATEVCONNECT, Datenbankverbindung mit SQLUser, globales Startjahr für den Abruf der Wirtschaftsjahre)
Falls die DATEVConnect API per WinAuth genutzt wird (ist im lokalen Netzwerk meist der Fall) muss derzeit noch der Python Code bearbeitet werden, WinAuth über die config ist noch nicht unterstützt
im Browser testen, ob WinAuth funktioniert https://Server:58452/datev/api/accounting/v1/clients/ aufrufen - damit muss die Liste der Mandanten erscheinen
Im Browser erscheint die Antwort in XML statt in JSON, das liegt aber daran, dass der Browser sie mit seinem Header so anfordert
ython -m pip install
requests_ntlm
in helper_functions.py
from requests_ntlm import HttpNtlmAuth
im Header aufnehmenZeile 108 ersetzen
alt: response = requests.get(uri, headers=headers)
neu:
response = requests.get(uri, auth= HttpNtlmAuth("Domäne\user", "password"),verify=False)
Es werden bei der Ausführung Zertifkatswarnungen erscheinen wegen verify = false, ohne diesen Parameter geht es aber noch nicht.
Python Script main.py im Modus 1 ausführen, um die Steuerungstabelle des Gateways aufzubauen:
A: durch Doppelklick auf “1_Steuerungstabelle aktualisieren.bat”
B: in VSCode oder CMD per “python main.py --DATEV_SystemID=1 --Modus=1”
Steuerungstabellen konfigurieren (manuell oder mit Script Gatewaysteuerung.sql)
Das Python Script in Modus 2 ausführen, um die Daten zu lesen:
A: durch Doppelklick auf “2_Daten abrufen.bat”
B: in VSCode oder CMD per “python main.py --DATEV_SystemID=1 --Modus=2”
Datenvalidierung in OCT über die Factory ZV oder über XLSX Tabelle “Validierung DATEVConnect.Accounting.xlsx”, das Gateway stellt eine umfassende Validierungsoberfläche bereit

Pipeline einrichten, welche …
optional: die Steuerungstabelle bei jedem Durchlauf neu abruft (für neue Mandanten / Geschäftsjahre) via Powershell Aufruf
optional: über einen SQL Befehl die Steuerungstabelle bearbeitet (neue Mandanten / Geschäftsjahre aktiviert / alte löscht)
den Datenabruf ausführt - via Powershell Aufruf
Ausführung on-premises über PowershellDB

Einrichtung des Gateways als Cloudvariante via Container
Storage Account bereitstellen
Python Scripte im Filestorage ablegen
Sharename = python (zwingend, nach diesem Ordner sucht die run.py, welche im Container liegt)
Unterordner = scripts (zwingend, dort wird von run.py nach main.py gesucht)


Step konfigurieren
Ressourcengruppp = eine Ressourcengruppe in welcher die UMI die Rolle Contributor hat
Container Registry = URL (ohne http..) in welcher die UMI ArcPull Rechte hat
Image Name = Name des Containers mit Tag
Containergroupname = beliebiger String (Kleinschreibung ohne Leerzeichen)
Containername = beliebiger String (Kleinschreibung ohne Leerzeichen)
Anzahl Prozessoren: 0.25 bis 4
RAM GB: 1 bis 4
User managed Identity: Name der UMI mit obengenannten Rechten
Storage - die oben ausgewählte Datenquelle vom Typ Filestorage
Share Name / Volume Name = python (eine der beiden Eigenschaften ist überflüssig, oder ?)

Startbefehl = starte im python das script run.py (Starthelfer, welches im Ordner python liegt), dieses soll das Script main.py aufrufen und diesem die beiden Parameter übergeben
python,run.py,--ScriptName=main.py,--ScriptArguments=--DATEV_SystemID=1 --Modus=1
python,run.py,--ScriptName=main.py,--ScriptArguments=--DATEV_SystemID=1 --Modus=2
python,run.py,--ScriptName=main.py,--ScriptArguments=--DATEV_SystemID=1 --Modus=3