1 2 Previous Next

Business Process Modeling

16 Posts

Read all the detail on our Q Data USA blog posting at http://qdatausa.wordpress.com/2013/06/11/sap-process-observer/


Highlights from the blog posting:


Process Observer is a component of SAP’s Business Suite foundation layer. Broadly speaking it can be used to monitor SAP Business Suite processes like OTC (Order to cash) and PTP (Procure to pay).

The value proposition for the tool as stated by SAP is as follows:

  • Provide Process Visibility enabling:
    • Real-time monitoring with exception handling
    • Business activity monitoring
    • SLA (Service Level Agreement) tracking
    • Transparency on process quality
  • Process optimization
    • Recognizing deviations leading to strengthening of operations (continuous improvement)
  • Insight-to-action: Near real-time reaction to exceptions
  • Enhanced process automation


How does it work?

  • The execution of the process is tracked via Business Object (BO) events (Traditional Business Object Repository events typically used to trigger workflows)
  • The Process Observer “correlates” these BO events in to a Local Process Log and calculates KPIs at this level (also stored in the local process log) Aggregated KPIs (averages) are calculated and made available through BW, ODPs or HANA
  • These local logs are federated with each other providing the needed end-to-end process visibility and analytics


Further points to note…

  • SAP Process Observer is available in the ABAP stack of Business Suite 7i2010.
  • You can use an Event API call (POC_RAISE_EVENT) from an external system to trigger a process observer event that would then update the local process log with the event execution information. Volume and performance of external API calls needs consideration…
    • See OSS note 1737693 to see how to use this Event API
    • Events are buffered and processed asynchronously using this technique
  • The process log can be accessed via the Process Observer Tool or via Enterprise Search
  • From the Process Observer Tool, when viewing activities, you can navigate to the related business objects
  • Data sources are available for extraction to Business Warehouse. In addition these datasources can be used to replicate the process logs to SAP HANA via ETL
  • Xcelsius dashboards based on BW, ODP or HANA allow for the monitoring of business processes over time
  • A threshold exception status is maintained and displayed (exception monitoring)
    • Thresholds are used to trigger actions. The action is launched based on an “Exception” BOR event being triggered
    • Thresholds can be set for process definitions or individual processes using the BRFPlus rules engine
  • When a user views the “local” process log in one Business Suite system, they are, in fact, viewing the federated process log… Communication between the local systems is done using the Process Façade (using information from the E2E Process Registry)
  • Changes to Business Objects, right down to the field level can be captured and analyzed using the Bex Web Analyzer tool. Change documents will be made available as a generic event in the coming Process Observer version allowing the use of customizing to map change information in to your process
  • In a future release… a Process Observer side panel for SAP NWBC (NetWeaver Business Client) will be made available to display process related info like status and KPI values
  • Providing the data via a mobile device: “Process Gateway” has been built as a part of SAP NetWeaver Gateway SP04


How does it compare to Business Process Analytics in SolMan? (Courtesy of Sebastian Zick)

  • Process Observer does not require a Scenario/Solution in Solution Manager to be maintained
  • in Business Process Analytics in Solution Manager, focus is on exception reporting, not on process performance – in Process Observer, information about all process instances are logged, i.e. good for drill-down to detail level directly into single transactions
  • Process Observer can be integrated into ERP transactions via Generic Object Services (GOS)
  • in Process Observer, you can easily add “non-process” event tracking with alerting, such as tracking of single field changes
  • in Process Observer, you can connect any system with ease, e.g. external warehouse management systems, SAP NetWeaver BPM, email systems, etc.


How does it compare to SAP Event Management?

  • SAP EM provides a highly configurable web UI for generating user reports providing visibility in to business processes
  • SAP EM has a much more advanced status management concept allowing for multiple status views per object depending on the user type
  • SAP EM is robust enough to handle high volumes scenarios
  • The Application Interface (AI) used to extract data from the SAP Business Suite is pre-delivered with content to extract the relevant data.
  • SAP EM has the concept of an Event as well as the message that tells us about the event. Analytics is not only limited to the event itself but can also include analytics around the message. E.g. An EDI 856 is sent from a supplier 1 day after the goods shipped on time. The shipped event was on time but the message was sent late
  • SAP EM does not integrate with the GOS object view
  • SAP EM has very tight and easy integration with the Alert Framework for exception reporting
  • SAP EM provides web services to capture and query events in a secure fashion
  • SAP EM allows for the hierarchical display of business processes with a separate status being associated with the hierarchy as well
  • Both tools extract to BW, launch  and integrate easily with workflow


SAP continues to "muddy" the waters with multiple solutions overlapping areas of coverage. It is becoming increasingly difficult for Solution Engineers and Architects to adequately advise on the correct path to take. We need a better roadmap that is transparent to those that need to know so we don't chase technologies that will later be abandoned. A prime example was SAP Business Objects Event Insight which was abandoned and now Sybase ESP replaces it with little to no integration with SAP!


In this particular space I have heard from SAP Solution management that both SAP EM and Process Observer will be continued in to the foreseeable future...


Let me know your thoughts...


Q Data USA (SAP Supply Chain specialists) blog: http://qdatausa.wordpress.com



The correlation feature in SAP NetWeaver BPM differentiates between two transactions, message matching and message consumption. In process definitions that implement the conditional start pattern, all messages, which are already matched but not yet consumed will be resent to the conditional start endpoint when the process instance is terminated or completed. If there are no running instances of the process definition, one of these resent messages will start a new process instance, assuming the start condition of the process definition is fulfilled. For more detailed information, please, refer to the documentation on help.sap.com.


However, it is important to be aware of a possible loss of a resent message in certain scenarios. It is possible that the resent message is received by the web service endpoint of the message trigger but it is discarded because the start condition of the process definition is not fullfiled by the payload of the resent leftover message. This means that no process instance is started. For detailed information about monitoring discarded messages, please, see the blog about Conditional Start: Monitoring (4/7)


The following examples describe scenarios that could lead to a loss of resent messages.


Scenario 1: Start Correlation Criteria of Newly Activated Process Definition is not Fulfilled During Resent


In this scenario, two different versions, V1 and V2, of a conditional start process definition exist. Both versions of the definition use the same message trigger but have different start and correlation conditions. Figure 1 and figure 2 illustrate the start and correlation conditions of the process definition 1 and 2.


Figure 1: Process definition version V1

Figure 2: Process definition version V2

The following chronology of events causes that a resent leftover message is discarded:

  • Process definition version V1 is deployed and activated.
  • A message with the payload message/color = "red"  is sent to the endpoint. An instance of the process definition V1 is started by this message.
  • 2 messages with the payload message/color = "red" are sent to the endpoint of the message trigger.
  • The running process instance receives the messages. Both messages match the correlation condition.
  • The process definition version V2 is deployed and activated. The process definition version V1 is deactivated.
  • The task of the human activity of the process instance is completed.
  • One of the matched messages is consumed by the process instance and the process instance terminates.
  • The other leftover message is resent to the endpoint.
  • The payload of the resent message is message/color = "red" but the process start condition of process definition V2 is message/color = "blue". Therefore, the resent message is discarded. No process instance is started.


Scenario 2: Process Start Condition is More Specific than the Correlation Condition of the Intermediate Message Event

In this scenario, there is a conditional start process definition, where the process start condition is more specific than the correlation condition of the intermediate message event. An example of such a process definition is illustrated in figure 3. 


Figure 3: Process definition where the start condition is more specific than the correlation condition.


The following chronology of events causes that a resent leftover message is discarded:

  • The conditional start process definition is deployed and activated.
  • A message with the payload message/type = "colorPencil"  AND message/color = "red" is sent to the endpoint. An instance of the process definition is started by this message.
  • 2 messages with the payload message/type = "colorPencil" AND message/color = "blue" are sent to the endpoint.
  • The running process instance receives the messages. Both messages match the correlation condition.
  • The task of the human activity of the process instance is completed.
  • One of the matched messages is consumed by the process instance and the process instance terminates.
  • The other leftover message is resent to the endpoint.
  • The payload of the resent message is message/type = "colorPencil"ANDmessage/color = "blue" but the process start condition is message/type = "colorPencil"  ANDmessage/color = "red". Therefore, the resent message is discarded. No process instance is started.




When modelling conditional start patterns in process definitions, be aware of the following factors as they might cause that resent leftover messages are discarded:

  • Different correlation conditions between different versions of a conditional start process definition
  • Different conditions between the start and correlation conditions of a process definition


If some messages are inadvertently discarded during resent, examining the start and correlation conditions of the deployed process definitions. This is a good start for investigation.


    In my previous blog, I have described the analytical features shipped with SAP NetWeaver 7.3, EhP 1, SP6 of SAP NetWeaver BPM that are represented by the NWA dashboard and the BPM Analytics API. Here, I'll give the coding example of a web service which uses the BPM Analytics API and show how to use the developed web service to create a report in Crystal Reports. The code of the web service is available here.


Development of the Custom Web Service Using the BPM Analytics API

As the coding example here, we shall use the standard web service developed in NWDI. The interface of the service represents a facade for the BPM Analytics API. The methods of the interface are as follows:

