Skip to main content
Skip table of contents

Stammdatenänderung (Admin)

Voraussetzungen

  • Der Prozess kann nur dann ausgeführt werden, wenn das Modul EVI-Privatkunden eingespielt und lizenziert wurde. Andernfalls sind die jeweiligen Schalter deaktiviert.

  • Sofern nicht automatisch geschehen, muss der Prozess "Stammdatenänderung" (C12SLPMasterDataChange) veröffentlicht werden. Der Prozess sollte mit einem technischen Benutzer ausgeführt werden, der alle Datensätze im Umkreis der Person lesen darf - falls im Personenumfeld Rechte aktiviert sind, kann so sichergestellt werden, dass die Daten gelesen werden können.

  • Die Geschäftspartnerdaten sowie die abhängigen Kommunikations- und Adressdaten werden zwischen dem Drittsystem mit EVI abgeglichen.

  • Das führende Drittsystem lässt Stammdatenänderung durch EVI zu.

  • Im System existiert eine globale Variable (C12MasterDataChange_IsActive), über welche sich der Stammdatenänderungsprozess aktivieren bzw. deaktivieren lässt.
    Die globale Variable ist an das EVI-Basis-Modul gebunden.

  • Es ist empfehlenswert, diesen Prozess per globaler Variable temporär zu deaktivieren, wenn ein Massendatenimport erfolgt, welcher diesen Prozess auslöst.

Update 

  • Die Funktionalität ist Bestandteil des Privatkunden-Moduls. Sie steht bei Vorhandensein und gültiger Lizenzierung des Moduls automatisch zur Verfügung.

  • Für den Fall, dass die Funktionalität nicht genutzt werden soll, ist die globale Variable C12MasterDataChange_IsActive zu deaktivieren.

  • Sofern nicht automatisch geschehen, muss der Prozess "Stammdatenänderung" (C12SLPMasterDataChange) veröffentlicht werden. Der Prozess sollte mit einem technischen Benutzer ausgeführt werden, der alle Datensätze im Umkreis der Person lesen darf - falls im Personenumfeld die Rechte aktiviert hat, kann so sichergestellt werden, dass die Daten gelesen werden können.

Technische Dokumentation

Komponentenübersicht

Module

  • C12EV_BASIS

    • C12EVI_SLP

Prozesse

  • C12SLPMasterDataChange

Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.

Transaktionstabellen + Events

  • Event MASTERDATA_CHANGE_CUSTOMER

    • Eine Speicherung der zu ändernden Daten erzeugt ein Event zur Übertragung an Drittsysteme

    • Das Event enthält stets den Verweis auf den Geschäftspartner, dessen Daten geändert worden sind

  • Event MASTERDATA_NEW_CUSTOMER

    • Eine Speicherung der zu ändernden Daten erzeugt ein Event zur Übertragung an Drittsysteme

    • Das Event enthält stets den Verweis auf den Geschäftspartner, dessen Daten geändert worden sind

  • Es existiert keine dedizierte Transaktionstabelle

Skriptbibliothek

  • SC12RoleModelUtils

    • Enthält diverse Methoden zur Ermittlung delegierter Felder im Personen-Rollen-Modell. Für die Beschreibung der übersteuerbaren Methoden siehe Abschnitt "Ausschlusslisten".

  • SC12SLPUtils

    • Die JSON-Struktur der erzeugten Events MASTERDATA_NEW_CUSTOMER und MASTERDATA_CHANGE_CUSTOMER kann über entsprechende Zugriffsmethoden der Bibliothek SC12SLPUtils ausgelesen werden.

Globale Variablen

  • C12MasterDataChange_IsActive

Administrationsmöglichkeiten

