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.