BizTalk Training – Customize filename dynamically inside Orchestration

  • Sandro Pereira
  • Oct 23, 2009
  • 2 min read

Setting a custom filename for outgoing messages is one of the most common requirements in BizTalk development. Whether you need to add a prefix, a timestamp, or a unique ID, the process involves two main steps: manipulating the Message Context inside the Orchestration and configuring the Send Port to respect those changes.

This is a basic step. To accomplish this, you have to define the message context property of the output message.

The message context is a container for various properties that are used by BizTalk Server when processing the document. Each property in the Message Context is composed of three things: a name, a namespace, and a value.

📝 One-Minute Brief

Learn how to dynamically set output filenames in BizTalk Server Orchestrations. This guide explains how to use the Message Assignment shape to manipulate message context properties, such as FILE.ReceivedFileName, and how to configure Send Ports with the %SourceFileName% macro to ensure your files are named correctly during processing.

In orchestration:

  • Double-click in the Message Assignment shape (of the output message) and type:
msgOutput(FILE.ReceivedFileName) = “out_” + msgInput(FILE.ReceivedFileName);
Customize filename dynamically inside Orchestration

In the BizTalk Server Administration Console:

  • Set Send port:
    • Port type: Static One-Way
    • Transport: FILE
      • DestinationFolder: (To OUT folder)
      • FILENAME: %SourceFileName%
    • Send pipeline: XMLTransmit
Setting SourceFileName inside Send port

Test application:

  • Create two folders (IN and OUT), configure the receive location to get from the IN folder and the send port send to the OUT folder

Source Code/Download

THIS COMPONENT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND.

You can download the source code from GitHub here:

Hope you find this helpful! So, if you liked the content or found it useful and want to help me write more, you can help us buy a Star Wars Lego for my son! 

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community.

4 thoughts on “BizTalk Training – Customize filename dynamically inside Orchestration”

  1. Hi,There are others Message Context Properties associated with other adapters, this is one example: msg(WSS.Filename) = "file.txt";

    1. Hi Dhiraj,

      When you receive a message through webservice using SOAP adapter, WCF adapter or even for example HTTP adapter… your don’t have the property FILE.ReceivedFileName defined in the receive message, so you need to define the output file name: static, perhaps based on some content of the message or programatic.

      msgOutput(FILE.ReceivedFileName) = “out_file.xml”;
      msgOutput(FILE.ReceivedFileName) = “out_” + msgInput.MyAttribute + “.xml”;
      msgOutput(FILE.ReceivedFileName) = “out_” + System.DateTime.Now + “.xml”;

      Another option is: you can create a custom component for the receive pipeline that promotes the FILE.ReceivedFileName in the received message, again based on some content of the message, static or programatic.

  2. Hi Sandro,

    Thanks for the article! I have a question:
    Background: I’m using a dynamic FTP send port (because I need to alter the directory and some other parameters each transaction, programmatically). I’m using a MessageAssignment shape to specify the FTP parameters.
    But in addition to this, I also need to output a very specific file name. I have already tried this method of using – OutputMsg(FILE.ReceivedFileName) = “SampleOutputFileName.txt”;
    It does not work because there is no way for me to specify the macro %SourceFileName% anywhere.
    Question: Do you know how I would be able to manipulate the output file name in a dynamic FTP send port?

    Thanks in advance!

Leave a Reply

Your email address will not be published. Required fields are marked *

The Ultimate Cloud
Management Platform for Azure

Supercharge your Azure Cost Saving

Learn More
Turbo360 Widget

Back to Top