Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Es wird empfohlen, den Import zunächst in einer eigenen Testumgebung durchzuführen.

Importer installieren

Wie im oberen Artikel Kontinuierlicher Datenimport beschrieben, wird eine Importer.exe benötigt. Diese kann selbst geschrieben werden. Für die meisten Fälle bietet antony aber Standard-Importer an. Diese können im Hub manuell installiert werden. Dazu auf im Hub auf Umgebungsverwaltung > Produkteund den Punkt Produkt installieren aufklicken und den Namen des gwünschten Importers angeben.

  • AntonyDataImportCsv

  • AntonyDataImportMsSql

  • AntonyDataImportMySql

  • AntonyDataImportOdbc

  • AntonyDataImportOracle

_import_configuration

The Die _import_configuration Table holds some basedata for the import. Tabelle enthält als Basisinformationen des Imports

Database field

Description

idEach Import has its own id. This is a GUID, you can simply generate

Jeder Import hat seine eigene ID. Dies ist eine GUID, die Sie einfach generieren können. Zum Beispiel hier https://guidgenerator.com

is_active

With this flag you can activate Mit diesem Flag können Sie den Import aktivieren (1) and deactivate und deaktivieren (0) the import

debug

The AntonyImportModule creates files, which are interpreted by the Das AntonyImportModul erstellt Dateien, die von der Importer.exe interpretiert werden. The `importer.exe` reads this files and produces an output file. If the dbeug flag is set to true, these two files will not be removed. You can find it unter %TEMP%\AntonyImporter of the user, the services runs under. For LocalSystem you can find it Die Importer.exe liest diese Dateien und erzeugt eine Ausgabedatei. Wenn das debug-Flag gesetzt (1) ist, werden diese beiden Dateien nicht nach dem Vorgang nicht entfernt. Sie finden sie unter %TEMP%\AntonyImporter des Benutzers, unter dem die Dienste laufen. Üblicherweise finden Sie sie unter C:\Windows\Temp\AntonyImporter

These files will not be removed, if
Panel
panelIconIdatlassian-warning
panelIcon:warning:
bgColor#FFFAE6
Note

Diese Dateien werden nicht entfernt, wenn debug = 1 ist. Be careful, as your hdd space might become a problemSeien Sie vorsichtig, da Ihr Festplattenspeicherplatz ein Problem werden könnte.

frequencyThe frequency the import will be triggered

Die Häufigkeit, mit der der Import ausgelöst wird.

Format: <d>.<HH>:<MM>:<ss>. You cannot define a range unter a minute, as the importer only checks one per minuteSie können keinen Bereich unter einer Minute festlegen, da der Importeur nur einen pro Minute überprüft.

import_name

The name of the import. Free for use

comment

A comment for this import. Free for useDer Name des Imports. Dieser kann frei vergeben werden.

comment

Ein Kommentar zu diesem Import. Frei zur Verwendung,

connection_information

Some ConnectionInformations the importer.exe will get within the importConfiguration. This might contain a ConnectionString or API Adress or something else. This information is only used by the importer.exe

import_group

Someday you want to configure multiple imports from the same origin. These imports might contain a link to each other like as CustomerId within an Order In this case you can place the two imports into the same ImportGroup. The importer will fill the import_state with the mappings from every import within the import_group with the mapping_name. With an Converter Lookup you can translate the id of the foreignSystem to the antony ids.

This feature was orignally designed for customer link fields within an flexobject

mapping_name

This setting is only relevant in combination of an import_group. If set you can access the state from another import within the importer.exE by this name.

You need to make sure, that the mapping_name is unique over all of your configured imports. Otherwise the importer cannot relate the foreign_id of the importee to antony’s ids.

importer_exe

The Full Path to the importer.exe which is executed by the AntonyImportModule. The BasePath the importer is called in is within the %TEMP% Path. So perhaps you want to the it within you importer.exe

import_exe_args

This arguments are passed to the importer.exe. It is free to use.

target_type

The type the importer should import to. This can be

  • “antony://contact” for a contact

  • “antony://appointment” for an appointment

  • “antony://flexobject/<typeId>” for an FlexObject. The typeId is the id of the flexobject type. See table “Flexobject” for more infos.