Die Aktivierung/Deaktivierung des Stammdatenänderungsprozesses kann über die Globale Variable C12MasterDataChange_IsActive erreicht werden.

  • True: Der Stammdatenänderungsprozess ist aktiv (Default)

    • Änderung an Stammdaten sind direkt in der Detailmaske der Entitäten Geschäftspartner, Kommunikation und Adressen möglich, die Felder sind schreibbar.

    • Ausgenommen hiervon sind Kennzeichen zur Identifikation eines Datensatzes in einem Drittsystem.

      • Geschäftspartner

        • CustomerNo2.Customer

        • C12ERPActive.Customer

        • C12SyncId.Customer

      • Adressen

        • C12ISUADDRNR.Address

        • NameKey.Address wenn dieser den Wert 'ISU' (Adresse aus ERP-System) enthält

      • Kommunikation

        • NameKey.Telecom, wenn dieser den Wert 'ISU' (Adresse aus ERP-System) enthält

    • Die Events MASTERDATA_CHANGE_CUSTOMER (Änderungen) bzw. MASTERDATA_NEW_CUSTOMER (Neuanlage Geschäftspartner) werden unter Berücksichtigung etwaiger Ausschlusslisten immer geschrieben.

  • False: Der Stammdatenänderungsprozess ist inaktiv

    • Schreibschutz auf den Entitäten Geschäftspartner, Adressen, Kommunikation

    • Die Events MASTERDATA_CHANGE_CUSTOMER bzw. MASTERDATA_NEW_CUSTOMER werden nie geschrieben

Neben der bereits aufgeführten Möglichkeit zur generellen Deaktivierung des Stammdatenänderungsprozesses können Felder, bei deren Änderung keine Events geschrieben werden sollen, in Ausschlusslisten aufgenommen werden.

Übersteuerungsmöglichkeiten

Grundsätzlich können die mit dem Modul bereitgestellten Komponenten wie BPM-Prozesse und Skriptbibliotheksmethoden übersteuert werden, um diese an individuelle Anforderungen und Bedürfnisse anzupassen.
Nach dem Einspielen eines Moduls sollte geprüft werden, ob bereits Skriptmethoden im Projekt übersteuert wurden und ob die Methodenänderung aus dem Standard im Projekt übernommen werden soll.

Ausschlusslisten

Felder, die für die Schnittstelle irrelevant sind und für die kein Event MASTERDATA_NEW_CUSTOMER bzw. MASTERDATA_CHANGE_CUSTOMER geschrieben werden soll, können hier aufgenommen werden. Die Konfiguration erfolgt durch Übersteuerung und Auflistung der entsprechenden technischen Feldnamen als Liste in der jeweils vorgesehenen Methode.

Skriptklasse

Entität

Methodenname

Funktionalität

SC12RoleModelUtils




Adresse

getAddressChangeExclusionFields

Liefert Felder in der Adresse bei deren Änderung KEINE Change-Events erstellt werden sollen.

Ansprechpartner

getContactPersonExclusionFields

Liefert Felder im Ansprechpartner bei deren Änderung KEINE Change-Events erstellt werden sollen.

Geschäftspartner

getCustomerChangeExclusionFields

Liefert Felder im Geschäftspartner bei deren Änderung KEINE Change-Events erstellt werden sollen.

Im Standard sind hier folgende Felder enthalten

  • PeMatchCode.Customer

  • PeName1.Customer

  • PeName2.Customer

  • PeName3.Customer

Mitarbeiter

getEmployeeChangeExclusionFields

Liefert Felder im Mitarbeiter bei deren Änderung KEINE Change-Events erstellt werden sollen.

Person

getPersonChangeExclusionFields

Liefert Felder in der Person bei deren Änderung KEINE Change-Events erstellt werden sollen.

Kommunikation

getTelecomChangeExclusionFields

Liefert Felder in der Telekommunikation bei deren Änderung KEINE Change-Events erstellt werden sollen.

Interner Ablauf

