---
url: /statelake/administering-statelake/designer/map.md
---

# Map

The core component in the **Statelake** configuration is the **Map**.

The **Map** brings together the connections and definitions in order to link all the parts together to facilitate the transportation of the data from the source. to the destination.

The simplest one-to-one mapping just transfers the values, but more sophisticated mapping enables **Statelake** to perform a vast array of operations, including but not limited to, data validation, data conversion, and the addition and removal of records through additional programming.

So the **Map** allows you to translate data between **Data Definitions**, by configuring the **Map** with the logic necessary to convert the data from one source **Data Definition** to a different destination definition.

It is possible to use one **Map** to write from **Data Definition** **A** to **Data Definition** **B**, and then use a follow on **Map** to write data from **Data Definition** **B** to **Data Definition** **C**. This means a **Data Definition** that was the destination of one **Map** can become the source of another **Map** .

**Maps** are event-driven, pull-based mapping, which means that there are individual events available against the destination **Data Definition** that can have script code attached to them. The script is a fully featured object oriented scripting language. It is based of the popular Object Pascal development language.

The power of the mapping engine is what makes **Statelake** so flexible for configuring business processes. The mapping engine rolls through the destination **Data Definition** executing any events that have script code assigned to them.

In essence, the events fire and any scripts run, pulling the necessary data from the sources into the destination and doing any processing in accordance with the script code.

And because the mapping code is written in script, you have full control over the functionality of the **Map**.

A **Map** can be made between any combination of available **Data Definitions**.

**SOAP Definitions** are a special case, in that the definition you are mapping relates to whether the **SOAP Definition** is the source or destination of the **Map**.

* If the **SOAP Definition** is the source, then you are mapping the response definition.
* if the **SOAP Definition** is the destination you are mapping the request definition.

When assigning a **Data Definition** to a **Map**, it is considered a design-time assignment.

When coming to use the **Map** in an **Action**, you have the chance to re-assign the **Data Definition** - this is known as a run-time assignment. This allows you to use the same **Map** in multiple **Actions** each with their own **Data Definition**.

## Buttons

| Button Name | Description |
|---|---|
| Save | Click to **Save** any changes you have made. All changes will be lost if you do not click the **Save** button.::: warningIt is most important to click **Save** at this point regardless of where else you may have performed a **Save**, else all mapping changes will be lost.::: |
| Cancel | Click to **Cancel** any changes you have made |
| Delete | Click to **Delete** this **Map**. You will be asked to confirm your choice. |
| Design | Click this button to open the designer. You should populate the fields of the general screen prior to designing the **Map**. |

The editor for a **Map** is broken into two main windows - the general screen and Designer.

For more information, please refer to [Data Definitions](/statelake/administering-statelake/designer/data-definitions/) for more information.