import_parameter

These are some parameter the importer.exe can get to be configured. You also can use importer_arguments bis the importer_parameter is designed to gets bigger data like an SQL Query or perhaps a Json Payload. You might not want to get this info via Command Line Arguments

merge_fields

Sometimes you don't want to import a whole object, but only import some data from a system to an existing one. Imagine you import some orders from a shop into a flexobject. Aou have also an ERP which holds the status of this order by a the ordernumer of the order. With the merge_fields you can configure your import to Update an existing Flexobject instead of creating a new one.

Therefore the importer will check, if there is already a flexobject with the value the importer.exe provides in the field merge_fields. If so, this flexobject will be updated by this Import

If you have multiple Flexobjects which are matching the condition, then ALL flexobjects will be updated. You can provide multiple fields which ALL needs to match. The field within the database is comma-separated

You have multiple Flexobjects which are matching the condition, then ALL flexobjects will be updated

batch_size

This sets the size of the batch the importer imports without a delay. The defaultvalue is 1. This option and the delay_between_batch is usefull, if you import big datasets (lets say big = >200). In this case antony will create 200 single create and updates, which will impact the performance and stability of your whole installation.

delay_between_batch

This sets the delay the importer adds on every batch, defined by batch_size. So if you import a big dataset

suppress_create

This flag is usefull if you want to make sure, that no item will be created by the import. Use this if you only want to import some additional data from a source to an already existing dataset within antony. F.e. a generated link of your Shop or ERP

import_configuration_mapping fields

...

Die Verbindungsinformationen, die Importer.exe im Rahmen des Vorgangs erhält. Dies kann einen ConnectionString oder eine API-Adresse oder etwas anderes enthalten.

Die konkrete Information, die dort abgelegt wird ist abhängig vom verwendeten Importer

import_group

Manchmal möchten Sie mehrere Importe aus demselben Ursprung (z.B. ERP) konfigurieren. Diese Importe können einen Link zueinander enthalten, wie z.B. eine CustomerId innerhalb einer Bestellung. In diesem Fall müssen Sie die beiden Importe dieselbe ImportGroup aufweisen. Der Importer macht die Mappings mit den dann in den Importern verfügbar. Mit einem Converter Lookup können Sie die ID des foreignSystem in die antony ID übersetzen.

Diese Funktion wurde ursprünglich für Kundenverknüpfungsfelder innerhalb eines Flexobjects entwickelt.

mapping_name

Diese Einstellung ist nur in Verbindung mit einer import_group relevant. Wenn sie gesetzt ist, können Sie auf den Status eines anderen Imports innerhalb der importer.exe unter diesem Namen zugreifen.

Sie müssen darauf achten, dass der mapping_name für alle Ihre konfigurierten Importe eindeutig ist. Andernfalls kann der Importeur die foreign_id des Importeurs nicht mit den ids von antony in Verbindung bringen.

importer_exe

Der vollständige Pfad zur importer.exe, die vom AntonyImportModul ausgeführt wird. Beispielsweise "C:\Program Files\antony Groupware GmbH\AntonyDataImportOdbc\antony.DataImport.Odbc.exe"

import_exe_args

Diese Argumente werden an die importer.exe übergeben. Die Verwendung ist abhängig von den Fähigkeiten der verwendeten importer.exe

target_type

Der Typ, in den importieren werden soll. Dies kann sein

  • "antony://kontakt" für einen Kontakt

  • "antony://appointment" für einen Termin

  • "antony://flexobject/<typeId>" für ein FlexObject. Die typeId ist die ID des Flexobject-Typs. Siehe Tabelle "flexobject" für weitere Informationen.

import_parameter

Dies sind einige Parameter, die der importer.exe erhalten kann, um konfiguriert zu werden. Wie diese Parameter verwendet werden, ist abhängig von der verwendeten importer.exe. Dies kann beispielsweise eine SQL-Query sein.

merge_fields

