Wir bauen unsere Konnektoren zu gängigen Shop-, CRM-, ERP- und anderen Systemen ständig aus. Du findest eine Liste vorgefertigter Schnittstellen hier.
Schnittstelle in Hublify einrichten
Hierzu wechselst du in der Hublify App in den Bereich System / Datahub.
Unter "Connect with..." findest du die vorbereiteteten Konnektoren, die für dein System freigeschaltet sind.
Folge den Anweisungen für das jeweilige System und fülle das vorbereitete Fomular aus.
Für das Feld „POS-Channel“ solltest du einen kurzen sprechenden und eindeutigen Namen festlegen. Dieser findet sich später in allen Konfigurationen wieder, die hier automatisch eingerichtet werden und ihm werden später auch die importierten Aufträge zugewiesen. Dies wird insbesondere dann wichtig, wenn du mehrere Shops anbinden möchtest. Über den POS-Channel kannst du zudem auch (optional) steuern, welche Produkte zu welchem Preis in welchen Shop exportiert werden sollen.
Beim Einrichten der Verbindung wird ein erster kleiner Test der Zugangsdaten durchgeführt und bei Erfolg wird deine Schnittstelle konfiguriert.
Jetzt kannst du in der Hublify-App bereits auf Livedaten zugreifen und könntest deine Auftrags- und Produktdaten synchronisieren.
Im Reiter „Bestehende Verbindungen“ findest du eine Übersicht mit den vorbereiteten Daten und kannst diese bei Bedarf weiter bearbeiten.
Bestehende Verbindungen
Diese Übersicht ist der einfachste Weg, die pro Shop vorhandenen Konfigurationen einzusehen und zu bearbeiten.
Datasets
Hier kannst du direkt in deiner Hublify-App auf Livedaten deines externen Systems zugreifen.
Je nach System können die Daten dort unterschiedlich detailliert angezeigt sein.
Diese Datasets sind die Grundlage für die in Folge konfigurierten Datenabgleiche.
SyncMeta
Der schnelle Überblick zu den bereits synchronisierten Datensätzen.
In den zugehörigen Listen unter "System" / "DataHub" / "Sync Metadaten" kannst du dir weitere Details zu den bereits abgerufenen Daten ansehen.
Achtung: Diese Listen dienen zusätzlich auch als Hilfsmittel, um bereits übertragene Datensätze zu erkennen.
Falls du also im externen System oder in Hublify Daten löscht, solltest du auch hier die zugehörigen Einträge löschen.
Dataset Actions
Dies sind die konfigurierten Datenabgleiche zwischen Hublify und deinem externen Shop. Beim Einrichten der Verbindung werden dort typische Im- und Exporte vorbereitet. Diese kannst du passend zu deinem gewünschten Setup anpassen und erweitern. In der Übersicht kannst du die zugehörige Aktion auch direkt über das "..." Menü auslösen oder die Einstellungen bearbeiten.
Das jeweilige Mapping der Quell- und Zieldaten findest du entweder direkt in den Einstellungen derr Dataset Action oder ausgelagert als eigene "Data Map". In diesem Fall findest du das Label der Data Map in den Einstellungen als "dm_label
". Zu den jeweils möglichen Einstellungen prüfe bitte auch die speziellen Anleitungen für dieses System bzw. diesen Im/Export.
DaemonJobs
Nachdem du die Dataset Actions (sofern nötig) angepasst hast, wirst du einige davon vermutlich automatisieren wollen.
Du hast natürlich weiter die Möglichkeit, diese auch manuell oder on demand auszuösen.
Um dir eine mögliche Automatisierung zu erleichtern ist aber auch jeweils schon ein inaktiver DaemonJob vorbereitet. Du kannst diesen bei Bedarf aktivieren und anpassen, wie häufig dieser ausgeführt werden soll.
Des weiteren hast du die Möglichkeit, zusätzliche Filter anzugeben, die nur bei der automatischen Ausführung verwendet werden. Diese werden mit den fix in den "iteratorParams" der Dataset Action gesetzten Einstellungen kombiniert.
Best Practise / Tipps
Datenmenge
Wo immer möglich, sollte die Menge der übertragenen Daten auf die wirklich benötigten reduziert werden.
Hierfür prüfst du am besten, welche Filter dir für das jeweilige Quellsystem zur Verfügung stehen.
Meist gibt es die Möglichkeit, nach z.B. dem letzten Änderungszeitpunkt zu filtern. So kannst du nach einem Initialabgleich einstellen, dass nur die Daten exportiert oder importiert werden sollen, die sich tatsächlich verändert haben.
Falls möglich, kannst du auch die "fields" einschränken, die jeweils abgerufen werden.
Reihenfolge
Achte darauf, wie deine Daten zusammenhängen.
So werden z.B. Kategorien in Produkten referenziert.
Importiere daher erst alle Kategorien, bevor du deinen Produktimport startest, damit sie dir dort auch zur Verfügung stehen.
Und exportiere erst alle Kategorien, falls du Produkte exportierst, deren Kategorie-Zuordnungen mit exportiert werden sollen.
Frequenz
Während es bei einigen Daten wichtig sein kann, sie möglichst schnell zu erhalten (z.B. neue Aufträge oder geänderte Bestände), ändern sich andere Daten kaum. Wähle die Frequenz deines Datenabgleichs daher passend zu den jeweiligen Daten und ihrer Nutzung im Zielsystem. Und passe den zuvor erwähnten Filter an die Frequenz deines Datenabgleichs an.
Erlaube dabei aber immer auch einen gewissen Puffer.
Initiale Einstellungen / Tests
Prüfe deine Einstellungen am besten mit einer kleinen Datenmenge. Wähle dafür typische Datensätze, die insbesondere deine potentiellen Sonderfälle berücksichtigen und filtere nach diesen, bevor du die Dataset Actions ausführst. So kannst du deine Einstellungen prüfen, ohne gleich riesige Datenmengen zu übertragen.
Mapping
Nutze die Details zu den abgeglichenen Testdaten in SyncMeta, um eventuell noch fehlende Sonderfelder aufzufinden. Du siehst dort üblicherweise neben den bereits gemappten Daten auch die Originaldaten, die abgerufen wurden.
Importe
Kategorien & Produkte
Aktion: "category_pull
"
Die Kategorien werden in Hublify als Baumstruktur gespeichert.
Dabei wird für jeden konfigurierten Import ein eigener Katalog angelegt.
Typischerweise ändern sich die Kategorien nicht allzu häufig, so dass man diese oft nur gelegentlich aktualisieren muss.
Da die Kategorien beim Import der Produkte verwendet werden, bitte immer erst die Kategorien und dann erst die Produkte importieren.
Importierte Datenfelder
Sofern in den Quelldaten verfügbar, werden standardmässig die folgenden Datenfelder importiert.ngr_label
- das Label des Katalogsnode_code
- ein eindeutiger Code für diese Kategorienode_codefather
- der eindeutige Code der übergeordneten Kategorienode_name
- der Name der Kategorieactive
- Ist diese Kategorie aktiv / sichtbarmeta_title
- Titel zur Verwendung in Metadatenmeta_keywords
- Keywords zur Verwendung in Metadatenmeta_description
- Beschreibung zur Verwendung in Metadatentitle
- Überschrift, meist identisch mit dem Namenbody
- HTML-Text für z.B. Kategorie-Detailseiten
/** * @param array $params * [fields] * [ngr_label] string, optional Select a specific tree * [node_path] String, must. Kategorie-Pfad im Tree * [node_desc] String, optional. Kurzbeschreibung * [node_desc_long] String, optional. Langbeschreibung * [node_keywords] String, optional. Keywords * [separator] String, optional. Pfad-Trennzeichen * [...] mixed additional fields if applicable * * * @return array */
Produkte und Produktvarianten
Aktion: "product_pull
"
In Hublify wird jede Variante als eigenständiges Produkt mit uniquem Produktcode (SKU) erfasst. Über einen Master-Produktcode können diese gruppiert werden.
Standardmäßig werden "Farbe", "Größe" und "Ausführung" als Variantenfelder vorgehalten und gemapped. Weitere Variantenfelder können bei Bedarf konfiguriert werden.
Importierte Datenfelder
Produkten zugewiesene Bilder können beim Import anhand Ihrer URL direkt mit ins Hublify-MAM importiert werden.
Preise können bei Bedarf spezifisch für den beim Import angegebenen POS-Channel importiert werden.
Der vorkonfigurierte Import weist die jeweils verfügbaren Standardfelder des externen Systems bereits den passenden Hublify Produkt-Datenfeldern zu.
Es empfiehlt sich, das zugehörige Mapping zu prüfen, da gerade bei Produktdaten oft noch weitere individuell konfigurierte Attribute vorhanden sein könnten. Diese können im pro Import hinterlegten Mapping ergänzt/angepasst werden
Auswahl der häufig bereits im Mapping vorkonfigurierten Produkt-Datenfelder:pcode
- Produktcode / SKUmaster_pcode
- Varianten-Mastercodename
- Produkt Namedescription
- Beschreibungdesc_short
- Kurzbeschreibungmanufacturer
- Herstellerpcode_manufacturer
- Hersteller-Produktcodegtin
- GTIN / EANprdv_color
- Varianten-Farbeprdv_size
- Varianten-Größeprdv_other
- Varianten-Ausführungpack_amount
- Verpackungsmengepack_unit
- Verpackungseinheitmeta_title
- Titel zur Verwendung in Metadatenmeta_keywords
- Keywords zur Verwendung in Metadatenmeta_description
- Beschreibung zur Verwendung in Metadatenvat
- MwSt-Satzprd_delivery
- Lieferhinweisprd_storage_counter
- Lagerbestandavailable_date
- verfügbar abprice
- Standard-Bruttopreisdiscount
- Discount-Bruttopreisstate
- Online-Status (2 = online, 1 = offline)order_quanti_max
- Maximale Bestellmengeorder_quanti_min
- Minimale Bestellmengeorder_quanti_inc
- Bestellmengen Schrittweite
Product-Pull:
/** * @param array $params * [fields] * [xc__lang_iso] string (optional, default: shop-default, usually DE) * [xc__active] int 1=active,0=inactive * [xc__publish_start] datetime|null "available from" * [xc__publish_end] datetime|null "available until" * [xc__searchable] int 1=searchable,0=not searchable * [pcode] string (must), SKU for the specific product variant * [master_pcode] string (must) use the same master-pcode for all variants of a product * [name] string (must) Productname * [description] string html-allowed * [desc_short] string html-allowed * [manufacturer] string name of the manufacturer * [prd_type] string (optional, default: 'product') * [prdv_color] string variant-color if relevant * [prdv_size] string variant-size if relevant * [prdv_other] string * [desc_tech] string special formatted tech-desc * [prd_keywords] string * [prd_comment] string * [files_img] array (list of images for the product * - provide everything you can for now for all media-data ) * [ * [<n>][src] string public URL * OR * [<n>][attachment] base64 body content of an image * * [<n>][position] int current position * [<n>][filename] string filename * [<n>][alt] string * ] * [files_doc] array (list of documents for the product) * [pack_amount] decimal * [pack_unit] string * [pack_size] string e.g. 10cmx20cmx30cm * [prd_ingr_amount] decimal * [prd_ingr_unit] string * [prd_weight] int weight in gram * [prd_virtual] int (default: 0) * [pcode_manufacturer] string * [gtin] string * [brand] string * [products_replace] string SKU/pcode of the product that replaces this one (comma-separated) * [products_upselling] string list of SKU/pcodes for upselling products (comma-separated) * [products_related] string list of SKU/pcodes for related products (comma-separated) * [orderitem_name] string overriding product-name for use in order * [orderitem_text] string * [marketing_name] string * [marketing_teaser] string * [marketing_image] => null, * [new_product] int 1=new product, 0= regular product * [special_offer_product] int 1=special offer, 0= regular product * [meta_title] string * [meta_keywords] string * [meta_description] string * [marketing_image_background' => null, * [marketing_overlay_html] string * [description_seo] string * [vat] decimal e.g. 19.00 * [price_first_online] datetime * [discount_text] string * [offer_level] int * [prd_delivery] string e.g. "2-3 Werktage" * [prd_storage_counter] decimal|null (use null for unlimited) * [prd_storage_counter_update_time] datetime * [prd_storage_limit_notify] decimal * [prd_storage_limit_reorder' => null, * [searchable] int 1=searchable,0=not searchable * [single_buy] int 1= yet, 0= no (aka is part of e.g. a bundle and can't be bought on it's own) * [available_date] datetime * [bookable] int 1= yes (can also mean preorder if currently not available) 0=no * [order_quanti_max] decimal * [order_quanti_min] decimal * [order_quanti_inc] decimal * [hide_price_dsp] int 0=show price, 1=hide price, 2=price on request * [free_shipping] int 1=ships without cost, 0=regular shipping costs * [category] array * [<n>][node_id] - Integer, optional. Kategorie-ID * OR * [<n>][node_path] - String, optional. Kategorie-Pfad, alternativ zu "node_id" * OR * [<n>][node_code] - String, optional. Kategorie-Code, alternativ zu "node_id" * [<n>][ngr_label] - String, optional. Katalog-Label zum Kategorie-Code * [category_sep] - String, optional. Trennzeichen bei Kategorie-Pfaden * [category_lang] - String, optional. Sprach-ISO bei Kategorie-Pfaden * [category_clear] - Boolean, optional. Bei True werden Kategorie-Zuordnungen vorab gelöscht * [state] int 2=online, 1=offline * [price] decimal * [discount] decimal * [discount_start] datetime * [discount_end] datetime * [price_dsc_scale] array * [<persongroup-price>] float * [<persongroup-price_dsc_scale>] array * [xdata] array (other data) * [...] mixed additional fields if applicable * * [price_modus] string (default: brutto) brutto = leave prices as they are, netto = convert netto into brutto * [price_fields] array optional (default: array('price','discount'). * which price-fields should be converted * [price_scale_fields] array optional (default: array()) * additional price-scale-fields that should be converted (will be parsed first) * * @return array */
Kunden & Aufträge
Aktion: "person_pull
"
Kundendaten und sofern verfügbar gespeicherte Adressen können in Hublify übernommen werden.
Spezielle Kundengruppen können im zugehörigen Mapping zugeordnet oder auch grundsätzlich hinterlegt werden.
Um sicherzustellen, dass jeder Kunde eine eindeutige Kundennr. bekommt, wird von Haus aus eine eigene Kundennr. in Hublify vergeben. Die Kundennr. des externen Systems wird als "externe Kundennr." übernommen, ggf. mit einem Prefix passend zum gewählten Import. Dies kann im Mapping angepasst werden.
Importierte Datenfelder
Auswahl typischerweise importierter Kunden-Datenfelder
p_personid_external
- externe Kundennr.gender
- Anredefirstname
- Vornamelastname
- Nachnameemail
- E-Mailcompany
- Firmataxident
- UstId.street
- Straßehousenr
- Hausnummeraddress2
- Adresszusatzzip
- Postleitzahltown
- Ortcountry
- Land (ISO-Code)telephone
- Telefontelefax
- Fax
/** * Pulls one person into Hublify (create or update) * * @param array $params * [fields] array any data needed to create/update a person-record * [p_personid_external] string|null (unique identifier for person, * should have a prefix for the source to make sure it's unique overall) * [fk_p_grpid] int internal id for the group (alternative to "persgrp_name") * [persgrp_name] string name for the persongroup * [gender] string (options: male|female) * [firstname] string * [lastname] string * [email] string * [company] string * [taxident] string TaxIdentNr if available * [street] string * [housenr] string * [address2] string * [zip] string * [town] string * [country] string ISO 3166-2-Code for country * [telephone] string * [telephone_mobile] string * [telefax] string * [p_allow_email_marketing] int 1=allow, 0=not allowed, -1=unknown * * [p_login_active] bool true if active user-login should exist * [p_login_username] string unique username if login should be created * [p_login_pwd_encrypted] string * [p_login_time_last] datetime * [p_referrer] string * [p_comment_internal] string * [...] mixed additional fields if applicable * [p_address_list] array optional list of addresses to be saved in addressbook * [<idx>][adr_ref_type] string (options: person_invoice_default | person_invoice * | person_delivery_default | person_delivery | person_other) * [<idx>][adr_gender] string (options: male|female) * [<idx>][adr_firstname] string * [<idx>][adr_lastname] string * [<idx>][adr_company] string * [<idx>][adr_street] string * [<idx>][adr_housenr] string * [<idx>][adr_extra1] string * [<idx>][adr_zip] string * [<idx>][adr_town] string * [<idx>][adr_country] string ISO 3166-2-Code for country * [person_login] bool if not set to true, the [p_login_...] fields will be ignored for person * * @return array */
Aufträge
Aktion: "order_pull
"
Beim Import von Aufträgen können Versandarten, Zahlungsarten und Kampagnen automatisch mit angelegt werden.
Noch nicht vorhandene Kundendatensätze werden automatisch angelegt. Daher ist es wichtig, dass die Mapping-Einstellungen für diese beim Kunden- und Auftragsimport gleich vergeben werden.
Achtung: Importierte Aufträge werden wie frisch eingegangene Bestellungen gewertet. Daher wird für bestellte Produkte mit einem hinterlegten Lagerbestand dieser beim Import der Aufträge passend zu den bestellten Mengen heruntergezählt.
Für den Fall, dass historische Aufträge importiert werden, sollte der Lagerbestand anschließend noch einmal aktualisiert werden.
Order-Pull:
/** * Pulls one order into Hublify (right now we only support create) * * Supported actionParams: * [syme_sync_type] * [order] string (must) sync-type for the order data (e.g. "<external_connector>_<pos_name>") * [person] string (optional, recommended) sync-type for the customer this order belongs to * (e.g."<external_connector>_<pos_name>") * [dataMap_orderitems] array * [dm_label] string if set, this datamap will be used for each item in * [fields][order][orderitems] * [order_state_default] string * [order_state_create_success] string * [order_state_create_error] string * * [defaultParamsOnPurchase] array (optional) additional params * that should be added on purchase/create * [beautify] bool set true for additional data cleanup|beautify * [person_update] bool set true to update existing person-records * * @param array $params * [syme_external_id] array * [order] string (must) a unique identifier for the order in the external system * [person] string (optional, recommended) a unique identifier for the customer in the external system, * will be used to automatically fill [fields][order][fk_o_persid] * [fields] * [order] array * [o_orderid_external] string|null (unique identifier for the order within this POS, * e.g. use a prefix for the source to make sure it's unique overall) * [fk_o_persid] int if the ecs-person-record for the matching customer is already known * [pos_name] string * [fk_o_stid] int id for shipping-type * or [st_label] string identifier for shipping-type * [fk_o_campid] int id for (marketing-)campaign * or [camp_campaign] string (alternative to fk_o_campid) * [o_time_ordered'] datetime * [otitle] string * [otext] string * [currency] string, e.g. EUR * * [orderitems] array list of items for the order (includes products,coupons,shipping-/payment-fees) * [<idx>][oi_pcode] string PCode * [<idx>][oi_type] string (options: product|coupon|payment|shipping) * [<idx>][oi_name] string * [<idx>][oi_text] string * [<idx>][oi_code] string e.g. item-code in the external system * [<idx>][oi_quantity] decimal|int * [<idx>][oi_price_single_brutto] decimal * or [<idx>][oi_price_single_netto] decimal (alternative to oi_price_single_brutto) * [<idx>][oi_vat_pct] decimal|int * [<idx>][oi_block] int type-specific grouping of items * (1 = product, 2 = coupon, 5 = payment/shipping) * [<idx>][oi_position] int * [<idx>][oi_xdata] array (any additional data) * * --- billing/invoice details --- * [invoice_gender] string (options: male|female) * [invoice_lastname] string * [invoice_firstname] string * [invoice_title] string * [invoice_company] string * [invoice_type] string (options: commercial|noncommercial|private) * [invoice_email] string * [invoice_taxidentnumber] string * [invoice_taxident_status] string (options: untested|invalid|valid_conditional|valid_confirmed * [invoice_third_country_export] string (options: none|certificate_promised|certificate_received) * [invoice_addrextra] string * [invoice_street] string * [invoice_housenr] string * [invoice_zip] string * [invoice_town] string * [invoice_country] string (must) ISO 3166-2-Code for country * [invoice_lang_iso] string ISO 639-1 language code * * --- shipping/delivery details --- * [deliver_gender] string (options: male|female) * [deliver_lastname] string * [deliver_firstname] string * [deliver_title] string * [deliver_company] string * [deliver_addrextra] string * [deliver_street] string * [deliver_housenr] string * [deliver_zip] string * [deliver_town] string * [deliver_country] string (must) ISO 3166-2-Code for country * [deliver_date_req] datetime * [deliver_phone] string * [deliver_comment] string * * --- additional fields --- * [ip_address] string * [o_referrer] string * [o_useragent] string * [o_comment] string * [o_comment_internal] string * [...] mixed additional fields if applicable * * [payment] array (optional) infos about payment-details for the order * [pys_method] string (must) identifier for the payment-method * [pys_id] int (optional) in case pys_method is not unique, * the unique pys_id can be used to speficy which one to use exactly * [transcode] string unique identifier for the payment-transaction within the payment-system * [transparams] array any additional data about this transaction * [account] array (optional) for bank transfers * [account_holder] string * [bank_name] string * [account_iban] string * [account_bic' => $PI['bic'], * [account_number] string (deprecated, use iban instead) * [bank_sortcode] string (deprecated, use bic instead) * * [person] array, any data needed to create a person-record for the customer this order belongs to. * (invoice-/billing-data from order will be used if not provided) * [p_personid_external] string|null, (unique identifier for person, should have a prefix for the * source to make sure it's unique overall) * [fk_p_grpid] int internal id for the group (alternative to "persgrp_name") * [persgrp_name] string name for the persongroup * [gender] string (options: male|female) * [firstname] string * [lastname] string * [email] string * [company] string * [taxident] string TaxIdentNr if available * [street] string * [housenr] string] string * [address2] string * [zip] string * [town] string * [country] string ISO 3166-2-Code for country * [telephone] string * [telephone_mobile] string * [telefax] string * [p_allow_email_marketing] int 1=allow, 0=not allowed, -1=unknown * * [p_login_active] bool true if active user-login should exists * [p_login_username] string unique username if login should be created * [p_login_pwd_encrypted] string * [p_login_time_last] datetime * [p_referrer] string * [p_comment_internal] string * [...] mixed additional fields if applicable * [p_address_list] array optional list of addresses to be saved in addressbook * [<idx>][adr_ref_type] string (options: * person_invoice_default | person_invoice | * person_delivery_default | person_delivery | person_other ) * [<idx>][adr_gender] string (options: male|female) * [<idx>][adr_firstname] string * [<idx>][adr_lastname] string * [<idx>][adr_company] string * [<idx>][adr_street] string * [<idx>][adr_housenr] string * [<idx>][adr_extra1] string * [<idx>][adr_zip] string * [<idx>][adr_town] string * [<idx>][adr_country] string ISO 3166-2-Code for country * [person_login] bool if not set to true, the [p_login_...] fields will be ignored for person * */
Exporte
Für Exporte aus Hublify heraus, kannst du die gleichen Filter/Fields-Einstellungen verwenden, die auch bei der Nutzung über die Web-API gelten. Zusätzlich hast du in den jeweiligen Aktions-Menüs der Daten auch die Möglichkeit, gezielt für einzelne Datensätze (oder mehrere markierte) den Export auszulösen.
Hierbei werden die fix in den Dataset Actions hinterlegten Filter mit dem Filter auf den jeweiligen Datensatz kombiniert. Falls du also zum nur Produkte aus einer bestimmten Kategorie exportieren möchtest und dies als Filter in der Dataset Action hinterlegt hast, würde die Übertragung nur für die gewählten Produkte ausgeführt werden, die dieser Kategorie zugewiesen sind.
Kategorien & Produkte
Da die Kategorien in den Produktdaten verwendet werden, sollte immer zuerst der entsprechende Kategoriebaum einmal komplett übertragen werden. Da sich die Kategorien tendenziell nicht ganz so häufig ändern, müssen diese anschließend oft nur noch on demand aktualisiert werden, wenn hieran Änderungen vorgenommen wurden.
Je nach System kann nötig sein, alle Varianten eines Produktes zusammen zu übertragen. In diesen Fällen ist in den iteratorParams der Export-Aktion der Parameter "groupByVariant" eingetragen. Dieses bitte nicht ändern, da es für den entsprechenden Export benötigt wird.
Falls mehrere externe Systeme angeschlossen werden sollten, können die Preise / Online-Status pro externem Channel eingestellt werden. In diesem Fall wird ein Filter auf den POS-Channel mit benötigt.
Kunden & Aufträge
Bitte beachte, dass Aufträge nicht gesamtheitlich an externe Systeme übertragen werden. Es besteht aber die Möglichkeit, bestimmte Statusinformationen zurück in das System zu übertragen, aus dem der Auftrag ursprünglich importiert wurde.
Kundeninformationen können an externe Systeme übertragen werden. Dies kann z.B. bei einem Systemwechsel sinnvoll sein. Im laufenden Betrieb solltest du aber beachten, welches System die führenden Daten enthält. Übertrage daher nur die Daten, die der Kunde nicht selbst auf dem externen System geändert haben kann.