Skip to content

DEEs#

SMTAutomaticLabelPrinting#

Print a Label based on SmartTable SMTMaterialPrintableDocumentContext

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Post
    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
    MaterialManagement.MaterialManagementOrchestration.MoveMaterialsToNextStep.Post
    MaterialManagement.MaterialManagementOrchestration.ExpandMaterial.Post
    BusinessObjects.Material.AutomaticAssemble.Post
    
  • Pre Conditions:

    Configuration entry: '/SMT/MaterialAutomaticLabelPrinting/IsEnabled' must be enabled
    Materials must be from the same Product Step and Form
    SmartTable 'SMTMaterialNameGenerationContext' must be configured
    SmartTable 'PrinterTypePrintersContext' must be configured
    
  • Action:

    Prints a label for each material
    If the config /SMT/MaterialAutomaticLabelPrinting/LabelCounterEnabled is enabled, a printer counter will be injected for each Material in the printer context.
    
    Remarks:
        In case of Expand the materials to be printed are the expanded
        In case of AutomaticAssemble the materials to printed are the consumed
    

SMTAutoShipOnLastStep#

MoveNext to the last step of the flow should automatically ship to the shipping facility.

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexMoveMaterialsToNextStep.Post
    
  • Pre Conditions:

    Config /SMT/MaterialTracking/AutoTerminateAndShipOnLastStep must be true
    Step is the last of the Flow
    ShippingAllowed is True
    MarksProductCompletion is True
    Materials have the same ProductionOrder and FlowPath
    
  • Action:

    Ship Materials to the to the first Facility that has TerminateOnShip enabled.
    

SMTBlockChecklistOnFalseParameters#

Block Checklist on parameters that are boolean and false. It will check if there is any checklist item with boolean parameters that are false.

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Pre
    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Pre
    
  • Pre Conditions:

    Configuration entry: /SMT/BlockCheckListOnFalseParameters/IsEnabled must be enabled
    Configuration entry: /SMT/BlockCheckListOnFalseParameters/CheckListType must be configured with the checklist types. Can be either a wildcard for every checklist or a set of strings separated by ';'
    
  • Action:

    - If ChecklistType is * or the ChecklistType matches the configured the checklist
        - Will check all checklist items 
        - If they are boolean
            - Check if they are false
    

SMTCallExternalApplication#

Create a new IntegrationEntry based on SmartTable SMTCallExternalApplicationContext.

  • Action Groups:

    BusinessObjects.MaterialCollection.TrackIn.Post
    BusinessObjects.MaterialCollection.TrackOut.Post
    BusinessObjects.MaterialCollection.MoveToNextStep.Pre
    BusinessObjects.MaterialCollection.MoveToNextStep.Post
    BusinessObjects.MaterialCollection.Rework.Post
    
  • Pre Conditions:

    Configuration entry: /SMT/CallExternalApplication/IsEnabled must be enabled
    SmartTable SMTCallExternalApplicationContext must be configured
    
  • Action:

    Creates a new IntegrationEntry to call an external application for each material.
    

SMTCreateNotificationAlert#

Creates new notification based on generic templates.

  • Pre Conditions:

    Notification template exists
    Details parameter is not empty
    
  • Action:

    Loads the template
    Change Name, Title and Details
    Create the new Notification
    

SMTDataCollectionPostOperation#

Perform a MES operation (TrackIn, TrackOut, MoveNext, TrackOutAndMoveNext, TrackOutAndAddToContainer, Rework, Abort) based on Material DataCollectionPoints and SmartTable SMTDataCollectionPostOperationContext.

  • Action Groups:

    BusinessObjects.DataCollectionInstance.Post.Post
    DataCollectionManagement.DataCollectionInstanceManagementOrchestration.PerformImmediateDataCollection.Post
    
  • Pre Conditions:

    Configuration entry: /SMT/DataCollectionPostOperation/IsEnabled must be enabled.
    SmartTable SMTDataCollectionPostOperationContext should be configured.
    In case of Rework, Step has an associated Rework Reason.
    In case of TrackOutAndAddToContainer, Resource where material was processed has Parent Resource that has a Load Port SubResource with a docked Container.
    Step has a DataCollection defined.
    
  • Action:

    Resolves SmartTable SMTDataCollectionPostOperationContext to validate if an action is required.
    Performs MES operation (TrackIn, TrackOut, MoveNext, TrackOutAndMoveNext, TrackOutAndAddToContainer, Rework, Abort).
    