Der Prozess C12SLPMasterDataChange prüft an allen relevanten Stellen mit den entsprechenden Methoden aus der Skriptklasse SC12RoleModelUtils auf die Neuanlage und Änderung von Daten, bestimmt betroffene Geschäftspartner und erzeugt das entsprechende Event.

  • Änderung des Hauptansprechpartners

  • Änderung des Geschäftspartners

  • Änderung an der basierenden Person

  • Änderung der Adresse

  • Änderung der Kommunikation

  • Änderung an einem Mitarbeiter

  • Neuanlage eines Geschäftspartners

  • Neuanlage einer Kommunikation

  • Neuanlage eines Mitarbeiters

  • Neuanlage einer Adresse

Jede Änderung an einem Geschäftspartner und dessen Kommunikations- und Adressdaten wird durch den Prozess "Stammdatenänderung" geprüft. Handelt es sich bei der Änderung um eine relevante Änderung, so wird ein Event geschrieben.

Folgende Fälle werden hierbei berücksichtigt:

  • Neuanlage eines Geschäftspartners

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

  • Änderung der Adresse 

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • die Adresse hängt an Geschäftspartnern (rCuAd) 

      • die Adresse ist Postadresse gekennzeichnet

    • die Adresse ist Anzeigeadresse beim Geschäftspartner gekennzeichnet
      → es wird ein Event je gefundener Geschäftspartnerrolle geschrieben 

  • Änderung des Geschäftspartners

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • bei delegierten Feldern in die Person wird die Logik der Person (PeCu) geprüft

    • bei delegierten Feldern in die Telecom

  • Änderung des Ansprechpartner

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • es handelt sich um einen Haupt-Ansprechpartner (isAutoCoPe = true)

  • Änderung der Person

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • wenn Geschäftspartnerrollen existieren (PeCu)

      → es wird ein Event je Geschäftspartnerrolle geschrieben

  • Änderung des Mitarbeiters

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • wenn die basierende Person Geschäftspartnerrollen besitzt (PeEm → PeCu)

  • Änderung der Kommunikation

    • gemäß übersteuerbarer Feldliste (Ausschlussliste)

    • die Kommunikation hängt an einem Geschäftspartner (customerPk <> NULL) 

    • die Kommunikation hängt an einem Ansprechpartner (contactPersonPk <> NULL) und ist es der Haupt-Ansprechpartner (IsAutoCoPe = true)

    • die Kommunikation hängt an einer Person (PersonPk <> NULL) besitzt die Person eine Geschäftspartner-Rolle (PeCu)

Die beiden Event-Typen werden genutzt, um in der Tabelle C12EVENT die Änderung eines Geschäftspartners von der Neuanlage zu unterscheiden:

  • MASTERDATA_NEW_CUSTOMER

    • Bei der Neuanlage eines Geschäftspartners wird immer das Event MASTERDATA_NEW_CUSTOMER geschrieben. Das Event verweist im DataPk immer über den Geschäftspartner-Pk auf den zugehörigen Geschäftspartner, zu dem die Änderungen erfolgt sind. Im Memofeld werden die geänderten Werte in Form einer JSon-Struktur hinterlegt. Diese enthält die Änderungen in Form einer Map

  • MASTERDATA_CHANGE_CUSTOMER: 

    • Bei Änderungen an beteiligten Entitäten, die Auswirkungen auf den Geschäftspartner haben,  wird immer das Event MASTERDATA_CHANGE_CUSTOMER geschrieben

  • Beispiel:

    • Die Adresse eines Geschäftspartners wurde geändert

    • Das Event MASTERDATA_CHANGE_CUSTOMER verweist per DataPk auf den Geschäftspartner, zu dem die Adressänderung erfolgt ist

    • Die JSon-Struktur in ChangedData enthält die alten und die geänderten Adressinformationen als Adress-Container

JSon-Struktur in ChangedData.C12EVENT

Die JSon-Struktur in C12EVENT kann von Prozessen genutzt werden, um die eigentlichen Änderungen am eigentlichen Event zu hinterlegen, so dass eine Schnittstelle, die auf dieses Event reagiert, erkennen kann, was sich geändert hat.

