tags:

views:

129

answers:

3

I have a Biztalk 2004 orchestration that receives a message from an FTP server. The message is received through a pipeline that immediatley changes the message, altering it's original form and splitting it into sub-messages. I'd like to make a backup of the original message, before Biztalk makes any changes to it.

Once the orchestration has changed the message I could change it back again and post it back out of the orchestration. But that seems like a lot of work. What I'd like Biztalk to do is backup the original message and store it somewhere else on the sever before doing any of the orchestration processing. Is there a (reasonably) easy way to get Biztalk to do this?

+1  A: 

You should be able to turn on DTA tracking of the message before the port actually done any transformation (you can choose to have DTA tracking before and after port).

Riri
If I do this I presume the message will be stored in the tracking database. Is there any way to get the message out of the tracking databse and save it as a file from within the orchestration?
ipr101
From within the orchestration? Shouldn't then just pass the message to the orchestration somehow instead? What are doing with the tracked message in the orch? Here's one way to get it out: http://tinyurl.com/dmcx6t
Riri
Be ware of the DTA tracking from a performance perspective. it is generally recommended that it would remain turned off in production.
Yossi Dahan
+1  A: 

Storing in DTA isn't usually a very accessible option. Typically the tracking database will only keep data for a finite period of time before it is deleted or archived on a closed format on file store. I've seen many instances of pipeline component archivers in the community. Take a look here.

ChrisLoris
Agree. BUT. "Typically the tracking database will only keep data for a finite period" - this is configurable and it depends on your needs ... But if you're prepared to put some work n there in configuration etc I agree that a custom pipeline is a good idea. DTA configurations is however much simper
Riri
Is there an easy way to do a mass extract from DTA? A utility program or WMI script? The scnearion we have is 'ca you give us a copy of the messages we sent from 1 PM to 2 PM?'. Any thoughts? Maybe a new question.
ChrisLoris
+3  A: 

Well the problem with DTA tracking is not only the temporary nature of the data, but that it is not the most efficient solution out there. Archiving component in the pipeline is the correct way to go, although I would say that, having looked at one of the implementations that's out there - it could be made more efficient quite easily - so if you're looking around see if there's one that does it's work in a streaming fashion.

By "streaming fashion" I mean one that does not load the entire message into memory (for instance to XmlDocument) but rather implements a custom stream and works off the Read event.

Also you will have to consider whether you can limit yourself to Xml messages (if the component does in fact uses XmlDocument, as the one I've seen), and whetehr you expect multi part messages (you will need to ensure you archive all parts, and groups them somehow in the file system/database)

Yossi Dahan