SMTDataCollectionPostOperationContextST#

Validate the Operation and Rework Reason added in the SmartTable SMTDataCollectionPostOperationContext.

  • Action:
    - If it is not a `Rework` Operation and the `ReworkReason` is filled:
        - Throw error message: ReworkReason filled when operation is not Rework.
    - If it is a `Rework` Operation and the `ReworkReason` is not filled:
        - Throw error message: ReworkReason needed for Rework Operation.
    - If it is a `Rework` Operation and the `ReworkReason` is filled but is not a Rework Reason:
        - Throw error message: Reason is not a Rework Reason.
    - If it is not a `TrackOutAndAddToContainer` Operation and the `LoadPortType` is filled:
        - Throw error message: LoadPortType filled when operation is not TrackOutAndAddToContainer.
    - If it is a `TrackOutAndAddToContainer` Operation and the `LoadPortType` is not filled:
        - Throw error message: LoadPortType needed for TrackOutAndAddToContainer Operation.
    

SMTDefectAction#

Perform a Defect Action based on configured Defect Actions defined at SmartTable SMTDefectActionContext and the list of Defect Actions defined at the "Defects" section of the referred Product.

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.RecordMaterialDefects.Post
    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
    
  • Pre Conditions:

    SmartTable SMTDefectActionContext should be configured.
    Product from SMTDefectActionContext should have Defect Actions configured through the ManageDefectActions.
    
  • Action:

    - When a Material completes the predefined operation (either tracking out or recording a defect), the DEE runs, checking if the material's product
    is present in the `SMTDefectActionContext`. If so, it checks if the product has the Defect Action defined in the `SMTDefectActionContext` as a Defect
    Action and runs the Action according to the specified parameters.
    - If the Product has no defined Defect Actions, no errors should be thrown, it should just "do nothing". 
    If it has multiple Defect Actions matching the context and the precedenceKey level, they should be executed having in mind the following order:
        1. None (highest precedence)
        2. Scrap
        3. Hold
        4. Change Material Quantity
        5. Go Back to Step
        6. Send to Rework
        7. Open a Protocol
        8. Send a Notification
    

SMTEnforceMaximumReprocessingLimit#

Enforce the maximum number of times that a material can be reprocessed at a step

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Pre
    
  • Pre Conditions:

    SmartTable SMTReprocessLimitContext should be configured.
    
  • Action:

    When a Material is tracked in to a step, the DEE runs, checking if the material's fields match an entry in the `SMTReprocessLimitContext` smart table. 
    If so, the DEE updates the counts of the current step and logicalFlowPath in the material's `SMTStepCountLookup` custom attribute.
    
    If the count exceeds the value of the field `MaximumReprocessLimit` of the matched entry in the smart table, 
    the material is not tracked in and an error shown to the user with the message "Material has reached the maximum number of reprocesses for this step.".
    

SMTMaterialAsyncLabelPrinting#

Process Integration Entries of Type SMTMaterialAutomaticLabelPrinting

  • Pre Conditions:

    Configuration entry: /SMT/MaterialAutomaticLabelPrinting/IsEnabled must be enabled
    
  • Action:

    Process the information inside of the integration entry to print the corresponding label.
    

SMTMaterialPartialTrackOut#

Detach the Panels/Boards from the Lot/WorkOrder in the end of the Line Process based on SmartTable SMTPartialTrackOutContext.

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
    
  • Pre Conditions:

    Configuration entry: /SMT/MaterialPartialTrackOut/IsEnabled must be enabled
    SmartTable SMTPartialTrackOutContext must be configured
    
  • Action:

    Detach the Panels/Boards from the Lot/WorkOrder in the end of the Line Process.
    

