Enterprise Architect version 15.0



My Profile

Social Media Channels

facebook  twitter  youtube   linkedin

Monday, 12 January 2015 11:18

Working with BPMN 2.0 in Enterprise Architect version 11 / 12

Written by
Rate this item
(5 votes)


In versions 11 and 12 of Enterprise Architect several changes have been made to BPMN 2.0 which affects the way that modellers use this notation and in particular how the repository must be structured.

An excellent video which summarises these changes is available at http://www.sparxsystems.com/resources/webinar/partners/bpmn/bpmn-introduction-cephas.html

This article summarises these changes and presents a Tutorial so that you can have a hands-on experience of these changes and hence model effectively using BPMN 2.0 and Enterprise Architect versions 11 and 12.

Since Collaboration and Process diagrams are the diagrams most commonly used in Business Process Modelling, this article concentrates on these diagrams.

Summary of Changes

The changes made to BPMN 2.0 in Enterprise Architect version 11 and 12 are as follows:

  1. Closer compliance with the BPMN 2.0 specification (this affects re-usability of elements and repository structure)

  2. Modelling interface improvements affecting:

    1. Diagrams (option to automatically re-size pools / lanes)

    2. Easier and more intuitive use of BPMN 2.0 tagged values in element dialogs

    3. Start and End events no longer produce a menu (Stand alone | Edge Mounted)

At first glance these may not seem significant, but they are, particularly change 1)

In order to gain maximum benefit from these changes it is strongly recommended that the modeller uses Strict Connector Syntax so that BPMN 2.0 conformant models are created.

Strict Connector Syntax is enabled by:

  1. Selecting Tools | Options… from the main menu

  2. Selecting Links and then checking the checkbox labelled Strict Connector Syntax as shown below


Compliance with BPMN 2.0 Specification

The main effect of this change is that Activities remain as children of the enclosing Pool / Lane and CANNOTbe placed in a separate package for re-usability.

Pools and Lanes, may be placed in separate packages, but are not re-used as Links, rather they are cloned for use on multiple diagrams.

Global Activities (that is re-usable Activities) must be a Sub-process with a linked diagram which models the process. This structure should be placed in its own package. These Global Activities are then re-used by creating a Call Activity which refers to the Global Activity.


Worked Example ~ Tutorial

To illustrate how these changes affect the modeller I present a simple worked example which involves a Customer logging on to a company site and checking their account details.

The final Business Process flows are as shown below:

Request Account Details Process

Customer Login Process

 Step 1 – Create the Repository Structure

After creating a new repository (or Project as Enterprise Architect calls it), the Model Wizard for BPMN 2.0 is used to create the initial structure. For this example I have used just the following sections from the BPMN 2.0 Model Wizard


  • Collaboration

  • Business Process



Resulting in the structure below:


Note how Enterprise Architect has created the structure and introduced two elements of type <<CollaborationModel>> Collaboration Model

Just as an aside there follows a brief discussion regarding this CollaborationModel and a similar element the BusinessProcess

These elements appear to be an invention of Enterprise Architect. I say appear to be, since I cannot find an equivalent in the BPMN 2.0 specification, but I stand to be corrected on this matter.

The usefulness of these elements seems to be a topic of some debate amongst Enterprise Architect users. I offer my own opinion here.

Personally I see no major advantage in using them, since:

  • perfectly stable and accurate BPMN 2.0 models can be constructed without them

  • They add an extra hierarchy layer to the Repository Structure which may make (RTF) documentation generation more complex.

  • However, each of these elements does contain BPMN 2.0 Tagged Values which allow the modeler to set references from a CollaborationModel to a Choreography and similarly set a reference from a BusinessProcess to a Conversation. This may be useful if you use Choreography Diagrams and/or Conversation Diagrams.

  • It is possible (although I have not confirmed this), the use of these elements may be mandatory for BPEL code generation)

  • Finally, in my opinion, the CollaborationModel created in the view BPMN 2.0 Process View should in fact be a BusinessProcess element



I will let you decide whether or not to use these elements, for the purpose of this example, I will not be using them.

I prefer to begin modelling with empty views and packages and so I begin by deleting the sample elements created by the Model Wizard.

To use BPMN 2.0 effectively I propose the use of a Model Library which will contain packages one for each BPMN 2.0 element that is deemed to be reusable. For this example I will need the following


  • Partner Entities (who is involved – that is the name of the Pool)

  • Pools (each Pool refers to a Partner Entity)

  • Messages (these detail the data pertaining to a Message Flow)

  • Data Stores

  • Reusable Processes

