Vertec XML Schnittstelle

Über die Vertec XML Schnittstelle lassen sich von aussen Daten in Vertec abfragen, erzeugen, ändern und löschen. Sie eignet sich demzufolge für Anbindungen von Vertec an Drittsysteme aller Art.

Betriebsart

Cloud Abo

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 13.06.2022
Aktualisiert: 03.07.2025 | Artikel aktualisiert.

Die Vertec XML Schnittstelle wird vom XML Server bereitgestellt, welcher im Cloud Server integriert ist und somit automatisch läuft, sobald ein laufender Cloud Server vorhanden ist. 

Hinweis On-Premises: Damit der XML Server aktiv ist, muss im Vertec.ini folgende Einstellung gesetzt sein:

[CloudServer]
XML Server = true

Die Kommunikation basiert auf dem Request / Response Schema. Ein Client schickt via HTTP POST eine in XML formulierte Anfrage und erhält als Ergebnis eine Antwort in XML. Das Encoding ist UTF-8, sowohl beim Senden als auch beim Empfangen von Daten.

Das Format der dabei verwendeten XML Messages basiert auf der SOAP Spezifikation. Vollständige SOAP Kompatibilität ist nicht umgesetzt, insbesondere die Behandlung von XML Namespaces fehlt. Namespaces können in Requests verwendet werden, finden aber keine Beachtung. Auch die Response Messages verwenden keine Namespace Informationen.

Der Aufbau der XML Messages ist grundsätzlich immer gleich. So enthält jede Message, ob Request oder Response, immer das Grundelement Envelope mit einem Unterelement Body, in welchem die Message transportiert wird:

<Envelope>
  <Body>
  </Body>
</Envelope>

Inhaltsverzeichnis

Authentisierung

Session Handling

Requests

Responses

Spezialfälle

Beispielanwendungen

Testen der XML Schnittstelle

Authentisierung

Die Authentisierung beim XML Server erfolgt via API Token. Dieses muss als Bearer Token in einem Authorization Header mitgegeben werden. Die ebenfalls mitgegebene URL entspricht Ihrer Vertec Adresse, also der URL, mit welcher Sie z.B. via Web App auf Ihr Vertec zugreifen, gefolgt von /xml.

Beispiel in Python:

import requests
url = 'https://firma.vertec-cloud.com/xml'
api_token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ODc5ZDQ3OTItZmQxNi00ZWFjLWI5MzUtYT...'
headers = {'Authorization': 'Bearer {}'.format(api_token)}
xmlquery = """
<Envelope>
  <Body>
    <Query>
      <Selection>
        <ocl>projektbearbeiter</ocl>
      </Selection>
    </Query>
  </Body>
</Envelope>
"""
response = requests.post(url, headers=headers, data=xmlquery)
print(response.text)

Session Handling

  • Bei einem XML Request auf /xml wird zuerst das Token auf Gültigkeit geprüft.
  • Anschliessend wird geprüft, ob für dieses Token bereits eine Vertec Session läuft. Falls ja, wird der Request dieser Session übergeben.
  • Falls noch keine entsprechende Session existiert, wird eine angelegt (bzw. aus dem Idle Pool genommen).
  • Eine XML Session hat einen Session Timeout von 5 Minuten. Wenn während dieser Zeit kein neuer Request für die Session empfangen wird, wird die Session beendet. On-Premises kann dieser Wert bei Bedarf im Vertec.ini angepasst werden.
  • Wenn die Session aufgrund des Timeouts beendet wurde, wird einfach eine neue Session gestartet. Dank den Idle Sessions ist die Verzögerung auch bei einer neuen Session minimal.

Mehrere Session Prozesse starten

Pro XML Session kann ein eigener Vertec Session Prozess gestartet werden, um Performanceprobleme mit laufenden Sessions zu vermeiden.

Dafür kann dem Authorization Header optional ein VertecSessionTag mit einem beliebigen String Wert (z.B. '1') mitgegeben werden. Es sind maximal 36 Zeichen erlaubt.

headers = {'Authorization': 'Bearer {}'.format(api_token), 'VertecSessionTag': '1'}

Für jede unterschiedliche Kombination von API Token und VertecSessionTag wird dann automatisch eine neue Session gestartet.

