--- alias: tutorials-moisture-sensitive-level-scenarios description: "Walk through eight Moisture Sensitive Level scenarios covering start, stop, seal, reset, storage, consume, durable assignment, and expiration date behavior" --- # Moisture Sensitive Level Scenarios This section walks through the main MSL execution scenarios described in the source tutorial. ## Scenario 1 - Start Floor Life Counter Use the material available in [master data](masterdata/moisture_sensitive_level.xlsx): `RawMaterials.03`. 1. Open the **Material Details** page and confirm that floor life is defined and the state is **Stopped**. 2. Execute the [[user-guide-start-floor-life-counter]] operation. 3. Confirm that the state changes to **Running** and that the **Floor Life Open Date** is recorded. This operation also affects sub-materials. ![Screenshot showing the material before starting the floor life counter, with the state set to Stopped.](images/msl-scenario-start-before.png) ![Screenshot showing the material after starting the floor life counter, with the state set to Running and the open date filled in.](images/msl-scenario-start-after.png) ## Scenario 2 - Stop Floor Life Counter Use the same material from the previous scenario: `RawMaterials.03`. 1. Confirm that floor life is defined and the state is **Running**. 2. Execute the [[user-guide-stop-floor-life-counter]] operation. 3. Confirm that the state changes to **Stopped** and that the **Floor Life Open Date** is removed. This operation also affects sub-materials. ![Screenshot showing the material after stopping the floor life counter, with the state set to Stopped.](images/msl-scenario-stop-after.png) ## Scenario 3 - Seal Material Use the same material from the previous scenario: `RawMaterials.03`. 1. Confirm that floor life is defined and the state is **Stopped** or **Running**. 2. Execute the [[user-guide-seal-material]] operation. 3. Confirm that the state is **Stopped** and that **Floor Life Sealed** is set to `Yes`. This operation also affects sub-materials. ![Screenshot showing the material before sealing, with floor life available and not yet sealed.](images/msl-scenario-seal-before.png) ![Screenshot showing the material after sealing, with Floor Life Sealed set to Yes.](images/msl-scenario-seal-after.png) ## Scenario 4 - Reset Floor Life Use the same material from the previous scenario: `RawMaterials.03`. 1. Confirm that floor life is defined and the state is **Stopped**. 2. Execute the [[user-guide-reset-floor-life-counter]] operation. 3. Confirm that the remaining floor life is reset according to the time defined in the MSL table. This operation also affects sub-materials. !!! note If the material MSL is unlimited, the reset cannot be performed because the remaining floor life is also unlimited. ![Screenshot showing the material before resetting the floor life counter.](images/msl-scenario-reset-before.png) ![Screenshot showing the material after resetting the floor life counter to its original duration.](images/msl-scenario-reset-after.png) See the configuration of these first four scenarios in the video below: {% set video_id = 'ae7c96da36a92f18e63677ec7f2cc960' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Scenario 5 - Store Material In this scenario, storing the material under specific storage conditions automatically stops the counter. On the storage resource, enable the following flags: - **Floor Life Safe** - determines whether the remaining floor life is paused while the material is stored. - **Start Floor Life Counter On Retrieve** - automatically starts the counter when the material is retrieved, provided the material is not sealed. For the resource setup itself, see [[user-guide-create-resource]]. ![Screenshot showing the storage resource flags for Floor Life Safe and Start Floor Life Counter On Retrieve.](images/msl-storage-resource-flags.png) Use `RawMaterials.03`, with the counter in either the running or stopped state. 1. Store the material in the storage resource and confirm that the state changes to, or remains, **Stopped**. 2. Retrieve the material from the storage resource and confirm that the state changes to **Running**. 3. Store the material again and confirm that the state changes back to **Stopped**. ![Screenshot showing the material after being stored, with the floor life counter stopped.](images/msl-scenario-store-after-store.png) ![Screenshot showing the material after retrieval, with the floor life counter running again.](images/msl-scenario-store-after-retrieve.png) ![Screenshot showing the material after being stored again, with the floor life counter stopped.](images/msl-scenario-store-after-store-again.png) See the configuration of this scenario in the video below: {% set video_id = '1938ff96bdaa83d47dbab5a55462e0cc' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Scenario 6 - Consume Material with Floor Life For this scenario, use `RawMaterials.01`. The material should be ready to be consumed and the floor life should be in either the **Running** or **Stopped** state. The scenario uses the [[assemble-material]] operation. ![Screenshot showing the material before consumption, with a valid remaining floor life.](images/msl-scenario-consume-before.png) 1. Track in the material to **Engine Block H08-P9.002**. 2. At track-in, a BOM appears. 3. After track-in, open **Assemble**. 4. Confirm that `RawMaterials.01` is available in the assemble operation. ![Screenshot showing the Assemble Material wizard where the valid material is available for use.](images/msl-scenario-consume-assemble-success.png) Then repeat the same exercise when the floor life reaches `0`. 1. Confirm that the floor life of the material has expired. 2. Open **Assemble** again. 3. Confirm that the material is no longer available in the wizard. ![Screenshot showing the material after the remaining floor life reaches zero.](images/msl-scenario-consume-expired-material.png) ![Screenshot showing the Assemble Material wizard with the expired material blocked from use.](images/msl-scenario-consume-assemble-blocked.png) See the configuration of this scenario in the video below: {% set video_id = '68d76ea1f12b0af5d119edfd946a3664' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Scenario 7 - Attach Durable with Floor Life For this scenario, create the durable using [[register-material]]. The same behavior also applies if it is created directly in the material management page. The main goal is to explore floor life when it is defined on the **Product Manufacturer**. ![Screenshot showing the durable product manufacturer with the configured Moisture Sensitivity Level and Floor Life.](images/msl-durable-product-manufacturer.png) 1. Add a new line in **Register Materials**. 2. Enter `11` in **Part Number**. 3. Confirm that the system automatically fills the **MS-Level** field according to the product manufacturer configuration. 4. Register the durable and confirm that the system fills in the floor life automatically. ![Screenshot showing Register Materials with the durable data, including MSL and expiration date fields.](images/msl-register-durable-with-expiration.png) ![Screenshot showing the created durable with the floor life data already defined.](images/msl-durable-created.png) Next, use [[user-guide-manage-resource-durables]] to assign the durable to `Coater-001`. 1. Assign the durable while the remaining floor life is valid and confirm that the operation succeeds. 2. Repeat the assignment when the remaining floor life reaches `0`. 3. Confirm that the system displays an error because the floor life has expired. ![Screenshot showing the durable assignment to the resource while the floor life is still valid.](images/msl-durable-assign-success.png) ![Screenshot showing the error returned when the durable is assigned after its floor life has expired.](images/msl-durable-assign-expired-error.png) See the configuration of this scenario in the video below: {% set video_id = '42b46a207b18f524cad78cc149b4e693' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Scenario 8 - Use the Expiration Date in the Material Use the same durable from the previous scenario. Even though the example uses a durable, the expiration date can be used with any material type. At this point, the durable still has remaining floor life, but its expiration date has already been exceeded. ![Screenshot showing the durable with remaining floor life still running.](images/msl-durable-running-floor-life.png) ![Screenshot showing the durable details page with an expiration date already in the past.](images/msl-durable-expiration-date.png) 1. Assign the durable to `Coater-001`. 2. Confirm that the system blocks the operation because the expiration date has been exceeded. ![Screenshot showing the error returned when the expiration date is out of range.](images/msl-durable-expiration-date-error.png) The expiration date can be used independently of floor life. Although this scenario is demonstrated with durable assignment, the same behavior also applies when using **Assemble**, **Combine**, or **Compose**. See the configuration of this scenario in the video below: {% set video_id = 'dfac18be51f40e1f85c46a8576812f72' %} {% include-markdown 'includes/cloudflare_stream.md' %}