# Services ## ValidatePlacementList A **BOM** is **Valid** if: - All the **Reference Designators** match MES **BOM's Designators**; - All **Products** or a subset of them exist in the MES **BOM**. The configuration entry, `/SMT/PreBomCheck/UseCaseSensitive`, determines whether case sensitivity is enforced when comparing the **Product Name** and **Reference Designator** lists from the equipment with those defined in the BOM. By default, this setting is set to **false**. ??? note "ValidatePlacementList service signature" The input object **ValidatePlacementListInput** contains the following information: | Name | Type | Description | | :------------- | :-------------------------- | :------------------------------------------------------------------------------------------------------------------------ | | ResourceName | String | Resource where the validation should take place | | MaterialName | String | The panel code to be validated | | PlacementLists | List of ComponentPlacements | Components list grouped by ReferenceDesignators, containing the **ReferenceDesignators** and a list of **ComponentNames** | The output object **ValidatePlacementListOutput** contains the following information: | Name | Type | Description | | :------------- | :------ | :-------------------- | | BomValid | Boolean | Comparison result | | ProductName | String | Material product name | | ProductBomName | String | Resolved BOM name | ### Error Translations The localized messages used by the service are: - IoTValidatePlacementListDuplicateComponentName - Component list of reference has a duplicate component name - IoTValidatePlacementListDuplicateReferenceDesignator - Placement list has a duplicate reference designator - IoTValidatePlacementListSubstituteBOMEntryMismatch - The reference designators of the substitute BOM entry don't match the parent BOM entry's reference designators. ### Pre Conditions: - **Material** must exist in system; - **Resource** must exist in system; - **PlacementLists** cannot be empty; - **BOMContext** SmartTable must be correctly configured for the current Step and BOM material product; - **Designators** are unique and the Substitutes have the same designator or empty. At MES, similar BOM items should be grouped by **Designator** field. Check this example: ![BOM Example](images/bom/bomprecheck-validateplacementlist.png) If you have **Substitute Products** configured they must not have **Designator** filled or have the same **Designator** as parent **Product**: ![BOM Example Substitutes](images/bom/bomcontextsubstitutes.png) **BOM Context** smart table should be correctly defined, for example: ![BOM Context Example](images/bom/bomprecheck-bomcontext.png) ## SearchMaterials The **SearchMaterials** service retrieves a list of **Materials** based on the provided filters and relations. This service is responsible for dynamically constructing and executing search queries that filter out irrelevant or invalid Materials - such as Templates or Terminated ones - while supporting pagination and query customization. The service underpins the **Search Materials** functionality in SMT, providing flexibility for various search contexts such as by **Product**, **Area**, **Resource**, or **Hold status**. - **Base Filters Applied Automatically:** - Excludes **Template Materials**; - Excludes **Terminated Materials**. - **Pagination:** - Supports configurable `PageNumber` and `PageSize` for large datasets. - **Dynamic Query Behavior:** - Additional filters and relations can be appended dynamically from the UI or process layer. - The query results are enriched by resolving Material relations (Resources, Containers, Lines, etc.) into a single structured dataset. ??? note "SearchMaterials service signature" The input object **SearchMaterialsInput** contains the following information: | Name | Type | Description | | :----------------- | :----------------- | :---------------------------------------------------------------- | | PageNumber | Integer | Current page number in the result set (default = 1) | | PageSize | Integer | Number of records to return per page (default = 25) | | FilterCollection | FilterCollection | Collection of filters to apply when searching for Materials | | RelationCollection | RelationCollection | Collection of relations to apply when retrieving related entities | The output object **SearchMaterialsOutput** contains the following information: | Name | Type | Description | | :--------------- | :---------- | :------------------------------------------------------------------------ | | PageNumber | Integer | Current page number returned | | PageSize | Integer | Number of records returned per page | | NgpDataSetResult | INgpDataSet | The dataset containing the resulting Materials and their related entities | ### Pre Conditions - The **FilterCollection** or **RelationCollection** must be properly constructed and valid; - The **Material** entity type and related entity definitions must exist in the MES; - The **Material** objects should be accessible for read operations; - Pagination parameters (`PageNumber`, `PageSize`) should be within valid limits. ![BOM Context Example](images/bom/bomprecheck-bomcontext.png) ## IoTMaterialOperation ??? note "IoTMaterialOperation service signature" The input object **IoTMaterialOperationInput** contains the following information: | Name | Type | Description | | :-------- | :----------------- | :-------------------------------------------------------------- | | Operation | String | MES operation to be performed on the current Material. | | Resource | Resource | Resource where the validation should take place | | Material | Material | Material to which perform the Tracking operation | | Materials | MaterialCollection | Collection of Materials to which perform the Tracking operation | The output object **IoTMaterialOperationOutput** contains the following information: | Name | Type | Description | | :----------- | :----- | :------------ | | MaterialName | String | Material name | ### Error Translations The localized messages used by the service are: - IoTMaterialNotDispQueuedAtResource - Material '{Material Name}' is not Dispatched/Queued at Resource '{Resource Name}' on Operation '{Operation}' - IoTNoMaterialsDispQueuedAtResource - No Materials Dispatched/Queued at Resource '{Resource Name}' on Operation '{Operation}' - IoTMaterialNotInProcess - Material '{Material Name}' is not InProcess on Operation '{Operation}' - IoTNoMaterialsInProcess - No Materials InProcess on Operation '{Operation}' - IoTMaterialNotInProcess - Material '{Material Name}' is not InProcess on Operation '{Operation}' - InvalidMaterialOperation - Material Operation is invalid ## GetMaterialRecipe The GetMaterialRecipe Service retrieves a Recipe associated to a **Material**. ??? note "GetMaterialRecipe service signature" The input object **GetMaterialRecipeInput** contains the following information: | Name | Type | Description | | :----------- | :----- | :-------------------------------- | | ResourceName | string | Resource pertaining to the Recipe | | MaterialName | string | Material pertaining to the Recipe | The output object **GetMaterialRecipeOutput** contains the following information: | Name | Type | Description | | :----------------- | :----- | :------------------- | | RecipeName | String | Recipe name | | MaterialName | String | Material name | | ResourceName | String | Resource Name | | ResourceRecipeName | String | Resource Recipe Name | | ProductName | String | Product Name | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## LoadComponents The LoadComponents Service is used for loading single components or a feeder table into a station. ??? note "LoadComponents service signature" The input object **LoadComponentsInput** contains the following information: | Name | Type | Description | | :------------------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------ | | ResourceName | string | Resource name | | LoadComponents | object | Components to be loaded into Resource | | ResourceLocation | string | Resource Location | | ChangeQuantity | bool | Indicates if a Quantity Change should be applied if there is a mismatch between existing quantity in MES and quantity incoming from invoker | | RetrieveRemainingFloorLife | bool | Indicates if returned list of components to invoker should be updated with remaining floor life time | The output object **LoadComponentsOutput** contains the following information: | Name | Type | Description | | :------------------- | :----- | :------------------- | | LoadComponentsResult | object | LoadComponentsResult | ### Error Translations The localized messages used by the service are: - SMTIoTLoadUnloadComponentsConsumableFeedStepWithoutService - Step {0} doesn't have any associated Service ### Pre Conditions: - N/A ## UnloadComponents The UnloadComponents Service is used for unloading components from a station. ??? note "UnloadComponents service signature" The input object **UnloadComponentsInput** contains the following information: | Name | Type | Description | | :--------------- | :----- | :-------------------------------------- | | ResourceName | string | Resource name | | UnloadComponents | object | Components to be unloaded from Resource | The output object **UnloadComponentsOutput** contains the following information: | Name | Type | Description | | :--------------------- | :----- | :--------------------- | | UnloadComponentsResult | object | UnloadComponentsResult | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## StartMaterialsForProductionOrder The StartMaterialsForProductionOrder service is designed to Start Materials under the Production Order. ??? note "StartMaterialsForProductionOrder service signature" The input object **StartMaterialsForProductionOrderInput** contains the following information: | Name | Type | Description | | :--------------------------- | :------------------ | :---------------------------------------------------------------- | | ProductionOrder | IProductionOrder | The ProductionOrder object for the Material(s) to be assigned to | | MaterialCollection | IMaterialCollection | The MaterialCollection object to be created or reassigned | | MaterialQuantity | decimal | The quantity for the Material to be created or reassigned | | AllowExpansionFactorMismatch | bool | Indicates whether a mismatch with the expansion factor is allowed | The output object **StartMaterialsForProductionOrderOutput** contains the following information: | Name | Type | Description | | :----------------- | :------------------ | :------------------------------------------------------------------- | | ProductionOrder | IProductionOrder | The ProductionOrder object for the Material(s) to be assigned to | | MaterialCollection | IMaterialCollection | The MaterialCollection object to be created, assigned, or reassigned | ### Error Translations The localized messages used by the service are: - SMTProductionOrderFulfilled - The Production Order is already fulfilled - SMTProductionOrderOverFulfilling - The quantity is over fulfilling the Production Order - SMTProductNoMaterialStartMode - The Product doesn't have the attribute MaterialStartMode defined. ### Pre Conditions: - N/A ## GetDataForStartMaterialsForProductionOrderWizard The GetDataForStartMaterialsForProductionOrderWizard service is designed to get Data for Wizard Start Materials under the Production Order. ??? note "GetDataForStartMaterialsForProductionOrderWizard service signature" The input object **GetDataForStartMaterialsForProductionOrderWizardInput** contains the following information: | Name | Type | Description | | :-------------- | :--------------- | :--------------------------------------------------------------- | | ProductionOrder | IProductionOrder | The ProductionOrder object for the Material(s) to be assigned to | The output object **GetDataForStartMaterialsForProductionOrderWizardOutput** contains the following information: | Name | Type | Description | | :--------------------------- | :------------------------ | :-------------------------------------------------------------------- | | ProductionOrder | IProductionOrder | The ProductionOrder object to be used in the "Start Materials for PO" | | ProductionOrderQuantities | ProductionOrderQuantities | Production Order Quantities to be displayed in the wizard | | MaterialStartMode | MaterialStartMode (Enum) | MaterialStartMode | | ExpansionFactor | decimal | ExpansionFactor | | AllowExpansionFactorMismatch | bool | AllowExpansionFactorMismatch | ### Error Translations The localized messages used by the service are: - SMTGUIElementDefaultValueInvalidFormat - Value '{0}' in GUIElementDefaultValue table is not in the correct format for Context '{1}' and Element '{2}'. ### Pre Conditions: - N/A ## GetDataForValidationWizardStep The GetDataForValidationWizardStep service is designed to Retrieve Panels and Boards genealogy for validation on Serialization Track-Out wizard. ??? note "GetDataForValidationWizardStep service signature" The input object **GetDataForValidationWizardStepInput** contains the following information: | Name | Type | Description | | :------- | :-------- | :--------------------- | | Material | IMaterial | Lot object as Material | The output object **GetDataForValidationWizardStepOutput** contains the following information: | Name | Type | Description | | :---------------- | :------------------------------- | :-------------------------------- | | MaterialGenealogy | Dictionary> | The Material Genealogy dictionary | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## CreateAndAttachRawMaterials The CreateAndAttachRawMaterials service is designed to create and attach the input Raw Materials into the designated resource. ??? note "CreateAndAttachRawMaterials service signature" The input object **CreateAndAttachRawMaterialsInput** contains the following information: | Name | Type | Description | | :----------- | :------------------ | :--------------------------- | | Resource | IResource | Resource Object | | RawMaterials | IMaterialCollection | Raw Materials to be attached | The output object **CreateAndAttachRawMaterialsOutput** contains the following information: | Name | Type | Description | | :----------- | :------------------ | :--------------------------- | | Resource | IResource | Resource Object | | RawMaterials | IMaterialCollection | Raw Materials to be attached | ### Error Translations The localized messages used by the service are: - SMTNotEnoughFreeFeeder - Not enough free feeders to attach the raw materials - SMTNoFeeders - No Feeders - SMTRawMaterialsWereAttached ### Pre Conditions: - N/A ## RemoveItemsFromPackingContainer The RemoveItemsFromPackingContainer service is used to remove Items from a Packing Container. ??? note "RemoveItemsFromPackingContainer service signature" The input object **RemoveItemsFromPackingContainerInput** contains the following information: | Name | Type | Description | | :----------------------- | :------------------ | :---------------------------------------------------------- | | PackingContainerMaterial | IMaterial | Packing Container Material | | MaterialsToRemove | IMaterialCollection | The Materials to remove from the Packing Container Material | The output object **RemoveItemsFromPackingContainerOutput** contains the following information: | Name | Type | Description | | :----------------------- | :-------- | :-------------------------------------------------------------------------------------- | | PackingContainerMaterial | IMaterial | The Material object for the Packing Container Material from which the Items was removed | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## ClosePackingContainer The ClosePackingContainer service is used to close a Packing Container and to print its Labels. ??? note "ClosePackingContainer service signature" The input object **ClosePackingContainerInput** contains the following information: | Name | Type | Description | | :----------------------- | :-------- | :--------------------------------------------- | | PackingContainerMaterial | IMaterial | Packing Container Material | | IsToPerformTrackOut | bool | Flag to indicate if is to perform the TrackOut | The output object **ClosePackingContainerOutput** contains the following information: | Name | Type | Description | | :----------------------- | :-------- | :------------------------------------------------------------ | | PackingContainerMaterial | IMaterial | The Material object for the closed Packing Container Material | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## OpenPackingContainer The OpenPackingContainer service is used to close a Packing Container and to print its Labels. ??? note "OpenPackingContainer service signature" The input object **OpenPackingContainerInput** contains the following information: | Name | Type | Description | | :---------------------- | :------------------ | :-------------------------------------------------------------------- | | PackingContainerProduct | IProduct | The PackingContainerProduct object for the Material to be assigned to | | MaterialsToAdd | IMaterialCollection | The MaterialCollection to add to the Packing Container | | Resource | IResource | The Resource to track in the Material | The output object **OpenPackingContainerOutput** contains the following information: | Name | Type | Description | | :----------------------- | :------------------ | :-------------------------------------------------------------- | | PackingContainerMaterial | IMaterial | The Material object for the Packed Material to be assigned to | | MaterialsAdded | IMaterialCollection | The Material Collection added to the Packing Container Material | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## AddItemsToPackingContainer The AddItemsToPackingContainer service is used to close a Packing Container and to print its Labels. ??? note "AddItemsToPackingContainer service signature" The input object **AddItemsToPackingContainerInput** contains the following information: | Name | Type | Description | | :----------------------- | :------------------ | :----------------------------------------------------- | | PackingContainerMaterial | IMaterial | The Packing Container Material | | MaterialsToAdd | IMaterialCollection | The MaterialCollection to add to the Packing Container | The output object **AddItemsToPackingContainerOutput** contains the following information: | Name | Type | Description | | :----------------------- | :------------------ | :-------------------------------------------------------------- | | PackingContainerMaterial | IMaterial | The Material object for the Packed Material to be assigned to | | MaterialsAdded | IMaterialCollection | The Material Collection added to the Packing Container Material | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## ResolvePackingContainerProducts The ResolvePackingContainerProducts service is used to close a Packing Container and to print its Labels. ??? note "ResolvePackingContainerProducts service signature" The input object **ResolvePackingContainerProductsInput** contains the following information: | Name | Type | Description | | :------- | :-------- | :------------------------ | | Material | IMaterial | The Material to filter by | The output object **ResolvePackingContainerProductsOutput** contains the following information: | Name | Type | Description | | :---------------- | :----------------- | :------------------------------------------------------------------ | | ProductCollection | IProductCollection | The ProductCollection object to be created, assigned, or reassigned | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - Smart Table SMTMaterialPackingContext is configured. ## DockFeederTableToResource The DockFeederTableToResource service is used to close a Packing Container and to print its Labels. ??? note "DockFeederTableToResource service signature" The input object **DockFeederTableToResourceInput** contains the following information: | Name | Type | Description | | :------------ | :---------------- | :------------------------- | | FeederTableId | string | The ID of the feeder table | | Resource | IResource | The Resource | | DockLocation | IResourceLocation | The Dock Location | The output object **DockFeederTableToResourceOutput** contains the following information: | Name | Type | Description | | :---------- | :--------- | :------------ | | Resource | IResource | The Resource. | | FeederTable | IContainer | The Feeder. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## AssembleMaterialFromConsumptionSummary The AssembleMaterialFromConsumptionSummary service is used to close a Packing Container and to print its Labels. ??? note "AssembleMaterialFromConsumptionSummary service signature" The input object **AssembleMaterialFromConsumptionSummaryInput** contains the following information: | Name | Type | Description | | :---------------------------- | :----------------------- | :------------------------------------------ | | Operation | ConsumptionOperation | Gets or sets the operation. | | TraceabilityConsumptions | TraceabilityConsumptions | Gets or sets the traceability consumptions. | | TerminateScrapsOnZeroQuantity | bool | The TerminateScrapsOnZeroQuantity. | | AssembleByPanel | bool | Define if the assemble operation by Panel. | The output object **AssembleMaterialFromConsumptionSummaryOutput** contains the following information: | Name | Type | Description | | :------- | :-------- | :------------ | | Material | IMaterial | The Material. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## ProcessAssembleMaterialFromConsumptionSummary The ProcessAssembleMaterialFromConsumptionSummary service is used to Process Assemble or Combine (depends on Input operation) Material with Materials and Quantity from Consumption Summary. ??? note "ProcessAssembleMaterialFromConsumptionSummary service signature" The input object **ProcessAssembleMaterialFromConsumptionSummaryInput** contains the following information: | Name | Type | Description | | :---------------------------- | :----------------------- | :------------------------------------------ | | Operation | ConsumptionOperation | Gets or sets the operation. | | TraceabilityConsumptions | TraceabilityConsumptions | Gets or sets the traceability consumptions. | | TerminateScrapsOnZeroQuantity | bool | The TerminateScrapsOnZeroQuantity. | | AssembleByPanel | bool | Define if the assemble operation by Panel. | The output object **ProcessAssembleMaterialFromConsumptionSummaryOutput** contains the following information: | Name | Type | Description | | :------- | :-------- | :------------ | | Material | IMaterial | The Material. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## AttachMaterialToConsumableFeed The AttachMaterialToConsumableFeed service is used to Create a Resource (if it doesn't exist) with the name received (FeederId) and attach all received ReelIds (if they exist) to that resource. ??? note "AttachMaterialToConsumableFeed service signature" The input object **AttachMaterialToConsumableFeedInput** contains the following information: | Name | Type | Description | | :------------- | :------------------ | :---------- | | FeederId | string | - | | PackagingUnits | List | - | | Resource | IResource | - | The output object **AttachMaterialToConsumableFeedOutput** contains the following information: N/A ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## AddFeedersToFeederTables The AddFeedersToFeederTables service is used to add Feeders to FeederTable Containers. ??? note "AddFeedersToFeederTables service signature" The input object **AddFeedersToFeederTablesInput** contains the following information: | Name | Type | Description | | :----------- | :---------------- | :-------------------------------------- | | FeedersToAdd | List | The feeders to add in the feeder table. | The output object **AddFeedersToFeederTablesOutput** contains the following information: | Name | Type | Description | | :----------- | :------------------- | :---------------------- | | FeederTables | IContainerCollection | The Feeder tables used. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## RemoveFeedersFromFeederTables The RemoveFeedersFromFeederTables service is used to remove Feeders to FeederTable Containers. ??? note "RemoveFeedersFromFeederTables service signature" The input object **RemoveFeedersFromFeederTablesInput** contains the following information: | Name | Type | Description | | :-------------- | :------------------- | :------------------------------------------- | | FeedersToRemove | List | The feeders to remove from the feeder table. | The output object **RemoveFeedersFromFeederTablesOutput** contains the following information: | Name | Type | Description | | :----------- | :------------------- | :------------------------------------------------- | | FeederTables | IContainerCollection | The Feeder tables from which feeders were removed. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## ManageDefectActions The ManageDefectActions service is used to create, update or remove defect actions. ??? note "ManageDefectActions service signature" The input object **ManageDefectActionsInput** contains the following information: | Name | Type | Description | | :------------------------ | :------------------------- | :--------------------------------- | | AddedUpdatedDefectActions | ISMTDefectActionCollection | The Added or Updated DefectActions | | RemovedDefectActions | ISMTDefectActionCollection | The Removed DefectActions | | Product | IProduct | The Product | The output object **ManageDefectActionsOutput** contains the following information: | Name | Type | Description | | :------------ | :------------------------- | :----------------------------------- | | DefectActions | ISMTDefectActionCollection | The Defect actions added or updated. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## GetProductDefectActions The GetProductDefectActions service is used to get a specific Product Defect Action. ??? note "GetProductDefectActions service signature" The input object **GetProductDefectActionsInput** contains the following information: | Name | Type | Description | | :------ | :------- | :---------- | | Product | IProduct | The Product | The output object **GetProductDefectActionsOutput** contains the following information: | Name | Type | Description | | :------------ | :------------------------- | :----------------------------------- | | DefectActions | ISMTDefectActionCollection | The Defect actions added or updated. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## GetVirtualInkspotHandlingData The GetVirtualInkspotHandlingData service returns the VirtualInkspotHandling Data for a given material. ??? note "GetVirtualInkspotHandlingData service signature" The input object **GetVirtualInkspotHandlingDataInput** contains the following information: | Name | Type | Description | | :----------- | :----- | :---------------------- | | MaterialName | string | The Material's Name | | ResourceName | string | The Resource's Name | | BarcodeSide | string | The BarcodeSide's value | The output object **GetVirtualInkspotHandlingDataOutput** contains the following information: | Name | Type | Description | | :-------- | :----- | :-------------- | | VIHResult | object | The VIH Result. | | BoardPath | string | The Board Path. | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## StartMsdMaterial The StartMsdMaterial service starts floor life counter of MSD material on MES. ??? note "StartMsdMaterial service signature" The input object **StartMsdMaterialInput** contains the following information: | Name | Type | Description | | :------- | :-------- | :----------- | | Material | IMaterial | The Material | The output object **StartMsdMaterialOutput** contains the following information: | Name | Type | Description | | :------- | :-------- | :----------- | | Material | IMaterial | The Material | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## CalculateRequiredBakingHours The CalculateRequiredBakingHours service is used to add calculate Required Baking Hours. ??? note "CalculateRequiredBakingHours service signature" The input object **CalculateRequiredBakingHoursInput** contains the following information: | Name | Type | Description | | :------------------------ | :-------- | :----------------------------------------------------------------------- | | Material | IMaterial | The **IMaterial** for which the required baking hours will be calculated | | Resource | IResource | The **IResource** on which the material will be baked | | CustomRequiredBakingHours | decimal | Custom Required Baking Hours | The output object **CalculateRequiredBakingHoursOutput** contains the following information: | Name | Type | Description | | :-------------------- | :----------------------------------- | :------------------------------------------------------------------------------------------- | | Material | IMaterial | The **IMaterial** for which the required baking hours was calculated | | Resource | IResource | The **IResource** on which the material will be baked | | CalculationResult | RequiredBakingHoursCalculationResult | The calculation result | | ExtraOutputParameters | Dictionary | Extra parameters, allows for customization projects to add custom parameters for DEE actions | ### Error Translations The localized messages used by the service are: - Generic Table SMTMaterialBakingTable has a row defined for the input material. ### Pre Conditions: - N/A ## StartMaterialsBaking The StartMaterialsBaking service is used to start the baking of the input materials. ??? note "StartMaterialsBaking service signature" The input object **StartMaterialsBakingInput** contains the following information: | Name | Type | Description | | :-------- | :----------------------------- | :---------------------------------------------------- | | Materials | List | The Materials for which the baking process will begin | | Resource | IResource | The **IResource** on which the material will be baked | The output object **StartMaterialsBakingOutput** contains the following information: | Name | Type | Description | | :-------- | :------------------ | :--------------------------------------------------------------- | | Materials | IMaterialCollection | The **IMaterialCollection** for which the baking process started | | Resource | IResource | The **IResource** on which the material will be baked | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - Generic Table SMTMaterialBakingTable has a row defined for the input material. ## StopMaterialsBaking The StopMaterialsBaking service is used to stop the baking of the input materials. ??? note "StopMaterialsBaking service signature" The input object **StopMaterialsBakingInput** contains the following information: | Name | Type | Description | | :-------- | :----------------------------- | :--------------------------------------------------- | | Materials | List | The Materials for which the baking process will stop | | Resource | IResource | The **IResource** on which the material was baked | The output object **StopMaterialsBakingOutput** contains the following information: | Name | Type | Description | | :-------- | :------------------ | :--------------------------------------------------------------- | | Materials | IMaterialCollection | The **IMaterialCollection** for which the baking process stopped | | Resource | IResource | The **IResource** on which the materials were baked | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - N/A ## CalculateRemainingBakingHours The CalculateRemainingBakingHours service is used calculate Remaining Baking Hours for a given list of materials. ??? note "CalculateRemainingBakingHours service signature" The input object **CalculateRemainingBakingHoursInput** contains the following information: | Name | Type | Description | | :-------- | :------------------ | :---------------------------------------------------------------------------------- | | Materials | IMaterialCollection | The **IMaterialCollection** for which the remaining baking hours will be calculated | The output object **CalculateRemainingBakingHoursOutput** contains the following information: | Name | Type | Description | | :-------------------- | :-------------------------- | :--------------------------------------------------------------------------- | | Result | Dictionary | The Remaining Baking Hours for each **IMaterial** | | ExtraOutputParameters | Dictionary | Extra parameters, allows for customization projects to add custom parameters | ### Error Translations The localized messages used by the service are: - N/A ### Pre Conditions: - Generic Table SMTMaterialBakingTable has a row defined for the input material. - Material is in baking. ## ReturnMaterialsFromRework The **ReturnMaterialsFromRework** service is used to return materials processed in Rework back into production. The destination is determined by the value set in the **ReturnType** property: - **SameLine** – returns the materials to their original production line. - **DifferentLine** – returns the materials to a different compatible line. - **OfflineStation** – returns the materials to an offline station. The grouping of materials is determined by the value set in the **ValidationType** property: - **SameProduct** – groups materials by the same product. - **SameProductGroup** – groups materials by the same product group. - **SameProductionOrder** – groups materials by the same production order. - **NoGrouping** – no grouping is applied. When returning materials to a different line, the target line must be compatible with the material's production context. ??? note "ReturnMaterialsFromRework service signature" The input object **ReturnMaterialsFromReworkInput** contains the following information: | Name | Type | Description | | :------------- | :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Materials | IMaterialCollection | The **IMaterialCollection** containing the materials to be returned from rework | | Resource | IResource | The target **IResource** used when **ReturnType** is **DifferentLine** or **OfflineStation**. Ignored when **ReturnType** is **SameLine** | | ValidationType | SMTReworkValidationType | The **SMTReworkValidationType** used to validate and group materials when selecting a parent material | | ReturnType | SMTReworkReturnType | The return type to be applied to the materials | | ReturnLineLane | IResourceLane | Optional target lane used when returning materials to a specific line | The output object **ReturnMaterialsFromReworkOutput** contains the following information: | Name | Type | Description | | :-------- | :------------------ | :---------------------- | | Materials | IMaterialCollection | The processed materials | | Resource | IResource | The resource used to return the materials | ### Return to the same line Materials are returned to the same line and production context from which they originated. The service first attempts to reuse the parent material stored in the material off-flow information. If that parent material is no longer valid, another suitable parent material is selected from the destination line. When no suitable parent material exists, a new parent material is automatically created, dispatched, and tracked-in to the return flow path. ??? info "SameLine Parent Material Validations" To reuse an existing parent material, all the following conditions must be met: - The parent material must be **Active**. - The parent material must be in **InProcess** state. - The parent material must be at the expected return step. - The parent material must belong to the expected line flow version. - The parent material must have the same **Product** as the materials being returned. - The parent material must have the same **ProductionOrder** as the materials being returned. - The parent material must be tracked-in on the destination line. If the original parent material is not valid, the service searches for another parent material that satisfies all the following conditions: - The material form matches the value configured in `/SMT/StartMaterialsForProductionOrder/SMTStartMaterialsForProductionOrderForm`. - The material is tracked-in on the destination line. - The material has the same **Product** as the materials in rework. - The material has the same **ProductionOrder** as the materials in rework. If no suitable parent material is found, a new parent material is created automatically. ### Return to a different line Materials are returned to the line specified in the **Resource** parameter. When returning materials to a different line: - The destination line replaces the original return line stored in the material off-flow information. - The destination lane can be specified using **ReturnLineLane**. - Existing off-flow records are recreated to reflect the new destination line. - A suitable parent material is reused whenever possible. - A new parent material is automatically created when no suitable parent material exists. - Materials are advanced to the next step and inserted into the destination line at the appropriate production point, determined by resolving the **StepLineFlowContext** smart table. - Any residual off-flow records created during the advance step are removed from materials that end up in **Queued** state. ### Return to an offline station Materials are returned to the offline station specified in the **Resource** parameter. > **Note** > > This return type is currently not implemented. ### Error Translations The localized messages used by the service are: - SMTMaterialsMustBeInRework - SMTMaterialsMustBeInState - SMTMaterialsMustHaveNoOpenDefects - SMTMaterialsMustBeInSameContainer - SMTEntityAttributeMustBeEnabled - SMTEntityAttributeMustBeSetTo - SMTInvalidLineResource - SMTLineResourceNotCompatibleWithProduct - SMTDifferentLineNotAvailable ### Pre Conditions - The materials must be in rework. - The materials must have been processed. - The materials must not have open defects, unless the configuration entry `/SMT/MaterialRework/AllowReturnWithOpenDefects` is enabled. - All materials must originate from the same last processed resource. - All materials must satisfy the selected **ValidationType** grouping criteria. - If the materials are in a container, they must all belong to the same container. - The last processed resource must have the **SMTIsReworkStation** attribute enabled. - The material form used when searching for or creating lot material(s) must be configured in `/SMT/StartMaterialsForProductionOrder/SMTStartMaterialsForProductionOrderForm`. ## GetMaterialsInReworkProcessData The GetMaterialsInReworkProcessData service retrieves the materials currently in rework for a given resource. It queries the system for materials participating in the rework workflow for the specified resource and enriches the result with relevant information such as product, production order, container, and rework limits. ??? note "GetMaterialsInReworkProcessData service signature" The input object **GetMaterialsInReworkProcessDataInput** contains the following information: | Name | Type | Description | | :--------- | :-------- | :--------------------------------------------------------------- | | PageNumber | int? | The page number to retrieve (defaults to 0 if not provided) | | PageSize | int? | The number of records per page (defaults to 0 if not provided) | | Resource | IResource | The **IResource** used to retrieve materials currently in rework | The output object **GetMaterialsInReworkProcessDataOutput** contains the following information: | Name | Type | Description | | :--------------------------- | :--------------------------------------- | :---------------------------------------------------------------- | | PageNumber | int? | The current page number returned | | PageSize | int? | The number of records per page | | MaterialsInReworkProcessData | List<MaterialsInReworkProcessData> | The list of materials in rework enriched with related information | | TotalRows | int | Total number of materials matching the query (before pagination) | Each **MaterialsInReworkProcessData** contains: | Name | Type | Description | | :---------------- | :--------------- | :--------------------------------------------- | | Material | IMaterial | The **IMaterial** instance | | Product | IProduct | The associated **IProduct** | | ProductionOrder | IProductionOrder | The related **IProductionOrder** | | Container | IContainer | The associated **IContainer** (if available) | | ReworkCount | int | The current rework count of the material | | GlobalReworkLimit | int | The global rework limit defined in the product | ### Error Translations The localized messages used by the service are: - SMTResourceAttributeNotEnabled – Thrown when the resource is not configured as a rework station. ### Pre Conditions: - The input Resource must be valid. - The input Resource must have the _SMTIsReworkStation_ attribute enabled.