SalesForceBulkIU

Gruppe

Integration Units

Funktion

Ist für das Einfügen (oder auch Löschen) von Massendaten in ein Salesforce-System bestimmt.


Diese Integration Unit ist veraltet (deprecated).

Wichtiger Hinweis: Um diese Integration Unit benutzen zu können, benötigen Sie das kostenpflichtige Zusatzmodul "Salesforce". Bei Interesse wenden Sie sich bitte an unsere Mitarbeiter im Support bzw. im Vertrieb. Die Installation/Konfiguration (salesforce.jar in ./extlib hinterlegen und Eintrag in der ./etc/database.xml erzeugen) wird in diesem Zusammenhang erledigt und wird in der Beschreibung dieser Integration Unit als gegeben vorausgesetzt. Das Zusatzmodul verwendet einen JDBC-Treiber (der Firma Progress), der eine direkte Anbindung von Lobster Integration an Salesforce ermöglicht (also nicht über die SOAP-API oder REST-API von Salesforce). Diese JDBC-API bietet zudem eine Bulk-API, die von dieser Integration Unit hier verwendet wird.

Beschreibung


Die SalesForceBulkIU ist für das Einfügen (oder auch Löschen) von Massendaten in ein Salesforce-System bestimmt. Wichtiger Hinweis: Bei Verwendung dieser Integration Unit muss die SQL-Ausführung in Phase 4 abgeschaltet werden. Das wird direkt durch die Integration Unit übernommen.

Zudem bietet die Integration Unit die Möglichkeit, mit dem Salesforce-Konzept der externen IDs zu arbeiten (EXT_ID). Ein Beispiel, wie dieses Konzept in Lobster Integration zu verwenden ist, findet sich weiter unten. Details zu diesem und anderen Salesforce-Konzepten (wie z. B. verknüpfte Tabellen), finden Sie direkt in der Salesforce-Dokumentation (und der des Progress-JDBC-Treibers).


Die Integration Unit beachtet folgende SQL-relevante Knoten-Eigenschaften der Zielstruktur

  • DB Alias. Hinweis: Ausgewertet werden nur Fixwerte und System-Konstanten, aber keine Variablen.

  • SQL Tabelle/Procedure.

  • Tabelle leeren.

  • SQL Modus. Möglich sind hier neben insert auch only update und only delete, falls mindestens ein Feld die Eigenschaft SQL Schlüssel gesetzt hat. Zudem auch try update before insert, falls mindestens ein Feld in der Eigenschaft SQL Spaltenname mit dem Schlüsselwort EXT_ID versehen ist (siehe Beispiel unten).

  • Hinweis: Die Eigenschaften Opt. Pre-SQL Ausführung und Transaktionssteuerung werden nicht beachtet.


Die Integration Unit beachtet folgende SQL-relevante Feld-Eigenschaften der Zielstruktur

  • SQL Spaltenname.

  • Hinweis: Die Eigenschaft SQL AutoGenKey wird nicht beachtet. Die Eigenschaft SQL Schlüssel wird lediglich im SQL Modus insert nicht beachtet oder falls mindestens ein Feld in der Eigenschaft SQL Spaltenname mit dem Schlüsselwort EXT_ID versehen ist (siehe Beispiel unten).

Parameterbeschreibung


Parameter

Beschreibung

Debug

Falls true, dann werden Debug-Informationen geloggt.

Anwendungsbeispiel


Als Beispiel wollen wir den Fall aufzeigen, dass wir von einem SAP-System Daten bekommen und diese in ein Salesforce-System einfügen. Dabei sind uns die eindeutigen IDs der Datensätze aus dem SAP-System bekannt, wir kennen aber nicht die IDs aus dem Salesforce-System. Salesforce bietet hier die Möglichkeit, externe Schlüssel-Spalten (externe IDs) zu definieren, die wir mit den Schlüsseln aus dem Fremdsystem belegen (SAP). Salesforce erlaubt über diesen Mechanismus, dass man auch ohne die Kenntnis der internen Salesforce-IDs eindeutig Datensätze einfügen kann.