Manchmal möchte man nicht ein ganzes Objekt importieren, sondern nur einige Daten aus einem System in ein bestehendes importieren. Stellen Sie sich vor, Sie importieren Bestellungen in ein Flexobjekt. Sie haben nun ebenfalls ein ERP-System, dass den Status dieser Bestellung über die Bestellnummer der Bestellung festhält. Mit den merge_fields können Sie den Import so konfigurieren, dass dieser Status an das bereits vorhandene Flexobjekte angefügt wird.

Dazu prüft der Importer, ob es bereits ein Flexobject mit dem Wert gibt, den die importer.exe im Feld merge_fields angibt. Ist dies der Fall, wird dieses Flexobject durch den Import aktualisiert. Andernfalls wird ein neues Flexobjekt erzeugt

Wenn Sie mehrere Flexobjects haben, die der Bedingung entsprechen, werden ALLE Flexobjects aktualisiert. Sie können auch mehrere Felder angeben. Die Felder in der Datenbank sind durch Kommas getrennt

batch_size

Hier wird die Größe des Stapels festgelegt, den der Importer ohne Verzögerung importiert. Der Standardwert ist 1. Diese Option und die Option delay_between_batch sind nützlich, wenn Sie große Datensätze importieren (sagen wir mal big = >200). In diesem Fall wird Antony 200 einzelne Erstellungs- und Aktualisierungsvorgänge durchführen, was sich auf die Leistung und Stabilität Ihrer gesamten Installation auswirken wird.

delay_between_batch

Hier wird die Verzögerung festgelegt, die der Importer zwischen den Batches (siehe batch_size wartet. Die Angabe ist in ms.

suppress_create

Dieses Flag ist nützlich, wenn Sie sicherstellen wollen, dass durch den Import kein neues Element erzeugt werden soll. Benutzen Sie dies, wenn Sie nur zusätzliche Daten aus einer Quelle in einen bereits bestehenden Datensatz in antony importieren wollen. Z.B. das obige Beispiel des Bestellstatus aus dem ERP

import_configuration_mapping fields

Diese Tabelle enthält die Konfiguration des Imports, wie die "provides"-Felder der "importer.exe" auf das "antony"-Feld abgebildet werden.

Database field

Description

id

An incremental

Eine inkrementelle id

foreign_source_field

This is the fieldname the

Dies ist der Feldname, den die importer.exe

provides to the AntonyImportModule. This might be the name of a column for ODBC Importer or from a json or so on. This one is specific to the importer.exe

dem AntonyImportModul zur Verfügung stellt. Dies kann der Name einer Spalte für den ODBC-Importer oder einer json-Spalte oder ähnlichem sein.

Die Felder sind Abhängig vom verwendeten Importer.

antony_target_field

This is the field of your configured

Dies ist das Feld des von Ihnen konfigurierten target_type

the

(siehe unten), in das das foreign_source_field

should be written to. Be sure that this field is only mapped once for an import configuration.

For customFields you need to know the <ID> of the field. The easiest way to get this is to open the flexobject in layout mode and copy it from the properties view.

converter_infos

Here you can configure converters to convert the values provided by the importer.exe. Each Converter needs two parameter

  • ConverterName: This is the name of the converter. You might provide some converter within your code or use std. one. There are two defined

    • Expression: Takes a C# Linq Expression to freely convert the value

    • IdLookup: This Converter can be used to lookup an id from the import_state. Is is usefull in combination with import_group

  • ConverterParameter: The parameter the converter takes. The value depends on the converter used

    • Expression: The Expression to use. f. (x)=> x.ToString().ToUpper()

    • Lookup: The mapping_name you want to lookup

An example could be

geschrieben werden soll. Achten Sie darauf, dass dieses Feld nur einmal für eine Importkonfiguration zugeordnet wird.

Für customFields müssen Sie die <ID> des Feldes kennen. Am einfachsten erhalten Sie diese, indem Sie das Flexobjekt im Layoutmodus öffnen und sie aus der Eigenschaftenansicht kopieren. Der Name lautet entsprechend Field_<ID>

converter_infos

Hier können Sie Konverter konfigurieren, um die vom Importer.exebereitgestellten Werte zu konvertieren. Diese sind für kleine Umformungen wie “ToUpper”, “Split” oder sonstiges gedacht. Jeder Konverter benötigt zwei Parameter

  • ConverterName: Dies ist der Name des Konverters. Es sind standardmäßig zwei Konverter definiert

  • Expression: Nimmt einen C# Linq-Ausdruck, um den Wert frei zu konvertieren. Beispiel:

Code Block
languagejson
[{"ConverterName":"Expression","ConverterParameter":"(x) => x.ToUpper()"}]
  • IdLookup: Dieser Konverter kann verwendet werden, um eine Id aus dem import_state nachzuschlagen. Er ist nützlich in Kombination mit import_group für zum Beispiel Ansprechpartner Mappings. Beispiel:

Code Block
languagejson
[
{ 
"ConverterName": "
Expression
IdLookup", 
"ConverterParameter":
"(x) => new int[] { 73, (int.Parse(x.ToString())) }" } ]

Be sure to properly quote the QuotationMarks (“ to \”)

comment

A comment. This can be filled by you to still understand the mapping in 2 days
 "integra"}]

