Biztalk EDI - View final outbound X12 interchange - biztalk

I've been running Biztalk 2004 with the Covast EDI accelerator since 2004. I'm currently upgrading to Biztalk 2013 R2 and having difficulty viewing the final outbound interchange document for an X12 document. My final destination is an AS2EDISend port.
I can see the interchange information (sender/receiver/control ID) in the report "EDI Interchange and Correlated ACK status". I can see more information by viewing the "Interchange Status and ack Details" screen. I can view the transaction set. I can view the transaction set details and from there get the final transaction set (ST to SE segment) in raw ASCII format.
But I can't see the raw final outbound interchange complete with the ISA/GS segments.
I do have tracking turned on and when I look at the tracked message events, I can see receive/send events for the AS2EDI pipeline. When I look at the message on the receive event, it's the XML representation of the transaction set. When I look at the message on the send event, it's already been AS2 encoded and I'm unable to view the raw ASCII EDI file complete with ISA/GS segments.
Am I missing something? Is there somewhere else to look? Will I have to configure a secondary send port which only does EDISend and write to my filesystem and maintain/archive that information myself?

The ISA and GS segments will be promoted into the context of the message, as ISA_String and GS_String respectively. The individual segment values are also promoted as ISA01, ISA02, etc. and GS01, GS02, etc.
Since you're using AS2, I think the easiest solution would be to create a send port group, use your existing send port with AS2 in it, and another SendPort with EdiSend using the FILE adapter. Another option would be to add a custom pipeline component in the Encode stage that would archive the results from the EDI Assembler - which would be more efficient but more work as well.

if you simply want to see the interchange message for testing/develop propose, Put the send port to stop state, the message in this port will suspend. then you can view/save the message in admin console.
if you need a solution to "see" the interchange message in operation level. a second send port is an option.

Related

Simplest possible BAM Scenario

I’m trying to set up a very simple BAM scenario within BizTalk Server 2013R2 upon which to build, involving tracking just the time of all incoming messages processed by a port.
To this end I have :
Within Excel, created an Activity Definition (called
SimpleReceiveTest) containing a single Item called ReceiveTime of
type milestone (date/time), and a View Definition (also called
SimpleReceiveTest) containing just this Activity Definition and Item.
Imported this BAM definition spreadsheet using bm.exe
Added view rights to SimpleReceiveTest again using bm.exe
Launched the Tracking Profile Editor, imported the BAM Activity
Definition, and mapped ActivityID = MessageID and ReceiveTime =
PortStartTime by drag and drop from the Messaging Property Schema, as
shown below :
Set the Port Mappings for MessageID and PortStartTime to relate to a
test Receive Port ReceivePort1 that I am using for testing. This is
using a pass-through pipeline.
Saved and applied the above Tracking Profile
It is my understanding that for any messages received on port ReceivePort1 I should now get a tracking activity created. However this is not happening – there are no records in any of the BAM tables/views and no data is available within the BAM Portal.
I have tried restarting the hosts, and have verified that the TDDS_FailedTrackingData table is empty, there is nothing relevant in the event log, a Tracking host is running and the SQL Agent Jobs are running. I have also tried running these jobs manually.
Have I missed something, and am I correct in my expectation that this simple scenario should create tracked activities for any messages passing through the Receive Port? If so what can I try to further diagnose this?
Now fixed - it's actually a bug in vanilla BizTalk 2013R2 when using a standard pipeline that has been fixed in CU2.
FIX: BAM tracking doesn’t work when you use the XMLReceive or a custom pipeline in BizTalk Server

Subscribe to all messages in BizTalk for logging

I want to create a send port that writes all messages going in and out of BizTalk to file.
My organization is using Splunk. Splunk will import data from the file directory to make sense of the various messages.
Is it possible to create filter in a send port that subscribes to "everything"? I could solve this by applying filter for each message type in my system. However, there is a lot of messages going back and forth and I'm wondering if there a simpler solution?
I'm using BizTalk 2013.
Yes, just filter on message type like you said, but rather than selecting = and specifying the message type, just select Exists. That will then match any message that has a message type.
EDIT:
As Johns-305 has pointed out if you have any messages that don't have a message type (e.g. pass through receive locations) you may want to pick BTS.MessageID as that will always exist for a message in the message box.

BizTalk 2013 log file to debug EDI application

I am new to BizTalk. I wrote an application to receive an EDI 850 (Purchase Order) and to output a corresponding xml file in a separate folder location.
In the project I deployed to biz talk I have an 850 schema, my result xml schema, a map from the original EDI 850 to my new xml schema, and a pipeline with a flat file assembler pointing to my new schema.
I set it up like what is explained in the following tutorial: http://msdn.microsoft.com/en-us/library/bb226541.aspx. I did run through this tutorial first and it worked for me.
I dropped the edi file into my receive folder and it is picked up. But my result file in the send to folder is empty.
The event viewer does not show any errors.
I would like to know if there is a log file that would show where something may have been configured incorrectly.
To RECEIVE an EDI file, you need a receive pipeline with an EDI disassembler.
The EdiReceive pipeline in the EDI BizTalk application is what you are looking for most likely. By default this pipeline does the necessary tracking, so you should be able to see in the "Tracked Message Events".
You should always try to do it step by step:
EdiReceive disassemble to XML file and subscribe to that file using a send port.
Once this works, try mapping the result with a 'Test Map' using VS. You might notice you did something wrong there.
Once this works, deploy your mapping to BizTalk and set it in the send port as an outbound map, so it gets executed.
Hope this helps.
Use the BizTalk Server Administration Console and look at Tracked message events, that should show you if BizTalk received it and where it went.

