> ## Documentation Index
> Fetch the complete documentation index at: https://docs.accessowl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Importing Userlists

> Learn how to import user lists into AccessOwl using the dynamic CSV importer.

We recommend importing user lists for any application included in your regular access reviews. There are three common approaches:

1. **One-time import** - Import once, then manage all requests and revocations directly in AccessOwl.
2. **Periodic import** - Update the user list on a schedule (for example, quarterly before an access review).
3. **Automated sync** - Fully automate synchronization between AccessOwl and the application. To request this, contact AccessOwl support. We prioritize integrations based on demand.

## How to Import a User List

<div style={{ position: "relative", paddingBottom: "calc(48.4795% + 41px)", height: 0, width: "100%" }}>
  <iframe src="https://demo.arcade.software/irDrwOKgSIN3AOzHAlEf?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="Importing Userlists" frameBorder="0" loading="lazy" webkitAllowFullScreen mozAllowFullScreen allowFullScreen allow="clipboard-write" style={{ position: "absolute", top: 0, left: 0, width: "100%", height: "100%", colorScheme: "light" }} />
</div>

<Steps>
  <Step title="Open the application">
    Go to the application and click **Edit**, then click **Import**.
  </Step>

  <Step title="Upload or paste your data">
    Upload a CSV file or copy-paste table data into the dynamic CSV importer.
  </Step>

  <Step title="Review and confirm">
    Review the imported data and confirm the import.
  </Step>
</Steps>

<Warning>
  Ensure that your permission names in AccessOwl match the exact names from the source application. Mismatched naming will cause an error. Capitalization does not matter.
</Warning>

## CSV Format

Your CSV always starts with the **Email** column. Each additional column represents one of your resources. The rows contain the permissions for that resource.

Below are examples showing different permission structures.

### Single Resource

The simplest case. The application has one resource and each user holds one permission.

| Email                                                     | Role   |
| --------------------------------------------------------- | ------ |
| [john.doe@accessowl.com](mailto:john.doe@accessowl.com)   | Admin  |
| [jane.doe@accessowl.com](mailto:jane.doe@accessowl.com)   | Viewer |
| [oscar.owl@accessowl.com](mailto:oscar.owl@accessowl.com) | Editor |

### Multiple Resources with Multiple Permissions

When an application has more than one resource, each resource gets its own column. A user may have permissions for some resources but not others.

| Email                                                     | License    | Security Group      |
| --------------------------------------------------------- | ---------- | ------------------- |
| [john.doe@accessowl.com](mailto:john.doe@accessowl.com)   | Enterprise | IT-Admins;VPN-Users |
| [jane.doe@accessowl.com](mailto:jane.doe@accessowl.com)   | Standard   |                     |
| [oscar.owl@accessowl.com](mailto:oscar.owl@accessowl.com) | Enterprise | VPN-Users           |

Here, John has one license permission and two security group memberships. Jane only has a license and no security group assignment.

### Parent Resource with Child Resources

Some applications combine a simple resource with a parent-child resource structure. In this example, the application has a **Roles** resource (simple) and a parent resource with two child resources: **Team A** and **Team B**. Each child resource appears as its own column, without the parent name as a prefix.

| Email                                                           | Roles               | Team A | Team B |
| --------------------------------------------------------------- | ------------------- | ------ | ------ |
| [alex.chen@accessowl.com](mailto:alex.chen@accessowl.com)       | Team brand designer | User   | User   |
| [jordan.smith@accessowl.com](mailto:jordan.smith@accessowl.com) | Team brand designer | Admin  | Admin  |
| [priya.patel@accessowl.com](mailto:priya.patel@accessowl.com)   | Team brand designer | Admin  | Admin  |

In this example, each user has a role and permissions for both Team A and Team B. Because Team A and Team B are child resources under the same parent, their permissions are handled within the same row.

### Multiple Separate Resources

When an application has multiple independent resources (not parent-child), each resource gets its own column. In this example, the application has three resources: **Organization Role**, **Project** (a list of projects), and **Project Role** (the role within that project).

Because Project and Project Role are separate resources, a user who belongs to multiple projects with different roles needs a separate row for each combination. Duplicate the user's email for each row.

| Email                                                     | Organization Role | Project | Project Role |
| --------------------------------------------------------- | ----------------- | ------- | ------------ |
| [john.doe@accessowl.com](mailto:john.doe@accessowl.com)   | Member            | Alpha   | Viewer       |
| [jane.doe@accessowl.com](mailto:jane.doe@accessowl.com)   | Admin             | Beta    | Admin        |
| [oscar.owl@accessowl.com](mailto:oscar.owl@accessowl.com) | Admin             | Alpha   | Admin        |
| [oscar.owl@accessowl.com](mailto:oscar.owl@accessowl.com) | Admin             | Beta    | Member       |

In this example, Oscar is in two projects with different roles. He is an Admin in Project Alpha and a Member in Project Beta. Because Project and Project Role are not linked as parent-child, Oscar needs two rows.

<Tip>
  Leave a cell empty if the user does not have any permission for that resource. You do not need to fill every column for every user. When a user holds more than one permission for the same resource, separate them with a semicolon and no spaces, for example `Admin;Editor`.
</Tip>
