Allgemeines
Kommunikationswege & Meldungsfluss
Grundsätzlich wird zwischen zwei Kommunikationswegen unterschieden. Jeder Meldungstyp kann genau einem Kommunikationsweg zugeordnet werden. Der Eingang (Incoming) und Ausgang (Outgoing) von Meldungen ist hierbei eine Frage der Perspektive.
Typ | Sender/Auslöser | Empfänger | Bedeutung | Einschränkung |
|---|---|---|---|---|
Incoming Message | Kundensystem | BAZG | Eine Nachricht vom Verfahrensbeteiligten an das BAZG. | Eine Meldung, die von einem Gegenüber übermittelt wird (put), kann nur von einer Fachanwendung seitens BAZG abgerufen werden (Incoming). |
Outgoing Message | BAZG | Kundensystem | Eine Nachricht vom BAZG an den Verfahrensbeteiligten. | Eine Meldung, die eine BAZG-Fachanwendung für Gegenüber übermittelt wird, kann nur von einem Gegenüber via get abgerufen werden (Outgoing). |
Formate
Die Meldungen werden im xml-Format übermittelt. Die Struktur einer Meldung ist wie folgt dokumentiert:
als Schema-Diagramm (pdf)
in Tabellenform (xlsx)
als xsd (zwecks Validierung der einzelnen Meldung im xml-Format)
als xml (Beispiel)
xsd Prinzipien
xsd Konventionen
Die xsd Schemata können zwei verschiedenen Gruppen zugewiesen werden.
Kategorie | Beschreibung |
|---|---|
geteilte xsd | Sie enthalten Definitionen zu einfachen (Datenfelder) und komplexen (Datengruppen) Typen, die in mehreren Nachrichten vorkommen. |
spezifische xsd | Dabei handelt es sich um die strukturelle Definition einzelner Meldungen. Sie referenzieren dabei auf die geteilten xsd, damit diese verwendet werden können. |
Datenstruktur der xsd
Die folgende Auflistung zeigt die Abhängigkeiten der einzelnen Schemata auf, die nachfolgend detailliert erläutert werden.
Bereich | Schemata | Filename | Beschreibung |
|---|---|---|---|
Passar | Simple Types | stypes_ch.xsd | Datenfelder: Enthält die Definition zum Typ, Format und Musterdefinition |
Common Complex Types | ctypes_ch.xsd | Datengruppen: Enthält die Definition zu den Datengruppen. Datengruppen die in mehreren Meldungen vorhanden sind, werden lediglich in einer Definition aufgeführt. In beiden Fällen gibt es Informationen zu welche Datenfelder sind enthalten, die Angaben zu Pflichtfeldern, maximale Wiederholungen, Regeln & Bedingungen und Codelisten. | |
Header Types | htypes_ch.xsd | Enthält die Definitionen der Datenfelder und -gruppen für das technische Kopfelement und kommt in allen Meldungen vor. | |
Technical Codelist | tcl_ch.xsd | Gibt den Typ von Datenfeldern an inkl. einer Aufzählung der möglichen Werte. | |
Chartera Ouput | All Types |
|
Um die Schemata miteinander zu verknüpfen, wird das XML-Element <import> verwendet.
Beispiel xsd Beschränkung
xml Struktur
Eine Meldung besteht aus Datengruppen und Attributen.
Datengruppen (Data Group)
Eine Datengruppe besteht aus einer oder mehreren Daten(Unter)gruppen (Verschachtelung) und/oder aus einem oder mehreren Attribute.
Namenskonventionen xml-Tag
Wenn es ein Acronym ist, dann alles Gross, sonst PascalCase Format. Beispiele:
GNSS → GNSS
Goods Shipment → GoodsShipment
Transport Equipment → TransportEquipment
Additional Supply Chain Actor → AdditionalSupplyChainActor
Datentyp
Eine Datengruppe ist keinem Datentyp zugewiesen.
Art der Erforderlichkeit
Folgende Ausprägungen sind möglich:
R (required): muss immer/in jedem Fall angegeben werden
O (optional): ist optional - sind Daten vorhanden, sollten diese der Vollständigkeit halber angegeben werden
D (dependent): kann entweder R, O oder N sein - ist abhängig von den Regeln und Bedingungen und wechselt entsprechend den Zustand
N (nicht anwendbar): darf nicht vorhanden sein
Hinweise
In der Spezifikation einer Meldung ist eine Datengruppe hellblau markiert.
Die Namen der Datengruppen sind nicht einzigartig und können in unterschiedlichen Meldungen vorkommen. Deren Inhalt kann sich aber von Meldung zu Meldung unterscheiden und muss inhaltlich nicht übereinstimmen.
Die übergeordnete Datengruppe ist jeweils anzugeben, wenn eine untergeordnete ausgefüllt wird.
Einer Datengruppe werden keine, eine oder mehrere Rules & Conditions zugewiesen.
Attribut (Data Item)
Ein Datenfeld enthält die eigentliche Information.
Namenskonventionen xml-Tag
Wenn es ein Acronym ist, dann alles Gross, sonst camelCase Format. Beispiele:
Declaration date → declarationDate
MRN → MRN
Presentation notification rejection date → presentationNotificationRejectionDate
Datentyp & Länge
Jedes Datenfeld hat ein zugewiesenes Format und eine bestimmte Länge:
numerisch
alphanumerisch
dezimal
Zeit
Datum
Zeitdatum
Generelles zur Längenangabe
Zwischen dem Typ und der Längenangabe können zwei Punkte stehen. Dies bedeutet, dass die Anzahl Zeichen flexibel ist, aber maximal.
Ein Komma bei der Längenangabe gibt an wie viele Zeichen vor und nach dem Komma stehen dürfen (sofern notwendig). Dies ebenfalls in Verbindung mit der flexiblen Anzahl (sofern 2 Punkte vorhanden sind) und dem Maximum.
Beispiel | Beschreibung |
|---|---|
a1 | 1 Buchstabe, fixe Länge |
n2 | 2 Zahlen, fixe Länge |
an3 | 3 alphanumerische Zeichen, fixe Länge |
a..4 | bis zu 4 Buchstaben |
n..5 | bis zu 5 Zahlen |
an..6 | bis zu 6 alphanumerische Zeichen |
n..7,2 | bis zu 7 Zahlen Total und davon bis zu 2 Zahlen nach dem Komma |
Numerische Felder
Die Inhalte sind positive Ganzzahlen oder positive Dezimalzahlen, sofern durch die Codelisten oder eine Regel nicht weiter spezifiziert.
Für die Dezimalzahlen ist der Punkt (.) zu verwenden. Weitere Zeichen sind nicht erlaubt.
Die Zahl Null (0) darf den Ganzzahlen nicht vorangestellt werden.
Dezimalzahlen sind nur zu verwenden, wenn die Präzisierung notwendig ist. Vor und nach dem Punkt ist mindestens eine Zahl anzugeben.
Beispiele für die Angabe “n..11,3”
Input | Validierung | Begründung |
|---|---|---|
12345678.123 | Gültig | - |
123456789.123 | Ungültig | zu viele Zeichen vor dem Punkt und im Total |
12345678.1234 | Ungültig | zu viele Zeichen nach dem Punkt und im Total |
0123 | Ungültig | Vorangestellte Null ist nicht erlaubt |
+123 | Ungültig | Pluszeichen ist nicht erlaubt |
-123 | Ungültig | Minuszeichen ist nicht erlaubt |
1,234 | Ungültig | Komma ist nicht erlaubt |
.3 | Ungültig | kein Zeichen vor dem Punkt |
12345. | Ungültig | kein Zeichen nach dem Punkt |
3 | Gültig | - |
3E1 | Ungültig | nur Zahlen und Dezimalpunkt ist erlaubt |
12345678901 | Gültig | - |
Textfelder
Führende oder nachfolgende Leerzeichen sind nicht erlaubt.
Zeilenvorschübe (Tabulator) dürfen nicht verwendet werden.
Aufgrund des xml-Formates sind gewisse Zeichen nicht erlaubt, da diese als Steuerzeichen verwendet werden und es zu Fehlern kommen kann. Diese sind wie folgt umzuwandeln:
Zeichen | Entität | Bemerkung |
|---|---|---|
& | & | MUSS umgewandelt werden |
> | > | Soll umgewandelt werden |
< | < | MUSS umgewandelt werden |
" | " | Soll umgewandelt werden |
' | ' | Soll umgewandelt werden |
& wird nicht als 5 Zeichen gewertet, sondern als 1 Zeichen. Dies gilt auch für die anderen.
Datum & Zeit Felder
Für die DateTime und Time Felder ist die UTC Zeit zu verwenden. Das Datum ist analog der UTC Zeit anzugeben, siehe folgendes Beispiel.
Zeit in der Schweiz: 27. Oktober 2021 7:48 (UTC+1)
Folgende Zeit ist zu übermitteln: 27. Oktober 2021 6:48 (UTC)
Datentyp | Regular Expression |
|---|---|
Date | YYYY ‘-‘ MM ‘-‘ DD \d{4}-\d{2}-\d{2} |
Time | hh ‘:’ mm ‘:’ ss \d{2}:\d{2}:\d{2} |
Date/Time | YYYY ‘-‘ MM ‘-‘ DD ‘T’ hh ‘:’ mm ‘:’ ss \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} |
Der Separator ‘T’ weist darauf hin, dass nach dem Datum noch eine Zeitangabe folgt. Ganze Sekunden ist die kleinste erlaubte Einheit.
Art der Erforderlichkeit
Folgende Ausprägungen sind möglich:
R (required): muss immer/in jedem Fall angegeben werden
O (optional): ist optional - sind Daten vorhanden, sollten diese der Vollständigkeit halber angegeben werden
D (dependent): kann entweder R, O oder N sein - ist abhängig von den Regeln und Bedingungen und wechselt entsprechend den Zustand
N (nicht anwendbar): darf nicht vorhanden sein
Hinweise
In der Spezifikation einer Meldung ist eine Datengruppe grau markiert.
In einzelnen Fällen ist der Wert vorgegeben. Die vorgegeben Werte sind in der jeweiligen Codeliste definiert.
Die Felder sind sprachunabhängig, da sie UTF-8 codiert sind.
Einem Attribut werden keine, eine oder mehrere Rules & Conditions zugewiesen.
xml Message Header
Folgende Informationen müssen pro Meldung im Message Header übermittelt werden:
Attribut | Beschreibung |
|---|---|
Message Sender and Message Recipient | Beim Sender der Meldung ist die Geschäftspartner-ID (n10) anzugeben. Beim Empfänger ist der Wert «PASSAR.CH» anzugeben (Incoming Message). |
Message Type | Meldungstyp |
Message Timestamp | aktueller Zeitstempel |
Message Identification | Jede Meldung benötigt eine eindeutige ID. Bei einem Retry (z.B.: bei einem technischen Problem wie Timeout) einer identischen Meldung muss die gleiche MessageId verwendet werden. Messages mit unterschiedlichem Inhalt und gleicher MessageId werden abgelehnt. Als eindeutige MessageId kann eine UUID in der Version 4 verwendet werden. |
Correlation Identifier | Handelt es sich bei der Nachricht um eine Fehler- oder Antwortmeldung ist die Message Identification der verursachenden Meldung in das Feld Correlation Identifier einzutragen, damit diese eindeutig zugewiesen werden können. |
Anfrage und Antwort Header Beispiel
Zu jeder Meldung des System Gegenüber wird von Passar eine Antwort Meldung erstellt. Die Message Header Informationen diesen dazu die Meldungen zu korrelieren.
Nr | Beschreibung |
|---|---|
1 | Initiale Waren Durchfuhr Meldung |
2 | Meldung ist aktzeptiert (ACCEPTED) oder Abgelehnt (REJECTED) Grund fachliche Fehler. |
Q&A