Achten Sie darauf, dass die Eingabe korrekt gequoted wird (" zu \")

comment

Ein Kommentar. Dieser kann von Ihnen ausgefüllt werden, um das Mapping noch in 2 Tagen zu verstehen.

import_configuration_id

The ImportId of the importer. This one is the link to the

Die Id des Imports. Dies ist der Link zur Tabelle _import_configuration

table

List Antony Fields

Of course you want to configure the mapping of the fields to the according antony fields. Therefore you need to know the name of the fields antony provides. You can find them hereNatürlich wollen Sie die Zuordnung der Felder zu den entsprechenden antony-Feldern konfigurieren. Dazu müssen Sie die Namen der Felder kennen, die antony zur Verfügung stellt. Sie können sie hier finden

Contact

TargetType: “antony://contact”

Customfields of contacts can be added by placing Field_n within the antony_field. The n is the id of the customfield itselve. You can either grab is from antonys visual editor or the table instance_customfields

Antony Mapping Field

.net Data-Type

Comments

MainContactId

System.Int64This is the id of antonys main contact, if the contact wants to be a subcontact. Normally you wont have this present within the foreign system - So you need to map them. Therefore you can use the build in Converter “IdLookup” and provide the mapping_name of the corresponding import. The importer will resolve antonys MainContactId automatically

Dies ist die Id von antonys' Hauptkontakt, wenn der Kontakt ein Unterkontakt sein möchte. Normalerweise ist diese im Fremdsystem nicht vorhanden, denn dort sind natürlich nur die Ids des jeweiligen Fremdsystems enthalten.

Zum Mappen können Sie den eingebauten Konverter IdLookup verwenden und den mapping_name des entsprechenden Imports angeben. Der Importer wird antonys MainContactId automatisch auflösen.

Code Block
languagejson
[{ "ConverterName": "IdLookup", "ConverterParameter": "integra"}]

If the given main contact isn't present within antonys import mapping, the crearted contact will be a normal main contactWenn der angegebene Hauptkontakt nicht im Importmapping enthalten ist, wird der neue Kontakt als normaler Hauptkontakt angelegt

Damit das IdLookup funktioniert müssen die Importe in der selben import_group sein

TitleId

System.Int64

The id of the title of the contact. You can find them in the table Die ID des Titels des Kontakts. Sie können sie in der Tabelle type_title finden

Company

System.String

Firstname

System.String

Lastname

System.String

Street

System.String

Zipcode

System.String

City

System.String

State

System.Int64

The id of the state. You can find it them in the table Die ID des Bundeslandes. Sie finden sie in der Tabelle type_state

CountryId

System.Int64

The id of the country. You can find them in the table Die ID des Landes. Sie können sie in der Tabelle type_contry finden

Phone

System.String

Phone2

System.String

Fax

System.String

Email

System.String

Mobile

System.String

Homepage

System.String

Comment

System.String

StreetPrivate

System.String

ZipcodePrivate

System.String

CityPrivate

System.String

StatePrivate

System.Int64

The id of the state. You can find it them in the table Die private ID des Bundeslands. Sie finden sie in der Tabelle type_state

CountryIdPrivate

System.Int64

The id of the country. You can find them in the table Die private ID des Landes. Sie können sie in der Tabelle type_contry finden

PhonePrivate

System.String

Phone2Private

System.String

FaxPrivate

System.String

Department

System.String

Picture

Byte[]

Birthday

System.DateTime

Be sure to place LocalTime hereStellen Sie sicher, dass Sie hier LocalTime verwenden

ContactGroup

System.Boolean

This is a write only property. If you pass a contact group here the contact will be added to the given contact group. The present contact will not be removed from existing ones

Wenn Sie hier eine Kontaktgruppe angeben, wird der Kontakt zu der angegebenen Kontaktgruppe hinzugefügt. Der aktuelle Kontakt wird nicht aus den bestehenden Gruppen entfernt.

Benutzerdefinierte Felder von Kontakten können hinzugefügt werden, indem Feld_n in das Feld antony_field eingetragen wird. Das n ist die ID des benutzerdefinierten Feldes selbst. Sie können es entweder aus dem visuellen Editor von antony oder aus der Tabelle instance_customfields übernehmen

Appointment

TargetType: “antony://appointment”

Antony Mapping Field

.net Data-Type

Comments

UID

System.Int64

Sequence

System.Int64

AllDay

System.Boolean

StartDateTime

System.DateTime

LOCALTIMEDie Angaben sind hier in LocalTime!

EndDateTime

System.DateTime

LOCALTIMEDie Angaben sind hier in LocalTime!

Subject

System.String

Location

System.String

Description

System.String

Label

System.Int64

Status

System.Int64

IsPrivate

System.Boolean

HasReminder

System.Boolean

True, if a reminder is configuredwenn eine Erinnerung konfiguriert ist

ReminderTimeBeforeStart

System.Int64

The number of nanoseconds of the reminder time.

This is some kind of technical dept

Die Anzahl der Nanosekunden der Erinnerungszeit.

Die Angabe in Nanosekunden ist historisch bedingt.

ResourceIds

List`1

The ids of the resource the appointment should be placed in. You can find them within the antony admin.

Example converter_infos placing an appointment within calendar 73 and the mapped fieldDie IDs der Kalender, in die der Termin gelegt werden soll. Sie finden sie im Administator, wenn Sie sich dort die Spalte Ideinblenden lassen.

Beispiel für converter_infos, welche Termin im Kalender 73 und dem zugeordneten Feld eintragen.

Code Block
languagejson
[{"ConverterName":"Expression","ConverterParameter":"(x) => new int[] { 73, (int.Parse(x.ToString()))  }"}]

Creating recurring appointments is not supportedDas Erstellen von wiederkehrenden Terminen wird nicht unterstützt.

Flexobjects

The importer is also able to import flexobjects, which are configured within your environment. As a flexobject only contains CustomFields you need to look them up. They can be added by placing Field_n within the antony_field. The n is the id of the customfield itselve. You can either grab is from antonys visual editor or the table instance_customfieldsDer Importer kann auch Flexobjekte importieren, die in Ihrer Umgebung konfiguriert sind. Da ein Flexobjekt nur CustomFields enthält, müssen Sie diese nachschlagen. Sie können hinzugefügt werden, indem man Field_n innerhalb des antony_field platziert. Das n ist die ID des Customfields selbst. Sie können sie entweder aus dem visuellen Editor von antony oder aus der Tabelle instance_customfields abrufen

TargetType: “antony://flexobject/<type_id>”

The Die type_id is the id of the type of the flexobject itselve. You can find it in the table flexobject

Conclusion

The import is a powerful but complex tool to import any data from an external datasource. You can also write a custom importer to grab data from your custom source.

If you have troubles to get your import up an running, please contact us ist die ID des Typs des Flexobjects selbst. Sie finden sie in der Tabelle flexobject

Fazit

Der Import ist ein leistungsstarkes, aber komplexes Werkzeug zum Importieren beliebiger Daten aus einer externen Datenquelle. Sie können zu den Standardimportern auch einen benutzerdefinierten Importer schreiben, um Daten aus Ihrer benutzerdefinierten Quelle zu holen.

Wenn Sie Probleme haben, Ihren Import zum Laufen zu bringen, kontaktieren Sie uns bitte.