SMTMaterialSerialization#

Expand Material if needed, after TrackIn or TrackOut based on the SMTMaterialExpandContext Smart Table - i.e. for Serialization - and to validate the printed labels-

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Post
    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
    
  • Pre Conditions:

    Configuration entry: /SMT/MaterialSerialization/IsEnabled must be enabled
    Smart Table SMTMaterialExpandContext should be configured
    
  • Action:

    - If IsExternalNaming is set to false
        - Resolves the SMTMaterialNameGenerationContext to get which Name Generator to use
    - If IsExternalNaming is set to true
        - Resolves the SMTMaterialNameGenerationContext to get which Label Validation Mask to use
    - Then:
        - Resolves the SMTMaterialPrintableDocumentContext to get which Printable Document to use
            - Resolves the PrinterTypePrintersContext to get which Printer to use
        - Expands the Material from defined ParentForm to ChildForm with:
            - PrimaryQuantity = 1
            - Form = ChildForm resolved in the SMTMaterialExpandContext
    

SMTProductionOrderCompletion#

Automatically close the Production Order on Completion. It will check if there is any Production Order with the correct quantity of material terminated, otherwise it will update the Material quantity in the Production Order.

  • Action Groups:

    BusinessObjects.MaterialCollection.Terminate.Pre
    BusinessObjects.MaterialCollection.Terminate.Post
    
  • Pre Conditions:

    Configuration entry: /SMT/ProductionOrderCompletion/IsEnabled must be enabled.
    Ship is performed to Facility with TerminateOnShip
    RecordLoss is performed with TerminateOnZeroQuantity
    ProductionOrder InProgress Quantity is 0
    
  • Action:

    Material ProductionOrder is closed and Terminated.
    

SMTProcessAssembledMaterials#

Processes asynchronously consumption provided through API AssembleMaterialFromConsumptionSummary.

  • Action:
    Prints a label for each material
    If the config /SMT/AssembleMaterialFromConsumption/AsynchronousTraceabilityProcessing is enabled,
    traceability information from API AssembleMaterialFromConsumptionSummary will be delegated to 
    and Integration Entry that will be processed by this DEE
    

SMTUpdateUnitsExcludedOnTerminate#

Updates the SMTUnitsExcluded attribute on Parent Materials by appending entries from terminated Sub-Materials that meet specific criteria, including being SMT Boards and having a valid MESPositionID attribute defined.

  • Action Groups:

    BusinessObjects.MaterialCollection.Terminate.Pre
    
  • Pre Conditions:

    Terminated Materials must have a Parent Material and no Sub-Materials.
    Terminated Materials *Form* must match one of the Forms present on the Lookup Table SMTBoardForms.
    
  • Action:

    When a Sub-Material meets the criteria of being an Board—meaning it has a Parent Material,
    no Child Materials, and its Form matches one of the Forms present on the Lookup Table SMTBoardForms
    —this DEE action will evaluate whether the Sub-Material has a valid MESPositionID attribute defined.
    
    The goal is to identify Boards that were defective and were automatically scrapped (i.e. Terminated).
    
    When the Terminate action occurs, this DEE action will collect the Sub-Material name
    and its MESPositionID attribute value, then append both 
    as a string separated by `-` to the Parent Material SMTUnitsExcluded attribute.
    

SMTValidateMaterialForm#

Prevents the user from adding material forms that don't exist in the MES to the SMTPanelForms and SMTBoardForms lookup tables.

  • Action Groups:

    TableManagement.TableManagementOrchestration.FullUpdateLookupTable.Pre
    
  • Pre Conditions:

    The lookup table being modified must either be the SMTPanelForms or the SMTBoardForms lookup table.
    
  • Action:

    If a value that doesn't exist in the MaterialForm lookup table is being added to one of the two
    previously mentioned lookup tables, prevent it from happening by throwing an exception.
    

