Level of processes and understanding of subprocesses and calls

Hi all,

I got a question regarding the best way to structure business processes. I would be really happy to hear from you how to handle my case in a best-practice way.

So let me explain: I have gone ahead and defined 4 levels.

  1. Domain: Business area, high level business function like Sales, After-Sales, Marketing. No processes modeled here
  2. Process: High-Level business process, for example Call-Center process, Maintenance Management and so on
  3. Use-case: A Use-case inside of a process. On this level I would really go ahead and model processes
  4. Activity: Whenever I got an activity in a use-case that needs more detail, I would change this activity to a sub-process and model it on this level.

So for example in the Domain “After-Sales”, Process “Maintenance Management” I got the use-case that a customer calls the call center due to a breakdown of his motor bike. The case will be handled by a call center agent and a service vehicle will be sent out. The vehicle will then be able to repair the vehicle on site, or might need to request a towing.

I have defined this process on level 3 including the possibility that the bike can be fixed on site. However if a towing is needed I would move this to a following process, as the towing is reusable and would make the current use-case to complex.

Is this correct? Do I need an endEvent after the Call Activity? I think not, because the towing will lead to another process in the chain, the vehicle repair.

Also is my assumption regarding the subprocess okay? Inside of my use-case I would only use a sub-process to detail an activity and model this on level 4. Ideally, as I don’t want to complicate the processes I would try to stay on level 3…

This leads to the following regarding level 2: Here I would only model the high-level process chain of the use-cases…

Thanks in advance!

Seems perfectly reasonable to use a call activity for a re-usable process, although i would still add an end event afterwards, because if the process being called finishes correctly the token in the parent process needs to move forward.

another option could be to use a message end event to start the towing process - in this case there wouldn’t be a parent-child relationship instead the call center process would end while the towing would begin. It depends on what you’d like to achieve.