OCT Gateway DATEVCONNECT.Accounting
Funktionalität
Das Gateway überträgt die Daten folgender 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
Mit diesen Datenbeständen lassen sich folgende Auswertungen erstellen
Bilanz und GuV mit der Auflösung bis auf Einzelbuchungen
Kostenrechnungsauswertungen, die NUR auf den KOST1 und KOST2 Buchungsfeldern basieren (Bezeichnungen für KOST1 / KOST2 Felder sind teilweise verfügbar, je nach DATEV Konfiguration)
Offene Posten debitorisch / kreditorisch
Dokumentaufrufe über Beleglink
Die OCT Datenbank stellt eine Validierungsoberfläche für diese Daten bereit
Systemvoraussetzungen
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
Systemvoraussetzungen OCT
OCT Applikation 5.11 oder höher - je nach Einrichtungsvariante lokal oder in der Azure Cloud
OCT Datenbank
eine OCT Datenbank als Zieldatenbank muss on-prem oder in einer Cloudumgebung erreichbar sein
Technische Einrichtung
Variante A: Einrichtung des Gateways (OCT Dienst läuft on-premises)
Python Arbeitsumgebung für OCT einrichten
Python Installation 3.13 oder höher
ODBC Treiber 18 für MSSQL Server
Visual Studio Code mit Python Erweiterung (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
Den Deployment Ordner “_Build.latest” aus Bitbucket Repo herunterladen, umbennen in “DATEVconnect” und nach C:\ProgramData\Saxess Software\DATEVconnect kopieren (ist eine Konvention, keine Bedingung)
Datenbankobjekte durch Ausführen des Scripts “SETUP_STAGING_DATEVCONNECT.Accounting.sql” 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)
optional: testweise Direktausführung
Python Script main.py im Modus 1 ausführen, um die Steuerungstabelle des Gateways aufzubauen → “1_Steuerungstabelle aktualisieren.bat”
Steuerungstabelle konfigurieren → manuell oder mit Script Gatewaysteuerung.sql
Das Python Script in Modus 2 ausführen, um die Daten zu lesen → “2_Daten abrufen.bat”
Pipeline RUNME einrichten
globalen Parameter “DatenquellenID” an der Pipeline definieren → DATEV_SystemID eintragen
Step 1 einzeln ausführen (nur diesen allein !) → baut die Steuerungstabelle auf
Step 2 anpassen → Mandanten und Jahre definieren, welche übernommen werden sollen, dann per “Ausführung testen” testweise ausführen
Step 3 ausführen → ruft die Daten ab
Datenvalidierung in OCT über die Factory ZV, Productline Staging DATEVconnect.Accounting

Variante B: Einrichtung des Gateways (OCT Dienst läuft in der Azure Cloud)
Einen Storage Account vom Typ FileStorage als Datenquelle anlegen
Im Azure Storage Account eine Dateifreigabe “python” (Name ist Konvention) mit einem Ordner “scripts” (Name ist verpflichtend) anlegen
Den Deployment Ordner “_Build.latest” aus Bitbucket Repo herunterladen und den Inhalt in den Ordner “scripts” kopieren
Datenbankobjekte durch Ausführen des Scripts “SETUP_STAGING_DATEVCONNECT.Accounting.sql” einspielen
Die “config.json” Datei im Ordner config 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)
Pipeline RUNME einrichten
globalen Parameter “DatenquellenID” an der Pipeline definieren → DATEV_SystemID eintragen
Step 1 löschen und durch folgenden Containerstep ersetzen → baut die Steuerungstabelle auf
Step 2 anpassen → Mandanten und Jahre definieren, welche übernommen werden sollen, dann per “Ausführung testen” testweise ausführen
Step 3 löschen und durch folgenden Containerstep ersetzen → ruft die Daten ab
Datenvalidierung in OCT über die Factory ZV, Productline Staging DATEVconnect.Accounting

Fachliche Einrichtung
Der Datenbestand umfasst mehrere Abschlussarten, über das Feld accounting_reason der Tabelle staging.tDATEVCONNECT_AccountPostings muss eine passende Kombination gefiltert werden
Handelsbilanz = independent_from_accounting_reason + commercial_law
Steuerbilanz = independent_from_accounting_reason + tax_law
Andere Abschlussarten =independent_from_accounting_reason + reserved1 .. x etc.
Die Periode muss aus der Bezeichnung des Buchungsstapels ermittelt werden - nicht aus dem Buchungsdatum.
Offene Posten liegen jahresweise vollständig vor - es darf also nur der Bestand des letzten Geschäftsjahres für die Auswertung des Bestandes der aktuell offenen Posten herangezogen werden.
Expertenwissen
Konfiguration der Batchgröße
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
Extraktion der Daten aus mehreren DATEV Systemen
Es können mehrere Systeme extrahiert werden, hierfür werden mehrere config Dateien im config Ordner angelegt.
Dann kann dem main.py Script der Namen der config Datei als Parameter mitgeben werden.
python main.py --modus=2 --configfile=”configDATEV1.json”
python main.py --modus=2 --configfile=”configDATEV2.json”
Containerworker
Die Container können von einer anderen OCT Datenbank ausgeführt werden, als der Datenbank welches Ziele der Datenspeicherung des Containers ist. Die Zieldatenbank kann so irgendeine Datenbank (OCT beliebigier Version / Nicht OCT Datenbank) sein