# Flows & Handlers

"Flows" are a set of statements like pseudocode, written using simplified language, for implementing integrations.

## Introduction to Flows

Flows act as a neural schema for system integration, carrying out the whole integration process end to end. The flow is responsible for handling business logic, making API calls to the targeted system, formatting and validating data, logging transactions and so on.

Flows are created by developing a logical program sequence using lines of code-representation known as Handlers. Handlers form the backbone of every Flow.

![](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvRMuG9jfXv_ZeDPN0i%2F-LvRN3viYzY3xmAsbuCQ%2Fezgif.com-video-to-gif.gif?alt=media\&token=6e2cf737-5b2c-4603-943b-b77e2acac6b7)

{% hint style="info" %}

1. The list of Pipes associated with a Flow are displayed below the Flow Status Area.&#x20;
   {% endhint %}

![Pipe List in the Flows page](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjVABEcCgwItwY4IEAD%2Fuploads%2FiWUtTCzOegENKWIvp6O4%2FFlows%201.png?alt=media\&token=83285055-002a-41e9-a9da-82c0a75f8a68)

### What are Handlers?

Handlers are statements used to build a flow, in the form of code-representation by following an algorithmic approach. Every handler has its functional logic and requires a certain set of parameters to be defined to carry out its activities. Multiple Handlers are available to the user to build their flow.

![](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQM7gx-sAxmkIAFcIe%2F-LvQN1NElwIuB3FxIwwS%2FClo%20Doc%204.png?alt=media\&token=a6ad9829-34b5-4287-96a2-91c16ea0025c)

Some example functionalities that Handlers can perform include

* :arrow\_upper\_right: Making API calls to any system
* :aries: Assigning data to variables
* :twisted\_rightwards\_arrows: Mapping of the API fields
* :notepad\_spiral: Display log messages
* :fast\_forward: Sending data to the destination system in the required format
* :envelope\_with\_arrow: Sending emails and so on

The same handler can be used N number of times in a Flow.

### How to use Handlers?

