Skip to Content

SAP Integration Framework: guarantee message to be processed in original order when error

Hi all,

I'm currently working with SAP B1 9.3 and SAP Integration Framework 1.22.12 on SQL server.

My Goal is:

  • migrate a document (Delivery Note for example) from a B1 system to another B1 system.
  • the document will be the same in both system
  • migrate documents in the same order as the original B1 (example: i create Delivery Note 1, 2 and 3 on sender system. I want to be sure that Delivery Note will be posted with same number in receiver system)

What is the best way to achieve this goal and be sure that document are posted with the same order?

I think that a correct way to handle this scenario is:

  • stop processing of following document if an error occur
  • alert user that an error has been raised
  • user have to fix the problem in receiver system
  • user (or system automatically if possibile) have to resend the message
  • error message is re-processed and posted in receiver system
  • all message in queue are processed in original order

To achivie this goal I setted Default Error Handling:

  • Asynchronous Transaction - Processing: set this to "Retrial after 1 minute and stop processing of following messages"
  • Asynchronous Transaction - Outbound: Outbound Error Action: "Keep in Inbound Queue" and "Don't Send To Error Inbox"
  • Overall action: QBlocker Alert

Questions: after user receive email message of blocked queue, he goes to receiver system and fix the problem and:

  • what is the correct way for him to reprocess the message? Is there some setup to let Integration Framework do it automatically? (Is it the automatic resend setup? But in this case it cannot be setted up with "Keep in inbound Queue")
Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Feb 26 at 10:22 PM

    Anybody has any idea?

    Thanks

    Add comment
    10|10000 characters needed characters exceeded

  • Feb 27 at 06:22 AM

    Hi,

    With my limited knowledge, I can suggest a work-around. Check the below:

    • Instead of processing the B1 events and processing via Queue, create a Timer based Scenario step which should handle the TOP 1 record to be send to the Receiver system(here you can define your ORDER BY, so that you will always try to process the same sequence). In case of error, update the Sender system with error message and error status. Of course, in case of success, update the Sender system with proper success status.
    • On querying the Sender system, SELECT the sync status too, if the status reads Failed then you can exit the step with error message or email to the respective user.

    Let me know, if this approach works for you :)

    Regards,

    Bala

    Add comment
    10|10000 characters needed characters exceeded

  • Mar 01 at 05:23 AM

    Hi Balakumar,

    thank you for your suggestion it sounds reasonable to me and it is similar to the workaround we imagined (we thought a similar flow, but on the reciver side) if no "standard" solution are found.

    In my opinion it seems strange that you can define a specific behavior when error happens (so this can generate queue until problem is solved) and ther's no mechanism to be sure that messages will be processed in the same order.

    I hope someone of SAP B1i team can give us an opinion on standard behavior.

    Anyway thanks again for your precious support!!!

    Stefano

    Add comment
    10|10000 characters needed characters exceeded