OSB: Publish action message loss

Hi
I have following scenario.
OSB PS_1 and PS_2 are HTTP proxy services.
Client-->sends request to OSB PS_1
PS_1 "publishes" payload to PS_2
PS_1 sends response back to Client saying request was received
PS_2 does required processing and updates DB accordingly. Idea is client should not have to wait for processing by PS_2, as it may take time.
I observed that, in production it happened - Client sent request to PS_1, PS_1 made publish to PS_2 (verified by log), PS_1 sent response back to client. But PS_2 did not receive the payload passed by PS_1 at all.
Where did my message go? How could I trace the lost payload?
Thanks
Swapnil Kharwadkar

Enable tracing in osb console, and for debugging try adding routing options in publish node and change the quality of service to exactky once. You will then eb able to see the error.
Also if you do not require your ps2 to be accessed outside the jvm consider making the ps2 a local proxy service.

Similar Messages

  • OSB - Publish action - Request action message enrich/ tranformation impact

    Hi ,
    Today I came across an analysis on how the performance of thread is impacted if we have these two scenarios.
    1. A stage containing all the pre enrichment and validation and transformation to the input message to construct the request message for Publish action(to BS)
    2. A Publish action - Request action - sub activities / actions containing the enrichment, validation and transformation to construct the request message from input message
    An expert advice is expected to see if there is any significant impact in performance and thread analysis. This cal has to be made on entire implementation which has almost 70+ services.
    Thanks for quick reply.

    Enable tracing in osb console, and for debugging try adding routing options in publish node and change the quality of service to exactky once. You will then eb able to see the error.
    Also if you do not require your ps2 to be accessed outside the jvm consider making the ps2 a local proxy service.

  • OSB publish action and error queue

    Hello there,
    where in case of poisened messages, the "publish" action, routes the messages.
    I have one proxy which, along its pipeline, publish a message to another proxy and then carry on. Well, I guess this is done some how with internal OSB queues, where in case of error these messages are moved? Is there anyway to specify a specific destination?
    Thanks in advance

    If there is an error in your proxy service and you want push the messages to the queue you have to handle it manually through error handler. In case of publish if you want to handle the messages you have use routing options and change the quality of service and then in the error handler publish the message to the required queue.
    Edited by: 988445 on Mar 18, 2013 6:20 PM

  • OSB:Publish to business service with for each in osb proxy message flow

    Hi,
    I have an external application that will make a call to my web-service and post a message to my queue "A" and i need to model my osb component such that it picks the message from that queue " A"and posts it to another queue "B". All this is done without any BPEL involved.
    for publishing the message i have created a business service that publishes a msg to the queue A and my proxy service is modelled such that it subscribes to this same queue A and publishes the msg to another business service (that posts it to a queue B).
    Everything is working fine but i have an issue in modelling my proxy message flow. If an external application sends a bulk msg i need to post the message one by one to my queue B. I have used for-each and Publish to BS but the msg doesn't get posted one by one. i know i am missing something please help me out.
    SOA Suite Version - 11.1.1.3

    Are you sure that your for-each definition is correct? Does the flow within the for-each get executed multiple times?
    You can check this by logging the variable to which you assign the message in the for-each. Don't forget to put the log level to Error, so you're sure that it's logged.
    Let's say you get a list of persons like the following xml in a variable personList
    <Persons>
    <Person>Glenn</Person>
    <Person>Prasanth</Person>
    </Persons>
    Your for-each definition should be the following.
    For each variable: person
    XPath: +./Person+
    In Variable: personList
    You don't mention the Persons element in the XPath expression since it is the root element of the XML. The root element is represented by . (dot).
    In the for-each, the variable person can be used like any other variable.

  • Publish action waits for request to get completed in OSB11g

    Hi all,
    I am using OSB 11g. Following is my scenario:
    1) ProxyService1(wsdl based Proxy) publishes to ProxyService2(local Proxy)
    2) ProxyService2 routes to an MQ Posting BusinessService
    In ProxyService1 Response Pipeline, I have configured a dummy response irrespective of the Request.
    When I keep the Retry Count of BusinessService as 3 and Retry Iteration Interval as 120, and test ProxyService1 by keeping the Queue down, it waits for 6 minutes to give the dummy response.
    I do not want the ProxyService1 to get held up for such a long time. It should fire-and-forget the request and give response immediately. I even tried to Publish to the BusinessService. Still the same problem. Can anyone guide me?
    Thanks in advance!
    Regards,
    Karthik
    Edited by: Karthik Krishnamurthy on May 13, 2011 2:32 AM

    I know this might be late, but just wanted to mention that you can publish to a Proxy/Business Service asynchronously using the Routing Options (Quality of Service: Best Effort) with the publish action.
    This will ensure that the Calling proxy does not wait for a response from the provider (be it Proxy/Business Service). If we use this OSB will try its best to publish it, but does not guarantee that the message be delivered. But as long as the provider is available, the message is processed separately and does not block the main calling proxy.
    We use this scenarios frequently in our project. So just wanted to pass it on :)
    You can find a snap shot @ http://dl.dropbox.com/u/19901533/OSB_Publish_Action.JPG
    Refer to http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1134375 for more information.
    Thanks,
    Patrick

  • Publish action not working with JCA based Business Service

    Hi All,
    I have created one BS in OSB that publish the message in AQ. Its working fine as expected when tested from test console.
    I have made one proxy service which after transformation will publish the message to this BS, but the publish action is not invoking.
    I have added log action inside request action of my publish action and log is getting generated for that with correct request.However, I cant see message in DB neither can i see any exception/error logs in OSB.
    I tried replacing publish with route action and its working fine , message is getting published in AQ.Did any one face this type of issue before ???
    Or publish action works only with jms based Business services.
    Appreciate your help.
    Regards,
    Karan

    Bingo !!!
    Setting QOS helped me to find out the exact error. Was passing complete soap envelope to BS instead of passing body part only.
    Thanks a lot for your help mate .
    One more query can you please enlighten me on the use of QOS in OSB, such as in what scenarios we should use QOS.
    Regards,
    Karan
    Edited by: Karan Mann on Mar 14, 2013 3:37 AM

  • QoS issue with OSB publish to JMS business service

    Hi,
    1. I have a http OSB proxy service which is publishing an audit message to a JMS queue through OSB business service.
    MainProxyService (http) --> Publish (best-effort) --> AuditBusinessService (JMS) --> Audit Queue
    2. I want 'Publish to JMS business service' to be a non-blocking call so that proxy service message flow can continue. Transaction support is disabled in proxy service as well as in JMS connection factory.
    3. As default value of QoS (quality of service) for publish action is best-effort, ideally proxy service should continue its message flow immediately after dispatching the message to publish action and it should not block the main proxy flow.
    4. But in my case, proxy service is blocking the message flow until the message is delivered to JMS business service/JMS queue. This is degrading performance of my application.
    5. I think default 'best-effort' QoS is not working with JMS business service as there is a significant time lag between publish action and its next subsequent action.
    6. If I replace the JMS business service with HTTP business service, then it seems to be a non-blocking call and message flow immediately proceeds to next actions.
    Correct me if I am going wrong anywhere or my understanding is wrong.
    Many thanks.

    HI,
    u can use Conditional Branching
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
    Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
    Abhinav

  • Compare Routing action versus Service Callout action versus Publish action?

    hi all,
    Apologies if this is a stupid question, but i throw my hands up and admit my ignorance (I'm mainly a core Java developer; OSB/ALSB is kind of a sideline for me). That said...
    I've used OSB (actually ALSB) on a couple SOA projects within the last 3 years. on my previous projects, we mainly only ever used Routing actions. I'm now working on a 3rd project that also uses OSB. But on this new project, they mainly only ever use Service Callout actions and Publish actions.
    My question is: what are the criteria for choosing between one or the other (Routing action or Service Callout action or Publish action)?
    What does one do that the others can't? I've RTFM. But it still isn't obvious to me. Please, can you fill in the gaps in my knowledge?
    Thanks in advance for your time.

    My question is: what are the criteria for choosing between one or the other (Routing action or Service Callout action or Publish action)?Routing Action - Routing action can be created inside a Route Node only and Route Node is the last node in a request processing. A Route Node indicates that Request Processing will end here and Response Processing will begin. You can not have any node after Route Node in the message flow.
    Service Callout - Service Callout is used in real time request-response scenarios (for sync response). If you have a use case where you need to call one or multiple real time request-response services (like sync web-services) then you may use Service Callout action in the message flow. Being a synchronus call, the thread gets blocked until a response is returned from target service.
    Publish Action - Publish action is used for Request only scenarios where you don't expect a response back. The nature of Publish action (sync or async) will depend upon the target service you are invoking. If you are invoking an external service through a business service then Publish action with Quality of Service(QoS) as "Best Effort" (default) will work like fire and forget and thread won't get blocked (async call). If you are invoking a local proxy service (proxy with transport protocol as "local") from another proxy using publish action then it would be a blocking call (synchronus call) and thread will get blocked untill the processing of local proxy finishes.
    Hope it helps.
    Regards,
    Anuj

  • MQ:OSB Assign action failed updating variable "ServiceRequest"

    Hi
    We have a problem with the MQ adapters in Oracle Service Bus.
    If we (by accident/break testing) put messages on the queue that are invalid XML (such as "Banana" as plain text), the OSB goes into an infinte loop with this message, as it can never be dequeued due to:
    <BEA-381901> <Exception in MQ Inbound Request: TransportException EndPoint: T20230_GoodsEvent/ProxyServices/T20230_G
    oodsEvent, com.bea.wli.sb.transports.TransportException: OSB Assign action failed updating variable "ServiceRequest": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}FORG0
    005: expected exactly one item, got 0 items
    com.bea.wli.sb.transports.TransportException: OSB Assign action failed updating variable "ServiceRequest": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}FORG0005: expect
    ed exactly one item, got 0 itemsThis even prevents the message from being put on the dead letter queue.
    Any hints?

    Correct, but we have tried switching to Text to no avail.

  • 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

  • OSB: Publish activity - reply with Success

    Hi,
    From my proxy service I am publishing a message into a JMS queue(through a BusinessService). I have used a publish activity in the proxy service with QoS=Exactly Once. Currently i am able to send messages to the queue but, in the proxy response i am getting the whole payload which is published to the queue but i want only:
    <http:http-response-code>200</http:http-response-code>, in the proxy result.
    In the response pipeline i have tried the following two ways:
    1. Insert <http:http-response-code>200</http:http-response-code> as first child of ./ctx:transport/ctx:response in variable Inbound.
    2. Added a 'Reply' activity as 'Reply with Success'
    But, they are not fetching me the expected result. Still i am getting the whole payload in the proxy result.
    Kindly let me know how to achieve the same.
    Thanks in advance.

    but i want only: <http:http-response-code>200</http:http-response-code>, in the proxy result.Use replace action
    Replace node contents [leave it empty] in variable [body] with expression [ <http:http-response-code>200</http:http-response-code>]
    Hope it helps !!
    Regards,
    Abhinav Gupta

  • OSB Validate action failed validation

    Hi All,
    I'm trying to convert non-xml to xml by using XqueryTransformation source as an HL7 and target as an CCD schema.When validating the against the schema I got the following exception.
    Please provide any suggestions.
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382505</con:errorCode>
    <con:reason>OSB Validate action failed validation</con:reason>
    <con:details>
    <con1:ValidationFailureDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:message>
    string value '' does not match pattern for cs in namespace urn:hl7-org:v3
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    <con1:message>
    Element 'title@urn:hl7-org:v3' with empty content type cannot have text or element content.
    </con1:message>
    <con1:xmlLocation>
    <ns0:title xmlns:ns0="urn:hl7-org:v3">XXX</ns0:title>
    </con1:xmlLocation>
    </con1:ValidationFailureDetail>
    </con:details>
    Thanks
    Mani

    Hi Anuj,
    I tried doing that but in Response, it is echoing back the request after the statement:
    The invocation resulted in an error: .
    And now it shows:
    Stage Error Handler
    $fault: <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382505</con:errorCode>
    <con:reason>OSB Validate action failed validation</con:reason>
    <con:details>
    <con1:ValidationFailureDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:message>
    string value '2' is not a valid enumeration value for VersionType in namespace http://www.example.org/abcd_Request_Schema
    </con1:message>
    <con1:xmlLocation>
    <abcd:Version xmlns:abcd="http://www.example.org/abcd_Request_Schema">2</abcd:Version>
    </con1:xmlLocation>
    </con1:ValidationFailureDetail>
    </con:details>
    <con:location>
    <con:node>PipelinePairNode1</con:node>
    <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>request xml validation</con:stage>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>
    System Error Handler
    $fault: <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>402</con:errorCode>
    <con:reason>
    Validation Failed. Please enter proper values.
    </con:reason>
    <con:details>
    <con1:ValidationFailureDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:message>
    string value '2' is not a valid enumeration value for VersionType in namespace http://www.example.org/abcd_Request_Schema
    </con1:message>
    <con1:xmlLocation>
    <abcd:Version xmlns:abcd="http://www.example.org/abcd_Request_Schema">2</abcd:Version>
    </con1:xmlLocation>
    </con1:ValidationFailureDetail>
    </con:details>
    <con:location>
    <con:node>PipelinePairNode1</con:node>
    <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>request xml validation</con:stage>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>
    Is there any way by which only the customized error can be seen & not the OSB errors?

  • OSB Validate action

    As I have just started working in OSB, so my query is whether I can get a proper error message from OSB validate action against the particular attribute in an XML which is having the wrong input.
    Example : Suppose in my XSD i have defined student's id as integer but in below XML it is coming with a string. So can I get the exact error message stating like attribute 'id' is having a wrong value and so validation failed.
    <Class>
    <student id="123"/>
    </Class>
    Please help.

    The attribute level validation was done through java call out. Had to use sax parser for this..
    here is the code :
    public class XMLValidator {
    static boolean success = true;
    static private String errorMsg = "";
    static String msg = "";
    * @param xsdPath
    * @param payload
    * @return
    public static String XMLValidator(String xsdPath, String payload) {
    String status = "";
    try {
    System.out.println("XSD Path: " + xsdPath);
    System.out.println("Payload: " + payload);
    status = ValidateXML(new URL(xsdPath), payload);
    } catch (MalformedURLException e) {
    return (e.getMessage());
    return (status);
    public static String ValidateXML(URL xsdUrl, String xmlFile) {
    success = true;
    errorMsg = "";
    SAXParser saxParser = new SAXParser();
    saxParser.setValidationMode(XMLParser.SCHEMA_VALIDATION);
    String xmlFilePayload = xmlFile;
    XSDBuilder builder;
    try {
    builder = new XSDBuilder();
    URL url = xsdUrl;
    //System.out.println(url.getPath());
    XMLSchema schemadoc = (XMLSchema)builder.build(url);
    saxParser.setXMLSchema(schemadoc);
    Validator handler = new Validator();
    saxParser.setErrorHandler(handler);
    // saxParser.parse(new FileInputStream(new File(xmlFilePayload)));
    InputStream inputStream =
    new ByteArrayInputStream(xmlFilePayload.getBytes("UTF-8"));
    saxParser.parse(inputStream);
    if (success) {
    msg = "Successfully Validated";
    } else {
    /* writeLogFile(logFileName,
    "[" + counter + "]. " + xmlFileName + "\n" +
    "------------------------------------------------------------------------------------------------------\n" +
    errorMsg + "\n\n\n", true);*/
    msg = errorMsg;
    } catch (XSDException f) {
    System.out.println("XSDException : " + f.getMessage());
    //System.out.println("XSDException : " + f.getMessage());
    } catch (FileNotFoundException f) {
    System.out.println("FileNotFoundException : " + f.getMessage());
    } catch (SAXException f) {
    System.out.println("SAXException : " + f.getMessage());
    } catch (IOException f) {
    System.out.println("IOException : " + f.getMessage());
    catch (Exception f) {
    System.out.println("IOException : " + f.getMessage());
    return (msg);
    public static class Validator implements ErrorHandler {
    public void error(SAXParseException exception) {
    success = false;
    int separator = exception.getMessage().indexOf(")");
    System.out.println("index "+separator);
    String st = exception.getMessage().substring(separator+1);
    errorMsg = errorMsg + "Error : " + st + "\n";
    //System.out.println("error: " + exception.getMessage());
    public void fatalError(SAXParseException exception) {
    success = false;
    errorMsg =
    errorMsg + "Fatal Error : " + exception.getMessage() + "\n";
    // System.out.println("fatalError: " + exception.getMessage());
    public void warning(SAXParseException exception) {
    success = false;
    errorMsg = errorMsg + "Warning : " + exception.getMessage() + "\n";
    //System.out.println("warning: " + exception.getMessage());
    }

  • OSB Validate action fails even an element is nillable="true"

    Hi,
    I have declared two elements in my inline schema nillable="true":
    <xsd:element name="Skip_CreditChk" nillable="true" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
    <xsd:element name="Observation_End_Date" nillable="true" type="xsd:date" minOccurs="0" maxOccurs="1"/>
    In my OSB message flow, my first action is a Validate action.
    When I test the proxy service in the OSB Console and input the following elements I encounter an OSB validate action failed error even when those fields below are declared as nillable in the schema. Anyone got an idea regarding this issue?
    <Skip_CreditChk/>
    <Observation_End_Date/>

    Please check W3C recommendation -
    http://www.w3.org/TR/xmlschema-0/ (section 2.9 Nil Values)
    Your input should be like -
    <Skip_CreditChk xsi:nil="true"></Skip_CreditChk>
    <Observation_End_Date xsi:nil="true"></Observation_End_Date>
    Regards,
    Anuj

  • 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")

Maybe you are looking for