Simply drag and drop Handlers to the ‘Play Area’ to include them in your Flow. Once it is positioned in the coding area, its parameters need to be assigned. These parameters are different for each handler and are discussed in detail [below](#available-handlers).

![Drag & Drop Feature](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvR2X5p7tY-pdZwhEup%2F-LvR38fwxlQ9wZJvVhlj%2FScreenshot%202019-12-06%20at%209.57.49%20PM.png?alt=media\&token=4956e69d-299a-4fac-87b0-24f13e0c32a1)

Handlers can also be copied, moved, and commented on within the Play Area and can also be deleted when they are no longer needed.

### Selecting Multiple Handlers

Multiple Handlers can be selected by selecting the checkbox alongside each handler statement. Once the handlers are selected, user may Cut/Copy/Delete/Comment the statements as needed. &#x20;

![](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-Mia3umb3N0EmeTrLz9o%2F-MiaBNgouC60fu5oc-Ut%2Fimage.png?alt=media\&token=8ecb8135-0645-459c-8838-b88960a2b397)

## Available Handlers

### API Calls

Triggers an API Call in which you can pass parameters and payload to any system. The API responses will be stored in a defined variable which is available for further usage in the Flow.

![API Call Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQP-LDO6u8jx59yIU3%2F-LvQPCjTJRdlmKttVP77%2FApi%20calls.png?alt=media\&token=1ded361d-39db-466c-8b88-86c44560983a)

While clicking on the API dropdown list, a differentiator to identify public and private APIs will be seen. See image below:&#x20;

![](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjVABEcCgwItwY4IEAD%2Fuploads%2Fvdx4keaoV1QwSUKUJDm8%2Fap%20calls.png?alt=media\&token=e462c40d-32ee-4855-ac92-d2812e076f6d)

{% hint style="success" %}
It is recommended to use the `If, Else` handlers after the `API call` handler, to ensure the validity of the API response.
{% endhint %}

<table data-header-hidden><thead><tr><th>Parameters</th><th width="299.5806451612903">Definition</th><th>Type</th></tr></thead><tbody><tr><td><em>Parameters</em></td><td><em>Definition</em></td><td><em>Type</em></td></tr><tr><td>Systems</td><td>Platform to send and receive responses</td><td>DropDown</td></tr><tr><td>API</td><td>API endpoints of the selected system. Depending on the Platform chosen, the list of API’s in the dropdown changes.</td><td>DropDown</td></tr><tr><td>Response Variable</td><td><p>Stores API response</p><p>Example: <code>customer_info</code>, <code>create_customer_data</code>, etc</p></td><td>Variable</td></tr><tr><td>Payload</td><td>Request Body. Information sent along with the API call </td><td>Variable (defined), JSON, Array</td></tr><tr><td>Files</td><td><p>Upload one or many files contents. Example: <br><code>[</code> </p><p><code>('file', ('foo.csv', "hello,there,csv,data")), ('file', ('bar.txt', "this is a file content"))</code> </p><p><code>]</code></p></td><td>Variable (defined), JSON, Array</td></tr><tr><td>Headers</td><td><p>Request Headers </p><p>Example: </p><p><code>{"Accept": "application/json"}</code></p></td><td>Variable (defined), JSON</td></tr><tr><td>URL Arguments</td><td><p>Arguments used in a dynamic URL.</p><p></p><p>API URL: <code>/api/customer/{customer_id}/fetch</code></p><p>URL Argument: <code>{"customer_id":"2"}</code></p><p>Formatted URL: <code>/api/customer/2/fetch</code></p><p></p><p>In this case, <code>customer_id</code> is replaced with the number <code>2</code>.</p></td><td>Variable (defined), JSON</td></tr><tr><td>Parameters</td><td><p>Request parameters</p><p></p><p>API URL: <code>api/customer/get/?format={format}</code></p><p>Query Params: <code>{"format":"json"}</code></p><p>Formatted URL: <code>api/customer/get/?format=json</code></p><p></p><p>Here, <code>format = json</code> will be the query parameters.</p></td><td>Variable (defined), JSON</td></tr><tr><td>Override time</td><td>To override the timeout at Flow level. Read more below.</td><td></td></tr></tbody></table>

#### **For XML Payload (Examples)**

#### Plain request

`{'plain_request': {'key1':'value1','key2':'value2'}}`

#### Not a plain request

`{'body':{'key1':'value1','key2':'value2'}}`

{% hint style="info" %}
`Use keywords(DYNAMIC_TOKEN, GET_FROM_CREDENTIALS) to fetch and pass the respective dynamic information in headers and payload.`
{% endhint %}

* DCKAP Integrator accepts API responses in JSON, CSV and Text formats.
* API Call Handler also has the facility to add headers from Flows.

#### To add additional envelope namespace&#x20;

Along with the above request, add another key “envelope\_namespace” to add additional namespace with default namespace

XML Request Body

```xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com">
   <soapenv:Header>
   </soapenv:Header>
   <soapenv:Body>
      <urn:login>
         <urn:username>user1@ddckap.com</urn:username>
         <urn:password>user1@123</urn:password>
      </urn:login>
   </soapenv:Body>
</soapenv:Envelope>
```

Converted JSON request Body

<pre class="language-json"><code class="lang-json">{
    "envelope_namespace": "xmlns:urn='urn:enterprise.soap.sforce.com'",
<strong>    "body": {
</strong>        "urn:login": {
            "urn:username": "user1@ddckap.com", 
            "urn:password": "user1@123"
        }
    }
}
</code></pre>

{% hint style="info" %}
To <mark style="color:blue;">override</mark> the API manager timeout at the Flow level.

Choose: Yes/No from the drop-down list Yes - Override the timeout based on read and connect values mentioned here No - Do not override the timeout based on read and connect values mentioned here

"Connect" refers to the maximum allowed time for DCKAP Integrator to establish communication with the system to which the API call is made.&#x20;

"Read" refers to the maximum allowed time for the system to respond back to DCKAP Integrator.
{% endhint %}

### MySQL

Connects to the SQL database and allows users to configure data in the SQL database.

| *Parameters*  | *Definition*                                                   | *Type*            |
| ------------- | -------------------------------------------------------------- | ----------------- |
| Variable      | Stores the response data (SQL response)                        | Variable          |
| Systems       | System to connect to                                           | DropDown          |
| Database Name | Database name to connect to                                    |                   |
| Action        | Operation to be performed on the data. See below for examples. | DropDown          |
| Data          | Data to be configured in the database                          | String/Non-string |
| Table Name    | Table name in the database                                     | String/Non-string |
| Condition     | Condition to validate to configure the data                    | String/Non-string |
| Limit         | Number of records needed                                       | String/Non-string |

**Different Action Types with examples**:&#x20;

```
Action: Insert 
Description: Used to insert a record into a table
Example: 
INSERT into table_name (name, email, contact_no) values ('John Smith', 'johnsmith@gmail.com', '+17427772299');
```

```
Action: Insert Many 
Description: Used to insert multiple records into a table
Example:  
INSERT into table_name (name, email, contact_no) values ('John Smith', 'johnsmith@gmail.com', '+17427772299'), ('Max Roger', 'roger@gmail.com', '+17217772299'), ('Mike Hussey', 'hussey@gmail.com', '+17347772299');
```

```
Action: Replace 
Description: Used to insert records into a table if there is no record found already, otherwise records will get updated
Example:
INSERT into table_name (name, email, contact_no) values ('John Smith', 'johnsmith@gmail.com', '+17427772299'), ('Mike Hussey', 'hussey@gmail.com', '+17347772299') ON DUPLICATE KEY UPDATE name=VALUES(name), email=VALUES(email), contact_no=VALUES(contact_no);
```

```
Action: Update 
Description: Used to update a record from the table
Example: UPDATE table_name SET name='Steve Smith', contact_no='+17433773377' WHERE email='steve@gmail.com';
```

```
Action: Delete 
Description: Used to delete a record from the table
Example:
DELETE from table_name WHERE email='hussey@gmail.com';
```

```
Action: Select 
Description: Used to retrieve a record from the table
Example: SELECT * FROM table_name WHERE email='johnsmith@gmail.com' limit 10;

To retrieve column names from the table below example query should be executed,
Query: SELECT * FROM table_name WHERE 1=0;
```

### Incrementer

Increments the value of a specified variable by a given step.

![Incrementer Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzgbnHNNlLIY8OK%2FIncreamenter.png?alt=media\&token=936a3084-cd3b-46d7-9c20-838748c8b26d)

| *Parameters* | *Definition*                                                                                             | *Type*                      |
| ------------ | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| Variable     | <p>Variable to be incremented.</p><p>Example: <code>line\_number</code>, <code>total\_records</code></p> | Variable (defined)          |
| Value        | Value by which the respective variable is increased                                                      | Numeric, Variable (defined) |

**Example**

```
Increment variable line_number by 1
```

Here, the variable line\_number will be incremented by value 1

### Formatter

The formatter is used to stringify/dump the JSON.

![Formatter Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzeLjmSiBJb0KRe%2FFormatter.png?alt=media\&token=210141ae-8d01-49c5-8ca2-08f8367fc1b5)

| *Parameters*  | *Definition*                                                                                                                                                                                           | *Type*                                |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- |
| Value         | <p>Data to be formatted.</p><p></p><p>Example: <code>orders\_summary</code>, <code>\["test", "array", "data"]</code>, <code>{'data': orders\_summary}</code></p>                                       | Variable (Defined), Array, Dictionary |
| Variable      | Stores formatted value                                                                                                                                                                                 | Variable                              |
| Delimiter     | One or more characters for specifying boundary  between separate entities                                                                                                                              |                                       |
| Line ending   |                                                                                                                                                                                                        |                                       |
| Default Value | <p>Available Options</p><ul><li>JSON Dumps - the output might include white-spaces.</li><li>JSON Dumps with separators - Eliminate white-space. To get the most compact JSON representation.</li></ul> |                                       |

### Try Block

&#x20;The Try Block is used to catch an error.

{% hint style="info" %}
No parameters are assigned for the Try Block
{% endhint %}

### Exception Block

The Exception block handles the exceptions caught by the Try Block

![Exception Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQWTcKMVAXL9XRcfIx%2Fexception.png?alt=media\&token=bfba6482-7483-4a77-b12d-f5a52b7effd1)

| *Parameters* | *Definition*                                                                             | *Type*   |
| ------------ | ---------------------------------------------------------------------------------------- | -------- |
| Catch        | <p>Types of Exception</p><p>Example: <code>Exception</code>, <code>ValueError</code></p> | String   |
| Variable     | Stores exception data                                                                    | Variable |

### Email Sender

Sends an email from the Flow to the assigned recipient list.&#x20;

| *Parameters*              | *Definition*                                                                                                                                                                         | *Type*                                                                                                                       |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| Send To                   | Recipient emails in comma-separated values                                                                                                                                           | String                                                                                                                       |
| Subject                   | Subject Line of the email                                                                                                                                                            | String                                                                                                                       |
| Character Set             | Choose one option from the drop-down for the character set type to be interpreted in the emails                                                                                      | <p>Choose from drop-down: </p><ul><li>US-ASCII </li><li>ISO-8859-1</li><li>UTF-8</li></ul>                                   |
| Content Transfer Encoding | Mail encoding method                                                                                                                                                                 | <p>Choose from drop-down: </p><ul><li>Quoted Printable </li><li>Base64 </li><li>7Bit </li><li>8Bit </li><li>Binary</li></ul> |
| Message Type              | <ul><li>Plain Text for sending string messages</li><li>HTML for sending mail as per a template</li></ul>                                                                             | <p>Choose from drop-down: </p><ul><li>Plain Text </li><li>HTML</li></ul>                                                     |
| Dynamic Data              | <ul><li>For Plain text, leave it blank</li><li>For HTML Message Type: </li></ul><p>a) if there is dynamic data, pass it as a dictionary here</p><p></p><p>b) else leave it blank</p> | Dictionary                                                                                                                   |
| Message                   | <ul><li>If string, give the string input</li><li>If non-string, provide the HTML template.</li></ul>                                                                                 | String/ Non-string                                                                                                           |

