<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Kongens Lyngby, Denmark
* Corresponding author.
$ victor.gallego@ut.ee (V. Gallego-Fontenla); fredrik.milani@ut.ee (F. Milani); marlon.dumas@ut.ee (M. Dumas)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>dynamik: A Tool for Performance Drift Detection in Business Processes</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Victor Gallego-Fontenla</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Frederik Milani</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marlon Dumas</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Download/Demo URL Documentation URL</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Tartu</institution>
          ,
          <addr-line>Tartu</addr-line>
          ,
          <country country="EE">Estonia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2024</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>Business processes are often subject to unplanned changes that afect their performance, also known as performance drifts. For example, some resources being reallocated to diferent teams, or changes in batching policies, may result in higher cycle times. This paper presents dynamik: a Web-based tool that analyzes event logs of business processes to detect drifts in the cycle time of a process, and to identify possible causes of each detected drift. dynamik is based on a collection of factors that may afect cycle time, derived from previous work on resource modeling and waiting time analysis. Statistical testing is used to determine which of these factors are significantly diferent before and after each observed performance drift.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;business process change</kwd>
        <kwd>process performance</kwd>
        <kwd>performance drift</kwd>
        <kwd>cycle time</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Source code repository
Screencast video
Value</p>
    </sec>
    <sec id="sec-2">
      <title>1. Significance and Innovation</title>
      <p>
        Business processes are prone to change, be it as a result of planned process redesign [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], or due
to external factors (e.g. increase in customer demand) or changes in resource behavior [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ].
Examples of unplanned changes include resources adapting the way they perform activities in
response to workload variations, resources being replaced by new ones who bring in diferent
work practices, workarounds being put in place to deal with new types of cases, or changes in
the ratio between diferent case types [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. From a tactical management perspective, unplanned
changes are particularly relevant when they afect key performance metrics, such as labor cost
or cycle time. When unplanned changes lead to such performance drifts, analysts and managers
need to understand the root causes of these drifts and implement corrective actions.
      </p>
      <p>
        The dynamik tool analyzes event logs of business processes to detect performance drifts
and to provide a list of possible causes of each detected drift. Specifically, dynamik focuses
on detecting and explaining drifts in cycle time. dynamik relies on a decomposition of cycle
time into factors, summarized in Table 1. This decomposition starts from the observation that a
change in cycle time may come from changes in processing time or changes in waiting time.
In turn, changes in processing time may stem from changes in resource behavior, or changes
in the distribution or nature of the activities in the process. To model changes in resources
behavior, dynamik relies on the concept of resource profile [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], which it extends with a dual
concept of activity profile . On the waiting time front, dynamik relies on the waiting time causes
identified in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], viz. resource contention, resource availability, prioritization, and batching.
Resource contention is modeled using notions from queuing theory, viz. arrival rate and service
rate. Thus, dynamik consolidates a range of previous work in the field of resource behavior and
waiting time analysis, into an integrated tool for performance drift detection.
      </p>
    </sec>
    <sec id="sec-3">
      <title>2. Architecture</title>
      <p>dynamik is a Web application (cf. Figure 1) with a responsive Web frontend, and a
coordinatorworker backend architecture. This backend architecture enables the tool to scale horizontally
(by adding worker nodes) and to provide some level of error resilience (e.g. in case of temporary
failures on the coordinator or worker nodes).</p>
      <p>Users interact with the Web frontend to upload log files and to submit requests to detect and
