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:
- Valide einzelne DESADV mit dem Wert „1“ im PCI-Segment
- MessageType: schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006
- Valide Liste von DESADVs mit dem Wert „1“ im PCI-Segment
- MessageType:
http://schemas.microsoft.com/Edi/Edifact#EdifactInterchangeXml
- Invalide einzelne DESADV mit dem Wert „33E“ im PCI-Segment
- MessageType: schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006
- Invalide Liste von DESADVs mit dem Wert „33E“ im PCI-Segment
- MessageType:
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