Die allgemeine Struktur sieht wie folgt aus:

  • ENTITY_NAME: Name der geänderten Entität

  • ENTITY_PK: Pk der geänderten Datensätze

  • CHANGED_OBJECT_NEW: Neue Werte der geänderten Felder

  • CHANGED_OBJECT_OLD: Alte Werte der geänderten Felder

  • CHANGED_OBJECT_TYPE: Der Typ des enthaltenden Objekts, aktuell ist es immer eine java.util.Map

CHANGED_TYPE: DataNew, DataChange, DataChangeUnknownOld

Der CHANGED_TYPE bezieht sich auf die Daten in CHANGED_OBJECT_NEW und CHANGED_OBJECT_OLD, er kann, muss aber nicht ausgewertet werden.
Er dient auch dazu, um die Ursache der Änderung nachvollziehen zu können.

Im Falle eines neu erstellten Datensatzes:

  • ENTITY_NAME: Name der neu erstellten Entität

  • ENTITY_PK: Pk des neuen Datensatzes

  • CHANGED_OBJECT_NEW: Eine Map mit den Attributnamen der Felder als Schlüssel und den Feldwerten als Wert

  • CHANGED_OBJECT_OLD: Eine leere Map

  • CHANGED_OBJECT_TYPE: java.util.Map

  • CHANGED_OBJECT_OLD: Eine leere Map.

  • CHANGED_TYPE: DataNew

Beispiel einer Neuanlage

JSON
{
//Die Feldliste ist für das Beispiel stark gekürzt; es werden alle Felder geschrieben
    "ENTITY_PK": "fvvvvvveljvtv1faconfe5Cu",
    "CHANGED_OBJECT_NEW": {
        "Pk.Customer": "fvvvvvveljvtv1faconfe5Cu",
        "MatchCode.Customer": "PERFTESTCustomer",
        "Freeboolean7.Customer": false,
        "Freetext39.Customer": "",
        "Freenumber8.Customer": null,
        "ManualSalutation.Customer": false,
        "DefaultCoPeKey.Customer": {
            "Description": "PERFTESTCustomer",
            "Pk": "fvvvvvveljvtv1faconfe5Cu#fvvvvvurijecmCoPe",
            "Key": "PERFTESTCustomer"
        },
        "UpdateDate.Customer": "2021-07-12T07:08:30+00:00",
        "StateAddress.Customer": {
            "Description": "",
            "Pk": "",
            "Key": ""
        },
        "TelecomNameKey.Customer": {
            "Description": "Büro",
            "Pk": "TELECOMNAME_OFFICE",
            "Key": "BÜRO"
        },
        "Website.Customer": "www.PerfTestCustomer.de",
        "Freetext14.Customer": "",
        ...,
        "CustomerValue.Customer": null
    },
    "CHANGED_TYPE": "DataNew",
    "CHANGED_OBJECT_TYPE": "java.util.Map",
    "CHANGED_OBJECT_OLD": {},
    "ENTITY_NAME": "Customer"
}

Im Falle einer Datensatzänderung (z.B. Änderung eines Feldes im Geschäftspartner)

  • ENTITY_NAME: Name der geänderten Entität

  • ENTITY_PK: Pk des geänderten Datensatzes

  • CHANGED_OBJECT_NEW: Eine Map mit den geänderten Feldern, die Attributnamen der Felder als Schlüssel und den Feldwerten als Wert

  • CHANGED_OBJECT_OLD: eine leere Map

  • CHANGED_OBJECT_TYPE: java.util.Map

  • CHANGED_OBJECT_OLD eine leere Map

  • CHANGED_TYPE: DataChange

Beispiel einer Dazensatzänderung

