
DEX_ROW_TS als SourceControl mit MS Dynamics GP verwenden
Wenn wir RapidiOnline so einrichten, dass Daten von einem ERP-System in ein anderes System übertragen werden, versuchen wir immer, einen Weg zu finden, nur die geänderten Datensätze eines bestimmten Datentyps zu lesen. Einige Systeme haben in jeder Tabelle eine timestamp-Spalte – das ist zum Beispiel bei MS Dynamics NAV der Fall. Der MSSQL-Spaltentyp timestamp ist eine Zahlenspalte, die vom MSSQL-Server bei jeder Änderung an einem Datensatz dieser Tabelle automatisch erhöht wird, was das Erkennen von Änderungen sehr komfortabel macht.
Bei anderen Systemen wie MS Dynamics GP haben wir dieses Glück nicht. Welche Möglichkeiten gibt es also hier?
Wir stellen vor: die Spalte DEX_ROW_TS
In MS Dynamics GP ab Version 2010 gibt es in einigen Tabellen eine Spalte namens DEX_ROW_TS. Das Feld ist vom Typ DateTime und wird von Skripten auf der SQL-Server-Seite gepflegt. Es wird bei jedem Erstellen oder Ändern eines Datensatzes mit dem aktuellen UTC-Datum und -Zeitwert aktualisiert und kann in RapidiOnline als SourceControl verwendet werden (ein SourceControl-Feld nutzt RapidiOnline, um Änderungen an einer Tabelle zu erkennen und nur diese Änderungen in ein anderes System zu übertragen).
Das klingt nach der perfekten Antwort auf unsere Anforderungen: Der Server pflegt das Feld automatisch und wir können es einfach nutzen, um geänderte und neue Datensätze für die Übertragung zu erkennen.
Die Spalte DEX_ROW_TS in RapidiOnline verwenden

Um die Spalte DEX_ROW_TS als SourceControl in RapidiOnline zu verwenden, füllen Sie einfach das Source Control Field aus – wie im Bild oben. Während der Transfer läuft, merkt er sich automatisch den höchsten erfolgreich übertragenen Wert und setzt Filter, um nur neue oder geänderte Datensätze aus dieser Tabelle zu lesen.
Die Spalte DEX_ROW_TS mit Bedacht einsetzen
Es gibt allerdings eine Reihe von Einschränkungen, auf die auch dieser Blogbeitrag hinweist: http://www.timwappat.info/post/2014/12/04/Beware-DEX_ROW_TS-for-data-synchronisation
- Die Spalte DEX_ROW_TS ist in GP nur in etwa 40 Tabellen implementiert und lässt sich daher nicht allgemein für alle Tabellen nutzen.
- Bei einigen Tabellen wie Customers und Items wird die Spalte DEX_ROW_TS auch dann aktualisiert, wenn verknüpfte Informationen in anderen Tabellen (etwa Customer Master Address File und Item Quantity Master) geändert werden. So werden mehr Daten übertragen als eigentlich nötig.
- Beachten Sie außerdem, dass die mit GP 2010 gelieferten Demodaten DEX_ROW_TS-Werte mit dem Jahr 2017 enthalten – beim Erstellen der Demodaten muss das Serverdatum vorgestellt worden sein. Das ist kein großes Problem, da es sich nur um Demodaten handelt; wenn Sie die Funktionalität aber mit den Demodaten testen möchten, müssen Sie die Spalte DEX_ROW_TS auf ein Datum in der Vergangenheit setzen, damit neu geänderte Datensätze die höchsten Werte in DEX_ROW_TS haben.
- Und nicht zuletzt können andere eigene Skripte oder Importe so gebaut sein, dass die Spalte DEX_ROW_TS nicht aktualisiert wird. Andere Programmierer und Administratoren, die an Ihrem GP-System arbeiten, müssen wissen, dass DEX_ROW_TS genutzt wird und bei allen Änderungen korrekt aktualisiert werden muss.
Das sind einige unerwünschte Nebenwirkungen: Der Einsatz von DEX_ROW_TS ist also kein Selbstläufer wie die timestamp-Spalte in NAV – Sie sollten jeden Anwendungsfall genau prüfen, bevor Sie diese Spalte als SourceControl verwenden.
Alternative Wege, Änderungen zu erkennen
Als Alternative zu SourceControl kann RapidiOnline seine Mirror Technology nutzen, um Änderungen in MS Dynamics GP zu erkennen. Die Mirror Technology hält automatisch eine Kopie der Daten, die Sie aus jeder GP-Tabelle lesen, und vergleicht damit, um nur die geänderten oder neuen Datensätze an das Zielsystem zu liefern. Die Technologie ist sehr schnell und speichert und vergleicht nur die Spalten, die Sie tatsächlich lesen (nicht alle Spalten der Tabelle), was die an das Zielsystem gesendeten Änderungen weiter reduziert.
Um DEX_ROW_TS als SourceControl zu nutzen, muss Ihr RapidiConnector auf Version 3.2.91i oder höher sein. Kontaktieren Sie den Support, wenn Sie ein Upgrade benötigen.
Wie immer sind Kommentare herzlich willkommen!
Michael
