CRLF in the XML - Send Pipeline

Hello,
I have a requirement to send a XML message via biztalk to a third party.
In the Send pipeline, i need to do a processing where by a specific node in the xml,
value needs to be replaced with a constant. so i wrote a custom pipeline component that exposes xpath property.
The pipeline will take the xml document and based on the xpath configured, will replace the node's
content with a constant.
This was working all good until we hit an xml that had an empty tag.
<Employee>
  <FirstName>tt</FirstName>
  <LastName>tt</LastName>
  <Salary>100</Salary>
  <PrevRecord/>
</Employee>
The destination system wants us the pass this PrevRecord as empty.
But the pipeline seems to add a CRLF to the PrevREcord node,
so that it appears as <PrevRecord>
                        </PrevRecord>
My pipeline code is as below:
Would anyone be able to assist on this one please?why the code is adding a CRLF to the PrevRecord tag?
        public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
            if (!Enabled)
                return pInMsg;
               System.IO.Stream memStream = new System.IO.MemoryStream();
                IBaseMessagePart bodyPart = pInMsg.BodyPart;
                if (bodyPart != null)
                    Stream originalStream = bodyPart.GetOriginalDataStream();
                    if (originalStream != null)
                        System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
                        xdoc.Load(originalStream);
                        System.Xml.XmlNode Node = xdoc.SelectSingleNode(XpathforInstanceID);
                        if (Node != null)
                            Node.InnerText = "MOCK";
                        xdoc.Save(memStream);
                        memStream.Position=0;
                        bodyPart.Data = memStream;
                        pContext.ResourceTracker.AddResource(memStream);
              return pInMsg;
thanks

In your code use something like this as boatseller suggested:
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
//Add the following line after declaring the XMLDoc object
xdoc.PreserveWhitespace = false;
Having said this, I would not use XMLDocument for your purpose. The amount of space required by an instance of the XmlDocument class to load and create an in-memory representation of a XML document is up to 10 times the actual message size. Use XPathReader
for this purpose and construct the message streaming based.
http://msdn.microsoft.com/en-us/library/ee377071.aspx
You can this article as reference to create a stream based pipeline component using XPathReader for your purpose:
http://blogs.technet.com/b/meamcs/archive/2011/11/17/extracting-biztalk-messages-content-using-xpath-in-custom-pipeline-components.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.

