---
title: Map external system form (Beta)
slug: cms-12/docs/external-system-form-mapping-beta
docTags: 
createdAt: 2026-08-10T15:55:53.000Z
---

:::hint{type="info"}
**Note**
[Optimizely Forms](docId:3SbSlJZIS_3iFmghfQA3J) is only supported by MVC-based websites and HTML5-compliant browsers.
:::

An external system can connect with Optimizely Forms and provide data sources (such as SQL tables). Each data source can contain columns (like columns in an SQL table).

If Optimizely Forms detects an external system, the Forms edit view has a built-in user interface for mapping, as shown in the following images.

- Datasource connection maps with a form.
- Column connections map with a form element.
- The mapping user interface is applied to `Form` and `FormElement`.

**Example 1**

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/D3H5gKhXYcaljPphB3eHK_9a517cd-forms-external-mapping-1.png)

**Example 2**

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/sXlnVzlxOcw79o1ixdFaI_69efaf9-forms-external-mapping-2.png)

### Mapping table

The `mappingTable` (similar to the following code and image) is provided to `Actors` and `AutofillProvider` as `IDictionary<string, RemoteFieldInfo>`. The key is the `formElement.ElementName`, and the value is a `RemoteFieldInfo`, which contains information about the external system, such as data sources and columns.

```csharp
[   
  {"__field_101", { "CRMSystem", "ContactTable", "Fullname" } },
  {"__field_102", { "CRMSystem", "ContactTable", "Email" } },
]
```

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/iwHoRMgfYLPQfdropTlY1_20b2114-forms-external-mapping-4.png)

### Transfer form submission data to external system, using actor

- Actor provides full `SubmissionData`, and the active `MappingTable` (with external system).
- On `Actor.Run()`...
  - `ActiveExternalFieldMappingTable` provides the `MappingTable` of the current active data source (of the form).
  - `SubmissionData` is the data from the visitor.
  - `HttpRequest` and `HttpReponse` (to inspect the visitor and modify the response, cookie, and so on, if needed).

From a combination of form submission, such as  **F1=**[allan@ep.se](mailto\:allan@ep.se)**, F2=Allan + a mapping table F1=SILVERPOP\_EMAIL, F2=RECIPIENTNAME**, actors have enough information to send **SILVERPOP\_EMAIL="**[allan@ep.se](mailto\:allan@ep.se)**", RECIPIENTNAME="Allan"** to Acoustic (Silverpop) through a server-to-server API call.