analyze performance drifts. Each request is called an experiment. The coordinator (in the Web
The utilization index quantifies a resource’s activity level within a
process. It is calculated as the percentage of time the resource is
actively engaged in process tasks relative to its total availability.</p>
      <p>Performance deviation measures the extent to which a resource’s
activity execution time deviates from the average.</p>
      <p>The collaboration index measures how frequently two resources
work in the same process instance.</p>
      <p>The circadian efort distribution shows the relative frequency
with which resources finish activity instances for each hour of
the week.</p>
      <p>The work distribution shows the amount of workload put into
executing each activity.</p>
      <p>The activity frequency measures how frequently an activity is
executed during a period of time.</p>
      <p>The circadian arrival distribution, which measures the
distribution of arrivals of activity instances over the week.</p>
      <p>The co-occurrence index measures the number of cases two
activities appear in the same process instance.</p>
      <p>The complexity deviation measures the time it takes to execute
one specific activity with respect to the average time it takes to
execute all activities.</p>
      <p>The efort demand measures which percentage of the total
processing time is dedicated to execute one specific activity.</p>
      <p>Resource calendars capture the availability schedules for the
resources, showing when a resource is on- or of-dutty during the
week, with a hourly granularity.</p>
      <p>The arrival rate describes how fast new cases arrive at the system.</p>
      <p>The unit is the number of new cases per hour.</p>
      <p>The service rate describes how fast cases are completed in the
process. The unit is the number of cases completed per hour.</p>
      <p>Prioritization policies are a set of rules that determine when an
activity instance should be executed out of the standard FIFO
order. These rules can consider both mandatory activity instance
attributes like activity name and domain-specific attributes such
as client tier or country of origin.</p>
      <p>Batching policies define when groups of activity instances are
executed together instead of individually upon enablement. These
policies can be organized into a two-level hierarchy:
1. Batch creation policies: Determine which activity
instances are grouped into batches. Common factors include
activity name, but also domain-specific attributes.
2. Batch firing policies: Specify when a batch is executed.</p>
      <p>Typical rules consider batch size, maximum waiting time
for instances within the batch, or absolute time restrictions
(e.g., executing every Sunday at 12:00).
backend) decomposes each incoming experiment into a set of jobs. Examples of jobs include
detecting all performance drifts in a log, checking if a given drift may be due to changes in
batching policies, or checking if a drift may be due to changes in the case arrival rate. The
coordinator publishes the jobs to be performed in a message queue. It then periodically checks
for events indicating the completion of a job (called live updates) in another message queue. A
pool of workers continuously monitors the queue of inbound experiments. Upon receiving a
job, a worker consumes it and executes the associated drift detection or analysis script.</p>
      <p>dynamik finds performance drifts using a sliding window approach. It slides a cursor across
the event log timeframe. At each time point, it tests if the distribution of cycle times in the
window preceding this time point is statistically diferent from the cycle time distribution in
the succeeding window. To avoid false positives, the detection of the drift is delayed until it has
been confirmed for several consecutive time points, determined by a parameter. For each causal
factor in Table 1, dynamik then applies statistical testing to determine if there is a significant
diference in this factor in the preceding and the succeeding time windows. Each such factor is
then reported back as a possible cause.</p>
      <p>Upon completion, the worker writes the results of the job into a file storage and publishes a
live update in the corresponding message queue. When the coordinator in the Web backend
detects a new live update, it fetches the corresponding results from the storage and pushes
it back to the Web frontend. The Web frontend is updated every time it receives a result (e.g.
whenever it receives an update with an additional potential cause of a performance drift).</p>
      <p>The components of dynamik are outlined below:
The Web application: providing a user interface for event log upload, experiment creation,
and result visualization.</p>
      <p>The dynamik workers: A set of Python processes that execute the performance drift detection
algorithm, and the various change analysis algorithms (for each of the factors listed in
Table 1).</p>
      <p>The message broker: Implemented using RabbitMQ, this queue facilitates asynchronous
communication between the web application and the workers, enabling scalable and decoupled
system components.</p>
      <p>The shared file storage: A shared folder where logs and experiment results are saved for
long-term retention and analysis, where both the interface and the workers have access.</p>
    </sec>
    <sec id="sec-4">
      <title>3. Functionality</title>
      <p>Below, we present the main functionalities of dynamik. Specifically, we focus on activity instance
log upload, experiment configuration, results overview and change details.</p>
      <p>Activity instance log upload: dynamik requires a CSV file containing an activity instance
log, with a maximum size of 50MiB. Users can upload files through a dialog or
drag-anddrop. The file must include columns for case, activity, resource identifiers, and start/end
timestamps. To calculate waiting times, dynamik leverages the enablement timestamp,</p>
      <p>
        indicating when an activity becomes executable from a control flow perspective. While
this data is often missing from the log, dynamik can automatically compute it using
the Split Miner concurrency oracle [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. By analyzing execution traces, the concurrency
oracle identifies concurrent activities within the process. With this information, dynamik
assigns the enablement timestamp for each activity instance to the end timestamp of the
immediately preceding non-concurrent activity instance. If no such preceding activity is
found, the enablement timestamp is set to the start timestamp, resulting in a zero waiting
time for that instance.
      </p>
      <p>Experiment configuration: Following log file upload, users configure the experiment using
a guided wizard. The first step involves mapping CSV columns to activity instance
attributes. The next step focuses on drift detection algorithm parameters: window
size (determining the reference model and current behavior timespan), drift magnitude
(minimum diference for drift detection), and number of warnings before confirming a
definitive drift. Larger window sizes detect larger changes, while drift magnitude allows
for fine-tuning sensitivity. The number of warnings controls the duration of a drift before
notification, filtering out temporary changes. The final wizard step allows users to review
and confirm the configuration. If necessary, they can go back and make changes.
Results overview: Once a request is submitted, dynamik provides an interface with the
execution status and the results overview. This interface is updated incrementally, every
time a drift or a cause of a drift is detected. As the experiment identifier is unique and
invariant, the user can save the URL so they can access the drift detection results later, or
they can share the URL with others.</p>
      <p>Change details: The last view provided by dynamik is the change details screen (Figure 2).</p>
      <p>This screen shows the details of each potential drift cause, using a set of plots. The tool
uses line plots for the time distributions, bar plots for frequency distributions, heat maps
for circadian distributions and relations between pairs, and plain text for simple indicators
such as the arrival or service rate or the batching and prioritization policies.
We have tested dynamik on real-life logs, including the logs of the 2012 and 2017 Business
Process Intelligence Challenge.1 The tests have shown that dynamik can handle event logs with
up to around 500K activity instances. The tool identifies performance drifts that appear to be
relevant, although they have not yet been validated with domain experts. We have also tested
dynamik on synthetic logs containing explicitly injected performance drifts (with known causes).
In this setting, dynamik achieved a precision of 67%. However, the recall is low (33%), meaning
that it misses possible causes of drift, particularly when the efects of these missed causes are
“hidden” by the causes that are correctly identified. In future work, we plan to evaluate the
tool’s usefulness and usability with end users and to evolve it based on user feedback.</p>
      <p>The links to access the tool and the source code, and the link to a video demonstration,
are provided in the metadata table of this paper. The activity instance log used in the video
demonstration is available at: https://owncloud.ut.ee/owncloud/s/DCE2kQ4TY5si2nJ. The
example result shown in the video can be accessed at: http://dynamik.cloud.ut.ee/results/demo.</p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgments References</title>
      <p>This research is supported by the European Research Council (PIX Project).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
            ,
            <given-names>A. H. M.</given-names>
          </string-name>
          ter Hofstede (Eds.),
          <source>Process-Aware Information Systems: Bridging People and Software Through Process Technology</source>
          , Wiley,
          <year>2005</year>
          . doi:
          <volume>10</volume>
          . 1002/0471741442.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B.</given-names>
            <surname>Weber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Reichert</surname>
          </string-name>
          , S. Rinderle-Ma,
          <source>Change Patterns and Change Support Features - Enhancing Flexibility in Process-aware Information Systems, Data and Knowledge Engineering</source>
          <volume>66</volume>
          (
          <year>2008</year>
          )
          <fpage>438</fpage>
          -
          <lpage>466</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.datak.
          <year>2008</year>
          .
          <volume>05</volume>
          .001.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R. P. J. C.</given-names>
            <surname>Bose</surname>
          </string-name>
          ,
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
            , I. Zliobaite,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Pechenizkiy</surname>
          </string-name>
          ,
          <article-title>Dealing With Concept Drifts in Process Mining</article-title>
          ,
          <source>IEEE Transactions on Neural Networks and Learning Systems</source>
          <volume>25</volume>
          (
          <year>2014</year>
          )
          <fpage>154</fpage>
          -
          <lpage>171</lpage>
          . doi:
          <volume>10</volume>
          .1109/TNNLS.
          <year>2013</year>
          .
          <volume>2278313</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
          </string-name>
          ,
          <source>Process Mining - Data Science in Action, Second Edition</source>
          , Springer,
          <year>2016</year>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>662</fpage>
          -49851-4.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pika</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Leyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. T.</given-names>
            <surname>Wynn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. J.</given-names>
            <surname>Fidge</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. H. M. ter Hofstede</surname>
            ,
            <given-names>W. M. P. van der Aalst</given-names>
          </string-name>
          ,
          <source>Mining Resource Profiles from Event Logs, ACM Transactions on Management Information Systems</source>
          <volume>8</volume>
          (
          <year>2017</year>
          ) 1:
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          :
          <fpage>30</fpage>
          . doi:
          <volume>10</volume>
          .1145/3041218.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>K.</given-names>
            <surname>Lashkevich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Milani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Chapela-Campa</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Suvorau</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Dumas, Unveiling the causes of waiting time in business processes from event logs</article-title>
          ,
          <source>Information Systems</source>
          <volume>126</volume>
          (
          <year>2024</year>
          )
          <article-title>102434</article-title>
          . doi:https://doi.org/10.1016/j.is.
          <year>2024</year>
          .
          <volume>102434</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Augusto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Conforti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Rosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Polyvyanyy</surname>
          </string-name>
          , Split Miner:
          <source>Automated Discovery of Accurate and Simple Business Process Models from Event Logs, Knowledge and Information Systems</source>
          <volume>59</volume>
          (
          <year>2019</year>
          )
          <fpage>251</fpage>
          -
          <lpage>284</lpage>
          . doi:
          <volume>10</volume>
          .1007/s10115-018-1214-x.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>