public int getCountOfProcessesInError () throws Exception;
public int getCountOfTasksEscalated () throws Exception;
public int getCountOfTasksInError () throws Exception;
public int getCountOfTasksWithoutOwner () throws Exception;
public List<String> getEventTypes ();
public List<EventStatisticsWrapper> getEventStatistics (Date startTime, Date endTime, List<String> eventTypes, long intervalInMilliseconds) throws Exception;
public List<String> getProcesssStatuses ();
public List<DurationStatisticsWrapper> getProcessDurationStatistics(Date startTime, Date endTime, String processStatus, int noOfTopProcessModels) throws Exception;
public List<StatusStatisticsWrapper> getProcessStatusStatistics (Date startTime, Date endTime, List<String> processStatuses, int noOfTopProcessModels) throws Exception;
public List<String> getTaskStatuses ();
public List<DurationStatisticsWrapper> getTaskDurationStatistics (Date startTime, Date endTime, String taskStatus, int noOfTopProcessModels) throws Exception;
public List<StatusStatisticsWrapper> getTaskStatusStatistics (Date startTime, Date endTime, List<String> taskStatuses, int noOfTopProcessModels) throws Exception;


     We use the wrapping classes (e.g. DurationStatisticsWrapper) as containers for pieces of statistical information for proper XML formatting of the web service responses.

     To correctly assess user authentication, the interface of the web service should be annotated as follows:

@AuthenticationRT(AuthenticationMethod = { "sapsp:HTTPBasic", "sapsp:HTTPSSO2" })
@AuthenticationDT(authenticationLevel = AuthenticationEnumsAuthenticationLevel.BASIC)


    Otherwise, all the calls of the methods of the BPM Analytics API would be considered to be fired by the guest user who is very unlikely to be a business process or task administrator for any process or task instances.


Using the Developed Web Service in Crystal Reports

In this section, I'll describe a way to create a custom report in Crystal Reports which uses the previously developed web service.

The report will provide the information about the duration of the processes that currently have the status IN_PROCESS.

So, the first step after deployment of the web service in the system is to create a standard report. This can be done by going to File -> New -> Standard Report... (or Ctrl + N shortcut):


After this, the data source connection properties should be specified. We shall use the WSDL file of the previously deployed web service. It can be accessed from Single Service Administration perspective in NWA:


Now we select XML and Web Services from the list of available data sources and toggle the Use HTTP(S) WSDL URL option where we specify the WSDL of the previously deployed web service:


After that, we provide the credentials of the user of interest. Please, note that the statistics will be obtained for the tasks and processes where the specified user is a process and/or task administrator:


After this, we select the getProcessDurationStatistics method from the list of available methods of the web service.


