This process describes the management of customer orders within a company, comprising both the registration and payment of incoming orders, as well as the process of packing and shipping these orders. For these tasks, our company deploys staff in their sales, warehousing, and shipment departments.
This process extends a legacy order management log.
At our company, customers place orders (place order) for different products in varying amounts. Each product type has a price and a weight. In the current market situation, there is an inflation that irregularly leads to an increase of prices. These price rises have a negative impact on customers’ purchasing power, i.e., on order volumes.
When a customer places an order, this order is assigned to an employee of our company’s sales department. To foster customer satisfaction, our company has a single-face-to-customer policy. This means that per customer there is one primary sales representative who ought to render all services related to that customer. If that first representative is unavailable, a second sales representative should take care of the order. Should this employee be also unavailable, the order has to be managed by another employee. The tasks of sales employees comprise the registration (confirm order) as well as payment processing (payment reminder, pay order).
In parallel to this, the shipment of goods is prepared. For this, the stock of our company is checked by an employee of the warehousing department for the availability of the ordered items. If necessary, the warehouser reorders the item (item out of stock, reorder item). Items ready for shipment are collected (pick item) for the placement into packages that are addressed to single customers. Here, it may happen that a package content relates to multiple orders, and order volumes are distributed over multiple packages.
After all items allocated to a package have been picked, the package is compiled by a warehousing employee (create package). Later on, this package is picked up by a shipment employee for transport (send package). According to another policy, a warehousing employee should provide assistance to the shipment employee in loading the package. However, oftentimes shippers act contrary to that policy and load packages alone or together with a second shipment employee.
Finally, the package is shipped. Deliveries may fail repeatedly (failed delivery) until successful delivery (package delivered).
The figure below depicts the process in a simplified manner, using an informal process notation to describe the control-flow and the involved object types. A formal description is given along with the artifacts in the next section.
A simulated event log can be downloaded here: SQLite
An overview of log properties is given below.
The behavior of the log is described by a fitting object-centric Petri net (OCPN). For readability, individual object type behavior is shown in projections of the OCPN. See below.
|Full object-centric Petri net|
The following are types of static object-to-object relations:
|Source Object Type||Target Object Type||Qualifier|
During the process, the following types of object-to-object relations (among others) can emerge at activity occurrences.
|Activity||Source Object Type||Target Object Type||Qualifier|
|create package||package||employee||packed by|
|send package||package||employee||forwarded by|
|send package||package||employee||shipped by|
Above data were simulated using this CPN.
To obtain simulated data, extract the linked ZIP file and play out the CPN therein, e.g. with the help of CPN Tools.
The playing out produces CSV files according to the schema of OCEL2.0. This Python notebook can be used to convert these files to an SQLite dump.
For a technical documentation of the simulation model, please open the attached CPN with CPN Tools and see the annotations therein.
Wil van der Aalst (legacy log)
To contribute, drop us an email! We are happy to receive your feedback.