SMTRecipeValidation#

Validate Line Resource Recipe at Material TrackIn based on RecipeContext

  • Action Groups:

    BusinessObjects.MaterialCollection.TrackIn.Pre
    
  • Pre Conditions:

    Config /SMT/RecipeValidation/IsEnabled must be true
    Smart Table RecipeContext is configured 
    The Material is in a line Step
    The Material has a Parent Material
    
  • Action:

    Validates that the resource's Current Recipe matches the RecipeContext.
    

SMTTimeConstraintTrackerPurgeClosed#

Purges all entries from SMTTimeConstraintTracker Generic Table with System State Closed

  • Pre Conditions:

    The timer SMTTimeConstraintTrackerPurgeClosedTimer must be configured with the appropriate recurrence.
    
  • Action:

    Any entries in the SMTTimeConstraintTracker Generic Table with the SystemState set to Closed will be purged.
    

SMTTimeConstraintTrackerTriggerActions#

Periodically checks materials with time constraints and triggers warning or time limit actions from the SMTTimeConstraintTracker Generic Table

  • Pre Conditions:

    The timer SMTTimeConstraintTrackerTriggerActionsTimer must be configured with the appropriate recurrence.
    
  • Action:

    Periodically checks the SMTTimeConstraintTracker Generic Table to identify entries that have reached either their warning or time limits.
    When the warning limit is reached and the state is Open, the corresponding warning rule is executed and the state is updated to PostWarning.
    If the time limit is reached and the state is PostWarning, the time limit rule is executed and the state is updated to PostTimeLimit.
    The identified entries will have their rules executed through integration entries.
    

SMTExecuteTimeConstraintTrackerRule#

Execute the time constraint tracker rules from Integration Entries created by the DEE SMTTimeConstraintTrackerTriggerActions

  • Action:
    Determines which Rule to execute through Integration Entry EventName Input - Warning or Time Limit.
    The Rule is then executed, having as Input a dictionary with the respective SMTTimeConstraintTracker Generic Table DataRow information.
    The dictionary sent as Input has the following keys:
      - Material
      - WarningLimitDate
      - TimeLimitDate
      - TimeLimitRule
      - WarningLimitRule
      - FromStep
      - FromOperation
      - ToStep
      - ToFlow
      - ToOperation
      - Type
      - SystemState
    

SMTTimeConstraintsEnforcer#

Create and enforce Time Constraints for Sub-Materials in Line Flows defined on the SMTTimeConstraintTracker Generic Table

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Pre
    MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Pre
    BusinessObjects.MaterialCollection.Rework.Pre
    
  • Pre Conditions:

    Generic Table SMTTimeConstraintTracker is configured.
    Material Step property EnableTimeConstraints must be True.
    
  • Action:

    Identifies the MES operation being executed (Track-In, Track-Out, Rework).
    Loads the Materials involved in the operation and filters those currently in a Line Step with Time Constraints enabled.
    Queries the SMTTimeConstraintTracker Generic Table to retrieve existing time constraint records for the Materials.
    Resolves applicable time constraints from the TimeConstraintsContext Smart Table based on the Sub-Material information.
    Adds new Time Constraint records if matching rules are found and no equivalent open record exists.
    Validates each Material against the constraint type (Minimum or Maximum) by comparing with the current UTC time.
    Throws a localized exception to block the MES operation if a constraint is violated.
    Marks the constraint as closed if the Material action satisfies the timing rule.
    Updates the SMTTimeConstraintTracker Generic Table with any new or modified constraint entries.
    

SMTPropagateFloorLifeAndExpirationDate#

Support Floor Life and Expiration Date Propagation for Specific Products and MES Operations

  • Action Groups:

    BusinessObjects.Material.Combine.Post
    BusinessObjects.Material.Compose.Post
    BusinessObjects.Material.AutomaticAssemble.Post
    MaterialManagement.MaterialManagementOrchestration.AssembleMaterial.Post
    MaterialManagement.MaterialManagementOrchestration.ReplaceAssembledMaterial.Post
    MaterialManagement.MaterialManagementOrchestration.SpecialReplaceAssembledMaterial.Post
    
  • Pre Conditions:

    Source Materials should have their product attributes, `SMTPropagateFloorLife` and/or `SMTPropagateExpirationDate`, set to true.
    
  • Action:

    Check if floor life or expiration date propagation is required for each source Material.
    Evaluate if the target Material’s floor life remaining hours need updating based on the source Material being closer to expiry.
    Evaluate if the target Material’s expiration date needs updating based on the source Material's sooner expiration.
    If an update is needed, stop the floor life counter if it’s currently running.
    Update the target Material with the new floor life remaining hours and expiration date.
    Start or restart the floor life counter for the target Material.
    

SMTOnSearchMaterialsByMaterialProduct#

Apply the Material Product logic in the “SMT Get Materials by Material Product” search query.
This rule dynamically adjusts the search filters to return all Materials that share the same Product as the Material specified by name.

  • Action Groups:

    Orchestration.SMTManagement.SearchMaterials.Pre
    
  • Pre Conditions:

    The input object (SearchMaterialsInput) must contain a filter for the Material Product name:
    - Filter Name = "Name"
    - ObjectName = "Product"
    - ObjectAlias = "Material_Product_2"
    - Filter Value must not be empty
    
  • Action:

    Validates if the input contains a valid Product name filter.
    Creates a temporary Material entity using the given name.
    If the Material exists:
      - Removes the original name-based filter.
      - Loads the Material to obtain its Product DefinitionId.
      - Adds a new Product DefinitionId filter to restrict the search to Materials sharing the same Product.
      - Ensures the necessary relation (Material - Product) exists in the query definition.
    Returns the updated input with modified Filter and Relation collections.
    

SMTOnPostStopMaterialsBaking#

Executes post-processing after the Stop Materials Baking service, handling Track-Out and optional material repositioning.

  • Action Groups:

    Orchestration.SMTManagement.StopMaterialsBaking.Post
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Validates the baking oven resource.
    Performs Track-Out of materials (unless skipped by setting a specific context parameter).
    Optionally moves materials back to the beginning of the step if the config /SMT/MaterialBaking/MaterialBakingQueueMaterialAfterBaking is enabled.
    

SMTOnPreTrackOutMaterials#

Prevents materials from being tracked out of baking ovens unless allowed by context parameters.

  • Action Groups:

    BusinessObjects.MaterialCollection.TrackOut.Pre
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Throws an exception if materials are being tracked out of a baking oven without a context parameter usually set by the SMTOnPostStopMaterialsBaking DEE.
    

SMTOnPreAbortMaterials#

Handles materials being aborted while in a baking oven, ensuring proper Stop Baking processing.

  • Action Groups:

    BusinessObjects.MaterialCollection.AbortProcess.Pre
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Identifies materials currently in baking ovens and stops their baking using the `StopMaterialsBaking` service.
    Reloads materials to reflect updated states.
    

SMTOnPreDispatchMaterials#

Prevents materials from being dispatched to baking ovens unless allowed by context parameters.

  • Action Groups:

    BusinessObjects.MaterialCollection.Dispatch.Pre
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Throws an exception if materials are being dispatched to a baking oven without a context parameter usually set by the SMTOnPreStartMaterialsBaking DEE.
    

SMTOnPreStartMaterialsBaking#

Executes pre-processing before the Start Materials Baking service, handling dispatch and track-in of materials.

  • Action Groups:

    Orchestration.SMTManagement.StartMaterialsBaking.Pre
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Validates that the resource is a baking oven.
    Dispatches and tracks in the materials to the baking oven.
    Updates the input with dispatched materials and resource.
    

SMTOnPreTrackInMaterials#

Prevents materials from being tracked into baking ovens unless allowed by context parameters.

  • Action Groups:

    BusinessObjects.MaterialCollection.TrackIn.Pre
    
  • Pre Conditions:

    Config '/SMT/MaterialBaking/IsEnabled' must be enabled.
    
  • Action:

    Throws an exception if materials are being tracked in to a baking oven without a context parameter usually set by the SMTOnPreStartMaterialsBaking DEE.
    

SMTLoadRemoveResourcesFromContainer#

When invoking through an external system, it is not possible to know beforehand the Id of the relation ResourceContainer. This DEE addresses this shortcoming by loading this relation if no Id is set in the relation.

  • Action Groups:

    ContainerManagement.ContainerManagementOrchestration.RemoveResourcesFromContainer.Pre
    
  • Pre Conditions:

    N/A
    
  • Action:

    Loads the `ResourceContainer` relation if necessary.
    

SMTAdjustConsumptionInfo#

Captures the creation of the genealogy records and adapts quantities consumed or the step of the genealogy operation.

  • Action Groups:

    BusinessObjects.GenealogyCollection.Create.Pre
    
  • Pre Conditions:

    The genealogy operation is a direct result of the ProcessAssembleMaterialFromConsumptionSummary service.
    
  • Action:

    If a step is indicated as an extra parameter in the input of the operation (added in asynchronous consumption),
    the genealogy step of the material receiving that quantity is adjusted to the step present in the extra parameter.
    
    If the combined quantity is 0 and genealogy records have reference designators,
    the quantity consumed from the ascendant Material (reel) is adjusted
    to reflect the number of reference designators (split by ";") present in it.
    

IoTMaterialOperation#

SMT DEE action that is invoked by the IoT layer to perform MES operations.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    Performs one of the following operations from IoT Layer:
    
     - TrackIn,
     - ComplexTrackIn,
     - ComplexTrackIns,
     - ComplexDispatchAndTrackIn,
     - ComplexDispatchAndTrackIns
     - TrackOut,
     - ComplexTrackOut,
     - ComplexTrackOuts,
     - ComplexTrackOutAndMoveNext,
     - ComplexTrackOutsAndMoveNext
    

IoTFujiNeximLoadComponents#

Invokes the generic LoadComponents API and returns a LoadComponentsResult object containing details about all components loaded during the operation.

This action is applicable only to machines that use the FujiNexi communication protocol.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Constructs and initializes a `LoadComponentsInput` instance.
    2. Invokes the `LoadComponents` API.
        - If there is only one feeder in the Event Data, we will attach or detach from previous and attach to new position.
        - If multiple feeders are to be attached this will be treated as a Table movement, we will detach all feeders from the Resource Table Location and attach or detach from previous positions and attach to the Location as collection.
    3. Returns the resulting `LoadComponentsResult` object.
    

IoTFujiNeximPcbCheckOut#

This DEE is triggered upon receiving the PCBCHECKOUTV Fuji Nexim event. Its purpose is to report material consumption through combine operations, track component losses, and update reel quantities accordingly.

This action applies only to machines that use the FujiNexi communication protocol.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    Config '/IoT/FUJI/UnterminateJustification' must be set.
    
  • Action:

    1. Evaluate the `ConsumptionMaterialType` value to determine whether consumption is
       performed at the Panel or Board level.
        - If no value is provided, Board is used as the default.
        - To perform combine operations at the Board level, the Panel must contain sub-materials.
        - If no sub-materials are present, consumption is reported at the Panel level.
    
    2. For each component used:
        - If the machine pickup status is `ErrorPart`, `RejectPart`, or `DroppedPart`:
           - Record the material loss.
           - Decrease the reel material quantity by 1.
           - Terminate the reel material when the quantity reaches zero.
        - If the pickup status is `Normal`:
           - Add the reel to the list of materials to be combined, if it is not already included.
           - Increase the combined primary quantity by 1.
    
    3. For each component to be combined:
        - If the reel material is terminated, unterminate it.
        - If the reel primary quantity is lower than the quantity to be combined, 
          update the reel quantity to match the required amount.
    
    4. Perform the combine operation for each Panel or Board, based on the evaluated consumption level.
    

IoTFujiNeximUnloadComponents#

This DEE is triggered upon receiving the UNLOADCOMP Fuji Nexim event. Its purpose is to detach feeders from a specified MES resource.

This action applies only to machines that use the FujiNexi communication protocol.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Validate that the DEE input contains values for the mandatory parameters:
        - `UnloadComponent`
        - `ResourceName`
    
    2. Fetch and load the MES resource identified by `ResourceName`.
    
    3. If the MES resource contains sub-resources:
        - Retrieve the associated resource feeders.
           - If feeders are present:
              - Iterate through the `UnloadComponent` input list.
              - For each entry, compare the unload component name and position with the MES feeder data.
              - Add matching feeders to the list of feeders to be detached.
    
    4. If any matching feeders are found, detach them from the resource.
    

IoTIPCCFXUnitsProcessed#

This DEE is triggered upon receiving a UnitsProcessed IPC-CFX message. Its purpose is to perform immediate data collection for the materials included in the message.

This action applies only to machines that use the IPC-CFX communication protocol.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Input Validation
        - Validate that the DEE input contains values for the mandatory parameters:
           - `hasUniqueIds`
           - `DataCollectionName`
           - `Materials`
           - `ResourceName`
        - If any of these parameters are missing, an exception is thrown.
    
    2. Data Collection Processing
    
    Case 1: `hasUniqueIds = false`
      - Iterate over the input `Materials`:
         - If a material contains sub-materials, perform data collection at the **Board** level.
         - Otherwise, perform data collection at the **Panel** level using the input material.
    
      - Iterate over the input `commonParameter` list:
         - For each parameter, retrieve the collected value.
            - If the value is `null`, use `"NA"` (Not Available) as the default.
            - If the specified `DataCollectionName` contains the parameter:
               - Create a data collection point and add it to the collection.
            - Otherwise, throw an exception.
    
      - For each material selected for data collection:
         - If one or more data points exist, perform immediate data collection.
    
    Case 2: `hasUniqueIds = true`
      - Iterate over the input `Materials`:
         - Select the corresponding `uniqParameter` entries for each material.
         - If a material contains sub-materials, perform data collection at the Board level.
         - Otherwise, perform data collection at the Panel level.
    
      - Iterate over the input `commonParameter` list:
         - For each parameter, retrieve the collected value.
         - If the value is `null`, use `"NA"` (Not Available) as the default.
         - If the specified `DataCollectionName` contains the parameter:
            - Create a data collection point and add it to the collection.
         - Otherwise, throw an exception.
    
      - For each material selected for data collection:
         - If one or more data points exist, perform immediate data collection.
    

IoTAdjustResourceState#

DEE action invoked by the IoT layer to update the state of a resource and, when applicable, its lanes.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    When the input contains both `ResourceName` and `StateModelStateName`, the action performs the following steps:
    
    1. Check if the resource is dual-lane
        - `ResourceLane` is present in the input
        - `ResourceLane` is not `0`
    
    2. Determine whether the resource lane should be updated. A lane update is performed only if all of the following conditions are met:
        - The MES resource property `IsMultiLaneActive` is `true`
        - The number of the MES resource lanes is greater than zero
        - The number of the MES resource lanes is greater than or equal to the `ResourceLane` value from the input
    
    3. Update the resource lane state if:        
        - A lane update is required (from step 2)
        - The current resource lane state is different from the input `StateModelStateName`
        - The resource lane has a Main State Model defined
    
    4. If the resource lane is not updated, update the resource state if:
        - The current resource state is different from the input `StateModelStateName`
        - The resource has a Main State Model defined
    

IoTCheckGetMaterialsFromPreviousSubResource#