XML Request

Folgende Vorgänge sind via XML Request möglich:

Um Requests zu testen, stellt Vertec den Endpunkt /xml/query zur Verfügung. Eine genaue Beschreibung dazu finden Sie im Abschnitt Testen der XML Schnittstelle. Die nachfolgenden Beispiele sind deshalb so verfasst, dass Sie sie direkt in den Body Teil einfügen können. 

Objekte abfragen (Query)

Um Objekte mittels XML Message abzufragen, wird der Abfrage-Block in ein <Query>-Element verpackt.

Darin gibt es die Unterelemente:

  • <Selection>: Im Selection Element wird angegeben, welche Objekte abgefragt werden.
  • <Resultdef>: Im Resultdef Element wird angegeben, welche Informationen der selektierten Objekte zurückgeliefert werden sollen.

Die Response auf eine Abfrage (Query) wird in einem QueryResponse Element zurückgeliefert.

Selection

Im Selection Element werden die Objekte abgefragt. Darin können folgende Unterelemente verwendet werden:

Element Beschreibung Beispielcode
<objref>
Abfrage von Einzelobjekten

Mit dem <objref> Element können einzelne Vertec Objekte mittels ihrer Internen ID abgefragt werden.

In der gleichen Selection können nacheinander auch mehrere Vertec Objekte so abgefragt werden.

Für eine globale Abfrage via OCL oder SQL wird das <objref> Element weggelassen.

Einzelobjekt:

<Query>
    <Selection>
        <objref>676</objref>
    </Selection>
</Query>

Mehrere Einzelobjekte:

<Query>
    <Selection>
        <objref>676</objref>
        <objref>12345</objref>
    </Selection>
</Query>
<ocl>
Abfrage via OCL

Im <ocl> Element kann eine OCL Expression angegeben werden. Diese wird wie folgt angewendet:

  • Ist ein einzelnes <objref> Element angegeben, wird das OCL darauf ausgeführt.
  • Ist kein <objref> Element angegeben, wird das OCL global ausgeführt.
  • Sind mehrere <objref> Elemente angegeben, wird das OCL nicht ausgeführt.

Das Filtern und Sortieren der Ergebnisliste erfolgt direkt im OCL mit den gewohnten OCL Operatoren (->select(), ->orderby() etc.).

Achten Sie auf einen performanten Zugriff.

OCL auf ein <objref> Element:

<Query>
    <Selection>
        <objref>1206</objref>
        <ocl>ownprojects</ocl>
    </Selection>
</Query>

Globale OCL Abfrage:

<Query>
    <Selection>
        <ocl>projektbearbeiter->orderby(name)</ocl>
    </Selection>
</Query>
<sqlwhere>
Abfrage via SQL

Die Abfrage via SQL ist immer global und kann weder mit einer OCL Expression noch mit einem Einzelobjekt kombiniert werden. Sie dient dazu, gefilterte Listen performanceoptimiert direkt auf der Datenbank abzufragen. Für ungefilterte Listen (alle Objekte einer Klasse) verwenden Sie stattdessen die Abfrage via OCL.

Eine SQL Abfrage wird wie folgt aufgebaut:

  • <ocl>: Im Hilfselement <ocl> wird der Klassenname angegeben. Dieser wird immer Gross geschrieben. Zu Verfügung stehen alle Klassen im Vertec Model Browser, die im Feld Table Mapping ein OWN haben und also unter diesem Namen in der Datenbank zu finden sind.
  • <sqlwhere>: Im <sqlwhere> Element wird die WHERE-Klausel angegeben, also der Filter, der auf der unter <ocl> angegebenen Klasse angewandt werden soll.
  • <sqlorder>: Optional. Die Ergebnisliste aus <sqlwhere> kann mit dem <sqlorder> Element sortiert werden.

Der ausführende Bearbeiter muss über Administratorenrechte oder über das SQL Query Recht verfügen.

<Query>
    <Selection>
        <ocl>OffeneLeistung</ocl>
        <sqlwhere>fixedprice = 1</sqlwhere>
        <sqlorder>datum</sqlorder>
    </Selection>
</Query>

Resultdef

