Handling SOAP Fault messages in BPM

Hi,
My scenario is Sync-Async Bridge involving File to SOAP transformation. I have used BPM as 1 file has many records and each record is required to call the web service synchronously.
In the BPM I have
Receive ---> Transform (1:n multimapping ) -
> Block (Par for Each)
In Block  I have Send Sync step to call Web service . I have an exception branch for the send step for catching Fault message that is sent back from webservice for Application Fault.
Problem:
Though the Fault message is sent from web service ,in the BPM  the block goes in error saying : "No exception defined for fault message ".  The Exception brach is not executed.
Please suggest if anyone has come across such a scenario and solution to this.

hi satesh
using "exception handler" in BPM we can handle the error messages
regards
kummari

Similar Messages

  • Handling SOAP Fault Message in BPM

    Hello XI SDN'ers,
    I am getting SOAP Fault Message in my SOAP Scenario and I am not aware of Handling that error in my BPM. Could any one tell me, How to handle such error's in BPM?
    Thanks & Regards,
    Satish.

    hi satesh
    using "exception handler" in BPM we can handle the error messages
    regards
    kummari

  • Handling SOAP fault message

    Hi,
    My scenario is Client sync proxy to webservice.
    I have done the mapping from zreuest ->Webservice Request  and webservice Resp -> zresponse.
    Now, when i am calling the webservice getting the following Error message on XI
    *Inbound Message:*
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <INVALID_INPUT>
      <description>java.lang.NullPointerException</description>
      </INVALID_INPUT>
    *Error message*:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>application fault</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="">INVALID_INPUT</SAP:ApplicationFaultMessage>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    And on client proxy side, getting the error message as Mapping program not found.
    Let me know how to handle this type of errors.
    Regards,
    Sreenivas.

    Hi Pratik,
    i forgot to mention that currently webservice is down, still am getting error response as i mentioned.
    When i tested the same using XMLSPY, getting pop up with 'Webservice has send empty response'.
    And when i am calling client proxy method, am getting error as 'Mapping program not found' 
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="MAPPING">NO_MAPPINGPROGRAM_FOUND</SAP:Code>
      <SAP:P1>Object ID 90CAAB770D493EA8B7C07DD83B595DE4 Software Component AE7169A03E4411DE88C0D0F38D770551</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Interface mapping Object ID 90CAAB770D493EA8B7C07DD83B595DE4 Software Component AE7169A03E4411DE88C0D0F38D770551 does not exist in runtime cache</SAP:Stack>
      <SAP:Retry>N</SAP:Retry>
      </SAP:Error>
    Regards,
    Sreenivas.

  • Handling soap fault messages

    Hi All,
    I had webservice and am able to pass geneate proper response based on client request but when they are making invalid request i.e
    removing some tag or making syntax related mistake, in response i'm getting exception related to <faultcode>soap:Client</faultcode>.
    I check my logs and it seems that the request is not coming to my service. The exception/response seems to generated by web server.Instead of webserver, i want to pass my customised exception for eg."invalid request".Can I do it?? If yes, how can i do it?
    Also, this webservice is being consumed by lotsa users, so if possible i don't want to do code change in existing services.If simply by setting some configuration or writing a wrapper might do.
    Really appreciated if someone reply with proper answer.
    Thanks in advance.
    Cheers,
    Cha

    you can use
    PROCEDURE p_check_fault(p_resp IN OUT NOCOPY response) as
    fault_node xmltype;
    fault_code varchar2(256);
    fault_string varchar2(32767);
    begin
    DBMS_OUTPUT.PUT_LINE('Checking fault string...');
    fault_node := p_resp.doc.extract('/env:fault',
    'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/');
    if (fault_node is not null) then
    DBMS_OUTPUT.PUT_LINE('Fault!!!...');
    fault_code := fault_node.extract('/env:fault/faultcode/child::text()',
    'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/').getstringval();
    fault_string := fault_node.extract('/env:fault/faultstring/child::text()',
    'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/').getstringval();
    DBMS_OUTPUT.PUT_LINE('CODE:' || fault_code || '.Msj:' || fault_string);
    raise_application_error(-20993, 'Error: '
    || fault_code || ' - ' || fault_string);
    end if;
    end p_check_fault;

  • Handling SOAP faults

    hello,
    I created a java control which calls an external webservice. How do you handle
    SOAP fault messages coming back from the webservice?
    Weblogic just throws an java.lang.reflect.UndeclaredThrowableException since it
    cannot parse the expected XML message.
    For example, when I call Logon() via the java control. The WebService should
    reply with a LogonResult object(in xml format). However, if there's an error,
    the WebService returns a SOAP Fault message. Since this fault message is not
    in the format of the expected LogonResult xml schema, weblogic throws an error
    (since it cannot create the LogonResult object) and the caller just receives the
    UndeclaredThrowableException without knowing any of the contents within the SOAP
    Fault.
    I'd like to be able to send back the SOAP fault content back to the calling function.
    I've tried throwing an exception from the java control handler, but it gets swallowed
    up by the SOAP Handler so I still get an exception with no content.
    any info is appreciated.
    thanks,
    Tom

    Hi,
    Do you get answer for that?
    I had similar problem and solved this in this way:
    In this java.lang.reflect.UndeclaredThrowableException handler is possible to get also SoapFault back:
    catch (java.lang.reflect.UndeclaredThrowableException e){
    RemoteException re = (RemoteException).getUndeclaredThrowable();
    ServiceControlException sfe = (ServiceControlException)re.getCause();
    SoapFault fault = sfe.getSoapFault();
    XmlObject[] objs = fault.getDetailContents();
    // more procssing here to get Soap detailed error
    Maybe this helps.
    rgrds,
    H

  • Handling fault messages in BPM

    Hi,
    I am using BPM for a RFC to SOAP scenario to handle Fault messages. (Please have a look at my previous post also SOAP Fault message )
    I have created an exception block in BPM to catch the fault message from SOAP service. Inside the exception block i need to map the fault message to RFC response. But fault message is not accessible in Exception block.
    Let me know if you have any idea to solve this.
    Thanks,
    Uma

    Uma:
    Let me make clear the requiremt. You have RFC Import(aka Request message) and Export(aka Response + Exception) and you have Web Service with Request, Response, Fault messages. And you want to send the fault messages back to the RFC in addition to the response. I was wondering, If we do the following mapping without BPM, does that fulfill your requirement.
    RFC-Import <----
    > SOAP Request
    RFC-Export <----
    > SOAP Response
    RFC-Export <----
    > SOAP Fault
    Can you let me know if you face any problems with this one. I have seen your other thread and was wondering, whats the problem is. May be I didn't understand the requirement properly. Please clarify me

  • BPM:  System_Error" SOAP fault message received

    Hi,
    We upgraded SAP system from 4.7 to ERP2004 on 09/17/05.
    We have XI-3.0 version from last 9 months and this BPM was working good so far. We have not changed anything in it except we upgraded the SAP system.
    We are using ABAP proxy from SAP to send "userid"
    message to XI-BPM and then it would make a Synchonous call to SAP system to get roles of those "usrid".
    In the first step when it is sending data to XI an exception is raised and in the second step when it tries to make synchronous call to SAP we are getting error:
    <Trace level="3" type="T">Deserializing message object...</Trace>
      <Trace level="3" type="System_Error">SOAP fault message received</Trac
      <Trace level="3" type="System_Error">SOAP fault code: Client</Trace>
      <Trace level="3" type="System_Error">SOAP fault string: Error during c
    I noticed that the XML name tag looks different now
    Before upgrade when message was successful.
    <?xml version="1.0" encoding="utf-8" ?>
    - <ns1:MT_ECA_USRID xmlns:ns1="http://bcm.edu/common"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <USRID>CLARKSON</USRID>
      <USRID>2_MA140016</USRID>
       </ns1:MT_ECA_USRID>
    After upgrade when message is failed
    <?xml version="1.0" encoding="utf-8" ?>
    - <nr1:MT_ECA_USRID xmlns:nr1="http://bcm.edu/common">
      <USRID>AABULIMI</USRID>
      <USRID>AB147899</USRID>
      <USRID>ACHALL</USRID>
       </nr1:MT_ECA_USRID>
    You would notice that
    " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    missing after upgrade.
    I would appreciate if anyone could help me.
    Mrudula

    Hi,
    Can you paste the full error message. Also take a look at the default trace log in Visual Admin. Set the logging for soap to debug.
    Naveen

  • How to send back the soap fault message without details tag to the sender

    Hello Expert,
    Is it possible to send the soap fault message(fault String element value) without details tag as shown below to the sender in synchrounous scenario.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
              <soapenv:Fault>
                   <faultcode>soapenv:Client</faultcode>
                   <faultstring>autorizarComprobanteRequest.comprobanteCAERequest.arrayOtrosTributos.otroTributo(1).codigo - El Código de Tributo es obligatorio.</faultstring>
                   <detail></detail>
              </soapenv:Fault>
         </soapenv:Body>
    </soapenv:Envelope>
    I have to send the faultstring element value in one of the element in response message back to sender? Is it possible using BPM?The above fault response does not have a fault payload (no detail element) and would result in a system error message.So how to handle this?
    If yes .Please tell me the BPM design
    faultstring value will be dynamic.
    Thanks in advance

    Thanks Yzanagi,
    I have gone through the index.htm file.
    In my scenario that is RFC -PI-soap(using http(Axis) protocol).when the webservice provider  is sending the soap fault as.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
              <soapenv:Fault>
                   <faultcode>soapenv:Client</faultcode>
                   <faultstring>autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1</faultstring>
                   <detail></detail>
              </soapenv:Fault>
         </soapenv:Body>
    </soapenv:Envelope>
    In PI sxmb_moni it is converting to the error (system not application error)as shown below when using receiver soap adapter with  https(Axis) transport protocol and Message protocol:Axis.
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1></SAP:P1>
      <SAP:P2></SAP:P2>
      <SAP:P3></SAP:P3>
      <SAP:P4></SAP:P4>
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1.</SAP:AdditionalText>
      <SAP:Stack></SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    As my requirement was (I have mentioned in my first question) that I want to pass
    SAP:AdditionalText tag
    value back to sender  in  one of the elements of  response message payload or handle using fault message mapping if this error could be converted to application error and map to the RFC exception  but unfortunately which is  not possible even using AXIS  adapter.
    so other  option to inform the sender RFC is mentioned here http://help.sap.com/saphelp_nw70/helpdata/en/22/0425e0488911d189490000e829fbbd/content.htm
    but while handling the SYSTEM_FAILURE  exception from PI at sender in report program and  displaying the msg variable ,I am not getting complete error message..It is getting truncated.Is there a limit to the no of character the msg variable contains which is set by system.Even if we declare msg variable with more length(for example char length 500) it is just displaying part of the error message from PI.
    Any Idea to read complete system error message from PI in report program at RFC sender..
    Kind Regards,
    Kubra fatima

  • PI 7.1 Adapter Module Development - Identify SOAP Fault Message

    Hi Experts,</br>
    here's a PI 7.1 Adapter Module Development issue I hope you can help me to resolve. It's about identifying SOAP fault messages.</br>
    </br>
    Scenario at a glance:</br>
    Adapter Modules placed in the modules chain at request and response time in a synchronous Scenario:</br>
    - Request: SOAP Axis to RFC </br>
    - Response and Fault Response: RFC to SOAP Axis</br>
    </br>
    The issue is how to identify SOAP fault message in SOAP Axis Adapter Module in the response message:</br>
    The client gets SOAP fault messages like the follwong one:</br>
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <ns1:exception xmlns:ns1="http://typen.geschaeftsstelle.pab.barmer.de">
                   <ns1:errortext>bla bla bla ...</ns1:errortext>
                </ns1:exception>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </br>
    </br>
    But when trying to access the tags faultcode and/or faultstring in the adapter module via xPath expressions I do not get them. Obviously the SOAP Fault tags are built AFTER the adapter module has been passed. So my question is:</br>
    How can I clearly/uniquely detect a SOAP fault response message (and distinguish it from a "normal" response message) in my SOAP Axis Adapter Module?</br>
    </br>
    I tried it the following way:</br>
    </br>
    </br>
    // Check Message Payload for SOAP Fault Message via xPath expressions</br>
    ...</br>
    // SOAP Fault Code</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultcode");</br>
    zv_soapFaultCode = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // SOAP Fault String</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultstring");</br>
    zv_soapFaultString = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // check for SOAP Fault Message</br>
    if (zv_soapFaultCode.equals("") && zv_soapFaultString.equals("")) {</br>
         // Create Audit Log entry - NOT a SOAP Fault Message</br>
         zv_msgText = zc_constModuleName + " 0190: xPath - OK! This message is NOT a SOAP Fault Message";</br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.SUCCESS, zv_msgText);</br>
         zv_faultCheck = false;</br>
    }</br>
    else {</br>
         ...</br>
         // Create Audit Log entry - SOAP Fault Message</br>
         zv_msgText = zc_constModuleName </br>
              + " 0200: xPath - this message is a SOAP Fault Message. " </br>
              + " - Faultcode is: " + zv_soapFaultCode </br>
              + " - Faultstring is: " + zv_soapFaultString; </br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);</br>
         ...</br>
    }</br>
    ...</br>
    </br></br>
    But zv_soapFaultCode and zv_soapFaultString are always empty (with other payload tags this coding works fine).</br>
    </br>
    Any ideas? </br></br>
    Thanx very much in advance!</br></br>
    Regards,</br>
    Volker

    Hi Alex!
    Like already mentioned I solved my problem by identifying the SOAP exception with the messageClass attribute of the PI message header. Acess code:
    try {
    String zv_msgClass = zv_piMsg.getMessageClass().toString();
    } catch (Exception e) {
    zv_msgText = zc_constModuleName
    + " E0110: Message processing terminated."
    + " Reason: Error while getting MessageClass "
    + zv_dataSource
    + e;
    // create trace and audit log entry (severity ERROR) for exception
    zv_location.errorT(ZV_SIGNATURE, zv_msgText);
    zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);
    ModuleException me = new ModuleException(e);
    zv_location.throwing(ZV_SIGNATURE, me);
    e.printStackTrace();
    throw me;
    }     // end of try-catch-block
    But I do not think this will solve your problem. I am almost sure, that something in your Axis configuration is wrong/missing. If a handler cannot be instatiated then it really may be missing. Have a look at defaultTrace.trc. Maybe you will find more suitable information about the root cause of your problem. Also have a look at NWA under software components and/or application modules if you can find/see your modules.
    But there is a general issue when trying to catch PI fault messages. If e.g. the requestor tries to login with wrong userid/pasword, then you will have no chance to catch this kind of error - at least as far as I know. Because in this very early stage of PI message processing no module is called.
    One last question: Did you develop your own Adapter or just an adapter module? In the first case: Is your adapter started and healthy? Have a look at RWB -> communication channel monitoring.
    Regards,
    Volker

  • Emulate Fault message in BPM

    Hello
    I have read all related topics
    fault message in BPM process
    Alert monitoring and fault message types
    Using Fault Message Type in BPM
    but no answer..
    I have synch BPM that send synch request to RFC and a mapping step. Then I have to catch exception (of send step or mapping) and send fault message in exception handler.
    I haven't a proxy. I want to create fault message manually and send it. Is it possible? I cannot create an interface of fault message type.

    Hi Sergey,
    As far as I know, it's possible to catch the mapping/send exception.
    It's also easy to define an exception branch for this exception, and inside the exception branch, send a "normal" message in a send step.
    However, as far as I know there's no way of specifying a BPM send step that sends a fault message.
    At least in my experience, regular messages are just as useful when sending error information.
    Cheers,
    Ofer

  • Problem with SOAP FAULT messages

    Hi,
    I'm developing the flash interface for a .NET application.
    The client side (flash) communicate with server side (.NET) by web
    services. The problem is that when the server side send a Fault
    message flash breaks telling "Unable to connect to
    endpoint........". In this case I need to know the error message
    send by the server but the fault.faultstring is undefined.
    Here the server Fault message:
    HTTP/1.1 500 Internal Server Error.
    Date: Wed, 23 Aug 2006 09:07:10 GMT
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    X-AspNet-Version: 1.1.4322
    Cache-Control: private
    Content-Type: text/xml; charset=utf-8
    Content-Length: 419
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="
    http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="
    http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="
    http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <soap:Fault>
    <faultcode>SoapHeader</faultcode>
    <faultstring>The userid: xxxx is
    invalid</faultstring>
    <detail />
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>
    And this the code that handle the fault case:
    pendingcall.onFault = function (fault:Object){
    rootObj.gbl_logger.log("WS Fault: "+ fault.faultstring ,
    10);
    As you can see the real faultstring is "The userid: xxxx is
    invalid" but in the faultstring property of the fault object I
    found "undefined".
    I've read many posts that report that the problem can be
    solved in the server side modifing the HTTP HEADER from 500 to 200.
    Unfortunately I can't access the server side code. Exists a way to
    resolve the problem in the client side? Seems it is a Flash bug as
    the SOAP 1.1 specs tells that all SOAP Fault messages must carry a
    HTTP 500 header. Exists some patch that solve the problem?
    Thanks.

    Hi ,
    Thanks for joining the Community.
    Please get in touch so we can resolve this issue for you.
    Click here for contact details.
    Thanks
    James

  • A sample web service to return SOAP fault message for application error

    Hi,
    I need to test behavior of XI, in case of application error (using <detail> tag in soap:fault) from web service in nosoap mode.
    If any one is aware of a free web service, which can raise application soap fault message, Kindly provide the details.
    Thanks in Advance,
    Rahul..

    Hi,
    What is the URL to which you are posting the SOAP message?
    Is it?
    http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet? channel=<party>:<service>:<channel>
    If yes, then like mentioned the QOS is picked from the Sender SOAP adapter.
    But, if the URL is ,
    http://<server>:<ABAP-port>/sap/xi/engine?type=entry&version=3.0&Sender.Service=<YourService>&Interface=<YourNamespace>%5E<YourInterface> 
    Then you need to give the QOS as <b>,&QualityOfService=ExactlyOnce</b> appended to the above URL.
    More, /people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine
    Regards
    Bhavesh

  • ABAP Web Services Exception Valorization in SOAP Fault Message

    Hi,
    I created a Custom Function Module in ABAP with a custom exception ( "Exception1) in exception list (including a short text description of the exception ("This is the first exception!!!")).
    I exposed it as web services by means of 'Web service ABAP creation wizard".
    I hard coded the raising of the exception in order to see the valorization of SOAP Fault Message.
    The problem is that the field "Text" in SOAP fault message is empty instead of "This is the first exception!!!".
    Can you help me?
    Thanks in advance
    Giuseppe
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
         <soap-env:Body>
              <soap-env:Fault>
                   <faultcode>soap-env:Client</faultcode>
                   <faultstring xml:lang="it">Exception1</faultstring>
                   <detail>
                        <n0:Zprova.Exception xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
                             <Name>Exception1</Name>
                             <Text/>
                        </n0:Zprova.Exception>
                   </detail>
              </soap-env:Fault>
         </soap-env:Body>
    </soap-env:Envelope>

    Hi,
    in case you want some specific text,you can raise the exception  like this in your function module.
    MESSAGE I001(ZPLATINO)  RAISING EXCEPT1.
    message class: ZPLATINO
    exception        : EXCEPT1
    message no 001,
    message text : CHECK ERROR PUSHKAR1
    and your response will be like.:
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
         <soap-env:Body>
              <soap-env:Fault>
                   <faultcode>soap-env:Client</faultcode>
                   <faultstring xml:lang="en">EXCEPT1</faultstring>
                   <detail>
                        <n0:Zpl.Exception xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
                             <Name>EXCEPT1</Name>
                             <Text>CHECK ERROR PUSHKAR1</Text>
                             <Message>
                                  <ID>ZPLATINO</ID>
                                  <Number>001</Number>
                             </Message>
                        </n0:Zpl.Exception>
                   </detail>
              </soap-env:Fault>
         </soap-env:Body>
    </soap-env:Envelope>
    I think this solves your problem.
    points..points..:)
    Message was edited by:
            pushkar anand

  • Soap fault message handling in XI

    Hi,
    I am using axis 1.4. SAP XI is my clinet. My wsdl file as below
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://ws.example.com/service"
       xmlns:wns="http://ws.example.com/service"
       xmlns:tns="http://ws.exampleenterprise.com"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
             <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    targetNamespace="http://ws.exampleenterprise.com"
                    elementFormDefault="qualified">
                     <xs:complexType name="SecrtySbj">
                             <xs:sequence>
                                     <xs:element name="usrname" type="xs:string"/>
                                     <xs:element name="pswrd" type="xs:string"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:complexType name="AuthenticateRequest">
                             <xs:sequence>
                                     <xs:element name="secrtySbj" type="tns:SecrtySbj"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="authenticateRequest" type="tns:AuthenticateRequest"/>
                     <xs:complexType name="AuthenticateResponse" >
                             <xs:sequence>
                                     <xs:element name="sessnId" type="xs:string"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="authenticateResponse" type="tns:AuthenticateResponse"/>
                     <xs:complexType name="customFault">
                             <xs:sequence>
                                     <xs:element name="customCd" type="xs:int"/>
                                     <xs:element name="customMsg" type="xs:string" minOccurs="0"/>
                                     <xs:element name="customExcp" type="xs:string" minOccurs="0"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="customFault" type="tns:customFault"/>
             </xs:schema>
    </wsdl:types>
    <wsdl:message name="authRequest">
       <wsdl:part name="parameters" element="tns:authenticateRequest"/>
      </wsdl:message>
      <wsdl:message name="authResponse">
       <wsdl:part name="result" element="tns:authenticateResponse"/>
      </wsdl:message>
      <wsdl:message name="CustomFault">
       <wsdl:part name="CustomFault" element="tns:customFault"/>
      </wsdl:message>
      <wsdl:portType name="AuthenticateServiceInterface">
            <wsdl:operation name="authenticate">
        <wsdl:input message="wns:authRequest" />
            <wsdl:output message="wns:authResponse" />
        <wsdl:fault name="CustomFault" message="wns:CustomFault"/>
       </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="AuthenticateServiceSoapBinding" type="wns:AuthenticateServiceInterface">
              <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
       <wsdl:operation name="authenticate">
        <soap:operation soapAction=""/>
        <wsdl:input>
         <soap:body use="literal"/>
        </wsdl:input>
            <wsdl:output>
                    <soap:body use="literal"/>
            </wsdl:output>
            <wsdl:fault name="CustomFault" >
                       <soap:fault name="CustomFault" use="literal" />
               </wsdl:fault>
       </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="AuthenticateServiceService">
       <wsdl:port name="AuthenticateService" binding="wns:AuthenticateServiceSoapBinding">
        <soap:address location="http://10.236.14.6:8080/axis/services/AuthenticateService"/>
       </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>
    Axis generates the soap fault as below in detail tag as below
    <ns1:customFault xmlns:ns1="http://ws.examplenterprise.com">
    <ns1:customCd>123</ns1:customCd>
    <ns1:customMsg>Password is wrong</ns1:customMsg>
    <ns1:customExcp>CustomException</ns1:customExcp>
    </ns1:customFault>
    They are getting error like below while getting the fault message.
    <SAP:ApplicationFaultMessage namespace="http://ws.exampleenterprise.com">customFault<SAP:ApplicationFaultMessage>
    Question: Why it is throwing "ApplicationFaultMessage" for fault messages? is there any error in wsdl file in defining the elements? or style has to be different? or is it an namespace issue in the wsdl?
    Note: They are able to do it sucessfull for the response message.

    Hi,
    The answer is in your Question itself.
    XI Sequence
    1.First step is to identify the wsdl:Message element with the namespace http://ws.example.com/service
    2.The next step is to go to the part element in http://ws.exampleenterprise.com and map the fault message.
    To be simple in your case http://ws.example.com/service is the namespace of Fault Message and http://ws.exampleenterprise.com is the namespace of the fault message payload  (Fault XML Message).
    So even though the Fault XML Message has the namespace http://ws.exampleenterprise.com ,but if the fault namespace doesnot come with http://ws.example.com/service then Fault will not be triggered and processed in XI.
    I hope you get the difference between the two namespaces used and the implications of them.
    Fault is entirely different from respone.
    Its like exception in java. If you donot catch the correct exception, will the exception raised be caught? Similarly if your SOAP service doesnot invoke the fault message with correct namespace (http://ws.example.com/service ), you cannot invoke/catch the fault message in XI.
    Regards,
    Sudharshan N A

  • Fault message in BPM process

    I have a bpm process with a sync send step. i have a default fault message strcuture and my sync interface ( a proxy) is using this as fault message format. In case of an fault in the proxy i get the fault message returned. In my bpm i have an exception handler installed for the exception. What i would like to do in my process is send the fault message to another step like a send step.
    i m not looking to understand sync/async bridges or how to setup a bpm process. I am looking for help in how i can work with the fault message in my bpm process other then only let it trigger the exception routine

    Hi Frank,
    in the view of your BP an exception at proxy side is no reason to stop processing. The message will be put to your interface and it is your decision to put data into a container and to send it. For using a "global" container for every kind of message have a look to my weblog <a href="/people/udo.martens/blog/2006/04/28/bpm-container-for-any-message-type Container for any Message Type</a>. If your send step is not successful and you want to catch that: Define an exception branch for your block, where you send a senseful message to notice the error. You can refer in the original send step the exception, during runtime the process jumps into the exception branch and is doing that what you defined there.
    Regards,
    Udo

Maybe you are looking for

  • HH3 Type A can't tell the time

    Currently on HH3 number five, this one is Type A and has been running for about a week with reasonably consistent speeds until this morning when it had dropped again when I tried to restart it nothing happened.  Tried switching on/off still nothing j

  • Adobe Air installation on Samsung Tablet 10.1 GT-P5210

    Hi, I am trying to install Adobe Air on my Samsung Tablet 10.1 GT-P5210 with Android 4.2.2 and unfortunately it is always giving error "Unknown error code during application install: "-24". I did tried the following but no luck. Reset factory setting

  • I have a mac os 10.4.11 and my firefox suddenly won't respond anymore even if I delete and reinstall.

    when I click on the icon, it wont do anything, and eventually said "application not responding" I couldn't do anything so i uninstall firefox, and reinstall it, which doesnt work :(

  • Problem with updating/reinstalling latest itunes

    I have tried numerous time to update my itunes to the lastest software as it is unable to reconise our updated ipods, but everytime i come to download it i will reach the final state until it comes up with " there is a problem with this windows insta

  • How we write into properties file using get class method

    Hi I want to set some value into properties file using given code can any one please tell me how i can do this. property file setting.properties Name     =     abc and code I use is java.io.InputStream oInputStream = this.getClass().getResourceAsStre