Similar Messages

  • Need conversion logic for the xml sending from legacy system ...!!!

    Hi Experts ,
    we have one requirement where in the legacy system ( Sender system) is sending .xml  file and PI needs to pick the file and send it to ECC Via IDOC AAE Receiver Adapter  to R/3  (SAP ECC) System .
    The problem is the  .xml file which PI receives is in a different format  which is shown below
    </tns:Header>
        <tns:Body>
            <esa:Payload>
                <esa:Header>
                    <PayloadName></PayloadName>
                    <PayloadVersion>1.0</PayloadVersion>
                    <PayloadCreated>2014-01-07T02:39:55.793Z</PayloadCreated>
                    <PayloadSize units="Bytes">432</PayloadSize>
                </esa:Header>
                <esa:Data>
                    <zcs:HUM xmlns:zcs="com.">
                        <Hum_Number>00393155965135748871</Hum_Number>
                        <Source_Storage_Location>9000</Source_Storage_Location>
                        <Destination_Storage_Location>0100</Destination_Storage_Location>
                        <Material_Number>000000000000004123</Material_Number>
                        <Batch_Number>321940071 </Batch_Number>
                        <Quantity>0000000096000</Quantity>
                        <Production_Version>A100</Production_Version>
                        <Hostname>POSPI000003</Hostname>
                    </zcs:HUM>
                </esa:Data>
            </esa:Payload>
        </tns:Body>
    </tns:Envelope>|]
    need help to  convert this  .xml into PI Standard xml  format ( i mean without esa,zcs, ..So that at PI the message gets passed  successfully without throwing  xml parser issue or xml well not formed error .)  .
    do i need to write any java code for this ?
    Please experts needs your suggestions here .
    regards,
    khan ,

    Hi Aziz,
    please make sure your pasted xml has  start and end tags
    <tns:Body> </tns:Body>.
    i don't think you need to change the external definition. make sure that you use xslt mapping first then message mapping.
    Regards,
    Muni.

  • Biztalk custom send pipeline Using memory stream

    Hi friends,
    I developing the custom send pipeline,I am calling the custom helper class.The helper class I am using the Memory stream.
    The helper class method is looks like:
    public MemoryStream UpdateProcess(MemoryStream ms)
    In the pipeline i need to call this method 
     public IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)
                        //To get Incoming message
                System.IO.Stream originalStream = inmsg.BodyPart.GetOriginalDataStream();
                //Working with XDocument
                XDocument xDoc;
                using (XmlReader reader = XmlReader.Create(originalStream))
                    reader.MoveToContent();
                    xDoc = XDocument.Load(reader);
                // Returning stream
                byte[] output = System.Text.Encoding.ASCII.GetBytes(xDoc.ToString());
                MemoryStream memoryStream = new MemoryStream();
                memoryStream.Write(output, 0, output.Length);
                ProcessHelper mf = new ProcessHelper();
                mf.UpdateProcess(memoryStream);
                memoryStream.Position = 0;
                inmsg.BodyPart.Data = memoryStream;
                return inmsg;
                catch (Exception ex)
                    throw ex;
                finally
                    if (parms != null)
                        parms.Clear();
                return inmsg;
    Can you can any one let me know i am doing correct logic in pipeline component.
    Thanks
    hk
    hk

    Realistically, we can say for sure if it's right since we don't know the implementation of the helper.
    However, since it looks like the helper expects a MemoryStream with Xml content, you can probably just copy the data from the original stream to the local MemoryStream.  Passing it through an XmlDocument might be unnecessary.
    Also, unless you are absolutely sure the source document is ASCII, you shouldn't use ASCII encoding since you can loose meaningful character data.

  • Biztalk Custom Send Pipeline Error

    Hello Experts,
    I have been trying to work with the Custom Send Pipeline, which picks up the .xml file which has the path directory of the file needs to be sent to the destination. I used the code from 
    here to practice how it works
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.BizTalk.Message.Interop;
    using Microsoft.BizTalk.Component.Interop;
    using System.IO;
    namespace Sample.SndLargeFiles
    [ComponentCategory(CategoryTypes.CATID_PipelineComponent)]
    [ComponentCategory(CategoryTypes.CATID_Encoder)]
    [System.Runtime.InteropServices.Guid("52dcc4e5-28e1-49a2-81fd-de496ac80fe8")]
    public class SampleSndLargeFiles : IBaseComponent, IComponentUI, IComponent
    #region IBaseComponent Members
    public string Description
    get
    return "Send Large Files to destination reading from disk";
    public string Name
    get
    return "SampleSndLargeFiles";
    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 IComponent Members
    public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
    // Read filepath from the context properties
    string largeFilePath = pInMsg.Context.Read("LargeFilePath", "https://SamplePL.PropertySchema").ToString();
    // Read file from disk
    int bufferSize = 1024;
    FileStream fs = new FileStream(largeFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize);
    if (fs.CanSeek)
    fs.Position = 0;
    pInMsg.BodyPart.Data = fs;
    return pInMsg;
    #endregion
    I am getting error when I am trying to use in my send Port
    "Reason: Object reference not set to an instance of an object.  "
    I have checked GAC and restarted the host instances after deploying the pipeline but nothing helps.Any help is greatly appreciated.Thanks

    Johns,
    If I debug the orginal code it shows
    "An exception of type 'System.NullReferenceException' occurred in Jax.Dhana.SndLargeFiles.dll but was not handled in user code
    Additional information: Object reference not set to an instance of an object."
    in the below line
    string largeFilePath = pInMsg.Context.Read("LargeFilePath", "https://SamplePL.PropertySchema").ToString()
    If I change the code to
    string largeFilePath = System.String.Empty;
    object propVal = pInMsg.Context.Read("LargeFilePath", "https://SamplePL.PropertySchema");
    if (propVal != null) {
    largeFilePath = (System.String) propVal;
    I am seeing "Empty path name is not legal" on the below line,
    FileStream fs = new FileStream(largeFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize);

  • Dynamically assign a send pipeline to a dynamic send port in orchestration

    Hi
    I have an orchestration that is using a dynamic send port. I need to somehow assign the send pipeline to the dynamic send port programmatically.
    for example, I will have a decide shape in the orchestration. Based on the condition in the decide shape I need to assign the corresponding send pipeline for that condition. let's say in Branch A, I want to select xml assembler , in Branch B I will want
    to select a flat file assembler...
    how can this be achieved. I have seen some links recommending using the ESB tool kit, but I do not want to go down that route.
    any help is appreciated
    Regards, Mazin - MCTS BizTalk Server 2006

    Ashwin
    Thanks again for your reply.
    If I do it using role links I will loose the flexibility I have "having a dynamic file name" lots of our partners would like to receive their files with specific file naming convention based on the content of the file.
    If I use a decide shape / another dynamic send port, this means that everytime I have a new custom pipeline I would need to modify the orchestration and add another decide branch with another dynamic send port.
    both of the above suggestions will break the flexibility of the solution since we now can configure new partners in seconds in the configuration database without the need to modify the orchestration or add any new send ports
    Regards, Mazin - MCTS BizTalk Server 2006
    So in your requirement, the “dynamic” nature you want from send port are
     following:
    To set the send file names dynamically depends on the message received.
    To send the message to different send locations depending on the message received. You want to retrieve this destination URL location from database.
    And send ports may have different pipeline component like flat-file and XML ones.
    As I have commented in my earlier reply, Role-Link could fit your bill perfectly and this can be achieved by using following:
    1) Receive a message into an Orchestration.
    2) In Orchestration set the file name dynamically based on the received file and following code shall help you to set the name of the file to dynamic. 
    msgToBeSend(FILE.ReceivedFileName)="YourDynamicFileNameUWantToAssign";
    Use the above while constructing the outgoing message.
    3) Create a “Provider” Role-Link with send port type following the wizard.
    4) In Orchestration’s expression shape may be before sending the message out,
    performs the party resolution using a code similar to the following:  
    YourRoleLinkName(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party(msgToBeSend.YourDistingushedPropertyToIdentifyParty, "OrganizationName");
    5) In the above sample code “YourDistingushedPropertyToIdentifyParty” refer for the code which could identify the partyname where the send port is configured.
    6) Create Parties representing different type of message to be send like flat-file or XML messages.
    7) Create a static send port and populate the outbound URL dynamically by using a custom pipeline component. In the custom pipeline component URL can be dynamically bound by calling the database as per your reqirement i.e based on the received message by
    accessing its content in custom pipeline access the database, find the destination URL and assign the “OutboundTransportLocation” context property of the outbound message something like this 
    msgToBeSend.Context.Promote("OutboundTransportLocation", "http://schemas.microsoft.com/BizTalk/2003/system-properties", YourOutboundURLFromDatabase);
    Refer this article on this topic:
    http://www.codit.eu/blog/2013/03/06/adding-dynamic-behavior-to-static-send-ports-a-caveat/
    8) In the Parties you have created assign the send ports.
    9) GoTo your “Role-Links” folder within the deployed BizTalk application and enlist the parties.
    These steps enable you to achieve the dynamic requirement you want to implement with the mentioned Role-Link.
    Regards,
    M.R.Ashwin Prabhu
    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.

  • How to send job postings to multiple third party sites using the XML output

    Dear Friends,
    We are Implementing Irecruitment for our client, Client requirement is how can we send job postings to multiple third party sites using the XML output from i-Recruitment
    With regards
    Surya
    .

    Can you be more specific about your Requirement. In General, Please navigate to iRecruitment Recruiter Responisbility.
    Then Select, Setup > Recruiting Sites. Here, you can configure your Third Party Websites information and attach stylesheets. The default mode oracle sends the vacancy information is HR-XML Format.
    If you would like to select more sites information select "Add Another Row".
    Then, you can see this information while "New Vacancy Creation Process".
    iRecruiter.
    Edited by: iRecruiter on Oct 18, 2009 7:43 AM

  • In PI how do I convert the XML payload (input) to a text file and send out

    I am extracting data from SAP and sending thru XI / PI to a file (non-sap system).
    On the receiving end, I need the file to be a text file, with one row for each "FTZ_Row concatenated_data" tag in the input.  It needs to be just a plain text file with no XML tags.
    Currently the file gets one record which matches exactly to the XML payload below.
    I want it to create a file that looks like this :
               CONCATENATED DATA 1
               CONCATENATED DATA 2
                012345678912345678MAKTX-TEST LB 123123123123 01/02/2009 Z001WCHA9876543210.12
    here is the payload going thru XI
      <?xml version="1.0" encoding="utf-8" ?>
    - <n0:FTZ_Concatenated_Row xmlns:n0="http://intel.com/xi/INTEL_PROCUREMENT/ForeignTradeZone" xmlns:prx="urn:sap.com:proxy:FI0:/1SAI/TAS0C0412CDBC3E782D0219:700:2008/06/25">
      <FTZ_Row concatenated_data="CONCATENATED DATA 1" />
      <FTZ_Row concatenated_data="CONCATENATED DATA 2" />
      <FTZ_Row concatenated_data="012345678912345678MAKTX-TEST LB 123123123123 01/02/2009 Z001WCHA9876543210.12" />
      </n0:FTZ_Concatenated_Row>
    thanks
    jay

    thanks for the input but I am still having issues - I get an empty file when I use the content conversion option.
    My payload coming into XI is :
            <?xml version="1.0" encoding="utf-8" ?>
    - <n0:FTZ_Concatenated_Row xmlns:n0="http://intel.com/xi/INTEL_PROCUREMENT/ForeignTradeZone" xmlns:prx="urn:sap.com:proxy:FI0:/1SAI/TAS0C0412CDBC3E782D0219:700:2008/06/25">
    <FTZ_Row concatenated_data="CONCATENATED DATA 1" />
    <FTZ_Row concatenated_data="CONCATENATED DATA 2" />
    <FTZ_Row concatenated_data="012345678912345678MAKTX-TEST LB 123123123123 01/02/2009 Z001WCHA9876543210.12" />
    </n0:FTZ_Concatenated_Row>
    Here is the layout of my data type - I am using the same for input & output
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://intel.com/xi/INTEL_PROCUREMENT/ForeignTradeZone" targetNamespace="http://intel.com/xi/INTEL_PROCUREMENT/ForeignTradeZone">
       <xsd:complexType name="FTZ_Concatenated_Row">
          <xsd:sequence>
             <xsd:element name="FTZ_Row" maxOccurs="unbounded">
                <xsd:complexType>
                   <xsd:attribute name="concatenated_data" type="xsd:string" />
                </xsd:complexType>
             </xsd:element>
          </xsd:sequence>
       </xsd:complexType>
    </xsd:schema>
    I mapped these items :  FTZ_Concatenated_Row & FTZ_Row & concatenated_data
    I set up my content convesion with :
      recordset structure   FTZ_Row
    FTZ_Row.fieldSeparator     #
    FTZ_Row.endSeparator     'nl'
    I am not sure why the following row looks like this ??
        <FTZ_Row concatenated_data="CONCATENATED DATA 1" />
    I thought FTZ_Row would be one tag and "concatenated_data" would be another one.
    any help would be appreciated.
    I have read many entries/blogs/etc in SDN but and tried many different setups, but nothing is working.
    thanks

  • Processing the multiple sender xml one by one in a time gap to RFC

    Dear Experts,
             I have to process the multiple sender xml file one by one from FTP to RFC in time gap.
    For Ex:
            I will place 10 xml file in a FTP path at a  time, PI is picking 10 file at a time and process it to RFC at a time.
    Any other way to process the multiple file one by one through PI in a time gap to RFC
    (i,e) PI needs to process the 10 files one by one, once the first file processed successfully from FTP to RFC then the next file to process in a time gap to avoid getting the error in RFC.
    Kindly suggest your ideas or share some links how to process this multiple files.
    Best Regards,
    Monikandan.

    Hi Monikandan,
    You can use CE BPM with PI 7.1 But first check the suggestion of Anupam in the below thread:
    reading file sequentially from FTP using SAP PI file adapter
    Regards,
    Nabendu.

  • Interesting Reqrmnt - How to avoid sending namespace in the xml response

    Hi,
    Below is the XML response we generate and send it to HTTP Receiver.
    - <ns1:CATSIMPORT xmlns:ns1="urn:pweh.com:erp:hr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Version>1.0</Version>
      <TrackID>{5A3C87A5-48FD-4BCD-9178-A200F10F118D}</TrackID>
    - <ReturnCode>
      <value>Success</value>
      </ReturnCode>
      </ns1:CATSIMPORT>
    Can we remove the first and last line of the xml content and send it.
    Please send in your suggestions or answers.
    Regards,
    Amar Nemalikanti

    Hi Amareshwar,
    Check my replies in this link.
    just like java code to add a tag, you can use to remove a tag, before it goes to http adapter.
    Re: How to change the incoming xml to a different namespace
    Hope that helps you to fix your issue
    Regards
    Vishnu

  • Sending IDOC information in the XML format on the application server

    Hello All,
    We have a requirement like, while creating a billing document, an IDOC should be generated and the XML file should be created for that data in IDOC and that XML file would be sent to further via XI.
    For this purpose, we have created
    1. Logical Sender Receiver Systems  We are sending the data from DL3 system 100 client to DL3 800 client
    2. Assigned the clients to the logical system.
    3. Created the distribution model with the message type INVOIC.
    4. Created the partner profiles.
    5. Created an XML port in transaction WE21, in which the  application server file path is mentioned on which the xml file would be generated and the function module is provided which will only generate the file name is mentioned. In the outbound trigger tab the RFC destination is mentioned which is of type TCP/IP LOCAL_EXEC
    6. In transaction WE20, for the 100 logical system added the message type INVOIC as a outbound parameter and same for the 800 client. The receiver port is mentioned as XML port which we have created.
    Now, when we create the billing document via VF01 transaction, we give the transmission medium as ALE in the output. Hence the IDOC gets generated. The XML file also gets generated but the contents of the file are ONLY control records of the IDOC.
    And not the data record and the status records.
    The IDOC, if we see in WE02 displayes all the data in control , data and status records.
    We want the control, Data and Status records of the IDOC to be populated in the XML file.
    Please suggest if any extra configuration is required in this case. We are working on SAP 4.6.
    Thanks in advance for your answers.
    Regards,
    Anuja

    Hi Rob,
    Ya ,i will take care your suggestion from next time..
    Yes, we have downloaded the file using transaction CG3Y and opned it with IE as suggested by you. Howerver the contents are still seems to be control record.
    For your reference putting the contents of the file.
    <?xml version = "1.0"?><INVOIC01><IDOC BEGIN="1"><EDI_DC40 SEGMENT="1"><TABNAM><![CDATA[EDI_DC40]]></TABNAM><MANDT>100</MANDT><DOCNUM>0000000000227012</DOCNUM><DOCREL>46C</DOCREL><STATUS>30</STATUS><DIRECT>1</DIRECT><OUTMOD>2</OUTMOD><IDOCTYP>INVOIC01</IDO
    Please advice.
    Thanks.
    Regards,
    Anuja.

  • Validating xml in pipeline - if not valid drop file in invalid folder

    My goal is to receive an xml file through a customized pipeline so I can validate it.  If it's valid I drop it in 'valid' folder.  Then my orchestration will pick it from that location and do whatever it will do with it.  This works fine.
     But if the xml file is NOT valid I want to drop it in a an 'INVALID' folder and have a different orchestration pick it up and send an email to me.  Is this possible?  In my pipeline I don't have a dissambler, just an XMLValidator with the appropriate
    schema in the document schemas collection.  When I do drop in an 'invalid' xml file according to the schema, the pipeline is suspended.  How can I drop that invalid xml file into a folder?
    I've been learning/working with BizTalk for about 3 months.  I'm trying to keep this simple and avoid doing any custom c# code until I'm more comfortable with BizTalk.
    thank you in advance for your expert advice.
    Jean Stiles

    Hi Jean,
    Your validation pipeline should promote the "MessageType" property of the message (if the orchestration doesn't have any other filters and if the orchestration's receive shape has a message type pointing to specific message). Its seems that when your validation
    component validate any incoming message, after its process it shall promote the message type property of the message. Other wise you would not have any subscriber for the message published. The error "The published message could not be routed because no subscribers
    were found" is due to this issue. i.e your orchestration subscription doesn't match to the message outputted by your custom vaidation component.
    Not sure what is the full functionality of your custom validation component. if its simply validating the message, you can still get this functionality by using XML-Receive pipeline and set the property "Validate Document" to "True" and by specifying the
    "DocumentSpecNames" to the schema which you want to validate the incoming message against.
    If you're using custom pipeline to do standard validation, then follow like this:
    Receive Port (with Enable routing for Failed Messages enabled)  Receive Location with XML-Receive pipeline  (Validate Document" to "True" and by specifying the "DocumentSpecNames" to the schema which you want to validate )
    Bind the Receive Port to Orchestration - Do your process as normal
    Create a send port with above filter for ErrorReport and configure this send port to send the invalid message to your invalid folder.
    If you're using custom pipeline to something more than standard validation of XML-Receive pipeline , then follow like this:
    Receive Port (with Enable routing for Failed Messages enabled)  Receive Location with Your custom validation pipeline component.
    Ensure your custom pipeline component promotes the message type property as
    string systemPropertyNS = @”http://schemas.microsoft.com/BizTalk/2003/system-properties”;
    outboundMsg.Context.Promote(“MessageType”, systemPropertyNS, “http://NameSpace#RootNode”);
    replace the outboundMsg to the outbound message you output in your custom validation component. And message type to relevant value as yours. Or by some means ensure your custom pipeline output the message with matces to subcription expected by your Orchestration.
    Bind the Receive Port to Orchestration - Do your process as normal
    Create a send port with above filter for ErrorReport and configure this send port to send the invalid message to your invalid folder.
    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.

  • Dynamic Send Port : The FILE send adapter cannot open file C:\Temp for writing. Details: Access is denied.

    Hi All,
    We have requirement of using ESB toolkit and transforming incoming xml file to edi format. So, we are using ItinerarySelectReceiveXML pipeline for receiving the input from the input location and "EDISend" pipeline for transforming it into EDI and
    send it to destination.
    Now, the receive pipeline is picking up the file, but it is not processed and sent to destination.
    And, we are getting an Access Denied error from Dynamic send port.
    Error Description : 
    The FILE send adapter cannot open file C:\Users\Public\Temp for writing.
     Details: Access is denied.
    Any Immediate solutions/suggestions are appreciated...Thanks.
    Anand

    The difference between dynamic and static port would be send handler. For dynamic port, default send handler will be used and for static port the one configured on the port will be used, could you validate this configuration.
    Also sometimes, administrative privileges are not "real" administrative privileges and company admins will have limited permissions on C Drive folders. Try writing to some other folder to isolate the issue.
    Regards, Ajeet Kumar MCTS Biztalk Server

  • Flat-file and the pass-through pipeline

    Hi there, 
    I have  a technical questions about the inner workings of BizTalk. 
    The MSDN says that BizTalk is XML-centric and enything that is going through it and is posted to the MsgBox is converted to XML format.
    The question: Is this also true in a scenario including flat-file and a pass-through pipeline ? 
    Lets say the flat file needs not to be translated, the external organisation will except the flat-file format we are receiving on the receive port. So we use the receive location with the pass-thrugh pipeline (a pipilene without any components in it) and
    a send port with a simple filter pointed to the ReceivePort name. No need to convert the file to XML whatsoever, and it would be a waist of time and resources IMHO.
    So the question is, will BizTalk (being XML-centric) do the translation anyway ? In what format is the received file being posted and stored in the MsgBoxDb ?
    Thanks in advance.
    Peter 

    In a pass-through scenario (with pass-through pipelines) BizTalk will not process the message payload. 
    More information here: http://msdn.microsoft.com/en-us/library/aa561008.aspx
    The pass-through receive pipeline has no components. It is used for simple pass-through scenarios when no message payload processing is necessary. This pipeline is generally used when the source and the destination of the message are known, and the message
    requires no validation, encoding, or disassembling. This pipeline is commonly used in conjunction with the pass-through send pipeline.
    Glenn Colpaert - MCTS BizTalk Server - Blog : http://blog.codit.eu

  • Seeburger BIC mapper - CRLF as the segment delimiter

    I am trying to configure an E2X AS2 scenario using Seeburger adapters but the sender AS2 channel is failing.  I receive the error "Length limit exceeded - no SEG. delim. found!!!" during the BIC mapping step.  The format of the message I am receiving from the vendor has no segment delimiters and the different segments are simply on separate lines of the message.  The fields are delimited with asterisks.
    If I add ~ at the end of each line, and delete all of the CRLFs so that the entire message is on one line, the BIC is able to successfully map the EDI message to XML.
    Without having the vendor change the format of the file, what can I do to configure the Seeburger adapters to recognize CRLF as the segment delimiter so I can process the vendor's files as they are currently creating them?

    Try  this in the module chain
    localejbs/Seeburger/ReplaceString                  Local Enterprise Bean              key
    Then in module key parameter
    key         searchString         "\n"
    key          replaceString        "~"
    Regards,
    Prateek

  • Possible to change the xml output of the Inbound Interface?

    Hi All,
    I hav a scenarion where a third party system receives the XML from XI. the output of the xml from XI looks as follows:
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:Messages xmllns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    - <ns1:WMSItalyItemReplication xmlns:ns1="http://cpe.com/cpe_ftp_wms/ItemReplication">
    - <item_dl dt_tm_created="2006-06-29 09:02:23">
    - <item action="" owner_id="CIB" itm_num="3143832ZZ99">
      <itm_desc>Ageflex ACM50 Test</itm_desc>
      <unt_dol_val>1</unt_dol_val>
      <lic_ctrl_flg>Y</lic_ctrl_flg>
      <lot_ctrl_flg>Y</lot_ctrl_flg>
      <shelf_life>999</shelf_life>
      <product_life>999</product_life>
      <incubate_prd>0</incubate_prd>
      <hold_ord_flg>N</hold_ord_flg>
      <kit_type>N</kit_type>
      <prelabel_flg>N</prelabel_flg>
      <rcv_only_flg>N</rcv_only_flg>
      <convey_flg>N</convey_flg>
      <front_flip_flg>N</front_flip_flg>
      <pick_shp_bp>N</pick_shp_bp>
      <side_flip_flg>N</side_flip_flg>
      <rotate_flg>N</rotate_flg>
      <itm_udef_a />
      <itm_udef_b />
      <itm_udef_c>Constant1</itm_udef_c>
      <itm_udef_d />
      <multi_conf_flg>N</multi_conf_flg>
      </item>
      </item_dl>
      </ns1:WMSItalyItemReplication>
      </ns0:Message1>
      </ns0:Messages>
    And the output that the third party expects is as follows:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE item_dl SYSTEM "http://localhost/dtd/item_dl.dtd">
    <item_dl><item><itm_desc>Ageflex ACM50 Test</itm_desc>
    <unt_dol_val>1</unt_dol_val>
    <lic_ctrl_flg>Y</lic_ctrl_flg>
    <lot_ctrl_flg>Y</lot_ctrl_flg>
    <shelf_life>999</shelf_life>
    <product_life>999</product_life>
    <incubate_prd>0</incubate_prd>
    <hold_ord_flg>N</hold_ord_flg>
    <kit_type>N</kit_type>
    <prelabel_flg>N</prelabel_flg>
    <rcv_only_flg>N</rcv_only_flg>
    <convey_flg>N</convey_flg>
    <front_flip_flg>N</front_flip_flg>
    <pick_shp_bp>N</pick_shp_bp>
    <side_flip_flg>N</side_flip_flg>
    <rotate_flg>N</rotate_flg>
    <itm_udef_a></itm_udef_a>
    <itm_udef_b></itm_udef_b>
    <itm_udef_c>Constant1</itm_udef_c>
    <itm_udef_d></itm_udef_d>
    <multi_conf_flg>N</multi_conf_flg>
    </item>
    </item_dl>
    Observe the first two lines of the second output.
    I tried to generate the second xml using a java mapping. and it is working fine when i test it in the Interface mapping's test tab. but it is not working when i test the scenario end to end. It is giving some runtime error.
    is it possible to change the namespace, etc in the output of the XML coming out of XI? if v change those namespace stuff, does XI recongnise the message and send it to the appropriate reciever?
    Please suggest me any solution.
    any help wud b greatly appreciated.

    The first XML is a Split msg XML..Where there are multiple messages within a single XML document..Thats why u have a <ns0:Messages xmllns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    Tags..
    Recheck what ur target system needs are & change ur mapping in XI.

Maybe you are looking for

  • Creative zen touch problem

    creative zen touch proHi, the touchpad on my zen touch has suddenly stopped working, my touchpad works but not properly..anywhere i touch it, it only goes down never up. i am unable to scroll up through my menu an through the recovery mode to make a

  • I have reset firefox, cleared cache, reinstalled and blocked pop ups, why is it still real slow

    Firefox is very slow, when I go into facebook to play games it takes as long as 5 minutes to load, I try to reload and get the same thing.

  • Drop-down manu question

    Hi all, I've created a custom tag that automatically gets all the records of a database and builds up a html type drop-down menu containing all the possible choices for a user. Our client would like to quickly select an option by typing the first few

  • Cs3/windows 7/ hp e9270f can't record sound

    I loaded Premiere CS3 on my new computer and got message that I have an uncompatable sound card and I can't record sound, was running XP before on an HP computer with no problems. I also loaded encore CS3 and can't open it, it just freezes up, any id

  • Data from KONP.

    hallo everyone, my requirement is to get MWSK1 from KONP table. so i coded as below. SELECT * FROM konp WHERE knumv = vbak-knumv and kposn = vbap-posnr.   konp-mwsk1 = wa-mwsk1. It is showing error:   Unknown column name "KNUMV" until runtime, you ca