Im Resultdef Element werden via OCL die gewünschten Werte abgefragt. Diese werden dann pro Objekt der Selection zurückgeliefert. 

Als Basis für das OCL dient das Ergebnis respektive die Ergebnisliste der Selection. Um gültige OCL Expressions zu erstellen, muss man also wissen, von welchem Typ (Klasse) diese Ergebnisse sind. Darauf sind alle Members verfügbar, die auf der entsprechenden Klasse im Vertec Model Browser aufgelistet sind (auch berechnete Datenfelder (Derived Attributes)

Wie gewohnt in OCL können nicht nur einzelne Members abgefragt, sondern auch im Modell weiternavigiert und Werte berechnet werden. Bedenken Sie, dass die Abfrage für jedes Objekt der Ergebnisliste angewandt wird, und achten Sie auch hier auf einen performanceoptimierten Zugriff.

Eine komfortable Variante, gültige OCL Expressions zusammenzustellen, ist der OCL Expression Editor in den Listeneinstellungen einer Liste in Vertec, die Objekte des gleichen Typs enthält wie die Ergebnisse aus der Selection

Im Resultdef Element können folgende Unterelemente verwendet werden:

Element Beschreibung Beispielcode
<member>
Abfrage eines einzelnen Members

Hier wird in OCL ein Member des Resultat-Objekts angegeben.

Handelt es sich beim angegebenen Member um ein eigenständiges Objekt, wird davon die Vertec Objekt-ID zurückgeliefert (im Beispiel für das Member projekt). Es können beliebig viele Members aufgelistet werden.

<Query>
    <Selection>
        <ocl>Session.allInstances->first.login.ownprojects</ocl>
    </Selection>
    <Resultdef>
        <member>code</member>
        <member>betreffend</member>
    </Resultdef>    
</Query>
<expression>
Abfrage via OCL Expression

Für Bedingungen (if-then-else-endif), Berechnungen (mb1+mb2, ->sum etc.) oder um Werte eines verlinkten Objekts (Associations im Vertec Model Browser) auszugeben, wird das <expression> Element verwendet. Es enthält zwei Unterelemente:

  • <alias>: Hier kann man den Namen angeben, unter welchem der berechnete Wert ausgegeben wird. Es dürfen keine Leerschläge und Sonderzeichen verwendet werden. 
  • <ocl>: Das <ocl> Element enthält die OCL Expression
<Query>
    <Selection>
        <ocl>Session.allInstances->first.login.ownprojects</ocl>
    </Selection>
    <Resultdef>
        <member>code</member>
        <member>betreffend</member>
        <expression>
            <alias>OffeneLeistungen</alias>
            <ocl>offeneLeistungen.wertext->sum</ocl>
        </expression>
    </Resultdef>    
</Query>

Ein Resultdef Element muss nicht zwingend angegeben werden. Wird nur ein einzelner Wert angefordert, kann dieses Element auch weggelassen werden. Die (globale) Selection <ocl>projektbearbeiter->size</ocl> liefert beispielsweise die Anzahl Bearbeiter zurück. Die QueryResponse gibt dann <Value>Anzahl</Value> zurück.

Objekte erzeugen (Create)

Um ein Objekt zu erzeugen, wird ein Create Element verwendet.

Für jedes Objekt, das erzeugt werden soll, wird ein Unterelement mit dem <Klassennamen> des Objekts eingefügt.

Darin kann für jedes Member und jede Association, das geschrieben werden soll, ein Unterelement mit dem <membernamen> eingefügt werden.

  • Members: Bei Members wird darin der einzutragende Wert eingegeben. Achten Sie auf den Datentyp.
  • Associations: Bei Association muss das zu verlinkende Objekt in Vertec bestehen und bekannt sein.
    • Es wird ein Unterelement <objref> eingefügt, welches die interne ID des zu verlinkenden Objekts enthält.
 <Create>
    <OffeneLeistung>
        <bearbeiter><objref>1206</objref></bearbeiter>
        <projekt><objref>1195</objref></projekt>
        <minutenint>45</minutenint>
    </OffeneLeistung>
</Create>

Zur Verfügung stehen alle Klassen im Vertec Model Browser, die Persistent sind und kein Häkchen bei Abstract haben, und alle Members, die nicht Derived sind. Beachten Sie, dass Klassennamen immer Gross, Member- und Associations immer klein geschrieben werden.

Die Response auf einen Create Request wird in einem CreateResponse Element zurückgeliefert.

Objekte ändern (Update)

Um ein bestehendes Objekt zu ändern, wird ein Update Element verwendet.

Für jedes Objekt, das geändert werden soll, wird ein Unterelement mit dem <Klassennamen> des Objekts eingefügt. Darin gibt es folgende Unterelemente:

  • <objref>: Hier wird die interne ID des Objekts angegeben, das geändert werden soll. Wichtig ist, dass diese zuoberst angegeben wird, also vor den anderen Attributen, sonst werden die Änderungen nicht durchgeführt.
  • Für jedes Member und jede Association, die geschrieben werden soll, wird ein Element mit dem <membernamen> eingefügt:
    • Members: Bei Members wird darin der einzutragende Wert eingegeben. Achten Sie auf den Datentyp.
    • Associations: Bei Association muss das zu verlinkende Objekt in Vertec bestehen und bekannt sein.
      • Es wird ein Unterelement <objref> eingefügt, welches die interne ID des zu verlinkenden Objekts enthält.
 <Update>
    <Projektbearbeiter>
        <objref>1206</objref>
        <kuerzel>CKE</kuerzel>
        <eigProjekte><objref>1192</objref></eigProjekte>
    </Projektbearbeiter>
</Update>

Die Response auf einen Update Request wird in einem UpdateResponse Element zurückgeliefert.

Objekte löschen (Delete)

Um ein Objekt zu löschen, wird ein Delete Element verwendet.

Dieses enthält als Unterelemente die zu löschenden Objekte.

  • <objref>: Hier wird die interne ID des Objekts angegeben, welches gelöscht werden soll.
<Delete>
    <objref>12345</objref>
    <objref>25088</objref>
</Delete>

Die Response auf einen Delete Request wird in einem DeleteResponse Element zurückgeliefert.

XML Response

QueryResponse

Die Response für einen Query Request wird in einem QueryResponse Element zurückgeliefert. 

Dieses enthält folgende Unterelemente:

Rückgabewert Beschreibung Beispielresponse
Objekt
  • <Klasse>: Für jedes Objekt wird ein Element mit der Klasse des Objekts zurückgeliefert, mit folgenden Unterelementen:
Mit Resultdef Definition
  • <name>: Des Weiteren werden alle unter Resultdef angeforderten Werte als einzelne Elemente mit dem Namen des abgefragten Members/Association/Alias aufgelistet.
    • Falls es sich dabei um eigenständige Objekte handelt (z.B. bei Abfrage einer Association), wird von diesen die Objektreferenz (interne ID) in einem <objref> Unterelement zurückgeliefert.
<Envelope>
  <Body>
    <QueryResponse>
      <Projekt>
        <objid>1195</objid>
        <betreffend>Prozessberatung</betreffend>
        <code>PROCESS CONSULTING</code>
        <OffeneLeistungen>15’037.75</OffeneLeistungen>
      </Projekt>
      <Projekt>
        <objid>1192</objid>
        <betreffend>Laufende Betreuung</betreffend>
        <code>JOB MANAGEMENT</code>
        <OffeneLeistungen>16’644.85</OffeneLeistungen>
      </Projekt>
    </QueryResponse>
  </Body>
</Envelope>
Wert

Ist das Resultat des Query Requests kein Objekt, sondern ein Wert, wird dieser in einem <Value> Element zurückgeliefert, welches den abgefragten Wert enthält. 

  • Bei Boolean (True/False) Werten wird 1 für True und 0 für False zurückgeliefert.
<Envelope> 
  <Body> 
    <QueryResponse> 
      <Value>7</Value> 
    </QueryResponse> 
  </Body> 
</Envelope>
Kein

Gibt es keinen Rückgabewert, wird einfach ein leeres <QueryResponse /> Element zurückgeliefert. 

<Envelope> 
  <Body> 
    <QueryResponse/>
  </Body>
</Envelope>

Datumswerte werden im Format ISO 8601 zurückgeliefert.

CreateResponse

Die Response auf einen Create Request werden in einem CreateResponse Element zurückgeliefert.

Dieses enthält für jedes erzeugte Objekt folgende Unterelemente:

  • <Klasse>: Für jedes Objekt wird ein Element mit der Klasse des Objekts zurückgeliefert, mit folgenden Unterelementen:
    • <objid>: Liefert die interne ID des neu erzeugten Objekts
    • <isValid>: Gibt an, ob das erzeugte Objekt in Vertec gültig ist (1) oder nicht (0).
<Envelope>
  <Body>
    <CreateResponse>
      <OffeneLeistung>
        <objid>12019</objid>
        <isValid>1</isValid>
      </OffeneLeistung>
    </CreateResponse>
  </Body>
</Envelope>

Ungültige Objekte werden trotzdem erzeugt im System. Diese müssen aktiv ergänzt (Update) oder gelöscht (Delete) werden. Alternativ kann eine Vertec full-featured App geöffnet werden und die Einträge manuell bearbeitet werden resp. werden beim Schliessen der App automatisch gelöscht. 

UpdateResponse

Die Response auf einen Update Request wird in einem UpdateResponse Element zurückgeliefert, mit einem Unterelement:

  • <text>: Gibt an, wieviele Objekte geändert wurden.
    <Envelope>
      <Body>
        <UpdateResponse>
          <text>Updated 1 Objects</text>
        </UpdateResponse>
      </Body>
    </Envelope>

DeleteResponse

Die Response auf einen Delete Request wird in einem DeleteResponse Element zurückgeliefert, mit einem Unterelement:

  • <text>: Gibt an, wie viele Objekte gelöscht wurden.
    <Envelope>
      <Body>
        <DeleteResponse>
          <text>Deleted 1 Objects</text>
        </DeleteResponse>
      </Body>
    </Envelope>

Spezialfälle

Beschreibung Beispielcode
Zusatzfelder

Das Schreiben von Werten in Zusatzfeldern funktioniert gleich wie bei normalen Members. Als Element wird einfach der <name> des Zusatzfeldes eingesetzt.

Die verschiedenen Zusatzfeldarten werden via XML wie folgt geschrieben:

  • Zeichen, Text: Text als Wert übergeben, ohne Anführungszeichen
  • Boolean (Wahr/Falsch): 0 für Falsch, 1 für Wahr. Siehe auch Beschreibung unten.
  • Ganzzahl: Integer
  • Minuten: Integer
  • Festkommazahl: Zahl mit Dezimalstellen. Ohne Tausendertrennzeichen angeben. 
  • Datum: Format ISO 8601, siehe unten
  • Auswahl: Integer mit der Position in der Auswahlliste, beginnend mit 0

Die Abfrage von Zusatzfeldern erfolgt via OCL.

Zusatzfeld Projektstand auf einer Projektphase:

<Update> 
  <Projektphase> 
    <objref>5491</objref> 
    <Projektstand>1</Projektstand>
  </Projektphase>
</Update>
Schreiben von Keys/Tags

Für das Setzen von Keys und Tags via XML gibt es folgende Elemente:

  • <keyvalue> mit den Unterelementen <key> und <value>
  • <tag> mit den Unterelementen <add> und <remove>
<Update>
    <Projektbearbeiter>
        <objref>4019</objref>
        <kuerzel>ABC</kuerzel>
        <keyvalue>
            <key>ExternalId</key>
            <value>123465</value>
        </keyvalue>
        <tag>
            <add>selected</add>
        </tag>
    </Projektbearbeiter>
</Update>
Abfragen von Keys/Tags

Die Abfrage von bestehenden Keys und Tags erfolgt via OCL direkt auf den abgefragten Objekten. 

<Query>
    <Selection>
        <ocl>projektbearbeiter->select(hasTag('selected'))</ocl>
    </Selection>
</Query>
Einen Wert auf NULL setzen

Um einen Wert, der bereits gesetzt ist, wieder zu leeren (auf NULL setzen), können Sie dem Attribut einen leeren Wert zuweisen.

Im Beispiel wird die Tagespauschale auf dem Bearbeiter geleert.

<Update>
    <Projektbearbeiter>
        <objref>300</objref>
        <tagespauschaleext/>
    </Projektbearbeiter>
</Update>
Ja/Nein Werte (Boolean)

Ja/Nein-Werte (Booleans) werden mit 0 und 1 gesetzt:

  • 0: Nein
  • 1: Ja

Bei der Abfrage von Boolean-Werten gibt es einen Unterschied von eingebauten Feldern und Zusatzfeldern gibt. Eingebaute Boolean-Felder wie z.B. aktiv auf Projekten liefern 1 und 0, die Boolean-Zusatzfelder jedoch Y und N zurück.

Das Setzen erfolgt jedoch in beiden Fällen gleich, nämlich wie oben beschrieben mit 0 und 1.

<Update>
    <Projekt>
        <objref>2880</objref>
        <aktiv>1</aktiv>
    </Projekt>
</Update>

Benötigt man eine einheitliche QueryResponse, kann man bei Zusatzfeldern anstelle der einfachen <member>-Abfrage eine Expression angeben, die den Rückgabewert steuert:

<expression>
  <alias>myboolean</alias>
  <ocl>if zusatzfeldbool('myboolean') then 1 else 0 endif</ocl>
</expression>
MLString-Feld setzen

Bei MLString-Feldern braucht es nach Sprache und Begriff jeweils einen "record separator" mit dem Code 30 (Hex 1E). Dafür wird die XML Entity &#30; eingesetzt. 

Es können keine einzelnen Sprachen gesetzt werden, es werden immer alle Sprachen gesetzt. Gibt man also eine der Sprachen nicht an, ist sie nachher leer, auch wenn vor dem Update Request etwas angegeben war. Beachten Sie dazu folgende Anmerkungen:

  • Der Begriff ist in allen Sprachen gleich: 
    • Nur den NV (Native) setzen: NV&#30;Projektidee&#30;
  • Der Begriff ist in verschiedenen Sprachen unterschiedlich:
    • Nur den NV (Native) Begriff setzen (siehe oben) und, falls der Begriff nicht schon automatisch übersetzt wird, einen Übersetzungseintrag in Vertec erfassen, um den Begriff in die anderen Sprachen zu übersetzen.
    • Alternativ NV setzen sowie die benötigten Sprachen (DE, DD, EN, IT, FR), in denen der Begriff vom NV abweicht: NV&#30;Projektidee&#30;EN&#30;Project idea&#30;IT&#30;Idea progetto&#30;FR&#30;Idée projet&#30;
<Update>
    <Report>
        <objref>34741</objref>
        <designation>NV&#30;Projektidee&#30;EN&#30;Project idea&#30;</designation>
    </Report>
</Update>
Datumswerte setzen

Datumswerte müssen unabhängig von den Regionaleinstellungen im Format ISO 8601 angegeben werden.

  • Datum: YYYY-MM-DD
  • Datum und Zeit: YYYY-MM-DD HH:MM:SS
<Update>
  <OffeneLeistung>
    <objref>34743</objref>
    <datum>2025-07-01</datum>
  </OffeneLeistung>
</Update>

Beispielanwendungen

Anwendung Request Beispielcode
Firma mit Referenznummer

Das Feld Referenznummer auf der Firma ist ein String-Feld, kann also sowohl Text als auch Ziffern enthalten.

Query
<Query>
  <Selection>
    <ocl>Firma</ocl>
    <sqlwhere>referenz like '123456789'</sqlwhere>
  </Selection>
</Query>
Firma erzeugen

Die Sprache der Firma wird mit einem Integer angegeben:

  • 0: DE
  • 1: EN
  • 2: FR
  • 3: IT

Die Adresse sowie die Kommunikationsmittel sind eigenständige Objekte und müssen separat geschrieben werden (siehe unten). Die CreateResponse liefert die interne ID der neu erstellten Firma zurück, damit kann dann weitergearbeitet werden. 

Create
<Create>
  <Firma>
    <name>Goldhaus AG</name>
    <zusatz>Standort Testenhausen</zusatz>
    <referenz>123456789</referenz>
    <sprache>1</sprache>
    <betreuer><objref>1206</objref></betreuer>
  </Firma>
</Create>
Adressobjekt ermitteln

Die Adresse resp. das entsprechende Adressobjekt wird beim Erzeugen eines Adresseintrags automatisch von Vertec angelegt. 

Um das Adressobjekt zu ermitteln, fragen wir - z.B. auf der neu erstellten Firma - nach defaultadresse.adresse (siehe auch UML Modell Adressen) und erhalten als Response die interne ID des Adressobjekts.

Query
<Query>
  <Selection>
    <objref>4562</objref>
    <ocl>defaultadresse.adresse</ocl>
  </Selection>
</Query>
Adressdaten schreiben

Auf dem ermittelten Adressobjekt können wir nun die Adresse schreiben.

Update
<Update>
  <Adresse>
    <objref>2865</objref>
    <adresse>Hauptstrasse 1</adresse>
    <plz>9999</plz>
    <ort>Testenhausen</ort>
    <kanton>Zürich</kanton>
    <land>Schweiz</land>
  </Adresse>
</Update>
Kommunikationsmittel erstellen

Um ein Kommunikationsmittel (Klassenname: KommMittel) auf einem Adresseintrag zu erzeugen, müssen zwei Dinge vorgängig bekannt sein:

Folgende Felder werden geschrieben:

  • typ: <objref> mit der internen ID des KommMittelTyps
  • eintrag: <objref> mit der internen ID des Adresseintrags
  • zieladresse: Die eigentliche Telefonnummer resp. E-Mail-Adresse, URL, etc.
  • bezeichnung: Optional. Wird in der Liste der Kommunikationsmittel auf der Adresse angezeigt und dient der Übersichtlichkeit.

Soll das neu erzeugte KommMittel auf dem Adresseintrag als Standard markiert werden, muss es zusätzlich je nach internem Typ des KommMittelTyps mit dem Adresseintrag wie folgt verlinkt werden:

  • T: fromDefaultTelefon
  • M: fromDefaultMobile
  • E: fromDefaultEmail
  • H: fromDefaultHomepage
  • L: fromDefaultLinkedIn
  • F: fromDefaultFax

Zu beachten: Falls bereits ein KommMittel dieses Typs als Standard markiert ist auf dem Adresseintrag, wird dieses dadurch als bisheriger Standard entfernt.

Create

Abfrage des Typs, hier 'T' für Telefon:

<Query>
  <Selection>
    <ocl>kommMittelTyp->select(internerTyp='T')</ocl>
  </Selection>
</Query>

KommMittel erstellen und als Standard verlinken:

<Create>
  <KommMittel>
    <typ><objref>142</objref></typ>
    <eintrag><objref>4562</objref></eintrag>
    <zieladresse>043 219 87 65</zieladresse>
    <bezeichnung>Zentrale</bezeichnung>
    <fromDefaultTelefon><objref>4562</objref></fromDefaultTelefon>
  </KommMittel>
</Create>
Kontakt erstellen
 
<Create>
  <Kontakt>
    <firma><objref>4562</objref></firma>
    <name>Duck</name>
    <vorname>Donald</vorname>
    <gender>male</gender>
  </Kontakt>
</Create>
Ein Projekt einem Stichwortordner zuordnen

Weist einem Projekt (hier mit interner ID 1170) einen Stichwortordner (hier mit interner ID 31426) zu.

 
<Update>  
  <Projekt>
    <objref>1170</objref>
    <ordner><objref>31426</objref></ordner>
  </Projekt>
</Update>

Testen der XML Schnittstelle

Zum Testen von XML Requests steht eine einfache Web-Oberfläche unter /xml/query zur Verfügung. Diese Endung fügen Sie im Browser hinten an Ihre Vertec URL an. 

Beachten Sie bitte, dass Sie damit auf Ihre reale Datenbank zugreifen und sich Datenänderungen auf Ihre realen Daten auswirken. Wir empfehlen, für das Testing eine unabhängige Testinstallation einzurichten.

Im Feld API Token wird das API Token eingegeben.

Im Feld XML Request wird das Body-Element des XML Requests eingegeben.

Die XML Response wird unterhalb dargestellt nach Klick auf Submit Request:

Netherlands

United Kingdom