Now, we specify the input parameters of the method. They are as follows: the process instance creation start and end time, process status (we specify IN_PROGRESS here), and the number of top process models (let's specify 10 here):


After this, we have to select the fields that are going to be used in the report. It would be interesting for us to see the average, minimum, and maximum process execution time as well as the name of the corresponding process model:


Here is how the first report should look like:


After this, we could also specify the sorting options for the items in the table:


Aggregated values are also of interest. For instance, we select the maximum value of the maximum execution time and the minimum value of the minimum execution time of the process instances.



Then, we can also add a chart and specify that for each process model the maximum, minimum, and average execution time will be shown:


Here is how the final report looks like:




For the introduction into the BPM Analytics API, please, refer to my previous blog.

For further and more detailed information about the functionality of the BPM Analytics API, please, refer to the help documentation.


      Detailed statistical information about execution of the complex business processes created with SAP NetWeaver BPM is a prerequisite for decision making and figuring out the necessary adjustments to achieve the maximum performance.

    In this blog, I am going to describe the analytical features shipped with SAP NetWeaver 7.3, EhP 1, SP6 that provide statistical information about the count, statuses, and duration of execution of process and task instances as well as an overview of distribution of process and task related events over time. This information is visualized in the NWA Dashboard (http://<hostname>/bpmanalytics) and can be accessed by custom clients via the BPM Analytics API.

     This blog is organized as follows. First, I describe the features available in the dashboard. Second, there comes the description of the new functionality provided by the BPM Analytics API.


The Analytics Dashboard

     The analytics dashboard (http://<hostname>:<port>/bpmanalytics) displays the analytical information about the processes and tasks in the easily perceptible plots. In order to view the dashboard, the user must be assigned with the following roles: BPEM End User, SAP_BPM_Navigation, Every User Core, Everyone. The information summarized in the dashboard refers only to the processes and tasks for that the current user is a process and task administrator.

     The default dashboard perspective contains an overview of the system:


     The chart which displays the count of the process instances in progress, in error, or completed is shown at the top left-hand corner. The time interval of interest can be specified in the dropdown box above:


     The chart which displays the count of the task instances in progress, open, completed, or failed is shown at the top right-hand corner. The time interval of interest can be specified in the dropdown box above:


     By clicking the "View details" links below the plots one can view the detailed information about the the process and task models that are accounted for statistics:




     In the bottom left-hand corner, one can find the list of problems related to the processes and tasks of the current user and view their details:


     The plot at the bottom of the page depicts the distribution of process- and task-related events (starts and completions) over time. The time interval of interest can be specified in the dropdown box above:


The process and task perspectives of the dashboard provide the information only about processes and tasks correspondingly. In addition to the counts of the instances and the event time lines, one can see the figure depicting statistical information about the duration of execution of process and task instances. The average, minimum, and maximum values of execution duration are available for each process and task model:





BPM Analytics API

    The BPM Analytics API provides functionality of obtaining statistical information about the count, statuses, and duration of execution of process and task instances as well as an overview of distribution of process and task related events over time.

     The access point to the functionality of the API can be obtained by the following Java code:

AnalyticsManager analyticsManager = BPMFactory.getAnalyticsManager();


The statistics provided to a user refers only to process and task instances for that the current user is a Business Process Administrator or/and a Business Task Administrator. 

     The archived instances are not taken into account while computing statistics.

     Statistics is aggregated over all the versions of the process models. If a process is started as subprocess it will not be taken into account while computing statistics.



To obtain statistical information about processes and tasks, the mandatory parameters that should always be specified are java.util.Date startTime and java.util.Date endTime that limit the time when the process or task instances of interest were created or when events of interest occurred.

The BPM Analytics API provides access to 3 different types of statistics that refer to tasks and processes:

  1. Duration statistics
  2. Status statistics
  3. Event statistics

Here come the summaries of them.


Status Statistics

     Status statistics contains the information about the cumulative number of instances of a process or task model that have a certain state status.

It is represented by the ProcessStatusStatistics interface for processes and TaskStatusStatistics interface for tasks in the BPM Analytics API. They can be obtained by the following methods of the AnalyticsManager:

public List<ProcessStatusStatistics> getProcessStatusStatistics(Date startTime, 
                                                                           Date endTime, Set<ProcessStatus> statuses,
                                                                                 int maxNoOfProcessModels) throws BPMException;
public List<TaskStatusStatistics> getTaskStatusStatistics(Date startTime, 
                                                                 Date endTime, Set<Status> statuses, int noOfTopTaskModels)
                                                                       throws BPMException;


     startTime and endTime, in this case, refer to the starting and ending points of time when the process and task instances were created.

     The resulting lists of ProcessStatusStatistics or TaskStatusStatistics are sorted by process or task models having highest number of task instances currently in the specified statuses.

If the parameter java.util.Set<Status> statuses is specified only processes or tasks with these statuses will be counted for statistics. The counts of the process or tasks with the other statuses will be 0. The list of statuses of processes and tasks supported by the BPM Analytics API is provided below:


Supported StatusesUnsupported Statuses








Duration Statistics

     Duration statistics contains the information about the time when instances of process or task models have certain statuses. It is represented by the ProcessDurationStatistics and TaskDurationStatistics interfaces for processes and tasks correspondingly. They can be obtained by the following methods of the AnalyticsManager:

public List<ProcessDurationStatistics> getProcessDurationStatistics(Date startTime, Date endTime, ProcessStatus status,
            int noOfTopProcessModels) throws BPMException;
public List<TaskDurationStatistics> getTaskDurationStatistics(Date startTime, Date endTime, Status status, int noOfTopTaskModels)
            throws BPMException;


     startTime and endTime, in this case, refer to the starting and ending points of time when the process and task instances were created.

     Duration statistics contains the information about maximum, minimum, and average time when the instances of a process or task model have a certain state status. This data can be obtained by calling the following methods of the ProcessDurationStatistics and TaskDurationStatistics interfaces:

long getMinExecutionTime();
long getAvgExecutionTime();
long getMaxExecutionTime();


Event Statistics

     Duration statistics contains the information about the number of certain events that occurred in the system during a certain time period. It is represented by the EventStatistics interface of the BPM Analytics API. It can be obtained by the following methods of the AnalyticsManager:

public List<EventStatistics> getEventStatistics(Date startTime, 
               Date endTime, Set<EventType> events, 
               long intervalInMilliSeconds) throws BPMException;


     startTime and endTime, in this case, refer to the starting and ending points of the time period when the events of interest occurred.

     The time period between start time and end time is split into sub-intervals of duration specified in intervalInMulliSeconds parameter. Within these sub-intervals, the cumulative number of the events specified in events parameter is quantified and set as the value of the eventCount field of the EventStatistics.



     Last but not least,  if the dashboard or the functionality of the BPM Analytics API is unavailable the first thing to do is to clear the browser cache and make sure that the latest SCAs are deployed in the system.


For an example of usage of the BPM Analytics API with Crystal Reports, please, refer to my following blog.

For further and more detailed information about the functionality of the BPM Analytics API, please, refer to the help documentation.

Many companies are struggling to come up with answers to a new reality which is forcing them to reconsider their markets, revenue model and value proposition. During these times of economic downturn, managers are struggling with uncertainty, declining revenues and squeezed budgets. An article in FD Outlook(1) (June, 2012) provided a nice insight in the difference in mentality between European and US based organizations in dealing with these challenges. In Europe, the main management focus remains on the financial thresholds, whereas in the USA a strong shift towards a strategic and operational focus is seen. The result of this changed focus is that both business operations and governance have a strong strategic orientation, which forces the organization towards “the initiation of innovation, processes and investments which will deliver on promise”.


As Osterwalder(2) describes in the book on ‘Business Model Generation’, this shift towards business model innovation is an important element in dealing with the challenges companies face today. Successful companies have embraced business model innovation and have found a way to handle the (especially technological) challenges which allow disruptive new business models to come into play.


“Business Model Innovation is hardly new. … But the scale and speed at which innovative business models are transforming industry landscapes today is unprecedented. … Ultimately, business model innovation is about creating value, for companies, customers, and society. It is about replacing outdated models.”


These new business models are highly innovative and require new organizational and operational models along with the design and implementation of new, innovative processes. All the good reasons therefore to embrace business model and process innovation in dealing with (and providing answers for) the challenges faced by companies today.


In ICT, we also still see a strong focus on the financial thresholds and less on the possible strategic value creation. The Total Cost of Ownership (TCO) is too often one of the main drivers for ICT management. In a rapidly changing ICT environment which is characterized by trends such as Big Data, Could and In-Memory Computing, Mobile and Social Media and Complex Event Processing (or ‘the internet of things’), this is however not the way forward. Few companies realize that the increasingly complex ICT environment will only increase their TCO in the future. Even fewer companies realize that capitalization of their IT platform will provide them with the capabilities required for business innovation, strategy execution and operational excellence. Research from MIT CISR(3) shows that companies operating from an innovative business model can actually make money from their IT Platform. This appealing concept of the IT platform as a capability for value creation and enabler of innovation strategies is further investigated and described in a series of articles from Ross et al. on ‘Working Smarter’(4,5,6).


By taking a different approach towards the IT platform and rethinking the IT platform as an enabler for change instead of a cost element we will be able to capitalize on our IT investments. When realizing innovative business models and processes, three main factors are identified for successful implementation of process innovation(1,3): the IT backbone, the Skills of People and the capability to Measure the strategic and operational indicators. In order to capitalize on the IT platform, it must be solid enough to boost confidence and guarantee performance, it must be flexible enough to support innovation and it must be smart enough to provide full strategic and operational intelligence. 


IT Backbone

Looking at SAP’s product portfolio I see a lot of elements in place that support the concept of the IT platform as a capability for value creation and enabler of innovation strategies. SAP traditionally has offered a solid IT backbone and current developments such as cloud and in-memory computing and the rapid deployment of targeted solutions (RDS) show SAP’s acknowledgement of the requirements placed on the IT platform by this new adagio. Shorter implementation cycles, design thinking, real-time reporting and big data processing capabilities are only some of the examples of SAP’s commitment to a strong, yet (more) flexible and customer oriented IT backbone.


An important and perhaps somewhat disregarded capability towards Process Innovation is the shift SAP made towards more standardized, out-of-the box functionality. This shift for sure has a technological background since the support for cloud solutions favors standardized solutions. The business function framework in the SAP Business Suite, Best Practice implementations and Rapid Deployment Solutions however also show that the shift from ‘make-to-order’ towards ‘assemble-to-order’ implementations have a deeper, more profound foundation. Characteristics of these implementations are out-of-the box solutions, standardized content, shorter implementation cycles and a (business) process oriented approach targeting specific processes and customer challenges.


Process Lifecycle Support

Another important capability of SAP is the support for end-to-end process lifecycles. Pursuing the BPM approach, improved tools for process management and process measurement have come into play over the past year(s). In the process lifecycle management area, we see improved integration between

  • process design (Capability Based Planning, Process Repository and Business Process Blueprinting),
  • solution design (Solution Builder, Process Composer, Pre-Defined Content from Best Practices, Industry Solutions and Rapid Deployment Solutions),
  • solution implementation (Solution Manager) and
  • solution governance (Solution Builder, Solution Manager).


I am currently also working on another blog regarding the integration of and the closed loop approach for these End-to-End Process Management capabilities in SAP in more detail, so stay tuned for that one…


Maybe even more important, the process measurement tools provided in the recent releases have dramatically improved by introducing the Process Observer, an “Infrastructure for Core Process Monitoring & Analytics” in the SAP Business Suite. Activation of this process monitoring framework provides the capability to extract operational process information from the SAP Built-In processes. This operational process information provides basic information for several process monitoring tools available from SAP such as Operational Process Intelligence (HANA), Process Gateway (NetWeaver Gateway) and Business Process Analytics (Solution Manager, BI). This enhanced process monitoring capability on top of the SAP Business Suite thus provides the information required for operational excellence, for strategic insight and therefore fulfills one of the requirements (measurement) for successful business model and process innovation.


SAP’s process innovation capabilities

All in all, SAP has positioned itself pretty decent to support the move towards the ‘IT platform as a capability’ adagio and SAP’s customers are in the front row when it comes to capitalizing on their IT investments. Now all it takes is to evangelize the message that the IT platform is actually capable of creating value, not just making costs, and that the path towards business and process innovation is paved with SAP products supporting the BPM Lifecycle.



1 Nieuwe bestuurscode - Kennis is een bonus waard", FD Outlook, Jaargang 5, nummer 2, Juni 2012 (Dutch)

2 A. Osterwalder and Y. Pigneur, “Business Model Generation”, ISBN 9780470876411

3 J. Ross, C. Beath and K. Johnson, "Driving Value from the Data Deluge: Lessons from PepsiAmericas", MIT CISR Research Briefing, Vol.X, No. 3, March 2010 (Revised January 2011)

4 J. Ross and A. Quaadgras, "Working Smarter: The Next Change Management Challenge", MIT CISR Research Briefing, Vol.XI, No. 1, January 2011

5 J. Ross and C. Beath, "Working Smarter: The Digital Economy Is All About Your People, MIT CISR Research Briefing, Vol.XII, No. 2, February 2012

6 J. Ross and C. Beath, "Working Smarter: Leveraging Information for Group Decision making", MIT CISR Research Briefing, Vol.XII, No. 4, April 2012

How often do you deal with business processes that require human interaction in their very first step?


Typically they follow this pattern:


Figure 1: Standard BPMN process with a human activity at the beginning


The downside of this model is that the process starts off with a message start event. This means that somehow the process needs to be invoked before the user can interact with the first task. This can either be through the Process Repository (part of the SAP NetWeaver Administrator) for test purposes or directly by invoking the web service (WS) endpoint that is exposed by the process model.


Another disadvantage of this approach is that the process needs to be kicked off and the user has to go to the Universal Worklist in order to open the task. When talking about a smooth user experience that is typically not what you want to achieve. To bypass this I also happen to see such patterns:


Figure 2: Standard BPMN process with an upstream human activity


Here the user interface got removed from the process model and put before. That way, the user can directly invoke the user interface, enter the data and thereby, kick-off the process under the hood (by invoking the WS endpoint again).


In my opinion, the problem with this approach is that you lost a substantial part of information, namely the user triggering the process. Of course, this could be compensated by modeling different actors/pools and documenting that a user interaction sent the message to the system.


But is not the BPMS promise in the end that you could model business processes that could directly be executed? So I would put something like this onto my personal BPMS wish list:


Figure 3: BPMN process with 'human start event' extension


Let’s call this a human start event.


Similar to human activities one could attach a user interface behind that and as a result receives an endpoint URL that could directly be invoked.


Figure 4: Fictive properties sheet for a human start event


Entering data and completing the task at runtime will implicitly invoke the business process. Thus, no indirection through the worklist is needed. Furthermore, the information about the human interaction is preserved and exactly at the point one would expect it in the process model.


Of course, one could now argue if the notation above is the correct. I personally like it as the event of some human activity kicked off the process. Alternatively, it could also be expressed this way to comply with standard BPMN semantics:


Figure 5: Standard BPMN process that does not define the trigger for the start event


The model does not define how the process is started, but the first activity will be executed by a human.


At the current state SAP NetWeaver BPM does not allow this to be built and executed as an event needs to have a trigger. So this means that we are left with the pattern from the start:


Figure 6: Standard BPMN process with a human activity at the beginning


The good news is that the BPM Public API allows us to bypass the indirection through the worklist: One could start the process implicitly and directly forward the user to the first human activity.


In an easy example - without input for the process and only one human activity at the beginning - this could look like follows:


final String vendor = "sap.com";
final String dcName = "my~human~centric~dc";
final String processName = "MyProcess";
final ProcessDefinitionManager processDefinitionManager = BPMFactory.getProcessDefinitionManager();
final ProcessStartManager processStartManager = BPMFactory.getProcessStartManager();
final TaskInstanceManager taskInstanceManager = BPMFactory.getTaskInstanceManager();
final ProcessDefinition processDefinition = processDefinitionManager.getActiveProcessDefinition(vendor, dcName, processName);
final Set<ProcessStartEvent> startEvents = processStartManager.getProcessStartEvents(processDefinition.getId());
if (startEvents.size() != 1) {
     throw new IllegalStateException(“Exactly one start event is needed.”);
final ProcessStartEvent startEvent = startEvents.iterator().next();
final DataObject dataObject = processStartManager.createDataObjectForStartEvent(startEvent);
final URI processInstanceURI = processStartManager.startProcess(startEvent, dataObject);
final Set<TaskAbstract> taskAbstracts = taskInstanceManager.getTaskAbstractsByParent(processInstanceURI, Collections.<Status> emptySet());
if (taskAbstracts.isEmpty()) {
     throw new IllegalStateException(“First task was not found.”);
final TaskAbstract taskAbstract = taskAbstracts.iterator().next();
final URL generatedTaskExecutionUrl = taskInstanceManager.generateTaskExecutionUrl(taskAbstract.getId());


Finally, by putting this in a custom web application it gets addressable by URL (e.g. http://server:port/CreateRequestAndStartProcess). This way, it can easily be included in a portal or bookmarked by users on their PC, their tablet or mobile.


So even without human start events SAP NetWeaver BPM allows putting your users first in human centric processes.



Looking forward to your feedback,



For your convenience I published the sample project at SAP Code Exchange: https://code.sdn.sap.com/spaces/bpm

User Story

     SAP NetWeaver BPM is used for implementation of complex business processes that generate a lot of business data while execution. This data is used both for decision making while execution and for the analysis of the business processes.

     In our use case, we want to identify one or many process instances based on the contextual data they carry inside. Contextual data is the data that end-users can think of when they search for a business transaction (process instance).

    So far, business process administrators could identify relevant process instances by filtering the process subject or using process names and other execution data:



    The BPM Reporting API (shipped since SAP NetWeaver 7.3, EhP 1, SP6) provides a new feature of finding the data inside of a reporting data source and then identifying the process instance.


     The BPM Reporting API provides the end-users an opportunity to monitor on their own the process instances of interest. Of course, the users should be aware of the meaning of the business processes and the corresponding data, however, the knowledge of the BPM concepts, in this case, is not a prerequisite. This leads to the decrease of the administrative support.


     One of the possible specific use cases could be as follows: the business process of interest is ordering of products in stock. The data about the orders (e.g., the name of the product, the name the customer, the date of the order) is stored in the reporting data source. Using the BPM Reporting API, one is able to identify the relevant process instances given the name of the product, the name of the customer, or the date of the order.

     In this blog, I would like to give an overview of the functionality provided by the BPM Reporting API as well as give a coding example of the client that uses it. The client is based on SAPUI5. You can find the sources at Code Exchange.

The BPM Reporting API

    The BPM Reporting API is located at com.sap.bpm.reporting.api.  The package provides the classes to access the definition of the reporting data sources deployed in the system and to identify process instances based on the reporting data they carry inside. The access point to the functionality of the API can be obtained by the following Java code:


ReportingDataSourceManager manager = BPMFactory.getReportingDataSourceManager();


    This provides an instance of ReportingDataSourceManager type which allows retrieving information about the reporting data sources deployed in the system, searching for the process instances based on the business data, and querying the corresponding data contained in the reporting data sources. The following UME actions protect the methods of the ReportingDataSourceManager and must be assigned to the role of the user who accesses the corresponding reporting functionality:


Action NameProtected Functionality
SAP_BPM_RDS_ViewAccessing the reporting data sources.
SAP_BPM_RDS_SearchSearching in the contents of the data sources.
SAP_BPM_RDS_QuerySearching and querying the contents of the reporting data sources.


    If the necessary actions are not assigned to the user role a BPMIllegalAccessException will be thrown.


Reporting Data Sources

    A reporting data source deployed in the system is a process model artifact, which persists the process context  information at a certain point in the execution of the business process. It consists of the fields that are represented by the ReportingField interface in the BPM Reporting API. The developers should check whether a reporting field can be used for searching or querying by calling the method isSearchable() of the ReportingField interface. If a field which does not support searching and querying is used while performing these operations a BPMIllegalArgumentException is thrown. The following code snippet could be used to obtain all reporting fields of the reporting data source that can be used for searching:

public List<ReportingField> getDataSourceSearchableFields(URI reportingDataSourceId) 
          throws BPMException{
     List<ReportingField> fields = getReportingDataSource(reportingDataSourceId).getFields();
     List<ReportingField> result = new ArrayList<ReportingField>();
     for (ReportingField field : fields) {
          if (!field.isSearchable()) {
     return result;


Version Concept of the Reporting Data Sources

    If a definition of a reporting data source is changed, a new version of the reporting data source is created during deployment of the business process. The reported data is from now on accumulated in the latest version of the reporting data source. Consequently, the data is split between the subsequent versions of the reporting data source. ReportingDataSourceManager provides access to the single versions of the reporting data sources deployed in the system as well as to aggregations over the versions of the reporting data sources with the same definitions and compatible changes between each other. So, the aggregation could be seen as a reporting data source which contains all the data of the aggregated versions of the definition of the reporting data source and allows searching in this data. The compatible changes of a reporting data source are as follows:

  1. Adding a new reporting field (the field is added to the corresponding aggregating reporting data source).
  2. Removing an existing reporting field (the field remains defined in the corresponding aggregating reporting data source).
  3. Changing the type of an existing reporting field to a compatible type (the most comprehensive type remains defined for the field in the aggregating reporting data source). The example of the compatible change of the reporting field type would be a change from integer to short (the type of the reporting field in the corresponding aggregating reporting data source will remain integer as it covers both integer and short). Another example is the change from short to long (the type of the reporting field in the corresponding aggregating reporting data source will become long). On the other hand, changing the type of the reporting field from, for instance, byte to boolean will be considered as incompatible and the aggregating reporting data source, in this case, will not be created. It is important to mention here also, that the integer type of the reporting field refers to all the decimals and is not equal to int in Java.


Accessing the Reporting Data Sources

    From the programmer’s point of view, there is no difference between the versions of reporting data sources and aggregations over the versions of the reporting data source: they can be accessed via ReportingDataSourceManager and are represented by the ReportingDataSource interface of the BPM Reporting API. Versions and aggregations differ in the patterns of their identifiers.

    A pattern for an identifier of a version of a reporting data source looks as follows:


bpm://bpm.sap.com/reporting-datasource/<Name of the reporting data source version displayed in Visual Composer or in the SAP Business Warehouse system connected to the SAP NetWeaver BPM>


    A pattern for an identifier of an aggregation over the versions of the reporting data source looks as follows:


bpm://bpm.sap.com/reporting-datasource/<DC vendor>/<DC name>/<Name of the reporting data source in the NetWeaver Developer Studio>


    For example,

Version: bpm://bpm.sap.com/reporting-datasource/Order_1346435787

Aggregation: bpm://bpm.sap.com/reporting-datasource/mycompany.com/mydc/myprocess/Order

    It can be seen, that an instance of the type ReportingDataSource represents an aggregation over the versions of the reporting data source if there exists a sign ‘/’ after the “bpm://bpm.sap.com/reporting-datasource/” substring of its identifier. This check can be performed by the following java code:


public boolean isAggregatingDataSource(ReportingDataSource reportingDataSource) {
                    //Common part of the IDs of the reporting data sources 
                    //and reporting data source versions
                    final String COMMON_URI_PART = "bpm://bpm.sap.com/reporting-datasource/"; 
                    String inspectedRdsIdString = reportingDataSource.getId().toString();
                    //Ensure that the inspected string does not end with '/'
                              inspectedRdsIdString = inspectedRdsIdString.substring(0, 
                                                                                          inspectedRdsIdString.length() - 1);
                    //Check if there is still a slash after the common part in the inspected string. 
                    return inspectedRdsIdString.indexOf("/",
                                        COMMON_URI_PART.length()) >= 0;


Querying the Contents of the Reporting Data Sources

    The results of the method search(…) of the ReportingDataSourceManager interface are the URI identifiers of the process instances that fit the specified searching conditions. The method query(…) of the ReportingDataSourceManager interface provides access to the contents of the reporting data sources that correspond to the specified process instances. These contents are provided as an instance of type ReportingResultSet of the BPM Reporting API. The following Java code iterates over the contents of the ReportingResultSet:

List<ReportingField> reportingFields = getManager().getDataSourceFields(reportingDataSourceId);
URI processInstanceId;
Timestamp creationTime;
Object fieldValue;
while (reportingResultSet.next()) {
     processInstanceId = reportingResultSet.getProcessInstanceId();
     creationTime = reportingResultSet.getCreationTime();
     //Process process instace id and creation time
     for (ReportingField reportingField : reportingFields) {
          fieldValue = reportingResultSet.getObject(reportingField);
          //Process the field value


All the exceptions thrown by the methods of the BPM Reporting API inherit the BPMException class of the BPM API. So, all the methods of the BPM Reporting API can throw BPMIllegalArgumentException (if supplied with an invalid identifier of the reporting data source) and BPMIllegalAccessException (if the user is not granted with the proper UME actions). The following code snippet shows how the exceptions thrown by the methods of the BPM Reporting API could be handled in a custom servlet:

try {
          //Calling the methods of the BPM Reporting API ...
} catch (ReportingDataSourceNotFoundException e) {
          if(e.getCause() instanceof ReportingFieldIncompatibilityException){
                              "The reporting data source has been changed in " +
                                   "an incompatible manner and cannot be queried.");
                              "The process DC has not been deployed in the system.");
}  catch (BPMIllegalAccessException e){
                    "The user does not have proper rights to access the requested reporting functionality.");
} catch(BPMIllegalArgumentException e){
                    "The arguments supplied are incorrect.");
} catch (ReportingDataSourceSearchException e) {
                    "Error occurred while searching in the reporting data source.");
} catch (ReportingFieldNotFoundException e) {
                    "The reporting field specified is not found in the reporting data source.");
} catch (ReportingDataSourceQueryException e) {
                    "Error occurred while querying the reporting data source.");
} finally {
          //Releasing resources...



    The client of the BPM reporting API provided here as an example (demoweb/WebContent/sapui5client.jsp) is represented by SAPUI5-based user interface and search is performed by AJAX calls of the service servlet (RDSWebServiceSimpleServlet) which utilizes the BPM Reporting API. The page contains the fields for the search term, dropdown boxes to select the reporting data sources of interest deployed in the system, and the fields to specify the optional search parameters as well as the tables where the search results are displayed.


Here goes the screenshot of the provided client:


After deployment, the address of the client page will be http://<host>:<port>/demosearchapp/sapui5client.jsp.



For further and more detailed information about the functionality of the BPM Reporting API, please, refer to the help documentation.

The example client of the BPM Reporting API can be found at Code Exchange.

Link to first blog in this series.


This FAQ details all sorts of useful information (such as how to get free access) to the collaborative process modeling tool in SAP StreamWork (#Gravity).

It is thanks to Tammy Powlas who faithfully recorded all the ASUG questions and answers from an interactive web-session relating this tool to modeling in SAP Business Workflow that this blog exists. But it is generic enough to be useful anyone wanting to graphically describe processes or project flow.


In fact  Susan Keohan told me it was so interactive that some of the participants were "on stage" without bothering to access the WebEx conference URL in the first place!

BTW: If you are not part of ASUG but would like this presentation given to your local user group then please contact me directly.



Q: Why is this tool offered free of charge?

A: To collaborate effectively you have to be able to reach out to individuals on an ad hoc basis such as during a phone call and involve them in discussions immediately without hurdles, such as payment.

SAP StreamWork also offers commercial licenses such as the Enterprise license or the Professional licenses, which offer significant corporate advantages as shown in the slides, but the tool can be used without this and without restrictions.

So there is no charge to use the basic capabilities of SAP StreamWork, or the full capabilities of the modeling tool itself, but you can upgrade later to gain the corporate advantages of the SAP StreamWork environment.


Q. What is the tool called?

A: This is a tool offered in SAP StreamWork along with many other tools that are very helpful in collaboration during projects or decision making activities.

The proper name of the tool is collaborative process modeling tool in SAP StreamWork, which is quite a mouthful so you will often find it referred to by its project name - gravity.


Q: What are the benefits of  the collaborative modeling in SAP StreamWork over a tool such as traditional tools?

A: Traditional tools focus on documenting processes in detail. StreamWork is not intended as a repository of processes but as a collaboration workspace focusing particularly on freestyle processes (such as how should our decision-process flow) or modeling processes where you need to consult different experts in different locations. The tool shown in the WebCast is just one of the many collaborative tools in SAP StreamWork. Do not confuse with SAP Solution Manager, which is the central repository for processes as described in this blog: http://scn.sap.com/community/bpm/blog/2012/01/25/uncovering-the-value-of-collaborative-process-modeling-with-sap-streamwork


So the collaborative process modeling tool in SAP StreamWork is ideal for collaboratively designing and discussing processes.



Q: How do we restrict other members from making changes to the workflow when the creator of the workflow wants complete ownership?

A:  Visible demonstration through locking item


Q: Do we have templates that can be used by users to quickly build a commonly used workflow?

A: A nice idea – process fragments  - great idea to do on a collaborative basis

Can use import and export so that they can be used to jumpstart building new processes.


Q: Can we attach a link to an object in the workflow?

A: You can add a links in the comments section of streamwork. These are assigned to the workflow and have the advantage of producing RSS feeds so that other people working on the workflow are informed as the links are added.


Q: Most missed feature?

Currently, panning or navigating large process diagrams in an intuitive way. You can do this using the pan button (and accelerator keys described in the online help) with a minute or two of practice but we in development admit that we hadn't expected it to be used so much in such complicated scenarios so we would like to make this more intuitive. The good news is that since this is cloud-based, updating with improved features is straight-forward.


Q. Why did SAP develop this tool?

a) to be of use to customers, and make it easier to deploy SAP BPM software.

b) to enhance the existing capabilities of SAP StreamWork so that decisions can be made and planned.

c) a first step in the direction of BPM as a service (BPMaaS.)  Watch this space.


Q. Is there a short overview video that anyone can access?

A: Yes, on YouTube. Warning: The video is not yet as up-to-date as the tool itself (that's cloud for you )   - http://youtu.be/TgazDL5nc9U


Q: How do I get access to the tool?

A: You can use the free license to have access to the tool. In fact, if you have an SCN/SDN account you already have direct access through this link:

Or you can go to www.sapstreamwork.com to create an account or simply logon using your Google account. In fact if you use Google Apps, you can add SAP StreamWork to your Google or gmail menu by selecting it from the Google marketplace (illustrated in the video).


Previous blog in series.

Next blog in series.

Link to first blog in this series.


This tool, embedded in SAP® StreamWork™ and deployed on the SAP Cloud platform is now out of beta so you can use it in production environments (i.e. it's dependable.) 
Tip: If you do not have time to read now, just scroll to the bottom for the graphical overview - <ELSE> read on.


Generally available = It's dependable and reliable.

Collaborative = Several people can work simultaneously on the same diagram, wherever you are. If you like Google Docs, we think you'll really like this.

Process = A sequence or flow of activities

Modeler = You sketch the process graphically, and adjust iteratively to ever better describe your intentions.


Once modelled you can track your process to make sure you reach your goal. The SAP development team did just that, using the tool to track the progress of development through q-gates, approvals, and acceptance tests before finally making it Generally Available. It is also the very first SAP software to be made generally available on the new SAP Cloud platform. Consistently achieving zero minutes downtime per month this platform is just perfect.

And last but not least it is useful = SAP has taken the suggestions from the beta usage and added these additional features since it first entered the beta stage.

So, if you test-drove this software during the beta stage, please pat yourself on the back and accept my thanks for providing feedback and making the tool so useful to the rest of the world (not just the SAP community.)


And this is where you'll find the tool now:




Here’s a summary of what SAP has added ….get ready to scroll because this list is long:

  1. A status flag can be set for any element in the diagram. This allows you to track the progress of processes or mini-projects. It also allows you to track the level of completeness of a process model with colleagues, so that you can see at a glance which steps in the process are in discussion and which have been agreed on. Hovering over an element you can see who and when the element was last changed by.

  2. Annotations can be created to document your model. Annotations, unlike sticky notes which are regarded as temporary remarks, are exported and imported with the model.

  3. Black-box pools to hide complex detail.

  4. Associations between annotations and other elements can be created to link the documentation with elements in the process diagram.

  5. Migration to SAP Cloud.

  6. Snap-to-grid to make it even easier to draw aesthetic processes.

  7. No need to configure certificate exceptions in your Web Browser.

  8. The user who created the StreamWork activity can lock a process model to prevent it being edited without locking the rest of the items in the activity.

  9. Ability to override the automatic line-connections so that a sequence can be connected to one side of an element to improve the aesthetics of the diagram.

  10. You can import BPMN files that you previously exported. This is useful for:

    • Creating re-usable process templates

    • Copying the diagram to a different StreamWork activity to collaborate with a different group of people (e.g. partners as opposed to colleagues)

    • Create a local versioning to revert to if you like (but importing will overwrite the current version)

    • Create a local backup copy just to be on the safe side.

  11. You can move a connector to a different element by simply

    • selecting the connector

    • dragging the end point (target or goal) to a different element (the new element changes color to show you’re on target)

    • release the end point on this new element.

  12. Internet Explorer supported.

  13. Horizontal pools and swimlanes.

  14. Intermediate events supported.

  15. Full use of screen estate. The canvas adjusts to screen resolution and orientation
    (Use CTRL + or CTRL- for browser zoom to understand the full advantage of this)

  16. Space-bar toggles between pan and select mode (very useful. Try it and find out for yourself)

  17. Ability to slide an element onto a connector so that the connector fuses around it instead of deleting and recreating the connectors. The previous connection is removed. This assumes that the element to be moved is connected in two or less places.

  18. Link to online help, system news and about section.

  19. Only contributors, not viewers, are shown in the contributor list

  20. Single-sign-on - so that an additional sign on to start the editing is not required. Just sign in to SCN or StreamWork or Google to get access

But the really good news.... despite this wealth of new capabilities it’s even simpler to use than ever before.


As an SCN user you have single-sign-on access to SAP StreamWork (bookmark https://streamwork.com/?saml_idp_id=accounts.sap.com) and you’ll find the tool in the “modeling menu”. And if you’ve already created process models, then you’ll find these in your activities just as you left them while the tool was in beta. It couldn’t be more convenient.

BTW: SAP colleagues - because you are Enterprise users of SAP StreamWork you can use this url: https://streamwork.com/sea/sap


Here's the process my colleague, Mariyan and I modeled and tracked live to get the approval from our SVP. I sat in the SVP's office in Germany with my laptop connected to a projector while Mariyan modeled in the same diagram from Bulgaria. The only technology we used was the web browser and a telephone - which is just so much simpler than setting up some sort of Web conference.


And if I'm going to repeat this process a lot, then I just export the results in BPMN (the de facto standard for process modeling) and import into SAP NetWeaver BPM to automate the process - admittedly that is overkill for this particular process, but for more sophisticated workflow processes, that is the perfect approach to take. You can use this tool to connect with not just colleagues, but experts in other areas, or even different companies, to ensure the process that you model is correct.

Here is an overloaded overview of the tool in condensed form for those of you who don't have time to read :-)


Finally, references to previous material:

For my friends in the SAP Business Workflow community: http://scn.sap.com/community/bpm/business-workflow/blog/2011/12/20/sap-business-workflow--you-can-use-the-gravity-modeler--you-can-you-can


Tutorial for getting started (but you won't find it in the beta tab anymore   :http://scn.sap.com/community/bpm/business-process-modeling/blog/2011/07/11/simple-way-to-model-processes-in-the-web


Two minute video to get an idea of how it can be used: http://www.youtube.com/watch?v=TgazDL5nc9U 
(I'd added SAP StreamWork to my Google account through the Google Apps marketplace)

Previous blog in series.

Next blog in series.





Google App, Google Doc are trademarks of Google Inc.
Internet Explorer is a trademark of Microsoft.

Recap of the first blog/ Introduction

The first part ("Making more out of your Business Blueprints – a corner stone within a systematical BPM approach") of this blog series described the concept of business blueprints and the different types of business processes. SAP’s new approach of visualizing business processes is done through the Business Process Model and Notation (BPMN). Thereby the business blueprint can be used as corner piece of a systematic business process management (BPM) approach within your entire enterprise. Learn now how the modeled business blueprints within the Business Process Blueprinting tool can be extended within SAP NetWeaver BPM.


Implement the business process extension with SAP NetWeaver BPM

Once business requirements or business processes have been transformed into a technical solution model, the exposed process logic is documented as a business blueprint(s). These business blueprints are quite often maintained in SAP Solution Manager. Because of the fact that SAP Solution Manager plays a crucial role within the entire life-cycle of handling business processes for most companies. Once a business blueprint has been stored in SAP Solution Manager, it can be used for various purposes:

  • Reality check whether a certain business process is executed according to its business blueprint as part of SAP Solution Documentation Assistant
  • Define extensions to blueprint processes and link them to their implementation in SAP NetWeaver BPM The latter case is exactly what this blog is about.


A previously modeled business blueprint, e.g. with Business Process Blueprinting tool, can be extended with additional process steps using an easy-touse BPMN editor. Using SAP NetWeaver BPM, the process model can then be transformed into an executable process. It is crucial to understand that not an entire business blueprint will run within the SAP NetWeaver BPM process engine, but only the parts which are assigned to the logical component “SAP NetWeaver BPMS”. Those modeled extensions are also stored implicitly within the SAP Solution Manager. As all models are now stored within SAP Solution Manager, the SAP Solution Manager also becomes the “single source of truth”. Hence, SAP Solution Manager becomes very crucial from a governance point of view. The following steps are illustrating the extension of a business blueprint with SAP NetWeaver BPM. Please note that this feature is enabled with EhP1 for SAP NetWeaver BPM 7.3 (currently in rampup).


Assumption: Having a business blueprint modeled and stored within SAP Solution Manager

The image below shows the process flow of a business process within a business blueprint project:



Extend the process flow by using the Business Process Blueprinting tool+ As earlier mentioned only certain pieces of a business blueprint will be implemented in SAP NetWeaver BPM. To indicate which parts are running on SAP NetWeaver BPM, the logical component “SAP NetWeaver BPMS” is used. When you place process steps inside this logical component, these can be later refined within SAP NetWeaver BPM for making them executable. image


Step 1: Configuration of the Solution Composer component Choose the right workspace and click on the +download +link, which will open a configuration file that contains the package ID.


Step 2: Search & Load the business blueprint from SAP Solution Manager Business blueprints are stored within the Solution Composer component of the SAP Solution Manager.  Hence, you need first to select the target SAP Solution Manager System on which the business blueprint is stored. Once this is done, you can easily search for the target business blueprint by entering a search string or leaving it blank for getting a complete list. The result will be displayed on the right hand side.



A double click on the selected project will show exactly the same content as the Business Process Blueprinting tool previously.




Detailing out a business blueprint by additional BPMN aspects By nature business blueprints do not contain all relevant information for having an executable model. Exception flows and other critical BPMN concepts are missing and can be modeled into the loaded business blueprint. Please note that only the process steps of the “SAP NetWeaver BPMS” pool can be enhanced by SAP NetWeaver BPM


Step 3: Create a composite process with the process steps to be executed Start by creating a new Composite Process directly from the process flow. Right-click on the pool to open the context menu, from which you can create a new composite process.



Choose a Development Component and a name for the new process. On the next screen, select the process steps that will be implemented by the composite process, as indicated by the following image. 



  After finishing the wizard, a blank process model is generated. Using the Process Composer tool, you can now create the process implementation which can be deployed and executed. In the background, a link is maintained between the process steps in the Business Process Blueprint and the composite process, so navigation between the two levels is possible. The following picture shows the final process model:



Step 4: “Generate and Publish Documentation” Once the composite process has been implemented, it can be uploaded into the SAP Solution Manager by clicking on “Generate and Publish Documentation” from the context menu of the process in the Project Explorer. By doing so the entire business process is now available as documentation within SAP Solution Manager.


Link to first blog in this series.


In a nutshell...

  1. You can model business processes in the Web using SAP StreamWork
  2. Getting access is free, painless, but you may need to wait a few days for activation
  3. The software is beta, but includes ways of safeguarding against any disaster
  4. If you want access then ask a couple of colleagues to join you. This helps you understand the collaborative advantage of such a tool
  5. Features are added on a monthly basis, so the shelf-life of this blog is limited.

In this blog I'll describe some of the simpler but also the more sophisticated aspects of this tool. Don't be scared off by the advanced features because these can be ignored if you don't want to use them. Feedback so far has been that the tool is very easy to use right from the very first click so just skip the bits that aren't going to be useful to you.

What is useful to you?

  • the basics, if you want to model the steps to reach a decision
  • the basics, if you want to describe graphically the steps to ensure a decision is executed effectively
  • the basics, for simple project-related processes (e.g. to get clarity on who needs to sign-off before moving to the next stage
  • the advanced features, for Business Process Experts wanting to model business process.

Using the tool...


Part 1 (Creating an initial diagram, simple modeling steps)

Logon to SAP StreamWork, either directly or using your Google ID. Create or enter the relevant activity (collaboration space) and add a process model using the tool catalog.

If you cannot see this tool in the catalogue in the beta tab then you haven't been given access (How to get access to the new SAP StreamWork tool for modeling process flows).


figure 1 - adding the tool to a SAP StreamWork activity.

Figure 1. Adding the tool.

Now you start to model your process. My recommendation here, irrespective of what type of process you are going to describe (how to reach a decision; an administrative workflow; a project flow...) start off by representing each of the roles involved using a swimlane. That is because the people-aspect of processes can often be the messiest so it is best addressing that aspect early on to avoid running into ambiguities or dead-ends later.

To add swimlanes you need to have a pool (makes sense doesn't it) and it is up to you whether your lanes flow left to right or top to bottom. That will be the direction that the process moves in.


Figure 2. Adding a lane

Figure 2. Adding a pool.

Figure 3. Adding a lane

Figure 3. Adding a lane.

As you can see from the screenshots, you can use the toolbar buttons and the context menu to do this. In most cases you have a choice of which to use, but pools are always added from the toolbar and the lanes are added using the context menu by hovering the mouse of the pool header. You can resize the pool and lanes and change the order by dragging and dropping using the pool/lane header just like you'd expect. You'll also notice that I've given the lanes and pool useful labels so that everything remains crystal clear.

Next, you define the process in more detail. In other words which steps  are needed in which order. You can add the steps (often called activities) one at a time and connect them together or use the context menu to create and connect in one single elegant step.

Figure 4. Adding steps/activities

Figure 4. Adding steps/activities

Figure 5. Adding more steps

Figure 5. Adding more steps/activities

If you want to change the the target or source of a connection just select it and move the end of it to the correct element, as shown in the following screenshots.

Figure 6. Moving a connector endpoint

Figure 6. Moving a connector endpoint


Figure 7. Connector endpoint moved

Figure 7. Connector endpoint moved


And if you make a mistake (or several mistakes) just use the undo toolbar button to go back to a previous state, or redo to go forward again. Later we'll see how several people can work on the same diagram at once, but the undo/redo feature will only undo your work, not work that someone else has done so there is no danger of accidentally undoing someone elses work.

Figure 8. Undo/Redo

Figure 8. Undo/Redo


If you want to insert a step into an existing connection then just slide it over onto the connector and drop it into place. You can even slide an element off one connection and slip it directly into another, such as when you want to move a check-point within your process.

Figure 9. Sliding an element into a connection

Figure 9. Sliding an element into a connection


Figure 10. Element has been slipped into the connection

Figure 10. Element has been slipped into the connection


Part 2 (Collaboration aspects)

The real power of this tool is the way it allows two or more users to work together on the same diagram. In this example, another user appears online (Alan Workflow-Rick - my alter ego) and I can invite him to throw in some ideas about the process without having to resort to a new tool to handle the web conferencing. This is really neat. There is no disruption and no lost time.  If necessary I just pickup the phone to make things even easier.

Figure 11. Collaborating on the same diagram in real-time.

Figure 11. Starting a collaboration on the same diagram in real-time.


Alan Workflow-Rick can not only see what I'm changing in the diagram but make changes himself (which I see in real time). For example, here he adds a sticky note to remind both of us that some additional research is needed.

Figure 12. Collaborating on the same diagram in real-time.

Figure 12. Collaborating on the same diagram in real-time.


To see who added what to the diagram you can switch on and off the contributor markers (the little colored symbols - each user being represented by his or her color)


Part 3 (Re-using the diagram in different ways)

One very useful feature is the ability to export your diagram. You can use this to create local backups or copies of different versions of the diagram. And by using the import feature you can import the diagrams into a different activity, so that it is shared by a different group of users. For example, in the scenario above, which has been extended to include a new pool representing a different company (the hosting provider), you may want to collaborate with this company without showing all the internal parts of your companies process. Simply import the diagram into a new activity, delete the internal bits and pieces and then invite colleagues in the hosting company to continue working on "public" aspects of the process.

Figure 14. Exporting and importing to share with a differrent user group.

Figure 13. Exporting and importing to share with a different user group.


You can also use this to create different alternatives for a given process, and to explore which of the candidates is the best for the job.


Part 4 (BPMN 2.0)

There is a standard which describes what different shapes represent to help reduce ambiguity in the diagrams (Business Process Management Notation - BPMN 2.0 - SAP is a leading author of this standard). This modeler conforms to this standard. But the standard also specifies the XML representation of the diagram, and this is the standard used for exporting the diagram.

This allows you to export your diagram and import it into different tools, such as SAP NetWeaver and tools from third party vendors because this is an open standard supported by virtually all business process management software vendors.

Because there are certain semantics involved in this standard (for example you cannot receive a message before it is sent) the graphic modeler can check the model to see that it is semantically correct. Of course, for the purpose of brainstorming about a particular process or project flow you don't want to be restricted by these semantics, but there may come a time when you want to verify the process created. Think of it in the same way you'd eventually want to do a spelling check for a document you have written. The editor supports this. All you do is switch on the modeling check and you will be shown where semantic rules are broken together with what needs to be corrected. It is off by default, because the main purpose of the tool is unrestricted process modeling in a free and easy manner without inhibiting anyone involved in the modeling.

Figure 15. For BPM Exports - BPMN 2.0 validation

Figure 14. For Business Process Experts - BPMN 2.0 validation


Part 5 (Tips and Tricks)

Most probably, you will only want to use very basic shapes, but if you are more adventurous or are invited to a diagram which contains a shape you don't recognize then click on the online help and you'll see good descriptions of the semantics behind the shapes as well as detail about the different editing operations possible.

Figure 16. Of course - detailed and useful online-help

Figure 15. Of course - detailed and useful online-help


And finally, and this really is one of the very important aspects of the collaborative process modeling, the SAP StreamWork application provides a host of powerful tools which you can link into your modeling work. So you can discuss the model in a threaded discussion; you can add links to web or intranet pages to improve clarity or upload related documents directly to the StreamWork activity; add action items to ensure that colleagues really do invest the effort that you need (such as an interview with one of the roles involved in the process)... The sky is the limit in terms of the collaboration with colleagues so your work is unbelievably efficient, even across different locations and time-zones. Of course, only people invited to the StreamWork activity will be able to view or join in so this effort is as private or public as you choose.

Figure 17. Full set of  SAP StreamWork collaboration tools

Figure 16. Full set of  SAP StreamWork collaboration tools

Other tips:

  • Use the browser accelerator key control minus (CTRL -) key to zoom out of the diagram to see more of it in less detail.
  • CTRL + does the opposite.
  • Use the spacebar to toggle between pan mode (skate around the diagram using the mouse to pan) and select mode (to select and manipulate objects).

So, even if you just want to sketch a process to reach a goal, get involved, give this tool a test run and see for yourself how useful it is in practice.


Previous blog in series.

Next blog in series.

The first session I attended at the June 25th SAP Inside Track Newtown Square was Peter McNulty's Building Agile Business Processes with Business Rules.  Click here to watch the recording.  I highly recommend it.

Peter discusses when to use and what are business rules?  Business rules are a set of decisions/calculation mechanisms applied to a business process.

Rules to apply this to would be:
1) calculation rules
2) validation rules
3) decision rules

Peter provided the example of creating a bid, sending to the supplier, receiving, evaluating and awarding the bid.  Peter said this would be for knowledge workers - rules are in the minds of people - this was conventional method 1.

Conventional rule #2 is rules are in Excel, but the problem is that it is not tied to a business process.  Convention method #3 is rules are hard coded to programs, but this is not "agile".

Why Business Rules Management (BRM)? 

It should be easy to make changes.  The domain expert models the rules, and then follow the cycle of refining, automating and managing the rules.

BRM has Rules Composer, Rules Management, and a Rules Engine that follows the Rete algorithm (homework: find out about Rete Rule).

It integrates to the Composition Environment

First you look at If-Then-Else; next decision tables.  In CE 7.2 you can visually model in Rules flow.

Peter asked if anyone in the room is using NetWeaver BPM; no one was.  The value proposition is that SAP delivers best practices.

BRM is included in BPM

Who maintains? 

BRM - the rules manager.  Rules are separated from the program logic, making it more "agile".   You do not need to go to the Developer for this. 

Two use cases for BRM: rules modeling, expose as a web service, and embed into BPM process.

Peter provided a demo of creating rules from scratch.  Peter explained that this was "agile" as it was tied to a business process. 

BRM is on the Java stack of the Composition Environment
Peter Presenting

Photo: Peter McNulty presenting, Courtesy of Craig Cmehil's flickr stream

Peter then began discussing Business Rules Framework Plus (BRF +)

BRF + can call workflow; version he was discussing was in Ehp 5 of NetWeaver 7.02.  Rules trigger an action.  BRF + is fully integrated in ABAP.

Peter provided a demo of BRF +, showing looking from a catalog, a pricing calculating, the expression builder exposed as a web service.

When to use what?
1) If your technology stack is ABAP, use BRF +
2) Look at location of application data
3) If you have SOA-distributed processes, use BPM

Look at features - Rete Rule; this ties into decision support in Java.

Peter said you could have mixed use of both BRM and BRF +

Useful blogs:
BRFplus a Business Rule Engine written in ABAP

Integrating with SAP Workflow

http://www.sap-press.com/products/BRFplus-%E2%80%93-Business-Rule-Management-for-ABAP-Applications.htmlThanks to Peter McNulty, for another great session at Inside Track NSQ!

In my previous blogs, I focussed on the changes ahead where we look at the way IT supports the Business. Business Process orientation, Architecture Frameworks and Services Oriented Architecture are jointly forcing us to change the way think. That is however not where it stops. In this blog, my colleague Martin Gerritsen and I will focus on changes we see in the way we work. Here as well, several initiatives that were planned during the last few years are coming together in the projects at hand.

Main changes are resulting from the shift towards process oriented and business driven IT support as well as from the stronger project governance from an architectural point of view. Combined with the availability of improved tooling (which we will discuss in the next blog in this series) this leads to new ways of working for a lot of SAP consultants and customers. Is it all new then? No, definitely not. We already worked within architectural boundaries, we did design the user interfaces and yes, we did some prototyping now and then. We might even have done some process modelling in the business blueprint phase...

Then ask yourself this: did we do all that in a strict and governed setting? Did we align our developers with the business? Did we have proper discussions on which IT solutions would support the business requirements best or did we discuss how we could mould and bend the IT solution at hand to cover the immediate business needs? Did we have project and solution architects leading the way and did we reuse existing functionality to the max? Or did we put together a team of functional and technical SAP consultants and hoped for the best?

Probably the truth is somewhere in between, but when embracing the process oriented way of working we will have to go through all that. Isn't that a big hassle? Yes, it is. At least the first time around it is. Depending on the level of BPM maturity, depending on the level of architecture governance in place, depending on the tools at hand and definitely depending on the expertise and focus of project members on process orientation it can be a struggle. The good news is: we don't have to do it all at once. We don't have to implement the entire Architecture Framework and Principles before the project starts. It is not mandatory to have all the Services Orientated Guidelines and Tools in place and we don't have to bring in all kinds of new expertise to do the trick. What we do need is a good plan. We need an IT strategy that supports the transition towards process orientation. We need clear decisions on how the organization wants tot deal with services. We need the willingness to start the process blueprint without thinking IT, focussing on the business process at hand. When we have that, we are off to a good start and we can start changing the way we work.


All this is described and supported by SAP's Methodology for Accelerated Transition towards SOA. This methodology clearly identifies the levels on which we have to make decisions and provides guidance on the activities we have to execute. All SAP's initiatives towards process orientation and SOA (SAP EAF, Enterprise SOA, SAP BPM, ESR, NetWeaver CE) are coming together is this approach.

On the Enterprise Level, the Strategy and Governance are providing the essentials. Here the SAP Enterprise Architect Framework and the Service Governance are discussed. When we have sufficient guidance from this level, we can check and develop the Landscape Foundation level, which provides us with the tools and components available for introducing BPM and SOA on the Project / Solution level. For all of you who are wondering how the product offerings from SAP are tied together in the BPM and SOA initiatives, the landscape foundation topic is an excellent chapter to spend some time on. With the boundaries set and the guidelines provided we can start working the projects.

In the Plan phase, the BPM methodology (as discussed in the SAP BPM curriculum) becomes eminent. The Business Process Blueprint (BPB) will be one of the main deliverables resulting from this phase. It is essential that the Business Process Blueprint provides the solution from the business perspective. It would be preferred if the blueprint would not consider any detailed IT restrictions. This will be hard to achieve since we are all limited by the boundaries of our landscape foundation. The BPB describes the Process Flow, the Actors, Rules and Tasks for the process components. It furthermore identifies the Process Performance Indicators (PPIs), Data Objects and the Business Services required in the process steps. With this established, the architecture guidelines will provide the required direction to map the business requirements to the available or planned IT solutions.

The next step is to start detailing and prototyping the design for the IT solutions in the Build phase. With NL for Business we use the model shown here as a reference for the way we work in this area, defining all the IT relevant components from the BPB.

NL4B Approach


Defining the IT solution components (User Interfaces, Process Integration Scenarios, Enterprise Services) from the business requirement provides the flexibility and re-useability required in today's IT solution architecture. In the Build (realization) and Run (Execution and Monitoring) phases, the details of these solution components are designed and developed. When designing and developing the components, prototyping is a preferred way to finetune the design and to keep the business involved. This is important, since we want to avoid surprises in the end when business ‘suddenly' realizes a new way of working is coming their way. We have to keep them aligned and in our experience, prototyping and intermediate deliveries which the business can evaluate are excellent methods to realize this.

Another important change is that the delivery of the IT solution will  be part of a continuous improvement cycle. We realize that not all companies are equally mature regarding BPM, but monitoring, evaluation and process improvement are part of the solution lifecycle and will therefore have to be addressed. PPIs defined in the BPB are key to this ongoing evaluation of the processes at hand. The flexible set up up of the IT solution with the reusable (and easily replaceable) components, creates the opportunity to effectively support changes in the business process.

Finally the roles that IT employees play will change. In several organizations in which this way of working was introduced we see old roles disappearing or changing and new roles evolving. Solution Architects are scaling up towards the enterprise level and therefore have to let go of their strong (single) application oriented focus. Introducing the bigger picture of the enterprise level and the SOA governance structures in the organization usually provides them with much appreciated opportunities and challenges once they have overcome their initial resistance to change. The application specialists are shifting towards process orientation and are aligning with the business they support. They will have to make the switch from solution functionality to business requirements in order to stay on top. New skills are required such as process modelling and business rule design. At the same time, the role of the more technically oriented solution specialists is broadening. Active involvement in the design phase is required for e.g. User Interface design and Service definition. This requires additional business knowledge and communication skills as well as expertise on new tools, technologies and products in the SOA provisioning and consumption areas.

So where a lot of activities and components are based on current best practices, process orientation does require changes in the way we work. We don't have to make these changes all at once. Initial projects will contribute to the development of the SOA governance and the establishment of a proper BPM practice. When skills and expertise improve and architecture and governance mature we are progressively moving towards process orientation.

I would very much like to thank my colleague Martin Gerritsen for his thoughts and input on this topic. He also joins me for the next topic in the Blog Series: change the tools we use.

So, in my last blog I introduced the 3 areas of change that are coming our way. A management mind shift towards process orientation introduces BPM Methodologies and Governance Principles into our world. With the business looking for better control over their processes and increased flexibility from supporting departments (such as IT) to support the agile, differentiating processes that are in center of attention these days, the heat is on. Not in a few years, but right now!


I hope that makes you think. Or at least that it makes you wonder how it will affect you.


For the past decade or so, the focus of IT has been on the company’s core processes. 2nd generation software focusing on stability and reliability for supporting the optimization of the core processes. ERP in optima forma. But times are changing and ERP and the optimized core processes are no longer the guarantee for success. Differentiation is found in agile, highly flexible and ad-hoc processes which are extending these core processes. These processes cross the boundaries of departments, applications, skills, even companies. They extend the familiar core processes and focus on new user groups. Business users, knowledge workers, sporadic ERP users (look at all the Self Service scenarios that are booming) and all the other non-typical, non-expert IT users from the boardroom to the truck driver and the maintenance engineer.


Extended Process NL4B

These users are lining up for IT support with the new technologies available. This provides the opportunity to extend the type and number of process steps supported by IT. It also provides the opportunity to improve the grip the business holds on their end-to-end processes by monitoring and analyzing their entire processes. And that is exactly what the business (and the market) wants!


Architecture Frameworks, BPM Methodologies and Governance Principles are settling in to support this request for process orientation. Architecture defines our playing field, BPM Methodology provides us with the game plan and the Governance Principles set the rules of the game. All it takes now is the players and an enthusiastic crowd to get the game going!

Getting all these elements to work together in a good fashion does require a strong focus. It is something that cannot be done over night. It is not a project with a start and an end date. Most elementary activities to get things going are not even IT related! During the classroom trainings for the BPM curriculum it becomes evident that one of the hardest tasks ahead, will be to break through the IT oriented way of thinking.


SOA Governance

For IT departments to become process oriented they have to let go of the application or functionality focused way of thinking. Defining projects around new technology, new functionality or new applications and enforcing it upon the business users is not the way. IT has to get out of the driver’s seat and let the business reclaim control over their processes and the way they want these processes to be supported by IT solutions.


For us, the IT minded people, it will be a dramatic change in the way we think. Of course, we still need all our skills and expertise to help the business. Of course we still require in-depth technical and functional knowledge of our IT solutions. But how we will adapt to the new process oriented era that will require improved Business-IT alignment, stronger communication efforts, closer collaboration with business users and involvement in end-to-end business process design and improvement? From several discussions within the SAP community, I know a lot people are resistant to the new roles defined by SAP regarding BPM and SOA governance, implementation and operation. From the day to day practice I can tell you: get used to them. Maybe the names will change, but the roles will definitely find their way in projects within the next few years or months. Yes, several roles will be executed by the same person using ‘old’ expertise and knowledge. Just remember that we will have to reinvent ourselves when re-aligning out IT initiatives to the business processes. The time to change the way we think is now!


BPM and SOA - Roles and Tools

During several projects in the past few years, I found that adoption of BPM and guidance of SOA initiatives is mainly restricted by the IT centric approach of IT departments and SAP Competence Centers. To enable IT consultants (both internal and external) to shift their focus from functionality to processes is the main challenge ahead! 

Already people are discussing the IT department of the future. Some even proclaim it will seize to exist when SaaS, SOA and BPM have landed. Maybe it want go that far, but at least it should make you wonder what lies ahead. Can we make that shift from application oriented, IT-driven initiatives towards process oriented, business driven IT support?


The playing field for IT professionals is rapidly changing. The business is reclaiming ownership of what is rightfully theirs: the end-to-end business processes that transcend the automated and IT supported process steps by far. In order to support them, we have to redefine our game plan and the rules we play by. Architecture Frameworks, BPM Methodologies, SOA Orientation and Governance Principles are all there to support the needed transition towards a Process centric IT. The tools are there to support the design, implementation, execution, monitoring and analysis of the end-to-end processes. Now it is up to the IT professionals to introduce them in their day to day business, to apply them in a proper fashion and to make this transition work.


What this means I will discuss in the next part of this series: change the way we work.

The principles of BPM and SOA approaches are settling in a wide variety of organizations. More and more organizations are shifting towards Process Oriented management styles and Service enablement is embedded into an increasing number of IT solutions. From a business perspective, process-orientation is used to increase the level of control the business has over it’s end-to-end processes. Extending the level of process control beyond currently automated process steps improves the insight in process performance. This enables managers to continuously monitor and improve the business processes and empowers them to contribute to the business strategy and objectives. 

Business and IT Strategy 


From an IT perspective, process orientation leads to improved definition of required support and capabilities. Transforming into Process-Centric IT support improves alignment with the business requirements and provides guidance for implementing and executing the IT strategy. Services Orientation and BPM Suites offer architectural guidelines and service, modeling and composition based tools for executing this strategy.


Several experts have already begun to explore the way BPM (as a management methodology) and SOA (as an IT architecture approach) are complementary and tools to support these claims (composition tools, model to execution tools, etc…) are becoming general available. Furthermore architecture frameworks, methodologies, semantics and standards are developing fast, growing into maturity. This provides a growing foundation and a proper resource base for establishing a BPM and SOA footprint in organizations. So, whether we want it or not, whether we plan for it or not, the principles underlying Enterprise Architecture, BPM and SOA are gradually coming our way. They are sneaking into our (IT) organization through business development, management principles and software deployment.

NL4B - Extended Process

That being said, what is it that is coming our way? Well, the experience of several BPM oriented projects in the past few years, tells us it is a whole new ball game that awaits us! First of all, the way we think about IT will drastically change. Architecture Frameworks, BPM methodologies and Governance principles will provide a new set of rules and guidelines by which we have to play the game. Furthermore, extending processes beyond the boundaries of our core applications will support new user groups in our organizations which will have different requirements regarding support user interaction. Finally, the shift from the application and functionality oriented business perspective to Process Centric IT initiatives will force a mind shift in the way we define our projects and design our solutions.



NL4B - Process Oriented Approach


Another change will have to be the way we work. The way we do projects, the roles and responsibilities in which we are organized, the phases in which we organize our projects, the direct interaction between developers and end-users based on prototyping and proof of concepts. Everything is subject to change and it’s time to wake up and realize nobody can evade these changes ahead of us!


SAP 5_layers


Finally and maybe most eminent, the tools we work with are going to change. Integrating the Business-to-Model and the Model-to-Execution layers is one of the main challenges we are dealing with (and were the alignment between BPM and SOA becomes evident). The tools to support this integration will be based on the same principles as the ones laid down by the approach: transparency and flexibility based on re-usability and compliance to standards. Composition and model driven development are the key words for this new line of (developer) tools that support the alignment between BPM and SOA. NetWeaver Composition Environment is SAP’s key answer to this requirement and definitely a promising one (see also the NetWeaver BPM whitepaper by Bruce Silver Associates).


In a series of 3 more blogs I will go deeper into these 3 areas of change, underlining the importance of getting involved now and providing insight in the day to day experience at customer projects with these new ways of working.


Filter Blog

By author: By date:
By tag: