How to archive incoming message at Receive Port before inbound mapping?
-
Wednesday, September 19, 2012 4:03 AM
I have a receive port with few inbound mappings, receive location under the receive port is using XMLReceive pipeline.
I want to get a copy of the original message before it reaches the pipeline and inbound mapping.
But the problem is the original xml message does not have namespace in the xml.
I tried filter BTS.InboundTransportLocation==C:\BizTalk\*.xml and BTS.InboundTransportType==FILE, neither of them works.
Any good suggest?
Thank you.
All Replies
-
Wednesday, September 19, 2012 4:44 AMModerator
You can enable the tracking on the receive port. You can select the following option:
Track Message Bodies - Request message before port processing
Or alternatively you can create/use the pipeline component in decode stage as one contributed by Dan Rosanova here
Please mark the post answered your question as answer, and mark other helpful posts as helpful, it'll help other users who are visiting your thread for the similar problem, Regards -Rohit Sharma (http://rohitt-sharma.blogspot.com/)
- Proposed As Answer by Christophe BRANDO Wednesday, September 19, 2012 6:09 AM
-
Wednesday, September 19, 2012 12:36 PM
It is typically done with a custom pipeline component, which either you write or buy - I have not used this one, but I know the author - http://www.atomic-scope.com/
Bill Chesnut | BizTalk Server MVP | Mexia Consulting | Melbourne Australia
http://www.biztalkbill.com
Please indicate "Mark as Answer" if this post has answered the question. -
Wednesday, September 19, 2012 9:42 PM
You can enable the tracking on the receive port. You can select the following option:
Track Message Bodies - Request message before port processing
Or alternatively you can create/use the pipeline component in decode stage as one contributed by Dan Rosanova here
Please mark the post answered your question as answer, and mark other helpful posts as helpful, it'll help other users who are visiting your thread for the similar problem, Regards -Rohit Sharma (http://rohitt-sharma.blogspot.com/)
Use tracking to get a copy of message is not really good when you have thousand messages a day.
I read from this I thought Message GUID 1 should get saved to message box, which must be able to use filter to get a copy at send port.
Any idea why BTS.InboundTransportLocation and BTS.InboundTransportType do not work in my case?
Thank you.
-
Thursday, September 20, 2012 7:33 AMModerator
I want to get a copy of the original message before it reaches the pipeline and inbound mapping.
I tried filter BTS.InboundTransportLocation==C:\BizTalk\*.xml and BTS.InboundTransportType==FILE, neither of them works.
I would like to clarify that the above procedure will not provide you the original message instead you will get the output of inbound map. If you don't want to use the tracking then you can use the pipeline component in decode stage as mentioned by me and Bill has also share another link.
Please mark the post answered your question as answer, and mark other helpful posts as helpful, it'll help other users who are visiting your thread for the similar problem, Regards -Rohit Sharma (http://rohitt-sharma.blogspot.com/)
-
Thursday, September 20, 2012 8:34 AM
For open source (free) message archiving you can try:
http://biztalkarchiving.codeplex.com/
Or you can use the default functionality in BizTalk.
1. Create a Receive Location Pointed to the pickup xml (Passthru).
2. Create a Send Port Group with filter expression equal to name of Receive Port in # 1.
3. Create 2 send ports, one send port sends it to backup (pass thru), one send it to the folder wherein it will be processed (pass thru).
4. Create a Receive Location Pointed (xml + mapping and etc)to the location wherein the send port is sending the actual file (second send port in #3.
Randy Aldrich Paulo
MCTS(BizTalk 2010/2006,WCF NET4.0), MCPD | My Blog
BizTalk Message Archiving - SQL and File
Automating/Silent Installation of BizTalk Deployment Framework using Powershell >
Sending IDOCs using SSIS
- Edited by Randy Aldrich Paulo Thursday, September 20, 2012 8:38 AM
- Marked As Answer by Lloyd ZhangMicrosoft Contingent Staff, Moderator Tuesday, September 25, 2012 6:12 AM
-
Thursday, September 20, 2012 3:45 PMCreate a custom pipeline component and drag it into the decode stage. In the custom component, you can read the stream, convert it to a string, and then store that string into your database.
Ankit

