BizTalk Server: Multiple XML files to Single FlatFile Using File Adapter

{tocify} $title={Table of Contents}

Introduction


It’s very common in integration project where we have to deal with debatching the batch of files and batching multiple files into single file. Depending upon requirements we can do xml debatching, EDI debatching, Flat file debatching and xml batching, flat file batching, EDI batching with the help of respective assembler and disassembler.

This post demonstrates how to batch multiple xml files into single flat file using flat file assembler and file adapter.


Scenario


The best example for this would be “Collection of errors for a particular day in a single file”. But to keep this simple and easy to understand following scenario is used for this post – Solution is to be designed to collect all the Employee messages(xml) coming in on that particular day and to be batched into single flat file and saved as “todaysdate.txt”

Say, 10 employee messages came in between 12:00 AM – 12:00 PM on 10th November 2014 then all the employee message should be batched into single flat file and saved as 10-11-2014.txt


How To Do 


Input Schema

Input Schema

Output Schema


output Schema

Custom Flat File send pipeline


There is no default flat file pipeline provided out of the box, so we need to create custom flat file pipeline. As we need to create flat file at send side, we create flat file send pipeline with the help of Flat file Assembler
custom pipeline

Creating Orchestration


Have used Orchestration for the sake of assigning Current date as filename to the outgoing message, but yes this solution can be implemented as pure messaging solution by creating a custom pipeline component for assigning the filename.
creating orchestration

Construct shape

1. Transform Shape

Simple one to one mapping from xml to flat file.


Transform Shape


2. Message assignment

In message assignment shape, System’s current date is assigned to a string variable SystemDate and later it is assigned to context property FILE.ReceivedFileName, so we are actually overwriting the values of FILE.ReceivedFileName. We did this so that we can use %SourceFileName% macro at send port, which reads this context property and uses it to name the message saved at destination location.

message assignment

Possible error:  The Filename, directory name, or volume label syntax is incorrect


Build and deploy


After done with the development, sign the project and assign it a Name and deploy.

Configuring and testing the application 




Download Sample


If you have questions or suggestions, feel free to do in comments section below !!!


Do share if you find this helpful .......
 
                          Knowledge Sharing is Caring !!!!!!


Related Post 


2 Comments

If you have any suggestions or questions or want to share something then please drop a comment

  1. Is this for real, using append to on the send port, (not mentioned in the blog).... ??? What am I missing if anything?

    I don't see the revolution. Good first blog entry.

    ReplyDelete
  2. Hi Thanks for nice post.

    For this do we need to modifythe send port configuration copy mode="APPEND"?
    beacause when I am doing so its creating seprate file for each record.

    ReplyDelete
Previous Post Next Post