Robotic Subtasks
This content applies solely to Appian RPA, which must be purchased separately from the Appian base platform.


If your business uses common actions within a larger robotic task, you might find it useful to create and integrate robotic subtasks into your robotic task development. Robotic subtasks can be built to serve common purposes between multiple robotic tasks, such as logging into an application, retrieving files and sending them to Appian, or scraping data.

This page describes what a robotic subtask is, how it works, and how to use it in other robotic tasks.

About robotic subtasks

A robotic subtask is any robotic task that's executed within the robotic task definition of another robotic task. Any robotic task can be run as a robotic subtask, and a robotic task can contain multiple robotic subtasks. It can even contain a robotic subtask that contains its own robotic subtask. See Subtask relationships to learn more about how the robotic tasks relate to each other. Additionally, robotic subtasks have some limitations.

Robotic subtasks are recommended where common steps are performed. This enables developers to more easily collaborate, re-use, and design more modular robotic tasks. Learn more about when to use robotic subtasks.


Robotic subtasks operate in ways similar to subtasks in Appian process models. However, there are some important differences:

  • The robotic task and any robotic subtasks it contains are run on the same robot.
  • Like robotic tasks, robotic subtasks execute using the robotic task definition when the execution was requested, not the latest definition if it's been updated after its execution request.
  • Robotic subtasks are always executed synchronously with the parent robotic task. Only after the subtask concludes does the robotic task proceed to the next action in the main robotic task definition.

You'll use the Execute robotic subtask action to configure and launch a robotic subtask from within a parent robotic task. It specifies which robotic subtask to call and indicates the data to be passed in and out of the subtask.

Subtask relationships

Throughout this page, the robotic subtask may be referred to as the child robotic task, while the robotic task that calls the subtask is referred to as the parent robotic task. These terms help show the relationship between the robotic tasks.

You'll configure the parent robotic task to use the Execute robotic subtask action to establish this relationship.

Because any robotic task can be used as a subtask, it's possible to have multiple levels of subtasks. For example, if robotic task C is used as a subtask in robotic task B, robotic task B can still be used as a subtask in robotic task A. Effectively, robotic task A contains two subtasks, but robotic task C is two levels down. Keep this relationship in mind as you learn more about how subtasks behave.

Represented visually, the levels would appear as:

  • Robotic task A (highest-level parent robotic task)
    • Robotic task B (child robotic task to robotic task A, parent robotic task to robotic task C)
      • Robotic task C (child robotic task to both robotic tasks A and B)


You can't import or export a robotic subtask with its parent robotic task at this time. In order to deploy robotic tasks that leverage subtasks to another environment, you will need to export and import all robotic tasks separately.

Configure a robotic subtask action

The steps below describe how to set up a robotic subtask.

  1. Create and save the robotic task you intend to use as a subtask.

    The robotic subtask should contain all of the components it needs to execute successfully and independently, such as variables and support files.

  2. Open the parent robotic task.
  3. Go to the Task tab of the robotic task configuration.
  4. In the robotic task definition, add an action.
  5. In the Actions Palette, locate the Execute robotic subtask action under Execution.
  6. Drag and drop the action to the appropriate spot in the robotic task definition.
  7. With the action selected, click Edit under CONFIGURATION in the Configuration Pane.
  8. in the Robotic task menu, search for and select the robotic task you want to run as a subtask. Only robotic tasks you have access to will appear in this list, excluding the one you're currently editing.
  9. In the INPUT VARIABLES section, map a parent robotic task variable to a subtask parameter so that when the action is executed, data passes from the parent robotic task to your subtask.
  10. In the OUTPUT VARIABLES section, map desired subtask variables to robotic task variables in your parent robotic task.
  11. Click SAVE.

Additional configuration details

When used as a subtask, certain configurations of a robotic task may behave differently:

Setup and Clean up: Robotic subtask' setup and clean up sections are always skipped during execution. Any setup or clean up activities that are needed for the main automation should be incorporated into the highest level robotic task's Setup and Clean up sections.

Environmental variables: Robotic tasks will use their respective environmental variables. The parent robotic task will use parent environmental variables, while the subtask will use subtask environmental variables.