Send X12 AS2 Document with BizTalk 2013

I asked a question about EDI before EDI X12 Implementation with C#
And i'm need help again. We have decided to use BizTalk 2013, i was able to install BizTalk 2013, i need some assistance.
Our partner sent a document about AS2 Trading Partner Setup and some certificates for both production and test enviroment. The information in this document is:
AS2 Identifier and URL
MDN: SHA1
Encryption Algorithm: Triple DES
MDN Delivery Type (Synchronous/Asynchronous):
Synchronous (Asynchronous also supported)
Request Signed Receipt: Yes
Software: Cyclone Interchange
Payload Security Type (e.g., Signed, SignedAndEncrypted, etc.): SignedAndEncrypted
I read the tutorial below and try to integrate to our solution
http://msdn.microsoft.com/en-us/library/bb727687(v=bts.80).aspx
Steps i did;
Create Visual Studio Project that contains X12 850 document schema and deploy it.
Created one way receive port to receive edi document we create.
Install the certificate to Local computer > Other people
Created static solicit-response send port to send edi document to our partner and select the certificate for encrypt message.
Created parties for us and for our partner.
Created agreement between us and our partner. Select AS2 for protocol.
I did following changes in "Us > Our Partner" tab.
In Acknowledgements(MDNs) page, i selected Process inbound MDN into MessageBox for routing/delivery options and Request MDN boxes.
In Validation page i selected Message should be encrypted and DES3.
In Send Ports i selected port that i created.
Now when i copy file to receive port i created, BizTalk gives an error like this:
The AS2 Decoder encountered an exception during processing. Details of the message and exception are as follows: AS2-From:"" AS2-To:"" MessageID:"" MessageType: "unknown" Exception:"An AS2 message was received that did not contain the AS2-From header."
My test EDI document looks like (I tried with header information, and without header, results are same)
Mime-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
AS2-From: ZZUS
AS2-To: ZZTHEM
AS2-Version: 1.0
Message-ID: AS2Message-001
ISA*00* *00* *ZZ*US *ZZ*THEM
*130530*1244*U*00401*00001234*0*P*:
GS*PO*US*THEM*20130530*1244*1234*X*004010
ST*850*1234
BEG*00*SA*PO1234**20130530**ZZ
ITD*ZZ***20080101*0**0*******1
DTM*002*20130615
N1*ST*US*92*1426136
N3*6719 THEALL RD STE B
N4*HOUSTON*TX*77066-1215*US
PER*ZZ*No Contact specified
PO1*1*1*CA***VN*MSC097030
PID*F****HAND SANITIZER,EPI-CLENZ,4 OZ,70% ETHYL
CTT*1
SE*44*1234
GE*1*1234
IEA*1*00001234
Btw, i'm creating document by C# code, is there any easy way BizTalk provides to create/read X12 documents like this?
Any help would be appreciated.
Thanks.
With any EDI application worth its salt (and I wouldn't put BizTalk in that category), you should be able to create a map. With all the abstraction layers that BizTalk uses, you should be able to use the various "adapters", including the EDI adapter to create a "map". The map should allow you to transform your source to a target, and then connect to another adapter to control workflow and delivery.
Here is a link to an example workflow for you: http://www.nullskull.com/a/1339/using-edi-adapter-to-sendreceive-po-within-trading-partners.aspx

Storing or looking up ISA numbers with BizTalk EDI

My company uses BizTalk for our EDI and AS2 communications. One periodic issue is that a VAN or similar partner we transmit with will want to know whether we received a file by it's ISA #. We currently do use the ISA # for routing within our ports, but I can't seem to find anywhere that this information is stored in BizTalk. Is there a way to look up an EDI message that BizTalk recieved by ISA#? Or perhaps someway I could get a hold of it and store it on my own?
If you're not explicitly using Business Activity Monitoring (BAM) to track this, you may be able to use message tracking.
If you have:
message tracking turned on for the message properties at a point in processing the messages when the ISA number is used, and
if the ISA number is promoted in a published schema (which I'm guessing it is, if you're using the out-of-the-box EDI stuff)
...then you could use the admin console to look for tracked messages with that schema and based on the particular field in the schema (e.g., EDI.ISA08 or EDI.ISA06). Of course, if you are mapping the ISA# to a particular party through your BizTalk configuration, then you would just need to search for Tracked Message Events where the Party Name equals the name you configured for that ISA#.
There is also built-in EDI tracking (see http://msdn.microsoft.com/en-us/library/bb226464(v=bts.10).aspx), with its own reports, but I'm not familiar with it enough to say whether or not it'll give you exactly what you need.
Otherwise, you will want to look at setting up BAM to save the ISA info that you need.
These fields are available inside the Biztalk message if you do EDI receive.
msgIn(EDI.ISASegment) contains all ISA segments. Then you can do substring on control numbers and then put it in your outgoing filename:
ctrlnum (variable) = msgIn(EDI.ISA13)
newfilename = FILE.ReceivedFileName + ctrlnum ;
This way each control number will show up in your filename and you don't even need to open the file or check tracked messages.

Resources