ODI Web Service is  Synchronous or Asynchronous??

Hi,
I have a question about odi.When a websevice calls odi scenario(through agent) the the session id returned to the webservice immediately.Is this calling process synchronous/asynchronous?Actually i want to say, the webservice get the session id at the invokation time(when scenario start executing) or at the time when scenario execution completed?
Please Ans
Thanks
Papai

If you go for Asynchronous, you can use getSessionStatus. Parameters are ODI user, password, work repository name and session id(s) (you can retrieve the status for multiple session at one time I think).
Hope it helps,
JeromeFrHi Jerome,
The request payload is like this:-
<OdiStartScenRequest>
<Credentials>
<OdiUser>odi_user</OdiUser>
<OdiPassword>odi_password</OdiPassword>
<WorkRepository>work_repository</WorkRepository>
</Credentials>
<Request>
<ScenarioName>scenario_name</ScenarioName>
<ScenarioVersion>scenario_version</ScenarioVersion>
<Context>context</Context>
<LogLevel>log_level</LogLevel>
*<Synchronous>synchronous</Synchronous>*
<SessionName>session_name</SessionName>
<Keywords>session_name</Keywords>
<Variables>
<Name>variable_name</name>
<Value>variable_value</Value>
</Variables>
</Request>
</OdiStartScenRequest>
Now my question is for *<Synchronous>synchronous</Synchronous>* element what I have to write:-
<Synchronous>synchronous</Synchronous>
or
<Synchronous>Synchronous=1</Synchronous>
or
<Synchronous>1</Synchronous>

