Multiple link throw events with same name generate error

Hi Camunda Community,

I’m currently working with Camunda Modeler version 5.33.1 and ran into an issue using Link Events.

In my process model, I need to use multiple Link Throw Events (from different points in the process) that all lead to a single Link Catch Event. All throw events share the same name (e.g. "Požadavek odvolán"), as they are meant to be references to the same process point.

However, Camunda Modeler returns the following error:

“Duplicate link throw event with name <Požadavek odvolán> in scope”

After some testing, I found out:

  • The pairing of Link Throw and Link Catch events is now strictly validated based on the General → Name field (not ID).
  • Only one throw event per name is allowed per scope.

:question: My questions:

  1. Was this behavior intentionally introduced in newer versions (e.g. since 5.33.0+)?
  2. Is this a validation bug, or is there a technical reason to allow only one throw per catch by name?
  3. What is the recommended modeling approach for this scenario? (I want to avoid duplicating identical catch events.)

Any clarification or official guidance would be highly appreciated.

Thanks in advance!

Hi @JiriDF ,

The error “Duplicate link throw event with name <link name> in scope” in Camunda BPMN means that you have two or more Link Throw Events with the same name in the same scope, and that’s not allowed by the BPMN spec (and enforced by the Camunda engine).

Quick Primer: How Link Events Work

  • Link Throw Event: like a “goto” — it throws control flow.
  • Link Catch Event: like a “label” — it catches control from the throw.
  • Name: the “channel” they connect through.
  • Rule: In one scope (e.g., a process or a subprocess), you can have only one throw with a given name.

How to Fix It ?

Option 1: Rename the duplicate throw events

Ensure that every Link Throw Event within the same scope has a unique name.

Example:

Link Throw (name = "toTaskA") --> Link Catch (name = "toTaskA")
Link Throw (name = "toTaskB") --> Link Catch (name = "toTaskB")

Problem:

Link Throw (name = "toTaskX")
Link Throw (name = "toTaskX")  ← Duplicate name in same scope

Option 2: Move throws into different scopes

If you really need multiple throws with the same name, make sure each is in a different subprocess or call activity. The scoping rule applies per scope, so throws in different subprocesses can share the same name.

Hello,
In my process model, I have three separate Cancel Process paths that all logically end with the same event. To guide the flow from each of these paths, I use Link Throw Events with the same name, aiming to connect them all to a single Link Catch Event.

However, Camunda Modeler throws a validation error stating that only one Link Throw Event per name is allowed within the same scope.

This forces me to create three separate Link Catch Events, each with a different name—even though they all represent the same continuation point in the process.

My questions:

  • From a modeling perspective, isn’t it counterproductive to duplicate the catch event just because we have multiple entry points?
  • Are there better alternatives when the goal is to unify multiple Cancel paths into one shared event?

This approach feels a bit unintuitive and cluttered, especially in more complex diagrams.
Any suggestions for a cleaner solution would be greatly appreciated.

Thanks!

The issue was fixed in version 5.34.0