DEE action invoked by the IoT layer to retrieve materials from the previous sub-resource Track-Out operation.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Retrieve the resource name from the input `ResourceName`.
    2. Call the utility method `GetMaterialsFromPreviousSubResource`.
    3. Return `MaterialsOutputFirst` — the first material name returned by the utility method.
    

IoTCreateExternalDocuments#

DEE action invoked by the IoT layer to create and associate external documents with a material.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    - The input must contain `MaterialName` and `FilesInformation`
    - The folder name is taken from the input value `Folder`. If `Folder` is not provided, the default folder name "Documents" is used.
    
  • Action:

    1. If the target folder for storing documents does not exist, create it.
    2. For each entry in the input `FilesInformation`, construct and initialize a `Document` instance and add it to a collection.
    3. Create the documents and set them to an effective state.
    4. Update the Smart Table `MaterialDocumentContext` by adding the material name and its corresponding document name.
    

IoTCreateNewRecipe#

DEE action triggered by the IoT layer to create or update a recipe, set it to an effective state and associate it with the correct Resource or Lane.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    - The input must contain `ResourceName`, `ResourceRecipeName`, `ResourceLane`, and `RecipeName`.
    - The resource must exist in MES.
    
  • Action:

    1. Determine whether the resource is multi-lane
        - The input value `ResourceLane` is greater than `0`.
        - The resource property `IsMultiLaneActive` is `true`.
        - The resource property `ResourceLanes` contains at least one element.
    
    2. Retrieve the currently assigned recipe
        - Get the recipe currently assigned to the resource or to the specified resource lane, if applicable.
    
    3. Check for a recipe revision in the input
        - Verify whether `RecipeRevision` is provided.
    
    4. Evaluate recipe existence and revision state
        - Determine whether the recipe already exists.
        - Decide whether the recipe should be created or updated.
        - Determine whether a new revision is required.
    
    5. Create or update the recipe
        - Create or update the recipe as determined in the previous step.
        - Set the recipe to an effective state.
    
    6. Assign the recipe to the resource
        - Set the recipe on the resource if it is not already assigned.
    

IoTDetachConsumables#

DEE action triggered by the IoT layer to detach consumable reels from a resource.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Retrieve the list of reel names from the input parameter `ReelNames`.
    2. For each reel in the list:
        - Load the corresponding MES reel material.
        - Identify and load the resource to which the reel is currently attached.
        - If a resource is found, detach the reel from the resource.
        - If no resource is found, skip the reel and continue with the next one.
    

IoTTerminateMaterial#

DEE action triggered by the IoT layer to terminate a material.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Check whether the input contains a value for `TerminateMaterialInput`.
    2. If `TerminateMaterialInput` is present:
        - Load the material and the associated loss reason from the input object.
        - Terminate the material using the provided loss reason.
    

NotifyIoTMetadataDefinitionChange#

DEE action that publishes a message to the MessageBus whenever the Smart Table IoTMetadataDefinition is modified.

  • Action Groups:

    - SmartTables.SmartTables.InsertOrUpdateRows.Post
    - SmartTables.SmartTables.RemoveRows.Post
    
  • Pre Conditions:

    N/A
    
  • Action:

    1. Verify that the input contains a value for `SmartTable` and that `ActionGroupName` matches one of the supported action groups.
    2. If valid, check whether the Smart Table provided in the input is `IoTMetadataDefinition`.
    3. If so, publish a message to the MessageBus with the following attributes:
        - Subject: `CMF.IoT.Utilities.MetadataChange`
        - Message: `NewValueIoTMetadata`
    4. If any of the above conditions are not met, no action is performed.
    

NotifyMetadataChange#

DEE action responsible for publishing a message to the MessageBus whenever the Smart Table IoTMetadataDefinition is modified.

  • Action Groups:

    N/A
    
  • Pre Conditions:

    - The input must include a `SmartTable` value equal to `IoTMetadataDefinition`.
    
  • Action:

    1. Publish a message to the MessageBus with the following attributes:
        - Subject: `CMF.IoT.Utilities.MetadataChange`
        - Message: `NewValueIoTMetadata`