Similar Messages

  • How to call an ODI web service through PL/SQL

    Hi All,
    Can we call an ODI web service through PL/SQL. If we can, can you please provide me info/examples/links on how to accomplish this task ?
    Any information will help me and my team.
    Am I required to use UTL_HTTP ?
    Thanks,
    Amer
    Edited by: Rooney on Nov 6, 2012 9:58 AM

    Hi,
    Take a look at this :
    http://www.business-intelligence-quotient.com/?p=1466

  • Error in AXIS2 when i try publish ODI web services

    Hi people,
    I&acute;m configured AXIS2 into OC4J (SOA Suite 10.1.3.1) and when i try to publish ODI web services using a odi-public-ws.aar file on AXIS2, show me a "Faulty Services" message and when i click on details link show me a Java message (below):
    {color:#ff0000}*This Web axisService has deployment faults*{color}
    Error: java.lang.NoSuchMethodError: javax.wsdl.Operation.getExtensionAttributes()Ljava/util/Map;
    at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateOperations(WSDL11ToAxisServiceBuilder.java:1295) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populatePortType(WSDL11ToAxisServiceBuilder.java:592) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateEndpoints(WSDL11ToAxisServiceBuilder.java:469) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:363) at org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder.populateAllServices(WSDL11ToAllAxisServicesBuilder.java:107) at org.apache.axis2.deployment.repository.util.ArchiveReader.processWSDLFile(ArchiveReader.java:248) at org.apache.axis2.deployment.repository.util.ArchiveReader.processWSDLs(ArchiveReader.java:356) at org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:67) at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:597) at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:330) at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:227) at org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:131) at org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:284) at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:82) at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:516) at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:436) at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2361) at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4810) at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4734) at com.evermind.server.http.HttpApplication.initPreloadServlets(HttpApplication.java:4922) at com.evermind.server.http.HttpApplication.initDynamic(HttpApplication.java:1134) at com.evermind.server.http.HttpApplication.(HttpApplication.java:738) at com.evermind.server.ApplicationStateRunning.getHttpApplication(ApplicationStateRunning.java:414) at com.evermind.server.Application.getHttpApplication(Application.java:545) at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.createHttpApplicationFromReference(HttpSite.java:1990) at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.(HttpSite.java:1909) at com.evermind.server.http.HttpSite.initApplications(HttpSite.java:645) at com.evermind.server.http.HttpSite.setConfig(HttpSite.java:290) at com.evermind.server.http.HttpServer.setSites(HttpServer.java:270) at com.evermind.server.http.HttpServer.setConfig(HttpServer.java:177) at com.evermind.server.ApplicationServer.initializeHttp(ApplicationServer.java:2450) at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:998) at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131) at java.lang.Thread.run(Thread.java:595)
    Wow, a lot of lines ! No problem, i can identify problem when try generate a WSDL file ... it&acute;s correct ? (Please correct me if i have a incorrect reasoning).
    Can a JDK Version too ? I&acute;m using a JDK 1.5.0_06. According by manual instructions version of JDK can be 1.4.2 or later version....
    Help me ! :-)
    Thanks for your attention !!

    Roberto and all,
    I installed Tomcat and published ODI web service and it was done sucessfully.
    Why OC4J this simple activity doesn´t have any success ? I'm still curious what's difference between OC4J and Tomcat and why it does not allow this simple task when is completed in a such simple way... Oracle support analyst recommended that I use the OC4J but did not explain the reason, what are the advantages and benefits compared to Tomcat...
    Sincerelly, i´m not too sure if i should go ahead with OC4J.
    Thanks for your attention !
    Best Regards,
    João.

  • ODI Web Service Invoke Scenario

    Hi all,
    I am trying to invoke a scenario from ODI Web Services, passing the following parameters:
    <invokeScenarioRequest>
    <invokeScenarioRequest>
    <RepositoryConnection>
    <OdiUser>SUPERVISOR</OdiUser>
    <OdiPassword>XXXXX</OdiPassword>
    </RepositoryConnection>
    <Command>
    <ScenName>PROCESSORDER</ScenName>
    <ScenVersion>-1</ScenVersion>
    <Context>Development</Context>
    <LogLevel>5</LogLevel>
    <SyncMode>1</SyncMode>
    </Command>
    <Agent>
    <Host>localhost</Host>
    <Port>20910</Port>
    </Agent>
    </invokeScenarioRequest>
    </invokeScenarioRequest>
    When I execute this from ODI Web Service Advanced Editor, I got the following exception. Is there anything I missed out during installation / configuration?
    ServiceClass does not implement required method of the form OMElement invokeScenario(OMElement e)
         at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
         at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
         at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1515)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1766)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1494)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1766)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1494)
         at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
         at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
         at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:433)
         at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
         at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
         at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
         at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
         at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
         at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
         at org.apache.axis.client.Call.invoke(Call.java:2767)
         at org.apache.axis.client.Call.invoke(Call.java:1792)
         at com.sunopsis.wsinvocation.client.a.a.d.a(d.java)
         at com.sunopsis.wsinvocation.client.a.a.d.requestReply(d.java)
         at com.sunopsis.graphical.wsclient.f.b(f.java)
         at com.sunopsis.graphical.tools.utils.swingworker.v.call(v.java)
         at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)
         at com.sunopsis.graphical.tools.utils.swingworker.l.run(l.java)
         at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
         at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
         at java.lang.Thread.run(Thread.java:595)
    Appreciate any input. Thanks all.
    Regards,
    Edison

    Can you please check the request message again; <invokeScenarioRequest> is repeated.
    Thanks,
    Is

  • Can Web Services be synchronized

    Can Web services be synchronized ?
    Regards
    Dheeraj

    applications/modules can be developed to access a database, which can then be exposed as a WebService. So I guess the answer is yes. If you use a mapping framework, abstract it with EJB, or use DAO/JDBC and stick to a SQL command set common to all the databases you want to use, it could also be portable.
    Example of a Web Service for JBoss? -- see jboss.org I'd expect.
    The Oracle Database Web Service chapter in the Web Services documentation provides a good insight into some of the capabilities we have with Oracle Application Server to talk directly to an Oracle database.
    http://download-west.oracle.com/docs/cd/B31017_01/web.1013/b28974/devdbase.htm#BDCCBHFG
    -steve-

  • ODI Web Services Logging

    Hi Experts,
    If we use ODI 11g web service to invoke scenario, is there any way to get the detailed session log, like, each stepLog, start/end time, etc.?
    Thanks!

    Hi Michelle,
    This information should still be available in the ODI Console Operator log (and also the work repository schema, if you are going through the back door).
    Cheers
    Bos

  • ODI Web Service Soap Header Missing Error

    I am trying to invoke oracle crm ondemand web service using ODIInvokeWebService tool by providing the below parameters
    Url
    Port Type
    Operation
    XML Request
    HTTP User
    HTTP Password
    I am getting the below error during the execution of the step.
    javax.xml.ws.soap.SOAPFaultException: Invalid Soap Request : Soap Header is missing
         at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:189)
         at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
         at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:187)
    The code which is getting executed is
    OdiInvokeWebService "-URL=http://slc402454.us.oracle.com:30090/Services/cte/FieldManagementService?wsdl" "-PORT_TYPE=FieldManagementService" "-OPERATION=FieldManagementRead" "-HTTP_USER=Upgrade_all/sales" "-HTTP_PASS=aYyHL7THHZYEdPNTd.1ugy"
    <?xml version = '1.0' encoding = 'UTF8'?>
    <WL5G3N1:FieldManagementRead_Input xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:WL5G3N1="urn:crmondemand/ws/odesabs/fieldmanagement/">
    <apQuery:FieldSet xmlns:apQuery="urn:/crmondemand/xml/fieldmanagement/query">
    <apQuery:ObjectName>Account</apQuery:ObjectName>
    <apQuery:IncludeAll>true</apQuery:IncludeAll>
    </apQuery:FieldSet>
    </WL5G3N1:FieldManagementRead_Input>
    With SOAPUI , I am able to get the response.

    After mentioning the SOAP header and response file as XML with other properties , I am able to successfully retrieve the SOAP response.

  • Web service data control for asynchronous bpel process

    I have an async BPEL process that I want to call from a JSP page. I followed the tutorial for creating a data control for web services. When the DC was created, it created an initiate operation that requires the ReplyTo and MessageID. I thought these are internal to the runtime stack, so why are they part of the data control? How do I get around it?
    Thanks,
    Rico

    http://blogs.oracle.com/shay/2010/05/updateinsert_with_adf_web_serv.html

  • ODI & Web Services

    Hi All!
    I'm testing the call of a Scenario from a webServices using SoapUI.
    When I create a SOAP request from soapUI under the invokeScenario the XMI saw is
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gen="http://generated.ws.invocation.sdk.odi.oracle">
    <soapenv:Header/>
    <soapenv:Body>
    <gen:invokeScenario>
    <!--Optional:-->
    <gen:invokeScenario>?</gen:invokeScenario>
    </gen:invokeScenario>
    </soapenv:Body>
    </soapenv:Envelope>
    I think that there is something missing.
    Any idea? Have I to do something on ODI?
    Regards,
    Daniele

    Hi Ananth,
    I've already check this tread.. my problem is that the soap env is really different from the one I aspect...
    Any Idea?
    I'm on ODI 10.1.3.6.4 and Axis2 1.5.2
    Regards!

  • Asynchronous web service call doesn't work

    Hi,
    I'm trying to convert a synchronous web service call into an asynchronous call. (Folder-level Javascript, Acrobat Professional 8.1, Windows XP).
    Everything works fine when I call Soap.Request as a synchronous call. It calls the web service and gets the expected result. However, when I try to convert Soap.Request into an asynchronous call by adding the OAsync property, as described on pp. 198-199 of "Developing Acrobat Applications Using JavaScript," NONE of the various OAsync functions (i.e. result, response, wait) are ever called. IOW, the Javascript code continues executing after the Soap.Request call and doesn't wait for my web service call to return. Indeed, the web service method on the server doesn't even BEGIN to execute by the time the Javascript code runs to completion. (I can confirm this by watching my ASP.Net code execute in the Visual Studio debugger. In fact, the Javascript code runs to completion even before the Global.asax Session_Start code begins to execute, much less the web service method itself.) So, the problem is not with the web service, which works fine when Soap.Request is called as a synchronous method.
    To reiterate, my Javascript code is identical to the code on pp. 198-199 of "Developing Acrobat Applications Using JavaScript." In troubleshooting this, I've tried calling the OAsync functions (mySync.wait(), mySync.result(), mySync.response()) after calling the Soap.Request, but nothing works.
    Is there something else that I must add to my Javascript code (e.g. an additional Soap.Request property, or something after calling Soap.Request) to force the Javascript to wait until the web service method returns?
    Thanks,
    Bill

    Hi Lukasz,
    you can also define namespace the later in the operation GetOpenOrders itself, e.g.:
    <tem:GetOpenOrders xmlns:tem=u201Dhttp://tempuri.org/u201D>
    It does not need to be part of the Envelope element.
    Best regards
    Bastian

  • Getting BPM response in a synchronous web service

    We have a synchronous web service - an EJB whose methods are exposed as web service
    methods. The EJB acts as a broker, and channels web service requests to the BPM.
    Each web service request (i.e. each EJB method) needs to interact with a few AppView
    services. We plan to use the BPM as an intermediate layer. Hence each EJB method
    needs to start a BPM workflow, wait for its completion (as the web service is
    synchronous) and get the output response XML to return to the web service client.
    In this scenario, we have questions in two major areas -
    1) How does the EJB get the response from the workflow? For e.g. If we use sendXMLToClient
    in the workflow, how is it received by this EJB? Alternatively, is it better to
    put all the response in workflow variables, and inspect it after the workflow
    completes i.e. after WorkflowInstance.waitForCompletion() ? What would happen
    in case of exceptions = where would they be caught?
    2) There are various simultaneous tasks in the workflow, and we want to merge
    the XML response of all of these. How is it best done?
    Note that all of these are dynamic and need to be done in code i.e. Human intervention
    through worklist / studio is not expected.
    Please advise.
    Regards,
    Milind Prabhu
    [mailto:[email protected]]

    You can try the message driven bean.
    It will slove your problem.
    and you can use the database to save your run time xml response.
    Good luck!
    "Milind Prabhu" <[email protected]> wrote in message
    news:3c55830c$[email protected]..
    >
    We have a synchronous web service - an EJB whose methods are exposed asweb service
    methods. The EJB acts as a broker, and channels web service requests tothe BPM.
    Each web service request (i.e. each EJB method) needs to interact with afew AppView
    services. We plan to use the BPM as an intermediate layer. Hence each EJBmethod
    needs to start a BPM workflow, wait for its completion (as the web serviceis
    synchronous) and get the output response XML to return to the web serviceclient.
    In this scenario, we have questions in two major areas -
    1) How does the EJB get the response from the workflow? For e.g. If we usesendXMLToClient
    in the workflow, how is it received by this EJB? Alternatively, is itbetter to
    put all the response in workflow variables, and inspect it after theworkflow
    completes i.e. after WorkflowInstance.waitForCompletion() ? What wouldhappen
    in case of exceptions = where would they be caught?
    2) There are various simultaneous tasks in the workflow, and we want tomerge
    the XML response of all of these. How is it best done?
    Note that all of these are dynamic and need to be done in code i.e. Humanintervention
    through worklist / studio is not expected.
    Please advise.
    Regards,
    Milind Prabhu
    [mailto:[email protected]]

  • Can any web service be called Asynchronously

    Kindly tell me if Asynchronous call can be made to any web service or can we prevent our web service from being called asynchronously and if yes,how??

    It depends on if you need response. CORBA has one way methods which generally called Asynchronously. You can always simulate Asynchronously call by wrapping a caller in a thread. wsimport supports Asynchronously calling attribute and can generate client artifacts accordingly.

  • ODI Web server as a service

    Hello All, I have successfully installed and configured ODI web services. Are there any steps available to create the Weblogic admin server as a service along with ODI web services starting also? I have steps to create the weblogic admin server as a service but this does not start all of the weblogic components, specifically the ODI pieces. When I start the weblogic server from the start menu the admin server comes online as well as the ODI services and I can access ODI through the web console. When I start it through the service that I created in the services console, the admin server comes online and I can access it through http://server:7001/console, but not able to access the ODI web page. Please advise, thank you.

    Have a read of the following document in Oracle Support - "How to Install MS Windows Services For FMW 11g WebLogic Domain Admin and Managed Servers? [ID 1060058.1]"
    Though once you have installed ODI managed server as a windows service check the web application log for any errors because you may need to add DOMAIN_HOME and its path as an environment variable.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • EJB 3.0 Web Service

    Hi!
    I tried to create a Web Service (through wizard) from existing EJB 3.0 Session Bean. Basicly, the wizard just added @WebService annotation to my existing code...
    Now, the problem is that simple methods like:
    @WebMethod
    public String helloWorld() {
      return "Hello World!";
    }works fine. Expect that if I use Local Interface for this Session Bean, the WSDL shows two helloWorld methods (and one is with exclamation icon showing some kind of problem with multiple methods with same name - but it is not true, I have one and the other one is just interface).
    But, when I want to expose my real business service methods like:
    @WebMethod
    public List<Employee> getEmployees() {
      return (List<Employee>)q.getResultList();
    }it doesn't work (the Web Service create wizard finishes ok but service doesn't work)! When I try "Test Web Service" (from Session Bean context-menu) or "Show WSDL for Web Service annotations" the error is thrown (Null pointer exception in WSDL).
    Basically, it looks to me that Web Service cannot use EJB Entities as parameters or results. Is this correct? I saw some examples on EJB 3.0 web services and there are entities routinely used as both input and output parameters.
    Can someone, please, explain me what I'm doing wrong here.
    Thanks in advance,
    Pedja
    P.S. In Web Service wizard, only SOAP 1.1 is enabled. How can I choose SOAP 1.2? And what EJB 3.0 bindings are in same context (SOAP 1.2 or EJB 3.0 bindings?)?

    Hi Frank,
    Most of those problems are resolved (NPE was due to Timestamp field, and two methods with the same name in WSDL because of not choosing to generate SEI in wizard, so the generated WSDL had one method from the Session bean and the other from it's Local interface). But, the errors should DEFINITELY be more descriptive.
    Does the wizard work correctly? I noticed plenty of "bug like" details. For example, if I choose to create asynchronous web service, later when I go to Properties the "Asynchronous Web Service" checkbox isn't checked. Also, the @WebMethod annotations are sometimes generated and sometimes not (even if the method is checked to be exposed).
    I am also getting these exceptions when I create a proxy for the asynchronous web service (I selected "Generate asynchronous methods for all operations"), could be I'm doing something wrong:
    WARNING: The parameter/return type "java.util.concurrent.Future" in the method
    "public abstract java.util.concurrent.Future<?>
    view.proxy.MyAsyncWebService1.queryDepartmentFindAllAsync(javax.xml.ws.AsyncHandler<view.proxy.types.QueryDepartmentFindAllResponse>)"
    is not supported. This method will not be exposed.
    WARNING: The parameter/return type "java.util.concurrent.Future" in the method
    "public abstract java.util.concurrent.Future<?>
    view.proxy.MyAsyncWebService1.returnEmployeeAsync(javax.xml.ws.AsyncHandler<view.proxy.types.ReturnEmployeeResponse>)"
    is not supported. This method will not be exposed.
    Exception in thread "main" java.lang.NullPointerException
         at com.sun.xml.bind.v2.runtime.Coordinator.popCoordinator(Coordinator.java:122)
         at com.sun.xml.bind.v2.runtime.XMLSerializer.close(XMLSerializer.java:823)
         at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:310)
         at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:230)
         at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:87)
         at oracle.j2ee.ws.common.databinding.runtime.jaxb20.Jaxb20Serializer.serialize(Jaxb20Serializer.java:218)
         at oracle.j2ee.ws.common.databinding.runtime.SerializerBase.serializeSequenceWrapper(SerializerBase.java:80)
         at oracle.j2ee.ws.client.jaxws.SoapRequestorSerializer.populateSoapMessage(SoapRequestorSerializer.java:89)
         at oracle.j2ee.ws.client.jaxws.WsClientProxyInvocationHandler.invoke(WsClientProxyInvocationHandler.java:184)
         at $Proxy11.returnEmployee(Unknown Source)
         at MyAsyncWebService1SoapHttpPortClient.main(MyAsyncWebService1SoapHttpPortClient.java:22)
    Process exited with exit code 1.Can anyone throw some light on this?
    Thanks,
    Pedja

  • Handling of SOAP Faults in SOAP Clients consuming PI Web services

    Hi there,
    the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
    I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
    In particular the blogs
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI      - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
    XI: Propagation of meaningful error information to SOAP Client     - XI: Propagation of meaningful error information to SOAP Client
    have caused by attention.
    Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
    In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
    The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
    The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
    The questions I have are as follows.
    1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one    used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
    Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered     ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
    Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
    My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
    2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more    useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
    SOAP fault returned when using SOAP Sender adapter of AF
    <!see the documentation>
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
                   <text>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
         at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
         at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
         at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    SOAP fault using integrated SOAP adapter of PI IE
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>ABAP.PARSE_APPLICATION_DATA</code>
                   <text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564  XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
    There may already be a blog or thread and I just missed it.
    Any comments are welcome.
    Thanks. Dieter

    Hi Dieter,
    As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
    In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
    Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
    The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    Kind regards,
    Wojciech
    btw nice thread

Maybe you are looking for