Anpassungen (NAV)
Dieser Artikel beschreibt die Möglichkeiten die DSGVO-Toolbox um individuelle Anpassungen zu erweitern und somit spezielle Anforderungen in Kombination mit dem Einsatz von Branchenlösungen oder Kundenanpassungen. Dieser Artikel enthält Informationen, die primär für NAV-Entwickler relevant sind.
Die beschriebenen Anpassungen und Einstiegspunkte werden in den NAV Versionen 2016 und höher, in Form von Events/Subscribern bereitgestellt. Ab NAV Version 2015 und niedriger werden diese Erweiterungen als "Funktionsaufrufe" bereitgestellt.
Erstellen der geplanten Aktionen
Die "geplanten Aktionen" werden im Zuge der "Insert/Delete/Rename Trigger" und unter Umständen (je nach Konfiguration) auch bei der Verarbeitung des "Modify Triggers" erstellt bzw. geändert. Um hier individuelle Regeln bei der Erstellung der "geplanten Aktionen" zu ermöglichen, kann die Codeunit "Cust. Scheduled Action Mgt. (ID 5459720)" verwendet werden. Hier stehen verschiedene Funktionen (jeweils 3) für Insert, Modify, Delete und Rename Transaktionen zur Verfügung. Nachfolgend sind die bereitgestellten drei Funktionen für den "Insert-Trigger" aufgeführt:
Das Event für den Subscriber "HandleOnBeginInsertScheduledActionEntry" wird am Anfang der Standardfunktion, für das Einfügen der "geplanten Aktionen", ausgeführt. An dieser Stelle kann eingegriffen werden, bevor der Standard-Code ausgeführt wird. Durch den Parameter "Handled" kann definiert werden, ob der Standardcode danach ausgeführt werden soll oder ob der Standardaufruf mit einem EXIT beendet werden soll.
Das Event für den Subscriber "HandleOnBeforeInsertScheduledActionEntry" wird unmittelbar vor dem Insert in die Tabelle "Scheduled Action Entry" ausgeführt. Das Event für den Subscriber "HandleOnAfterInsertScheduledActionEntry" wird direkt nach dem Insert in die Tabelle "Scheduled Action Entry" ausgeführt.
Als Parameter kann für die bereitgestellten Funktionen der Datensatz (RecRef), die Tabellenvorgaben der Datenstruktur (Table Guideline), die geplante Aktion (Scheduled Action Entry) und je nach Funktion noch ein Basisdatum für die Berechnung des Aktionsdatums übergeben werden. An dieser Stelle können neben der Beeinflussung der "geplanten Aktion" auch die Auswirkungen auf die eigentlichen Daten, z.B. im Zusammenhang mit einer Intercompany-Logik, abgebildet werden.
Geplante Aktionen über die Aufgabenwarteschlange aktualisieren
Die geplanten Aktionen können auch mit Hilfe der Aufgabenwarteschlange aktualisiert werden. Den Eintrag und den Aufruf des Aufgabenwarteschlangenpostens kann man aus der Einrichtung der DSGVO Toolbox erreichen. Zusätzlich zu dieser Aktivierung muss in den entsprechenden Tabellenvorgaben die nachgelagerte Aktualisierung aktiviert werden (Register "Geplante Aktion").
Das Kennzeichen „Gepl. Aktionen manuell“ definiert, dass die geplanten Aktionen nicht mehr im „OnInsert“ des Datensatzes erstellt (bzw. u. U. aktualisiert) werden, sondern nachgelagert. Damit diese Option ausgewählt werden kann, muss ein Integer-Feld für die Aktualisierung (Aktualisierungsfortschritt) in der jeweiligen Tabelle vorhanden und ggf. angelegt werden. Zusätzlich muss ein Index für dieses Feld vorhanden sein.
Hinweis: Für das Anlegen des Feldes und es Indexes ist eine entsprechende Entwickler-Lizenz erforderlich! Ohne ein entsprechendes Integer-Feld und einen Index für dieses Feld, kann diese Option nicht verwendet werden.
Nachfolgend haben wir für die Tabelle Verkaufslieferungskopf das entsprechende Feld wie folgt angelegt:
In den Eigenschaften (Properties) des Feldes haben wir uns in diesem Beispiel für ein AutoIncrement entschieden, da in diesem Beispiel die Option „Aktion verschieben“ nicht verwendet wird.
Falls man die Option „Aktion verschieben“ verwenden möchte und dort in Abhängigkeit der Feldinhalte die Erstellung der geplanten Aktionen beeinflussen möchte, kann es sinnvoll sein für die Aktualisierung des Feldes eine eigene Business Logik zu implementieren, die dann bei jedem Update eines Datensatzes diesen Zähler aktualisiert.
Neben der Angabe des Feldes für die Identifizierung der zu erstellenden geplanten Aktionen (Feld kann hier zusätzlich noch ein Commit (Feld „Commit per“) in Abhängigkeit der Anzahl der verarbeiteten Datensätze verwendet werden.
Durch die Angabe eines Wertes im Feld „Commit nach Anzahl Datensätzen“ können Sie Tabellensperren für große Update-Aktionen vermeiden. Den entsprechenden Fortschritt bzw. den Wert des Zählers für den letzten verarbeiteten Datensatz kann man mit der Aktion „Aktualisierungsdetails“ einsehen.
Hier kann man bei nachträglicher Aktivierung auch den letzten aktualisierten Eintrag generieren lassen.
Löschen und Anonymisierung
Bei vielen Kunden sind Branchenlösungen im Einsatz. Diese erfordern, wie z.B. im Zusammenhang mit Intercompany-Prozessen, besondere Vorgehensweisen bei der Verarbeitung der geplanten Löschungen und Anonymisierungen.
Um diese Besonderheiten an zentraler Stelle implementieren zu können, wurde für das Löschen die Codeunit "Cust. Deletion Mgt." (ID 5459721) bereitgestellt. Folgende Funktionen stehen zur Verfügung:
Durch den Parameter "Handled" kann in diesem Subscriber definiert werden, ob nach dem Ausführen dieser Logik der Standardcode der DSGVO-Toolbox weiter durchlaufen werden soll oder ob die hier implementierte Logik eine komplett individuelle Logik berücksichtigen soll.
Die Besonderheiten für das Anonymisieren von Informationen in Feldern können in der Codeunit "Cust. Anonymization Mgt." (ID 5459722) implementiert werden. In dieser Codeunit stehen ähnliche Funktionen zur Verfügung:
In diesen Funktionen werden die Tabelle und das zu anonymisierende Feld, gemäß der Feldliste in der Datenstruktur, innerhalb einer Schleife übergeben, sodass hier die Erstellung des Feldinhaltes für die Anonymisierung beeinflusst werden kann.
Berechtigungen auf Objektebene
Viele Datenstrukturen enthalten Objekte, die in einer Kundenlizenz keine entsprechende Berechtigung zur Änderung und zum Löschen von Datensätzen zugewiesen hat. Einige Berechtigungen, vornehmlich auf gebuchte Belegtabellen, sind bereits in den Standardobjekten der DSGVO-Toolbox zugewiesen, sodass diese Aktionen für diese Tabellen möglich sind.
Um Kunden und Partnern eine zentrale Stelle für die Zuweisung der Berechtigungen zu ermöglichen, wurde eine neue Codeunit (ID 5459723 - Cust. Permission Assignmnt.) bereitgestellt. In dieser Codeunit stehen folgende Funktionen zur Verfügung:
In den Standardfunktionen für das Löschen und Ändern von Datensätzen wird geprüft, ob die Lizenz oder die Codeunit die entsprechenden Berechtigungen auf die jeweilige Tabelle beinhalten. Falls dieses Recht fehlen sollte, werden diese Funktionen aufgerufen und das Löschen und Ändern in dieses Objekt verlagert. Hier müssen dann die entsprechenden Berechtigungen zugewiesen oder auf separate Objekte weitergeleitet werden.
Hinweis: In dieser Codeunit können nur bedingt (Anzahl der Tabellen ist technisch limitiert) Berechtigungen zugewiesen werden. Das Zuweisen der Berechtigungen ist nur mit einer entsprechenden Entwicklerlizenz möglich.