```
Example 1

Message Type: Plain Text
Dynamic Data: Leave it blank
Message: String
Dear Sir,
This is to inform you that we received your ticket.
```

```
Example 2

Message Type: HTML
Dynamic Data: Leave it blank
Message: Non-String
<html>
   <head>
      <h1> Line1 </h1>
   </head>
   <body>
      <i>This is a mail to communicate that we are working on your ticket </i>
   </body>
</html>
```

```
Example 3

Message Type: HTML
Dynamic Data:  
{"keys": ["Name","Age","Company"], 
"records": 
[
{"name": "Alex", "age": 25, "company": "DCKAP"},
{"name": "David", "age": 28, "company": "DCKAP"}
]
}
Message: Non-String
<!DOCTYPE html> 
<html>
   <head>
      <style> 
         table, th, td { border: 1px solid black; } 
      </style>
   </head>
   <body>
      <table>
         <tr>
            {% for key in keys %}
            <td>{{key}}</td>
            {% endfor %} 
         </tr>
         <tr>
               {% for dict_item in records %}
                      {% for key, value in dict_item.items() %} 
                              <td>{{value}}</td>
                      {% endfor %}
                      <tr></tr>
               {% endfor %} 
         </tr> 
      </table>
   </body>
</html>
```

{% hint style="warning" %}
Base-64 HTML Combination and occasionally Base-64 plain text combinations don't work as expected. This will be addressed in the upcoming releases.
{% endhint %}

### Initialize Variable

Assigns and stores data in the specified variable which can be used in the Flow, after the variable declaration.

![Initialize Variable](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzhh3Pu3iQnBIe6%2Finitialize%20varibale.png?alt=media\&token=2bcce792-4e3b-4877-b16c-26a03af7c57b)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                                                                                                                                                                     | *Type*   |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
| Value        | String/Non-String                                                                                                                                                                                                                                                                                | DropDown |
|              | <p>Value or data assigned to a variable</p><p></p><p>Examples: </p><ul><li>String:<code>Hello World</code></li><li><p>Non String: </p><ul><li>Number ⇒ <code>0</code></li><li>Array ⇒ <code>\[1, 2, 3, 4, 5]</code></li><li>Dictionary ⇒ <code>{ "customer\_id": 123}</code></li></ul></li></ul> | Mixed    |
| Name         | Variable that stores the assigned value.                                                                                                                                                                                                                                                         | Variable |

#### Example 1

```
Assign value 0 to variable Area_Code
```

Here, `0` is assigned to the variable: `Area_Code`

#### Example 2

```
Assign value orders_info[‘data’][‘customers’] to variable customers
```

Here, the value in the dictionary: `orders_info[‘data’][‘customers’]` is assigned to a variable: customers

#### Example 3

```
Assign value {"entity_id": customer['id'], "shipto_id": ""} to variable customer_info
```

Here, the dictionary `{"entity_id": customer['id'], "shipto_id": ""}` is assigned to variable `customer_info`

#### Example 4

```
Assign value dependent_customers[item['customer_id']]['customer_id'] to 
variable mapped_orders['hdr']['customerId']
```

Here, the value in dictionary `dependant_customers[item['customer_id']][customer_id]` is assigned to variable `mapped_orders['hdr']['customerId']`

### Modify Variable

The handler is used to change or modify the contents of a variable (mainly array and dictionary), that has already been used in the flow.

![Modify Variable Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzlmA6z_uSOed4J%2Fmodify%20variable.png?alt=media\&token=ea39b83c-74b6-46ca-b22e-7fd43075090c)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | *Type*             |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| Variable     | Variable to be changed or updated. This variable should be already used in the flow and is to be modified                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Variable (defined) |
| Value        | String/Non-String                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | DropDown           |
|              | The data to replace or change in the variable                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | JSON, Array        |
| Type         | <p>Type of data to be modified</p><ul><li>Dictionary/JSON</li><li>Array</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | DropDown           |
| Action       | <p>Action to modify existing data</p><ul><li>Append ⇒  Push a value into the array as the last element</li><li>Update ⇒ Push a value into the dictionary as last element </li><li>Assign ⇒ To assign new {key: value} pair into the dictionary or to modify the existing value of a key in a dictionary</li><li><p>Pop:</p><ul><li>Array - Removes the last element</li><li>Dictionary - Removes the value of the given key </li></ul></li><li><p>Remove</p><ul><li>Array - Removes the given value</li></ul></li><li><p>Deep Copy </p><ul><li>Array and Dictionary - Makes a copy of the variable and assigns a new value </li></ul></li></ul><p>To learn more, find the use cases below</p> | String             |

#### Use Case 1 - Dictionary(Action: Assign)

```
Modify variable customer_info['customer_id'] with value custom_attribute['value']
```

* Assume the variable customer\_info is a dictionary/JSON and contains the value `{“entity_id”:12, “name”: “Alice Blue”}`
* To add more keys with values to the dictionary, the modifier handler is used
* The below step adds `customer_id` to the dictionary
* After processing, the `customer_info` variable contains the value `{“entity_id”:12, “name”: “Alice Blue”, “customer_id”: custom_attribute[‘value’]}`

#### Use Case 2 - **Array(Action: Append)**

```
Modify variable customer_info['customer_id'] with value custom_attribute['value']
```

* Assume the variable customer\_info is an array/list and contains the value `[{“entity_id: 1}, {“entity_id: 2}, {“entity_id: 3}]`
* To add an item to the array, the Modify Variable handler is used
* The below step adds `customer_id` to the Array
* After processing, the `customer_info` variable contains the value `[{“entity_id: 1}, {“entity_id: 2}, {“entity_id: 3}, {"custom_attribute['value']}]`

### Mapping

Provides the ability to get mappings from the user and format data between two different system APIs.

{% hint style="info" %}
This adds a new mapping card in the pipes section to get mappings in the pipe. The Modifiers will also be provided in the same section.
{% endhint %}

Based on the Mapping configuration, the destination payload will be prepared from the source data.

![Mapping Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzklxEUav8pkLr8%2FMapping.png?alt=media\&token=a3d88304-18e6-4ac6-a54a-1e2f0dab61c4)

#### Available Options

| *Parameters* | *Definition*                                                                                                   | *Type*       |
| ------------ | -------------------------------------------------------------------------------------------------------------- | ------------ |
| Display name | Mapping name displayed in the pipe                                                                             | Alphanumeric |
| Source       | API used to request data from the Source system                                                                | DropDown     |
| Destination  | API used to send data to the Destination system                                                                | DropDown     |
| Variable     | Stores mapped data                                                                                             | Variable     |
| Source Data  | Source data that will be formatted and sent to destination API as per the mapping configuration                | JSON, Array  |
| Ignore Keys  | Keys that should be ignored by the system, while processing data in the mapping structure defined by the user. | Alphanumeric |

#### **Example**

```
Prepare mapping with name Customers Information from source Get Customers- Magento 2
to destination Create Customers - Epicor P21 Custom Server
```

Creates a mapping node in the pipe to provide the mapping of data between the specified source and destination APIs.

#### **Use Case - Ignore Keys**&#x20;

```
{
  "customer": [
    {
      "name":"alice",
      "address": {
        "street": "Jarvis St.",
        "door_number": "5A"
      }
    },
    {
      "name":"bob",
      "address": {
        "street": "Marvel St.",
        "door_number": "7D"
      }
    }
  ]
}
```

Assume the field `street` is mapped from source to destination system and the path generated for this field will be `customer/address/street`.

During Mapping, when the user sends this customer data(Parameter: Data) inside a loop, one entry at a time, to get the `street address`, the resulting path generated will be `address/street`.

In this case, the user should mention the parent keys to be ignored. In this case `customer`. If multiple keys need to be ignored, then the user should mention them as comma-separated values.

{% hint style="info" %}
When an API or system is changed in the Flow, then the previously configured mapping becomes unstable.&#x20;

So users will be alerted if the mapping should be retained or if it should be deleted during the save and merge process.

If the mapping is retained, the errors will be highlighted.&#x20;
{% endhint %}

### If, Else If & Else

To define and check for decision-making conditions inside the Flow.

Condition parameters are defined for the `If` and `Else If` handlers. If this condition is satisfied, the children of `If` will be executed. Otherwise, the children of `Else` will be executed.

