--- pdfexport: true alias: tutorials-container-maintenance-events timetoread: false tutorial: full description: "Critical Manufacturing MES tracks container maintenance by automatically incrementing counters based on container usage operations, enabling proactive management and extending" --- # Container Maintenance Events ## Overview In manufacturing, containers and carriers used to store and transport products can degrade over time, potentially leading to quality issues, reduced yield, and increased operational costs. Implementing regular preventive maintenance, including routine inspections, cleaning, and refurbishment, helps significantly extend container lifespans and ensures consistent performance. Without proper maintenance, containers may deteriorate, requiring costly replacements and causing disruptions to manufacturing processes. Critical Manufacturing MES helps manage container maintenance proactively. When creating or managing a Resource in the MES, activating the **Enable Container Maintenance Events** option allows the system to automatically track container usage through predefined maintenance counters. These counters increment each time one of the following operations occurs: | Operation | Event | |-----------------------------------------------------|-------------------------------------| |[[user-guide-add-container-container]] | Associate First | |[[user-guide-add-material-to-container]] | Associate First | |[[user-guide-dock-container]] | Dock | |[[user-guide-empty-container]] | Disassociate Last | |[[user-guide-manage-container-positions]] | Associate First & Disassociate Last | |[[user-guide-remove-container-container]] | Disassociate Last | |[[user-guide-remove-material-from-container]] | Disassociate Last | |[[user-guide-track-in-material]] | Track In | |[[user-guide-transfer-container-between-containers]] | Associate First & Disassociate Last | |[[user-guide-transfer-material-between-containers]] | Associate First & Disassociate Last | |[[user-guide-undock-container]] | Undock | |[[user-guide-ship-material]] | Ship | Table: Events that can be associated to each Container-related operation. ## Real Use Case Follow the steps below to understand how to use the Enable Container Maintenance Events feature using Critical Manufacturing MES. ### Creating a Resource To start managing Container maintenance events, you first need to create and configure a Resource. Navigate to the **Resource** entity within the **Business Data** menu and select **New** from the button ribbon. Provide the following details in the General Data step of the **Create Resource** wizard: * Name - add a name for the Resource (for example, `ProcessResource-001`). * Type - choose a value from the [[resourcetype-lt]] Lookup Table (for example, `General`). * Processing Type - select either `Process` or `Line` from the dropdown (for example, `Process`). * Area - choose the desired Area (for example, `Cookie Manufacturing`). Select **Next** to continue. ![Creating a Resource - step 1](../../images/container_maintenance_events_create_resource_step1.png) Once in the Additional Information step, add the following information: * Position Unit Type - choose `Material` as the Resource position unit type. * Enable Container Maintenance Events - activate this toggle to enable container tracking. === "Position" ![Creating a Resource - step 2](../../images/container_maintenance_events_create_resource_step2.png) === "Other Information" ![Creating a Resource - step 2](../../images/container_maintenance_events_create_resource_step2_2.png) !!! note Additional configurations can be set when creating a Resource, but for simplicity, only key configurations relevant to this scenario are shown. For detailed information, see [[user-guide-create-resource]] and [[tutorials-howto-createresource]]. Select **Next** to proceed to the Attributes step. For more information, see [[attributes-section]]. If no attributes are defined, select **Create** to complete the operation. ### Creating a Sub-Resource Now, create a Sub-Resource for your `ProcessResource-001`. Follow similar steps as above and enter the following information: * Name - add a name for the Resource (for example, `LoadPort-0001`). * Type - choose a value from the [[resourcetype-lt]] Lookup Table (for example, `General`). * Processing Type - choose the `Load Port` processing type. * Area - choose the same Area as chosen for the `ProcessResource-001` (in this example, `Cookie Manufacturing`). Select **Next** to continue. ![Creating a Sub-Resource - step 1](../../images/container_maintenance_events_create_subresource_step1.png) Once in the Additional Information step, add the following information: * Load Port Type - choose the load port type from the dropdown (for example, `Input`). * Position Unit Type - choose `Container` as the Resource position unit type. ![Creating a Sub-Resource - step 2](../../images/container_maintenance_events_create_subresource_step2.png) After creating the Sub-Resource, in the Structure section of the Details view, choose the **Manage** button. This will open the **Manage Resource Structure** wizard. Add `ProcessResource-001` as Parent Resource to `LoadPort-0001` and select **Update** to complete the operation, as shown in the image below. For more information, see [[tutorials-howto-manageresourcestructure]]. ![Manage Resource Structure - Add a Parent Resource](../../images/container_maintenance_events_manageresource.png) ### Creating a Container After creating the Resource and Sub-Resource, create a Container. So, navigate to the **Container** entity within the **Business Data** menu and select **New** from the top ribbon. Provide the following details in the General Data step of the **Create Container** wizard: * Name - add a name for the Container (for example, `Container-0001`). * Type - choose a value from the [[containertype-lt]] Lookup Table (for example, `Carrier`). * Facility - choose a Facility that contains the Area previously defined for the Resource and Sub-Resource (in this example, `Cookie Factory`). * Position Unit Type - choose the `Resource` position unit type. * Total Positions - define the total number of positions for the Container (for example, `10`). === "General Data & Information" ![Creating a Container](../../images/container_maintenance_events_createcontainer.png) === "Positions" ![Creating a Container](../../images/container_maintenance_events_createcontainer_2.png) !!! note Additional configurations can be set when creating a Container, but for simplicity, only key configurations relevant to this scenario are shown. For detailed information, see [[user-guide-create-container]] and [[tutorials-howto-createcontainer]]. Select **Next** to proceed to the Attributes step. For more information, see [[attributes-section]]. If no attributes are defined, select **Create** to complete the operation. ### Adding a Container to a Resource Afterwards, add the Container you created to the Sub-Resource `LoadPort-0001`. First, add a new entry to the [[containerresourcerelation-gt]] Generic Table, specifying the chosen Container Type (in this example, `Carrier`) and the matching Resource Type (in this example, `Carrier`). Confirm by selecting **Add** to complete this association. ![Associate the Container type with the Resource type](../../images/container_maintenance_events_containerresource_relation.png) Next, navigate to the `Container-0001` page and select the **Manage Positions** button from the top ribbon. Since the **Container** was previously configured with a `Resource` position unit type, you will now be able to add **Resources** in the **Container Positions** wizard. Add the `LoadPort-0001` Resource to the first position of `Container-0001`. Select **Update** to finalize the operation. ![Manage Container Position](../../images/container_maintenance_events_managecontainerpositions.png) ### Creating a Maintenance Plan To create a Maintenance Plan, first [[user-guide-create-change-set|create a Change Set]] or select an existing one. For more information, see [[user-guide-change-set-index]]. After choosing the Change Set, add the following details to the General Data of the **Create Maintenance Plan** wizard: * Name - enter a name for the Maintenance Plan (for example, `MaintenancePlan-0001`). * Type - choose a value from the [[maintenanceplantype-lt]] Lookup Table (for example, `Standard`). ![Create a Maintenance Plan](../../images/container_maintenance_events_create_mp.png) Select **Next** to proceed to the Attributes step. For more information, see [[attributes-section]]. If no attributes are defined, select **Create** to complete the operation. ### Adding Maintenance Activities Add two Maintenance Activities to the Maintenance Plan you just created by selecting the **Edit** button from the top ribbon, followed by the :material-plus: icon on the left panel. Use the configurations described below. === "Activity 1" General Data tab: * Name - enter a name for the Maintenance Activity (for example, `Activity 1`). * Type - choose a value from the [[maintenanceactivitytype-lt]] Lookup Table (for example, `Standard`). * Schedule Type - choose `Usage Based` as the schedule type. * Expected Duration - define the estimated time to complete the Maintenance Activity (for example, `10` hours). * Execution Role - specify the user role responsible for executing the activity (for example, `Administrators`). * Maintenance Type - choose the Maintenance type from the dropdown (for example, `Preventive`). * Material Type Restriction Mode - specify if there are restrictions for the Material type (in this example, `Allow None`). ![Add Maintenance Activity](../../images/container_maintenance_events_activity1_general.png) Schedule tab: * Counter Mode - indicate the counter behavior (in this example, `Increasing`). * Usage Early Due - define the threshold at which maintenance is recommended to start earlier than scheduled (for example, `10`). * Usage Due - define the exact event count at which maintenance becomes due (for example, `15`). * Usage Late Due - define the threshold at which maintenance is considered overdue (for example, `20`). * Counter Type - specify how the events are counted towards maintenance scheduling (in this example, `Count One`). * Counter Event - specify the event triggering the counter increment from [[maintenancemanagementevent-lt]] Lookup Table (for example, `Dock`). * Schedule Next Mode - indicate if the subsequent Maintenance Activities depend on completing the current activity (in this example, `Dependant`). ![Add Maintenance Activity](../../images/container_maintenance_events_activity1_schedule.png) === "Activity 2" General Data tab: * Name - enter a name for the Maintenance Activity (for example, `Activity 2`). * Type - choose a value from the [[maintenanceactivitytype-lt]] Lookup Table (for example, `Standard`). * Schedule Type - choose `Usage Based` as the schedule type. * Expected Duration - define the estimated time to complete the Maintenance Activity (for example, `10` hours). * Execution Role - specify the user role responsible for executing the activity (for example, `Administrators`). * Maintenance Type - choose the Maintenance type from the dropdown (for example, `Preventive`). * Material Type Restriction Mode - specify if there are restrictions for the Material type (in this example, `Allow None`). ![Add Maintenance Activity](../../images/container_maintenance_events_activity2_general.png) Schedule tab: * Counter Mode - indicate the counter behavior (in this example, `Increasing`). * Usage Early Due - define the threshold at which maintenance is recommended to start earlier than scheduled (for example, `10`). * Usage Due - define the exact event count at which maintenance becomes due (for example, `15`). * Usage Late Due - define the threshold at which maintenance is considered overdue (for example, `20`). * Counter Type - specify how the events are counted towards maintenance scheduling (in this example, `Count One`). * Counter Event - specify the event triggering the counter increment from [[maintenancemanagementevent-lt]] Lookup Table (for example, `Undock`). * Schedule Next Mode - indicate if the subsequent Maintenance Activities depend on completing the current activity (in this example, `Dependant`). ![Add Maintenance Activity](../../images/container_maintenance_events_activity2_schedule.png) !!! note Additional configurations can be set when adding Maintenance Activities, but for simplicity, only key configurations relevant to this scenario are shown. For detailed information, see [[user-guide-create-maintenance-plan]], [[tutorials-howto-createmaintenanceplan]], and [[tutorials-howto-addmaintenanceactivities]]. Finally, set the Maintenance Plan you created Effective. ### Associate a Maintenance Plan with a Container Next, associate the `MaintenancePlan-0001` with `Container-0001` by selecting the **Associate With** button from the top ribbon and choose **Container**. Add the Maintenance Activities associated to the Maintenance Plan you have created and choose the Owner Role (in this example, `Administrators`). For more information, see [[tutorials-howto-associatempwithentity]]. === "Container" ![Associate a Maintenance Plan with a Container](../../images/container_maintenance_events_associatecontainer.png) === "Activities" ![Associate a Maintenance Plan with a Container](../../images/container_maintenance_events_associatecontainer_2.png) === "General Data" ![Associate a Maintenance Plan with a Container](../../images/container_maintenance_events_associatecontainer_3.png) ### Tracking Container Usage Once you've completed the previous steps, you can begin tracking the Container usage. First, open the Maintenance Plan instance associated with your Container (in this example, `MaintenancePlan-0001-Container-0001-0001`). Navigate to the Maintenance Schedule view and open the Maintenance Activities you've defined (such as `Activity 1` and `Activity 2`). Within each activity page, locate the Scheduling section under the Details view. Here, you'll see the associated events configured for each activity. Initially, before any Container operations occur, the Usage field will display a value of zero. For example, `Activity 1` will show the Usage as `CountOne at Dock: 0`, and `Activity 2` will show `CountOne at Undock: 0`. To verify the tracking mechanism, navigate to `Container-0001` page and perform the operations you associated with the Maintenance Activities. Selecting **Dock** from the top ribbon will increment the Usage in `Activity 1` to `CountOne at Dock: 1`. Similarly, selecting **Undock** from the top ribbon will increment the Usage in `Activity 2` to `CountOne at Undock: 1`. Watch the video below to see how to use this feature. {% set video_id = 'e362e63b3fee89835abacd14399071b5' %} {% include-markdown 'includes/cloudflare_stream.md' %}