JSON
{
    "ENTITY_PK": "pd2dcn1fbrutj6eCu",
    "CHANGED_OBJECT_NEW": {
        "Name2.Customer": "Software AG"
    },
    "CHANGED_Type": "DataChange",
    "CHANGED_OBJECT_TYPE": "java.util.Map",
    "CHANGED_OBJECT_OLD": {
        "Name2.Customer": "Software GmbH"
    },
    "ENTITY_NAME": "Customer"
}

Im Falle einer Datensatzänderung, bei der es nicht möglich war, die ursprünglichen Wert zu dokumentieren (zum Beispiel die Änderung der Anzeigeadresse)

  • ENTITY_NAME: Name der geänderten Entität

  • ENTITY_PK: Pk des geänderten Datensatzes

  • CHANGED_OBJECT_NEW: Eine Map mit den geänderten Feldern, die Attributnamen der Felder als Schlüssel und den Feldwerten als Wert

  • CHANGED_OBJECT_OLD: eine leere Map

  • CHANGED_OBJECT_TYPE: java.util.Map

  • CHANGED_OBJECT_OLD eine leere Map

  • CHANGED_TYPE: DataChangeUnknownOld

Beispiel einer Datensatzänderung

JSON
{
    "ENTITY_PK": "fvvvvvu8n2ktr1f7lmdgo9Cu#fvvvvvuc63fjkrCuAd",
    "CHANGED_OBJECT_NEW": {
        "City.Address": "Pohlheim",
        "CountryKey.Address": {
            "Description": "Deutschland, +49",
            "Pk": "D-S_LND",
            "Key": "DE"
        },
        "ComposedAddress.Address": "\r\n35415 Pohlheim ",
        "StreetNumberAddition.Address": null,
        "Pk.Address": "fvvvvvu8n2ktr1f7lmdgo9Cu#fvvvvvuc63fjkrCuAd",
        "Street.Address": {
            "Description": "",
            "Pk": "",
            "Key": ""
        },
        "ZIPKey.Address": {
            "Description": "",
            "Pk": "35415",
            "Key": "35415"
        },
        "NameKey.Address": {
            "Description": "Büroadresse",
            "Pk": "ADDRNAME_OFFICE",
            "Key": "BÜRO"
        },
        "State.Address": {
            "Description": "",
            "Pk": "",
            "Key": ""
        },
        "StreetNumber.Address": null,
        "StateDesc.Address": null
    },
    "CHANGED_Type": "DataChangeUnknownOld",
    "CHANGED_OBJECT_TYPE": "java.util.Map",
    "CHANGED_OBJECT_OLD": { },
    "ENTITY_NAME": "Address"
}

Änderung der Post- (und nicht Anzeige-)adresse

JSON
{
"ENTITY_PK": "fvvvvvu4bqpue1gdko4hs9Cu#fvvvvvu0dce0nPeAd",
"CHANGED_OBJECT_NEW": {
"ComposedAddress.Address": "Am Bildstock 13\r\n77746 Schutterwald - Rödgen",
"DefaultCuAd.Address": false,
"LetterCuAd.Address": true
},
"CHANGED_TYPE": "DataChange",
"CHANGED_OBJECT_TYPE": "java.util.Map",
"CHANGED_OBJECT_OLD": {
"ComposedAddress.Address": "Am Bildstock 13\r\n77746 Schutterwald - Rülfenrod",
"DefaultCuAd.Address": false,
"LetterCuAd.Address": true
},
"ENTITY_NAME": "Address"
}

Änderung des Postadresse-Flags

JSON
{
"ENTITY_PK": "fvvvvvu4bqpue1gdko4hs9Cu#fvvvvvu45bm2rrCuAd",
"CHANGED_OBJECT_NEW": {
"DefaultCuAd.Address": true,
"LetterCuAd.Address": true
},
"CHANGED_TYPE": "DataChange",
"CHANGED_OBJECT_TYPE": "java.util.Map",
"CHANGED_OBJECT_OLD": {
"DefaultCuAd.Address": true,
"LetterCuAd.Address": false
},
"ENTITY_NAME": "Address"
}


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.