BizTalk BTDF Custom Pipeline deployment

I have Schemas, Maps, Pipelines, Orchestration all under 1 BizTalk project A.
I have created another project B and have written custom c# Custom Pipeline component.
A and B are both under 1 solution.
I am using BTDF for deployment. Only for project 'A' I created the .btdf proj and mentioned  :
<Itemgroup>
<schemas Include= "Corp.Integrations.ProjName.dll">
<LocationPath>..\$(ProjectName)\bin\$(Configuration)</LocationPath)
</schemas>
</ItemGroup>
Do I need to do add anything here ?
<IncludePipelines>False</IncludePipelines>   ----> do I need to make it true ?
<ItemGroup>
<AppsToReferenceInclude="Corp.Integration.Proj"/>
<ItemGroup>
Please help, my Proj B is not deploying or inserting into GAC or under Custom Pipeline components.
MBH

Hello,
First, you need to GAC the Custom pipeline component dll.
And from Property Group you need to Include
<IncludePipelineComponents>true</IncludePipelineComponents>
From Item Group
<PipelineComponents Include="yourPipelineComponent.dll">
    <LocationPath>..\$(ProjectName)\bin\</LocationPath>
  </PipelineComponents>
Praj Dixit

Similar Messages

  • BizTalk BTDF 6.0 Deployment

    I have multiple seperate projects under 1 solution folder, how can this  be deployed using BTDF
    Can anyone share ideas and suggestions please ?
    MBH

    Hi,
    First add the BTDF project to the solution and specify the project details.
    Then in the btdfproj file you can include the various projects present under the solution as follows:
    <ItemGroup>
    <Schemas Include="$(ProjectName).Schemas.dll">
    <LocationPath>..\$(ProjectName).Schemas\bin\$(Configuration)</LocationPath>
    </Schemas>
    </ItemGroup>
    <ItemGroup>
    <Components Include="$(ProjectName).Utilities.dll">
    <LocationPath>..\$(ProjectName).Utilities\bin\$(Configuration)</LocationPath>
    </Components>
    </ItemGroup>
    <ItemGroup>
    <PipelineComponents Include="$(ProjectName).PipelineComponents.dll">
    <LocationPath>..\$(ProjectName).PipelineComponents\bin\$(Configuration)</LocationPath>
    </PipelineComponents>
    </ItemGroup>
    <ItemGroup>
    <Orchestrations Include="$(ProjectName).Orchestrations.dll">
    <LocationPath>..\$(ProjectName).Orchestrations\bin\$(Configuration)</LocationPath>
    </Orchestrations>
    </ItemGroup>
    For more details please refer:
    http://www.tfabraham.com/BTDFDocs/V5_5/ConfiguringBizTalkArtifactsforDe.html
    Thanks,
    Raghav Ranjan

  • BTDF Deployment - Custom Pipeline Component

    If I am deploying manually, I am able to deploy, GAC and get output accordingly.
    1) But when using BTDF, its not getting deployed properly and not receiving any output. What am I doing wrong ?
    2) Before deploying 'RemoveFooter' assembly and adding to PipelineBizTalk Project, how can I add that in tools of Pipeline components to add this 'RemoveFooter' component in Decode stage ?
    In BTDF mentioned this :
    <PropertyGroup>
     <IncludePipelineComponents>true</IncludePipelineComponents>
    </PropertyGroup>
    <ItemGroup>
     <PipelineComponents Include="$(ProjectName).PipelineComponents.dll">
       <LocationPath>..\PipelineComponents\bin\$(Configuration)</LocationPath>
     </PipelineComponents>
    </ItemGroup>
    MBH

    Hi
    MBH,
    The configuration that you mentioned above is totally correct. When you add the custom pipeline component in BTDF it deploys
    to “Pipeline Components” folder and at run time BTS refers the dll from this place.
    Its working for me with the same configuration and I believe it might be other problem related to the actual project.
    JB

  • How to use custom pipeline dlls in Biztalk Projects so that they appear in the send/receive pipeline configuration after deployment?

    I have a existing Biztalk application that uses custom pipelines for receiving excel files. I have the dll of that custom pipeline. Now i created another BT application that needs to use that same custom pipeline. But after i deploy the application in
    Biztalk, i can't see the  pipeline available in Receive pipeline configuration combo box during configuration. I have referenced the custom pipeline dll in my project before deploying, but that doesn't help. I also copied the dll in the C:\Program Files
    (x86)\Microsoft BizTalk Server 2010\Pipeline Components folder and C:\Program Files (x86)\Microsoft BizTalk Server 2010 folder, but that doesn't make the pipelines appear during configuration too.
    Can anyone give any idea on how can i use these custom pipeline dlls in project so that they appear in configuration after deployment?

    If you plan on using the deployed pipeline across multiple applications in BizTalk, the BizTalk Application (using the BizTalk Server Administration Console) should have the other application [where the pipeline is deployed] as reference.
    For e.g.: Custom Pipeline (myCustomPipeline) part of a BizTalk Project (dll - myCustomProject.dll) deployed under Application [Some Application] also to be used in another BizTalk Application [Some Other Applicaiton] then using BizTalk Server Administartor
    right click the "Some Other Application" and select "Properties"
    on the "Properties" page, left hand side, select "References"
    on the right-hand side, use "Add" to add the "Some Project" as a reference.
    Doing so will ensure that ALL resources (maps, schemas, orchestrations, send ports, receive locations, rules, etc.) deployed for "Some Application" are available/referensible in "Some Other Application".
    Regards.

  • Biztalk Custom Pipeline Error

    i have deployed my Custom pipeline and when i tried to use it it gives me the below error
    There was a failure executing the receive pipeline: "BizTalk_Server_Project22.ReceivePipeline123, BizTalk Server Project22, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2f421c0b0e473f3a" Source: "Unknown " Receive Port: "ReceivePort8"
    URI: "E:\rcv\gvgvg\*.xml" Reason: The pipeline component ClassLibrary123.filename,ClassLibrary123, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7cd997faca10c5d6 can not be found. If the component name is fully qualified, this error may occur
    because the pipeline component can not be found in the assembly.  
    I have build the custom pipeline project placed the dll in the pipleine components and gac the same dll but i still get the below error 
    can you help me with this?

    Do not put the Assembly in the %\Pipeline Components folder.  Pipeline Components should be in the GAC only.
    See here:
    BizTalk: Deploying Custom Pipeline Components in BizTalk Server 2006 and Higher
    Make sure you're trying to put it in the correct GAC location. You cannot drop CLR 4.0 Assemblies in the Assemblies folder.
    You muse use gacutil.exe to properly GAC any Assembly.  There is an example in the above Wiki Article along with all other steps to use a custom Pipeline Component.

  • Deploying the custom Pipeline component in Production

    I would like to know how to deploy the Pipeline component in to production. I created an an application in dev with the custom receive pipeline component in it. Thought importing the application's msi and binding file in production will automatically deploy
    the pipeline component in to Pipeline component's folder. Bad thing is I didnt check if .dll was in Pipeline component's folder and ran the application. Now the messages got suspended with error
    There was a failure executing the receive pipeline:Source: "Unknown " Receive Port: "" URI: "" Reason: Could not load file or assembly 'file:///E:\Program Files (x86)\Microsoft BizTalk Server 2013\Pipeline Components\.dll' or
    one of its dependencies. The system cannot find the file specified.
    Help me out with this. Thanks

    You do not need to copy the DLL in C:\Program Files (x86)\Microsoft BizTalk Server 2013\Pipeline Components.
    You have to just GAC the dll on all the BizTalk servers and restart the host instance.
    Please see
    BizTalk: Deploying Custom Pipeline Components in BizTalk Server 2006 and Higher wiki article
    I hope this solves all your queries.
    Greetings,HTH
    Naushad Alam
    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or
    Mark As Answer
    alamnaushad.wordpress.com

  • BizTalk:How to share customized pipeline with more than one BizTalk Application

    I have a new BizTalk application which will use a customize generic pipeline . This pipeline has been used in an existing BizTalk application.
    When I use BizTalk Server Administration to add this pipeline assembly as a resource for a new BizTalk application, it shows error message: "this biztalk assembley has already in store and is either associated with another application or another type".
    My questions is how to share the generic pipeline component with many BizTalk application?
    Many Thanks.

    Hi,
    If you plan on using the deployed pipeline across multiple applications in BizTalk you have two options:
    1) The Current Application (in BizTalk Server Administration Console) should have the other application [where the pipeline
    is deployed] as reference.
    right click the "Current Application" and select "Properties"
    on the "Properties" page, left hand side, select "References"
    On the right-hand side, use "Add" to add the "Other Application" as a reference.
    Refer: How
    to Add a BizTalk Assembly to an Application
    Doing so will ensure that ALL resources (maps, schemas, orchestrations, send ports, receive locations, rules, etc.) deployed
    for "Other Application" are available/reprehensible in "Current Application".
    2)  Create a common BizTalk application on BizTalk Admin Console and add your custom pipeline assembly in that new application
    as a resource. With this, you don't need any other application to be started apart from this common application. Any other application who wants to use this pipeline will refer this common application.
    Rachit
    Please mark as answer or vote as helpful if my reply does

  • Custom Pipeline Component in BTDF

    I have created a separate c# based custom pipeline component, how should I embed this in BTDF ?
    Want to make sure this is Gac'd and available when I deploy to all other environments ?
    MBH

    I created a c# code Custom Pipeline component for parsing against my flat file schema.
    <PropertyGroup>
     <IncludePipelineComponents>true</IncludePipelineComponents>
     </PropertyGroup>
    <ItemGroup>
     <PipelineComponents Include="$(ProjectName).PipelineComponents.dll">
       <LocationPath>..\PipelineComponents\bin\$(Configuration)</LocationPath>
     </PipelineComponents>
    </ItemGroup>
    But it doesn't appear when I deploy into other environments ? what am I  missing  ?
    MBH

  • Custom Pipeline Component - Deployment Issue

    We have created a custom pipeline component that logs information via ETW. The component was added to a suite of common pipelines that our applications share, as well as to a handful of application specific pipelines that require other custom components
    used only by those applications. I made a change to the component and deployed the DLL to our test environment, added it to the GAC and restarted all of the host instances. The common pipelines all seem to work fine with the new DLL, but for some reason those
    pipelines that are application specific (which use the same version of the DLL) all started generating the "Object reference not set to an instance of the object" error. So I replaced the new DLL with the original version and all of the pipelines
    (common and otherwise) worked okay again. Can anyone tell me what I need to do to get the application specific pipelines to work with the modified DLL?
    Thank you.
    Thanks, Bruce

    Quite certain. The application specific pipelines call public methods that write string data to a log file - they don't pass any parameters - all of that is contained within the component itself. We only changed the content of the data for the internal parameters,
    not the data type, so the signature of the procedures remain the same.
    The original author of the code had the component logging every attribute of the pipeline and received message to the log file which was creating very large and non-useful logs. We only replaced the call to the pc.GetProperties() and inmsg.GetProperties()
    methods (both return string values) with concise strings containing the data we need logged.
    The first version of the pipeline did not contain the GetProperties methods, those were added later and the pipeline was deployed for testing. At that time, all of the application specific pipelines began generating errors that the GetProperties() method
    was not recognized, so we ended up having to go back and rebuild and re-deploy all of the application specific pipelines to use the newer version in order to get them to work. We should not have to go through this much effort to replace a shared
    library, and am hoping we can find a way to deploy it without having to redeploy all of the other pipelines as well.
    We deployed the new pipeline according to Microsoft's recommendations in
     BizTalk: Deploying Custom Pipeline Components in BizTalk Server 2006 and Higher so we are left scratching our heads at this point.
    Thanks, Bruce

  • Custom Pipeline for Biztalk Swift accelator

    Hi Everyone,
    am using BizTalk 2013R2, can any reply how to write custom pipeline for disassembler stage for swift accelater.
    Thanks & Regards
    Rajiv

    Hi Rajiv,
    I think we has already discussed your issue in previous post
    https://social.msdn.microsoft.com/Forums/en-US/2df11643-51b8-4d58-9e83-5abcac590b22/custom-pipeline-code-for-swift-disassembler?forum=biztalkgeneral#2df11643-51b8-4d58-9e83-5abcac590b22
    thanks
    Abhishek

  • Custom Pipeline code creation wizard in BizTalk

    Hi - how is that I can follow the wizard in BizTalk to create or build a Custom Pipeline component, all the structure will be created by itself,  I just need to go and in execute method write my code.
    Please can anyone mention the steps ?
    MBH

    Hi Jag,
    From the download page,
    http://btsplcw.codeplex.com/releases/view/46419, download the correct version for your use, i.e., for VS 2008 or VS 2010]
    Open the PipeLineComponentWizard.sln
    Build PipelineComponentWizard.sln
    Navigate to PipelineComponentWizard Setup Folder.  You can find the setup.exe and PipelineComponentWizard Setup.msi in the Debug/Release folder.
    Run the Setup.exe. 
    And for further steps, follow the guidlines as suggested in the following document (one of the users has shaped a step-by-step document to use this wizard and create a pipeline)
    http://gallery.technet.microsoft.com/Custom-Pipelines-using-the-0f7be626
    Also I would urge you to learn about the custom pipeline component development. Following refernces shall help you:
    http://msdn.microsoft.com/en-gb/library/aa548050.aspx
    http://blogs.msdn.com/b/brajens/archive/2006/11/25/how-to-develop-biztalk-custom-pipeline-components-part1.aspx
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • BizTalk Server 2013 and deployment MSI with dynamic send ports

    Hello community, wonder if any help out there for this odd problem.
    Deployment of application msi fails into BizTalk 2013 prod environment, fails when deploying the project dll that contains all the orchestrations,
    and reports a failure to apply early bindings.  The only early bindings in this project are dynamic send ports.  I cannot recreate the problem in in my QAS environment where deployments of the same msi works fine.  
    I can build an msi without any bindings at all except for the dynamically created ones, and this also display the same behaviour on import.  
    I have test deployed a 2nd unrelated app that also uses dynamic send ports, and this displays the problem.  
    Adding the assembly directly to BizTalk console displays the same behaviour.
    Deployment of msi apps without dynamic send ports are ok.
    The dynamic ports use a pipeline including a custom pipeline component which I can confirm is available in the correct directory
    C:\Program Files (x86)\Microsoft BizTalk Server 2013\Pipeline Components
    No specific further detail is available in the error except.
    Import Wizard[09/05/2014 08:20:47]: Error in Importing Application
    Import Wizard[09/05/2014 08:20:47]: Change requests failed for some resources.
    BizTalkAssemblyResourceManager failed to complete end type change request.
    Unable to deploy early bindings.
    Failed to update binding information.
    Error in the application.
    Other information that may be relevant:
    The main difference between QAS and PROD is that PROD is a two node cluster.  Import behaviour is the same if attempted on either node.  Assemblies are installed in both nodes currently.
    The dynamic ports are set on handlers that are non-clustered hosts (all are for adapter type SMTP).
    I have ensured that all the adapter handlers are identically setup in both environments.
    The project files were migrated to BizTalk 2013 from BizTalk 2010, imported and then converted using VS 2012.
    The msi has installed the assemblies as per usual and they do exist in the .net 4 gac
    There is a reference to a shared resource in a different application, this application is installed and imported ok.
    I’m a bit stuck at what to try now, I have option where I could recreate the dynamic ports from scratch in the orchestrations and redeploy to dev in the hope it’s something that VS2012 didn’t handle too gracefully
    when converting the project.  I could move the functionality into a helper class and forget about using dynamic sends, rather not go down that route.  I'm still suspecting this is small difference in setup
    of the group between QAS and PROD but I can't see anything jumping out.
    Any comments are most welcome.

    The dynamic ports use a pipeline including a custom pipeline component which I can confirm is available in the correct directory
    C:\Program Files (x86)\Microsoft BizTalk Server 2013\Pipeline Components
    I’m a bit stuck at what to try now, I have option where I could recreate the dynamic ports from scratch in the orchestrations and redeploy to dev in the hope it’s something
    that VS2012 didn’t handle too gracefully when converting the project. 
    Two things.
    1. That's what I would do first, recreate (really just change and reset the properties) the Orchestration Ports in Visual Studio.
    2. Probably not related but, Custom Pipeline Components should not be placed in the Pipeline Components folder.  All Custom Pipeline Components should be in the GAC only.  The Pipeline Components folder
    is a compatibility vestige from BizTalk Server 2004.

  • Unable to add the Custom Pipeline component in to the Visual Studio Tool Box

    I have tried to create the custom Pipeline component to transfer the large message in Receive side,
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System.IO;
    using Microsoft.BizTalk.Message.Interop;
    using Microsoft.BizTalk.Component.Interop;
    namespace Sample.LargeFilesDecoder
    [ComponentCategory(CategoryTypes.CATID_PipelineComponent)]
    [ComponentCategory(CategoryTypes.CATID_Encoder)]
    [System.Runtime.InteropServices.Guid("25984614-BCFD-4c47-82FC-4A2300B76411")]
    public class LargeFilesDecoder : IBaseComponent,
    IComponentUI,
    IComponent,
    IPersistPropertyBag
    #region IBaseComponent Members
    public string Description
    get
    return "Pipeline component used to receive Larger Files through SFTP Ports";
    public string Name
    get
    return "LargeFilesDecoder";
    public string Version
    get
    return "1.0.0.0";
    #endregion
    #region IComponentUI Members
    public IntPtr Icon
    get
    return new System.IntPtr();
    public System.Collections.IEnumerator Validate(object projectSystem)
    return null;
    #endregion
    #region IPersistPropertyBag Members
    private string _largeFileLocation;
    private int _thresholdSize;
    public string LargeFileLocation
    get { return _largeFileLocation; }
    set { _largeFileLocation = value; }
    public int ThresholdSize
    get { return _thresholdSize; }
    set { _thresholdSize = value; }
    public void GetClassID(out Guid classID)
    classID = new Guid("DBA77DFA-5D3E-4B85-8F78-1D6330B6BCA0");
    public void InitNew()
    public void Load(IPropertyBag propertyBag, int errorLog)
    object val1 = null;
    object val2 = null;
    try
    propertyBag.Read("LargeFileLocation", out val1, 0);
    propertyBag.Read("ThresholdSize", out val2, 0);
    catch (ArgumentException)
    catch (Exception ex)
    throw new ApplicationException("Error reading PropertyBag: " + ex.Message);
    if (val1 != null)
    _largeFileLocation = (string)val1;
    if (val2 != null)
    _thresholdSize = (int)val2;
    public void Save(IPropertyBag propertyBag, bool clearDirty, bool saveAllProperties)
    object val1 = (object)_largeFileLocation;
    propertyBag.Write("LargeFileLocation", ref val1);
    object val2 = (object)_thresholdSize;
    propertyBag.Write("ThresholdSize", ref val2);
    #endregion
    #region IComponent Member
    public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
    if (_largeFileLocation == null || _largeFileLocation.Length == 0)
    _largeFileLocation = Path.GetTempPath();
    if (_thresholdSize == null || _thresholdSize == 0)
    _thresholdSize = 4096;
    if (pInMsg.BodyPart.GetOriginalDataStream().Length > _thresholdSize)
    Stream originalStream = pInMsg.BodyPart.GetOriginalDataStream();
    string largeFilePath = _largeFileLocation + pInMsg.MessageID.ToString() + ".msg";
    FileStream fs = new FileStream(largeFilePath, FileMode.Create);
    // Write message to disk
    byte[] buffer = new byte[1];
    int bytesRead = originalStream.Read(buffer, 0, buffer.Length);
    while (bytesRead != 0)
    fs.Flush();
    fs.Write(buffer, 0, buffer.Length);
    bytesRead = originalStream.Read(buffer, 0, buffer.Length);
    fs.Flush();
    fs.Close();
    // Create a small xml file
    string xmlInfo = "<MsgInfo xmlns='http://Sample.LargeFilesDecoder'><LargeFilePath>" + largeFilePath + "</LargeFilePath></MsgInfo>";
    byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(xmlInfo);
    MemoryStream ms = new MemoryStream(byteArray);
    pInMsg.BodyPart.Data = ms;
    return pInMsg;
    #endregion
    I have
    Added .dll file in to the Global Assembly Cache (use gacutil)
    Copied it the Pipeline Components folder (E:\Program Files (x86)\Microsoft BizTalk Server 2013\Pipeline Components)
    Everything was successful, when I try to add the component to the Toolbox I get the message like below and cannot find the component in Toolbox.
    Tried several times but still getting stuck in the same place. I am using Visual Studio 2013. Any help is greatly appreciated.

    Do not put the Assembly in the %\Pipeline Components folder.  Pipeline Component Assemblies should be in the GAC only.
    To correctly deploy a custom Pipeline Component, you can follow the steps in this Wiki Article:
    http://social.technet.microsoft.com/wiki/contents/articles/26404.biztalk-deploying-custom-pipeline-components-in-biztalk-server-2006-and-higher.aspx
    I have never seen that specific error before.  Are you sure you're browsing from the Pipeline Components tab?

  • How to get interchange id in custom pipeline and in orchestration

    My scenario is that I want to create a unique id for a message which should be remain unique throughout  biztalk so that I can track it anywhere.
    I got messageID context property of message in decoding pipeline component through IBaseMessage pInMsg.MessageID.ToString() and
    got the same messageID   in orchestration through messageName(BTS.MessageID) in expression shape.
    But when I am using a custom disassembler component , I am unable to get the same messageID in orchestration because disassembler stage create a new messageID.
    Can I use interchangeID of message for this scenario ?
    If yes,how can I get interchangeID in custom decoding component as well as in orchestration ?
    Prakash

    Hi Prakash,
    Yes, I believe InterchangeID should work for you in this case.
    Refer: 
    http://geekswithblogs.net/chrishan/archive/2006/01/17/66161.aspx
    http://felixmondelo.blogspot.in/2007/08/interchangeid-vs-messageid.html
    How to access? 
    1) In your custom pipeline component you can access it 
    Guid interchangeID = Guid.Parse(pInMsg.Context.Read("InterchangeID","http://schemas.microsoft.com/BizTalk/2003/system-properties");
    where pInMsg is your IBaseMessage.
    2) In orchestration:
    varGuid = System.Guid.Parse(Message_1(BTS.InterchangeID));
    I hope his helps.
    Rachit

  • Custom pipeline component creates the folder name to archive messages

    Hi 
    I have an requirement that a BizTalk application is receiving untyped messages and at the receive location the pipeline have to archive the incoming message with the specifications:
    suppose I have an xml like
          <PurchaseOrder>
            <OrderId>1001</OrderId>
            <OrderSource>XYZ</OrderSource>
            <Code>O01</Code>
          </PartyType>
    In the pipeline component it has to read this xml and have to use OrderSource value 'XYZ' to create a archival folder and the message have to archive with file name '%MessageId%'
    It has to be done by writing custom pipeline component where I am not familiar with c# coding, Can anyone please how to implement mechanism.
    Thanks In Advance
    Regards
    Arun
    ArunReddy

    Hi Arun,
    Use
    BizTalk Server Pipeline Component Wizard to create a decode pipeline component for receive. Install this wizard. This shall help you to create the template project for your pipeline component stage.
    Use the following code in the Execute method of the pipeline component code. This code archives the file based with name of the file name received.
    public Microsoft.BizTalk.Message.Interop.IBaseMessage Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext pc, Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg)
    MemoryStream tmpStream = new MemoryStream();
    try
    string strReceivedFilename = null;
    DateTime d = DateTime.Now;
    try
    //Get the file name
    strReceivedFilename = inmsg.Context.Read("ReceivedFileName", "http://schemas.microsoft.com/BizTalk/2003/file-properties").ToString();
    if (strReceivedFilename.Contains("\\"))
    strReceivedFilename = strReceivedFilename.Substring(strReceivedFilename.LastIndexOf("\\") + 1, strReceivedFilename.Length - strReceivedFilename.LastIndexOf("\\") - 1);
    catch
    strReceivedFilename = System.Guid.NewGuid().ToString();
    originalStream = inmsg.BodyPart.GetOriginalDataStream();
    int readCount;
    byte[] buffer = new byte[1024];
    // Copy the entire stream into a tmpStream, so that it can be seakable.
    while ((readCount = originalStream.Read(buffer, 0, 1024)) > 0)
    tmpStream.Write(buffer, 0, readCount);
    tmpStream.Seek(0, SeekOrigin.Begin);
    //ToDo for you..
    //Access the receive message content using standard XPathReader to access values of OrderSource and construct file pathAccess the receive message content using standard XPathReader to acceess values of OrderSource and contruct the file path
    string strFilePath = //Hold the value of the file path with the value of OrderSource
    string strCurrentTime = d.ToString("HH_mm_ss.ffffff");
    strFilePath += "\\" + strReceivedFilename + "_";
    FileStream fileStream = null;
    try
    System.Threading.Thread.Sleep(1);
    fileStream = new FileStream(strFilePath + strCurrentTime + ".dat", FileMode.CreateNew);
    catch (System.IO.IOException e)
    // Handle the exception, it must be 'File already exists error'
    // Wait for 10ms, change the file name and try creating the file again
    // If the second 'file create' also fails, it must be a genuine error, it'll be thrown to BTS engine
    System.Threading.Thread.Sleep(10);
    strCurrentTime = d.ToString("HH_mm_ss.ffffff"); // get current time again
    string dtcurrentTime = DateTime.Now.ToString("yyyy-MM-ddHH_mm_ss.ffffff");
    fileStream = new FileStream(strFilePath + strCurrentTime + ".dat", FileMode.CreateNew);
    while ((readCount = tmpStream.Read(buffer, 0, 1024)) > 0)
    fileStream.Write(buffer, 0, readCount);
    if (fileStream != null)
    fileStream.Close();
    fileStream.Dispose();
    if (originalStream.CanSeek)
    originalStream.Seek(0, SeekOrigin.Begin);
    else
    ReadOnlySeekableStream seekableStream = new ReadOnlySeekableStream(originalStream);
    seekableStream.Position = 0;
    inmsg.BodyPart.Data = seekableStream;
    tmpStream.Dispose();
    catch (Exception ex)
    System.Diagnostics.EventLog.WriteEntry("Archive Pipeline Error", string.Format("MessageArchiver failed: {0}", ex.Message));
    finally
    if (tmpStream != null)
    tmpStream.Flush();
    tmpStream.Close();
    if (originalStream.CanSeek)
    originalStream.Seek(0, SeekOrigin.Begin);
    return inmsg;
    In the above code, you have do a section of code which will access the receive message content using standard XPathReader to access values of OrderSource and construct the file path. I have
    commented the place where you have to do the same. You can read the XPathReader about here..http://blogs.msdn.com/b/momalek/archive/2011/12/21/streamed-xpath-extraction-using-hidden-biztalk-class-xpathreader.aspx
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

Maybe you are looking for