Other packages worthy of consideration are


  • Participants (used to allow Pools to refer to Participant elements on a Conversation Diagram)

  • Resource Roles (departments or sections within a Participant)

  • Lanes (each Lane refers to Resource Role)

  • Data Objects (data that is produced or consumed during a Process)

After these changes have been made my Repository Structure now looks as below:

Note that I have set Namespace Root for all library packages, this will enable elements to be located more quickly when references are required to be set.

Step 2 – Populating the Library

Elements can be added to these library packages by either of the following methods:


  1. Adding the elements directly into their respective package using Add New Element.

  2. Create a diagram in the package and add elements using the diagram toolbox.

After populating the library my repository is as shown below:

For each Pool element in the Library:


  • Set the Pool’s BPMN 2.0 Tagged Value named partnerEntity to the corresponding Partner Entity element in the library

If the name of the Pool needs to be changed, change the name of the referenced Partner Entity element. This has the effect of reflecting this name change to all reuses of the Pool

For each Lane element (no Lanes are used in this example)


  • Set the Lane’s BPMN 2.0 Tagged Value named partitionElementRef to the corresponding Resource Role element in the library

If the name of the Lane needs to be changed, change the name of the referenced Resource Role element. This has the effect of reflecting this name change to all reuses of the Lane

Step 3 – Modelling the Reusable Process

The first step is make the Activity named Customer Login which has just been added to the Element Library, a Sub-Process. This is achieved by:


  1. Opening the properties dialog for the Activity element

  2. Selecting Sub process from the Type dropdown list on the BPMN 2.0 Tagged Values. (Note how access to BPMN 2.0 Tagged Values has changed in EA version 11 /12)

The next step is to add a BPMN 2.0 Business Process Diagram (since there are no Pools) as a direct child to this Activity. (Simply select the Activity and Add a New Diagram)

Then model the following process flow as usual, noting the changes to the BPMN 2.0 Tagged Values for each element in the process flow.

Finally, make the Activity named Customer Login a Composite Element by:


  1. Adding the Activity to the diagram just created as a Link.

  2. Right-click and select New Child Diagram | Select Composite Diagram.

  3. Navigate to and select the diagram just created.

  4. Delete the Activity named Customer Login from this diagram.

Step 4 – Modelling the Main Process Flow

The last step in this example is to create the main process flow.


  1. Add a new Package named Request Account Details to the View named BPMN 2.0 Collaboration View.

  2. Add a BPMN 2.0 Collaboration Diagram (since there are Pools) to this package.

  3. Reuse the Pools, by

    1. Copying the Pool element in the Library package to the clipboard and pasting into the package containing the diagram.

    2. Deleting the name of the newly pasted Pool element (note that a name does appear on the diagram … this is taken from the BPMN 2.0 Tagged Value named partnerElement

  4. (Lanes are also reused by using the Copy and Paste method)

  5. Right-click the diagram and select Set diagram flow direction | Horizontal) (or Vertical if you prefer).

  6. Add the Pools (from the diagram package) as Links on this diagram.

  7. Model the process flow as shown below:


When modelling this process flow take note of the following:


  1. As you add elements into their respective Pool, the Pool will re-size automatically to accommodate the new element.

  2. Use the messageRef BPMN 2.0 Tagged Value to set the reference for the Message Flow to the appropriate Message Element in the library (it should be obvious in this example which Message elements are referred to)

  3. When creating the Called Activity named Customer Login perform the following:

    1. Add a new Activity to the Pool named Company

    2. Name this Activity Customer Login

    3. Select callActivity from the Type dropdown list for the BPMN 2.0 Tagged Values

    4. Set  calledActivityRef to the Activity named Customer Login located in the element library package named Reusable Processes

    5. Make this Activity a Composite Element and set its diagram to the BPMN 2.0 Business Process named Customer Login which is a child of the Activity named Customer Login located in the element library package named Reusable Processes


The simple example has demonstrated the changes made to BPMN 2.0 in Enterprise Architect versions 11 and 12. In particular:


  • Changes to how elements such as Pools (and Lanes), and Activities are reused and how they reference Partner Entity and Resource Role elements respectively.

  • Changes to the element property dialog regarding accessing BPMN 2.0 Tagged Values

