> For the complete documentation index, see [llms.txt](https://docs.securepass.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.securepass.me/documentation/admin-user-guide/ways-to-onboard-a-user/importing-users.md).

# Importing users

Importing brings users into SECUREpass in bulk, from a directory you connect to or from a file you upload. Every route on this page ends in the same place — user records on the Manage Users page, each tagged with the source it came from.

Use an import whenever you are onboarding more than a handful of people. Adding users one at a time is covered separately under *Creating a single user manually*.

## Choosing a source

| Source           | Use it when                                                    |
| ---------------- | -------------------------------------------------------------- |
| Active Directory | Your users live in Microsoft Active Directory                  |
| OpenLDAP         | Your users live in an OpenLDAP directory                       |
| Azure AD         | Your users live in Microsoft Entra ID (Azure AD)               |
| Excel            | You have a spreadsheet of users, or no directory to connect to |
| JSON             | Another system or a script is producing the user list          |

Nothing stops you using more than one. A common pattern is a directory import for employees and an Excel or JSON import for contractors who were never in the directory.

## The two shapes an import takes

Knowing which shape you are in tells you what to expect before you start.

{% tabs %}
{% tab title="Directory imports" %}
Active Directory, OpenLDAP and Azure AD connect SECUREpass to the source and read from it.

{% stepper %}
{% step %}

## Create or select a connection

Test it.
{% endstep %}

{% step %}

## Choose what to read

Choose the containers or the filters that scope the import.
{% endstep %}

{% step %}

## Map source attributes

Map the source's attributes onto the SECUREpass user fields, adding custom attributes where you need them.
{% endstep %}

{% step %}

## Select users and save

Select the users you want from the fetched list, and save.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="File imports" %}
Excel and JSON carry the data in the file itself, so there is no connection and no attribute mapping.

{% stepper %}
{% step %}

## Download the template

{% endstep %}

{% step %}

## Fill it in

Keep the column or key names exactly as supplied.
{% endstep %}

{% step %}

## Upload, select users, and save

Upload the file, select the users SECUREpass parsed from it, and save.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

## Two things worth knowing before any import

{% hint style="info" %}
**You choose who is onboarded, not the source.** Every route ends with a list of the users it found and a selection step. Reading a container or uploading a file does not commit you to onboarding everyone in it.
{% endhint %}

{% hint style="success" %}
**Importing the same person twice is safe.** If a user already exists in SECUREpass and is picked up again by a later import, the two records are merged into one. Re-running an import to pick up new joiners does not duplicate the people already onboarded.
{% endhint %}

## On this page's sub-pages

| Page                  | Covers                                                                               |
| --------------------- | ------------------------------------------------------------------------------------ |
| From Active Directory | The full four-step wizard, including custom attribute mapping                        |
| From OpenLDAP         | The same wizard against an OpenLDAP directory                                        |
| From Azure AD         | Creating the Azure connection, the credentials and filters, and narrowing the import |
| From an Excel file    | The spreadsheet template and the upload                                              |
| From a JSON file      | The JSON template, its field names and formats, and the upload                       |

Read *From Active Directory* first if you are importing from any directory. OpenLDAP follows the same wizard, and Azure AD differs only in how the connection is made.
