This app template generates a process mining model for the SAP ECC Equipment Maintenance module. The scope of this module is the End-to-end maintenance operations; from the creation of a maintenance requirement to the closing of the work order along with all the states and tasks that are recorded in the work orders.
The Maintenance process begins with a new Notification, either generated simultaneously with the associated Work Order (eg. planned work orders) or manually by a user who has identified an issue with a specific piece of equipment that needs to be inspected or repaired. The Notification provides relevant information regarding the piece of equipment to be worked on, the type of work to be done, as well as relevant Work Center, Client and Plant information. The Notification will move through the outstanding, assigned and in process status before finally closing with the Work Order.
Once a Notification is reviewed and attended, a Work Order is created order to properly follow the maintenance process; an estimated cost is defined based on the work to be done and the work hours that will be consumed. Further description of the work is incorporated into the Work Order such as the type of Order, the Priority of said order, the controlling area and business area that will absorb the cost. In this section of the process the Work Order will be created, reviewed and released by a superior, the material availability will be verified and the operations required for the work order to be completed will be set.
With the creation of the Work Order, the Operations required for the Work Order to be completed are assigned. The responsible operator will then start working on the equipment and execute the Operations. Operations are confirmed, either partially or completely, depending on the result of the Operation. Once all operations are completed, the Work Order is confirmed and the process continues.
Once all Operations are completed and the Work Order is confirmed, a Technical Completion review is done on the equipment Work Order to verify that the Operations done were the ones expected and that they were done correctly. With this verification, the Work Order is closed, along with the the associated Notification.
The following tags are available by default.
Tag | Description | Business value |
---|---|---|
Rescheduled Work Order | Tags work orders that have had more than 1 change in their time planned field | A change in planned activities either shows and issue with execution or and error in the planning estimates. |
Multiple Work Orders by equipment | Identifies all those cases where an equipment has had consecutive work orders within a certain period. By default that period is 30 days. | This tag might show issues with the way maintenance is being executed or with the excessive wear of the equipment. |
Notification not closed | Identifies notifications that haven't reached the closed status | All notifications should be attended and closed in order to keep a proper maintenance for failing equipment. Open notifications could show inefficiencies in the first response to an equipment issue. |
Priority 1 or 2 work order with late confirmation | Select the priority 1 or 2 work orders that took more than certain time (5 days by default) between its release and the first time an operation is confirmed | Not attended high priority orders might require attention to identify assignment problems in the process or any other issue that could generate those delays. |
Operations without time planned | Identifies Work Orders with any associated Operation with time planned set as zero | An Operation should never have no time planned, as this implies that the activity requires no man hours in order to be completed, and it could also cause issues in the tools cost estimation logic. Could signal issues in Work Order planning. |
The following due dates are available by default.
Due date | Description | Business value |
---|---|---|
Notification assignment | Status of notification remains in "Outstanding notification" for more than certain time (7 days by default) | Unattended Notifications imply issues with equipment that aren't being treated, which could lead to bigger problems in the equipment |
Work order release date | Work order remains in “Created” status for more than certain time (7 days by default) | An inactive work order may show issues in the work assignment process |
Work Order completion date | Due date based on the Technical completion date vs the planned date for completion (Basic finish date) | Highlights cases when cases go past the planned work finish dates; identifies planning issues |
Work Order confirmation date | Difference between the Confirmation timestamp for a work order and its Scheduled finish date | Highlights confirmations that came in out of term; this shows an error in planning |
This app template uses the SAP Plant Maintenance module within the SAP Enterprise Central Component (ECC).
In general, you should follow the steps as described in Loading Data Using Theobald Xtract Universal (Automation Cloud) to set up data loading using Theobald Xtract Universal. Note: If you are using Automation Suite, make sure to select AUTOMATION SUITE
as the DELIVERY
option on the documentation page. In addition, select the Automation Suite version you are using to open the appropriate Loading Data Using Theobald Xtract Universal page.
destinations
, extractions
, and sources
. Copy the folders from the downloaded zip file to the config
folder of Xtract Universal. The location of this folder is [XU_installation_path]
/config.extract_theobald.ps1
script and the config.json
file. Unzip the content on the server where Theobald Xtract Universal is installed.config.json
file.The extraction script can be executed by calling the Powershell script extract_theobald.ps1
. In case you are not authorized to run scripts on your system, you can temporarily bypass the check by calling the following command before executing the script: Set-ExecutionPolicy Bypass -Scope Process
Depending on which fields have field history tracked, different change events will be recorded. Tracking of changes for fields and objects status must be configured for each table within SAP configuration. Recommended minimal setup is having the following table being tracked in CDPOS and JCDS tables:
The following data is required to establish the connection to the SAP server where the Plant Maintenance objects are located:
The SAP Equipment Maintenance app template works on the End-to-end maintenance operations process; from the creation of a maintenance requirement to the closing of the Work Order along with all the states and tasks that are recorded along the way.
The following table provides an overview of the different field types and their default format settings.
<Update/add field types with the correct descriptions.>
Field type | Description |
---|---|
date | yyyymmdd , if inverse then 99999999 - date = yyyymmdd |
time | HH24MISS |
double | Decimal separator: . (dot); thousand separator: none |
integer | Thousand separator: none |
text | N/A |
The following tables are extracted from the source system:
Input table for Maintenance Work Order master data, containing Work Order properties.
Field | Type | Description |
---|---|---|
MANDT | text | Client Identifier (Primary Key). |
AUFNR | text | Work Order identifier (Primary Key). |
EQUNR | text | Identifier of the equipment to be worked on. |
ILART | text | Indicates the type of activity to be executed. |
WAPOS | text | Describes which preventive maintenance tasks should take place regularly at a technical object or a group of technical objects. |
PLKNZ | text | Indicates the planning state of the Work Order, planned, unplanned or immediate. |
WARPL | text | Indicates the associated maintenance plan of the Work Order. |
IWERK | text | Indicates the Plant that assigns and schedules the Work Order. |
IPHAS | text | Indicates the Maintenance phase the Work Order is currently on. |
QMNUM | text | Notification identifier. |
AKKNZ | text | Characterize the technical characteristics of the order. |
PRIOK | text | Identifies the priority of the Work Order. |
ARTPR | text | Indicates the type of Priority assigned to the Work Order, PM is the standard type. |
GEWRK | text | Identifies the Work Center associated to the Work Order. |
Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was join with AUFK table to bring the filter by date when loaded from source
Input table for the Production Planning Work Order master data. It contains Work Order properties.
Field | Type | Description |
---|---|---|
MANDT | text | Client Identifier (Primary Key). |
AUFNR | text | Work Order Identifier (Primary Key). |
GLTRP | date | Indicates the date by which the Work Order should be completed. |
GLUZP | time | Indicates the time by which the Work Order should be completed. |
GETRI | date | Indicates the date by which the Work Order was completed. |
GEUZI | time | Indicates the time by which the Work Order was completed. |
AUFPL | text | Foreign key which identifies activities or operations need to be carried out to close the Work Order. |
GLTRS | date | Identifies the planned date for the Work Order to be completed. |
GLUZS | time | Identifies the planned time for the Work Order to be completed. |
Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was join with AUFK table to bring the filter by date when loaded from source
Input table for the Operations data. It contains Operations description and times.
Field | Type | Description |
---|---|---|
MANDT | text | Client Identifier (Primary Key). |
APLZL | text | Operation (Primary Key). |
AUFPL | text | Operation set identifier (Primary Key). |
OBJNR | text | Identifier of the operation object. |
ARBID | text | Identifier of the assigned center of the Operation. |
Filtering: This table gets filtered by "STEUS" field. Extractor is only bringing records when value is not like 'QM%'_
Input table for the Planification of an Operation. It contains Operations time planned.
Field | Type | Description |
---|---|---|
MANDT | text | Client Identifier (Primary Key). |
APLZL | text | General counter for order (Primary Key). |
AUFPL | text | Routing number of operations in the order (Primary Key). |
DAUNO | double | Normal duration of the activity. |
|
Input table for general Work Order master data. It contains Work Order properties and foreign keys.
Field | Type | Description |
---|---|---|
MANDT | text | Client Identifier (Primary Key). |
AUFNR | text | Work Order Identifier (Primary Key). |
GSBER | text | Business of the assigned area. |
BUKRS | text | Identifier of the Company for whom the Work Order is being executed. |
KOKRS | text | Controlling area of the Work Order, cost center to which the Work Order will be computed. |
ERDAT | date | Date the Work Order was created. |
ERFZEIT | time | v Time the Work Order was created. |
KTEXT | text | Description of the Work Order. |
USER4 | double | Estimated cost of the Work Order. |
STORT | text | Location of the Work Order. |
SOWRK | text | Location of the plant the Work Order is assigned to. |
OBJNR | text | Identifier for the object (Work Order) status changes, foreign key to JCDS table. |
WAERS | text | Identifies the currency type being used for the Work Order. |
AUART | text | Identifies the type of PM Order referred. |
WERKS | text | Plant that executes the Work Order. |
IDAT2 | date | Date on which the Work Order was closed. |
VAPLZ | text | Main work center for maintenance tasks. |
ERNAM | text | Creator of the Work Order. |
Filtering: 'ERDAT' is used for time-based filtering. This table is also filtered by "AUTYP" field which must have value = '30'
Header input table for object changes.
Field | Type | Description |
---|---|---|
MANDANT | text | Client Identifier (Primary Key). |
CHANGENR | text | Change record identifier (Primary Key). |
OBJECTCLAS | text | Object class category (Primary Key). |
OBJECTID | text | Object value (Primary Key). |
UDATE | date | Date the change was executed. |
UTIME | time | Time the change was executed. |
USERNAME | text | User who executed the change. |
Filtering: 'UDATE' is used for time-based filtering.
Log table for field change events for Work Orders, Operations and Notifications.
Field | Type | Description |
---|---|---|
TABKEY | text | Change table record identifier (Primary Key). |
CHNGIND | text | Identifies the type of change made (insertion, update) (Primary Key). |
MANDANT | text | Client Identifier (Primary Key). |
CHANGENR | text | Change record identifier (Primary Key). |
FNAME | text | Field which was updated (Primary Key). |
OBJECTCLAS | text | Object class category (Primary Key). |
OBJECTID | text | Object value (Primary Key). |
TABNAME | text | Table name where the change was executed (Primary Key). |
VALUE_NEW | text | Value which was updated into the table. |
VALUE_OLD | text | Value which was updated out of the table. |
Filtering: 'FNAME' != 'KEY' and 'TABNAME' in ('QMEL', 'AFIH', 'AFKO', 'AUFK', 'AFVC')
Log table that contains all status changes for Work Orders, Operations and Notifications.
Field | Type | Description |
---|---|---|
CHGNR | text | Change number record identifier (Primary Key). |
MANDT | text | Client Identifier (Primary Key). |
INACT | text | Indicates if the status is currently active. |
OBJNR | text | Object number where the Status change will be impacted. |
STAT | text | Status to which the Object was update to. |
UDATE | date | Date on which the change was made. |
UTIME | time | Time on which the change was made. |
USNAM | text | User that executed the change. |
Filtering: 'UDATE' is used for time-based filtering. Additionally,STAT != 'I0001' INACT = '' or is null.
Transactional table for the notifications.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
QMNUM | text | Notification identifier (Primary Key). |
ERNAM | text | Creator of the Notification. |
QMDAT | date | Date of the Notification. |
QMTXT | text | Description of the work required by the Notification. |
MZEIT | time | Time of the Notification. |
OBJNR | text | Object number of the Notification record. |
AUFNR | text | Order number of the Notification record. |
Filtering: "HERKZ" field must take any of the following values:'01', '02', '03', '04'._ and 'AUFNR' is not null.
Input table for Person/Address Assignment (Business Address Services) data.
Field | Type | Description |
---|---|---|
ADDRNUMBER | text | Address Number of the Business (Primary Key). |
CLIENT | text | Client number identifier (Primary Key). |
DATE_FROM | date | Date from which record applies (Primary Key). |
NATION | text | Identifier for International Addresses. |
PERSNUMBER | text | Identifier of the person/user (Primary Key). |
DATE_TO | date | Date to which record applies. |
DEPARTMENT | text | Department the user is assigned to. |
FUNCTION | text | Function or role of the user. |
Filtering: 'NATION' = 'I' or is null or = ''.
Input table for Persons (Business Address Services) data.
Field | Type | Description |
---|---|---|
CLIENT | text | Client number identifier (Primary Key). |
DATE_FROM | date | Date from which record applies (Primary Key). |
NATION | text | Identifier for International Addresses (Primary Key). |
PERSNUMBER | text | Identifier of the person/user (Primary Key). |
DATE_TO | date | Date to which record applies. |
NAME_FIRST | text | Name of the User. |
NAME_LAST | text | Last name of the User. |
Filtering: 'NATION' = 'I' or is null or = ''.
This input table relates the Equipment descriptions to the model.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
EQUNR | text | Equipment number identifier (Primary Key). |
EQKTU | text | Name/description of the related equipment. |
SPRAS | text | Language key identifier. |
Filtering: 'SPRAS'= var("language").
Input table for plant information.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
WERKS | text | Plant code identifier (Primary Key). |
NAME1 | text | Plant name. |
Input table for Order Type Descriptions data.
Field | Type | Description |
---|---|---|
CLIENT | text | Client number identifier (Primary Key). |
SPRAS | text | Language key identifier (Primary Key). |
AUART | text | Order code identifier (Primary Key). |
TXT | text | Translation of the Order Type. |
Filtering: 'SPRAS'= var("language").
Input table for Conversion Factors data.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
KURST | text | Represents the exchange rate type used for the conversion (Primary Key). |
FCURR | text | Original currency (Primary Key). |
GDATU | date | Date in which the record was created (Primary Key). |
TCURR | text | Destination currency of the exchange rate (Primary Key). |
FFACT | double | Ratio for the "From" Currency Units. |
TFACT | double | Ratio for the "To" Currency Units. |
Filtering: 'KURST' = var("exchange_rate_type").
Input table for Exchange Rates data.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
KURST | text | Represents the exchange rate type used for the conversion (Primary Key). |
FCURR | text | Original currency (Primary Key). |
TCURR | text | Destination currency of the exchange rate (Primary Key). |
GDATU | date | Date on which the exchange rate is valid (Primary Key). |
UKURS | text | The absolute exchange rate on the specific date. |
Filtering: 'KURST' = var("exchange_rate_type").
Input table for Decimal Places in Currencies.
Field | Type | Description |
---|---|---|
CURRKEY | text | Currency identifier (Primary Key). |
CURRDEC | integer | Number of decimal places. |
Filtering:
This input table relates the Status names to the model.
Field | Type | Description |
---|---|---|
ISTAT | text | Equipment number identifier (Primary Key). |
SPRAS | text | Language key identifier. |
TXT30 | text | Name/Description of the related Status. |
Filtering: 'SPRAS'= var("language") and 'TXT30' != ''.
Input table for controlling area information.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
KOKRS | text | Controlling area key identifier (Primary Key). |
BEZEI | text | Billing area description. |
Filtering:
Input table for User type information.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
BNAME | text | User key identifier (Primary key). |
USTYP | text | Classification of the user. |
Input table for User Name/Address Key Assignment data.
Field | Type | Description |
---|---|---|
MANDT | text | Client number identifier (Primary Key). |
BNAME | text | User key identifier (Primary key). |
ADDRNUMBER | text | Address Number of the Business. |
PERSNUMBER | text | Identifier of the person/user. |
This file is used to set the users that are automated.
Field | Type | Description |
---|---|---|
User | Text | Name of a user. |
Automated | Text | Indicates whether the user is a person or automation. |
This file is used to set activities that are automated.
Field | Type | Description |
---|---|---|
Activity | Text | Name of an activity. |
Automated | Text | Indicates whether the activity is manually executed or automated. |
The Activity configuration file is used to translate activities and assign activity order.
Field | Type | Description |
---|---|---|
Foreign_key_id | Text | Foreign key to link to an activity. |
Entity | Text | Entity to which the activity belongs. |
Activity_name | Text | Name of the activity. |
Activity_order | Text | Ordering of activity. |
Variable | Type | Description |
---|---|---|
schema_sources | string | Specifies the schema in the database where the source tables will be located. |
start_date | date | Valid start date for both Snowflake and SQL Server. |
language | string | This variable specifies the system language, set accordingly to the default SAP system language. Default value is E (English). |
use_operation_events | boolean | This variable adds additional Operation entity events, these events are usually created , updated and confirmed simultaneously, and the addition of these can interfere in the interpretation of the process ; in case these events are not essential, set the variable to false . Default value is true . |
display_currency | string | This variable defines the currency to be displayed. Default value is USD . |
exchange_rate_type | string | Defines the exchange rate to be applied on client currency in order to convert it into a single currency. Default value is M . |
additional_days_for_notification_assignment_due_date | integer | Amount of days to be added to the creation of the notification to set the due date. Default value is 7 . |
additional_days_for_work_order_release_due_date | integer | Amount of days to be added to the creation of the Work Order to set the due date. Default value is 7 . |
days between_orders | integer | Days between consecutive orders for the same equipment. Default value is 30 . |
days_to_confirm_priority_work_orders | integer | Allowed time (in days) that a priority 1 or 2 Work Order can take before being worked on (partially confirmed). Default value is 7 . |
The following diagram shows all entities that are used for the process.
Entity | Input Data |
---|---|
Notification | QMEL |
Work Order | AUFK,AFIH,AFKO,EQKT, TCURR,TKA01,T001W, T003P |
Operations | AFVC |
Activity | Entity | Description |
---|---|---|
Create Notification | Notification | Notification is generated in the system. Identified through the Created_date field on the Notification entity. |
Change Notification status to Status |
Notification | Notification status is modified. Identified based on the JCDS object record |
Change Notification Field |
Notification | Indicates a change in relevant fields in the Notification |
Create Work Order | Work Order | Work Order is created in the system. Identified through the Created Date field in Work Order |
Change Work Order status to Status |
Work Order | Work Order status is modified. Identified through the JCDS object record |
Change Work Order Field |
Work Order | Indicates a change in a relevant field in the Work Order. The change is registered through the CDPOS and CDHDR tables |
Change Operation status to Status |
Operation | Operation status is modified. Identified based on the JCDS object record |
Work Order entity definition
Work Order is a single entity comprised of three different SAP objects, not including master data. The AUFK (Work Orders), AFIH (Maintenance Orders), and AFKO (Plant Production Orders) all represent a single record/Case Id, but are classified differently in order to be processed. Changes to one imply changes to the other, that is why they are considered a single Work Order
entity. Every object provides a different attribute or key which is necessary for the model.
Case Value attribute Case value attribute gets populated based on header information in the relevant SAP objects. Case value is defined based on the Estimated cost of a Work Order but this is an approximate value the client manually inputs and can be null if the client is not using it. There is no other simple way to get a value for the WO.
Case Status Definitions Case status is defined by the final status of the Work Order, registered in the JCDS table. Despite the AUFK object having a specific field referencing the status, ASTNR field does not provide a reliable status for each case represented, thus the status was obtained from the last active Work Order status in the change log.
No Event Start
Event start information is not present.
Data not recorded in CDHDR/CDPOS or JCDS objects
Change and Status events have to be configured in the environment in order to be tracked; these configurations are not retroactive to previously registered records.