--- alias: user-guide-maintenance-plan-index tags: - maintenance description: "This documentation outlines the structure and management of maintenance plans, including activity types and associated workflows" --- # Maintenance Plan :lock: MaintenancePlan.**Show** ## Overview A **Maintenance Plan**, together with the **Maintenance Activity Order (MAO)** are at the core of Maintenance Management. !!! info Maintenance Management is a Critical Management optional module. The Maintenance Management module provides functionality to manage maintenance plans that consist of Maintenance Activities which, in turn, can be: * **Time Based** - the Activity is requested periodically, according to a defined time interval. * **Usage Based** - the Activity is requested when a set number of events have happened to a certain equipment. * **Usage and Time Based** - the Activity is requested whenever one of the two previous conditions applies. * **Ad-hoc** - the Activity is to requested whenever the user so chooses. A particular **Maintenance Plan** is a reusable object that is associated to **Areas**, **Materials**, **Resources** or **Containers** via a **Maintenance Plan Instance (MPI)** object. An **MPI** object has an owner role which is responsible to manage that particular **MPI**. Each **Maintenance Activity**, in turn, has a role which defines the personnel who are qualified and authorized to perform maintenance tasks. **Areas**, **Materials**, **Resources** or **Containers** can be associated with multiple **MPIs**. However, the same objects can only be associated once with the same **Maintenance Plan**. There is a possibility of extending a **Maintenance Plan** so that it can be associated to more entities in the system apart from the original base entities (**Areas**, **Materials**, **Resources** and **Containers**). For that end, a new **Feature** would have to be created in the system, called MaintenancePlan.**Associate**[*EntityName*]. For more information on how to create custom **Features**, please go to the [[user-guide-security-features]] page in the **Administration** section of the User Guide. A **Maintenance Activity** defines the nature of the activity trigger (**Time, Usage, Time and Usage** or **Ad-hoc**), as well as the **Checklist** to be followed while performing the maintenance task. It also defines the bill of parts, in the form of a **BOM**, to be used in the maintenance job. It can also define a **Data Collection** to send data to. In addition, it is possible to define the labor requirements for a particular **Maintenance Activity**. An instance of a **Maintenance Activity** is called **Maintenance Activity Order (MAO)**. !!! info For a Maintenance Activity with a ScheduleType (trigger) Time, and with a Schedule Next Mode of type Fixed, it is possible to define the Number of instances to schedule. Upon the association of this Maintenance Plan with an entity, the number of Maintenance Activity Orders created will be equal to the number defined in this property. This can be used to implement a preventive maintenance plan to be taken into account during Scheduling. Besides the Universal State, the **MAO** has two important independent system states: * **Schedule State** - defines the MAO from a scheduling (triggering) perspective. Possible values are: * Before early due * Early due * Due * Late due ```mermaid graph LR A1[Before Early Due] --> A2[Early Due] A2 --> A3[Due] A3 --> A4[Late Due] classDef mermaid_mm_beforeearlydue color:#000, fill:#00aad0, stroke:#000, stroke-width:1px, font-size:100%; classDef mermaid_mm_earlydue color:#000, fill:#e5ca82, stroke:#000, stroke-width:1px, font-size:100%; classDef mermaid_mm_due color:#000, fill:#33cc99, stroke:#000, stroke-width:1px, font-size:100%; classDef mermaid_mm_latedue color:#000, fill:#e17572, stroke:#000, stroke-width:1px, font-size:100%; class A1 mermaid_mm_beforeearlydue class A2 mermaid_mm_earlydue class A3 mermaid_mm_due class A4 mermaid_mm_latedue ``` * **Execution State** - defines the MAO from an execution perspective: * Requested * Approved * Released * In Progress * Waiting For Acceptance * Closed * Rejected * Reworked * Closed * Skipped * Rejected * Closed As Joined * Canceled ```mermaid graph TD Start -->|Request| A1 A1[Requested] ==>|Approve| A2[Approved] A1 -.->|Skip if AutoApproval| A2 A2 ==>|Release| A3[Released] A2 -.->|Skip if AutoRelease| A3 A3 ==>|Begin| A4[In Progress] A4 -.->|Skip if AutoAccept| A6 A4 ==>|Complete| A5[Waiting For Acceptance] A5 ==>|Accept| A6[Closed] A5 -->|Rework| A7[Reworked] A1 -->|Skip| A8[Skipped] A2 -->|Skip| A8[Skipped] A3 -->|Skip| A8[Skipped] A1 ---->|Reject| A9[Rejected] A1 ---->|Join| A10[ClosedAsJoined] A1 ---->|Cancel| A11[Canceled] classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200; classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden; classDef mermaid_mao_requested color:#000, fill:#fff, stroke:#00318a, color:#000, stroke-width:6px, stroke-dasharray: 5 5, font-size:100%; classDef mermaid_mao_approved color:#000, fill:#fff, stroke:#ffc000, color:#000, stroke-width:3px, font-size:100%; classDef mermaid_mao_released color:#000, fill:#fff, stroke:#92d050, color:#000, stroke-width:3px, font-size:100%; classDef mermaid_mao_inprogress color:#000, fill:#fff, stroke:#00b0f0, color:#000, stroke-width:3px, font-size:100%; classDef mermaid_mao_waiting color:#000, fill:#fff, stroke:#ff5800, color:#000, stroke-width:3px, font-size:100%; classDef mermaid_mao_closed color:#000, fill:#fff, stroke:#ff0000, color:#000, stroke-width:3px, font-size:100%; class Title mermaid_title class Start mermaid_start class A1 mermaid_mao_requested class A2 mermaid_mao_approved class A3 mermaid_mao_released class A4 mermaid_mao_inprogress class A5 mermaid_mao_waiting class A6,A7,A8,A9,A10,A11 mermaid_mao_closed ``` It is possible to define, for each Schedule State transition, a set of actions to be performed automatically by the system. These actions can range from a simple notification to the submission of a purchase order in the ERP system. It is also possible to put a **Resource** or **Container** on hold in case that the late due state is reached. !!! info Maintenance Management timers error distribution list and retry count can be configured in the following configuration entries `/Cmf/System/configuration/MaintenanceManagement/Timers/ErrorDistributionList` (defaults to null, which means, take the local suport email) and `/Cmf/System/Configuration/MaintenanceManagement/Timers/RetryCount` (default to 3) ## Global and Versioned Data A **Maintenance Plan**, being a change controlled object, contains global data and versioned data components, as shown in the next picture. ```mermaid graph TD subgraph Maintenance Plan Main1["Global Data
(Without Change Control)"] --- O1[None] Main2["Versioned Data
(With Change Control)"] --- A2[All other] end classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200; classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden; classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%; classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%; classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%; classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%; classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%; classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5; classDef mermaid_state color:#000, fill:#d7e4bd, stroke:#000, stroke-width:1px, font-size:100%, font-weight:300; class Main1,Main2 mermaid_entity class A1,A2 mermaid_entitylinked class C1,C2,C3,C4,C5,C6 mermaid_context class O1 mermaid_optional ``` ## Tying Everything Together ```mermaid graph LR L1[Maintenance Plan Instance] === Main[Maintenance Plan] A1[Resource] --- L1 A2[Container] --- L1 A3[Area] --- L1 A4[Material] --- L1 Main === L2[Maintenance Activity] A5[Chart] --- L3[Maintenance Activity Chart] L3 --- L2 L4[Maintenance Activity
Personnel Requirement] --- L2 A6[Certification] --- L4 L5[Maintenance Activity Rule] --- L2 A7[Rule] --- L5 L2 -.- A8[Data Collection] L2 -.- A9[BOM] L2 -.- A10[Data Collection Limit Set] L2 -.- A11[Checklist] L2 -.- A16[Qualification Check] A12[Roles] --- L2 L6 --- L1 L6[Maintenance Activity Order] -.- A12 A13[Employee] -.- L6 A14[Checklist Instance] -.- L6 A15[Data Collection Instance] -.- L6 L6 --- L7[Maintenance Activity
Order Employee] L6 --- L8[Maintenance Activity
Order Rule] L7 --- A13 L8 --- A7 L6 --- L9[Maintenance Activity
Order Part] L9 --- L10[Maintenance Activity
Order Part Material] classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%; classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%; classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%; classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%; classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%; classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5; class Main mermaid_entity class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16 mermaid_businessdata class L1,L2,L3,L4,L5,L6,L7,L8,L9,L10 mermaid_entitylinked class C1,C2,C3,C4,C5,C6 mermaid_context class N1,N2,N3,N4,N5,N6 mermaid_nonbusinessdata click Main "../../business-data/maintenance-plan" click A1 "../../business-data/resource" click A2 "../../business-data/container" click A3 "../../business-data/area" click A4 "../../business-data/material" click A5 "../../business-data/chart" click A6 "../../business-data/certification" click A7 "../../administration/rule" click A8 "../../business-data/data-collection" click A9 "../../business-data/bom" click A10 "../../business-data/data-collection-limit-set" click A11 "../../business-data/checklist" click A12 "../../administration/security/roles" click A13 "../../business-data/employee" click A14 "../../business-data/checklist" click A15 "../../business-data/data-collection/data-collection-instance" click A16 "../../business-data/qualification-check" click L1 "../../business-data/maintenance-plan/maintenance-plan-instance" click L6 "../../business-data/maintenance-activity-order" ``` ## Sequence Of Steps The necessary steps for correctly creating and using a **Maintenance Plan** are: 1. Optionally, create a **BOM** to define the list of Parts. 2. Optionally, create **Certifications**. 3. Optionally, create **Checklists**. 4. Optionally, create **Data Collections**. 5. Optionally, create SPC **Charts**. 6. Create the **Maintenance Plan** - note that it is necessary to associate the **Maintenance Plan Versions** to a **Change Set**. 7. Approve the Change Set, which contains the **Maintenance Plan Version** that has been created. 8. Set Maintenance Plan Version effective for the **Maintenance Plan Version** that has been created and approved. 9. Associate the **Maintenance Plan** with one or more **Areas**, **Containers**, **Materials** or **Resources**. !!! info For convenience, the Maintenance Plan can be configured to use implicit Change Sets. Please refer to the [[user-guide-change-set-index]] section for more information. For more information, see the [[tutorials-maintenance-management-deepdive]] tutorial. {{ generate_index() }}