Skip to Content

Process Observer Discussion (New)

This thread is dedicated to questions and discussions around the Process Observer component that is part of Business Suite and S/4HANA. Use the comment function to get your questions.

For details on what Process observer is see here.

Old discussions from the previous SCN version can be found here.

You must be Logged on to comment or reply to a post.
  • Hi Bernd, Christoph,

    We are planning an ECC upgrade from EHP7 SP11 to EHP8 SP05 next month.   Are you aware if there are POB changes or enhancements between those versions?   I did review the release notes, but I guess that POB does not always get mentioned.

    Thanks,  Andy

    • Hi Andrew,

      no major differences beween EhP7 SP11 and EhP8 SP05.

      You find an additional customizing activity in 'General Settings - Business Object Repository Instrumentation -  Restrict Data Relationship Browser Usage' which allows to select, for which events DRB prodecessor relationship is to be used, and for which not.

      Might be useful in your scenario. I the customizing activity is not used, it just behaves like before.



  • Hi,

    In the earlier blog there was some mention of the use of POCR_UPDATE_BOR_EVENT to activate events.  I have a couple of "stubborn" events that are in use but did not activate when I transport a Model to QAS and PRD environments  (see below).

    I have run POCR_UPDATE_BOR_EVENT and it shows no errors, but the event does not activate.  Is there any trick to force it to activate?  The view is not modifiable directly in QAS and PRD.

    I did notice that the event is AFTER the End event in the Model as configured in POB - would that be an issue?

    Thanks for any suggestions


    • Hi Andrew,

      I do not see why the event would not activate with the report. It really should. Really, really. Any kind of order (“AFTER the End event”) does not play any role.

      So … are you sure that BUS2038 NOCO is mapped to a task? And that the task is used in an active version of a process definition? That's really the only issue I can see.

      Best regards,


      • Hi Christoph,

        I just deployed another change to QAS today, and the NOCO event did not activate.  I ran POCR_UPDATE_BOR_EVENT, but no change.

        The event is mapped to a task, and it works in DEV before deploying.  Can I do anything else to activate it?

        The only other issue I can see is that there are some other events in POC_MODEL_CHECK with "No task assigned" I am aware of these and they are for future use.  Would this somehow stop the program  POCR_UPDATE_BOR_EVENT?

        Thanks, Andy


  • Hi Christoph,

    Thanks for  the response.  Yes the mapping is correct.
    Since writing I have modified the Model definition (including moving the order of events) and transported to QAS, and this time that event did activate, without using POCR_UPDATE_BOR_EVENT.  I am not sure what the cause is, but maybe this is now resolved.



  • Hi Bernd, Christoph,


    I have run into a difficulty with a POB process that we have had running for a few months and is being visualised in OPI.   As part of the evolution of the process there are a few events/tasks that are no longer needed and are not relevant for the current process.  I can remove these from the POB process definition with no problem.  However I'd like to clean up the old data also, as these unwanted events spoil the metrics in OPI.

    I tried to use POC_MASS_DELETE, but that deletes the whole process instance (or object).  Can you advise how I could delete just selected events?  I guess I may need an ABAP to re-write POC_MASS_DELETE ?

    Thanks,  Andy

    • Hi Andy,

      sorry, I missed your question (I guess I'm still getting used to this new thing).

      There's nothing I can help you with here, though. We don't have any function to modify the log.

      Inofficially: Yeah, you may want to copy POC_MASS_DELETE or at least use it as a reference. The data structures should be rather straight forward ... but officially I cannot recommend you doing that. There's the obvious risk involved.


  • Hi Bernd and Christoph,

    We'd like to use POC to monitor sales orders with "Fraud" flag (a field in VBAK table). In a earlier discussion, there was a suggestion to achieve a similar requirement via BRF+ on "Task Assignment" and setting the Bind Deter e.g. ACTIVITY_BIND_DETERMINED accordingly.

    But can you also provide an example for using BRF+ and "Classification KPI" to record a specific order type ?

    Thanks and Regards,


  • Hi Bernd and Christoph,

    I have a technical question for which the SAP Documentation does not seem to give an answer. I am currently activating the Fiori application Order-to-Cash Performance - Overview and for S/4HANA 1709 system. We have configured the Process Model according to the Best Practice content and with that system is creating respective BOR events, thus working as it should.

    In the Documentation you are mentioning BOR events and Non-BOR events(created via API).

    The BOR Event itself requires the mapping of "MAP BOR Events to Tasks" to able to work, right? The system is still logging the BOR events although this assignment is not in place, what is the reason for this?

    Example - O2C Process

    1. Create Order with Delivery Block
    2. Change Order and remove Delivery Block(in our system there is no assignment between the Remove Delivery Block task to Respective BO Type and Object Type in the "MAP BOR Events to Tasks Transaction. Also the POC_CHECK_MODEL indicates this issue.

    Outcome based on the example, I see following happen after creation and change in the queue tables

    • IN the table SWFREVTPOQ the entry for BUS2032 is created with events CREATED and CHANGED
    • In the table POC_D_EVTQ is see the task "Delivery Block Removed" plus all other tasks from the Facade layer(which also do not have BOR event asingment (this table contains only the NON BOR event entries based on the SAP Documentation?)

    After executing the  log program the task for "Delivery Block Removed" is display in the POC_MONITOR?


    • Although I have not asigned the task "Delivery Block Removed", how come this BOR Event is created and displayed in the BOR MONITOR?
    • Depending on the previous answer, is this somehow considered as NON BOR event from the tecnical perspective as the assignment does not exist?(entry in the table POC_D_EVTQ)
    • What is the real meaning of the assignment from technical perspective?

    The documentation which I have been reading are your block posts and the Process Obse In-Depth  Workshop PDF.


    Ilari Vaara




    • HI Ilari,

      good questions, you actually look at the details!

      Basically for the O2C monitoring in S/4HANA we are currently only relying on non-BOR events (using API POC_RAISE_EVENT). You find the BAdIs to create these events in package EA-APPL_POC_APPL_O2C. This is what you find later as queue in table POC_D_EVTQ.

      BOR events for create and update are still created by default (and you find them queued SWFREVTPOQ) for processing where we filter them out using BAdI implementation POC_SFS_BINDING, not to get duplicates in the process log for create and update.

      Timestamps are not perfectly synched between BOR and non-BOR, so it is recommended not to mix up.

      Hope this helped you understand.

      Best regards,



      • Hi Bernd,

        Thanks for the reply, it really helped to really understand how the system Process Observer is designed to work currently as I was struggling a little bit with the written information. So going towards the future, I would asume the technical solution will use only Direct Event API within applications and not BOR events?

        One additional question: In case we want to create events from external systems(non SAP or other SAP system) or from BADI implementations(within the system), do you recommend to use the Direct Event API or the Generic BOR event method?


        Ilari Vaara

        • Hi Ilari,

          in the future there are plans to integrate events into virtual data modeling, however too early for really reliable information.

          As for which remote interface to use: there is not much difference between the interfaces, parameters are almost the same. The Direct Event API is directly mass enabled and is available as RFC module. The generic BOR event isn't.

          Generic BOR events integrates better, when your other events are also BOR events, and you let the BOR runtime create the timestamp of the events (normal BOR events are processed asynchronously and their timestamp is only added later at processing time --> this may sometimes cause confusion when BOR events and direct events are mixed).



  • Hello again,

    I'm looking for an option to reprocess orphans.

    In my case I have events that arrive in unpredictable order, and I need event 2 to "wait for event 1".

    On arrival, event 2 becomes an orphan. When event 1 arrives, I need to scan possible orphans to associate them with the new process.


    • Hi Derek,

      we do not have the functionality to re-process an event directly on board (I could think about providing a note for that...), but actually it is not too difficult.

      You can read the event data from table POC_D_BA_LOG. Then you get the stored predecessor for the same event from table POC_D_PRE_BA.(In case of different logical system you find this information for the event in POC_D_BA_SRCSYS.)

      To know which event is orphan: they do not have an entry in POC_D_PRC_BIND.

      So the following should work: Read the orphan event data from the table(s) and add it as input again to function module POC_RAISE_EVENT. This should add the event to the end of an existing process chain.

      While this may work for single events, if you have a systematic problem, you should definitely look at the event generation, why timestamp of event 2 is before event 1 etc.

      Hope this helps you!




      • In our case we were constrained by legacy system capability, so I don't have an option to intervene in the source systems. E.g. the originator system is batch, once per day, and the receiver system has real-time web service capability.

        So, the "sendFromA" event arrives after midnight, when we already received "receivedInB" event. Even though the sendFromA event has the correct timestamp, the receivedInB event is orphaned-on-arrival.

        I would support an enhancement/option to scoop up relevant orphans when events arrive.

  • Is there any way to get data which was created before Process Observer Activation?

    For e.g. Process Observer was activated on October 5, 2018 , I get to see Sales order created on and after October 5. How do I get sales order created before October 5.

    I am using Fiori App Order-To-Cash Performance Monitoring. The KPI is number of sales order created and it shows number of sales order created on an after October 5 i.e. the data I can see on POC_MONITOR. How do I get number of sales order created in April, May, June 2018 etc?

    • Hi Khyati,

      in short: you can read existing business data from tables with a report and add the business information as events with a past timestamp into the direct event interface (FM POC_RAISE_EVENT).

      More information and a sample report can be found in note 2443366.

      Regards, Bernd