![If Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzfazUo7ux2AUr7%2Fif.png?alt=media\&token=aba10995-3609-4e51-8dab-9e0d942f0b31)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                                                                                               | *Type* |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| Condition    | <p>Condition that needs to be satisfied for the children-statements to be executed</p><p></p><p>Example: <code>admin\_details\['status']</code></p><p>If the value is <code>true</code>, the children will be executed</p> | Mixed  |

{% hint style="info" %}
No parameters are assigned for the `Else` Handler.
{% endhint %}

**Examples**

```
If specified condition matched
```

Some **example** conditions that can be used with the `If` statement, which need to be `true` for the proceeding children-statements to be executed

|                              |                                                      |
| ---------------------------- | ---------------------------------------------------- |
| `customers['status']`        | If the condition returns true                        |
| `customers["status"] == 200` | If the condition is satisfied                        |
| `orders and customers`       | If both order and customers variables contain values |
| `orders or customers`        | If either one variable has value                     |
| `'customer_id' in item`      | If the dictionary `item` has key `customer_id`       |

### Loop (Works like a For Loop)

Executes a block of code repeatedly in a cyclic fashion, each time with a different value.

![Loop Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzjOVvrfrDLgEgl%2Floop.png?alt=media\&token=6bcf8059-f55f-4b3a-b194-5a26edd6b06d)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                                       | *Type*   |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
| Iterable     | <p>Data to be iterated/looped</p><p></p><p>Example: <code>Sales\_rep\_data\['data']</code></p><p>The loop will keep running until there is an item in the data</p> | Array    |
| Key          | <p>Variable assigned to the loop counter</p><p>Example: <code>key</code>, <code>item</code></p>                                                                    | Variable |

#### Examples

```
Loop till specified condition matched
```

* `orders`
* `mapped_orders["lines"]`

### MSSQL&#x20;

Connects to the Microsoft SQL database and allows users to configure data in the SQL databases.

| Parameters    | Definition                                                     | Type              |
| ------------- | -------------------------------------------------------------- | ----------------- |
| Variable      | Stores the response data (SQL response)                        | Variable          |
| Systems       | MSSQL System to connect to                                     | DropDown          |
| Database Name | Database name to connect to                                    |                   |
| Action        | Operation to be performed on the data. See below for examples. | DropDown          |
| Data          | Data to be configured in the database                          | String/Non-string |
| Table Name    | Table name in the database                                     | String/Non-string |
| Condition     | Condition to validate to configure the data                    | String/Non-string |
| Limit         | Number of records needed                                       | String/Non-string |

### Step Progress

Denotes the progress of data processed inside a loop. The outcome of this handler is visually seen in the progress bar in the Integrations page. This helps in understanding how much data synchronization has been processed.

![Step Progress Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnznPErwePow4IiI%2Fstep%20progress.png?alt=media\&token=c11b2652-5900-4eab-bda4-cdb70bd92b48)

{% hint style="info" %}
Use predefined variables `records_processed` and `total_records` to track the records. Add `Incrementer` handler in the loop to increment the values on every count.
{% endhint %}

#### Available Options

| *Parameters*      | *Definition*                                     | *Type*   |
| ----------------- | ------------------------------------------------ | -------- |
| Processed Records | Number of records that are processed             | Variable |
| Total Records     | Total number of records which is to be processed | Variable |

### Steps

This handler is placed one level above the previous handler `Step Progress`. It is used to visually split the business logic of the flow, for better understanding while synchronizing the data.

![Steps Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzokeYU8yi77CaF%2FSteps.png?alt=media\&token=6ad004d1-828f-4ee5-a6b1-e762a35d9e11)

#### Available Options

| *Parameters* | *Definition*                                                                                                                         | *Type*       |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Message      | <p>Displayed in the progress bar of pipes</p><p></p><p>Examples:</p><ul><li>Fetching M2 Orders</li><li>Updating P21 Orders</li></ul> | Alphanumeric |

### Logger

The Logger handler is used to log any errors or warnings in the flow. The Logs menu in the project area displays all the logs from the synchronization.

![Logger Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnziqwzZVOdgES0k%2FLogger.png?alt=media\&token=dfe33189-bfdc-48cc-ab9a-56d3c566f54f)

