--- alias: user-guide-automation-task-mes-recipeuploadrequest tags: - automation tasks description: "Trigger task that listens for recipe upload requests from the MES and lets a workflow deliver the recipe to the equipment" --- # Recipe Upload Request :iot-system-event-lg: This **trigger** task listens for recipe upload requests coming from the MES and lets a workflow deliver the uploaded recipe to the equipment. It belongs to the `System / MES` category, under `Triggers`. ![Recipe Upload Request - Data Flow Task](./images/recipe_upload_request-task.png) ## Details | Fields | Details | | ----------------- | ---------------------------------------------------------------------------------- | | Scope | Connect IoT
Data Platform
Enterprise Integration
Factory Automation | | Workflow | Data flow
Control flow | | `IsProtocol` flag | :material-close:{style="color:#EF5350"} | ## Behavior When the MES uploads recipes to the **Resource** (the upload recipes to resources operation), it sends a request on the `RecipeManagement.UploadRecipe` subject and waits for a reply. This task receives that request and emits the recipe name, the recipe body, and whether the body is binary. The MES sends the request only when the Resource has the Enable Automation Scenarios and Automation Upload Support properties enabled, and Automation Upload Support requires Recipe Management Enabled on the Resource. The MES stays blocked until a reply is sent. If none is sent within the `Reply Timeout`, the task emits `Error` and the upload fails on the MES side with a timeout error. The reply is sent by a downstream [Send Recipe Upload Reply](task_recipe_upload_reply.md) task. ## Inputs | Name | Data Type | Description | | -------------- | --------- | ---------------------------------------------------------------------------------------------------------------------- | | Subject | `String` | Subject used to communicate with the MES. Matches the `Recipe Upload Request` setting. | | Reply Timeout | `Integer` | Amount of time allowed to wait for a reply before issuing a timeout, in milliseconds. | | Enable/Disable | `Boolean` | Enables (`true`) or disables (`false`) the message listener at runtime. Works together with the `Auto Enable` setting. | Table: Recipe Upload Request task inputs ## Outputs | Name | Data Type | Description | | ----------- | --------- | ------------------------------------------------------ | | Recipe Name | `String` | The name of the recipe being uploaded. | | Body | `Any` | The recipe body to deliver to the equipment. | | IsBinary | `Boolean` | Whether the recipe body is binary. | | Success | `Boolean` | Triggered when a request is received and processed. | | Error | `Error` | Triggered when the task fails or the reply times out. | Table: Recipe Upload Request task outputs ## Settings On the `General` tab, you have the usual settings and the following settings: | Name | Data Type | Values | Default | Description | | --------------------- | --------- | ------ | ------------------------------ | ----------------------------------------------------------------------------------------------- | | Auto Enable | `Boolean` | | `true` | Automatically enables the message listener when the task starts. | | Reply Timeout | `Integer` | ms | `60000` | Amount of time allowed to wait for a reply before issuing a timeout. This setting is mandatory. | | Recipe Upload Request | `String` | | `RecipeManagement.UploadRecipe` | Subject used to communicate with the MES. This setting is read-only. | Table: Recipe Upload Request task settings ![Settings Wizard for Recipe Upload Request Task](./images/recipe_upload_request-task_settings.png) ## Remarks This task pairs with the [Send Recipe Upload Reply](task_recipe_upload_reply.md) task, which sends the reply back to the originating request. This task uses a specific structure of context-based data called `zone`. More information on this topic can be read in the [Zones](../zones.md) page.