quiNews

Was Sie Gutes mit uns verbinden können

quiTeq-Tipp: Die Tücken von BizTalk EDIDataValidation in Verbindung mit InterchangeXML

Wir hatten vor kurzem den Wunsch eines Kunden, im PCI- Segment den Wert „33E“ einzutragen. Das Ganze sollte im PAC-Segment folgendermaßen aussehen: „'PAC+422'PCI+33E'“. Wir wollten das dann schnell mappen und haben festgestellt, dass der Wert „33E“ im EDIFACT-Standard nicht erlaubt ist. Was macht man dann normarlerweise? Man schaltet die Validierung in EDISend der EDISend-Pipeline aus. Gesagt, getan. Jedoch ist das nur die halbe Miete. Warum seht ihr in den folgenden Absätzen.

BizTalk Ausganssituation (Bindings können runtergeladen werden, falls ihr das auch ausprobieren wollt)
 

BizTalk Application:      EDI Validation Testing
References:                  BizTalk EDI Application

Receive Port:                RP.EDITesting.XML
Receive Location:         RL.EDITesting.XML.File
Receive Pipeline:          XMLReceive

Send Port:                    SP.EDITesting.EDIFact.File
Send Pipeline:              EdiSend
Filters:                         BTS.ReceivePortName == RP.EDITesting.XML
 

Dateien die zum Testen verwendet werden

Es werden insgesamt 4 Dateien zum Testen verwendet:

http://schemas.microsoft.com/Edi/Edifact#EdifactInterchangeXml

http://schemas.microsoft.com/Edi/Edifact#EdifactInterchangeXml

Im ersten Teil des Tests ist die die Validierung in der EDISend-Pipeline eingeschaltet:

Wenn wir jetzt die 2 validen und die zwei nicht validen Dateien in die ReceiveLocation legen, erwarten wir zwei erfolgreich verarbeitete Dateien und zwei Dateien die aufgrund von Validation Errors nicht verarbeitet werden konnten:

Im out Verzeichnis landen wie erwartet zwei EDI-Files:

Und zwei Files bleiben wie erwartet im BizTalk „hängen“ und sind suspended aufgrund von nicht validen Daten.

Im zweiten Teil des Tests schalten wir die Validierung in der SendEDI-Pipeline aus.
Vor dem zweiten Testdurchlauf wird der BizTalk Server und das Ausgangsverzeichnis gesäubert.

Es werden dieselben Testdaten verwendet:

Nachdem man die Daten in das Eingangsverzeichnis gelegt hat, würde man erwarten, dass alle 4 Dateien verarbeitet werden, da man ja die Validierung ausgeschaltet hat.

Es landen jedoch nur 3 Files im Ausgangsverzeichnis

Was ist denn im BizTalk passiert?

Komischerweise immer noch derselbe Fehler ☹, obwohl die Validierung ausgeschaltet wurde. ABER das gilt nur für die InterchangeXML.

Der Kunde wollte aber immer noch die „33E“ übertragen. Die Lösung ist ein Workaround. Entweder das Schema anpassen und „33E“ auch erlauben oder die Dateien debatchen und einzeln verarbeiten.

Have Fun,

Ugur

© QUIBIQ GmbH · Impressum · Datenschutz