Ausgangslage

Wir haben in Salesforce die Tabellen ACCOUNT und CONTACT. Beide Tabellen haben das Feld ACCOUNTID, worüber sie verknüpft sind. Die Tabelle ACCOUNT enthält die Master-Datensätze und die Tabelle CONTACT die Child-Datensätze.

In beiden Salesforce-Tabellen haben wir bereits Datensätze, kennen aber jeweils die ACCOUNTIDs nicht.

Nun bekommen wir in Lobster Integration Kontakt-Daten aus einem SAP-System und wollen diese in das Salesforce-System einfügen. Dazu verwenden wir den bereits angesprochenen Mechanismus der externen IDs. Zuerst müssen wir Vorbereitungsarbeiten in Salesforce durchführen.

Vorbereitungen in Salesforce

Wir müssen in beiden Salesforce-Tabellen ACCOUNT und CONTACT ein weiteres Feld einfügen, das uns als externe ID dient. Wir nennen es SAP_ACCOUNT (1) und SAP_CONTACT (2). Wie das im Detail in Salesforce gemacht wird, wird hier nicht beschrieben, das finden Sie in Ihrer Salesforce-Dokumentation. Im Ergebnis benötigen wir aber folgendes.


images/download/attachments/169636945/SAP_ACCOUNT-version-1-modificationdate-1712817226704-api-v2.png


images/download/attachments/169636945/SAP_CONTACT-version-1-modificationdate-1712817226705-api-v2.png

Vorbereitungen in Lobster Integration

In Lobster Integration legen wir nun einen Datenbank-Knoten für die Salesforce-Tabelle CONTACT an (wie das im Detail gemacht wird, setzen wir hier voraus). Als Ergebnis werden Sie etwas in der folgenden Art erhalten.


images/download/attachments/169636945/279-version-2-modificationdate-1742974725947-api-v2.png


Interessant sind für uns die Felder ACCOUNTID (3) und SAP_CONTACT__C (4). Wobei hier das Feld SAP_CONTACT__C der API-Name des von uns eingefügten Feldes SAP_CONTACT (2) ist.

Die Zielknoten-Eigenschaft "SQL Modus" muss nun noch auf (5) "try update before insert" eingestellt werden, das entspricht einem UPSERT.

Einstellungen für die externe ID

Jetzt müssen wir nur noch für den JDBC-Treiber Markierungen für den Mechanismus der externen IDs einfügen.


images/download/attachments/169636945/280-version-2-modificationdate-1742974738564-api-v2.png


Zuerst markieren wir das Feld ACCOUNTID (6) und fügen der Eigenschaft SQL Spaltenname das Suffix EXT_ID SAP_ACCOUNT__C hinzu (7).

Dadurch wird Salesforce angewiesen, die ACCOUNTID durch Suche in der Tabelle ACCOUNT über die Spalte SAP_ACCOUNT__C (die externe ID dort) zu ermitteln und diese beim Einfügen zu verwenden.

Hinweis: Die Angabe eines Referenzobjektes ist in diesem Fall nicht notwendig, da unsere beiden Tabellen in diesem Beispiel verknüpft sind. Wäre das nicht der Fall, dann müsste der Spaltenname wie folgt erweitert werden: <SPALTENNAME> EXT_ID <REFERENZOBJEKT>__R.<FELDNAME>__C, hier also ACCOUNTID EXT_ID ACCOUNT__R.SAP_ACCOUNT__C


images/download/attachments/169636945/281-version-2-modificationdate-1742974753792-api-v2.png


Abschließend erweitern wir den SQL-Spaltennamen (9) des Feldes SAP_CONTACT__C (8) lediglich um EXT_ID.

Damit weisen wir Salesforce an, diese Spalte als Primärschlüssel für den UPSERT zu verwenden.