Monday, November 10, 2014

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

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


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

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.

Construct shape

1. Transform Shape

Simple one to one mapping from xml to flat file.



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.

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

2 comments:

  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