BPM  with error handling

Hi,
I have a BPM scenario as follows,
Receive input file thru HTTP protocol
Send it to SAP thru sync XI protocol
Response from SAP has a field with status code
If the code says its success, then send response back to 3rd party and place the input file in archive dierectory.
If the code says its failed, then send an email with error description and plance the input file in error directory.
I would like to have a breif hint on the step-wise process flow in BPM technically.
Thanks,
Karthik

Thank you all.
I would like to follow the solution suggested by Tarang Shah as below
1. Receive step to receive the HTTP request
2. sync send to send the data to SAP and get the response back
3. then the switch where
if status = 'OK' then
1.async send --- to send rseponse to the directory u want
2.async send ---here the message will be the one specified in step 1 which will go into Archive
otherwise
1.async send --- to send the mail using mail adapter
2.async send ---here the message will be the one specified in step 1 which will go
into ERROR folder
Now my question is 'Do we need correlation in this case or will the refMessageID in the SAP response be internally correlated to MessageID of the request message in step 1?'
Please clarify.
Thanks,
Karthik
Edited by: Karthik Kaveriselvan on May 29, 2009 8:36 AM

Similar Messages

  • BPM for error handling and acknowledgements

    Hi,
    Can any one tell me how to handle BPM for error handling and acknowledgements in one scenario.
    Please send me the link if you have other wise give me the solution on the same.
    Thanks,
    Nagesh

    Hi !
    Just check out these links This might help you.
    Usually Application Level Acknowledgement is considered during Sync communication. If you are using RFC, you can make use of Sync communication. So you can handle it without bpm, provided your both sender and receiver are sync interfaces.
    To know about Ack-
    http://help.sap.com/saphelp_nw2004s/helpdata/en/f4/8620c6b58c422c960c53f3ed71b432/content.htm
    you can not dirrectly access the content of the ACK, however the BPM shows different behaviours based on the ACK status. E.g. if the ACK contains a success message the BPM will continue in its normal process, if the ACK contains a permanent error, it will either stop or go through an exception branch (provided such a branch has been defined). Have a look at the documentation: http://help.sap.com/saphelp_nw04/helpdata/en/43/65ce41ae343e2be10000000a1553f6/content.htm It doesnt"t state the above mentioned behaviour in detail but says that you need to define an exception branch.
    The trickiest part is always to find out, when you will get a transient vs. as permanent error ack. If you are using ACKs with Proxies refer also to this link http://help.sap.com/saphelp_nw04/helpdata/en/29/345d3b7c32a527e10000000a114084/content.htm and this http://help.sap.com/saphelp_nw04/helpdata/en/f4/8620c6b58c422c960c53f3ed71b432/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/29/345d3b7c32a527e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/7b/94553b4d53273de10000000a114084/content.htm
    <b>The following link has entire configuration of Receiver XI Adapter (including acknowledgements)</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/f4/0a1640a991c742e10000000a1550b0/content.htm
           <b>   eror handling in BPM.  
    </b>
    1. CCMS monitoring
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/42fb24ff-0a01-0010-d48d-ed27a70205a8
    2. BPM Monitoring
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e7bc3a5a-0501-0010-1095-eb47159e169c
    3. Monitoring XML Messages http://help.sap.com/saphelp_nw04/helpdata/en/41/b715045ffc11d5b3ea0050da403d6a/frameset.htm
    /people/sap.user72/blog/2005/11/29/xi-how-to-re-process-failed-xi-messages-automatically
    monitoring BPm https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e7bc3a5a-0501-0010-1095-eb47159e169c
    Reconciliation of Messages in BPM - /people/krishna.moorthyp/blog/2006/04/08/reconciliation-of-messages-in-bpm
    Also see the below BPM related links
    check list for BPM https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3bf550d4-0201-0010-b2ae-8569d193124e
    /people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers
    http://help.sap.com/saphelp_nw04/helpdata/en/3c/831620a4f1044dba38b370f77835cc/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/62/dcef46dae42142911c8f14ca7a7c39/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/de/766840bf0cbf49e10000000a1550b0/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/cb/15163ff8519a06e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/08/16163ff8519a06e10000000a114084/content.htm
    Many other examples can be found under the following link at help.sap.com
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    And some weblogs
    https://weblogs.sdn.sap.com/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken]
    /people/siva.maranani/blog/2005/05/22/schedule-your-bpm *****
    /people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm
    /people/michal.krawczyk2/blog/2005/06/11/xi-how-to-retrieve-messageid-from-a-bpm
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    /people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi
    /people/michal.krawczyk2/blog/2005/09/04/xi-do-you-realy-enjoy-clicking-and-waiting-while-tracing-bpm-steps *****
    /people/udo.martens/blog/2005/09/30/one-logical-system-name-for-serveral-bpm-acknowledgements *****
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    /people/kannan.kailas/blog/2005/12/07/posting-multiple-idocs-with-acknowledgement
    Also have a look at these seminars,
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/daea5871-0701-0010-12aa-c3a0c6d54e02
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/e8515171-0701-0010-be98-e37bec4706cc
    Thanks !!!
    Regards
    Abhishek Agrahari
    Questions are welcome here!!
    <b>Also mark helpful answers by rewarding points</b>

  • Subcontracting with Error Handling

    Dear All,
    we have some subcontracting materials. If the warehouse do the good reciept and the one of the components is not at the subcontractor stock they get an error.
    Now they came up with the question if it is possible that this materials went to the COGI and once a week they solve this problems.
    kind regards,
    Bernhard

    Hi Bernhard,
    COGI is not enabled for this situation, and the reason I can think of is that the system is calculating online realtime the moving average price of the received material, by summing up the costs of the issued materials. Therefore the information on which and how much of the components were issued must exist at the time of receipt, and cannot be later processed like in COGI.
    I know this doesn't help with your problem, but at least now you can better explain to your users why the stock must be accurate.
    Regards,
    Mario

  • Powershell 4.0: Problem with error handling inside Eventhandlers - Powershell has stopped working

    Hallo!
    Please see the attached sample code. This code simply show a small WPF-Dialog.
    Test 1 (showing the problem)
    Simply run the program. You will see Powershell crashing "Powershell has stopped working".
    The cause of this is the devision by 0 inside the Eventhandler.
    We would normally expect, that the exception should be handled by the trap.
    Test 2 (showing normal operation)
    Simply remove the comment in line 28 ($i=1/0).
    This activates an exception outside the Eventhandler. Now the Trap will be executed normally.
    --> The exception can be handled by the Powershell Devloper.
    Can anybody help? Why does the Error management via Trap not work inside Eventhandlers?
    Thanks for some assistance and ideas!
    Regards
    Heike
    cls
    Set-StrictMode -Version 4.0
    $ErrorActionPreference = "stop"
    Add-Type -Assemblyname PresentationFramework
    # -- Eventhandler - will be fired during form load -----------------------------------------------------
    $FormLoaded = {
    Write-Host "EventHandler is running..."
    # Problem:
    # All exceptions will crash Powershell.
    # We would normally expect that the Global Trap will be executed!
    # This problem occurs inside of Eventhandlers only!
    # TEST 1 --> Create an Exception (Division by 0) --> Powershell crashes: "Powershell_ISE has stopped working"
    $i=1/0
    # -- End of Eventhandler----------------------------------------------------------------------------------
    # -- Start of Demo-Programm ------------------------------------
    Write-Host "Start Demo"
    # -- TEST 2 ---
    # Write-Host "Test 2: Testing Global Trap"
    # Create an Exception (Division by 0) --> Powershell does not crash --> Global Trap will be executed --> OK
    # $i=1/0
    # XAML-Code for WPF-Dialog
    [xml]$xaml = @"
    <Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test - " Height="370" Width="657" ResizeMode="NoResize" WindowStyle="ThreeDBorderWindow" WindowStartupLocation="CenterScreen" ShowInTaskbar="False" >
    <Grid Margin="0,0,0,-4">
    <Label Name="CustomerName" Content="Hello World" HorizontalAlignment="Left" Margin="10,2,0,0" VerticalAlignment="Top" Width="596"/>
    </Grid>
    </Window>
    $Form1=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $xaml)) # Load form
    Write-Host "Register Event"
    $Form1.Add_Loaded($FormLoaded)
    Write-Host "Starting ShowDialog"
    $Form1.ShowDialog() > $null
    Write-Host "End of program"
    # Global Trap - all exceptions should be handled here
    trap{
    Write-host "Global Trap is running..."
    Write-host "End of trap - program will be stopped"

    It works fine if you don't try to execute the code while loading and if you use a better exception handling method.
    Add-Type -Assemblyname PresentationFramework
    [xml]$xaml=@'
    <Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test - " Height="370" Width="657" ResizeMode="NoResize" WindowStyle="ThreeDBorderWindow" WindowStartupLocation="CenterScreen" ShowInTaskbar="False" >
    <Grid Margin="0,0,0,-4">
    <Label Name="CustomerName" Content="Hello World" HorizontalAlignment="Left" Margin="10,2,0,0" VerticalAlignment="Top" Width="596"/>
    </Grid>
    </Window>
    $Form1=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $xaml)) # Load form
    $Form1.Add_Loaded({
    Write-Host "EventHandler is running..."
    Try{
    $i=1/0
    Catch{
    Write-Host "$_"
    $Form1.ShowDialog()
    ¯\_(ツ)_/¯

  • Mastermind / Parse string with error handling ....

    Ok I am not going to hide the fact this looks like a homework question, honestly I already handed it in and now this is bothering me that I couldn't figure it out.......
    We had to make a mastermind client/server game only using text no graphical everything runs fine but how would one do error catching on this. (code posted below)
    Basically the user types in the command "guess r r r r" (guessing that the secret code is red four times ) and it parses it and assigns guess[] with the r and checks it based on the randomly generated color. The problem that I have is that is if someone makes a typo for example guess r rr r. How would one stop it from crashing from an out of bounds array request?
    if (command.matches("guess.*"))
                               int white = 0;
                               int black = 0;
                               String phrase = command;
                               String delims = "[ ]+";
                               String[] guess = { null, null, null, null, null, null, null };
                               guess = phrase.split(delims);
                               for (int i = 0; i < 4; i++)
                                    if (color.equalsIgnoreCase(guess[i+1]))
                             black++;
                        else if (color[i].equalsIgnoreCase(guess[i+1]))
                             white++;
                        else if (color[i].equalsIgnoreCase(guess[i+1]))
                             white++;
                        else if (color[i].equalsIgnoreCase(guess[i+1]))
                             white++;
                   if (black == 4)
                        anwser = "You WIN!!!!!!!! KIRBY DOES A SPECIAL DANCE FOR YOU \n (>'.')> (^'.'^) <('.'<) \n";
                        gamePlaying = false;
                        commandChecker = true;
                   else
                        turn++;
                        commandChecker = true;
                        anwser = "You got " + black + " black and " + white + " white it is your " + turn + " turn \n";
                   if (turn >= 10)
                        anwser = "You Lost =( , try again, the anwser was " + color[0] + color[1] + color[2] + color[3] + "\n";
                        gamePlaying = false;

    cotton.m wrote:
    if(guess.length!=4){
    // do something else besides evaluating the guesses. because something went wrong
    I should add that usually the best way of avoid array index out of bounds exceptions is to avoid ever hardcoding things like
    for(int i=0;i<4;i++)The 4 there is dangerous.
    It's safer to use the length
    for(int i=0;i<guess.length;i++)And the same applies to List(s) and the size method. Again usually that's a better idea but in your specific case anything more or less than 4 is not only a looping problem it would cause logical errors in the rest of your code... it is an exceptional case and should be dealt with specifically in your code.

  • LabVIEW for Mapping of Network Drives with Error Handling

    Is there a way to do the following easily in LabVIEW?
    - List drive letters and network paths of existing mapped drives on host PC
    - Check if a desired mapped drive is connected and if its disconnected reconnect to it
    - Receive related errors that may occur during attempting a connection to a mapped drive (i.e. path cannot be found, etc...)
    I know how to do most of this in VBScript but I'd like to avoid having ANY code for the work I'm doing be "non-G"!
    Thanks for your time!

    Hello Ray,
    You may want to take a look at the following Knowledgbase articles on NI.com
    How Does LabVIEW Find Which Disk Drives Are in My Computer?
    http://digital.ni.com/public.nsf/websearch/9DFF8F1788A7171A86256D10003776C0?OpenDocument
    How Can I Programmatically Map a Network Drive in LabVIEW on a Windows 2000/XP Machine?
    http://digital.ni.com/public.nsf/websearch/313C5E597B48652F86256D2700674EDB?OpenDocument
    Best Regards,
    Chris J

  • Error Handling with OCCI

    Hi,
    is there any function available in OCCI to register user defined function with error handler, "just like RougeWave setErrorHandler"
    Thanks

    OCCI uses C++ exceptions (OCCI class SQLException) mechanism for errors. Can you please explain the error handler approach and its advantages?
    Thanks,
    Shankar

  • Error Handling in info-package strangely doesn't work

    Dear All,
    I'm trying to load master-data from R3 containing time-dependent attributes which, I know, are sometimes overlapping. As I still want to load the correct part of data, i've set Processing - via PSA and Error Handling - "Updating valid records, reporting possible" with number of errors more than the dataset itself. However, the load still fails and what is more interesting, all records in PSA are marked as "green" whereas the errors are reported in a log.
    And what makes me wonder even more is that the same info-package from the same DS is loaded in a test system OK - with errors handled and "trashed" in PSA and remaining updated in Info-Object MD.
    Does anybody can help to resolve this strange problem as i can't honestly see the difference in global settings of test and productive systems that could allow this...
    Thank you in advance

    Hi,
    Here you are extracting data for master data with one of the attribute as time dependent . So there are two more fileds are neccessary in extraction ,i.e, 'from date' and 'to date'.
    And it seems there is overlapping of this range for two records. Make sure it in PSA with record numbers. And make sure there will be no overlapping.
    With rgds,
    Anil Kumar Sharma .P

  • General Error handling

    I've managed to get myself confused with error handling in Forms 6i.
    If I have a trigger that does a 'commit-form' like this
    commit_form;
    IF NOT form_success THEN
    RAISE form_trigger_failure;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN;
    END;
    and the commit_form fails due to a mandatory field being missing (or similar) then what happens first?
    Does my ON-ERROR trigger fire?
    Does the form_success check fail and raise form_trigger failure?
    Does my exception block get used?
    Or does more than 1 happen??
    I could - of course - find the answer to this through debug but I'm looking for a more generic answer if possible.
    Thanks - Sean.

    What happens first?  The forms validation process runs and informs user that the field is required.
    Does On-Error fire?  Yes, if you have one in your form.
    Does the form_success check fail and raise form_trigger failure?  Yes -- but ONLY if your On-error raises Form_trigger_failure.  If it does not, you have lots of problems.
    Does my exception block get used?  Yes.  Raising Form_trigger_failure causes control to pass to the exception handler.  But I never use an exception handler except when I code SQL commands.
    Now...  After commit_form, you should also check Form_Status.  Read the help topic on the Form_Success built-in.
    My standard C00_Commit program unit does this:
      COMMIT_FORM;
      IF :SYSTEM.FORM_STATUS <> 'QUERY'
      OR NOT FORM_SUCCESS THEN
        RAISE FORM_TRIGGER_FAILURE;
      END IF;
    END;

  • Error Handling: VI response to any error

    Hey guys,
    I need to make sure a piece of code executes whenever there is any error in the VI. I'm pretty new to Labview, and cannot wrap my head around "extracting" the errors, so I can pass them into an error handler... All I want, is for my code to find out that there is an error, take some action, and then stop execution.
    Any help is greatly appreciated, thanks!
    Solved!
    Go to Solution.

    You simply wire the error wire to the selector of a case structure. Click on file/new/from template/frameworks/SubVI with Error Handling
    =====================
    LabVIEW 2012

  • How to handle BEA-382108 error in route error handler?

    Hi,
    I have a proxy service with error handler at route level. when any wrong inputs are given to this proxy the Biz will generate fault with error as BEA-382108
    having error message as XPATH can only be done for XML or MFL content. This is error is handled by system error handler but not by route error handler.
    Can any tell me how to handle this error in route error handler...?

    In route Error Handler.
    Add If condition and add fn:contains($fault,"BEA-382108") in the if condition, and add your code/logic that you want to implement in case of this error in IF condiiton.
    Let me know if this helps.
    Regards,
    Karan

  • Subvi dll error handling

    Hi everyone
    I have a basic/principal question regarding subvi's and associated error handling.
    Say I have an DLL which contains a function that takes input a and b, outputs c and d and that I want to wrap this function call (plus additional logic) into a SubVI. I can imagine this done in two ways with error handling:
    Which one is the most "correct" (or pretty or smart) way to do it?
    Best regards
    Wuhtzu

    First off, I agree with nathand that you do not need the case structure (the Call Library Function Node handles it).
    Second, if you are wrapping DLL functions, take a look at the import DLL tool.  (Tools->Import->Shared Library in the menus).  It will create wrappers for your DLL functions -- then you just have to test them and make some tweaks
    For example, if you have a parameter which is a pointer, the tool will make you an input and an output (since it can't tell which it is meant to be, and might be both).  Often you really just want it as an input or just as an output, so you have to change that (and make sure, if an output, that you have someplace to put it; in some cases you will need to make a constant of that type and pass it into the Call Library Function node, and then pass it out.
    I have had a lot of success using this tool, and it saves a lot of repetetive grunt work.
    B.

  • Using Error Message in BPM Error Handling Branch

    Hello,
    I closed the old BPM thread not to mix up different questions.
    As I found out now a synchronous Send Step with Eror handling branch is working fine to directly handle errors.
    As in the send step there could be several errors possible, e.g. XML validation fails, error in communication channel etc.
    Is it possible to have access to the error message that can be seen in monitoring and use this as input parameter for message mapping for example?
    Would be helpful because otherwise I just would be able to send back a generic error message to the sender.

    Hii Florian,
    Adapter module can only provide information about the failures in Adapters.
    But other failures like XML Validations, can be informed depending on the mode of Validation.
    As per help.sap.com
    You can perform the structure check at the following points in PI message processing:
    ●      Validation in the sender adapter
    If the sender adapter has created the PI message, you can then perform the validation of the PI payload. If the structure of the payload differs from the definition of the data type provided for comparison, message processing is stopped. The adapter sends a synchronous response to the sender of the message, informing it about the structure error. The industry-specific adapters inform the sender asynchronously, as required by the RNIF protocol and the CIDX protocol.
    ●      Validation in the Integration Engine
    In inbound and outbound processing, *validation of the PI message payload takes place as a pipeline step *of the Integration Engine. If the structure of the message payload does not match the saved definition of the data type, an error description is generated. The error description contains status information and a list of all structure errors. Message processing is stopped. The message is set to error status and an error report is saved.
    If validation takes place in the Integration Engine, the sender of the message is not automatically informed of the structure error. The message is set to error status and an administrator can process the message further using the Runtime Workbench.
    So if you use XML Validation in Sender Adapter you can get back the Exception ( i think you need to do some java mapping here). Else if you are using Integration Engine, then alerts are there for them.
    Anyway this discussion has opened a lot of To Be Explored area for me. I will keep looking for them.
    Regards
    Suraj

  • Error Handling in JDBC Adaptor - Without BPM

    Hi friends,
    My problem is like this. Scenario is File -> Xi -> JDBC.
    here i didn't used BPM at all.
    My interface is working fine.
    right now i am not doing any error handling for 'Primary key violation, refrential intigrity etc.. '.
    if this type errors encountered i going to adapter monitoring and looking out the issue.
    Now the client requirment is
    whenever this type of errors occured Client should be notified Via email along with error description.
    Is there anyway to do this ?

    Hi Suresh,
    You can setup the Alerting framework of XI to trigger alerts. Alert rules can be set to raise alerts in case of JDBC Adapter Errors.
    Check these links....
    http://help.sap.com/saphelp_nw04/helpdata/en/3f/81023cfa699508e10000000a11402f/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/80/942f3ffed33d67e10000000a114084/frameset.htm
    Thanks & Regards,
    Renjith
    An addition to what i just said...You have to be on SP14 for this...
    Message was edited by: Renjith Andrews

  • Error Handling Inside BPM Process

    Hi All,
    I have a scenario in which, when a BPM Process errors out due to any of the System Exception I'm catching it using a Event SubProcess activity and handling it.
    Problem:
    I want the control to get back to the next activity i.e Normal Process should resume once the control is out of the Event SubProcess.
    I found that using a Normal Subprocess with boundary event helps to resume the flow back to normal control. But Its difficult to have individual Subprocesses for N number of activities.
    Is there any other method to overcome this?
    Please provide a solution.
    Two Cents,
    Karthick.

    I'll bow out of this thread after this post, but a couple thoughts.
    You might have seen these, but here are some links that should help you. If you have not already looked at Fault Policies, pay particular attention to this in the posts below:
    Fault Handling in Oracle SOA Suite
    http://beatechnologies.wordpress.com/2011/07/18/fault-handling-in-oracle-soa-suite-advanced-concepts/
    Fault Handling and Prevention - Part 1
    http://www.oracle.com/technetwork/articles/soa/luttikhuizen-fault-handling-1-1877036.html
    Fault Policy
    http://error0.wordpress.com/2011/08/02/howto-use-the-fault-management-framework-with-oracle-bpm/
    I don't mean for this to sound harsh and please keep in mind that I don't know the problem you're trying to solve or what you're process looks like.
    >
    Yes we do, but we have many activities inside a single process since the business is big.
    >
    Sounds like you're pretty far down the road now, but just a word of caution. I've found myself on projects with large processes. It's not just exception handling that you'll find more difficult, but many things became more cumbersome to maintain in a large process.
    >
    A thought of using Boundary Events with subprocess looks good but its not possible to use a single sub process for all boundary events in order to resume to normal activity.
    >
    I did not follow this. If you invoke a subprocess using a Call activity, you'd be able to add a boundary event on the Call activities for the activities in the called sub process. You'd also have a process that is easier to read and maintain.
    Dan

Maybe you are looking for