Biztalk 2004 provides a variety of built in macros for dynamically naming files. A full list of macros can be found in the help guide or here.



Recently, I have been looking at SourceFileName. I have posted a sample in the past that covers how to name output files inside your Orchestration using the %SourceFileName% macro. In that sample, I completely override the File.ReceivedFileName property with a new value. The File.ReceivedFileName property is the data source for the %SourceFileName% macro.



What if I wanted to append or prepend data to the original file name? When using the File Receive Adapter, the File.ReceivedFileName property looks like this: “c:\somepath\FileName.xml”.



If you prepend or appended text to this, you will get “PrePend_c:\somepath\FileName.xml” or “c:\somepath\FileName.xml_Append”.



When the %SourceFileName% macro runs, it looks for the last “\” and truncates the beginning part of the filename. So, in the Prepend case, the prepended text is completely lost.



How can I prepend or append text to the filename? Easy, just use a simple static helper class to prep the filename. The method to prepend text would look like this:



public static string PrePendText(string sReceivedFileName, string sPreppendText)


{


int nLastIndex = sReceivedFileName.LastIndexOf(@”\”);


return sPreppendText + sReceivedFileName.Substring(nLastIndex+1);


}



I have put together a sample with three methods; one to prepend text, one to append text, and one to append text and change the file extension.



Download: Prepend and Append Text to Filename Sample



Setup is easy. Just deploy the Orchestration and do not forget to GAC the Helper class.