XML message transformation in each step of XI

Hello,
I was wondering if there is already any article that shows the XML transformation happening in each of the major steps of a XI transaction. I am new to XI and thought this would give me in-depth understanding how a XML is getting transformed as passes through each of the major stages of XI. I have read some of the articles related to XI. These articles are very informative. But like to have a first hand view of what's happening in terms of XML transformation in the processes.
Thanks
Tariq

hey the xml transformation actually happens in the message mapping step. This is where the xml gets transformed from one structure to the other.
The other steps in the pipeline are routing type steps.
Just remember L T M. They are the pipeline steps:
Logical Routing
Technical Routing
Mapping
Also you should be aware that the transformation from other formats to XI-XML actually takes place in the Adapter engine before it reaches the pipeline.

Similar Messages

  • XML Messages Problem (Whats next step ?)

    I am kind of confouse right now, why i done GRMG configuration and create secronios....?
    what is the link between RZ20 and RZ21 and GRMG why we are creating own monitors theres?
    I will send some URL for how its look like
    please
    With heading
    exchangeInfrastructure_systems
    CCMS
    CCMS2
    GRMG
    http://www.flickr.com/photos/25222280@N03/2397974445/
    http://www.flickr.com/photos/25222280@N03/2397974429/
    http://www.flickr.com/photos/25222280@N03/2398803974/
    http://www.flickr.com/photos/25222280@N03/2397974409/
    http://www.flickr.com/photos/25222280@N03/?saved=1
    Thnaks a lot
    please what i can do next....

    I am kind of confouse right now, why i done GRMG configuration and create secronios....?
    what is the link between RZ20 and RZ21 and GRMG why we are creating own monitors theres?
    I will send some URL for how its look like
    please
    With heading
    exchangeInfrastructure_systems
    CCMS
    CCMS2
    GRMG
    http://www.flickr.com/photos/25222280@N03/2397974445/
    http://www.flickr.com/photos/25222280@N03/2397974429/
    http://www.flickr.com/photos/25222280@N03/2398803974/
    http://www.flickr.com/photos/25222280@N03/2397974409/
    http://www.flickr.com/photos/25222280@N03/?saved=1
    Thnaks a lot
    please what i can do next....

  • Message Transformation: ISO To XML Supported in OSB?

    hi,
    I want to know if ISO To Xml message transformation supported in OSB.
    I know that OSB supports XML-non XML message transformation and vice-versa.
    Is ISO format included in that non-XML transformation.
    If yes How can i build a sample MFL file using Format Builder for ISO messages.
    please reply.
    Thanks in advance.

    Are you working with ISO8583 or ISO20022/MX categories - Payments, Trade, Securities, Forex? If yes, then you may like to use Oracle Service Bus for financial services.
    http://www.oracle.com/technology/products/integration/service-bus/osb-for-financial-services.html
    http://download.oracle.com/docs/cd/E13185_01/fmd/docs10gr3/pdf/solutions.pdf
    Regards,
    Anuj

  • Message Monitoring for each within the BPM process

    I have a question concerning message monitoring within a BPM process.  I receive an IDOC into my BPM process.  I then have three transformation steps before sending an E-mail to the end receiver.  When I look at the messages in the workflow log, I am unable to see the message after each transformation step.  In the log display if I click the instance ID for all steps except the first step I am unable to see a message.
    List of Message Objects
    Object Type              Instance    ID                          Creation Time
    ZXI_PROXY...0001     DC9F66530C7899F1AC430017A44943B2     11:04:39
    ZXI_PROXY...0001     DC9F66530C789FF1AC430017A44943B2     11:04:39
    ZXI_PROXY...0001     DC9F66530C78A5F1AC430017A44943B2     11:04:39
    ZXI_PROXY...0001     DC9F66530C78B1F1AC430017A44943B2     11:04:39
    ZXI_PROXY...0001     DC9F66530C78ABF1AC430017A44943B2      11:04:39
    ZXI_PROXY...0001     DC9F614BA98C51F1AC430017A44943B2      10:28:40
    If I click all except the first instance I receive the following message:
    No messages available for selection
    Message no. XMS_ADM113
    Is there a way to make the message persistent after each step within the process?  I would like to see the data after each step in the workflow log. Is this possible?
    I do receive the e-mail from the send step so I know that it's completing the process.  What I'm not sure of is if each step individually processed the data as I expected.

    Hi Audra,
    Check this link
    BPM monitoring
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e7bc3a5a-0501-0010-1095-eb47159e169c
    Sachin

  • Message transformation supported in Oracle Service Bus.

    hi,
    please let me know the types of message transformation supported by OSB.
    i have found that it supports xml to xml message transformation based on XQUERY and XSLT.
    Can anyone please tell me if it supports message transformation from xml to flat, aml to ISO and vice versa.
    Thanks in advance.

    Apart from Xquery and XSLT (XML to XML transformation), you may use MFL in OSB. A Message Format Language (MFL) document is a specialized XML document used to describe the layout of binary data. MFL resources support the following transformations:
    XML to binary—There is one required input (XML) and one output (binary).
    binary to XML—There is one required input (binary) and one output (XML).
    Each transformation accepts only one input and provides a single output.
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/mfls.html#wp1090749
    http://biemond.blogspot.com/2008/12/flat-file-to-xml-with-oracle-service.html
    http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15867/mfls.htm#i1100502
    http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15866/intro_fb.htm#CHDCAHHA
    Regards,
    Anuj

  • How to loop through many XML messages and parse them ?

    Hi All
    I have been trying very hard to loop through many XML messages and process each of them. Let me first explain the problem -
    Suppose I have the following String -
    <xyz>
    <abc>happy</abc>
    </xyz>
    <xyz>
    <abc>new</abc>
    <xyz>
    <xyz>
    <abc>year</abc>
    </xyz>
    I have to process each message within the <xyz></xyz> tag and find the falue of <abc> element (happy, new and year).
    The extraction of <abc> value is very simple, I am using SAX parser's startElement() method to check every element's name and if the element's name is <abc> pick up the value. But I am not able to loop through the different messages within the <xyz></xyz> tag.
    I am thinking of using another DOM parser -
    DOMParser domParser = new DOMParser();
    StringReader rdr = new StringReader(inputXML);
    InputSource src = new InputSource(rdr);
    domParser.parse(src);
    Document doc = domParser.getDocument();
    NodeList nodeList = doc.getElementsByTagName("xyz");
    Now I can loop through this nodeList, but not able to. Is using the DOM parser and NodeList the preferable way of lopping through the messages, then how I can loop through ? Or is there any other way ?
    I have been trying on this for quite a few days, but not able to. Can you please help me out ?
    Thanking you in advance ....
    Nirmalya Sinha

    Hi,
    Try using the SAX reader from the dom4j package. The document object that you receive contains methods for getting the root elements and with that you can traverse down to the sub elements of it.
    Hope this was of some help.

  • Messages open several tabs in Thunderbird, one for each step in the mail exchange

    A friend has a new PC with Windows 8.
    If a message is a reply, when opening the message each step in the mail exchange will open in a different tab in Thunderbird.

    Well, the question is that when I open a message in the Inbox, either by double clicking or by pressing Enter, if the message is a reply, i.e if there are more than one message "behind" the message I click to open, every step in the message history is open in a separat tab. Please see attachment

  • How to map a complex XML message onto a flattened XSD for multi line insert

    Hi Experts.
    I have a webservice in my composite that takes an xml message that contains repeating complex type elements. The XSD is as follows:
    <?xml version= '1.0' encoding= 'UTF-8' ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:XxInt003Stg="http://www.somewhere.co.uk/xxx/integration/int003Stage"
    targetNamespace="http://www.somewhere.co.uk/xxx/integration/int003Stage" elementFormDefault="qualified">
    <xsd:complexType name="InterfaceFileType">
    <xsd:sequence>
    <xsd:element name="FileName" type="xsd:string"/>
    <xsd:element name="FileSource" type="xsd:string"/>
    <xsd:element name="FileIdentifier" type="xsd:integer"/>
    <xsd:element name="InterfaceInvoices" type="XxInt003Stg:InterfaceInvoicesType"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoicesType">
    <xsd:sequence>
    <xsd:element name="InterfaceInvoice" type="XxInt003Stg:InterfaceInvoiceType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoiceType">
    <xsd:sequence>
    <xsd:element name="SupplierNumber" type="xsd:string"/>
    <xsd:element name="SupplierSite" type="xsd:string"/>
    <xsd:element name="InvoiceNumber" type="xsd:string"/>
    <xsd:element name="InterfaceInvoiceLines">
    <xsd:complexType>
    <xsd:complexContent>
    <xsd:extension base="XxInt003Stg:InterfaceInvoiceLinesType">
    <xsd:sequence>
    <xsd:element name="InterfaceInvoiceLine"
    type="XxInt003Stg:InterfaceInvoiceLineType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:extension>
    </xsd:complexContent>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="InterfaceInvoiceLinesType"/>
    <xsd:complexType name="InterfaceInvoiceLineType">
    <xsd:sequence>
    <xsd:element name="LineAmount" type="xsd:decimal" nillable="false"/>
    <xsd:element name="TaxAmount" type="xsd:decimal"/>
    <xsd:element name="BusinessEntityReference" type="xsd:string"/>
    <xsd:element name="AccountNumber" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="InterfacePayload">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="InterfaceFiles" type="XxInt003Stg:InterfaceFileType"
    maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    When I try to push this through the database adapter after mapping the fields it inserts multiple rows but they are all the same values. I have put a for-each XSLT construct based on the lowest element in the XSD (Invoice Line) and allocated that at various places on the target tree structure but with no success.
    The XSLT is as follows:
    <xsl:template match="/">
    <top:XxInt003InterfaceInvoiceStgCollection>
    <top:XxInt003InterfaceInvoiceStg>
    <top:fileName>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileName"/>
    </top:fileName>
    <top:fileSource>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileSource"/>
    </top:fileSource>
    <top:fileIdentifier>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileIdentifier"/>
    </top:fileIdentifier>
    <top:supplierNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:SupplierNumber"/>
    </top:supplierNumber>
    <top:supplierSite>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:SupplierSite"/>
    </top:supplierSite>
    <top:invoiceNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InvoiceNumber"/>
    </top:invoiceNumber>
    <xsl:for-each select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine">
    <top:lineAmount>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:LineAmount"/>
    </top:lineAmount>
    </xsl:for-each>
    <top:taxAmount>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:TaxAmount"/>
    </top:taxAmount>
    <top:businessEntityReference>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:BusinessEntityReference"/>
    </top:businessEntityReference>
    <top:accountNumber>
    <xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:AccountNumber"/>
    </top:accountNumber>
    </top:XxInt003InterfaceInvoiceStg>
    </top:XxInt003InterfaceInvoiceStgCollection>
    </xsl:template>
    I am sure this is just something fundemantal I am doing, is it something to do with the inp1 bit of the XSLT? I get the feeling this should be looping somehow?
    Thanks
    Keith

    Hi,
    as I understand you try to transform 'InterfacePayload' (your XSD - just easier to read here)
    InterfacePayload (1:1)
    -- InterfaceFiles (1:N)
    ---- FileName (1:1)
    ---- FileSource (1:1)
    ---- FileIdentifier (1:1)
    ---- InterfaceInvoices (1:1)
    ------ InterfaceInvoice (1:N)
    -------- SupplierNumber (1:1)
    -------- SupplierSite (1:1)
    -------- InvoiceNumber (1:1)
    -------- InterfaceInvoiceLines (1:1)
    ---------- InterfaceInvoiceLine (1:N)
    ------------ LineAmount (1:1)
    ------------ TaxAmount (1:1)
    ------------ BusinessEntityReference (1:1)
    ------------ AccountNumber (1:1)
    to 'XxInt003InterfaceInvoiceStgCollection' (extracted from your XSLT)
    XxInt003InterfaceInvoiceStgCollection (1:1)
    -- XxInt003InterfaceInvoiceStg (1:1)
    ---- fileName (1:1)
    ---- fileSource (1:1)
    ---- fileIdentifier (1:1)
    ---- supplierNumber (1:1)
    ---- supplierSite (1:1)
    ---- invoiceNumber (1:1)
    ---- lineAmount (1:N)
    ---- taxAmount (1:1)
    ---- businessEntityReference (1:1)
    ---- accountNumber (1:1)
    In the 'xsl:for-each' construct
    +<xsl:for-each select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine">+
    +<top:lineAmount>+
    +<xsl:value-of select="/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InterfaceInvoiceLines/inp1:InterfaceInvoiceLine/inp1:LineAmount" />+
    +</top:lineAmount>+
    +</xsl:for-each>+
    - you are asking to iterate through all available 'inp1:InterfaceInvoiceLine' elements in the input XML document
    - the value of the element 'top:lineAmount' (for each iteration) is being calculated as all values of available 'inp1:LineAmount' elements in the input XML document together
    So, if you have ... lets say
    - 4x 'inp1:InterfaceInvoiceLine' element in the input XML document, each containing one 'inp1:LineAmount' element ... with values {1, 2, 3, 4} respectively
    - the output will be something like this
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    <top:lineAmount>1234</top:lineAmount>
    Why are you always querying from +/inp1:InterfacePayload/inp1:InterfaceFiles/...+ ?
    I think ... all Xpath queries in your XSLT are wrong (they query something else than you think).
    e.g.
    - putting all file names together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileName+)
    - putting all file sources together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:FileSource+)
    - putting all invoice numbers together into one element (+/inp1:InterfacePayload/inp1:InterfaceFiles/inp1:InterfaceInvoices/inp1:InterfaceInvoice/inp1:InvoiceNumber+)
    Best regards,
    Martin.

  • Ignore DTD declaration in incoming XML message

    Hi,
    I have an issue where I am receiving an incoming XML message which starts with a DTD declaration.
    This causes an issue with the XML parser step in the mapping because the parser attempts to resolve the DTD location. However this location is external and the PI server cannot access it.
    The location for reference is http://dtd.bibit.com/paymentService_v1.dtd
    Therefore I am investigating options to ignore the DTD declaration or removing it altogether prior to the XML parser step.
    I would hope I could use either XSLT or Java mapping but do not really know where to start.
    Can anyone please provide a method of doing this ? I would prefer to use XSLT but am open to other options.
    I have no control over the DTD declaration as it is supplied by a 3rd party application. 
    Thanks
    Colin.

    Hi Russell,
    The XSLT sample you have provided does not work.
    I still get the message below in the trace file:
    <Trace level="2" type="T">Call XSLT processor with stylsheet BIBIT_PaymentResponse.xsl.</Trace>
      <Trace level="2" type="T">resolveEntity systemId = 'http://dtd.bibit.com/paymentService_v1.dtd' (publicId = '-//Bibit//DTD Bibit PaymentService v1//EN').</Trace>
      <Trace level="3" type="T">Search http://dtd.bibit.com/paymentService_v1.dtd (urn:com-dg-ng:crm:paycardauth, -1) in swcv 703fadc0-858c-11dd-971b-f2400a20801e.</Trace>
      <Trace level="3" type="T">Search http://dtd.bibit.com/paymentService_v1.dtd (-1) in swcv 703fadc0-858c-11dd-971b-f2400a20801e without namespace.</Trace>
      <Trace level="1" type="T">Resource not found: http://dtd.bibit.com/paymentService_v1.dtd Thrown: com.sap.aii.ib.server.mapping.execution.MappingClassNotFoundException: http://dtd.bibit.com/paymentService_v1.dtd at com.sap.aii.ib.server.mapping.execution.InternalMappingFinder.getInputStream(InternalMappingFinder.java:119) at com.sap.aii.ib.server.mapping.execution.InternalMappingFinder.readFile(InternalMappingFinder.java:62) at com.sap.aii.ib.server.mapping.execution.MappingLoader.getResourceAsStream(MappingLoader.java:131) at com.sap.aii.ib.server.mapping.execution.AbstractMappingTransformer$MappingEntityResolver.resolveEntity(AbstractMappingTransformer.java:328) at com.sap.engine.lib.xml.parser.XMLParser.scanDTD(XMLParser.java:1272) at com.sap.engine.lib.xml.parser.XMLParser.scanProlog(XMLParser.java:2804) at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2839) at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:229) at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:145) at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:160) at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:261) at com.sap.engine.lib.xml.parser.Parser.parse_DTDValidation(Parser.java:282) at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:293) at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:126) at com.sap.aii.ib.server.mapping.execution.jaxpfactories.MappingXMLReader.parse(MappingXMLReader.java:102) at com.sap.engine.lib.jaxp.TransformerImpl.transformWithStylesheet(TransformerImpl.java:387) at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:240) at com.sap.aii.ib.server.mapping.execution.AbstractMappingTransformer.transform(AbstractMappingTransformer.java:174) at com.sap.aii.ib.server.mapping.execution.XSLTMapping.executeStep(XSLTMapping.java:79) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep(SequenceMapping.java:40) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87) at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:71) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:119) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:72) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at sun.reflect.GeneratedMethodAccessor310.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy544.processFunction(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:183) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:269) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:152) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:247)</Trace>
    I will try your Java mapping next and get back to you if I get success with this.
    Cheers for your help.
    Colin.

  • Converting XML Message to EDI

    Hi Experts,
    I need a tool to convert XML message to EDI.

    Hi,
    Conversion Agent
    Purpose
    SAP Conversion Agent by Informatica is a data conversion system that enables you to create interfaces between any data formats and XML-based systems. The Conversion Agent can convert unstructured, semi-structured, and structured formats to XML, and the other way around.
    The Conversion Agent comprises the Conversion Agent Studio and the Conversion Agent Engine. In the Conversion Agent Studio you can develop and configure data conversions. The Conversion Agent Engine executes the data conversions.
    Conversion Agent in Process Integration
    figer here-
    In Process Integration you call the Conversion Agent by using an adapter module. For this purpose, you must integrate this module in the module processor of your adapter. You can only use the Conversion Agent with the SAP adapters of the Adapter Engine.
    The module in the sender adapter uses a data conversion statement to call the Conversion Agent Engine and it then receives the converted XML document. In a receiver adapter the source format is XML.
    For current information and FAQs for the Conversion Agent, see SAP Note 894815.
    Features
    If you want to use data transformations in Process Integration, you must perform the following steps after you have installed the Conversion Agent:
    For information about installing the Conversion Agent, see Deploying and Using Conversion Agent and Getting Started with Conversion Agent.
           1.      Define your data transformation in the Conversion Agent Studio.
    For more information, please see: Getting Started with Conversion Agent.
           2.      Configure a communication channel within your integration scenario.
    More information: Communication channel.
           3.      In the adapter configuration under Modules, integrate the adapter module CMTransformModule in the adapter type for your communication channel.
    ○       Under Parameter Name in the Module Configuration, enter the name TransformationName, and under Parameter Value, enter the name of the data transformation you defined.
    ○       The document to be converted must be in the main payload of the message.
    ○       If the document to be converted is in an attachment, you can use the PayloadSwapBean module to exchange the payloads.
    ○       The adapter module can be integrated in all adapters that can be enhanced with additional modules (for example, the SOAP adapter or mail adapter).
    For more information about integrating the adapter module, see Deploying and Using Conversion Agent.
    For more information about integrating modules in an adapter, see: Module Processor
    For more information about enhancing the module processor, see Extending the Module Chain in the Module Processor.
    Getting Started with the Conversion Agent
    To quickly get up to speed with the SAP NetWeaver Conversion Agent, read the following documentation:
    Document Name
    Deploying and Using Conversion Agent
    Contents
    Contains detailed information about how you can use the Conversion Agent in SAP NetWeaver. It also includes a description of how to deploy the adapter module for calling the Conversion Agent Engine.
    Document Name
    Getting Started with Conversion Agent
    Contents
    Uses exercises to introduce you to Conversion Agent Studio.
    Also contains short installation instructions.
    Conversion Agent Guides
    The following guides are available:
    Document Name
    Conversion Agent Administratoru2019s Guide
    Contents
    Contains information on the following topics:
    ●      Installing the Conversion Agent Studio
    ●      Updating Conversion Agent projects
    ●      Configuration Editor
    This editor enables you to configure the parameters of an existing Conversion Agent installation.
    Document Name
    Conversion Agent Studio Useru2019s Guide
    Contents
    Contains a description of all functions of the Conversion Agent Studio.
    Document Name
    Conversion Agent Engine Developeru2019s Guide
    Contents
    Contains information about how you enable transformations defined in the Conversion Agent Studio to be executed by the Conversion Agent Engine.
    PS,Reward me if usefull
    reg,
    suresh

  • Message transformation using XSLT

    Hi OSB Gurus,
    We are trying to implement following functionality using OSB.
    1. We have XML messages in a folder.
    2. Need to create a proxy service to take these messages and apply transformations using XSLT.
    3. After transformation, put the messages in a different folder which will be picked up by another message broker.
    Please give me some pointers about how i can design this. Also i would like to share my findings about the step 2, but having issues for defining input payload which should be defined in the step 1 above. I followed the document http://blog.jayway.com/2010/05/07/xslt-transformations-in-oracle-service-bus/ for registering the xslt transformation, but couldnot make it work as i am not sure about how i can integrate step 1 with step 2.
    Thanks so much in advance.

    Thanks for the suggestion. I will try and see. Here are the files:
    1. XML Input(Payload):
    <?xml version="1.0" encoding="UTF-8"?>
    <ODS>
         <LICENSE_TRANSACTION>
              <LIC_TRAN_ID>123</LIC_TRAN_ID>
              <LIC_CAMIS_ID>String</LIC_CAMIS_ID>
              <LIC_NBR>String</LIC_NBR>
              <LIC_STATUS_DATE>2000-01-01</LIC_STATUS_DATE>
              <LIC_ISSUE_DATE>2001-01-01</LIC_ISSUE_DATE>
              <LIC_EXP_DATE>2002-01-01</LIC_EXP_DATE>
              <LIC_INSP_REQ_FLAG>true</LIC_INSP_REQ_FLAG>
              <LIC_LAST_RENW_SNT_DATE>2003-01-01</LIC_LAST_RENW_SNT_DATE>
              <LIC_LAST_RENW_RCVD_DATE>2004-01-01</LIC_LAST_RENW_RCVD_DATE>
              <LIC_FED_TAX_ID>String</LIC_FED_TAX_ID>
              <LIC_NYS_TAX_ID>String</LIC_NYS_TAX_ID>
              <LIC_OPR_HRS_OPN_FROM>14:20:00</LIC_OPR_HRS_OPN_FROM>
              <LIC_OPR_HRS_OPN_TO>15:20:00</LIC_OPR_HRS_OPN_TO>
              <LIC_TEL_NBR>718-123-1234</LIC_TEL_NBR>
              <LIC_EMAIL_ID>String</LIC_EMAIL_ID>
              <LIC_FAX_NBR>718-123-1234</LIC_FAX_NBR>
              <LIC_NBR_OF_SEATS>10</LIC_NBR_OF_SEATS>
              <LIC_ENTITY_CREATE_DATE>2005-01-01</LIC_ENTITY_CREATE_DATE>
              <LIC_TRAN_CHG_DATE>2006-01-01</LIC_TRAN_CHG_DATE>
              <DETAIL>
                   <LICENSE>
                        <LIC_TYPE_CODE>String</LIC_TYPE_CODE>
                        <LIC_CAMIS_CODE>String</LIC_CAMIS_CODE>
                        <LIC_CAMIS_CLASS>String</LIC_CAMIS_CLASS>
                        <LIC_CAMIS_SUB_CLASS>String</LIC_CAMIS_SUB_CLASS>
                        <BUR_DESC>String</BUR_DESC>
                        <LIC_CODE_SHORT_DESC>String</LIC_CODE_SHORT_DESC>
                        <LIC_CODE_LONG_DESC>String</LIC_CODE_LONG_DESC>
                   </LICENSE>
              </DETAIL>
         </LICENSE_TRANSACTION>
         <STATUS>
              <STATUS_CAMIS_CODE>String</STATUS_CAMIS_CODE>
              <STATUS_SHORT_DESC>String</STATUS_SHORT_DESC>
              <STATUS_DESC>String</STATUS_DESC>
         </STATUS>
         <PREMISES_ADDRESS>
              <ADDR_BLDG_NBR>String</ADDR_BLDG_NBR>
              <ADDR_STREET>String</ADDR_STREET>
              <ADDR_LOCATION>String</ADDR_LOCATION>
              <BOROUGH_DESC>Queens</BOROUGH_DESC>
              <ADDR_CITY>String</ADDR_CITY>
              <ADDR_STATE>String</ADDR_STATE>
              <ADDR_ZIP_CODE>String</ADDR_ZIP_CODE>
              <ADDR_HEALTH_AREA>String</ADDR_HEALTH_AREA>
              <ADDR_HEALTH_CTR_DIST>String</ADDR_HEALTH_CTR_DIST>
              <ADDR_COMMUNITY_DIST>String</ADDR_COMMUNITY_DIST>
              <ADDR_BIN>String</ADDR_BIN>
              <ADDR_BLOCK_NBR>String</ADDR_BLOCK_NBR>
              <ADDR_LOT_NBR>String</ADDR_LOT_NBR>
              <ADDR_ASMBLY_DIST>String</ADDR_ASMBLY_DIST>
              <ADDR_CONGS_DIST>String</ADDR_CONGS_DIST>
              <ADDR_ST_SEN_DIST>String</ADDR_ST_SEN_DIST>
              <ADDR_CTY_COUN_DIST>String</ADDR_CTY_COUN_DIST>
              <ADDR_XCOORDINATE>123</ADDR_XCOORDINATE>
              <ADDR_YCOORDINATE>1234</ADDR_YCOORDINATE>
              <DATEOFBUILDINGBUILT>2010-08-11</DATEOFBUILDINGBUILT>
              <SCHOOLAREA>String</SCHOOLAREA>
              <POLICE>String</POLICE>
              <FIRE>String</FIRE>
              <LOWCROSSSTREET>String</LOWCROSSSTREET>
              <HIGHCROSSSTREET>String</HIGHCROSSSTREET>
              <ISPARK>false</ISPARK>
         </PREMISES_ADDRESS>
         <MAILING_ADDRESS>
              <ADDR_BLDG_NBR>String</ADDR_BLDG_NBR>
              <ADDR_STREET>String</ADDR_STREET>
              <ADDR_LOCATION>String</ADDR_LOCATION>
              <BOROUGH_DESC>Queens</BOROUGH_DESC>
              <ADDR_CITY>String</ADDR_CITY>
              <ADDR_STATE>String</ADDR_STATE>
              <ADDR_ZIP_CODE>String</ADDR_ZIP_CODE>
         </MAILING_ADDRESS>
         <BUSINESS>
              <BUS_TYPE_SHORT_DESC>String</BUS_TYPE_SHORT_DESC>
              <BUS_TYPE_LONG_DESC>String</BUS_TYPE_LONG_DESC>
              <BUS_ID>String</BUS_ID>
              <BUS_TRADE_NAME>String</BUS_TRADE_NAME>
              <BUS_CORP_NAME>String</BUS_CORP_NAME>
              <SITE_TYPE>String</SITE_TYPE>
              <DESCRIPTION>String</DESCRIPTION>
              <WEBSITE>String</WEBSITE>
              <AGE_RANGE>String</AGE_RANGE>
              <BUSINESS_PRINCIPAL>
                   <PRINCIPAL>
                        <BUS_PRNC_CAMIS_ID>124</BUS_PRNC_CAMIS_ID>
                        <BUS_PRNC_TITLE>String1</BUS_PRNC_TITLE>
                        <BUS_PRNC_FULL_NAME>String1</BUS_PRNC_FULL_NAME>
                        <BUS_PRNC_FNAME>String1</BUS_PRNC_FNAME>
                        <BUS_PRNC_LNAME>String1</BUS_PRNC_LNAME>
                        <BUS_PRNC_MNAME>String1</BUS_PRNC_MNAME>
                        <BUS_PRNC_DOB>2004-01-01</BUS_PRNC_DOB>
                        <HOMEPHONE>718-123-1234</HOMEPHONE>
                        <WORKPHONE>718-123-1234</WORKPHONE>
                        <FAX>718-123-1234</FAX>
                        <EMAIL>String1</EMAIL>
                        <CELLPHONE>718-123-1234</CELLPHONE>
                        <NOTES>String1</NOTES>
                        <STARTDATE>2004-01-01</STARTDATE>
                        <ENDDATE>2004-01-01</ENDDATE>
                        <ADDRESS>
                             <ADDR_BLDG_NBR>String1</ADDR_BLDG_NBR>
                             <ADDR_STREET>String1</ADDR_STREET>
                             <ADDR_LOCATION>String1</ADDR_LOCATION>
                             <BOROUGH_DESC>Queens</BOROUGH_DESC>
                             <ADDR_CITY>String1</ADDR_CITY>
                             <ADDR_STATE>String1</ADDR_STATE>
                             <ADDR_ZIP_CODE>String1</ADDR_ZIP_CODE>
                        </ADDRESS>
                   </PRINCIPAL>
                   <PRINCIPAL>
                        <BUS_PRNC_CAMIS_ID>123</BUS_PRNC_CAMIS_ID>
                        <BUS_PRNC_TITLE>String2</BUS_PRNC_TITLE>
                        <BUS_PRNC_FULL_NAME>String2</BUS_PRNC_FULL_NAME>
                        <BUS_PRNC_FNAME>String2</BUS_PRNC_FNAME>
                        <BUS_PRNC_LNAME>String2</BUS_PRNC_LNAME>
                        <BUS_PRNC_MNAME>String2</BUS_PRNC_MNAME>
                        <BUS_PRNC_DOB>2004-01-01</BUS_PRNC_DOB>
                        <HOMEPHONE>718-123-1234</HOMEPHONE>
                        <WORKPHONE>718-123-1234</WORKPHONE>
                        <FAX>718-123-1234</FAX>
                        <EMAIL>String2</EMAIL>
                        <CELLPHONE>718-123-1234</CELLPHONE>
                        <NOTES>String2</NOTES>
                        <STARTDATE>2004-01-01</STARTDATE>
                        <ENDDATE>2004-01-01</ENDDATE>
                        <ADDRESS>
                             <ADDR_BLDG_NBR>String2</ADDR_BLDG_NBR>
                             <ADDR_STREET>String2</ADDR_STREET>
                             <ADDR_LOCATION>String2</ADDR_LOCATION>
                             <BOROUGH_DESC>Queens</BOROUGH_DESC>
                             <ADDR_CITY>String2</ADDR_CITY>
                             <ADDR_STATE>String2</ADDR_STATE>
                             <ADDR_ZIP_CODE>String2</ADDR_ZIP_CODE>
                        </ADDRESS>
                   </PRINCIPAL>
              </BUSINESS_PRINCIPAL>
              <BUSINESS_INSURANCE>
                   <BUS_WRK_CMP_CARRIER>String</BUS_WRK_CMP_CARRIER>
                   <BUS_WRK_CMP_POLICY_NBR>String</BUS_WRK_CMP_POLICY_NBR>
                   <BUS_WRK_CMP_EXP_DATE>2004-01-01</BUS_WRK_CMP_EXP_DATE>
                   <BUS_DISB_INSU_CARRIER>String</BUS_DISB_INSU_CARRIER>
                   <BUS_DISB_INSU_PLCY_NBR>String</BUS_DISB_INSU_PLCY_NBR>
                   <BUS_DISB_INSU_PLCY_EXP_DATE>2004-01-01</BUS_DISB_INSU_PLCY_EXP_DATE>
              </BUSINESS_INSURANCE>
         </BUSINESS>
         <RECEIPT>
              <RCPT_PAYOR_NAME>String</RCPT_PAYOR_NAME>
              <RCPT_CASH_FLG>true</RCPT_CASH_FLG>
              <RCPT_REMIT_AMT>123</RCPT_REMIT_AMT>
              <RCPT_APLY_AMT>123.50</RCPT_APLY_AMT>
              <RECEIPT_DETAILS>
                   <RCPT_DET_PMT_AMT>123.51</RCPT_DET_PMT_AMT>
                   <RCPT_DET_PMT_DATE>2004-01-01</RCPT_DET_PMT_DATE>
                   <RCPT_DET_PMT_TIME>20:15:00</RCPT_DET_PMT_TIME>
                   <RCPT_DET_PMT_CHK_NBR>1111</RCPT_DET_PMT_CHK_NBR>
              </RECEIPT_DETAILS>
              <RECEIPT_DETAILS>
                   <RCPT_DET_PMT_AMT>23.50</RCPT_DET_PMT_AMT>
                   <RCPT_DET_PMT_DATE>2004-01-01</RCPT_DET_PMT_DATE>
                   <RCPT_DET_PMT_TIME>20:15:11</RCPT_DET_PMT_TIME>
                   <RCPT_DET_PMT_CHK_NBR>22222</RCPT_DET_PMT_CHK_NBR>
              </RECEIPT_DETAILS>
         </RECEIPT>
    </ODS>
    I will post remaining XSLT and output in my next posts.
    Thanks for your help.

  • Sequenced Sending of Inbound XML Messages

    We are using ABAP proxies which communicate through XML messages. The current problem that we are facing is that from one INVRPT EDI message, it has to be transformed to two different messages and be sent to the same receiver. The main obstacle is that the first type of message should be processed first before the second type should be sent. If the second message is received by the receiving SAP system, that message will be invalidated and raise an issue at the receiver side.
    The current solution we are looking at is for the receiving SAP system to send an acknowledgment message however, as I looked through BPM, it is only capable of having one sending step (we need to send two messages from one outbound message however at different time intervals).
    Any idea on how to circumvent the problem? Your help will be greatly appreciated.
    Many Thanks and Best Regards,
    Rommel Mendoza
    SAP XI Consultant
    HP GDAS GDPC

    Hi Udo,
    Basically, a customer sends an EDI ORDERS file via AS2. When XI receives the message, it will transform the message to 2 XML messages, one is for order promotion while the second is the actual order XML. The order promotion XML should be sent first to SAP SNC (Supply Network Collaboration) for it to be processed there. Now, once the promotion is in place in SNC, that is the only time the order XML should be sent. If the order XML comes first before the promotion, the message will be invalidated and SNC will raise an error. We are using XI Adapters and the ABAP proxies are SAP predevelivered content for XI (so that we don't need to configure or recreate the XML structures in XI).

  • Testcase, how to split up an xml message and call a BPEL process.

    Another question.
    Considering the following XML message.
    <?xml version="1.0" encoding="UTF-8"?>
    <rows>
    <row>
    <id>10</id>
    <naam>A</naam>
    </row>
    <row>
    <id>20</id>
    <naam>B</naam>
    </row>
    </rows>
    An input message can consist of 1 to about 20000 <row></row> elements. I would like to split up this message into individual <row></row> and call a BPEL process for further processing.
    I've tried to use the file adapters feature "Files contain Multiple Messages" Publish Messages in batches of.." This did not work. ( root element expected exceptions ).
    I've also tried to invoke an extra async routing service with a mapping which removes the root element. This also doesn't work as it leaves the following ( incorrect ) xml message at the end.
    <row>
    <id>10</id>
    <naam>A</naam>
    </row>
    <row>
    <id>20</id>
    <naam>B</naam>
    </row>
    Which is logical considering how an XSL transformation works.
    Is there any way to achieve this?
    Any help is appreciated!

    You shoul create a while loop, that loops through XML payload for each row. Than you can process each individual row. See also example:
    C:\orabpel\samples\tutorials\112.Arrays\ArraySample.bpel

  • Can we view line numbers next to each step in sequence file ?

    Hi,
        I have a sequence file having 600 steps. I would like to know is there any option in test stand to set line number for each step in sequence editor so that it will be helpful for review.
    Example:
    1 Action1
    2 Action2
    600 Action600 
    Regards,
    krishna 
    Solved!
    Go to Solution.

    Krishna,
    If you just want to know the index of a step, this information is displayed at the bottom of the sequence editor in the status bar.  It shows you how many steps there are in the sequence, how many you have selected, and the index(es) of the selected step(s).
    It is also possible to display this information in the steps view as a column if you are willing to create a new column.  Follow the instructions in this KB to see how to create a new column:Changing Columns Properties of the TestStand Sequence Editor Execution View Window.
    One of the types of colums is Index. Simply set your column to that type and you will see step indexes as shown below. 
    Message Edited by Josh W. on 07-01-2009 01:50 PM
    Message Edited by Josh W. on 07-01-2009 01:53 PM
    Josh W.
    Certified TestStand Architect
    Formerly blue

  • Read XML message from a CLOB

    We are currently receiving XML messages from a business partner that goes
    through a transformation/parser first to make sure the xml document was
    in MISMO form (Mortgage Industry Standard Message Organization). Then the
    document is stored in a clob in a table. The document is stored Without
    the tags. We are storing these XML messages into a CLOB datatype for
    later processing. I want to read the CLOB and then parse out the
    individual fields to store into a table. What is the best way to
    accomplish this in PL/SQL? Here is one sample record:
    <MORTGAGEDATA>
    <APPLICATION LoanPurposeType="OTHER">
    <LenderCaseIdentifier>3631681</LenderCaseIdentifier>
    <LendersBranchIdentifier>2966448</LendersBranchIdentifier>
    </APPLICATION>
    <PROPERTY PropertyUsageType="Primary">
    <Address1>1335 test</Address1>
    <City>las cruces</City>
    <State>NM</State>
    <PostalCode>88001</PostalCode>
    </PROPERTY>
    <SUBJECTPROPERTY>
    <SubjectPropertyEstimatedValueAmount>69000</SubjectPropertyEstimatedValueAmount>
    </SUBJECTPROPERTY>
    <BORROWERRECONCILEDLIABILITY LiabilityType="HelocSubjectProperty">
    <LiabilityUnpaidBalanceAmount>0</LiabilityUnpaidBalanceAmount>
    <LiabilityMonthlyPaymentAmount>0</LiabilityMonthlyPaymentAmount>
    </BORROWERRECONCILEDLIABILITY>
    <BORROWERRECONCILEDLIABILITY LiabilityType="MortgageLoanSubjectProperty">
    <LiabilityUnpaidBalanceAmount>0</LiabilityUnpaidBalanceAmount>
    </BORROWERRECONCILEDLIABILITY>
    <BORROWER>
    <FirstName>scooby</FirstName>
    <MiddleName/>
    <LastName>doo</LastName>
    <NameSuffix/>
    <MothersMaidenName>velma</MothersMaidenName>
    </BORROWER>
    </MORTGAGEDATA>
    NOTE: I have tried to use DBMS_XMLQUERY and it comes out like this using a
    stored procedure called printclob: When I do this the data is put into
    one field called xml_app_msg. The problem is how do I reference the
    individual fields like FirstName and so on to store in another table? Can
    I apply a stylesheet and if so, how?
    Or do I create an object type called xml_app_msg with the fields lastname
    and so on?
    -- The table is raw_xml_msg_tbl and the field with the stored infomation is
    xml_app_msg.
    set serveroutput on size 50000
    declare
    queryCtx DBMS_XMLquery.ctxType;
    result CLOB;
    begin
    queryCtx := DBMS_XMLQuery.newContext('select xml_app_msg from raw_xml_msg_tbl where app_id = :APP_ID');
    -- DBMS_XMLQuery.clearBindValue(queryCtx);
    DBMS_XMLQuery.setBindValue(queryCtx,'APP_ID','LT1001');
    -- get the result..!
    result := DBMS_XMLQuery.getXML(queryCtx);
    -- Now you can use the result to put it in tables/send as messages..
    printClobOut(result);
    DBMS_XMLQuery.closeContext(queryCtx); -- you must close the query handle..
    end;
    OUTPUT:
    <?xml version = '1.0'?>
    <ROWSET>
    <ROW num="1">
    <XML_APP_MSG><MORTGAGEDATA>
    <BORROWER>
    <FirstName>Falls</FirstName>
    <MiddleName/>
    <LastName>Water</LastName>
    <NameSuffix/>
    <SSN>123-45-6789</SSN>
    </BORROWER>
    </MORTGAGEDATA>
    </XML_APP_MSG>
    </ROW>
    </ROWSET>
    null

    I parse the XML doc into a domdocument and then loop through using xpath.valueof to pull the individual values from the nodes and then build a generic insert. It works quite well with a small number of columns. I'm not sure how it would work with a lot of columns. You can get code examples from Steve Muench's book "Developing Oracle XML Applications".

Maybe you are looking for