I hope this example illustrates these changes clearly and assists you in creating well-structured and accurate BPMN 2.0 models in the future.


Phil Chudley

Principal Consultant

Dunstan Thomas Consulting

Read 29518 times Last modified on Wednesday, 14 January 2015 05:05

Phil Chudley

Dunstan Thomas (Principal Consultant)
I am a Principal Consultant at Dunstan Thomas Consultancy Ltd, Portsmouth, UK. I have been using Enterprise Architect for the last 13 years, and UML even longer than that! I also provide training and consultancy services for organisations using Enterprise Architect.
My main modelling interests are UML, BPMN 2.0, SysML 1.5 and Archimate 3.0 and I am both UML and TOGAF 9.0 certified.
I write extensions for Enterprise Architect especially custom modelling environments using MDG.
I am also an active member of the EAUG and have presented all the London events in addition to Nuremberg, Munich, Zurich, Brussels and Gothenburg.
follow me on Twitter



  • Comment Link Rahul Krishnan Wednesday, 20 September 2017 16:45 posted by Rahul Krishnan

    I'm a new user developing process models using BPMN 2.0. I'm having trouble running simulations of models while using pools. How do I make multiple pools run simultaneously ?


  • Comment Link philchudley Wednesday, 23 September 2015 07:59 posted by philchudley

    Hi John

    Yes I remember the BPMN at DB and pleased to see it is progressing well.

    Regarding the linking of events upstream / downstream, I presented this paper at a EAUG meeting London earlier this year where I had an opportunity to meet with Tom O'Reilly of Sparx systems.

    I had the same request as you, all references such as Pool to PartnerEntity should display the same behaviour.

    He said he would "pass the comments back to the development team"

    I guess we will have to wait and see.

    Currently I handle event linking much the same way as you describe. It may be possible to write some scripts to check/set/manage such references.

    All the best


  • Comment Link jonridgway Friday, 04 September 2015 11:37 posted by jonridgway

    Hi Phil,

    You may remember me - you helped us set our process model up at Deutsche Bank some years ago! At the time we were using v9.3 of Sparx - so our model is not compliant with v11/12 structure.

    I can see how we could migrate - but have a couple of questions. I've posted here as i suspect others may be interested :-

    - Events. In our current model we reuse 'IntermediateEvents' to represent the outcome of one sub-process and the trigger of a downstream sub-process. We then place the up/downstream sub-process Activity element on the diagram and link it to the IntermediateEvent with a Dependency. This way viewers of a map can see the up/downstream dependencies and can click through to navigate the end-to-end process, without having to constantly navigate to the parent diagram to select the up/downstream sub-process. So the question - how would we achieve the same in v12. I've tried adding IntermediateEvents and setting the eventDefinition to point to an IntermidateEvent in my library of business events. This works but my modeller needs to manually set the event name to match that in the library and if it changes in the library, go back to the model and change it...this isn't ideal. For lanes if you leave the name blank and set your partitionElementRef Sparx will display it as the name. I'd like the same for events (i think - guess that would be a feature request). My question here is - do you have a recommended best practice when it comes to events and linking up/downstream sub-processes ?

  • Comment Link Michael Preiss Thursday, 02 July 2015 00:50 posted by Michael Preiss

    Forgive the typo "thatn"; it should be "than". I see we can't edit our posts...

  • Comment Link Michael Preiss Thursday, 02 July 2015 00:47 posted by Michael Preiss

    Phil -

    Yours is the only documentation I've found anywhere that discusses how to reuse EA elements. Thank you for that.

    How can one determine an element is reused, though, and how does EA know an element is reused?
    I've copied and pasted some elements between packages (some elements, for whatever reason, EA will not allow me to paste into my package of choice, but I can paste those elements into a different package and then drag them to my intended package), but I see no visual cues that tell me which elements are reused. I've checked the GUIDs of objects I've copied and pasted (cloned) and they're different. If an element and its clone are in different packages, would it not be valid for them to have the same GUID?

    I'm still trying to figure out EA. I've only been using it for less thatn two months.

    Thank you for your help.

    Michael Preiss

  • Comment Link philchudley Tuesday, 13 January 2015 08:45 posted by philchudley

    Apologies for the screen at the beginning of the article, it shouldn't be there. I have tried to edit the article and the screen is not there when I edit it, but it is there upon saving!

    Also there are some formatting issues in the bulleted lists.

    I hope these minor issues do not affect the content too much

Login to post comments