Skip to Content

Reading Binary File Using ICO

As we all know, in PI, the File adapter can read any type of file, not just XML-formatted data.  This useful when we can use a java mapping program to parse the content of the message, no matter what format it is in.  An example is reading an Excel file, then use java mapping to parse the content into XML.  The resulting XML then can be used with a subsequent mapping program, e.g. Message Mapping.

This has been done previously uisng the “classical” configuration, e.g. using Sender Agreement, Receiver Determination, etc.  However, when using the Integrated Configuration (ICO), we may encounter the following error:

Module Exception ‘ senderChannel ‘b4dc6bd27a6634e9896d5abe876a8a0a’: Catching exception calling messaging system’ found, cause: Cannot parse message payload to determine operation for receiver Invalid byte 2 of 2-byte UTF-8 sequence

To resolve this error, we need to delete the SWCV (by blanking it out) in the ICO configuration.  Once done, the message will go through without error.


You must be Logged on to comment or reply to a post.
    • This is to verify the XML structure based on what is found in the SWCV.  This is not a validation process (e.g. XSD validation), but rather in case the XML content may need to be used in routing (e.g. using XPath expression).  Without the SWCV, the structure cannot be retrieved, therefore skipped.

  • offered also other ways of the solution of this problem:


    I found the same issue in 7.3, and I understand it is due the fact that ICO now can route the messages based on operations, so it is trying to match the payload with one of the operations defined in the message. 

    You have 3 options here:

    A - You use a "dummy" interface and namespace (not defined in the ESR at all)

    B - In ESR, you set the attribute "Interface Pattern" of the outbound service interface as "Stateless (XI30-compatible)", which does not use operations.

    C - In the ICO, you use the interface defined in ESR, but remove the SWCV of the sender interface, so it looks like a dummy interface for the ICO.

    I have tried the first 2 and both work fine.  The 3rd one is a guessing but should work as well.

    • Thank you, Nicolas, you are right.  In case of having to use a mapping program, using the dummy interface will not work, however, it is good if you just want to send the msg thru without mapping.


    • In your scenario, you are sending the msg from XIBox1 to XIBox2 using the SOAP adapter, which is reformatting the XML msg.  Is it possible to use the XSLT mapping program in XIBox2, instead of XIBox1, to indent the XML msg?

  • Hi William Li,

    Could you kindly help me with this?

    Mine is File to File Scenario. ECC drops a XML file in AL11 directory and i send that file using FTP to a third party system. There is no mapping involved and i use ICO. I need to get a value from the payload dynamically for using it in my file name.

    Please let me know if i can use Variable Substitution Method and when i tried using it i get this error : VariableDataSourceException: Caught SAXException while parsing XML payload: Content is not allowed in prolog.

  • Hi William,

    thanks for this blog. We just ran across this issue after upgrading from 7.11 to 7.4 (scenario is transporting a csv file from one server to another using sftp without looking at the content):

    Attempt to process file failed with Unable to parse XML message payload to extract operation for receiver determinationorg.xml.sax.SAXParseException: Content is not allowed in prolog.

    Some questions:

    • Is this a new feature so it did not occur in 7.11?
    • Why would the messaging framework parse the message even if we did not configure any condition in receiver determinition at all?
    • Wouldn't it make sense for SAP to provide a switch to turn of the parsing of the file? It also causes runtime overhead.

    Regards, Jochen

  • Hi William,

                   sorry for writing my post here.

    -->i'm facing one problem.,i.e the basic requirement of mine is,we are getting one text file which contains binary data(.txt with binary format) from application server and i need to write the same data(binary) into the database(JDBC) with stored procedure..can u please suggest me is it possible in PI or not,which one is best and how to do?should i go for JAVA mapping? is it possible to do by avoiding IR?Here i have only one field(content)in sender side but two fields(quote number, pdf) receiver side using dynamic configuration we are going to write the quote number.