Credentials: The parent robotic task's permission tags will define which credentials are accessible during execution. If, in the subtask, users select Any available credential, the robotic task will choose from the credential entries that are available to the parent robotic task. In the subtask, if users select Specific credential but the credential is not available to the parent robotic task due to mismatched permission tags, an error will be logged. Credentials are not released until the clean up section of the parent robotic task is run.

Workflow libraries: Workflow libraries are supported for subtasks. If there are different versions of a workflow library being used between the parent robotic task and the subtask, the higher version will automatically be used during execution.

Robot tags: The parent robotic task permission tags determine which robots are available for execution. The subtask's permission tags don't need to match the execution robot's permission tags, as long as the parent robotic task's tags match the robot's.

Use credentials in a robotic subtask

To share credentials between the parent robotic task and the child robotic task, a reserved credential should be passed using a robotic task variable. This section describes the steps to achieve this.

First, create a robotic task variable of type Credential in the parent robotic task to store the credential. Note that this data type is unique to RPA and can't be used in expressions, casting, or referenced as a parameter in a process model.

To reserve a credential:

  1. Go to the parent robotic task configuration.
  2. In the robotic task definition, add the Reserve credential action under Execution.
  3. Configure the action to reserve the intended credential.
  4. Configure the OUTPUTS to save the reserved credential to the robotic task variable you created earlier. Select the variable in the Target field.
  5. Click SAVE CHANGES.

To pass the reserved credential to the robotic subtask:

  1. Still in the parent robotic task configuration, select the Execute robotic subtask action in the flow. If you haven't yet added this action, see above.
  2. In the INPUT VARIABLES section, map the parent robotic task variable that contains the credential to the corresponding subtask parameter. When the action is executed, the data passes from the parent robotic task to your subtask.
  3. Click SAVE.

To use the reserved credential in the robotic subtask:

  1. Go to the child robotic task configuration.
  2. In the robotic task definition, add the action appropriate to your use case: Interact with element (Browser), Interact with element (Windows Automation), or Type text (Keyboard).
  3. For the Selection method, choose Reserved credential.
  4. Select the variable that stores the reserved credential.
  5. Click SAVE CHANGES.

Possible errors

For input variables where you are evaluating an expression, if the value being passed to the child parameter does not match the data type of the variable, Appian will attempt to cast the data automatically. If the automatic casting is invalid, the robotic task will throw the following error in the log to indicate the type mismatch: Unknown error. Please contact administrator with the following message: Could not cast from <Variable Type> to <Variable Type 2>. Details: CastInvalid.

Execution behavior

When requesting an execution, the account that is running the automation needs to have access to the parent robotic task and subtasks through appropriate permission tags. For example, if a service account had a tag removed that also removed its access to the subtask, the parent robotic task would fail to execute with the following message: The robotic task or one of its dependents does not exist, has been deleted, or you do not have permission to access it.

Robotic subtasks execute as part of the main parent's robotic task execution. Their definition is set at the time the robotic task execution was requested, and any changes to the subtask afterwards will not be reflected in the pending execution. Robotic subtasks are run synchronously, meaning the parent robotic task will wait for the subtask actions to complete before resuming the rest of the robotic task definition.

View execution details

The subtask's execution log is contained in the parent robotic task's log. Therefore, when a robotic task is run as a subtask of another automation, that execution will not display in the subtask's own execution log. However, when the robotic task is executed as an independent robotic task, its execution will appear in its own execution log.

If you use the debugging tool, subtasks will appear as an action group within the execution preview and can be interacted with like other action group, such as setting breakpoints and disabling actions.


When a parent robotic task containing subtasks is exported, the subtask workflows and dependencies are not included in the ZIP file. In order to deploy to other environments, you will need to separately export the subtask and its dependencies.

On import, the system checks for missing precedents, including references to robotic subtasks. Therefore, it is recommended to import a robotic subtask first, and then proceed importing the parent robotic task.

Open in Github Built: Fri, Jun 02, 2023 (06:02:31 PM)

On This Page