# Home

## Frequently Asked Questions

### How can I register for Dataimporter?

You can register using either your Salesforce credentials (oAuth), or with an email and password. Head over to <https://app.dataimporter.io/register>, choose the server that you would like to work with and complete the registration.

### Where is Dataimporter and my data hosted?

We have servers in the US, Germany, and Sydney. When you register you will choose the region and your data will never leave that region. Our servers are all hosted by AWS.

### Do I need to enter a Credit Card when registering?

No you don’t. We have a Free Tier which is only limited by the number of records that you can process (20,000).

### Can I connect multiple Salesforce instances?

Yes you can, simply head to the Instance page and click on Login to Production or Login to Sandbox.

### My Job Run has errors, what do they mean?

There are lots of different errors you can receive from Salesforce. We have an article of 10 of the most common ones to help you out [Here](https://www.dataimporter.io/blog/10-common-errors-with-salesforce-data-loading-explained), otherwise feel free to email us and we will do our best to help.

### Can I use lookup relationships to link records?

Yes you definitely can! When on the mapping screen, search for the lookup relationship, and choose the Salesforce field that you would like Dataimporter to lookup the records via.

<figure><img src="/files/L9wzi03nw99OPTaktOu0" alt=""><figcaption></figcaption></figure>

### How can I undo records that I have inserted?

If you have inserted records, head over to the Successful Records page, and up the top you will see a Rollback button. If you click on this, and then confirm, Dataimporter will automatically delete the records for you, without having to download the CSV file, and create a new job.

![](/files/Qe6gKrLMblvqFxgo0CYs)

### Do you offer discounts for Nonprofits?

We definitely do! We offer discounts for registered nonprofit organizations, just send an email to <sam@dataimporter.io> and we will be in touch regarding this.


# Register with oAuth

{% hint style="info" %}
Register using your Salesforce Login, so you don’t need to create a separate password.
{% endhint %}

On the register page (<https://app.dataimporter.io/register>), you will have two options:

* Register with Production
* Register with Sandbox

<figure><img src="/files/PLDbHDMYB9MG75LUKiT9" alt=""><figcaption></figcaption></figure>

You can register with either, and the Login that you choose will be used to log in with Dataimporter going forward.

If you wish to change the username used to log in to dataimporter, then head to the Billing page, and click Edit next to your user.


# Register with Email + Password

{% hint style="info" %}
Register using email and password, which is not tied to your Salesforce Login.
{% endhint %}

On the register page (<https://app.dataimporter.io/register>), you will fill in the form with the necessary information

![](/files/ZyGqRgtlbr7RGv6ZYzNn)

Once you will in this information and click on Register, then you will be able to access Dataimporter.

{% hint style="info" %}
If you register with Email + Password, then you will not be able to Log In to Dataimporter using oAuth (Salesforce Login).
{% endhint %}


# Formulas

{% hint style="info" %}
Use formulas to dynamically add columns to your source data. Use common Excel & Salesforce formulas such as LEFT, CONCATENATE, and IF
{% endhint %}

## General Formula Rules

To reference a source column in a formula then place the column name in square brackets

`[Name]`

To add a static value e.g. a record type id, place the value in double quotes

`"0013t00001XJ2dXAAT"`

## Text Operators

### MAP

Map source values to target values. The Formula must include 3 parameters:<br>

1. The field being mapped
2. The dictionary of mapping values
3. The default value where the source value is not provided in the mapping

All values must be enclosed in double-quotes " and not single-quotes '

`MAP([Color], {"One": "Blue", "Two": "Red"}, "No Color")`

This will convert 'One' to 'Blue', 'Two' to 'Red', and every other value to 'No Color'

### CONCATENATE

Combine two or more fields by referencing their columns names and adding a + in between them.

`[Name] + "-" + [Type]`

E.g. if the Name value is ‘Sam Hoult’, and the Type value is ‘Prospect’ then the evaluated formula for that record would be “Sam Hoult-Prospect”

### LEFT

Take the left n characters of a field

`LEFT([Name], 3)`

E.g. if the Name value is Benjamin Button, then the evaluated formula for that record would be “Ben”

### RIGHT

Take the left n characters of a field

`RIGHT([Name], 3)`

E.g. if the Name value is Benjamin Button, then the evaluated formula for that record would be “ton”

These expressions can be combined together e.g. for a column \[Date] where the values are in yyyy-mm-dd format the following formula could be used

`LEFT(RIGHT[Date], 5), 2)`

This first takes the right 5 characters from the date string: ‘mm-dd’, and then takes the left 2 characters of that substring: ‘mm’

### REPLACE

Replace characters in a string using either direct replacement, or a regex expression.

`[Email].str.replace(" ", "")`

`[Phone].str.replace("\d+", "", regex=True)`

### SPLIT

Split up a field by a specified character, and the specified number of the split. 0 gives the first value in the split, 1 gives the second and so on.

The value “<sam@dataimporter.io>” would give the value “dataimporter.io” using the formula below.

`SPLIT([Email], "@", 1)`

The value "One;Two;Three" would give the value "One" using the formula below.

`SPLIT([Picklist], ";", 0)`

### LOWER

Convert the text of a column into lowercase characters.

"Sam Hoult" would become "sam hoult"

`LOWER([NAME])`

### UPPER

Convert the text of a column into uppercase characters.

"Sam Hoult" would become "SAM HOULT"

`UPPER([NAME])`

### CAPITALIZE

Convert the first character of a column into uppercase, and the remaining characters into lowercase.

"salesforce" would become "Salesforce"

`CAPITALIZE([NAME])`

### TITLE

Convert the first character of each word into uppercase, and the remaining characters into lowercase.

"john smith" would become "John Smith"

"fiRsT naME" would become "First Name"

`TITLE([NAME])`

## Comparison Operators

### EQUALS

True if the operands are equal. String comparisons that use the equals operator are case-sensitive.

`[State] == "NY"`

### NOT EQUALS

True if the operands are not equal. String comparisons that use the not equals operator are case-sensitive.

`[State] != "NY"`

### LESS THAN

True if the left operand is less than the right operand.

`[Revenue].astype('int') < 50000`

### GREATER THAN

True if the left operand is greater than the right operand.

`[Revenue].astype('int') > 50000`

## Logical Operators

### IF

Determines if expressions are true or false. Returns a given value if true and another value if false.

`IF([State] == "NY", "New York", "Other")`

`IF([Revenue].astype('int') > 100000, "Big Customer", "Regular Customer")`

You can also nest IF statements like so

`IF([State] == "NY", IF([Type] == "Big Customer", "NY Big Customer", "NY Regular Customer"), "Other")`

### AND

Combine multiple logic statements together using the ampersand symbol. Each condition must be surrounded by parenthesis, as shown in the example below. Only when every condition returns True will the entire statement return True.

`IF(([State] == "NY") & ([City] == "New York City"), "Target Customer", "Other")`

### OR

Combine multiple logic statements together using the ampersand symbol. Each condition must be surrounded by parenthesis, as shown in the example below. When one of the conditions returns True will the entire statement return True.

`IF([State] == "NY") | ([State] == "TX"), "Target Customer", "Other")`

You can combine multiple & and | operators to create more complex expressions

`IF((([Support Plan] == "TRUE") & ([Name] == "Big Account")) | ([Big Account] == "True"), "Gold", "Silver")`

### ISNULL

Returns True is a value is Null and False if it contains a value. Will return False if the value is an empty string e.g. “”.

`IF(ISNULL([Name]), "Unknown", [Name])`

### NOTNULL

Returns True is a value is Not Null and False if it is null.

`NOTNULL([Name])`

### CONTAINS

Returns True if a value contains the string provided, otherwise will return False. The string provided is case sensitive.

`IF(CONTAINS([Name], "New"), "New Account", "Old Account")`

If the value is “New York” this would return true, where as “new york” would return False.

## Date Operators

Date operators can be used to generate static values, as well as to filter records e.g. where date is less than 90 days from today.&#x20;

When you want to use a field in your data as part of a date calculation then you need to first convert it to the right format using the to\_datetime formula

### to\_datetime

Changes the field from string to date / datetime

`to_datetime([DateField])`

### TODAY

Evaluates to the current day.

`today()`

### YESTERDAY

Evaluates to the previous day

`yesterday()`

### TOMORROW

Evaluates to the next day

`tomorrow()`

### timedelta

Can be used to change a dates value by a number of minutes, days, weeks or months

`timedelta(days=90)`

`to_datetime([DateField]) - timedelta(days=90)`


# Migration Templates

Migration Templates are used to Migrate multiple objects from one Salesforce Org to another. They extend the functionality of the Salesforce to Salesforce connector to allow for hierarchies of objects to be migrated at once, keeping the relationships between the objects in tact.

For the basics, please review the [Migrate Documentation](/jobs/migrate).


# Setting up the Template

## 1. Create a new Template

1. Name.
2. Source Instance. This is the Salesforce Org that you will choose the Objects from which you will do the migration.
3. Target Instance. This is the Salesforce Org that you will migrate the data to.
4. Team (If available).
5. Lock Source Instance. This will mean that whenever the Migration is run, the source instance cannot be changed or chosen at run time.
6. Stop on Failure (Recommended). This will stop running the template as soon as an Object has all records fail the migration.
7. Batch Size. The batch size for each request made during the migration.
8. Locale. Used for Anonymization of data.
9. Save the Template

<figure><img src="/files/EF4RBTgJuFkXAnULBgVQ" alt=""><figcaption></figcaption></figure>

## 2. Choose the Objects and Hierarchy to be Migrated.

<figure><img src="/files/BZoMRxUmNhSL0KvqhR1g" alt=""><figcaption></figcaption></figure>

In the Dropdown Box choose the Parent Objects that you want to be Migrated. When you have chosen an Object, click the + next to the dropdown to add it to the Template.

Once you have added a parent object, you will be able to click the > to load all of the Related Objects.

You will be able to see the lookup field which relates the two objects. In the Example above, you can see that Account has been selected, as well as the Contacts, related via AccountId, and the Cases, related via ContactId.&#x20;

The way that this template is set up, means that **only the Contacts that are related to Accounts via the AccountId will be included as part of the Migration.**&#x20;

If you wish to Migrate all records of an Object, or use an SOQL filter to get a subset of Records, then you should add the Object via the dropdown at the top of the page, rather than via the Related list.

## 3. Map the Objects and Fields

<figure><img src="/files/LwuTlEUJh5L6WvvpZiaV" alt=""><figcaption></figcaption></figure>

After choosing the Objects and the structure of the Template, you will be taken to the Template View. Here you can see the Source and Target Objects, the Operation, as well as the Order in which the Objects will be run.

In the example above, you can see that the first object to be run is a custom object called Security\_\_c. The Target Objects is currently set to None, as the Target Org which was selected in the Template doesn't have an Object called Security\_\_c. **Where there is a match in Object Names, Dataimporter will automatically complete the Object and Field mapping for that Object.**

For each source object that doesn't have a target object, click Actions next to it, and select Mapping:

<figure><img src="/files/6VYEp9MZ0DhZJxMkevd6" alt=""><figcaption></figcaption></figure>

This will then let you choose the Target object to be mapped to:

<figure><img src="/files/VDDupOOnhAzP1AUhcTt2" alt=""><figcaption></figcaption></figure>

Once you have chosen the Object, you will then be able to Map the fields. You can read about the Mapping options in the [Migrate Documentation](/jobs/migrate).

One additional feature of the Mapping as part of Migration Templates is the [Magic ID](/migration-templates/magic-id).


# Magic ID

Using the Magic ID lookup relationships, Dataimporter can automatically perform a VLOOKUP on your behalf, to link related records from the source org, to the newly created records in the Target Org.

Let's run through the same example from the [Previous document](/migration-templates/setting-up-the-template) using the Contact object.

Under the Account lookup you will see that the mapping has been completed automatically for you, with the AccountId from the source org being mapped to the Account Lookup via MagicId in the Target Org.

<figure><img src="/files/1bnrag0m86BK9l6bE1Qg" alt=""><figcaption></figcaption></figure>

What Dataimporter will do in the background, is take the source and target Ids of the parent records that were created, and perform a match, so that when the Lookup values are populated in the target org, they are the same records which existed in the source org.

**MagicId can only be used to link objects which are included in the Migration Template, and the referenced object must be run before the current object.**

If you try to include an object as a MagicId which is either not included in the Template, or is set to run after the current Job you will receive an error.


# Running the Template

To run the Template, click on Run:

<figure><img src="/files/6xoYmig7Cn0r4ZMTN3Fl" alt=""><figcaption></figcaption></figure>

Next you will choose the Source and Target Instance for the Migration:

<figure><img src="/files/4KXUnX8K6jLKmSvBHbea" alt=""><figcaption></figcaption></figure>

*Note:* If you have selected 'Lock Source Instance' on the Template then only the Target Instance will be selectable at this stage.


# Summary

Dataimporter provides you a way to generate mock records for you to seed your sandboxes and demo orgs.

Speed up your Sandbox seeding, testing, and deployments by creating seeding templates, to fill your Sandbox Orgs with realistic mock data.


# Data Types

Dataimporter provides the following Data Types to be used for Sandbox Seeding

1. Person
2. Address
3. Numeric
4. Datetime
5. Finance
6. Payment
7. Science
8. Transport
9. Food
10. Text
11. Development
12. Internet
13. Binary Files
14. Picklist

Picklist values are automatically detected by Dataimporter when generating the Seeding template.


# Configuration

On the configuration screen of each Object, you can select the number of records to be created (defaults to 10), and the Locale:

<figure><img src="/files/EjQLSZjVKcyzudYp0wjN" alt=""><figcaption></figcaption></figure>

Most data types allow you to configure the possible values that can be created.&#x20;

For each Object & Template, you can choose a Locale which will localize certain fields when creating the mock data.

The following Data Types are generated using the Locale:

1. Person
2. Address
3. Food
4. Finance
5. Text

### Masks

Masks are used to generate custom formats for mock values. Masks can be a combination of hard-coded values, random

### Person

#### Telephone

You can configure the format of the telephone fields to be created, or leave it blank to be generated in the locale format:

<figure><img src="/files/iB0Du6J4WSZK0jjhOUQt" alt=""><figcaption></figcaption></figure>

#### Identifier

The Identifier data type should be used to generate External Ids, or other unique string values:

<figure><img src="/files/XT3WD8Pqm9HvIUhphkPE" alt=""><figcaption></figcaption></figure>

### Datetime

Date and time fields can be limited to certain year values:

<figure><img src="/files/AmOsU8uHCneGvFovXdSS" alt=""><figcaption></figcaption></figure>

### Numeric

Numeric values can be limited to certain ranges, as well as specifying the number of digits after the decimal:

<figure><img src="/files/4huTDu82PlWvaI1tXNBH" alt=""><figcaption></figcaption></figure>

### Picklist

Picklist values are read, and applied automatically for you when generating the seeding template. These can also be restricted on the configure screen:

<figure><img src="/files/xgbuAwpkjrUtEnFV9gSX" alt=""><figcaption></figcaption></figure>


# Job Management

💡 Jobs are the processes you create to Insert, Update, Upsert, Delete, and Export data to and from Salesforce

## Viewing Jobs

To view all of your jobs, click on the Jobs page:

<figure><img src="/files/BdCZsHUSPIMEkW5Hcrv9" alt=""><figcaption></figcaption></figure>

## Saving Jobs

Jobs are automatically saved, at each step of the process that you go through, so you don’t need to explicitly request a job is saved.

**All of the options that you select e.g. API Type, Mapping, Deduplicating or Sampling are saved on the job, and will be followed each time the job is run.**

## Types of Jobs

💡 Using Dataimporter you can interact with your Salesforce data in multiple ways.

<figure><img src="/files/26aS81YkRkaAbNpBcToI" alt=""><figcaption></figcaption></figure>

### Insert

Choose Insert to create new records in Salesforce. This will not update existing data in Salesforce.

### Upsert

Choose Upsert to update existing records when certain criteria are met, otherwise create new records in Salesforce.

Use this option when you have existing records in Salesforce, as well as new data that you wish to create. On the Mapping screen you will choose which field should be used to match existing records in your source data, as well as in Salesforce.

### Update

Choose Update to update existing data in Salesforce. This will not create new records in Salesforce.

### Delete

Choose Delete to delete existing records in Salesforce.

### Export

Choose Export, to export (and send) existing data in Salesforce, to either a CSV file, or to an external data source which you have connected.

## Advanced Details

💡 There are two API types available from within Dataimporter.

### REST API

The REST API sends records to and from Salesforce in predefined Batch sizes. You can control, in the advanced details section, what the batch size for each job should be (maximum 200).

This API is generally appropriate for most jobs where the size of data is either under 20,000 rows, or where a smaller batch size is required due to heavy processing within Salesforce.

### Bulk API 2.0

The Bulk API 2.0 is the newest bulk data loading API provided by Salesforce. Using this API, Salesforce will create their own chunk sizes, based on the optimal size for processing. There is no option for you to choose your own batch size with this API.

This API is appropriate for large data volumes where the speed of the upload is important, and the processing of data on the Salesforce side is minimal.

### Pass Duplicate Rules

Check this box to bypass duplicate rules set up in Salesforce. This will allow records to be created, and the duplicate rule error message to be ignored.

### Use Assignment Rules

Uncheck this box to ignore assignment rules when creating or updating Accounts, Cases, or Leads.

### Other

Other options available for you to choose in the Advanced Details section include:

**Date Field Format**

Here you can choose the date format for your source data. Options available to you are:

* YYYY-MM-DD
* DD/MM/YYYY
* MM/DD/YYYY

**Time Field Format**

Here you can choose the time format for your source data. Options available to you are:

* hh:mm:ss.mmm
* hh:mm:ss.mmmZ+/-hh:mm
* hh:mm:ss.mmmXXX

**Separator**

You can choose the separator (delimiter) in your CSV file. The default is comma. The options available to you are:

* ,
* |
* ;


# Migrate

{% hint style="info" %}
You can migrate Data directly from one Salesforce Org to another, without needing to download CSV Files.
{% endhint %}

## Create a Migrate Job

Head over to the Jobs page and click on New Job. Fill in the Name, choose your Target Instance, Source Instance, and the Operation. The Target Instance is the Salesforce Org that you want to Import Data into, and the Source Org is where the Data should be coming from. Once you have filled in these fields you can click next.

<figure><img src="/files/AA2oWkZiHqLpjd8HK8PF" alt=""><figcaption></figcaption></figure>

## Choose the Objects you would like to Migrate

Choose the source and the target Objects that you wish to Migrate. These do not have to be the same in each Org.

<figure><img src="/files/ZvYQ0JKtLWYCoGIdeumy" alt=""><figcaption></figcaption></figure>

## Map the fields you would like to Migrate

Here is where you tell Dataimporter which source data should be migrated. On the left you will see every standard and custom field listed, and beneath you will see all of the Lookup Relationships as well. On the right side, are all of the Target fields which you can select to make sure that they will be included in the Mapping. To ensure that all of the Relationships are moved across make sure you make the Lookup Relationships using a key that is available in both orgs.

<figure><img src="/files/OTGCotlJSVJzjCdYNqua" alt=""><figcaption></figcaption></figure>

To make sure you Migrate the Lookup Relationships with the records, select them as shown below:

<figure><img src="/files/p7wKSZWKS5CWEwx9QBBZ" alt=""><figcaption></figcaption></figure>

Here, Dataimporter will select the Account.Name, and Owner.Name from the source records, and create lookup relationships in the new org, using the Account.Name and User.Name.

## Filter the records to Migrate

On the clean screen, you can create an SOQL filter, to select which records you want to migrate. If you want to migrate all records for this object, you can simply leave the filter field blank.

<figure><img src="/files/iVX7kybipcQ7pGXxEpX3" alt=""><figcaption></figcaption></figure>

## Preview and Run the Job

Preview the a sample of the records to be migrated. The SOQL Filters, and Deduplication Rules have been applied to the preview so you can check they are working correctly. Any formulas you have Mapped will also be evaluated, and appear on the Preview screen.

<figure><img src="/files/yRbUUKDIEKkOF5LQiOIl" alt=""><figcaption></figcaption></figure>


# Multi-Object

{% hint style="info" %}
Multi-Object Imports allow you to Insert, Update, or Upsert Parent and Child records in one job e.g. Accounts & Contacts, Leads & CampaignMembers.
{% endhint %}

## Select Child Object

On the Upload Page you will see the option ‘Add Related Records’. If you click this, you will be presented with the available Child Objects that you are able to use for the Job.

<figure><img src="/files/YIUyTK9DIbOGVStOmP1Q" alt=""><figcaption></figcaption></figure>

## Map Parent & Child Fields

You will then Map the Parent and Child fields for the Job, using the same logic as a single object import, look at the Mapping article to read more about this.

{% hint style="info" %}
You will not need to define a lookup relationship between the Parent and Child records at this step
{% endhint %}

## Choose the Unique Parent Field

On the Clean screen, you will then choose the Unique Parent Field. This field is used to make sure duplicate Parent records are not created, as well as the field which will be used to match the Child Objects to their Parent.

Take the CSV file below, which includes Account & Contact Data.

<figure><img src="/files/UgAYOlJJQnlx2IF6xWy0" alt=""><figcaption></figcaption></figure>

Each row represents a Contact, and the Column ‘Account Name’ represents the Account that the contact belongs to. We wouldn’t want the Account, Midwest Communications, to be created 4 times so on the Unique Parent Field:

<figure><img src="/files/slpVEZqYP79W9jDZz80O" alt=""><figcaption></figcaption></figure>

## Preview the Parent & Child Data

On the Preview Screen, you will see the Source Columns, 3 example records from the data, as well as the Parent and Child Object fields that have been Mapped:

<figure><img src="/files/8jmCJnRwfmP5PxmKLe1P" alt=""><figcaption></figcaption></figure>

## Job Run Results

On the Job Run Results Page, you will see all of the Original CSV Data, however you will see more rows than the Original CSV File e.g.

<figure><img src="/files/FfAtBynO2MpWr8xr1iej" alt=""><figcaption></figcaption></figure>

In the results you will see a row for each Parent and Child record that was created. You will see that there is a Column ‘Object Type’ which determines which Object the row corresponds to, as well as the sf\_\_Id column which shows the Id of the corresponding record.

{% hint style="info" %}
If the Parent record fails, then the Child Record will not be created / updated, and will be shown in the results as ‘Parent record failed’.
{% endhint %}

Using Rollback will delete both the Parent and Child Records.


# Upload

{% hint style="info" %}
The Upload screen is used to either upload a CSV or Excel file manually, or to choose where the External Data should be pulled from.
{% endhint %}

### Importing Data

On this page you can upload a CSV or Excel file, depending on the source selected on the previous screen. You will also select the Target Salesforce Object that you want the data to be imported into.

<figure><img src="/files/1kNUKb1AF82CZk94dfO4" alt=""><figcaption></figcaption></figure>

If you have recently uploaded a file already for this job, then you will have the option to proceed with the recently uploaded file, or to upload a new file:

![](/files/Qbn8uYjsSHr1OamIaHuK)


# Mapping

💡 Here you will choose which columns in your Source data should be mapped to which Salesforce fields.

## General Mapping Information

### Lookup Relationships

💡 Use Lookup Relationships to link records with other records in Salesforce e.g. link a Contact with an Account

You can link, and lookup relationship records in Dataimporter, using any Text, Email, or Phone field in Salesforce. To do this, choose the source column you want to use for the lookup, and the Salesforce object and field you want Dataimporter to look for records with:

<figure><img src="/files/PFGEmKpPBzsCL8gPs2lL" alt=""><figcaption></figcaption></figure>

If you have the Salesforce Id in the source data then you can map it directly without using a lookup relationship:

<figure><img src="/files/KgByXvjyropPvaBv3ek6" alt=""><figcaption></figcaption></figure>

### Formulas

Here, you can map your formulas, to the corresponding Salesforce field:

<figure><img src="/files/7qAxQh9HGIohq1GSsrjZ" alt=""><figcaption></figcaption></figure>

Formulas are shown with the ♾️ symbol before them.

## Insert

One the Mapping page for an Insert Job you will choose which source fields should map to which Salesforce fields.

<figure><img src="/files/Zssmo1qdZMyCnHzOSxV1" alt=""><figcaption></figcaption></figure>

## Update & Upsert

On an Update or Upsert Job, you will have the same mapping options as the Insert Job, plus an additional mapping to select which Source and Salesforce fields should be used to determine which records to update:

<figure><img src="/files/GpmFSIoghx2DLHxIGsFI" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For Update Jobs, you can choose any Text, Number, or Id Field to match records. For Upsert Jobs, you can choose any Field marked as External Id.
{% endhint %}

## Delete

For a Delete Job, you simply choose the source field, which contains the Salesforce Id values for the records which you want to Delete.

![](/files/9S6KzuXgl1SAnWt78jkP)


# Query

{% hint style="info" %}
Here you will choose which columns in your Source data should be mapped to which Salesforce fields.
{% endhint %}

## Export

For an Export job you will define a Query used to Select and Export the Salesforce records:

<figure><img src="/files/aAZC1zA0tdBx6AqWuqGj" alt=""><figcaption></figcaption></figure>

Use the quick select features, such as Select All or Select Custom Fields to quickly add fields to the query, or you can also type the Field API Names directly into the SELECT box.

User Filters to select only certain records and place the filter into the WHERE box.


# Preview

💡 Preview the data, as well as the Salesforce Fields that you have mapped to.

## Import Jobs

You will see all of the source columns, 3 example records, and the matching Salesforce fields that you have mapped to.

<figure><img src="/files/AdEUYxLMj82dVMfsH3px" alt=""><figcaption></figcaption></figure>

💡 It is important that you check and confirm that you have correctly mapped the data, and that any formatting has been done correctly.

## Export Jobs

You will see the Salesforce fields that you selected in your query, as well as a Sample of up to 10 records.

<figure><img src="/files/vy5LGb395LfI6WWck97V" alt=""><figcaption></figcaption></figure>


# History

💡 The history page shows you all the previously run jobs, as well as giving you access to the success and error files.

## What does History show?

The History page shows the following information:

1. The name of the Job, as well as if this was a Retry, or Rollback.
2. How long the Job took to complete.
3. The Date & Time at which the Job was started.
4. The total number of records processed in the job.
5. The number of successful records processed.
6. The number of failed records processed.
7. The Links to the Successful & Failed Records.

<figure><img src="/files/9Doxap9uvqeHYdWXDCIz" alt=""><figcaption></figcaption></figure>

## How long is the History available for?

The History for each Job Run is available for 14 days after the Job Run has finished. At this time, the Job Results are deleted permanently from the Server and will not be available for you to view.


# Retry

💡 Retry lets you reprocess the failed records from a Job run, without needing to go through the steps, or create a new job again.

## When can I Retry?

You can Retry the failed records of any job run. This is available for up to 14 days after a job run.

## How to Retry

From the Failed records page of a Job run, you will see the Retry button at the top right:

<figure><img src="/files/rGKOcIaVfxHGeduFykK9" alt=""><figcaption></figcaption></figure>

Clicking this button, and confirming on the next screen, will then create a new job run, with Retry appended to the name:

<figure><img src="/files/a9KVjjZeEUXNykI8gW3L" alt=""><figcaption></figcaption></figure>


# Rollback

💡 Rollback is a quick method to let you undo (delete) previously Inserted records.

## When can I Rollback?

You can Rollback any Insert Job. This includes when sampling is used, and for Retry jobs. Rollback will be available for a Job run for up to 7 days after the job is complete.

## How to Rollback

From the Successful records page of an Insert Job, you will see the Rollback button at the top right:

<figure><img src="/files/fsWejzOnTSd8cUwiuqKN" alt=""><figcaption></figcaption></figure>

Clicking this button, and confirming on the next screen, will then create a new job run, with Rollback appended to the name:

<figure><img src="/files/AyM60stY1R5w3eX3xlbi" alt=""><figcaption></figcaption></figure>


# Run Remaining

💡 For Jobs where you have taken a Sample of the data, you can use Run Remaining to process the remaining records.

## How to Run Remaining

You can Run Remaining by going to the Successful Records of a Sample Job run, and clicking on Run Remaining:

<figure><img src="/files/a5SroLdIOOz5dFl5kpHw" alt=""><figcaption></figcaption></figure>

After confirming on the next page, a new job run will be created with Remaining appended to the name:

<figure><img src="/files/j4WNU16grA9guPh42E9s" alt=""><figcaption></figcaption></figure>

## When can I use Run Remaining?

You can use Run Remaining, for any job where you have Sampled the data in a Job Run. The Run Remaining feature is available for 14 days after the sample has been run.


# Wildcard Names

For external sources, you can use wildcard names when selecting the source data. This is used where the name of the source file is dynamic e.g. Account\_Import\_TODAYS\_DATE.csv.

Using wildcards you can let Dataimporter search through your data source for matching CSV files, and choose the latest file to be used for the job:

The following pattern matches are defined:

<table><thead><tr><th>Pattern</th><th width="400">Meaning</th></tr></thead><tbody><tr><td>*</td><td>Matches <strong>zero or more</strong> characters</td></tr><tr><td>?</td><td>Matches <strong>exactly one</strong> character</td></tr><tr><td>[seq]</td><td>Matches any character in a sequence</td></tr><tr><td>[!seq]</td><td>Matches any character not in a sequence</td></tr><tr><td>today()</td><td>Evaluates to today's date e.g. 2026-01-01</td></tr><tr><td>now()</td><td>Evaluates to current timestamp e.g. 2026-04-22 231650</td></tr></tbody></table>

### Example

Using the pattern Account\_Import\*.csv would select the following file in the SFTP Server:

<figure><img src="/files/VVeNJ2JaK5dXjcbulHq1" alt=""><figcaption></figcaption></figure>

Although the File is named with an earlier date, **Dataimporter will always take the latest modified file that matches the Wildcard pattern**.

If no file can be found using the pattern then you will receive a message 'No File Found'.

### Examples

1. **Using `?`**:
   * Pattern: `file?.csv`
   * Matches:
     * `file1.csv`
     * `fileA.csv`
     * `file_.csv`
   * Does **not** match:
     * `file.csv` (no character in place of `?`)
     * `file12.csv` (two characters in place of `?`)
     * `files.csv` (two extra letters in place of `?`)
2. **Using `*`**:
   * Pattern: `data*.csv`
   * Matches:
     * `data.csv` (zero characters after `data`)
     * `data1.csv`
     * `data_set.csv`
     * `dataXYZ.csv`
   * Does **not** match:
     * `mydata.csv` (does not start with `data`)
     * `data.json` (different file extension)


# Dataimporter Formatting

Using Dataimporter you can perform a number of Configuration, Formatting, and Automation settings.


# Replace Null Values

By default, when updating existing Salesforce records, where the data is populated in Salesforce e.g. email, and the source data has a blank value, Salesforce will simply ignore the update. By selecting this option, the Blank values will be accepted by Salesforce, and the field data will be deleted.

<figure><img src="/files/b5p4weJqSsBhOidVq24J" alt=""><figcaption></figcaption></figure>

This is only available for Upsert and Update operations.


# Deduplicate

Select this option when you want to remove duplicates from your source data. You will be able to define the field(s) that you want Dataimporter to look at, when considering whether records are duplicates or not:

<figure><img src="/files/33doWeR8tJRKFK4qOydJ" alt=""><figcaption></figcaption></figure>

By selecting multiple fields, Dataimporter will check both columns, and **only when both columns match, will records be considered duplicates**.

Dataimporter will always perform an exact match when looking at removing duplicates e.g. 'Acme Account' and 'acme account' will not be considered duplicates.


# Filter Data

This feature allows you to select a Formula, which will evaluate to True or False, and can then be used to Filter your Data.

<figure><img src="/files/5wreF6GZTVKgyCvi7Hn7" alt=""><figcaption></figcaption></figure>


# Sample Data

This allows you to choose a number of random sample records to process for the job. Use this to test Jobs before process the entire data.

<figure><img src="/files/olRlbHJ21EmUgNECglPg" alt=""><figcaption></figcaption></figure>

Enter the number of records you would like us to randomly select in the Sample Size. The remaining records will then be available to process on the [Run Remaining](/jobs/run-remaining) page


# Automation Control

{% hint style="info" %}
This feature is available for Enterprise Customers
{% endhint %}

As part of your Jobs, you can configure Flows, Validation Rules, and Triggers to be automatically toggled before the Jobs are processed, and returned to their original state after the Job has finished.

<figure><img src="/files/z06mTHNVijqcncdXwnUi" alt=""><figcaption></figcaption></figure>

Flows, Validation Rules, or Triggers which are currently **Active**, will be show in the on position, with a blue toggle:

![](/files/lPOEezw1HrGt7L0ZevLB)

Flows, Validation Rules, or Triggers which are currently **Inactive**, will be show in the off position, with a grey toggle:

![](/files/tNRd5CeLQMSHYBiJRheq)

Flows, Validation Rules, or Triggers which are currently **Active and have been set to deactivate in Dataimporter**, will be show in the off position, with a red toggle:

![](/files/myLphntRCQ1SWdwDFVUI)

Flows, Validation Rules, or Triggers which are currently **Inactive and have been set to activate in Dataimporter**, will be show in the on position, with a green toggle:

![](/files/yPS4pc48pkw6oLJURdt7)

Dataimporter uses the API Name of the Metadata when toggling in your Org, so the Jobs can easily be changed between Sandbox and Production Orgs.

#### Triggers

When using the Toggle feature for Triggers, the following process takes place:\
\
In Production Orgs:

1. The triggers are set to Active/Inactive depending on what you have chosen.
2. Using the Metadata API, the changes are sent to production.
3. All Local Tests are run in your Production Org.
4. If the Tests are successful, the Trigger status is changed.
5. After Job Processing in Dataimporter, the same process is run, with the status set back to original.

In Sandbox Orgs:

1. The triggers are set to Active/Inactive depending on what you have chosen.
2. Using the Metadata API, the changes are sent to production.
3. No test are run.
4. Trigger status is changed.
5. After Job Processing in Dataimporter, the same process is run, with the status set back to original.


# Schedule

{% hint style="info" %}
For Import jobs where there is an External data source, or for Export jobs, you can schedule the jobs to be run automatically.
{% endhint %}

## How to Schedule

There are two places from which you can schedule jobs

### 1. From the Job Submit page

After you preview the data, you will be given the option to Schedule the job:

<figure><img src="/files/AFNOj3LpNQr41t5XoibR" alt=""><figcaption></figcaption></figure>

### From the Jobs page:

<figure><img src="/files/olGQWSzfdaMm70ywq57k" alt=""><figcaption></figcaption></figure>

## Updating a Schedule

To update an existing schedule, simply follow the same process as above and click on Save Schedule, and it will be updated automatically.

## Unscheduling a Job

To Unschedule a Job, click on Actions next to the Job, and click on Unschedule:


# Hour

![](/files/0A66YG4HWr6DwvwMvkgo)

Scheduling by Hour gives you the following options:

* The days which the job should run.
* How often the job should run on each day

1. Every 15 Minutes
2. Every 1 Hour
3. Every 3 Hours
4. Every 12 hours

* The start time for the schedule

Choose what time the job should start running. Select 00:00 (midnight) for the job to run all day.

* The end time for the schedule

Choose what time the job should stop running.

{% hint style="info" %}
**Note that this time is inclusive e.g. if you select 17:00 as the end time, then any jobs due to be run from 17:00 to 18:00 will also be run.**
{% endhint %}

* The Timezone that the schedule should run.

### Day

Select this option if the job should run once per day:

![](/files/5Fb6CgjMJDjhJnsKaWF9)

* The days which the job should run.
* The start time for the schedule
* The Timezone that the schedule should run.

### Month

Select this option if the job should be run on certain days of the month

Selecting Month gives you the following options:

* The days which the job should run.
* The start time for the schedule
* The Timezone that the schedule should run.

## Updating a Schedule

To update an existing schedule, simply follow the same process as above and click on Save Schedule, and it will be updated automatically.

## Unscheduling a Job

To Unschedule a Job, click on Actions next to the Job, and click on Unschedule:


# Day

Select this option if the job should run once per day:

![](/files/5Fb6CgjMJDjhJnsKaWF9)

* The days which the job should run.
* The start time for the schedule
* The Timezone that the schedule should run.

### Month

Select this option if the job should be run on certain days of the month

Selecting Month gives you the following options:

* The days which the job should run.
* The start time for the schedule
* The Timezone that the schedule should run.

## Updating a Schedule

To update an existing schedule, simply follow the same process as above and click on Save Schedule, and it will be updated automatically.

## Unscheduling a Job

To Unschedule a Job, click on Actions next to the Job, and click on Unschedule:


# Month

Select this option if the job should be run on certain days of the month

Selecting Month gives you the following options:

* The days which the job should run.
* The start time for the schedule
* The Timezone that the schedule should run.


# Flow

Dataimporter also gives you the option to create a Schedule Flow.

This is useful when you have multiple Jobs that need to be run in order e.g.

1. Import Accounts from SFTP
2. Import Contacts from PostgreSQL
3. Export Products to SFTP

Typically, you would define a time for each Job to run, however if Jobs are delayed or finish quicker than expected you will quickly run into errors.

The Flow Scheduler lets you define a time for the first Job to run, using the Hour, Day, or Month options. The next Jobs can then be run after the previous jobs have been finished e.g.

![](/files/Z2ZZHOXltXJssKLVUUby)

{% hint style="info" %}
The Flow option will only appear, once you have scheduled another Job.
{% endhint %}

You will then be able to see the scheduled job on the Jobs page:

<figure><img src="/files/QjQLoWdDog8OyTNIFLwK" alt=""><figcaption></figcaption></figure>


# View Integrations

To create a new Integration, click on Integrations and then New Integration


# Database

Dataimporter offers you Integrations with many common Database Systems.

* [PostgreSQL](/integrations/database/postgresql)
* [MySQL](/integrations/database/mysql)
* [SQL Server](/integrations/database/sql-server)
* [Azure SQL Database](/integrations/database/azure-sql-database)
* [Heroku Postgres](/integrations/database/heroku-postgres)


# Azure SQL Database

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create a MySQL Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**\
**Database**

![](/files/dIPix3uxZ45IFOGnR9cb)

{% hint style="info" %}
Please ensure that these are all entered correctly when creating a connection.
{% endhint %}

### Import

On the Upload screen, you will select which Table you want to Extract, and which Salesforce Object you want to Import into.

<figure><img src="/files/z5PubfWk5SLqkpNSFWyB" alt=""><figcaption></figcaption></figure>

### Filtering

On the Clean screen, you will be able to add an SQL Filter, to only Select the records you need as part of the Extraction.

<figure><img src="/files/wD2sPR2zVGEYstDg3QBl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Column names should be in double quotes, and text values should be in single quotes.
{% endhint %}


# Heroku Postgres

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create a MySQL Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**\
**Database**

![](/files/dIPix3uxZ45IFOGnR9cb)

{% hint style="info" %}
Please ensure that these are all entered correctly when creating a connection.
{% endhint %}

### Import

On the Upload screen, you will select which Table you want to Extract, and which Salesforce Object you want to Import into.

<figure><img src="/files/r8tGnwm0yFJKjQFvFRyA" alt=""><figcaption></figcaption></figure>

### Filtering

On the Clean screen, you will be able to add an SQL Filter, to only Select the records you need as part of the Extraction.

<figure><img src="/files/wD2sPR2zVGEYstDg3QBl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Column names should be in double quotes, and text values should be in single quotes.
{% endhint %}


# MySQL

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create a MySQL Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**\
**Database**

![](/files/dIPix3uxZ45IFOGnR9cb)

{% hint style="info" %}
Please ensure that these are all entered correctly when creating a connection.
{% endhint %}

### Import

On the Upload screen, you will select which Table you want to Extract, and which Salesforce Object you want to Import into.

<figure><img src="/files/HggsB0yoVImbvV9DpgKl" alt=""><figcaption></figcaption></figure>

### Filtering

On the Clean screen, you will be able to add an SQL Filter, to only Select the records you need as part of the Extraction.

<figure><img src="/files/wD2sPR2zVGEYstDg3QBl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Column names should be in double quotes, and text values should be in single quotes.
{% endhint %}


# PostgreSQL

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create a PostgreSQL Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**\
**Database**

![](/files/dIPix3uxZ45IFOGnR9cb)

{% hint style="info" %}
Please ensure that these are all entered correctly when creating a connection.
{% endhint %}

### Import

On the Upload screen, you will select which Table you want to Extract, and which Salesforce Object you want to Import into.

<figure><img src="/files/4o8Adr1Gu6LEm6aysXMu" alt=""><figcaption></figcaption></figure>

### Filtering

On the Clean screen, you will be able to add an SQL Filter, to only Select the records you need as part of the Extraction.

<figure><img src="/files/wD2sPR2zVGEYstDg3QBl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Column names should be in double quotes, and text values should be in single quotes.
{% endhint %}


# SQL Server

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create a MySQL Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**\
**Database**

![](/files/dIPix3uxZ45IFOGnR9cb)

{% hint style="info" %}
Please ensure that these are all entered correctly when creating a connection.
{% endhint %}

### Import

On the Upload screen, you will select which Table you want to Extract, and which Salesforce Object you want to Import into.

<figure><img src="/files/kXgwL0Tux19gITaifWsX" alt=""><figcaption></figcaption></figure>

### Filtering

On the Clean screen, you will be able to add an SQL Filter, to only Select the records you need as part of the Extraction.

<figure><img src="/files/wD2sPR2zVGEYstDg3QBl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Column names should be in double quotes, and text values should be in single quotes.
{% endhint %}


# Storage

Dataimporter offers you Integrations with many common Storage Systems.

* [Dropbox](/integrations/storage/dropbox)
* [Google Drive](/integrations/storage/google-drive)
* [Google Sheets](/integrations/storage/google-sheets)
* [OneDrive](/integrations/storage/onedrive)
* [S3](/integrations/storage/s3)
* [SFTP](/integrations/storage/sftp)
* [SharePoint](/integrations/storage/sharepoint)


# Dropbox

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

Connect to Dropbox via oAuth:

<figure><img src="/files/4MTENSnZruGTknVK48YM" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen, you will have an interactive interface where you can navigate through your Dropbox Folders and Files.

<figure><img src="/files/2vFQHqlfiJl9XR8fuhEC" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/MrD7JMcc6NccayiXVLIH" alt=""><figcaption></figcaption></figure>


# Google Drive

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

Connect to Google Drive via oAuth:

<figure><img src="/files/UUlOAx8ocjaktKGCKO3j" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen, you will have an interactive interface where you can navigate through your Drives, Folders and Files.

<figure><img src="/files/Y0wxcPwd3ZzkgmAFAdYV" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/UpEIt1ZUdA2QnPYxYZkK" alt=""><figcaption></figcaption></figure>


# Google Sheets

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

Connect to Google Sheets via oAuth:

<figure><img src="/files/UUlOAx8ocjaktKGCKO3j" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen, you will have an interactive interface where you can navigate through your Folders and Sheets.

<figure><img src="/files/VZC3W4i5nD4STiRDdvIb" alt=""><figcaption></figcaption></figure>

Here you can also select which Sheet you wish to Import from.

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/hqLAA3xkuLVKm3g5KYi1" alt=""><figcaption></figcaption></figure>


# OneDrive

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

Connect to OneDrive via oAuth:

<figure><img src="/files/9hKaecJqzbVFWOzxGwuj" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen, you will have an interactive interface where you can navigate through your Drives, Folders and Files.

<figure><img src="/files/yQQue4h4N45Y1zTJxjiP" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/IagROptOUGMZ4VibTKek" alt=""><figcaption></figcaption></figure>


# S3

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create an S3 Integration:

**Name**\
**URL**\
**Bucket**\
**Key**\
**Secret Key**

**or**

**AWS Role ARN**

<figure><img src="/files/MtQ0HhlYUK3ocbfihX8x" alt=""><figcaption></figcaption></figure>

### Connect to S3 Bucket via IAM Role

1. Create a new IAM Role in AWS choosing the <mark style="color:blue;">`AWS Account Trusted`</mark> entity type, and enter the Dataimporter AWS Account number <mark style="color:blue;">`293026123612`</mark> into Another AWS Account:

<figure><img src="/files/OSLggqBOF2Qw1brcKYMC" alt=""><figcaption></figcaption></figure>

2. Give the permissions necessary to the S3 Bucket that you want to use.
3. Give the Role a name e.g. DataimporterS3Role
4. Once the Role is created, go to the Role, and take note of the ARN:

<figure><img src="/files/sDIdtB59uXVjvvYdCiX6" alt=""><figcaption></figcaption></figure>

6. Provide the ARN to Dataimporter who will configure and confirm access has been correctly granted.

### Import

On the Upload screen you can enter the Path to the file that you want to Import, as well as the Salesforce Object that you want to Import into.

<figure><img src="/files/PKbnM89GwPh2GMpvPXCi" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

You also have to option to Rename the file after it has been processed as shown here:

<figure><img src="/files/W8qPY7LDYTfzAxmskinJ" alt=""><figcaption></figcaption></figure>

This can be used for auditing, so that you can look in the S3 Bucket to see which files have been processed, as well as to make sure the same file is not processed twice.

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/edc12ZwXihSzqfRC77eH" alt=""><figcaption></figcaption></figure>


# SFTP

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

You will need to enter the following information to create an SFTP Integration:

**Name**\
**Host**\
**Port**\
**Username**\
**Password**

<figure><img src="/files/L35mK0FCKArG80YBeDln" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen you can enter the Path to the file that you want to Import, as well as the Salesforce Object that you want to Import into.

<figure><img src="/files/tiqccA6G0bZuexalUBHY" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

You also have to option to Rename the file after it has been processed as shown here:

<figure><img src="/files/B2h8swE8VPq6XEI9iBlw" alt=""><figcaption></figcaption></figure>

This can be used for auditing, so that you can look in the SFTP Server to see which files have been processed, as well as to make sure the same file is not processed twice.

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/ZGsSeQbos8qKp6axqBU5" alt=""><figcaption></figcaption></figure>


# SharePoint

### Configuration

{% hint style="info" %}
You may need to whitelist the Dataimporter [IP Addresses](/security/ip-addresses)
{% endhint %}

Connect to SharePoint via oAuth:

<figure><img src="/files/9hKaecJqzbVFWOzxGwuj" alt=""><figcaption></figcaption></figure>

### Import

On the Upload screen, you will have an interactive interface where you can navigate through your Sites, Folders and Files.

<figure><img src="/files/yQQue4h4N45Y1zTJxjiP" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can use [Wildcard Filenames](/jobs/wildcard-names) to select dynamic files
{% endhint %}

### Export

On the Upload screen you can enter the Path to the file that will be exported, as well as the Salesforce Object that you want to export from.

<figure><img src="/files/S0YweKcks1aEZpaKB4cz" alt=""><figcaption></figcaption></figure>


# Billing

💡 The Billing page gives you the ability to Upgrade your Subscription, Purchase additional licences, or Cancel your subscription.

## Upgrade a Subscription

To upgrade from a Free plan to a Paid plan, head to the Billing page and click on Activate Plan:

<figure><img src="/files/ndL6oicF2odmgcI4aPbN" alt=""><figcaption></figcaption></figure>

You can then Select which plan you would like to Upgrade to:

<figure><img src="/files/Uk78AiAT2Uyx6Wc9JF9p" alt=""><figcaption></figcaption></figure>

You will then be taken to a payment page, where you can choose the number of licenses you would like to purchase, as well as enter the Credit Card and Billing information:

<figure><img src="/files/pO2QHqPnTftds8iycZ5r" alt=""><figcaption></figcaption></figure>

Once you have completed the payment process, you will be redirected back to Dataimporter.

## Manage an Existing Subscription

To manage an existing subscription, head to the Billing page, and select Manage Plan:

<figure><img src="/files/PqNP9htRa6fjjUKWXvg8" alt=""><figcaption></figcaption></figure>

This will take you to our Billing platform

<figure><img src="/files/obU9mtekY3YhWZyhUa1w" alt=""><figcaption></figcaption></figure>

Here you can perform tasks such as:

* Increase / Decrease the number of Licences
* Update Billing Address / Tax Information
* Add / Update Credit Card information
* View and download previous invoices
* Cancel a Subscription


# Access

💡 Use the different roles to determine what users can access within Dataimporter.

## Granting Access

Access is granted to new users on the Billing page. Here you will see the number of licenses available and the number of licences currently active:

<figure><img src="/files/Zj1AKda0K9xW8nnYKCZT" alt=""><figcaption></figcaption></figure>

If there are spare licences, you will have a button called Invite User. Here you will be able to invite a User to your Account, selecting their Email, Name, Role and Username (used for oAuth login).

The user will receive an email with a link for them to set a password and login. If you set a username for the user, then **they will not need to set a password, and can log in immediately**.

## Roles

### User Role

💡 The User Role is a basic role which gives the person full access to Dataimporter.

The User Role grants the following permissions:

Access to the following objects:

* Jobs
* Instances
* Connections
* Schedules
* Formulas

Ability to perform the following actions:

* Create, Update, Delete & Run Jobs.
* Create, Update, Delete Instances.
* Create, Update, Delete Connections.
* Create, Update, Delete Schedules.
* Create, Update, Delete Formulas.

### Admin Role

💡 The Admin Role grants a person full access to Dataimporter, as well as limited access to other user’s activity.

The Admin Role grants all of the permissions from the User role, plus the following extra permissions:

* Access to the Billing page.
* Ability to Update Subscriptions and Licences.
* Ability to invite and manage access for Users.


# Teams

Sharing Jobs, History, Instances, Template, and Integrations in Dataimporter is done via Teams.

## Creating Teams

You will find the Teams page on the left-hand menu:

<figure><img src="/files/Mgqp0D5o7OidoNKK6wEJ" alt=""><figcaption></figcaption></figure>

Click on New Team to create a Team.&#x20;

<figure><img src="/files/aHmLXoFCeLCYSxjB6TPV" alt=""><figcaption></figcaption></figure>

You must give a Team a Name, and assign the users who should be included in the Team. Each Team must have at least 1 User who is the Manager Role for a team.

<figure><img src="/files/5XT0ZubbPta0sX1Rf94D" alt=""><figcaption></figcaption></figure>

## Team Roles

Team Members have either the Manage Role, or Member Role.&#x20;

Members are able to assign Jobs, Templates, Integrations, and Instances to Teams.

Managers are able to complete the same activities as Members, as well as Manage the users who are in the team e.g. Add users, remove users, change roles.

## Assigning Resources to Teams

If you are a member of a team, you will be able to assign Jobs, Template, Instances, and Integrations to those teams:

<figure><img src="/files/2APWWCKz6XKAdW2pmzQy" alt=""><figcaption></figcaption></figure>


# Notifications

💡 Dataimporter offers you different notification settings, for how you are notified about the Jobs that have been run.

## Email Notifications

Head over to the Details page, where you will be able to select the email notifications for yourself.

### Always

Select always, and Dataimporter will always send you an Email, on the completion of a Job run.

### On Errors

If your Job run contains errors, then you will receive an email, otherwise if the Job processes without errors, you will not receive an email.

### Never

You will never receive an Email on completion of a Job run.

## Success / Error Files Attached

Here you can either select Yes or No. If you select Yes, than the success and error files will be attached as CSV files, when sending the notification emails, otherwise they will not be attached.

**We do not recommend attaching CSV files for the following use cases:**

* Large job runs as the email will most likely be blocked by your email server.
* Where sensitive data should not be sent via Email.


# Dataimporter Security

Dataimporter has a number of standard security features, as well as a number of settings which can be configured to meet your requirements.


# IP Addresses

Some Integrations will have a firewall to prevent external users from accessing the systems. This may mean that you need to whitelist the Dataimporter IP Addresses.

The current list of Dataimporter IP Addresses are:

<img src="/files/beCxCWIeKaWmgSKtKkOV" alt="" data-size="line"> **Frankfurt, Germany**\
\
18.153.231.47

<img src="/files/o09CMo2o5v52cVRtqksl" alt="" data-size="line"> **Ohio**<br>

18.189.246.102

<img src="/files/Q8UV7AykzJ1BeRoKhuPQ" alt="" data-size="line"> **Sydney, AU**\
\
13.210.96.153

Any updates or additions made to the Dataimporter IP Addresses will be made to this page.


# Data Storage

💡 Enterprise Customer can control how long the result files are stored on Dataimporter servers.

## Storage Location

All of your Data including, oAuth tokens, result files, and uploads will be stored in the location which you signed up with. No data is ever transferred outside of that region by Dataimporter.

## Default Storage

Job Result files are stored for 14 Days after the Job was run. Any files that were manually uploaded to Dataimporter are automatically deleted.

Enterprise Customers can control exactly how long their data is stored on Dataimporter servers on the Settings page:

<figure><img src="/files/PUIhThmzrqLIi2urdIMT" alt=""><figcaption></figcaption></figure>

You can set this to between 0 and 30 days. If it is set to 0 days, then the result files will be available for you to Download upon completion of the Job, after 1 minute they will be automatically deleted.

{% hint style="info" %}
If you shorten the Data Retention Duration, then this will apply retroactively to previously run Jobs e.g. a Job run 10 days ago, will have the result files deleted, if the Data Retention Duration is subsequently changed to 5 days.
{% endhint %}


# Customer Managed Storage

Customers who are on a Custom Plan can choose to have their data stored on their own managed S3 bucket instead of the Dataimporter servers.

## Set up S3 Integration

First of all [Set up an Integration to your S3 Bucket](/integrations/storage/s3) in Dataimporter.

## Configure Custom Storage

In the Settings page, scroll down to Data Storage, and select the Bucket you created in the previous step.

<figure><img src="/files/MnnE98G36iKAMaaajAHa" alt=""><figcaption></figcaption></figure>

## Result Files

Your Jobs run from this point onwards, will now have the Success and Error files sent to your S3 Bucket instead of Dataimporter. The result files will be uploaded into a folder called 'results' and will be in the format:

{datetime}\_{job name}\_{type}.csv

If you have a job called Account Import then you would see the result files called:\
\
20230406T120000\_Account Import\_successful.csv

20230406T120000\_Account Import\_failed.csv


# Single Sign-On with Azure AD

Follow this guide to set up Single Sign-On (SSO) in Dataimporter with Azure Active Directory. This will let you control which users have access to Dataimporter, restrict access to SSO, provision new users via Just-in-Time (JIT) provisioning.

## 1. Enable SSO in Dataimporter

1. In Dataimporter, head to the Account Settings page and toggle SSO on.

<figure><img src="/files/lw1GoWhPhqo8uRCBdr5W" alt=""><figcaption></figcaption></figure>

2. In the SAML Name field enter the name as you would like it to appear e.g. <mark style="color:blue;">`Acme`</mark>
3. In the Domain field enter your corporate company name e.g. <mark style="color:blue;">`acme.com`</mark>.
4. Keep this tab open and open another tab to perform the next steps.

## 2. Add Dataimporter to Azure AD

1. Log in to the Azure Portal and click on Enterprise Applications

![](/files/r82taYlXg5d2pGeqLZGk)

2. Click on New Application.

<figure><img src="/files/vpQzPd6j1oXY9KGnaGFI" alt=""><figcaption></figcaption></figure>

3. Click on Create your own Application.

<figure><img src="/files/08xUNn6IehIq7MCDvUuh" alt=""><figcaption></figcaption></figure>

4. Give the app the name <mark style="color:blue;">`DATAIMPORTER`</mark>, select the option Integrate any other application you don't find in the gallery (Non-gallery), and click Create.

<figure><img src="/files/QsWyeJLfPafSqSzodkY3" alt=""><figcaption></figcaption></figure>

5. Once the app is created, select the Single sign-on and choose SAML

![](/files/NmZg631meUZJtj29BZg6)

<figure><img src="/files/PtrTUY0na6POqtyoFk7Y" alt=""><figcaption></figcaption></figure>

6. Click Edit next to Basic Configuration

<figure><img src="/files/rM3W9nxcSKuhmLGe79GC" alt=""><figcaption></figcaption></figure>

7. In the Identifier (Entity ID) field, add the value that you added in Step 2 of the Dataimporter configuration e.g. <mark style="color:blue;">`Acme`</mark>
8. In the Reply URL section enter the URL in the following format https\://{instance}.dataimporter.io/saml/login/{identifier} e.g. <mark style="color:blue;">`https://app.dataimporter.io/saml/login/Acme`</mark>

<figure><img src="/files/sLzbrE4WnZ43IhZaLdDk" alt=""><figcaption></figcaption></figure>

9. Click Save and close the box.
10. Click Edit next to Attributes & Claims.

<figure><img src="/files/GBJkb4zcH2rdWCmgmCKd" alt=""><figcaption></figcaption></figure>

11. Delete all of the existing claims under Additional Claims.
12. Add the following claims:

<figure><img src="/files/GdretfnyuYPOnKnq3bab" alt=""><figcaption></figcaption></figure>

13. Close the box and click on Users and groups.

![](/files/YZgKwOn8THgHEUTmP82m)

14. Add any users or groups who need access to Dataimporter.

![](/files/19XsLLmaEnD5nsgp4D5M)

## 3. Configuring SSO in Dataimporter

1. In Azure AD, click back on Single sign-on, and scroll down to the SAML Certificates section.
2. Click on Download next to the <mark style="color:blue;">`Certificate (Base64)`</mark>
3. Scroll down to the Section 4 and copy the <mark style="color:blue;">`Login URL`</mark> value.

<figure><img src="/files/dCevyCQf42xmfb3WrJK2" alt=""><figcaption></figcaption></figure>

4. Open the tab in Dataimporter and paste the value into the Log In URL field.

<figure><img src="/files/qLGCIxvYtuwP96UY1Wl3" alt=""><figcaption></figcaption></figure>

5. Open Azure AD and copy the Azure AD Identifier value.

<figure><img src="/files/zWE2uvY9Wab0XUvRewri" alt=""><figcaption></figcaption></figure>

6. Open the tab in Dataimporter and paste the value into the Provider Entity Id field.

<figure><img src="/files/ovEGnONqF9MxPtNP4bL0" alt=""><figcaption></figcaption></figure>

7. Open the Certificate (Base64) in a text editor and copy the entire value.
8. Open the tab in Dataimporter and paste the value into the X509 Certificate field.

<figure><img src="/files/BNQDfyjS3DuyD3CBwXMa" alt=""><figcaption></figcaption></figure>

9. Click on Save.
10. Contact Dataimporter Support to validate and enable SSO for your Organization.&#x20;


# Single Sign-On with Okta

Follow this guide to set up Single Sign-On (SSO) in Dataimporter with Okta. This will let you control which users have access to Dataimporter, restrict access to SSO, provision new users via Just-in-Time (JIT) provisioning.

## 1. Enable SSO in Dataimporter

1. In Dataimporter, head to the Account Settings page and toggle SSO on.

<figure><img src="/files/lw1GoWhPhqo8uRCBdr5W" alt=""><figcaption></figcaption></figure>

2. In the SAML Name field enter the name as you would like it to appear e.g. <mark style="color:blue;">`Acme`</mark>
3. In the Domain field enter your corporate company name e.g. <mark style="color:blue;">`acme.com`</mark>.
4. Keep this tab open and open another tab to perform the next steps.

## 2. Add Dataimporter to Okta

1. Log in to the Okta and click on Applications

![](/files/1uHjiuHoPHDZjAc2vNp3)

2. Click on Create App Integration.

<figure><img src="/files/BQfNpH9I5GUMHJ1N6CJW" alt=""><figcaption></figcaption></figure>

3. Select SAML 2.0 and click Next.

<figure><img src="/files/ow37cFzAPqRF185rt6W2" alt=""><figcaption></figcaption></figure>

4. Give the app the name <mark style="color:blue;">`DATAIMPORTER`</mark>, upload a Logo (optional), and click Next.

<figure><img src="/files/GrNWG7IrzrzwG3Tk2HH4" alt=""><figcaption></figcaption></figure>

5. In the Audience URI (SP Entity ID) field, add the value that you added in Step 2 of the Dataimporter configuration e.g. <mark style="color:blue;">`Acme`</mark>
6. In the Single sign-on URL section enter the URL in the following format https\://{instance}.dataimporter.io/saml/login/{identifier} e.g. <mark style="color:blue;">`https://app.dataimporter.io/saml/login/Acme`</mark>

<figure><img src="/files/h3vytm6HTJSouVMmO6Ow" alt=""><figcaption></figcaption></figure>

7. Make sure you Check the box for <mark style="color:blue;">`User this for Recipient URL and Destination URL`</mark>
8. Scroll down to Attribute Statements and populate the following values.

<figure><img src="/files/m4xtoheRFEUzXzh8XzYc" alt=""><figcaption></figcaption></figure>

9. Scroll to the bottom of the page and click <mark style="color:blue;">`Next`</mark>.
10. Under the Feedback section select the option <mark style="color:blue;">`I'm an Okta customer adding an internal app`</mark> and click the checkbox for <mark style="color:blue;">`This is an internal app that we have created`</mark>. Click <mark style="color:blue;">`Finish`</mark>.

<figure><img src="/files/lR8RtYEC0LtZrPkMLtSQ" alt=""><figcaption></figcaption></figure>

11. Click on <mark style="color:blue;">`Assignments`</mark> -> <mark style="color:blue;">`Assign`</mark> -> <mark style="color:blue;">`Assign to People`</mark>

12. Add any users who need access to Dataimporter.

<figure><img src="/files/ljHb2ZdPCVOadUvqP7OP" alt=""><figcaption></figcaption></figure>

13. Click back on the <mark style="color:blue;">`Sign On`</mark> tab and scroll down to the <mark style="color:blue;">`SAML Signing Certificates`</mark> section.
14. Click on <mark style="color:blue;">`Actions`</mark> next for the <mark style="color:blue;">`SHA-2`</mark> type, and click on <mark style="color:blue;">`Download Certificate.`</mark>
15. Click on <mark style="color:blue;">`View IdP metadata`</mark>

<figure><img src="/files/RNQrpJSgReC2FhrViHAU" alt=""><figcaption></figcaption></figure>

## 3. Configuring SSO in Dataimporter

1. Copy the <mark style="color:blue;">`entityId`</mark> value.

<figure><img src="/files/HSA0g0BBzIR79QRPWvgw" alt=""><figcaption></figcaption></figure>

2. Open the tab in Dataimporter and paste the value into the Provider Entity Id field.

<figure><img src="/files/ovEGnONqF9MxPtNP4bL0" alt=""><figcaption></figcaption></figure>

3. Open Okta and copy the Single Sign On Location value.

<figure><img src="/files/zDL5IK2HyMn6DbXLc2pt" alt=""><figcaption></figcaption></figure>

4. Open the tab in Dataimporter and paste the value into the Log In URL field.

<figure><img src="/files/qLGCIxvYtuwP96UY1Wl3" alt=""><figcaption></figcaption></figure>

5. Open the downloaded Certificate in a text editor and copy the entire value.
6. Open the tab in Dataimporter and paste the value into the X509 Certificate field.

<figure><img src="/files/BNQDfyjS3DuyD3CBwXMa" alt=""><figcaption></figcaption></figure>

7. Click on Save.
8. Contact Dataimporter Support to validate and enable SSO for your Organization.&#x20;


# Bring your own Key

Follow these instructions to enable Customer Managed AWS Encryption. You will need to reach out to Dataimporter to complete the final step of the configuration.

## 1. Create AWS Key

1. In your AWS Account, create a new Key in Key Management Service (KMS).
2. In the Key Type choose <mark style="color:blue;">`Symmetric`</mark> and in the Advanced options choose <mark style="color:blue;">`Multi-Region key`</mark>

   <figure><img src="/files/if6eY5l9ajf7iDqIcV8b" alt=""><figcaption></figcaption></figure>
3. Enter an Alias. Choose the Roles and Users to Administer the Key. Under Other AWS Accounts, click on <mark style="color:blue;">`Add another AWS Account`</mark> and Enter Dataimporter's AWS Account Number: <mark style="color:blue;">`293026123612`</mark>

<figure><img src="/files/X1QKjTkeDEtsybCiUyIH" alt=""><figcaption></figcaption></figure>

4. On the newly created Key, take a note of the <mark style="color:blue;">`ARN`</mark>. You will need it later to configure in Dataimporter.

## 2. Provide your ARN to Dataimporter

1. Reach out to Dataimporter and provide the ARN of the newly created Key ARN. It will be in the following format: <mark style="color:blue;">`arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`</mark>
2. Dataimporter will configure your account to use this encryption Key. Once this is done we will confirm with you that your Custom Key setup is complete.


# Changelog

### March 2026

#### Salesforce Backup Improvements

* Improved backup support for **Salesforce Files (ContentVersion)**.
* Added better handling for **externally stored files** such as Quip documents and externally hosted content.
* Improved **delta change detection** for inserts, updates, and deletions during incremental backups.
* Improved reliability when backing up **large Salesforce objects with millions of records**.
* Added improved **gzip compression support** to reduce backup storage size.

***

### February 2026

#### Salesforce Backup Launch

* Introduced **Salesforce Backup for Dataimporter**.
* Automated daily backups for Salesforce objects and files.
* Added **incremental backups using delta change tracking**.
* Introduced **record rollback functionality** allowing restoration of records modified by a specific operation.
* Added **Salesforce API usage monitoring** to help customers track API consumption.

***

### January 2026

#### Import Reliability Improvements

* Improved CSV import handling for **complex quoting and delimiter edge cases**.
* Added improved handling for **large file imports via SFTP**.
* Improved validation to prevent **malformed CSV rows from interrupting imports**.

***

### December 2025

#### Migration Improvements

* Improved **formula field processing** during imports.
* Added support for **dynamic date formulas** in import templates.
* Improved **data preview functionality** for migration templates.

***

### November 2025

#### Performance Improvements

* Improved performance for **large data loads**.
* Improved processing for **multi-million record imports**.
* Improved progress reporting during long running jobs.

***

### October 2025

#### Salesforce Integration Improvements

* Added support for **additional Salesforce objects** during migrations.
* Improved handling of **parent-child relationships between records**.
* Improved **lookup resolution logic** for complex object mappings.

***

### September 2025

#### Automation Improvements

* Improved **scheduled import functionality**.
* Improved retry handling for **failed imports**.
* Added improved **job status visibility and error reporting**.

***

### August 2025

#### Security & Reliability

* Improved system security and infrastructure reliability.
* Strengthened controls as part of ongoing **SOC 2 compliance improvements**.

***

### July 2025

#### User Experience Improvements

* Improved **job run history visibility**.
* Improved **error reporting for failed imports**.
* Improved UI responsiveness when managing large numbers of jobs.

***

### June 2025

#### Platform Enhancements

* Improved support for **SFTP-based data pipelines**.
* Improved reliability of **scheduled integrations**.

***

### May 2025

#### Import Improvements

* Improved handling for **large CSV files**.
* Improved **multi-object migration workflows**.

### **July 2024**

* Attachments and Files are downloaded async in Migration Templates.&#x20;

This improves the speed when migrating Binary Records by about 10x, while maintaining the same functionality.

* Summer '24

API Version upgraded to 62.0 with the Winter '25 release of Salesforce.

### **August 2024**

* SharePoint files are downloaded and uploaded in chunks.&#x20;

This was a fix to a bug where sometimes exports to SharePoint would fail/timeout, where the export file size was larger than 5mb.

* . Attachments & Files can be downloaded as a ZIP.

Files & Attachments that are exported, will now generate a ZIP with the actual files, vs just the metadata. For this to happen the Body or VersionData fields need to be included in the exported fields.

### **September 2024**

* AWS Migration.&#x20;

Frankfurt and Dallas servers migrated to AWS. With this migration came new [IP Addresses](/security/ip-addresses). The migration was communicated to all users 1 month in advance.

* Existing ContentVersions filtered from Template

When running a Migration Template, where the ContentVersions were included multiple times, the same Files would attempt to be migrated twice. Already migrated Files are now filtered automatically.

### **October 2024**

* Winter '25

API Version upgraded to 62.0 with the Winter '25 release of Salesforce.

* Enterprise Trial

New users can now self-request a 7 day Enterprise Trial from within the platform.

* SFTP Exports quotes

Expotred results to SFTP servers are now quoted, so any quotes within the exported records can be saved as a CSV correctly.

### November 2024

* Google Sheets

Bug fix for some instances where Google Sheet Tab Names were not being displayed for selection.

* Bulk API 2.0 Improvements

Improved speed of Bulk API 2.0 Exports with the new release from Salesforce.

* Oracle DB Connector

Oracle DB is now available as an Integration for Import.

* Dependent Picklists in Seeding Templates

Bug fix for nested dependent picklists not generating the correct available values


