Bea-inlinedxml + OSB 11.1.1.7

Hi-
Looks like bea-inlinedxml() is not working as expected on 11.1.1.7
I used to use bea-inlinedxml() to return a CDATA into a XML node but now OSB is returning it empty.
OSB 11.1.1.7 ChangeLog shows:
+13902323 - The bea-inlinedxml() function trims whitespace when parsing text to XML+
Assign Activity Produces an Empty Message Body if a New Line Character Exists
Bug: 16205232
Added: 07-March-2013
Platform: All
The resulting message body is empty if a proxy service processes an XML string with a newline character after the XML declaration (<?xml version="1.0" encoding="UTF-8"?>), the message flow includes an Assign activity that uses fn-bea:inlinedXML() to assign that XML string to a variable, and the message flow uses the variable to replace the contents of $body. This is related to issue 13902323, caused by the fn-bea:inlinedxml() function trimming whitespace when parsing text to XML.
Maybe this fix broke inlinedXML behavior??
Please help.

Hi,
We are also facing the same issue. Do we have any suggested patch from Oracle yet ?
In the mean time, we have worked around the issue by doing the following
<soap-env:Body>{fn-bea:inlinedXML($xmlParseResult)}</soap-env:Body>
regards.

Similar Messages

  • OSB: fn-bea:inlinedXML format my signed XML

    Hello.
    I'm trying to replace my output xml message with the same message, but digitally signed.
    My proxy flow looks like:
    1. Call to BS.
    2. In response, take the output from BS and digitally sign it (Service callout to a signing service).
    3. Take the output from that service (it returns the signed xml into a "CDATA" section).
    4. Extract the xml (CDATA), and call to fn-bea:inlinedXML
    5. Substitute the output message with the xml in point 4).
    But "inlinedXML" seems to format the xml string (whitespace, line breaks,...), so the sign is no longer valid.
    ¿Can OSB convert from string to xml without formatting?.
    Thanks.

    Hello.
    Does anyone knows how to tell OSB to stop formatting my XML?.
    Thanks.

  • Using fn-bea:inlinedXML and I have no result

    Hello everyone:
    I´m using with OEPE PS3 and testing a Proxy (with Biz, wsdl, xsd, and xquery etc).
    I´m developing a proxy and into Message Flow , My Request Action is OK, but in Response Action I´m using a Replace action with values:
    XPATH: +./executeResponse/executeReturn+
    In variable: anyType1*
    Expression: I map to xquery file --> PERSON_RESPONSE.xq,
    I have one parameter (variable name) called: anyType1 and value: fn-bea:inlinedXML(data($anyType1/node()))
    I have been a request and receive this:
    +<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
    +<soapenv:Body>+
    +<executeResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">+
    +<executeReturn xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="UTF-8"?><person></person>]]></executeReturn>+
    +</executeResponse>+
    +</soapenv:Body>+
    +</soapenv:Envelope>+
    My PERSON_RESPONSE.xq is:
    declare namespace ns1 = "http://www.domain.com/XSD/ABCD";
    declare namespace ns3 = "http://www.domain.com/XSD/1234";
    declare namespace ns0 = "http://www.domain.com/XSD/PERSONS";
    declare namespace xf = "http://tempuri.org/PROJECT/XQUERY/XQ_DETAIL_PERSON_RESPONSE/";
    declare namespace ns1 = "http://www.domain.com/XSD/ABCD";
    declare namespace ns3 = "http://www.domain.com/XSD/1234";
    declare namespace ns0 = "http://www.domain.com/XSD/PERSONS";
    declare namespace xf = "http://tempuri.org/PROJECT/XQUERY/XQ_DETAIL_PERSON_RESPONSE/";
    declare function xf:XQ_DETAIL_PERSON_RESPONSE($anyType1 as element(*))
    as element(ns0:processDetailPersonResponse) {
    <ns0:processDetailPersonResponse>
    <ns0:bodyResponse>
    <ns0:person>
    <ns0:data>
    <ns0:id>{ *$anyType1/ns3:person/ns3:data* }</ns0:id>
    </ns0:data>
    </ns0:person>
    </ns0:bodyResponse>
    </ns0:processDetailPersonResponse>
    declare variable $anyType1 as element(*) external;
    xf:XQ_DETAIL_PERSON_RESPONSE($anyType1)
    Finally my result in Response Action is not correct, because my Xquery function not receive a correct value. I´m using from Replace Action:
    fn-bea:inlinedXML(data($anyType1/node()))
    Why? What is the problem,
    Someone can give me any help, please ?
    Thanks in advance

    Hi
    I am also facing the same problem.
    for me default namespace is getttin added but not sure how to remove.
    Following is the message we are getting in OSB to send
    <Notification>
    <Type>Data</Type>
    <Channel>webservice</Channel>
    <Security>NONSSL</Security>
    <Message>
    <type>Transfer</type>
    <msg><![CDATA[<Transfer></Transfer>]]></msg>
    </Message>
    <Destination>XXXXXX</Destination>
    <Priority>HIGH</Priority>
    </Notification>>
    Ideally what we are sending in our CDATA there should not be any change.
    but when we are printing out body variable after inlinedxml() function.
    its adding default namespace in Transfer tag.
    <Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Transfer xmlns=""></Transfer>
    </Body>>
    why OSB is putting xmlns="" in Transfer tag.
    Edited by: abhishek on Sep 11, 2012 12:51 AM
    Edited by: abhishek on Sep 11, 2012 1:03 AM

  • OSB : BEA-382510: OSB Assign action failed updating variable

    Hi all,
    I just started learning OSB and created a simple process .
    This is my request :
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         </soap:Header>
         <soapenv:Body>
         <hel:getGreeting      xmlns:hel="http://hello.alsb.com/">
         <!--Optional:-->
         <arg0>string</arg0>
         </hel:getGreeting>
         </soapenv:Body>
         </soapenv:Envelope>
    im getting a error response in Assign:
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
         <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>
         BEA-382510: OSB Assign action failed updating variable "Test": weblogic.xml.query.exceptions.XQueryTypeException: {err}XP0006: "element return { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type {http://www.w3.org/2001/XMLSchema}string
         </faultstring>
         <detail>
         <con:fault      xmlns:con="http://www.bea.com/wli/sb/context">
         <con:errorCode>BEA-382510</con:errorCode>
         <con:reason>
         OSB Assign action failed updating variable "Test": weblogic.xml.query.exceptions.XQueryTypeException: {err}XP0006: "element return { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type {http://www.w3.org/2001/XMLSchema}string
         </con:reason>
         <con:location>
         <con:node>RouteTo_HelloWorldBiz</con:node>
         <con:path>response-pipeline</con:path>
         </con:location>
         </con:fault>
         </detail>
         </soapenv:Fault>
         </soapenv:Body>
         </soapenv:Envelope>
    This is my Xquery:
    xquery version "1.0" encoding "Cp1252";
    declare namespace xf = "http://tempuri.org/GoodbyeWorld_SB/XQuery/Hello_to_GoodBye/";
    declare function xf:Hello_to_GoodBye($helloStr as xs:string)
    as xs:string {
    replace($helloStr, 'HELLO', 'Goodbye')
    declare variable $helloStr as xs:string external;
    xf:Hello_to_GoodBye($helloStr)
    in my message response pipeln of the proxy service:
    i have added the assign and given the expression : $body/hel:getGreetingResponse/return
    var :Test
    After the assign: i have given a replace activity:
    xpath: ./hel:getGreetingResponse/return
    varabile : body
    Expression : string($Test)
    when i test in OSB console:
    im getting this error:
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
         <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>
         BEA-382510: OSB Assign action failed updating variable "Test": weblogic.xml.query.exceptions.XQueryTypeException: {err}XP0006: "element return { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type {http://www.w3.org/2001/XMLSchema}string
         </faultstring>
         <detail>
         <con:fault      xmlns:con="http://www.bea.com/wli/sb/context">
         <con:errorCode>BEA-382510</con:errorCode>
         <con:reason>
         OSB Assign action failed updating variable "Test": weblogic.xml.query.exceptions.XQueryTypeException: {err}XP0006: "element return { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type {http://www.w3.org/2001/XMLSchema}string
         </con:reason>
         <con:location>
         <con:node>RouteTo_HelloWorldBiz</con:node>
         <con:path>response-pipeline</con:path>
         </con:location>
         </con:fault>
         </detail>
         </soapenv:Fault>
         </soapenv:Body>
         </soapenv:Envelope>
    aany suggestions on where the issue is.
    im totaly stuck here:
    TIA,
    karthik

    it is not clear at which point you are invoking Hello_to_GoodBye, and using which argument
    anyway it's likely that you are passing an Xml element (a node, something like <hello>Charlie</hello>) instead of a simple type (a string, like "Charlie")
    you should use the function data($body/bla) or text ($body/bla/text() ) to extract the value (Charlie) of your element

  • BEA-382513: OSB Replace action failed: bad value for type element anyType

    Hello, in OSB I get this strange error message on my XQUERY TRANSFORMATION.
    *<faultstring>BEA-382513: OSB Replace action failed updating variable "response":*
    com.bea.wli.common.xquery.XQueryException:
    *Error parsing XML: {err}XP0006: "*
    *element {http://xmlns.oracle.com/pcbpel/adapter/db/top/CS2AdapterSelectOffenePosten_v0_5}Cs2DebitorOpVieCollection*
    *{ {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }":*
    bad value for type element
    *{http://xmlns.oracle.com/pcbpel/adapter/db/top/CS2AdapterSelectOffenePosten_v0_5}cs2RechungungenResponse*
    *{ {http://www.w3.org/2001/XMLSchema}anyType }*
    *</faultstring>*
    I'm a pl/sql developer and I have no idea what this error message is telling me.
    In this forum I'v read someting about a wrong namespace declaration. I can't see any wrong value on my xml (ok, I'm not the specialist here...)
    Maybe someone of you xquey cracks might have a look at my code?
    This is what I have:
    _1.) a XQuery variable called cs2RechnungenResponse with this content:_
    <cs2:Cs2DebitorOpVieCollection
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:cs2="http://xmlns.oracle.com/pcbpel/adapter/db/top/CS2AdapterSelectOffenePosten_v0_5">
         <cs2:Cs2DebitorOpVie>
              <cs2:f40Konto>333</cs2:f40Konto>
              <cs2:AMT_BEZEICHNUNG>Amt für Gesundheit</cs2:AMT_BEZEICHNUNG>
              <cs2:f40Belnr>555</cs2:f40Belnr>
              <cs2:f40Sohab>S</cs2:f40Sohab>
              <cs2:f40Dmbet>100</cs2:f40Dmbet>
              <cs2:f40Fadat>2011-05-05T00:00:00.000+02:00</cs2:f40Fadat>
              <cs2:f40Valut>2011-05-05T00:00:00.000+02:00</cs2:f40Valut>
              <cs2:f40Mahns/>
              <cs2:f40F40Sj>0</cs2:f40F40Sj>
         </cs2:Cs2DebitorOpVie>
    </cs2:Cs2DebitorOpVieCollection>
    _2. a xquery with this code:_
    (:: pragma bea:global-element-parameter parameter="$cs2RechnungenResponse" element="ns2:cs2RechnungenResponse" location="../adapters/cs2_adapters/xsd/CS2AdapterSelectOffenePosten_v0_5_table.xsd" ::)
    (:: pragma bea:global-element-return element="ns0:getDebitorRechnungResponse" location="../../interfaces/RechnungServiceTypes_v0_6.xsd" ::)
    declare namespace ns3 = "http://www.llv.li/common/types/v1";
    declare namespace ns2 = "http://xmlns.oracle.com/pcbpel/adapter/db/top/CS2AdapterSelectOffenePosten_v0_5";
    declare namespace ns1 = "http://www.llv.li/fin/types/v1";
    declare namespace ns0 = "http://www.llv.li/fin/services/rechnungService/v1";
    declare namespace xf = "http://tempuri.org/fin_sb/RechnungsService/transformations/CARI_CS_2DBAdpter_to_RechnungsServiceGetOffenePosten_v0_5/";
    declare function xf:CARI_CS_2DBAdpter_to_RechnungsServiceGetOffenePosten_v1_0($cs2RechnungenResponse as element(ns2:cs2RechnungenResponse))
    as element(ns0:getDebitorRechnungenResponse) {
    <ns0:getDebitorRechnungenResponse schemaVersion="0.6">
              if ($cs2RechnungenResponse/ns2:Cs2DebitorOpVie) then
              <ns0:debitorRechnungList>
         for $Cs2DebitorOpVie in $cs2RechnungenResponse/ns2:Cs2DebitorOpVie
         return
         <ns0:debitorRechnung>
              <ns1:peid>0</ns1:peid>
              <ns1:rechnungsnummer>{ data($Cs2DebitorOpVie/ns2:f40Belnr) }</ns1:rechnungsnummer>
              <ns1:rechnungsdatum>{ xs:date(fn-bea:remove-timezone-from-dateTime(data($Cs2DebitorOpVie/ns2:f40Fadat))) }</ns1:rechnungsdatum>
              <ns1:faelligAm>{ xs:date(fn-bea:remove-timezone-from-dateTime(data($Cs2DebitorOpVie/ns2:f40Valut))) }</ns1:faelligAm>
         <ns1:behoerde>{ data($Cs2DebitorOpVie/ns2:AMT_BEZEICHNUNG) }</ns1:behoerde>
         <ns1:positionList>
              <ns1:position>
                   <ns1:positionsnummer>1</ns1:positionsnummer>
                                                 <ns1:betrag>{ data($Cs2DebitorOpVie/ns2:f40Dmbet) }</ns1:betrag>
                                                 <ns1:waehrung>
                                                      <ns1:isoCode>CHF</ns1:isoCode>
                                                      <ns1:bezeichnung>Schweizer Franken</ns1:bezeichnung>
                                                 </ns1:waehrung>
              </ns1:position>
              </ns1:positionList>
         <ns1:status>offen</ns1:status>
              if ($Cs2DebitorOpVie/ns2:f40Mahns/text() > "") then
                   <ns1:mahnstufe>{ xs:int(data($Cs2DebitorOpVie/ns2:f40Mahns)) }</ns1:mahnstufe>
              else ()
         </ns0:debitorRechnung>
         </ns0:debitorRechnungList>
         else ()
    <ns0:resultatStatus>
         <ns3:code>Erfolgreich</ns3:code>
         <ns3:beschreibung>Rechnungen aus MFK fehlen</ns3:beschreibung>
    </ns0:resultatStatus>     
    </ns0:getDebitorRechnungenResponse>
    declare variable $cs2RechnungenResponse as element(ns2:cs2RechnungenResponse) external;
    xf:CARI_CS_2DBAdpter_to_RechnungsServiceGetOffenePosten_v1_0($cs2RechnungenResponse)
    _3. this should result in this response, but it doesn't_
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <v1:getDebitorRechnungenResponse schemaVersion="0.6" xmlns:v1="http://www.llv.li/fin/services/rechnungService/v1">
    <v1:debitorRechnungList>
    <v1:debitorRechnung>
    <v11:peid xmlns:v11="http://www.llv.li/fin/types/v1">333</v11:peid>
    <v11:rechnungsnummer xmlns:v11="http://www.llv.li/fin/types/v1">555</v11:rechnungsnummer>
    <v11:rechnungsdatum xmlns:v11="http://www.llv.li/fin/types/v1">2011-05-05</v11:rechnungsdatum>
    <v11:faelligAm xmlns:v11="http://www.llv.li/fin/types/v1">2011-05-05</v11:faelligAm>
    <v11:behoerde xmlns:v11="http://www.llv.li/fin/types/v1">Amt für Gesundheit</v11:behoerde>
    <v11:positionList xmlns:v11="http://www.llv.li/fin/types/v1">
    <v11:position>
    <v11:positionsnummer>1</v11:positionsnummer>
    <v11:betrag>100</v11:betrag>
    <v11:waehrung>
    <v11:isoCode>CHF</v11:isoCode>
    <v11:bezeichnung>Schweizer Franken</v11:bezeichnung>
    </v11:waehrung>
    </v11:position>
    </v11:positionList>
    <v11:status xmlns:v11="http://www.llv.li/fin/types/v1">offen</v11:status>
    </v1:debitorRechnung>
    </v1:debitorRechnungList>
    <v1:resultatStatus>
    <v11:code xmlns:v11="http://www.llv.li/common/types/v1">Erfolgreich</v11:code>
    <v11:beschreibung xmlns:v11="http://www.llv.li/common/types/v1">Rechnungen aus MFK fehlen</v11:beschreibung>
    </v1:resultatStatus>
    </v1:getDebitorRechnungenResponse>
    </soap-env:Body>
    </soapenv:Envelope>
    But I do not get this expectet result, all I get is the BEA-382513: OSB Replace action failed: bad value for type element anyType?
    Any help would be appreciated.
    Thanks
    Best regards
    rk

    cs2RechungungenResponse or cs2RechnungenResponse ? the error message says cs2RechungungenResponse, but the actual element is cs2RechnungenResponse (one less "u")

  • Fn-bea:inlinedXML

    Hi. I'm having problems trying to convert a string to a XML document in order to validate it.
    This is my XML document:
    <soa:execute xmlns:soa="http://com/accenture/tim/soa">
    <soa:data><![CDATA[
    <?xml version='1.0' encoding='UTF-8'?>
    <customer>
    <name>customer name</name>
    </customer>
    ]]>
    </soa:data>
    </soa:execute>
    That is actually inside a SOAP Body and I'm trying to use the following XPath
    fn-bea:inlinedXML($body/soa:execute/soa:data/text())
    to create de XML based on the element 'soa:data' (which it is defined as string) but it's not working.
    Does anyone have an idea of how to do that?
    I do not have the error string right now but it's something complaining about a wrong type.
    That function accepts only xs:string as argument.
    Thank you!
    Edited by filipems at 08/20/2007 4:20 PM
    Edited by filipems at 08/20/2007 4:21 PM
    Edited by filipems at 08/21/2007 2:14 PM

    Hi,
    I am facing the same kind of error. Can you share how this issue is solved.Your reply is very helpful.
    Thanks in advance.

  • BEA-382501- OSB Service Callout action received an unrecognized response

    Hi,
    I am getting the above response while executing the proxy service which is based on http protocol.
    I am able to get the proper response through the business service, but the same i am not able to get in proxy service.
    For this I have configured one business service based on below parameters.
    Service Type Any XML Service
    Transport Configuration
    Protocol http
    Load Balancing Algorithm round-robin
    Endpoint URI http://01hw146484:8080/SpringFileUpload/testservlet?name=pratik
    Retry Count 0
    Retry Iteration Interval 30
    Retry Application Errors Yes
    HTTP Transport Configuration
    Read Timeout 0
    Connection Timeout 0
    HTTP Request Method GET
    Authentication None
    Proxy Server
    Follow HTTP redirects Disabled
    Use Chunked Streaming Mode Enabled
    Proxy service on below parameters:
    Service Type Any XML Service
    Transport Configuration
    Protocol http
    Endpoint URI /SMSProxy/PS_SMS_BasedOnBS
    Get All Headers No
    Headers
    HTTP Transport Configuration
    HTTPS required No
    Authentication None
    Message Handling Configuration
    Transaction Required Disabled
    Same Transaction For Response Disabled
    Content Streaming Disabled
    XOP/MTOM Support Disabled
    Page Attachments to Disk No
    I am using service call out to call the business service, but not able to get the any response using the proxy. my business service is working properly.
    Please let me know where i am doing mistake.
    Edited by: truptipatil on Jan 12, 2012 3:07 PM

    Hi,
    even if I am adding a service error handler, I am getting the same error, I don't why proxy is not able to get the proper response.
    I am getting the below error.
    <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, stage1, ERROR] <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382501</con:errorCode>
    <con:reason>OSB Service Callout action received an unrecognized response</con:reason>
    <con:details>
    <con1:UnrecognizedResponseDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:http-response-code>200</con1:http-response-code>
    </con1:UnrecognizedResponseDetail>
    </con:details>
    <con:location>
    <con:node>PipelinePairNode1</con:node>
    <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>stage1</con:stage>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>>
    Any help in this regards, is highly appreciated.

  • Getting --BEA-382510: OSB Assign fails.

    Hi I have exposed an EJB as a Business Service though OSB.
    Above this business Service sits a Proxy Service which is called the Data Service and Over the Data Service Sits the actual Proxy Service which is exposed to the clients.
    While testing the data service, the flow always fails when the response from the business service to the data service.
    "OSB Assign action failed updating variable "responseParam": weblogic.xml.query.exceptions.XQueryDynamicException: {err}FORG0005: expected exactly one item, got 0 items"
    The response from the EJB is being returned as expected but when the response reaches the response pipeline (where i have put a transformation) it fails with the above error.
    Individual queries and transformation are working fine when tested discreetly, but when the flow is triggered end to end it fails
    Can some body please help. I am completely stuck.
    Edited by: sgupta2 on Jul 15, 2009 1:40 PM

    This is one of the very basic errors in XQuery and XPath. This is thrown where an XPath is supposed to return a node but it can not retrieve one at runtime. There can be many reasons for this.
    For ex. your Xpath may be wrong, source XML does not contain the element which you are looking for, providing incorrect namespaces of the element. You can log the input XML to verify that the element your XPath is referring to is present. Then you can separately test the XPath/XQuery to validate its correctness.

  • BEA-382502 -- OSB Service Callout action received an error response

    Hi,
    I am trying to develope a simple application with two proxy services and Business services. The first proxy sevice communicates with the second one which in turn communicates with Business service.
    I am receving this error during the communication between the proxy services.
    I have tried enabling both "configure Soap body" and "configure payload document" to pass the request from one proxy service to other. In either case am receving the same error. Can you please help me here.
    Thanks in Advance,
    Mahi
    Edited by: Mahidhara on Sep 23, 2009 12:33 AM

    Hey all,
    I have solved problem with help of one my friend..Actually its possible through routing the service. I agree its a different approach than service callout but it acts as a quick fix.
    The key issue is to map :
    1. Request in format of Proxy service schema to Request of Business service (Legacy service-In this case Siebel)
    2. Response in format of Proxy service schema to Response of Business service (Legacy service-In this case Siebel)
    This is possible using XQuery transformation.
    Steps to achieve this::
    1. Create a XQuery by mapping proxy service schema and business service schema.
    2. Now Create message flow as following: Proxy service-->Pipeline Pair-->Stage1-->Route to business service.
    3. Now in stage1, choose Add an action-->Message processing-->Replace.
    4. In replace, do this - Replace ./* in variable body by Xquery which you created in 1.
    This will work smoothly.
    If any problems, let me know. If any insights on above, please comment.
    Will update this thread whenever I get info about service callout working. Meanwhile anybody searching for quick fix, can use this.
    Thanks and Regards,
    Swapnil Kharwadkar.

  • OSB: Strip CDATA while sending to email

    Hi
    My idea is user will receive html in his email with our dynamic text via OSB 11g.
    I am sending an HTML code through OSB email.
    HTML file has a template.
    I insert dynamic text (text+xml actually) at a specific location in HTML.
    business service has input type = text, output type = none and protocol is email. Content-Type of business service is changed to "text/html" at run time by replace action for transport header in Route action.
    Issue is: In mail, in message body intial tags of dynamic text is missing and I can see find ]]> at the end in my email message body. When I right click on received HTML and click on "view source", I see <![CDATA and ]]> encapsulates my dynamic text.
    I can not see <![CDATA and ]]> in my message flow though it must exist since when I tried fn-bea:serialize() with email body content OSB gave me error of unbalanced tag metadata for <![CDATA.
    Is there a way to strip <![CDATA and ]]> ?? I don't wish my end user to see ]]> in message body.
    Thanks and Regards
    Swapnil Kharwadkar

    I think the below function will do the job,
    If the InputString=<![CDATA[        
          <AddressLine1>UNIT 21 WINDSOR PARK</AddressLine1>
          <AddressLine2>50 WINDSOR AVENUE</AddressLine2>
    fn-bea:inlinedXML($InputString)
    wll provide out put as
    Simple XML tag
    +<?xml version="1.0" encoding="UTF-8" ?>+
    +<AddressLine1>UNIT 21 WINDSOR PARK</AddressLine1>+
    +<AddressLine2>50 WINDSOR AVENUE</AddressLine2>+
    Please let me know, how you go.
    Thanks,
    Vijay

  • How to remove SOAP tag from request going from OSB flow

    Hi,
    I need to send message to external party...I am using OSB for that. ...But the external party said they dont want any soap tag in the message as they need only required information .
    *<?xml version=”1.0” encoding=”UTF-8” ?>
    <soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope /”>
    <soapenv:Header/>
    <soap-env:Body xmlns:soap-env=”http://schemas.xmlsoap.org/soap/envelope /”>
    <TransactionAcknowledgement xmlns="">
    <TransactionId>HELLO EXTERNAL</TransactionId>
    <UserId>MC</UserId>
    <SendingPartyType>SE</SendingPartyType>
    </TransactionAcknowledgement>
    </soap-env>
    </soap-Envelope>*
    but they need only following message.
    * <TransactionAcknowledgement xmlns="">
    <TransactionId>HELLO EXTERNAL</TransactionId>
    <UserId>MC</UserId>
    <SendingPartyType>SE</SendingPartyType>
    </TransactionAcknowledgement>*
    Following are the log message printing in my log.
    Following message we have to send
    <TransactionAcknowledgement><TransactionId>HELLO EXTERNAL</TransactionId><UserId>MC</UserId><SendingPartyType>SE</SendingPartyType></TransactionAcknowledgement>>
    Then we are applying inlinedXML() on above message and getting following message
    After function fn-bea:inlinedXML
    EMCMSSL Body ::::::
    <Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <TransactionAcknowledgement xmlns="">
    <TransactionId>HELLO EXTERNAL</TransactionId>
    <UserId>MC</UserId>
    <SendingPartyType>SE</SendingPartyType>
    </TransactionAcknowledgement>
    </Body>
    Finally we are printing the outbound variable
    Outbound variable:
    <con:endpoint name="BusinessService$EMCNotification$BusinessService$external$PushDataBS" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service>
    <con:operation>advisory123</con:operation>
    </con:service>
    <con:transport>
    <con:uri>https://XXXX.sg:50001/XISOAPAdapter/MessageServlet</con:uri>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>exactly-once</con:qualityOfService>
    <con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <tran:user-header name="JMSType" value="Transaction Acknowledgement"/>
    <http:Content-Type>text/xml</http:Content-Type>
    <http:SOAPAction>""</http:SOAPAction>
    </tran:headers>
    </con:request>
    </con:transport>
    <con:security>
    <con:doOutboundWss>false</con:doOutboundWss>
    </con:security>
    </con:endpoint>>
    But I am not getting how the client is receiving soap header.
    please suggest for the same.

    Hi All.
    For removing the namespace from header I found following function but not sure how tom implement it for my requirement.
    Pleae help if possible.
    I need a XQuery function to remove name space from my xml message.
    my message is
    <Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <TransactionAcknowledgement xmlns="">
    <TransactionId>HELLO MSSL</TransactionId>
    <UserId>MC</UserId>
    <SendingPartyType>SE</SendingPartyType>
    </TransactionAcknowledgement>
    </Body>
    I need
    <Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <TransactionAcknowledgement xmlns="">
    <TransactionId>HELLO MSSL</TransactionId>
    <UserId>MC</UserId>
    <SendingPartyType>SE</SendingPartyType>
    </TransactionAcknowledgement>
    </Body>
    Function I found is
    declare namespace xf = "http://tempuri.org/vijfhuizen/com/myMessage/";
    declare function xf:strip-namespace($e as element())
    as element()
    element { xs:QName(local-name($e)) }
    for $child in $e/(@*,node())
    return
    if ($child instance of element())
    then xf:strip-namespace($child)
    else $child
    declare variable $e as element() external;
    xf:strip-namespace($e)
    I have created the function but not suire how to execute it.

  • OSB-how to pass xml to another proxy Service

    Hi
    i am getting a xml as string after java call out and then i am using "fn-bea:inlinedXML($iso2xml_31)" for converting the string to XML,but when i am passing the inlinexml variable to another Proxy service by servicecallout i am not getting it.
    grateful if anyone can throw some light in this matter.
    thanks

    passing the inlinexml variable to another Proxy serviceMake sure the assign in the service callout is passing the right content to the other proxy service... Use OSB Test console to check the content of the variables...
    Cheers,
    Vlad

  • Need Help:Handling CLOB in OSB Proxy Service

    Hello All-
    We have created an AQ in Oracle DB which will have the following message Structure:
    CREATE OR REPLACE TYPE enqueue_payload AS OBJECT
    ( field1 VARCHAR2(100),
    field2 VARCHAR2(100),
    field3 DATE,
    field4 VARCHAR2(100),
    field5 NUMBER,
    payload CLOB,
    In the Payload field we are enqueing an XML message.
    We have to use a OSB proxy service to dequeue the message from the AQ, transform it to another format and send to a SOA Composite.
    We created a AQ Adapter in Jdeveloper 11g and imported the WSDL, XSD and .jca jca binding file into the OSB project. And configured the OSB proxy service using the WSDL imported.
    However in OSB proxy service message flow when I try to create an XQUERY transformation, I see that the Payload field does not expose the structure of the XML message that is being enqueued. I even changed the message structure definition to have the payload field as XMLType. But it didn't help.
    On analyzing the XSD created by AQ Adapter, I see that the payload is being defined as "string" in the XSD.
    Inputs Needed
    =========
    1. How can we parse the payload field defined as CLOB/XMLType in OSB so that I can see the structure of the XML message it holds ?
    2. Is there any in-built function in OSB to convert it to XML ?
    3. Any other inputs in order to transform the XML message coming in the payload field as CLOB/XMLType
    Please provide your inputs and I hope that I have clearly explained my use case.
    Thanks in advance for your time and help!!
    Regards,
    Dibya

    Hi Atheek-
    Please find the logs below:
    Payload:: Indicates the actual payload with all the headers fields coming from AQ
    Payload After Applying the Function:: Indicates the data that is logged after applying the fn-bea:inlinedXML function.
    The function fn-bea:inlinedXML is extracting the data from the XML tags :(
    ####<Dec 20, 2010 12:14:26 PM GMT+05:30> <Info> <ALSB Logging> <vhydaiavm-03> <osb_server1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-000A464703C2C06A4338> <6751713a0ce9f61d:-6e70b631:12d02855fef:-7ff4-0000000000000002> <1292827466595> <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, stage1, REQUEST] Payload:: <apps:ORA_FUSION_LOAD_XMLTYPE xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:apps="http://xmlns.oracle.com/xdb/APPS">
    *<RICE_ID>PRJ_INT_30</RICE_ID>*
    *<SOURCE_SYSTEM>ORACLE</SOURCE_SYSTEM>*
    *<DATETIME>2010-12-20T10:49:17.000Z</DATETIME>*
    *<TRANSACTION_ID>PRJ_INT_30-1</TRANSACTION_ID>*
    *<RECORD_COUNT>1</RECORD_COUNT>*
    *<PAYLOAD><![CDATA[<ALTPPSEGHIERARCHY><sgmt_name>Company</sgmt_name><include_parent_child>C</include_parent_child><parent_flex_value>P</parent_flex_value><child_flex_value_low>03</child_flex_value_low><child_flex_value_high>03</child_flex_value_high><start_date_active></start_date_active><end_date_active></end_date_active></ALTPPSEGHIERARCHY>]]></PAYLOAD>*
    *<ATTRIBUTE1 NULL="TRUE"/>*
    *<ATTRIBUTE2 NULL="TRUE"/>*
    *<ATTRIBUTE3 NULL="TRUE"/>*
    *<ATTRIBUTE4 NULL="TRUE"/>*
    *<ATTRIBUTE5 NULL="TRUE"/>*
    *</apps:ORA_FUSION_LOAD_XMLTYPE>>*
    ####<Dec 20, 2010 12:14:26 PM GMT+05:30> <Info> <ALSB Logging> <vhydaiavm-03> <osb_server1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-000A464703C2C06A4338> <6751713a0ce9f61d:-6e70b631:12d02855fef:-7ff4-0000000000000002> <1292827466595> <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, stage1, REQUEST] Payload After Applying the Function:: PRJ_INT_30ORACLE2010-12-20T10:49:17.000ZPRJ_INT_30-11>
    ####<Dec 20, 2010 12:14:26 PM GMT+05:30> <Info> <JDBC> <vhydaiavm-03> <osb_server1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <6751713a0ce9f61d:-6e70b631:12d02855fef:-7ff4-0000000000000002> <1292827466688> <BEA-001128> <Connection for pool "EBS_DHAARA_DataSource" closed.>

  • How to handle xml CDATA string element when OSB calling a webservice

    Hi
    Right, I'm new to OSB so bear with me.
    The following is a response from am operation in a webservice.
    As you can see there is a CDATA string in "<m:return>" element. I want to transform the CDATA string to XML.
    I have searched the forum and found a couple of similar queries and tried following the answers and this is what I'm getting.
    Please advise as to where I have gone wrong and how I can correct it.
    <env:Body xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
         <m:ReservationCancelResponse xmlns:m="http://domain/jws">
              <m:return>
                   <![CDATA[<?xml version="1.0" encoding="UTF-8"?><ReservationCancelNegativeAck><MessageId>HGv2OWS6hq</MessageId><ReservationNum>1234</ReservationNum><CsrId></CsrId><ErrorCode>02</ErrorCode><ErrorMessage>Reservation '1234' does not exist.</ErrorMessage></ReservationCancelNegativeAck>]]>
              </m:return>
         </m:ReservationCancelResponse>
    </env:Body>
    In my response pipeline I have an Assign and Replace action.
    My Assign is:
    Expression: fn-bea:inlinedXML($body)
    Variable: reservationCancelReponse
    When I log $reservationCancelReponseI get... so this bit is OK.
    <ReservationCancelNegativeAck>
    <MessageId>HGv2OWS6hq</MessageId>
    <ReservationNum>1234</ReservationNum>
    <CsrId/>
    <ErrorCode>02</ErrorCode>
    <ErrorMessage>Reservation '1234' does not exist.</ErrorMessage>
    </ReservationCancelNegativeAck>
    My Replace
    XPath: executeResponse/executeReturn/text()
    In Variable: body
    Expression: responseTransform.xq (binding with $reservationCancelReponse)
    Replace Node Contents is checked
    When I test the operation using the proxy service I get the following:
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
    <m:ReservationCancelResponse xmlns:m="http://com/ventyx/abws/jws">
    <m:return>
    &lt;?xml version="1.0" encoding="UTF-8"?>&lt;ReservationCancelNegativeAck>&lt;MessageId>HGv2OWS6hq&lt;/MessageId>&lt;ReservationNum>1234&lt;/ReservationNum>&lt;CsrId>&lt;/CsrId>&lt;ErrorCode>02&lt;/ErrorCode>&lt;ErrorMessage>Reservation &amp;apos;1234&amp;apos; does not exist.&lt;/ErrorMessage>&lt;/ReservationCancelNegativeAck>
    </m:return>
    </m:ReservationCancelResponse>
    </env:Body>
    </env:Envelope>
    The CDATA string hasn't been transformed.
    Please help. What I have I missed.
    Thanks in advance.
    MI

    OK
    I have made some amendments to the original process and made some progress but still isn't quite right.
    I have created a schema:
    <complexType name="ReservationCancelNegativeAckType">
         <sequence>
                   <element name="MessageId" minOccurs="0">
                        <annotation>
                             <documentation>
                             </documentation>
                        </annotation>
                        <simpleType>
                             <restriction base="string" />
                        </simpleType>
                   </element>
                   <element name="ReservationNum" minOccurs="0">
                        <annotation>
                             <documentation>
                             </documentation>
                        </annotation>
                        <simpleType>
                             <restriction base="string" />
                        </simpleType>
                   </element>
                   <element name="CsrID" minOccurs="0">
                        <annotation>
                             <documentation>
                             </documentation>
                        </annotation>
                        <simpleType>
                             <restriction base="string" />
                        </simpleType>
                   </element>
                   <element name="ErrorCode" minOccurs="0">
                        <annotation>
                             <documentation>
                             </documentation>
                        </annotation>
                        <simpleType>
                             <restriction base="string" />
                        </simpleType>
                   </element>
                   <element name="ErrorDescription" minOccurs="0">
                        <annotation>
                             <documentation>
                             </documentation>
                        </annotation>
                        <simpleType>
                             <restriction base="string" />
                        </simpleType>
                   </element>
         </sequence>
    </complexType>
    <element name="ReservationCancelNegativeAckType"
         type="tns:ReservationCancelNegativeAckType">
    </element>
    I have amended the earlier Assign action to use an XQ to extract the CDATA string into the schema
    My Assign is:
    Expression: responseToSchema.xq
    Variable: reservationCancelReponse
    When I log $reservationCancelReponse variable I get... so this bit is OK.
    <ReservationCancelNegativeAck>
    <MessageId>HGv2OWS6hq</MessageId>
    <ReservationNum>1234</ReservationNum>
    <CsrId/>
    <ErrorCode>02</ErrorCode>
    <ErrorMessage>Reservation '1234' does not exist.</ErrorMessage>
    </ReservationCancelNegativeAck>
    I have also changed my Replace, this time I am using an XQ which will map the schema to the XSD WSDL "ReservationCancelResponse"operation.
    XPath: .
    In Variable: body
    Expression: responseFromSchemaToService.xq (binding with $reservationCancelReponse)
    Replace Node Contents is checked
    XSD WSDL is:
    <xsd:element name="ReservationCancelResponse"
         type="tns:ReservationCancelResponseType">
    </xsd:element>
    <xsd:complexType name="ReservationCancelResponseType">
         <xsd:sequence>
              <xsd:element name="ResponseCode"
                   type="xsd:string">
              </xsd:element>
              <xsd:element name="ResponseDescription"
                   type="xsd:string">
              </xsd:element>
              <xsd:element name="MessageID" type="xsd:string">
              </xsd:element>
              <xsd:element name="ReservationNum" type="xsd:string">
              </xsd:element>
              <xsd:element name="CsrId" type="xsd:string">
              </xsd:element>
              <xsd:element name="ErrorCode" type="xsd:string"
                   minOccurs="0">
              </xsd:element>
              <xsd:element name="ErrorDescription" type="xsd:string" minOccurs="0"></xsd:element>
         </xsd:sequence>
    </xsd:complexType>
    This time the response is better but not right.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"/>
    <env:Body xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <app:ReservationCancelResponse xmlns:app="http://www.example.org/AppointmentService/">
    <ResponseCode>0</ResponseCode>
    <ResponseDescription/>
    <MessageID/>
    <ReservationNum/>
    <CsrId/>
    </app:ReservationCancelResponse>
    </env:Body>
    </soapenv:Envelope>
    As you can see the tags are empty. (For info: The "ResponseCode" and "ResponseDescription" are constants)
    Where have I gone wrong?

  • How to receive a xml CDATA in string element when OSB calling a webservice?

    How to receive a xml CDATA in string element when OSB calling a webservice?
    I have a business service (biz) that route to operation of a webservice.
    A example of response to this webservice legacy:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eg="example">
    <soapenv:Header/>
    <soapenv:Body>
    <ex:executeResponse>
    <ex:arg><![CDATA[<searchCustomerByDocumentNumberResponse>
    <name>John John</name>
    </searchCustomerByDocumentNumberResponse>]]></ex:arg>
    </ex:executeResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    the type of ex:arg is a string.
    How to receive this CDATA structure to webservice in OSB?

    Similiar to the answer How to pass a xml CDATA in string element when OSB calling a webservice?
    Use the xquery function fn-bea:inlinedXML rather than fn-ben:serialize
    Steps to solve this problem:
    1. Create a XML Schema. E.g.:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="unqualified">
    <xs:complexType name="searchCustomerByDocumentNumberResponse">
    <xs:sequence>
    <xs:element name="name" minOccurs="0">
    <xs:annotation>
    <xs:documentation>
    </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
    <xs:restriction base="xs:string" />
    </xs:simpleType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="searchCustomerByDocumentNumberResponse" type="searchCustomerByDocumentNumberResponse"></xs:element>
    </xs:schema>
    2. Create a XQuery to create a searchCustomerByDocumentNumber ComplexType. E.g.:
    3. Create a XQuery Transformation (XQ) to get the CDATA response to the webservice legacy. E.g.:
    declare namespace ns0 = "novosiaws";
    declare function xf:getReponse($searchCustomerByDocumentNumberResponse as element(ns0:searchCustomerByDocumentNumberResponse))
    as element(searchCustomerByDocumentNumberResponse) {
    fn-bea:inlinedXML($searchCustomerByDocumentNumberResponse/ns0:arg)
    For more information about xquery function:
    fn-bea:inlinedXML
    The fn-bea:inlinedXML() function parses textual XML and returns an instance of the XQuery 1.0 Data Model.
    The function has the following signature:
    fn-bea:inlinedXML($text as xs:string) as node()*
    where $text is the textual XML to parse.
    Examples:
    fn-bea:inlinedXML(“<e>text</e>”) returns element “e”.
    fn-bea:inlinedXML(“<?xml version=”1.0”><e>text</e>”) returns a document with root element “e”.
    Source: http://docs.oracle.com/cd/E13162_01/odsi/docs10gr3/xquery/extensions.html

Maybe you are looking for