BPEL - Fault Policy Management

Hi All
I trying to implement the fault policy management in oracle soa suite 10.1.3.5 and
I am facing a problem in it.
I have defined the process level policies in the fault-bindings.xml file as shown below and its not working.
<faultPolicyBindings>
<process faultPolicy="NICBPELFaultPolicy">
<name>mainCalcProcess2</name>
</process>
<process faultPolicy="RetryPolicy">
<name>addMainProcess</name>
</process>
</faultPolicyBindings>
is it a correct way of fault handling?
Regards
Senthil R

Sathish Venkatr... wrote:
Hi,
Could you provide me the details of testing this Fault policy.
You can handle the fault policy at process level and domain level, it looks like you are trying to have fault policy at <font face="tahoma,verdana,sans-serif" size="1" color="#000">Domain</font> level.
You have defined the Fauilt at domain level by defining in fault-bindings.xml file.
Have you restarted the server after defining this fault? If yes how are you testing this fault?
Thanks
SathishI got more deep understanding about this part, Thanks for your explanation! Nice writing.

Similar Messages

  • BPEL fault policy takes more time, when rethrowing

    Hi All,
    I have a scenario where BPEL fault policy is taking more time to re-throw the fault back to BPEL
    Scenario:
    1) Partner link service throws as business exception
    2) This exception is first caught by BPEL fault policy, this in-turn will invoke "oracle.apps.aia.core.eh.BPELJavaAction" & then it is re-throw's back to BPEL process. Then time while rethrow'n back to BPEL process it taking too much time.
    Environment:
    SOA suite : Version      10.1.3.4.0 with AIA
    Hi all , any updates on this
    Edited by: user535670 on Aug 19, 2009 7:43 PM

    Abap team debugged and found out that there was an issue with RFC in ECC system.
    RFC connection was not working. it was causing the flow to wait for 1 mins. Basis fixed the issue to make RFC working. now interface works without connection time out.

  • Fault Policy Management Framework in 10.1.3.3

    Hi,
    According to the Oracle Documentation, 10133technote. It says
    1) "A fault policy can be associated at the following levels:
    Partner link,Port type, Process & Domain."
    - Here can you through a light on "Process" n what "Process" means
    - Is it Refering to a BPEL Process or a "Process" in <faultPolicyBindings>
    - Can we have multiple "Process" for a <faultPolicyBindings>
    2) "The framework looks for fault policy bindings in the following files (in order of priority):
    - In the bpel.xml file at the process level
    - In the domain level file "
    - what entry should go in bpel.xml (are we really have to edit bpel.xml, created by JDEV)
    - what does it mean Process Level & Domain Level
    - where we can have a thin line between "Process Level" & "Domain Level"
    and How they differ-in while at Implemenation level
    Lastly what are the files that we need to modify/edit to make faultPolicy work.
    Thanx in adv

    Hello,
    See comments below:
    Hi user568921,
    Thanx for an immediate reply.
    Apologize for the long list of questions.
    1) Already we can have expentional Handling in BPEL,
    then why this
    Fault Management Framework be used on top of this
    [ irrespective of your BPEL Process has Expectional
    Handling or not (pl. correct me if im wrong)]
    more over i have to restart the server for each
    modification,
    this is not that recommended when it goes to
    Production.
    1a) if i have both BPEL Expectional Handling and
    Fault Management Framework applied to my Process
    which one preceedes.
    Fault Management Framework is used for generic fault
    handling on a deployed server.
    Since the change affects all deployed processes, we do
    not recommend changing policy or bindings in production.
    We are providing a client api in 10.1.3.4.0 to reload fault
    policy and binding files.
    Fault Management Framework precedes BPEL "catch". You can
    attempt retry actions, if this fails, invoke java code to
    email an administrator and mark the activity for human
    recovery or do a rethrowFault to pass to BPEL exception
    handling.
    2) This is what my bpel.xml files contains
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <BPELSuitcase>
    <BPELProcess id="FaultPolicyManagement"
    src="FaultPolicyManagement.bpel">
    <partnerLinkBindings>
    <partnerLinkBinding name="client">
    <property
    name="wsdlLocation">FaultPolicyManagement.wsdl</prope
    ty>
    </partnerLinkBinding>
    <partnerLinkBinding name="sayHelloService">
    <property
    name="wsdlLocation">sayHelloService3.wsdl</property>
    </partnerLinkBinding>
    <partnerLinkBinding
    name="FaultPolicyManagementSync">
    <property
    name="wsdlLocation">url?wsdl</property>
    </partnerLinkBinding>
    artnerLinkBindings>
    </BPELProcess>
    <faultPolicyBindings>
    process faultPolicy="defaultPolicy"/>
         <process faultPolicy="anvvPolicy"/>
    <partnerLink
    k faultPolicy="DefaultPolicy"></partnerLink>
         <partnerLink faultPolicy="anvvPolicy">
         <name>FaultPolicyManagementSync</name>
    <portType
    tType
    xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
    licyManagementSync_plt</portType>
         </partnerLink>
    </faultPolicyBindings>
    /BPELSuitcase>
    when i edit the bpel.xml with
    <faultPolicyBindings></faultPolicyBindings> and
    deploy it
    all the <faultPolicyBindings></faultPolicyBindings>
    is resetting back to original bpel.xml
    ( The Content between
    <faultPolicyBindings></faultPolicyBindings> is taken
    from fault-bindings.xml file )
    why it is so ?
    and my fault-bindings.xml is
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicyBindings version="2.0.1"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <process faultPolicy="DefaultPolicy"/>
    <process faultPolicy="anvvPolicy"/>
    <partnerLink
    k faultPolicy="DefaultPolicy"></partnerLink>
         <partnerLink faultPolicy="DefaultPolicy2">
         <name>FaultPolicyManagementSync</name>
    <portType
    tType
    xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
    licyManagementSync_plt</portType>
         </partnerLink>
    </faultPolicyBindings>
    and DefaultPolicy.xml & DefaultPolicy2.xml is same as
    what is there in the server.
    Is the file contents correct in Implementation.
    Only one process tag is allowed.
    2a) if Fault Management Framework applied and NO
    <faultPolicyBindings></faultPolicyBindings> is added
    to bpel.xml
    and if it is left as it is (i.e., default bpel.xml
    generated by JDEV) then what is the policy it is
    applied.
    Once the system detects an invoke has faulted, it tries
    to check if there is a fault policy attached to this faulted
    partner link (or port type, or the process), if no policy
    binding is detected, it will flow bubble up the fault. By
    default there is no policy applied.
    3) Can you please let me know
    - how many ( fault-binding.xml &) fault-policy's can
    n i have per domain.
    - how many ( fault-binding.xml &) fault-policy's can
    n i have per process.
         many to one or many to many relationship.
    We can have only one policy
    [config/DefaultPolicy.xml] at a Domain Level
    To create a Fault Policy File for Automated Fault Recovery
    Create directories named fault-policies under the config directory for
    every domain in which you want to use the fault management framework.
    SOA_ORACLE_HOME\bpel\domains\domain_name\config\fault-policies
    You can have n fault policies per domain.
    To provide a fault policy applicable to an entire domain in the
    fault-bindings.xml file in the SOA_ORACLE_
    HOME\bpel\domains\domain_name\config directory.
    You can have 1 fault-bindings.xml per domain.
    3a) how can i make sure/ensure that Fault Management
    Framework is applied at each process level and/or at
    Domain level.Provide a fault-binding: with
    <process faultPolicy="YourPolicy"/>
    >
    4) Is there any Advantages, limitations / contrains
    that we have if we are opting Fault Management
    Framework (have to consider, before going to
    production).
    The framework is applicable for faults in "invoke" activity
    only.
    5) can i have any samples / URL for samples for Fault
    Management Framework in OTN or else where.
         so that i can work around.
    >
    >
    Other than 10133technotes.pdf do you have any other
    documentation which has an eloberative description
    about
    Fault Management Framework and its samples
    please guide me accordingly.Let me know if you need more information.

  • Test Conditions in BPEL Fault Policy

    Per the ORacle 10.1.3.3 SOA Suite techical document, under the Fault Policy Framework section you can use an XPath expression in the <test> section of a fault policy. The example provided is +<test>$fault.code/code="WSDLReadingError"</test>+
    Instead of using an equals sign, I am trying to figure out the syntax to use a "contains" or "starts-with" expression. I want to filter out a particular remoteFault using the "summary".
    I have tried:
    +<Conditions>+
    +          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">+
    +               <condition>+
    +*<test>contains($fault.summary/summary,"exception on JaxRpc")</test>*+      
    +<action ref="ora-retry"/>+
    +               </condition>+
    +          </faultName>+
    +     </Conditions>+
    +     <Actions>...+
    but this does not seem to work.
    Anyone know what "tests" are possible, and\or have used a "contains" expression in their Fault Policy?
    Thanks in advance,
    Eric
    Example of the fault that I am trying to "catch".
    +<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">+
    +<part name="code">+
    +<code>ESBMessageProcessingFailed</code>+
    +</part><part name="summary"><summary>exception on JaxRpc invoke:+
    start fault message:
    +801 Error validating amount. Must be numerical and greater than 0 [000]+
    +:end fault message</summary>+
    +</part><part name="detail"><detail>null</detail>+
    +</part></remoteFault>+

    I did try to add namespace but it still didn't catch the fault.
    I contacted Oracle support and they indicated that the syntax is: $fault.part/<xpath expression>
    So for my purposes I needed to put: <test>$fault.summary/contains(summary, "xyz")</test>
    HOWEVER this did not work. We recontacted Oracle and this time they admitted there is a bug that they will document. Only = or != can be used at this time.
    Thanks for all who responded. I'm closing this question.
    For reference, here's a list of what I tried:
    The following did NOT catch my fault
    <test>$fault.summary/contains(summary, "JaxRpc invoke")</test>      
    <test>$fault.summary/contains(summary, 'start fault message:')</test>     
    <test>$fault.code/contains(code, "ProcessingFail")</test>           
    <test>$fault.code/contains(code, "ESBMessageProcessingFailed")</test>
    <test>$fault.code/contains(code/code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code/code, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/code/contains($fault.code/code/, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code/code/, "ESBMessageProcessingFailed")</test>           
    <test>$fault.code/contains(/remoteFault/part[1]/code/, "ESBMessageProcessingFailed")</test>     
    <test>contains($fault.code/code,"ESB")</test>           
    <test>contains($fault.summary/summary,"ESB")</test>     
    <test>contains($fault.summary, "ESB")</test>          
    <test>contains($fault.summary/summary, &#xD;)</test>           
    <test>xp20:matches($fault.summary/summary,'.*fault message.*')</test>      
    <test>xp20:matches($fault.summary/summary,'*fault message*')</test>     
    <test>not(xp20:matches($fault.summary/summary,'.*xyz.*'))</test>          
    <test>true()</test>

  • EDN not available throws runtimeFault - Fault Policy Framework unable to catch it

    Hi Team,
    I have been working on some error handling scenarios for EDN .
    From my observation if BPEL is used to publish the event, BPEL Fault policy cannot catch EDN errors (e.g., EDN unavailable) but BPEL catch activity can catch it.
    Steps performed :
    1. Create a BPEL to publish the event to EDN.
    2.Create fault policy to catch  BPEL runtime fault .
    3.Go to weblogic console to change EDNdatasource target to get "EDN datasource not available error".
    4.Test your BPEL.
    My requirement is to retry such faults and invoke human intervention after retry failure using BPEL.
    Please let me know how to achieve this

    Follow the oracle documentation
    - http://docs.oracle.com/cd/E28271_01/dev.1111/e10224/bp_faults.htm#BABIGGIB
    *The fault management framework catches all faults (business and runtime) for an invoke activity.*
    Hope that helps.
    P.S. The fault management framework main purpose is to define a enterprise wide standard policies to handle the faults that will be applied to various/all composite. Hence your specific fault that is specific to a composite should not creep into to fault management framework as this is not the enterprise standard i.e., every composite may have to handle the invalid variable, based on where it occurred and for what variable it occurred.

  • Wht happens when we say retry and rethrow in fault policy?

    Hi All,
    Can any one explain me on retry and rethrow in bpel fault policy?
    wht i mean if a binding/remote fault occurs then how the flow of a fault will be executed. if a retry is there then how many retries? and if that retries r finished then wht happens?

    Please refer to this thread, Re: wht is retry and rethrow in AIA fault policies

  • BPEL 10.1.3.5 Fault Management - Using Xpath in Fault Policy conditions

    Hi all.
    I have a requirement to use the xpath functions "contais" and "upper-case" inside a condition in a fault policy file. I've done some tests and didn't get successful results so far.
    My first test using the policy file was the following:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>$fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message = 'TE-0001'</test>*
         <action ref="ora-human-intervention" />
         </condition>
    In this first test I used a simple expression just to test the overall namespace declarations and xpath navigation. It worked as expected.
    Second, I modified the test to use the "contais" function. I need to use this function because my message will eventually contain the value 'TE-0001' mixed with other string:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>contains($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message, 'TE-0001')</test>*
         <action ref="ora-human-intervention" />
         </condition>
    In this second test I allways get FALSE results, meaning that this expression may not be correct. I'm certain that this should be evaluated to TRUE as the test scenario is the same as the first test. Is there something missing?? I turned on debug level log in the domain but didn't find any hint about the fault management processing.
    Besides the use of the contains function, it would be nice if I'm able use the function upper-case. Something like this:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>contains(xp20:upper-case($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message), 'TE-0001')</test>*
         <action ref="ora-human-intervention" />
         </condition>
    Any ideas???
    Thanks
    Denis

    Hi again.
    Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
    Does anyone know if Fault Management Framework at least support the use of Xpath functions?
    Thanks.
    Denis

  • BPEL 11g fault policy action java class not sending email

    Hi All,
    I am trying to attach fault policy to my bpel process. The fault conditions are working fine but the email part from the action class is not able to send email. The code execute properly , i can't see any error message in the log but I cant access the email in my inbox.
    I am able to send email from using email bpel activity and also test work flow notification from em console.
    I have used both the java options for sending email like javax.mail and oracle.sdp.messaging .
    JAVA CODE FOR EMAIL javax.mail
    public String handleFault(IFaultRecoveryContext iFaultRecoveryContext){
    //Print Fault Meta Data to Console
    System.out.println("****************Fault Metadata********************************");
    System.out.println("Fault policy id: " + iFaultRecoveryContext.getPolicyId());
    System.out.println("Fault type: " + iFaultRecoveryContext.getType());
    System.out.println("Partnerlink: " + iFaultRecoveryContext.getReferenceName());
    System.out.println("Port type: " + iFaultRecoveryContext.getPortType());
    System.out.println("**************************************************************");
    //print all properties defined in the fault-policy file
    System.out.println("Properties Set for the Fault");
    //Print Fault Details to Console if it exists
    System.out.println("****************Fault Details********************************");
    // if(iFaultRecoveryContext instanceof BPELFaultRecoveryContextImpl)
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
    System.out.println("Fault: " + bpelCtx.getFault());
    System.out.println("Activity: " + bpelCtx.getActivityName());
    System.out.println("Composite Instance: " + bpelCtx.getCompositeInstanceId());
    System.out.println("Composite Name: " + bpelCtx.getCompositeName());
    System.out.println("***********************************************************");
    try {
    bpelCtx.addAuditTrailEntry("Sending Email...");
    Map props = iFaultRecoveryContext.getProperties();
    if (props != null && props.size() > 0) {
    setFrom(getParameterValue((ArrayList)props.get("from")));
    setTo(getParameterValue((ArrayList)props.get("to")));
    setSubject(getParameterValue((ArrayList)props.get("subject")) + bpelCtx.getTitle());
    setText(getParameterValue((ArrayList)props.get("text")) + "\n" + "BPEL Process Instance: " + bpelCtx.getInstanceId() + " needs intervention to recover from a technical exception: " + bpelCtx.getFault().getMessage() + ".\n" + "Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.\n" + "This message was automatically generated, please do not reply to it.");
    setHost(getParameterValue((ArrayList)props.get("host")));
    setPort(getParameterValue((ArrayList)props.get("port")));
    bpelCtx.addAuditTrailEntry("to Email getFrom..."+getFrom());
    bpelCtx.addAuditTrailEntry("to Email getTo..."+getTo());
    bpelCtx.addAuditTrailEntry("to Email getText..."+getText());
    bpelCtx.addAuditTrailEntry("to Email getHost..."+getHost());
    bpelCtx.addAuditTrailEntry("to Email getPort..."+getPort());
    Session mailSession = Session.getDefaultInstance(properties);
    Message simpleMessage = new MimeMessage(mailSession);
    bpelCtx.addAuditTrailEntry("to Email toAddresses2...");
    InternetAddress fromAddress = new InternetAddress(from);
    bpelCtx.addAuditTrailEntry("to Email fromAddress..."+fromAddress);
    simpleMessage.setFrom(fromAddress);
    String[] toAddresses = to.split(";");
    if (toAddresses != null && toAddresses.length > 0)
    bpelCtx.addAuditTrailEntry("to Email toAddresses3...");
    InternetAddress[] toInternetAddresses =new InternetAddress[toAddresses.length];
    for (int i = 0; i < toAddresses.length; i++)
    bpelCtx.addAuditTrailEntry("to Email toAddresses4444..."+ toAddresses);
    toInternetAddresses[i] = new InternetAddress(toAddresses[i]);
    bpelCtx.addAuditTrailEntry("to Email toInternetAddresses..."+ toInternetAddresses[i]);
    simpleMessage.setRecipients(RecipientType.TO,toInternetAddresses);
    simpleMessage.setSubject(subject);
    simpleMessage.setText(text);
    Transport.send(simpleMessage);
    bpelCtx.addAuditTrailEntry("After Email...");
    } catch (Exception e) {
    bpelCtx.addAuditTrailEntry("fault Message:" + e.getMessage());
    //Custom Code to Log Fault to File/DB/JMS or send Emails etc.
    return "Manual";
    private String getParameterValue(ArrayList parameterList) {
    String value = null;
    if (parameterList != null && parameterList.size() > 0)
    value = (String)parameterList.get(0);
    return value;
    JAVA CODE FOR EMAIL oracle.sdp.messaging 
    private void sendMail(IFaultRecoveryContext iFaultRecoveryContext) {
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
    bpelCtx.addAuditTrailEntry("In sendMail...");
    Map<String, Object> params = new HashMap<String, Object>();
    // params.put(key, value); // if optional parameters need to be specified.
    MessagingClient messagingClient;
    try {
    bpelCtx.addAuditTrailEntry("In sendMail111...");
    messagingClient =
    MessagingClientFactory.createMessagingClient(params);
    Message newMessage = MessagingFactory.createMessage();
    // newMessage.setContent(createEventPayload(iFaultRecoveryContext),"text/plain");
    newMessage.setContent("Component Name :"+bpelCtx.getComponentName()+ "\n Instacne Id :"+bpelCtx.getComponentInstanceId()+
    "\n Composite Instance Id :"+bpelCtx.getCompositeInstanceId()+ "\n Composite Name :" bpelCtx.getCompositeName()
    "\n Activity name :"+bpelCtx.getActivityName() + "\n Activity Id :" bpelCtx.getActivityId() "\n ECID :" bpelCtx.getECID()
    "\n Reference Name :"+bpelCtx.getReferenceName()+ "\n Title :" bpelCtx.getTitle()
    "\n Fault :" + bpelCtx.getFault()+ "\n Port Name :"+bpelCtx.getPortType(), "text/plain");
    bpelCtx.addAuditTrailEntry("In sendMail222...");
    Address sender = MessagingFactory.createAddress(getFrom());
    bpelCtx.addAuditTrailEntry("In sendMail sender..."+sender.toString());
    bpelCtx.addAuditTrailEntry("from Email..."+getFrom());
    String recipientsStr[] = to.split(";");
    bpelCtx.addAuditTrailEntry("to Email..."+getTo());
    bpelCtx.addAuditTrailEntry("In sendMail333...");
    Address[] recipients = MessagingFactory.createAddress(recipientsStr);
    bpelCtx.addAuditTrailEntry("In sendMail444...");
    newMessage.addSender(sender);
    messagingClient.registerAccessPoint(MessagingFactory.createAccessPoint(sender));
    newMessage.addAllRecipients(recipients);
    bpelCtx.addAuditTrailEntry("In sendMail5555...");
    newMessage.getMessageInfo().setSession(MessageSessionType.INBOUND_SESSION);
    newMessage.setSubject(getSubject());
    bpelCtx.addAuditTrailEntry("Subject..."+getSubject());
    String messageId = "";
    bpelCtx.addAuditTrailEntry("In sendMail666...");
    synchronized (this) {
    bpelCtx.addAuditTrailEntry("In sendMail777...");
    messageId = messagingClient.send(newMessage);
    bpelCtx.addAuditTrailEntry("In sendMail888...");
    Status[] statuses = messagingClient.getStatus(messageId);
    bpelCtx.addAuditTrailEntry("In sendMail999...");
    } catch (MessagingException e) {
    bpelCtx.addAuditTrailEntry("inside exception email fault Message:" + e.getMessage());
    //e.printStackTrace();
    MESSAGES FROM SOA SERVER OUT LOG after test the bpel process:
    ===========================================
    ****************Fault?Metadata********************************
    Fault?policy?id:?SimpleFaultPolicy
    Fault?type:?bpel
    Partnerlink:?Service1
    Port?type:?{http://kacst.edu.sa/process/nstip/coPINotifyProcess}kacst_process_nstipCoPIMotifyProcess
    Properties?Set?for?the?Fault
    ****************Fault?Details********************************
    Fault:?com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
    parts: {{
    summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
    ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception>
    </detail>
    ,code=<code>env:Server</code>}
    Activity:?Invoke1
    Composite?Instance:?740332
    Composite?Name:?TestBPELFaultPolicy
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
    220 taisirsit.kacst.edu.sa ESMTP Sendmail 8.14.4+Sun/8.14.4; Fri, 12 Oct 2012 13:00:45 +0300 (AST)
    DEBUG SMTP: connected to host "localhost", port: 25
    EHLO taisirsit.kacst.edu.sa
    250-taisirsit.kacst.edu.sa Hello localhost [127.0.0.1], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-EXPN
    250-VERB
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-DELIVERBY
    250 HELP
    DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "EXPN", arg ""
    DEBUG SMTP: Found extension "VERB", arg ""
    DEBUG SMTP: Found extension "8BITMIME", arg ""
    DEBUG SMTP: Found extension "SIZE", arg ""
    DEBUG SMTP: Found extension "DSN", arg ""
    DEBUG SMTP: Found extension "ETRN", arg ""
    DEBUG SMTP: Found extension "DELIVERBY", arg ""
    DEBUG SMTP: Found extension "HELP", arg ""
    DEBUG SMTP: use8bit false
    MAIL FROM:<[email protected]>
    250 2.1.0 <[email protected]>... Sender ok
    RCPT TO:<[email protected]>
    250 2.1.5 <[email protected]>... Recipient ok
    DEBUG SMTP: Verified Addresses
    DEBUG SMTP: [email protected]
    DATA
    354 Enter mail, end with "." on a line by itself
    From: [email protected]
    To: [email protected]
    Message-ID: <[email protected].sa>
    Subject: SOA EXCEPTIONInstance #890381 of BPELProcess1
    MIME-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Testing Email From Fault
    BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
    parts: {{
    summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
    ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception>
    </detail>
    ,code=<code>env:Server</code>}
    Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.
    This message was automatically generated, please do not reply to it.
    250 2.0.0 q9CA0j30012424 Message accepted for delivery
    QUIT
    221 2.0.0 taisirsit.kacst.edu.sa closing connection
    Details from Instance of BPEL PROCESS :
    Started invocation of operation "process" on partner "Service1".
    Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Invoked handleBPELFault on custom java action class "com.kacst.fault.CustomFaultHandler".
    Oct 12, 2012 10:00:45 AM Sending Email...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email getText...Testing Email From Fault BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} parts: {{ summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary> ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception> </detail> ,code=<code>env:Server</code>} . Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible. This message was automatically generated, please do not reply to it.
    Oct 12, 2012 10:00:45 AM to Email getHost...smtp.kacst.edu.sa
    Oct 12, 2012 10:00:45 AM to Email getPort...25
    Oct 12, 2012 10:00:45 AM to Email toAddresses2...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email toAddresses3...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM After Email...
    Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Marked Invoke activity as "pending manual recovery".
    Oct 12, 2012 10:00:45 AM Faulted while invoking operation "process" on provider "Service1".
    Please suggest.
    Thanks

    Hi,
    I got the solution. our email server is sending email to the mail accounts those are in the same domain but for different domains its not able to send the email.
    you can try with the email those are created on the same email server.
    Thanks
    Tuku

  • Why is Fault Policy working only when the BPEL's transaction is requiresNew

    Hi All
    I've defined Fault policy & fault bindings files for faults in my BPEL process. I'm using Oracle SOA Suite 11g.
    But the fault management framework is properly working only when the transaction property(bpel.config.transaction) of the BPEL is set to "requiresNew" in composite.xml
    When i modify it ot required, its not working, i.e. it is waiting for some period and erroring out. I could not manage these errors from the EM as we do for those in Fault Management Framework.
    Why is this behavior?
    I went thru this article, but could not understand it
    Transaction and Fault Propagation Semantics in BPEL Processes(http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/soa_transactions.htm)
    Can someone pls explain this.
    Regards
    RaviKiran.

    Please refer http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/soa_transactions.htm
    Thanks,
    S

  • BPEL 10.1.3.5: Fault policy framework: has retryCount a maximum of 50?

    Hello,
    i configured the fault policy with the folllowing values:
    <Action id="ora-retry">
    <retry>
    <retryCount>60</retryCount>
    <retryInterval>1</retryInterval>
    </retry>
    </Action>
    But when i look at the audit-tab in the BPEL-Console, i see only 50 retries, until the action fails.
    Has retryCount a maximum of 50 retries?
    Best regards and thanks for your help
    Friedrich

    Hi again.
    Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
    Does anyone know if Fault Management Framework at least support the use of Xpath functions?
    Thanks.
    Denis

  • BPEL Fault Management and Notification

    Hi peers - has anyone successfully implemented Email Notification as part of a Fault Management Framework approach to their BPEL projects - i.e implemented the necessary entries in a fault-policies.xml file to allow an email notification to be sent as part of standard procedure? I acknowledge the custom Java approach, but I don't want to reinvent the wheel if someone has done it already.
    Any help much appreciated.
    Dennis R

    If anyone's interested - here is our solution. We've commented out some BPEL specific context handling as there is a problem with it at the moment - but this is a start.
    package au.com.abcde.bpel;
    // import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    public class CustomFaultHandler implements IFaultRecoveryJavaClass {
    public void handleRetrySuccess(IFaultRecoveryContext iFaultRecoveryContext) {
    System.out.println("This is for retry success");
    handleFault(iFaultRecoveryContext);
    public String handleFault(IFaultRecoveryContext iFaultRecoveryContext) {
    Map faultProperties = iFaultRecoveryContext.getProperties();
    Properties properties = new Properties();
    properties.put("mail.smtp.host",
    ((List)faultProperties.get("host")).iterator().next().toString());
    properties.put("mail.smtp.port",
    ((List)faultProperties.get("port")).iterator().next().toString());
    Session session = Session.getDefaultInstance(properties, null);
    try {
    // BPELFaultRecoveryContextImpl bpelCtx =
    // (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(((List)faultProperties.get("from")).iterator().next().toString()));
    message.setRecipient(Message.RecipientType.TO,
    new InternetAddress(((List)faultProperties.get("to")).iterator().next().toString()));
    message.setSubject(((List)faultProperties.get("subject")).iterator().next().toString());
    message.setText("\n" +
    "A BPEL Process Instance has faulted.\n" +
    "Check the Instances tab in the SOA Composite console in order to resolve the problem.\n" +
    // "BPEL Composite/Instance: " + bpelCtx.getCompositeName() +
    // "/" + bpelCtx.getComponentInstanceId() + ".\n" +
    "Fault with Partner Link: " +
    iFaultRecoveryContext.getReferenceName() + ".\n" +
    "Composite Fault Policy: " +
    iFaultRecoveryContext.getPolicyId() + ".\n" +
    "This message was automatically generated, please do not reply to it.");
    Transport.send(message);
    } catch (MessagingException e) {
    e.printStackTrace();
    return "OK";
    and our fault-policies.xml looks like
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1" id="StandardFaults"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
    <!-- Fault if location port is not reachable-->
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    <!-- Business faults here, if any-->
    </Conditions>
    <Actions>
    <Action id="ora-retry">
    <retry>
    <retryCount>5</retryCount>
    <retryInterval>4</retryInterval>
    <exponentialBackoff/>
    <retryFailureAction ref="java-fault-handler"/>
    <retrySuccessAction ref="ora-terminate"/>
    </retry>
    </Action>
    <!--
    <Action id="ora-replay-scope">
    <replayScope/>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    -->
    <Action id="java-fault-handler">
    <javaAction className="au.com.abcde.bpel.CustomFaultHandler"
    defaultAction="ora-human-intervention"
    propertySet="properties">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    <Properties>
    <propertySet name="properties">
    <property name="from">[email protected]</property>
    <property name="to">[email protected]</property>
    <property name="subject">BPEL Problem Notification</property>
    <property name="host">smtp.abcde.com.au</property>
    <property name="port">25</property>
    </propertySet>
    </Properties>
    </faultPolicy>
    </faultPolicies>

  • Fault policy does not work when throwing remoteFault in bpel

    Hi
    I have a BPEL-proces in which I throw a remoteFault.
    In the fault-policy there is a condition for this fault
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="ora-java"/>
    </condition>
    </faultName>
    But the fault-policy does not work if I throw this remoteFault in de bpel. But when I invoke another service (which is shutdown), then I get a remoteFault and for this remoteFault the fault-policy works well.
    Any idea why the fault-policy does not work when I throw the remoteFault?
    Regards

    BPEL fault works only on invocation failures.
    Fault management will work based on the remote fault from the remote service, you cannot throw remote fault from bpel and capture that in fault management and process.
    The following are the actions that we can take on faults.
    1. Human Intervention
    2. Rethrow [rethrowFault]
    3. Termination [abort]
    4. Replay Fault [replayScope]
    5. Custom Java Action [javaAction]
    6. Retry [retry]
    Hope this helps !!!
    Thanks,
    Vijay

  • SOA BPEL 11g (11.1.1.3.0) - Using encapsulated retries in fault-policy file

    Hi,
    We are using oracle SOA suite 11g (11.1.1.3.0)
    I'm trying to configure a fault-policy file so that it first retries 20 times every 20 secs, then reties 20 times every 10 minutes, then retries 23 times every hour, then retries 24 times every 6 hours and if the fault persists call a java action to send an email and then go to human-intervention. It seems however that only the first retry is executed. The rest ones are ignored and the action following the first retry failure is the Java Action. The fault-policy is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="0.0.1" id="TransferResponsibilityRequestProcessFaults"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
    <faultName xmlns:freeze="http://rom/cosmote/bpel/webservice/util" name="freeze:BpelWSFault">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:retry="http://rom/cosmote/bpel/webservice" name="retry:PendingRequestsFault">
    <condition>
    <action ref="ora-retry-20sec"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry-20sec">
    <retry>
    <retryCount>10</retryCount>
    <retryInterval>20</retryInterval>
    <retryFailureAction ref="ora-retry-10min"/>
    </retry>
    </Action>
         <Action id="ora-retry-10min">
    <retry>
    <retryCount>10</retryCount>
    <retryInterval>600</retryInterval>
    <retryFailureAction ref="ora-retry-1hour"/>
    </retry>
    </Action>
    <Action id="ora-retry-1hour">
    <retry>
    <retryCount>23</retryCount>
    <retryInterval>3600</retryInterval>
    <retryFailureAction ref="ora-retry-6hour"/>
    </retry>
    </Action>
         <Action id="ora-retry-6hour">
    <retry>
    <retryCount>24</retryCount>
    <retryInterval>21600</retryInterval>
    <retryFailureAction ref="ora-java"/>
    </retry>
    </Action>
    <Action id="ora-java">
    <javaAction className="gr.cosmote.bpel.util.JavaActionInCaseOfRetryFails"
    defaultAction="ora-human-intervention">
    <returnValue value="RETURNED" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Is retrying with various intervals only done by using the tag <exponentialBackoff/>?
    Thanks for any response.

    I had a similar requirement, although not as elaborate as yours. After I failed to figure it out myself I filed a SR. Basically, you cannot restart a retry block after the first execution to avoid an infinite loop.
    If you need to send the e-mail after the 23rd hour, why not just retry until the 23rd hour and send an e-mail?

  • BPEL Console - Fault Policy

    Hi,
    Can we use BPEL Console/Admin to edit fault policy file? I didn't find a way though.. I assume it should be possible using Console/Admin ...
    Please let me know ..
    Ranjith

    I believe it is not possible atleast in 10.1.3.3 version, Oracle might support this in later version.
    Have you seen the demo of Oracle CAB, I believe they wrote some JSP to view/edit these policies. (Not sure it may be just for ESB).
    Regards,
    Chintan

  • Fault policy doesn't fire when asynchronous calls to BPEL  in soa11g

    Hi,
    I have created mainporcess and subprocess both are asynchronous process . exceptions thrown by subprocess are caught in mainprocess using call back operation and fault policy defined in fault-polacy/binding doesn't fire .
    if the subprocess is synchronous exceptions thrown by subprocess are caught in mainprocess and creating human-intervention job for Retry action as defined in fault-polacy/binding.
    Generally how we can handle custom Faults in A asynchronous calls to composites/BPEL processes?
    Thanks
    Ravi

    Hi ,Milan
    Thanks for your response . in subprocess callback port having two operations processResponse,callbackexception
    <wsdl:portType name="BPELProcessAsynchDetailsCallback">
              <wsdl:operation name="processResponse">
                   <wsdl:input message="client:BPELProcessAsynchDetailsResponseMessage"/>
              </wsdl:operation>
              <wsdl:operation name="callbackexception">
                   <wsdl:input message="client:FaultMessage"/>
              </wsdl:operation>
         </wsdl:portType>>
    Any exeptions thrown by suborocess is calling callbackexception operation and main process having pick activity for receiving both processResponse and callbackexception operations.
    subprocessdetails:
    <faultHandlers>
    <catch faultName="bpelx:remoteFault" faultVariable="FaultVar">
    <sequence>
    <assign name="Assign2">
    <copy>
    <from expression="'code'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:code"/>
    </copy>
    <copy>
    <from expression="'summary'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:summary"/>
    </copy>
    <copy>
    <from expression="'details'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:detail"/>
    </copy>
    </assign>
    <invoke name="Invoke1"
    inputVariable="Invoke1_callbackexception_InputVariable"
    partnerLink="bpelprocessasynchdetails_client"
    portType="client:BPELProcessAsynchDetailsCallback"
    operation="callbackexception"
    bpelx:invokeAsDetail="no"/>
    </sequence>
    </catch>
    </faultHandlers>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcessAsynchDetails.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocessasynchdetails_client" portType="client:BPELProcessAsynchDetails" operation="process" variable="inputVariable" createInstance="yes"/>
    <!--
    Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
    -->
    <switch name="Switch1">
    <case condition="bpws:getVariableData('inputVariable','payload','/client:process/client:input')='test'">
    <bpelx:annotation>
    <bpelx:pattern>test</bpelx:pattern>
    <bpelx:general>
    <bpelx:property name="userLabel">test</bpelx:property>
    </bpelx:general>
    </bpelx:annotation>
    <sequence>
    <empty name="Empty1"/>
    <throw name="Throw1" faultName="bpelx:remoteFault"
    faultVariable="FaultVar"/>
    </sequence>
    </case>
    <otherwise>
    <assign name="Assign1">
    <copy>
    <from variable="inputVariable" part="payload"
    query="/client:process/client:input"/>
    <to variable="outputVariable" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    </otherwise>
    </switch>
    <invoke name="Invoke2" bpelx:invokeAsDetail="no"
    inputVariable="outputVariable"
    partnerLink="bpelprocessasynchdetails_client"
    portType="client:BPELProcessAsynchDetailsCallback"
    operation="processResponse"/>
    </sequence>
    mainprocesdetails:
    <faultHandlers>
    <catch faultName="bpelx:remoteFault" faultVariable="Variable1"/>
    </faultHandlers>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1ASynch.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynch" operation="process" variable="inputVariable" createInstance="yes"/>
    <!--
    Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
    -->
    <assign name="Assign1">
    <copy>
    <from variable="inputVariable" part="payload"
    query="/client:process/client:input"/>
    <to variable="Invoke1_process_InputVariable" part="payload"
    query="/ns1:process/ns1:input"/>
    </copy>
    </assign>
    <invoke name="Invoke1" bpelx:invokeAsDetail="no"
    inputVariable="Invoke1_process_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetails" operation="process"/>
    <pick name="Pick1">
    <onMessage variable="OnMessage_processResponse_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetailsCallback"
    operation="processResponse">
    <sequence name="Sequence2">
    <assign name="Assign3">
    <copy>
    <from variable="OnMessage_processResponse_InputVariable"
    part="payload"
    query="/ns1:processResponse/ns1:result"/>
    <to variable="outputVariable" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    </sequence>
    </onMessage>
    <onMessage variable="OnMessage_callbackexception_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetailsCallback"
    operation="callbackexception">
    <sequence name="Sequence1">
    <throw name="Throw1" faultName="bpelx:remoteFault"
    faultVariable="Variable1"/>
    </sequence>
    </onMessage>
    </pick>
    <invoke name="callbackClient" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynchCallback" operation="processResponse" inputVariable="outputVariable"/>
    </sequence>

Maybe you are looking for

  • Creating a film from different sources

    Hi Everybody I am fairly new to this so please forgive any stupidity. I have 3 versions of a movie 1.Top and bottom cropped 2.Sides cropped 3.More picture Top and Bottom I want to merge these together to create the full screen movie, now I understand

  • Converting the Transaction  into PDF

    Hi All, How to convert the standard transaction PZ11 into PDF. Presently this PZ11 giving the output in script format. i need to convert it into PDF. it is very urgent... Pls do the needful.. Regards

  • Convert multiple page pdf to multiple jpg

    Hi, is there anyway of converting a multiple page pdf file in preview to multiple jpgs in one go? I've tried selecting all, but it still only converts one page into a jpg, when using the "save as" function. I'm currently having to convert each page i

  • Amount field in smartform

    Hi Experts, I am developing smart form for invoice.In output it is displaying amount field like this 123.44,65 instead of 123,44.65.(I.e full stop is coming in place of comma and vice versa). please help me. Thanks, Santosh

  • Preflight check for invisible text?

    Hello! While there is an indicator for overset text in Indesign preflight, is it also possible to check for "invisible" text? This will give a warning if objects, e.g. a picture or colored box, are placed over text (witout text wrap). Have a nice day