Skip to Content

Creating Local Workflows

Creating local workflows is possible from release 6.40 of the Web Application Server. I want to show here the steps to do so.

When you want to create a local workflow in your workflow you first create a local event. This is done in the header data of the workflow on the tab Version dependent, here you will find the tab Local events.


Creating it is just typing in a name. There is also the option to create an event container.

This event will be used to start the local workflow.
The event triggering can be inserted through the steptype ‘event creator’ which can be inserted at one or more desired places in the workflow. It is possible to start the local workflow from different places in the workflow.

In the step you select the option of starting a local event and the event can be selected.

The binding from the workflow to the event container can be maintained.After this the step for creating the local workflow can be inserted.

You can name the local workflow, and define the local event will start the local workflow. The binding can be maintained between the event and the local workflow. The container of the local workflow will contain all the elements from the main workflow. Extra elements can be added if necessary.

In the workflow builder the result will be this:

Tasks can be defined in the local workflow.



The normal workflow will continue with the next step in the process. So next to the task ‘User decision in local workflow’ the task ‘User decision 2’ will be issued. When the main workflow ends any open tasks in the local workflow will be set to logically deleted. So if there are any mandatory tasks in the local workflow you should make sure they are processed before ending the main workflow.

You must be Logged on to comment or reply to a post.
  • Thanks Martin for the clear instructions provided by this blog.

    Have you ever used local workflows in your projects? I still wonder that why I should use local workflows, or in what kind of situations they might be useful?

    Why not use just sub-workflow? I see that there are the following advantages when using subworkflow (compared to local workflows):
    1) You can posibly use the same subworkflow in another workflow. I think you cannot do this with local workflows, or?
    2) You can separate your workflow into smaller parts (basically just to make it easier to “read”). This is something that you could possible do with local workflows, but I am not sure if this will make your workflow more “readable”.
    3) Dynamic parallel processing. I suppose that you cannot achieve this with local workflows, or?

    So, really, why to use local workflows? Has SAP explained why they have provided this new technique?

    Kind regards,

    • Hi Karri,

      Good to hear the blog is clear.

      Regarding your questions, I have used a local workflow once in a project.
      I had the requirement to start a subprocess paralel to another one, but the workflow should not wait for it. Also it was not required to end this subprocess. This meant I couldn’t use a fork, because if I set it to only one required branche and my non obligatory subproces was ended first the obligatory one would be ended. I also couldn’t make it 2 out of 2 because the subprocess was not mandatory.
      I could have made the fork along the complete workflow and if the non obligatory subprocess was ended just hold the branch by waiting for an event which never occurs. But I didn’t think that looked as good as using a local workflow.

      As far as your advantages of subworkflows, I agree. The advantages you mention are not available for a local workflow as far as I know.

      So the only reason I can see is to use a local workflow when you want to start a subprocess for which you don’t need to wait and which is not mandatory. I have never seen an explanation by SAP why they created this.

      Best regards,

  • This is the BPM i have encountered with.I would like to know the flow .
    The parameters for the steps are :

    1. Start: One Queue
    1. Loop: Condition: CO_endloop value: not = true
    2. Parallel: End condition; necessary branches : value: 1
    3. Fork Start.
    4. Receive: message: Collect message; use correlation: Correlation
    5. Append : target: Collectmessagelist; operation: Append
    6. loop parameter1: target:Co_endloop;expression:False
    7. Wait:duration: 2mins;
    8. loop parameter2: target:co_endloop;expression:True
    9. Applymapping: source and target messages defined.
    10. Send New message: mode:asynchcronous.
    11. Stop: One queue.

    The graphical definition looks like this:

    ……………………………-> wait(15 minutes) –> loop2–>
    Start–> loop –> Parallel(Fork)…………………Parallel Fork END –> loop END –> append –>send–>Stop
    ……………………………–> receive –>append –> loop1 —>

    Kindly explain in brief how this works.

    If we have a similar kind of bpm for another interface,with another branch to add in the parallel node specifying the number or cardinality function(specifying number of idocs to be collected along with the wait condition). how can we do it ?

    Please explain

    If there are reference materials in any blogs also for similar info kindly mention.