This is a general level log and to log at the entity level, click [here](#step-logger).

#### Available Options

| *Parameters*    | *Definition*                    | *Type* |
| --------------- | ------------------------------- | ------ |
| General Message | Content that needs to be logged | Mixed  |

### Step Logger

The Step Logger handler is similar to the Logger handler but used to provide logs at the item level. The Step Logger marks every single entity inside the loop as **Success** or **Failure**.

This can be viewed by clicking the "View" button in the Logs section.

![Step Logger Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQVnzmzP5KPFPFSrLh%2FStep%20Logger.png?alt=media\&token=42205d1b-16fa-429b-86f2-e33b8806a15a)

For more general level logging, click [here.](#logger)

#### Available Options

| *Parameters*     | *Definition*                                                                                                                                                                                                 | *Type*           |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
| Type             | Status of the execution. Success or Failure.                                                                                                                                                                 | DropDown         |
| Entity ID        | <p>ID of the entry. Useful in identifying if the entities succeeded or failed.</p><p></p><p>Example<em>:</em> <code>item\[‘itemCode’]</code>, <code>mapped\_orders\['hdr']\['webReferenceNumber']</code></p> | Variable, Number |
| Message          | Content that needs to be logged                                                                                                                                                                              | Mixed            |
| Detailed Message | Detailed content to be logged. Verbose.                                                                                                                                                                      | Mixed            |

### Console

Displays messages in the `Logs` section console area. This is especially useful in debugging the Flow itself.

The messages can be either static or dynamic.

![Console Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQWTcPkvA_GOgsY_H-%2Fconsole.png?alt=media\&token=9ec44194-d0c3-4a27-8186-84e15bfddb4f)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                                                                         | *Type* |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| Message      | <p>Content that needs to be displayed</p><p></p><p>Example:</p><p>Dynamic ⇒ Variable: <code>order\_info</code>, <code>line\_no</code></p><p>Static ⇒ <code>HelloWorld</code>, <code>12345</code></p> | Mixed  |

### Get Last Synchronized Time&#x20;

Gets the last synchronized time of a system, in the required time zone

![Get Timezone Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQWTcOaBm53f9qVNdp%2FGet%20timezone.png?alt=media\&token=00ee95f4-df42-4ff4-b027-efa8b223a3cf)

#### Available Options

| *Parameters*          | *Definition*                                                                                                                 | *Type*   |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- |
| Variable              | Stores the last updated time                                                                                                 | Variable |
| Get Last Success Time | If Yes, fetches the last succeeded sync time. If No, fetches the last synced time irrespective of its status. Default is No. | DropDown |
| Systems               | The output (Last sync time) is got in this System's timezone                                                                 | DropDown |
| Format                | <p>To change the format of the output time</p><p> Example: Month-Day-Year HH:MM:SS</p>                                       | DropDown |

### Credential Keys

Retrieves any credential details from the respective project. (Example: Name, System, Hostname)

![Credential Keys Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQWTcNEdzzXnclQdBH%2Fcredential%20keys.png?alt=media\&token=c12235ec-14ce-4c36-937a-87fb87506fd0)

#### Available Options

| *Parameters* | *Definition*                                                                                                                                             | *Type*       |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Value        | <p>Data that were assigned while setting up the credentials of the system</p><p>Value: <code>Name</code>, <code>System</code>, <code>Hostname</code></p> | Alphanumeric |
| System       | System from which the credential details are to be obtained                                                                                              | DropDown     |
| Variable     | Stores the obtained value                                                                                                                                | Variable     |

### Return Value

Returns data to the caller, in real-time.&#x20;

{% hint style="danger" %}
This applies only to the dynamic pipes.
{% endhint %}

![Return Value Handler](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjVABEcCgwItwY4IEAD%2F-LvQPHOtDibEApy83pFV%2F-LvQWTcMrsBrbZaLCR_I%2Freturn%20value.png?alt=media\&token=07a22a85-349d-43ec-a546-9a01768752dc)

#### Available Options

| *Parameters* | *Definition*      | *Type*                |
| ------------ | ----------------- | --------------------- |
| Return Value | String/Non String | DropDown              |
|              | Payload           | Variable, JSON, Array |

### **Date Time Formatter**

Add or subtract minutes or hours from a given time value.&#x20;

**Available options**

| *Parameters*      | *Definition*                                                                                                             | *Type*       |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Variable          | Stores the output                                                                                                        | Alphanumeric |
| Date              | <p>String/Non-string </p><p>Actual date-time in UTC format or variable name containing the date-time in UTC format  </p> | DropDown     |
| Action            | <p>Advance/Recede</p><p>To add or subtract hours and minutes </p>                                                        | DropDown     |
| Hours and Minutes | Value of hours and minutes to be added or subtracted to the given time                                                   | Numeric      |

### Time Converter

Converts Time from one format to the other (12Hr clock to 24Hr clock and vice versa).

| *Parameters*  | *Definition*                 | *Type*                 |
| ------------- | ---------------------------- | ---------------------- |
| Convert       | The conversion time format   | DropDown               |
| Variable      | Variable to store the output | Alphanumeric           |
| Enter Hours   | Hours value                  | Numeric (1-12 or 1-24) |
| Enter Minutes | Minutes value                | Numeric (1-60)         |
| Enter Seconds | Seconds value                | Numeric (1-60)         |
| Meridiem      | Choose AM or PM              | DropDown               |

\
**Time Zone converter**&#x20;

This handler serves two purposes:&#x20;

1. Converts datetime (object/string) from a time zone to another timezone.&#x20;
2. Generates a timestamp for a given datetime (object/string).

[Click here to Learn more about configuring the Timezone Converter and examples.](https://docs.dckapintegrator.com/developers/flows/timezone-converter-handler)

### **Data Type converter**

Converts data from one data type to another (string to integer or integer to string).

| *Parameters* | *Definition*                                                                  | *Type*       |
| ------------ | ----------------------------------------------------------------------------- | ------------ |
| Variable     | Stores the output                                                             | Alphanumeric |
| Value        | Value or variable whose data type has to be converted                         | Alphanumeric |
| Data type    | <p>Data type that the value has to be converted to </p><p>String/ Integer</p> | DropDown     |

### **Current DateTime**

Converts current time to the timezone of selected system.&#x20;

**Available options**

| *Parameters* | *Definition*                               | *Type*       |
| ------------ | ------------------------------------------ | ------------ |
| Variable     | Stores the output                          | Alphanumeric |
| System       | Current time is converted to this timezone | Alphanumeric |

### Pagination

To  send required paginated data for API calls. &#x20;

**Available options**

| *Parameters*      | *Definition*                                                                                                                                                 | *Type*       |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Variable          | <p>Output from the handler</p><p>(Part of the data (from input data) as per the number of records mentioned)b</p>                                            | Alphanumeric |
| Response Data     | <p>The input to the handler i.e., the data which needs to divided into smaller arrays. </p><p>Example: response data will be the output from an API call</p> | Alphanumeric |
| Number of records | Number of records the user needs in the output every time                                                                                                    | Numeric      |

### While Loop&#x20;

Loop till specified condition is true. &#x20;

**Available options**

| *Parameters* | *Definition*                          | *Type* |
| ------------ | ------------------------------------- | ------ |
| Condition    | Loop till specified condition is true | JSON   |

### Break

To break a loop. &#x20;

### SFTP Writer

To create files in a remote location using SFTP connection.&#x20;

Prerequisite: Add SFTP Credentials

<table><thead><tr><th width="196.33333333333331">Parameters</th><th width="307.8664058133036">Definition</th><th>Type</th></tr></thead><tbody><tr><td>File</td><td>Existing remote folder location followed by file name Example: /tmp/test/file1.csv</td><td>String</td></tr><tr><td>Data</td><td>Name of variable containing the data to be written</td><td>Alphanumeric</td></tr><tr><td>Character Set</td><td>Encoding character set for the file content</td><td>Drop Down</td></tr></tbody></table>

```
To write CSV files, it should be in one of the below formats:

String:
Name,Branch,Year\nSanchit,COE,2\nHello,IT,1\nThere,CS,5

Array/List:
[['Name', 'Branch', 'Year', 'CGPA'],['Nikhil', 'COE', '2', '9.0'],
        ['Sanchit', 'COE', '2', '9.1'],
        ['Aditya', 'IT', '2', '9.3'],
        ['Sagar', 'SE', '1', '9.5'],
        ['Prateek', 'MCE', '3', '7.8'],
        ['Sahil', 'EP', '2', '9.1']]
```

### SFTP Reader

To read files from a remote location using SFTP connection.&#x20;

Prerequisite: Add SFTP Credentials

<table><thead><tr><th width="196.33333333333331">Parameters</th><th width="307.8664058133036">Definition</th><th>Type</th></tr></thead><tbody><tr><td>File</td><td>Existing remote folder location followed by file name Example: /tmp/test/file1.csv</td><td>String</td></tr><tr><td>Variable</td><td>Name of variable to store the data read from the remote location</td><td>Alphanumeric</td></tr><tr><td>Handle CSV Data</td><td>If yes, provides a list for easy looping and if no, provides raw bytes.</td><td>DropDown</td></tr><tr><td>Character Set</td><td>Decoding character set for the file content</td><td>Drop Down</td></tr></tbody></table>

### FTP Reader

To read files from a remote location using FTP connection.&#x20;

Prerequisite: Add FTP Credentials

<table><thead><tr><th width="238.54499820079164">Parameters</th><th width="307.8664058133036">Definition</th><th>Type</th></tr></thead><tbody><tr><td>File Path</td><td>File path where the new file to be read exists. Example: /testing/</td><td>String</td></tr><tr><td>File name</td><td>Name of the file to be created with extension Example: file1.txt</td><td>String</td></tr><tr><td>Variable</td><td>Name of variable to store the data read from the remote location</td><td>Alphanumeric</td></tr><tr><td>Handle CSV Data</td><td>If yes, provides a list for easy looping and if no, provides raw bytes.</td><td>DropDown</td></tr><tr><td>Character Set</td><td>Decoding character set for the file content</td><td>Drop Down</td></tr></tbody></table>

### FTP Writer

To create files in a remote location using FTP connection.&#x20;

Prerequisite: Add FTP Credentials

<table><thead><tr><th width="238.54499820079164">Parameters</th><th width="307.8664058133036">Definition</th><th>Type</th></tr></thead><tbody><tr><td>File Path</td><td>Existing file path where the new file is to be created Example: /testing/</td><td>String</td></tr><tr><td>File name</td><td>Name of the file to be created with extension Example: file1.txt</td><td>String</td></tr><tr><td>Data</td><td>Name of variable containing the data to be written</td><td>Alphanumeric</td></tr><tr><td>Character Set</td><td>Encoding character set for the file content</td><td>Drop Down</td></tr></tbody></table>

```
To write CSV files, it should be in one of the below formats:

String:
Name,Branch,Year\nSanchit,COE,2\nHello,IT,1\nThere,CS,5

Array/List
[['Name', 'Branch', 'Year', 'CGPA'],['Nikhil', 'COE', '2', '9.0'],
        ['Sanchit', 'COE', '2', '9.1'],
        ['Aditya', 'IT', '2', '9.3'],
        ['Sagar', 'SE', '1', '9.5'],
        ['Prateek', 'MCE', '3', '7.8'],
        ['Sahil', 'EP', '2', '9.1']]
```

### FTP Advanced

Lists files, deletes, renames, moves & changes permission for file and creates directory in the remote location using the established FTP connection

{% hint style="success" %}
**Note:** For root folder, use `/` in the path field
{% endhint %}

#### List files

| Parameters              | Definition                                                                                          | Type         |
| ----------------------- | --------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Choose the action to be performed as list files. By default, the handler lists files.               | DropDown     |
| Path                    | <p>Location from which the list of files and folders are to be listed </p><p>Example: /testing/</p> | String       |
| Variable                | Name of variable to store the list of files and folders from the remote location                    | Alphanumeric |

#### Delete File

| Parameters              | Definition                                                                         | Type         |
| ----------------------- | ---------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Delete File                                                                        | DropDown     |
| Path                    | <p>Location from which file is to be deleted </p><p>Example: /testing/</p>         | String       |
| Variable                | Name of variable to know the status of the action - whether file is deleted or not | Alphanumeric |
| File Name               | <p>Name of the file to be deleted </p><p>Example: file1.txt</p>                    | String       |

#### Rename File

| Parameters              | Definition                                                                         | Type         |
| ----------------------- | ---------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Rename File                                                                        | DropDown     |
| Path                    | Location in which the file to be renamed exists Example: /testing/                 | String       |
| Variable                | Name of variable to know the status of the action - whether file is renamed or not | Alphanumeric |
| File Name               | <p>Name of the file to be renamed </p><p>Example: old.txt</p>                      | String       |
| New File Name           | New name of the file Example: new\.txt                                             | String       |

#### Move File

| Parameters              | Definition                                                                                                           | Type         |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Move File                                                                                                            | DropDown     |
| Path                    | <p>Location in which the file to be moved exists </p><p>Example: /testing/</p>                                       | String       |
| Destination Path        | <p>Location to which the file has to be moved </p><p>Example: /testing/folder/</p>                                   | String       |
| Variable                | Name of variable to know the status of the action - whether file is moved from the source path to destination or not | Alphanumeric |
| File Name               | <p>Name of the file to be moved </p><p>Example: file.txt</p>                                                         | String       |

#### Change Permission

| Parameters              | Definition                                                                                                                                                     | Type         |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Change Permission                                                                                                                                              | DropDown     |
| Path                    | <p>Location in which the file whose permission is to be changed exists </p><p>Example: /testing/</p>                                                           | String       |
| Variable                | Name of variable to know the status of the action - whether file’s permission is changed or not                                                                | Alphanumeric |
| File Name               | Name of the file whose permission is to be changed Example: file1.txt                                                                                          | String       |
| Desired Permission      | The desired permission is given as a three digit number - by default, it is 644 meaning read and write for the owner, read for groups and read for the public. | String       |

#### Create Directory

| Parameters              | Definition                                                                              | Type         |
| ----------------------- | --------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Create Directory                                                                        | DropDown     |
| Path                    | <p>Location in which directory has to be created </p><p>Example: /testing/</p>          | String       |
| Variable                | Name of variable to know the status of the action - whether directory is created or not | Alphanumeric |
| Directory Name          | Name of the directory to be created                                                     | String       |

### SFTP Advanced

Lists files, deletes, renames, moves & changes permission for file and creates directory in the remote location using the established SFTP connection

{% hint style="success" %}
**Note:** For root folder, use `/` in the path field
{% endhint %}

#### List files

| Parameters              | Definition                                                                                          | Type         |
| ----------------------- | --------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Choose the action to be performed as list files. By default, the handler lists files.               | DropDown     |
| Path                    | <p>Location from which the list of files and folders are to be listed </p><p>Example: /testing/</p> | String       |
| Variable                | Name of variable to store the list of files and folders from the remote location                    | Alphanumeric |

#### Delete File

| Parameters              | Definition                                                                         | Type         |
| ----------------------- | ---------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Delete File                                                                        | DropDown     |
| Path                    | <p>Location from which file is to be deleted </p><p>Example: /testing/</p>         | String       |
| Variable                | Name of variable to know the status of the action - whether file is deleted or not | Alphanumeric |
| File Name               | <p>Name of the file to be deleted </p><p>Example: file1.txt</p>                    | String       |

#### Rename File

| Parameters              | Definition                                                                         | Type         |
| ----------------------- | ---------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Rename File                                                                        | DropDown     |
| Path                    | Location in which the file to be renamed exists Example: /testing/                 | String       |
| Variable                | Name of variable to know the status of the action - whether file is renamed or not | Alphanumeric |
| File Name               | <p>Name of the file to be renamed </p><p>Example: old.txt</p>                      | String       |
| New File Name           | New name of the file Example: new\.txt                                             | String       |

#### Move File

| Parameters              | Definition                                                                                                           | Type         |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Move File                                                                                                            | DropDown     |
| Path                    | <p>Location in which the file to be moved exists </p><p>Example: /testing/</p>                                       | String       |
| Destination Path        | <p>Location to which the file has to be moved </p><p>Example: /testing/folder/</p>                                   | String       |
| Variable                | Name of variable to know the status of the action - whether file is moved from the source path to destination or not | Alphanumeric |
| File Name               | <p>Name of the file to be moved </p><p>Example: file.txt</p>                                                         | String       |

#### Change Permission

| Parameters              | Definition                                                                                                                                                     | Type         |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Change Permission                                                                                                                                              | DropDown     |
| Path                    | <p>Location in which the file whose permission is to be changed exists </p><p>Example: /testing/</p>                                                           | String       |
| Variable                | Name of variable to know the status of the action - whether file’s permission is changed or not                                                                | Alphanumeric |
| File Name               | Name of the file whose permission is to be changed Example: file1.txt                                                                                          | String       |
| Desired Permission      | The desired permission is given as a three digit number - by default, it is 644 meaning read and write for the owner, read for groups and read for the public. | String       |

#### Create Directory

| Parameters              | Definition                                                                              | Type         |
| ----------------------- | --------------------------------------------------------------------------------------- | ------------ |
| What do you want to do? | Create Directory                                                                        | DropDown     |
| Path                    | <p>Location in which directory has to be created </p><p>Example: /testing/</p>          | String       |
| Variable                | Name of variable to know the status of the action - whether directory is created or not | Alphanumeric |
| Directory Name          | Name of the directory to be created                                                     | String       |

### Internal Dynamic Call

To trigger a dynamic pipe from another pipe.

![](https://2655769465-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjVABEcCgwItwY4IEAD%2Fuploads%2FBEJJ2bmUCx0JwjyXtScP%2Fimage.png?alt=media\&token=449dc88c-93c1-4b80-8208-254fb235f2ef)

a) Dynamic Pipe: Choose the dynamic pipe to trigger from the dropdown list

b) Payload: The payload field is used to send data to the Dynamic Pipe that is being called. This data will be used in the Dynamic pipe to process the associated Flow.&#x20;

c) Response Variable: Once the dynamic pipe is triggered from this handler, a variable will be sent back from the dynamic pipe. The 'Response variable' field will be used to store that response.
