# Triggerable service tasks

STENG peers perform triggerable tasks that are often related to long-lasting operations, like file transfers.

The main action is to request the schedule of an operation from a subsystem and to save the exit code in the RC variable if it exists.

When the service task finishes, the flow does not continue immediately. Instead, it enters a wait state that uses no resources until the scheduled operation is complete. At that point, the process engine will resume. The value of the RC variable will be updated to replace the scheduled exit code with the actual code from the completed action, and then the instance will be re-triggered to move to the next step.

All Triggerable Service Tasks are organized with a **description of the service task** and the **variables** it includes.

**List of Triggerable Service tasks in alphabetical order**:

* [Bind VirtualBox](#bind-virtualbox)
* [Data Shaper Processor](#data-shaper-2.0-processor)
* [Event Notification](#event-notification)
* [GUnzip File](#gunzip-file)
* [GZip File](#gzip-file)
* [ICAP](#icap)
* [List files VirtualBox](#list-files-virtualbox)
* [Local Execute Shell Command](#local-execute-shell-command)
* [Local FileSystem SpLs](#local-filesystem-spls)
* [Local SpConv](#local-spconv)
* [Local SpGet](#local-spget)
* [Local SpPut](#local-spput)
* [Local VirtualPath SpLs](#local-virtualpath-spls)
* [Mail pull](#mail-pull)
* [Mail push](#mail-push)
* [Mail push templated](#mail-push-templated)
* [PGP Crypt File](#pgp-crypt-file)
* [PGP Decrypt File](#pgp-decrypt-file)
* [Remote SpJMSPush](#remote-spjmspush)
* [Remote SpLs](#remote-spls)
* [Remote SpMkdir](#remote-spmkdir)
* [Remote SpMv](#remote-spmv)
* [Remote SpPull](#remote-sppull)
* [Remote SpPush](#remote-sppush)
* [Remote SpRm](#remote-sprm)
* [Spjz Sub](#spjz-sub)
* [Tar File](#tar-file)
* [UnBind VirtualBox](#unbind-virtualbox)
* [UnTar File](#untar-file)
* [UnZip File](#unzip-file)
* [Zip File](#zip-file)

By design, all triggerable service tasks wait for a trigger before proceeding to the next step and that is why they always throw a BpmServiceException when receiving a schedule return code that is not 0 (Return Code OK). Otherwise, they will wait for an event that will never come, since the scheduled operation failed.

## Bind VirtualBox

**Description:** When a FileSet ID is provided, it will be associated with the designated VirtualBox name.

**Variables**

| Parameter   | Type       | Required | Description                                                  |
| ----------- | ---------- | -------- | ------------------------------------------------------------ |
| File ID     | Long       | Y        | Fileset ID to operate the BIND operation to                  |
| Virtual Box | VirtualBox | Y        | Virtual Box name where the given FileSet ID will be bound to |

## Data Shaper 2.0 Processor

**Description:** The Data Shaper Processor service task is used in workflow templates to be consumed in Input, Mediation, and Output Contracts to invoke Data Shaper workflows.

Variables are documented in the Data Shaper documentation. See the [Defining a Data Shaper workflow template](/data-shaper-1.21/using-data-shaper-in-data-mover/defining-a-data-shaper-workflow-template.md) page.&#x20;

## Event Notification

**Description:** The Event Notification service task emits a notification on the "Generic local action" event on the notification channel specified in the service task.

**Variables**

| Parameter               | Type                | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------- | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| notificationChannelName | NotificationChannel | Y        | Name of the Notification channel that will receive the event.                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| actName                 | String              | Y        | Logical name of the operation, used by DataWatcher when rendering a given **actCode**.                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| actAttrsPrefix          | String              | Y        | <p><strong>Prefix</strong> used in Action attributes; the default is "actAttrs\_".<br><strong>Action attributes</strong> are a list of variables injected at runtime in a workflow context. Each attribute is structured as a couple of:<br>- <strong>name</strong>: string element containing the name of the attribute <strong>(starting with the mentioned prefix)</strong>.<br>- <strong>value</strong>: string element containing the value of the attribute.<br>Example:<br>actAttrs\_MyAttrName=<br>MyAttrValue</p> |
| actOutcome              | Enum                | Y        | <p>Allowed values:<br>- running<br>- success (default)<br>- failure</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| actErrCode              | String              | N        | Attribute applied only when **actOutcome** is set to failure and indicates the error code associated with the failure.                                                                                                                                                                                                                                                                                                                                                                                                     |
| actErrMsg               | String              | N        | Attribute applied only when **actOutcome** is set to failure and indicates the error code associated with the failure.                                                                                                                                                                                                                                                                                                                                                                                                     |
| dcName                  | String              | Y        | Logical name of the data container, typically a filename.                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

## GUnzip File

**Description:** This service task unzips the GZIP archive specified in the `Input File` parameter and extracts its contentsinto a new file at the location defined by the `Output file Path` parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="148.11114501953125">Parameter</th><th width="110">Type</th><th width="107.0001220703125">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td>Full pathname (with filename) for the file to be uncompressed.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full pathname (with filename) for the output file. <br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## GZip File

**Description:** This service task compresses the input file specified in the `Input File` parameter and generates a gzip archive at the location defined in the `Output file Path` parameter, applying the selected `Compression Level` and `Compression Strategy`*.*

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th>Parameter</th><th width="233.888671875">Type</th><th width="106.999755859375">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Compression level</td><td>CompressionLevel</td><td>Y</td><td>Level of compression, default: <code>5</code>. <br>Values allowed: <code>0</code>-<code>9</code><br><code>0</code> for no compression and <code>9</code> for maximum compression. </td></tr><tr><td>Compression strategy</td><td>CompressionStrategyLevel</td><td>Y</td><td>Level of the compression strategy. The strategy parameter is used to tune the compression algorithm.<br>Values allowed: <br>DEFAULT (default)<br>FILTERED<br>HUFFMAN_ONLY</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td><p>Full pathname (path, name and extension) of the file to be compressed: <code>&#x3C;path>/filename</code></p><p>It is suggested to define a variable and specify the path value in the contract. </p></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td><p>Full pathname (path, name and extension) of the output file: <code>&#x3C;path>/filename</code></p><p>No extension will be automatically added to the output filename. <br>It is suggested to define a variable and specify the path value in the contract. </p></td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## ICAP

**Description:** It performs an antivirus/DLP check on a file in the filebox using a specific ICAP engine and returns the outcome of the check.

**Triggerable:** Yes

**Input Variables:**

| Parameter            | Type    | Required | Description                                                                                                                                                                                               |
| -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster              | Cluster | Y        | Cluster to be used                                                                                                                                                                                        |
| Exception If Harmful | Boolean | Y        | It throws an exception in case of scan error. E.g., the scan has been completed successfully and the file is harmful/contains sensitive data.                                                             |
| Exception On Failure | Boolean | Y        | It throws an exception in case of scan failure. E.g., the scan failed because of a connectivity error or an unexpected error from ICAP server.                                                            |
| File ID              | Long    | Y        | <p>Variable that contains the FilesetID of the file that will be scanned. <br>If the file is in a <code>FileDetail</code> variable, its ID can be retrieved with <code>${file.getRegistryId()}</code></p> |
| Icap                 | Icap    | Y        | ID of the ICAP engine that will perform the scan.                                                                                                                                                         |
| Icap method          | Enum    | N        | ICAP method (REQMODE or RESPMODE).                                                                                                                                                                        |
| Scan mode            | Enum    | N        | Scan mode (ANTIVIRUS or DLP).                                                                                                                                                                             |
| Return code          | String  | N        | <p>Result of scan. Default: <code>rc</code><br>For a detailed list of all the possible results, see the table below.</p>                                                                                  |

**Output codes**

<table><thead><tr><th width="134">Return code</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td>"0"</td><td>Scan performed successfully, the file is safe</td><td></td></tr><tr><td>"64"</td><td>Scan performed successfully, the file is harmful</td><td>This result can be returned only if<br>throwExceptionIfHarmful == false</td></tr><tr><td>"2"</td><td>Scan not performed, file not found</td><td>This result can be returned only if<br>throwExceptionOnFailure == false</td></tr><tr><td>"3"</td><td>Scan not performed, file too big</td><td>This result can be returned only if<br>throwExceptionOnFailure == false</td></tr><tr><td>"4"</td><td>Scan not performed, the ICAP server is unreachable</td><td>This result can be returned only if<br>throwExceptionOnFailure == false</td></tr><tr><td>"5"</td><td>Scan not performed, the ICAP server returned an error</td><td>This result can be returned only if<br>throwExceptionOnFailure == false</td></tr><tr><td>"32"</td><td>Scan not performed, some other error prevented it</td><td>This result can be returned only if<br>throwExceptionOnFailure == false</td></tr></tbody></table>

## List files VirtualBox

**Description:** When you provide a VirtualBox name, all related files will be listed as ExternalFile objects in the File List variable.

**Variables**

| Parameter   | Type       | Required | Description                                                                                                                                                    |
| ----------- | ---------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Virtual Box | VirtualBox | Y        | Virtual Box name where the given FileSet ID will be bound to                                                                                                   |
| File List   | String     | Y        | Variable that will contain the list of files as a result of the current operation. (Tip: You can cycle through elements of a list using the Subprocess object) |

## Local Execute Shell Command

**Description:** This service task executes the shell commands configured in the Executable parameter of the service task.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="132.4444580078125">Parameter</th><th width="116.5555419921875">Type</th><th width="107">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used.</td></tr><tr><td>Executable</td><td>String</td><td>Y</td><td>Command to be executed in the service task. For example, this parameter can contain the full path of a script that will be executed when the service task is executed:<br><code>home/doc/executeShellScript.sh</code>The STENG must have permissions to execute the script. </td></tr><tr><td>Arguments</td><td>String</td><td>N</td><td><p>List of arguments to be passed to the command execution.</p><p>Arguments must be separated by blanks. <br>Blanks and special characters are managed as per the standard Unix protection methods and must be enclosed in single or double quotes. <br>For example, given a script expecting 3 parameters, the Arguments field will contain:<br><code>Jane Smith "Oxford street 125 London UK"</code></p></td></tr><tr><td>Std Out</td><td>String</td><td>Y</td><td>Name of the variable that will be filled with the standard output logging.</td></tr><tr><td>Std Err</td><td>String</td><td>Y</td><td>Name of the variable that will be filled with the standard error logging.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>Workflow variable where the final return code will be written.</td></tr><tr><td>Return code management</td><td>Boolean</td><td>N</td><td>If checked, it will forcefully fail the command if a Return Code that is not 0 is returned. Otherwise, it completes with SUCCESS whatever the RC will be (for backward compatibility).</td></tr></tbody></table>

## Local FileSystem SpLs

**Description:** This service task retrieves a list of files from a directory in the local file system that the user has access to.

**Triggerable:** Yes

**Variables:**

| Parameter            | Type    | Required | Description                                                                                                                                                     |
| -------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster              | Cluster | Y        | Cluster to be used.                                                                                                                                             |
| Username             | String  | N        | Username used by this command.                                                                                                                                  |
| Password             | String  | N        | Password for the username used by this command.                                                                                                                 |
| Path                 | String  | Y        | Local path where file listing will be performed.                                                                                                                |
| List                 | String  | Y        | <p>Variable with the list of files as a result of the current operation. <br>Tip: You can cycle through the items in this list using the Subprocess object.</p> |
| Return Code variable | String  | Y        | Workflow variable where the final return code will be written.                                                                                                  |

## Local SpConv

**Description:** This service task converts an input file by modifying its character encoding and/or line-ending format, then saves the result as a new file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th>Parameter</th><th width="173">Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td>Full path to the input file. Example: <code>home/&#x3C;filename></code></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full path to the output file generated by the conversion. Example: <code>home/&#x3C;filename></code></td></tr><tr><td>Input Code Page</td><td>Code_page</td><td>Y</td><td>Charset of the input file. See the <a href="/pages/bXblCQPvaPonLHqKDwk2#default-charset">Default charset</a> page for the entire list of supported charsets. <br>The codepage can be used as well. </td></tr><tr><td>Output Code Page</td><td>Code_page</td><td>Y</td><td>Charset of the output file. See the <a href="/pages/bXblCQPvaPonLHqKDwk2#default-charset">Default charset</a> page for the entire list of supported charsets. <br>The codepage can be used as well. </td></tr><tr><td>Input EOL</td><td>Eol</td><td>N</td><td>EOL of the input file.</td></tr><tr><td>Output EOL</td><td>Eol</td><td>N</td><td>EOL of the output file.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>Workflow variable where the final return code will be written.</td></tr></tbody></table>

## Local SpGet

**Description:** This service task retrieves a file from a Virtual Path and saves it to a file system directory (destination path).

**Triggerable:** Yes

**Variables:**

| Parameter        | Type              | Required | Description                                                                              |
| ---------------- | ----------------- | -------- | ---------------------------------------------------------------------------------------- |
| Cluster          | Cluster           | Y        | Cluster to be used                                                                       |
| File Name        | String            | N        | Filename that will be used for the final file                                            |
| Destination Path | String            | Y        | Destination path where the fill will be placed                                           |
| File             | String            | Y        | Name of the file that will be retrieved in the virtual path set in the Source parameter. |
| Resource profile | Resource\_profile | N        | ResourceProfile, if any, to be applied during the operation                              |
| Return Code      | String            | Y        | Workflow variable where final return code will be written                                |
| Source           | Virtual\_path     | Y        | Virtual path where the file will be retrieved.                                           |

## Local SpPut

**Description:** This service task retrieves a file from a local folder and saves it on a destination Virtual Path with a filename specified in the `destination filename` parameter. The new file in Data Mover will have as filesetId the content of the `FilesetID created` variable.&#x20;

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th>Parameter</th><th width="172">Type</th><th width="115">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used.</td></tr><tr><td>Destination</td><td>Virtual_path</td><td>Y</td><td>Destination virtual path where the file will be placed.</td></tr><tr><td>Destination Filename</td><td>String</td><td>Y</td><td>Filename of the file on the destination virtual path.  </td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td>ResourceProfile, if any, to be applied to the file before it is put in the destination virtual path.</td></tr><tr><td>Return code</td><td>String</td><td>N</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr><tr><td>FilesetID created</td><td>String</td><td>Y</td><td>Variable that contains the FilesetID of the file put on the destination virtual path. <br>Default: <code>registryID</code>.</td></tr><tr><td>Source (path and filename)</td><td>String</td><td>Y</td><td>Source path and filename of the file to retrieve.</td></tr></tbody></table>

## Local VirtualPath SpLs

**Description:** This service task retrieves the list of contents from the Virtual Path specified in the `Virtual Path` parameter. The resulting list is stored in the variable defined in the `File List` parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="136">Parameter</th><th width="133">Type</th><th width="109.9998779296875">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used.</td></tr><tr><td>File List</td><td>String</td><td>Y</td><td>Specify the variable that contains the list of files found in the virtual path configured in the <code>Virtual Path</code> parameter below.<br>The default value is <code>filelist</code>, but you can change it as needed.<br>Tip: You can cycle through the items in this list using the Subprocess object.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>Workflow variable where the final return code will be written.</td></tr><tr><td>Virtual Path</td><td>Virtual_path</td><td>Y</td><td>Specify the Virtual Path whose contents you want to retrieve.<br>It is suggested to define a variable and specify the Virtual Path value in the contract.<br>If you want to enter the full Virtual Path, use the following format:<br><code>&#x3C;vfs-name>:/&#x3C;virtual-path></code></td></tr></tbody></table>

## Mail pull

**Description:** this service task retrieves an email from a remote mail server set in the `Transfer profile` parameter and checks the presence of **one attachment** and the validity of the email’s digital signature.\
Based on the outcome of these checks, the service task routes the email content to one of three configured Virtual File Systems (VFS):

* **Verified VFS** – used when the email contains an attachment and the signature is successfully verified.
* **Unverified VFS** – used when the email includes an attachment but the digital signature cannot be validated.
* **Discarded VFS** – used when the email has no attachment or has two or more attachments.

In all three cases:

* the raw email body is stored in the appropriate VFS under the virtual path specified in the `Raw` parameter. The filename of the stored email body is the email Subject.
* the attachment is saved as a file within the virtual path defined in the `Attachment Virtual Path` parameter. The filename of the stored attachment is configured using the `Rendering filename` parameter.

Both the `Attachment Virtual Path` and `Raw` parameters are used to build the final virtual paths within each of the three VFS destinations.

All fields are **case‑sensitive** and must match exactly what is defined on the remote mail server. If variables are defined, when specifying their value in the Contract, make sure the field is correct.

The file containing the email raw message and the file containing the attachment are enriched with the following metadata:

* Destination mail address
* Sender mail address
* Mail subject
* Mail Text Overflow
* Mail Sent Date
* Mail Receive Date
* Mail Sign State
* Mail Sign State Msg
* Mail Sign Date
* Mail Sign Dn
* Mail Sign Cert
* Mail Raw Size (this metadata is only on the file containing the attachment)

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th>Parameter</th><th>Type</th><th width="108">Required</th><th>Description</th></tr></thead><tbody><tr><td>Attachment Virtual Path</td><td>String</td><td>Y</td><td>Virtual path where the <strong>email attachment</strong> is stored. This path is combined with the selected VFS (Verified, Unverified, or Discarded) to determine the final storage location. The attachment is saved as a file using the name defined in the <code>Rendering filename</code> parameter.<br>It is suggested to define a variable and specify the path value in the contract.<br>If you want to enter only the virtual path, use the following format: <code>&#x3C;virtual_path></code></td></tr><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Rendering Filename</td><td>String</td><td>N</td><td><p>Filename used when storing the email attachment in the VFS.</p><p>Enter one of the following values (or leave the field blank to use the default <strong>NAME</strong> option):</p><ul><li>(default) NAME: the original filename of the email attachment is used.</li><li>SUBJECT: the email’s Subject is used as the filename.</li><li>FROM: the sender’s email is used as the filename.</li><li>DATE: the email’s date is used as the filename.</li></ul></td></tr><tr><td>VFS discarded</td><td>String</td><td>Y</td><td>Virtual file system where <strong>emails without attachments</strong> or with more than one attachment are stored. Raw email bodies are saved here under the path defined in <code>Raw</code>.<br>It is suggested to define a variable and specify the VFS name in the contract.<br>If you want to enter the VFS name, use this format: <code>&#x3C;VFS_name></code></td></tr><tr><td>Raw</td><td>String</td><td>Y</td><td>Virtual path where the the raw <strong>email body</strong> is stored. Regardless of the processing outcome (Verified, Unverified, or Discarded), the full email content in its original raw format is saved in the virtual path defined by this parameter.<br>This path is combined with the selected VFS to determine the final storage location.<br>The <strong>email body</strong> filename is the email's Subject. <br>It is suggested to define a variable and specify the path value in the contract.<br>If you want to enter only the virtual path, use the following format: <code>&#x3C;virtual_path></code></td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Name of the monitored mailbox folder.<br>Different mail providers may use different names such as <em>inbox</em> or <em>spam</em>. The mailbox folder name <strong>must match exactly</strong> the value of the mailbox "country" field and must be written <strong>exactly as they appear on the mail server</strong>. E.g.,<br>- Inbox<br>- INBOX<br>- Posta in arrivo<br>It is suggested to define a variable and specify the folder in the contract.<br>If you want to enter only the mailbox folder, use the following format: <br><code>&#x3C;mailbox_folder></code></td></tr><tr><td>Return Code</td><td>String</td><td>N</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to connect to the server email to collect the email with the attachment.<br>It is suggested to define a variable and specify the Client Connection name in the contract.</td></tr><tr><td>VFS unverified</td><td>String</td><td>Y</td><td>Virtual file system used to store <strong>emails with an attachment and whose digital signature cannot be verified</strong>. Raw email bodies are saved here under the path defined in <code>Raw</code>. The attachment is saved under the path defined in <code>Attachment Virtual Path</code>.<br>It is suggested to define a variable and specify the VFS name in the contract.<br>If you want to enter the VFS name, use this format: <code>&#x3C;VFS_name></code></td></tr><tr><td>VFS verified</td><td>String</td><td>Y</td><td>Virtual File System used to store <strong>emails with an attachment and whose digital signature has been successfully verified</strong>. When an email passes both checks, the email body is stored under the <code>Raw</code> virtual path and the attachment under the <code>Attachment Virtual Path</code>.<br>It is suggested to define a variable and specify the VFS name in the contract.<br>If you want to enter the VFS name, use this format: <code>&#x3C;VFS_name></code></td></tr></tbody></table>

## Mail push

**Description**: This service task sends one email to a remote mail server set in the `Transfer profile` parameter. The body of the email is set in the `Body` parameter. An attachment can be defined in the `FileSet Id` parameter. The email might be signed or not, depending on the value of the `Mail sign` parameter.&#x20;

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="154">Parameter</th><th width="150">Type</th><th width="100.9998779296875">Required</th><th>Description</th></tr></thead><tbody><tr><td>Body</td><td>String</td><td>Y</td><td>Body of the email</td></tr><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>FileSet Id</td><td>Long</td><td>N</td><td>The FilesetID of the file that will be attached to the email. Only one file can be attached to each email. </td></tr><tr><td>From</td><td>String</td><td>Y</td><td>Email sender </td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Alias Sign</td><td>String</td><td>Y</td><td>Key ID of the private key used to sign the email. <br>Email sign alias key (mandatory if 'Sign Mail' is required)</td></tr><tr><td>Mail Sign</td><td>String</td><td>N</td><td>Whether the email sign is required or not.</td></tr><tr><td>Subject</td><td>String</td><td>Y</td><td>Email subject </td></tr><tr><td>To</td><td>String</td><td>Y</td><td>Email recipient</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to send the email to the configured email address.<br>It is suggested to define a variable and specify the Client Connection name in the contract: ${profile}</td></tr></tbody></table>

## Mail push templated

**Description:** This service task sends one email with attachment to a remote mail server set in the `Transfer profile` parameter. The body of the email does not need to be defined since the email template defined in the `Template ID` parameter is used.&#x20;

**Triggerable:** Yes

**Variables:**

| Parameter        | Type            | Required | Description                                                                                                                                                                                                                                                 |
| ---------------- | --------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster          | Cluster         | Y        | Cluster to be used                                                                                                                                                                                                                                          |
| FileSet Id       | Long            | N        | The FilesetID of the file that will be attached to the email. Only one file can be attached to each email.                                                                                                                                                  |
| From             | String          | N        | Email sender                                                                                                                                                                                                                                                |
| Return Code      | String          | N        | The workflow variable where the final return code will be written. Default: `rc`.                                                                                                                                                                           |
| Subject          | String          | Y        | Email subject                                                                                                                                                                                                                                               |
| Default replacer | String          | N        | <p>If the mail template contains variables that are not populated, Data Mover will use the value specified in this field.<br>Example: NoInfo</p>                                                                                                            |
| Template ID      | String          | Y        | Identifier of the HTML template to be used for the body<mark style="color:$danger;">.</mark> Templates are configured in Setup → [Email Templates](/data-mover-1.21/notification-channels/manage-templates/email-templates.md).                             |
| To               | String          | Y        | Email recipient                                                                                                                                                                                                                                             |
| Transfer profile | TransferProfile | Y        | <p><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to send the email to the configured email address.<br>It is suggested to define a variable and specify the Client Connection name in the contract.<br><code>${profile}</code></p> |

## PGP Crypt File

**Description:** It invokes the PGP Crypt service on an input file that produces an encrypted file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="145.77783203125">Parameter</th><th width="127.6221923828125">Type</th><th width="107.8887939453125">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input file</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the file to be encrypted. <br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Alias key</td><td>String</td><td>Y</td><td>Alias key (Key ID) to use for encryption.  </td></tr><tr><td>Output file</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the output file.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>PGP format</td><td>String</td><td>Y</td><td>PGP format: binary or ascii-armor</td></tr><tr><td>Recipient</td><td>String</td><td>Y</td><td>Recipient of the file</td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr><tr><td>Cipher algorithm</td><td>CipherAlgorithmSecurity</td><td>Y</td><td>Cipher security algorithm. Values allowed: <br>- DES<br>- DES_EDE3<br>- AES128<br>- AES192<br>- AES256<br>- RC2</td></tr><tr><td>Operation security</td><td>OperationSecurity</td><td>Y</td><td>Security operations. Allowed values:<br>- NONE (no security applied)<br>- ENVELOPE (envelope‑based security applied)<br>- OPEN (Security enabled based on open standards)<br>- SIGN_AND_ENVELOPE (both signing and envelope‑based security applied)<br>- SIGN (digital signature only applied)</td></tr><tr><td>Hash algorithm</td><td>HashAlgorithmSecuritySignature<br></td><td>Y</td><td>Hash algorithm of the security signature. Values allowed:<br>- MD2<br>- MD5<br>- SHA1<br>- SHA256<br>- SHA384<br>- SHA512</td></tr></tbody></table>

## PGP Decrypt File

**Description:** It invokes PGP Decrypt service on an input encrypted file and it produces a decrypted file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="165.77783203125">Parameter</th><th width="110.22216796875">Type</th><th width="112.4443359375">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the file to be decrypted.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the output file.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>PGP format</td><td>String</td><td>Y</td><td>PGP format in binary or ascii-armor</td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## Remote SpJMSPush

**Description**

This service task splits file into one or more messages, maps file metadata into JMS message attributes and sends JMS messages. These 2 triggers are associated with this service task:

* [system\_newfile\_JMS-push](https://docs.primeur.com/data-mover-1.21/workflow-templates/service-tasks/pages/JanyWTlsU58FTA4llglA#id-4.-push-new-file-as-jms-message) – New File – triggered
* [system\_vBind\_JMS-push](https://docs.primeur.com/data-mover-1.21/workflow-templates/service-tasks/pages/JanyWTlsU58FTA4llglA#id-3.-push-vbox-bind-file-as-jms-message) – Virtual Box Bind - triggered

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th>Parameter</th><th width="148">Type</th><th width="108">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used.</td></tr><tr><td>JMS delivery modes</td><td>String</td><td>N</td><td><p>Method of delivery of JMS messages. Options are: </p><p>- Persistent (the message is saved and its delivery is ensured). </p><p>- Non_persistent (the message must not be saved and could be lost, for example in case of problems on the server).</p></td></tr><tr><td>File ID</td><td>Long</td><td>Y</td><td><p>ID of the file to be pushed. </p><p>Tip: if the file is in a <code>FileDetail</code> variable, its ID can be retrieved with <code>${file.getRegistryId()}</code></p></td></tr><tr><td>Remote JMS destination</td><td>String</td><td>Y</td><td>Name of the JMS destination</td></tr><tr><td>Remote JMS destination type</td><td>JMS_type</td><td>Y</td><td>Type of JMS destination. Options are: queue or topic</td></tr><tr><td>Splitting Message Processing Rule</td><td>Message_processing_rule</td><td>N</td><td>Splitting Message Processing Rule to be applied. It is configured in <strong>Setup</strong> → <a href="/pages/7ONELQ4gzZKVjnXmXOVs">Message processing rule</a>.</td></tr><tr><td>JMS Message priority levels</td><td>Integer</td><td>N</td><td>Priority assigned to the messages that are created when splitting the file. It must be an integer between 0 and 9. Default is 4.</td></tr><tr><td>Propagates Data One Metadata</td><td>Boolean</td><td>N</td><td>This variable propagates system metadata to JMS Properties. See the <a href="/pages/ca0rWandfC10dYn1wUlC">Metadata mapping for split file content</a> page for details.</td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>Return code</td><td>String</td><td>N</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>JMS Message time to live</td><td>Long</td><td>N</td><td>This variable sets how many seconds messages will live. A number higher than 0 is accepted.</td></tr><tr><td>Transfer profile</td><td>JMS_transfer_profile</td><td>Y</td><td>Client Connection that must be used to push the file to the remote path. See <a href="/pages/nLoVPA8jrXvJpgrMhyOs">Client Connection: JMS</a> for details. </td></tr></tbody></table>

## Remote SpLs

**Description:** This service task retrieves the list of contents from path specified in the `Remote Path` parameter. The resulting list is stored in the variable defined in the `List` parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="163">Parameter</th><th width="181">Type</th><th width="111">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Specify the remote path of the contents you want to retrieve.<br>It is suggested to define a variable and specify the  path value in the contract.<br>If you want to enter the full remote path, use the following format:<br><code>&#x3C;remote-path></code></td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to connect to the remote location. <br>It is suggested to define a variable and specify the  Client Connection name in the contract.</td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>List</td><td>String</td><td>Y</td><td>Variable that will contain the list of files as a result of the current operation. <br>You can cycle through the items in this list using the Subprocess object.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr></tbody></table>

## Remote SpMkdir

**Description:** This service task creates a new folder with the path configured in the `Remote path` parameter on the remote server identified by the `Transfer profile`. parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="207">Parameter</th><th width="164">Type</th><th width="115">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Remote path of the folder to create</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to create the folder on the remote path.<br>It is suggested to define a variable and specify the Client Connection name in the contract.</td></tr></tbody></table>

## Remote SpMv

**Description:** This service task removes files from the remote path specified in the `Remote path` parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="160">Parameter</th><th width="167">Type</th><th width="107">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Specify the remote path of the contents you want to remove.<br>It is suggested to define a variable and specify the path value in the contract.<br>If you want to enter the full remote path, use the following format:<br><code>&#x3C;remote-path></code></td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to connect to the remote location. <br>It is suggested to define a variable and specify the Client Connection name in the contract.</td></tr></tbody></table>

## Remote SpPull

**Description:** This service task pulls the file specified in the `Remote path and Filename` parameters from the remote server configured in the `Transfer profile` parameter.

The pulled file will be placed in the virtual path configured in the `Destination` parameter, using the name specified in the `Dest Filename` parameter.

The *filesetID* of the file is returned in the variable configured in the `FilesetID` parameter.

An optional **file resource** can be set in the `Resource profile` parameter. When configured, the file resource defines one or more processing steps to be applied to the pulled file **before** placing it into the destination virtual path.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="187">Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Destination</td><td>Virtual_path</td><td>Y</td><td>Destination virtual path where the file will be placed.</td></tr><tr><td>Dest Filename</td><td>String</td><td>Y</td><td>Name of the file to set once pulled.</td></tr><tr><td>Remote path and filename</td><td>String</td><td>Y</td><td>Absolute remote source path (path and filename) where the file is collected.<br>For SFTP transfers, see "Remote SpPull custom commands for SFTP transfers" below.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full remote path, use the following format: <code>/&#x3C;remote-path/filename></code></td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>Return Code variable</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>FilesetID created</td><td>String</td><td>Y</td><td>Name of the variable that will contain the RegistryID (FilesetID) of the created file.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to retrieve the file and write it to a virtual path.<br>It is suggested to define a variable and specify the Client Connection name in the Contract.</td></tr></tbody></table>

**Remote SpPull custom commands for SFTP transfers**

Before a **Remote SpPull SFTP transfer**, `cd` and `ls` custom commands can be run to change the directory where files are pulled or to show the list of files/folders in the directory.

The commands must be entered manually during the workflow design phase. They must be written in a **Script task** service task and added before the **RemoteSpPull** service task.

The variable to be used for these custom commands is `preClientPull_<sequentialNumber>` followed by the `cd` or `ls` custom command and the absolute or relative directory. The sequential number indicates the order in which the commands are executed in the workflow and **starts at 0**. The order of execution is always determined by this sequential number, **not by the order in which they are entered in the script**.

This is an example of two commands of the **Script task** service task:

`execution.setVariable("preClientPull_0", "cd /home/user1/dataone/in");`\
`execution.setVariable("preClientPull_1", "ls ..");`

Once inserted into the workflow, the variable will be applied to the following service task. To change the values of the variables in other **RemoteSpPull** service tasks, additional **Script task** service tasks must be added with the new variables.

If the variable contains the `cd` command, the new directory overwrites the one specified in the remote path of the client connection's directory. The directory can be absolute or relative.

To check that the `cd` command has been executed correctly, go to **Monitoring** → **Logs** and enter the message code SFP1055. This is an example of the message displayed: Master: SFTP Start Executing command: CdCommand{path='/home/user1/dataone/in'}

If the variable contains the `ls` command, a list of specific files or directories will be created. An absolute or relative directory can be given as input.

Checking that the `ls` command is executed correctly is done in 2 ways:

1. In the Steng's `messages.log` file.
2. Going to **Monitoring** → **Logs** and using the message code SFP1056. This is an example of the message shown: Master: SFTP End Executing command: LsCommand{path='..'}

## Remote SpPush

**Description:** This service task transfers a file to a remote server. The file to be transferred is identified by the fileset ID configured in the `File ID` parameter. The remote server where the file will be sent is configured in the `Transfer profile` parameter. The file is uploaded to the remote server under the `Remote path` specified.

An optional file resource can be set in the  `resource profile`. When configured, the file resource defines one or more processing steps to be applied to the file **prior to transfer**.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="164">Parameter</th><th width="165">Type</th><th width="107">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>File ID</td><td>Long</td><td>Y</td><td>ID of the file to be pushed (Tip: if the file is in a "FileDetail" variable, its ID can be retrieved with ${file.getRegistryId()} )</td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Destination remote path where the file will be placed.<br>For SFTP transfers, see "Remote SpPush custom commands for SFTP transfers" below.</td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to retrieve the file from the virtual path and write it to the file system path.<br>It is suggested to define a variable and specify the Client Connection name in the contract.</td></tr></tbody></table>

**Remote SpPush custom commands for SFTP transfers**

Before a **Remote SpPush SFTP transfer**, `cd` and `ls` custom commands can be run to change the directory where files are pushed or to show the list of files/folders in the directory.

The commands must be entered manually during the workflow design phase. They must be written in a **Script task** service task and added before the **RemoteSpPush** service task.

The variable to be used for these custom commands is `preClientPush_<sequentialNumber>` followed by the `cd` or `ls` custom command and the absolute or relative directory. The sequential number indicates the order in which the commands are executed in the workflow and **starts at 0**. The order of execution is always determined by this sequential number, **not by the order in which they are entered in the script**.

This is an example of two commands of the **Script task** service task:

`execution.setVariable("preClientPush_0", "cd /home/user1/dataone/out");`\
`execution.setVariable("preClientPush_1", "ls ..");`

Once inserted into the workflow, the variable will be applied to the following service task. To change the values of the variables in other **RemoteSpPush** service tasks, additional **Script task** service tasks must be added with the new variables.

If the variable contains the `cd` command, the new directory overwrites the one specified in the remote path of the client connection's directory. The directory can be absolute or relative.

To check that the `cd` command has been executed correctly, go to **Monitoring** → **Logs** and enter the message code SFP1055. This is an example of the message displayed: Master: SFTP Start Executing command: CdCommand{path='/home/user1/dataone/out'}

If the variable contains the `ls` command, a list of specific files or directories will be created. An absolute or relative directory can be given as input.

Checking that the `ls` command is executed correctly is done in 2 ways:

1. In the Steng's `messages.log` file.
2. Going to **Monitoring** → **Logs** and using the message code SFP1056. This is an example of the message shown: Master: SFTP End Executing command: LsCommand{path='..'}

## Remote SpRm

**Description:** This service task removes files from the remote path specified in the `Remote path` parameter.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="160">Parameter</th><th width="167">Type</th><th width="107">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Remote path</td><td>String</td><td>Y</td><td>Specify the remote path of the contents you want to remove.<br>It is suggested to define a variable and specify the path value in the contract.<br>If you want to enter the full remote path, use the following format:<br><code>&#x3C;remote-path></code></td></tr><tr><td>Resource profile</td><td>Resource_profile</td><td>N</td><td><a href="/pages/70mtp8XguRUVeCVVtZin">File resource</a>, if any, to be applied during the operation.</td></tr><tr><td>Return code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: rc.</td></tr><tr><td>Transfer profile</td><td>Transfer_profile</td><td>Y</td><td><a href="/pages/Av3LOwepqIHKlzeKAehp">Client Connection</a> to be used to connect to the remote location. <br>It is suggested to define a variable and specify the Client Connection name in the contract.</td></tr></tbody></table>

## Spjz Sub

**Description:** This service task submits a JCL to the zOS platform.

**Triggerable:** Yes

**Variables:**

| Parameter        | Type    | Required | Description                                                                                                                                        |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cluster          | Cluster | Y        | Cluster to be used                                                                                                                                 |
| Dataset          | String  | Y        | Directory name                                                                                                                                     |
| FilesetId        | Long    | Y        | ID of the file to be used in the zOS job (Tip: if the file is in a "FileDetail" variable, its ID can be retrieved with `${file.getRegistryId()} )` |
| JES Reader Class | String  | Y        | JES Reader Class                                                                                                                                   |
| Member           | String  | N        | File name                                                                                                                                          |
| Return code      | String  | Y        | The workflow variable where the final return code will be written. Default: `rc`.                                                                  |

## Tar File

**Description:** It invokes the SpTar service on an input file and produces a tar output file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="148.3333740234375">Parameter</th><th width="111.6666259765625">Type</th><th width="107.7777099609375">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td><p>Full pathname (path, name and extension) of the file to be compressed: <code>&#x3C;path>/filename</code></p><p>It is suggested to define a variable and specify the path value in the contract. </p></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td><p>Full pathname (path, name and extension) of the output file: <code>&#x3C;path>/filename</code></p><p>No extension will be automatically added to the output filename.<br>It is suggested to define a variable and specify the path value in the contract. </p></td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## UnBind VirtualBox

**Description:** Given a FileSetID, the association between it and the provided VirtualBox name will be deleted.

**Variables**

| Parameter   | Type                      | Required | Description                                                  |
| ----------- | ------------------------- | -------- | ------------------------------------------------------------ |
| File ID     | VariableType.LONG         | Y        | Fileset ID to operate the BIND operation to                  |
| Virtual Box | VariableType.VIRTUAL\_BOX | Y        | Virtual Box name where the given FileSet ID will be bound to |

## UnTar File

**Description:** This service task invokes the **SpUnTar** service on an input TAR file and generates an extracted output file. If the input `.tar` file contains multiple files, the output file will include only the first file in the archive.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="153.4444580078125">Parameter</th><th width="106.11114501953125">Type</th><th width="108">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td><p>Full pathname (path, name and extension) of the file to be uncompressed: <code>&#x3C;path>/filename</code></p><p>It is suggested to define a variable and specify the path value in the contract. </p></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full pathname (path, name and extension) of the output file: <code>&#x3C;path>/filename</code><br>It is suggested to define a variable and specify the path value in the contract. </td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## UnZip File

**Description:** It invokes the SpUnZip service on a zip input file and produces an unzip output file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="184.666748046875">Parameter</th><th width="104.5555419921875">Type</th><th width="108.2222900390625">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the file to be uncompressed.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the output file.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Compression Mode</td><td>Enum</td><td>N</td><td>Compression mode of Compression64Mode. Values allowed:<br><code>ALWAYS</code> - Compression is always applied. <br><code>NEVER</code> - Compression is never applied.</td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>

## Zip File

**Description:** It invokes the SpZip compression service on an input file and produces a zip output file.

**Triggerable:** Yes

**Variables:**

<table><thead><tr><th width="150.55560302734375">Parameter</th><th width="137.1109619140625">Type</th><th width="111.444580078125">Required</th><th>Description</th></tr></thead><tbody><tr><td>Cluster</td><td>Cluster</td><td>Y</td><td>Cluster to be used.</td></tr><tr><td>Input File</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the file to be compressed.<br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Output file Path</td><td>String</td><td>Y</td><td>Full pathname (with filename) of the output file.<br>No extension will be automatically added to the output filename. <br>It is suggested to define a variable and specify the path value in the contract. If you want to enter the full path, use the following format: <code>&#x3C;path>/filename</code></td></tr><tr><td>Compression Strategy</td><td>Compression_strategy_level</td><td>Y</td><td>Level of the compression strategy. The strategy parameter is used to tune the compression algorithm.<br>Values allowed: <br><code>DEFAULT</code> (default)<br><code>FILTERED</code><br><code>HUFFMAN_ONLY</code></td></tr><tr><td>Compression Level</td><td>String</td><td>Y</td><td>Level of compression, default: <code>5</code>. <br>Values allowed: <code>0</code>-<code>9</code><br><code>0</code> for no compression and <code>9</code> for maximum compression. </td></tr><tr><td>Compression Mode</td><td>Enum</td><td>N</td><td>Compression mode of Compression64Mode. Values allowed:<br><code>ALWAYS</code> - Compression is always applied. <br><code>NEVER</code> - Compression is never applied.</td></tr><tr><td>Return Code</td><td>String</td><td>Y</td><td>The workflow variable where the final return code will be written. Default: <code>rc</code>.</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.primeur.com/data-mover-1.21/workflow-templates/service-tasks/triggerable-service-tasks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
