OCT Gateway DATEVCONNECT.Accounting
Funktionalität
Das Gateway überträgt die Daten verschiedener DATEV Datenbestände in die staging Schicht einer OCT Datenbank
der über API DATEVCONNECT.Accounting https://developer.datev.de/de/product-detail/accounting/1.7.3/overview abrufbaren Daten
der über KREXPORT abrufbaren Daten
der aus KOST Datenbanken abrufbaren Daten
Systemvoraussetzungen OCT
Python Arbeitsumgebung für OCT
Python Installation 3.13 oder höher
ODBC Treiber 18 für MSSQL Server
Visual Studio Code (optional, für Testläufe)
Python und Visual Studio Code sollten / müssen in der Variante Systeminstaller / für alle Benutzer installiert sein, sonst ist eine Ausführung als anderer Benutzer (und meist ist der OCTService ein solcher) nicht möglich
OCT Datenbank
eine OCT Datenbank als Zieldatenbank muss on-prem oder in einer Cloudumgebung erreichbar sein
OCT Applikation
eine OCT Applikation kann lokal installiert sein, kann aber auch in der Cloud Variante genutzt werden, falls die OCT Datenbank in der Cloud liegt
Systemvoraussetzungen DATEV
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

Konfiguration der Gatewayvariante DATEVConnect
config.json bearbeiten
api_financialaccount_batchsize - default: 10.000.000 für bis zu 100.000 Buchungen pro Mandant und Jahr
dieser Parameter steuert die Blockgröße beim KontoVon / KontoBis Abruf der Sachkontobuchungen - nur ändern falls Abbruch mit default
da alle Konten 8 stellig sind, somit von 1 bis 99.999.999 abgefragt werden muss, ist die Batchsize recht groß
die Anzahl der Request sollte klein sein (insbesondere bei Cloudrouten mit hoher Latenz), die Datenmenge pro Batch darf aber nicht zu groß werden
Anpassung auf 1.000.000 für bis zu 2 Mio Buchungen pro Jahr
Anpassung auf 100.000 für mehr als 2 Mio Buchungen pro Jahr
api_debcredaccount_batchsize - default: 100.000.000 für bis zu 100.000 Buchungen pro Mandant und Jahr
dieser Parameter steuert die Blockgröße beim KontoVon / KontoBis Abruf der Personenkontobuchungen - nur ändern falls Abbruch mit default
hier muss von 9 stellig abgefragt werden, von 100.000.000 bis 999.999.999
Anpassung auf 10.000.000 für bis zu 2 Mio Buchungen pro Jahr
Anpassung auf 1.000.000 für mehr als 2 Mio Buchungen pro Jahr
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 in der Variante “System Installer”
mit den Erweiterungen Python / Python Debugger von Microsoft
installiert.
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 Deployment Ordner “_Build.latest” aus Bitbucket Repo nach C:\ProgramData\Saxess Software\DATEVconnect kopieren (ist eine Konvention, keine Bedingung)
Datenbankobjekte durch Ausführen des Scripts “SETUP_DATEV_REWE connect” einspielen
Die “config.json” Datei Ordner config des DATEV Gateway Ordner bearbeiten (Credentials für DATEVCONNECT, Datenbankverbindung mit SQLUser, globales Startjahr für den Abruf der Wirtschaftsjahre)
DATEV_SystemID = beliebige ID (da man mehrere DATEV Systeme an eine OCT Datenbank anbinden kann)
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 --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 --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 RUNME einrichten, welche …
Ausführung on-premises über Powershell Step

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=--modus=1
python,run.py,--ScriptName=main.py,--ScriptArguments=--modus=2
Expertenwissen
man kann dem main.py Script auch den Namen der config Datei als optionalen Parameter mitgeben, so kann man im Ordner config mehrere config Dateien ablegen, falls man mehrere DATEV Systeme angebunden hat
python main.py --modus=2 --configfile=”configDATEV1.json”
python main.py --modus=2 --configfile=”configDATEV2.json”