Bulk User Creation in Microsoft Entra ID: CSV & PowerShell Guide | VMoreCloud
VMoreCloud › Microsoft Azure › Microsoft Entra ID
MICROSOFT ENTRA ID • IDENTITY MANAGEMENT • POWERSHELL

How to Perform Bulk User Creation in Microsoft Entra ID

Learn how to create multiple cloud user accounts efficiently using the Microsoft Entra admin center CSV upload workflow and Microsoft Graph PowerShell, with validation, verification, and security best practices.

By Khurram ShahzadStep-by-step administrator guideBeginner to intermediate
Bulk user creation in Microsoft Entra IDA cloud identity dashboard connected to multiple user profile cards and a CSV spreadsheet, representing bulk account provisioning. VMORECLOUD • IDENTITY MANAGEMENT MICROSOFT ENTRA ID BULK USER CREATION CSV provisioning • Graph PowerShell • Verification IDENTITY PROVISIONING WORKFLOWPrepare CSV → Validate → Create → Verify Entra ID • Users User accountCreated User accountCreated User accountCreated User accountCreated BULK PROVISIONING Plan identities carefully. Protect credentials. Verify every account.
Security noteBulk provisioning can create many active identities at once. Use an approved account list, least-privilege administrator roles, secure handling of initial passwords, and a post-import verification process. Never publish real passwords or production user data in a tutorial CSV.

What You’ll Learn

  • Understand prerequisites and permissions for bulk user creation.
  • Download and complete the official Microsoft Entra CSV template.
  • Upload the CSV and review the bulk-operation results.
  • Create accounts with Microsoft Graph PowerShell for repeatable provisioning.
  • Verify created users and apply group membership or licensing as a separate controlled task.

1. Overview of Bulk User Creation

Microsoft Entra ID supports bulk creation of internal member accounts through a CSV upload in the Microsoft Entra admin center. Administrators download the current template, add one user per row, upload the file, validate it, and submit the bulk job.

For repeatable or automated workflows, Microsoft Graph PowerShell provides a programmatic approach using the New-MgUser cmdlet. Choose the method that matches the size of the task, operational controls, and your organization’s automation standards.

Important distinctionThe portal’s bulk create workflow creates internal member accounts. It does not send invitation emails to those new users. For external B2B guests who should receive invitations, use the dedicated guest invitation workflow instead.

2. Prerequisites and Permissions

  • An active Microsoft Entra tenant.
  • Access to the Microsoft Entra admin center.
  • At least the User Administrator role to bulk create users in the admin center.
  • Verified tenant domain and a naming convention for user principal names (UPNs).
  • An approved user list containing names, UPNs, and initial password handling instructions.
  • For PowerShell, Microsoft Graph PowerShell and an account with the required user-creation permission.

Use a dedicated administrative account and follow Privileged Identity Management (PIM) or just-in-time elevation policies where your organization has them enabled.

3. Plan the User List Before Import

Before creating accounts, confirm the business owner has approved the identities and access requirements. Define the user’s display name, sign-in name, department, usage location (if needed), and intended group membership.

Planning itemExampleWhy it matters
Display nameAlex MorganReadable identity shown in Microsoft 365 and Entra.
User principal namealex.morgan@contoso.comUnique sign-in name in the tenant.
DepartmentIT OperationsSupports directory organization and downstream processes.
Usage locationPKCan be required before assigning certain licenses.
Group membershipIT-OperationsControls access through group-based assignments.

Check for duplicate UPNs, spelling errors, incorrect tenant domains, and users who already exist. Keep the approved source list separate from the import file and retain an audit record of the request.

4. Download and Prepare the Official CSV Template

1

Open Microsoft Entra admin center

Sign in at https://entra.microsoft.com/ with an account that has the required role.

2

Navigate to Users

Open Entra ID → Users, then choose Bulk create. The exact navigation labels can change as the admin center evolves.

3

Download the current template

Select Download on the Bulk create user page. Always start with the latest template downloaded from your tenant rather than reusing an old CSV.

4

Preserve the column headers

Keep the downloaded column headings exactly as provided. Microsoft documents these required columns:

  • Name [displayName] Required
  • User name [userPrincipalName] Required
  • Initial password [passwordProfile] Required

Enter one user per row. Other supported columns in the downloaded template are optional. Do not invent new column headings; additional columns may be ignored.

5

Save as CSV

Keep the .csv extension, remove unintended spaces from values, and ensure the initial passwords meet your tenant’s password policy.

Protect the CSV fileThe portal template includes initial passwords. Store it only in an approved secure location, restrict access, avoid email or public file shares, and securely delete temporary copies after the provisioning and audit requirements are satisfied.

Illustrative CSV structure

The following is a simplified example of the three required fields. For an actual portal upload, use the exact full header row and any version/example rows from the template downloaded from your tenant.

Name [displayName] Required,User name [userPrincipalName] Required,Initial password [passwordProfile] Required
Alex Morgan,alex.morgan@contoso.com,REPLACE_WITH_SECURE_INITIAL_PASSWORD
Jamie Lee,jamie.lee@contoso.com,REPLACE_WITH_SECURE_INITIAL_PASSWORD
Taylor Smith,taylor.smith@contoso.com,REPLACE_WITH_SECURE_INITIAL_PASSWORD

Do not use the placeholder password literally. Replace it through your organization’s approved credential-generation and delivery process.

5. Create Users in the Microsoft Entra Admin Center

1

Upload your CSV file

On the Bulk create user page, use the file picker under Upload your CSV file and select the completed CSV.

2

Submit the file for validation

Select Submit to start validation. If the file contains formatting or data errors, correct them using the validation feedback and upload it again.

3

Review validation status

Wait for the upload validation result. Do not assume users have been created merely because the file was selected or uploaded successfully.

4

Start the bulk create job

When validation succeeds, submit the bulk operation as prompted. Monitor the job until it reports completion.

5

Record the result

Save the job outcome and any downloadable results file in the approved administrative record location.

Expected outcomeThe bulk operation creates internal member accounts using the supplied initial passwords. The operation does not send invitation emails; arrange secure credential communication separately.

6. Review Bulk Operation Results

Open the bulk operation results area in the Entra admin center and locate the submitted job. Review its status and download the results file if the operation reports errors.

  • Confirm the job completed rather than remaining pending or failed.
  • Review each failed row and the reason returned by the service.
  • Correct only the affected records and resubmit them as a controlled new batch.
  • Do not blindly re-upload the entire original file, because some accounts may already have been created.

Microsoft notes that large bulk operations can encounter time-related limitations. If a job does not complete within the service window, divide the records into smaller batches and retry after reviewing the job outcome.

7. Bulk User Creation with Microsoft Graph PowerShell

Microsoft Graph PowerShell is useful when provisioning must be repeatable, logged, or integrated into an administrative workflow. This example reads a CSV with administrator-defined columns and creates users one at a time.

7.1 Install Microsoft Graph PowerShell

Install-Module Microsoft.Graph -Scope CurrentUser

7.2 Connect with the required permission

Import-Module Microsoft.Graph.Users
Connect-MgGraph -Scopes "User.ReadWrite.All"
Get-MgContext

Use an account authorized to consent to or use the requested permission under your tenant’s consent policies. Grant only the permissions required for the task.

7.3 Prepare a PowerShell-specific CSV

This is a separate input format for the script below; it is not the portal’s downloaded CSV template. Save it as entra-users-graph.csv with these columns:

DisplayName,UserPrincipalName,MailNickname,GivenName,Surname,Department,UsageLocation,InitialPassword
Alex Morgan,alex.morgan@contoso.com,alex.morgan,Alex,Morgan,IT Operations,PK,REPLACE_WITH_SECURE_PASSWORD
Jamie Lee,jamie.lee@contoso.com,jamie.lee,Jamie,Lee,Finance,PK,REPLACE_WITH_SECURE_PASSWORD
Credential handling for PowerShellThis example reads the initial password from the CSV because Microsoft Graph requires a password value in the password profile. Treat the file as a secret: use a restricted folder, do not commit it to source control, and remove it securely after use. For production automation, integrate with an approved secrets-management process.

7.4 Run the user-creation script

$CsvPath = ".\entra-users-graph.csv"
$Users = Import-Csv -Path $CsvPath

$Results = foreach ($User in $Users) {
    try {
        if ([string]::IsNullOrWhiteSpace($User.UserPrincipalName)) {
            throw "UserPrincipalName is empty."
        }

        $Existing = Get-MgUser -Filter "userPrincipalName eq '$($User.UserPrincipalName)'" -ErrorAction SilentlyContinue

        if ($Existing) {
            [pscustomobject]@{
                UserPrincipalName = $User.UserPrincipalName
                Status = "Skipped"
                Details = "A user with this UPN already exists."
            }
            continue
        }

        $PasswordProfile = @{
            Password = $User.InitialPassword
            ForceChangePasswordNextSignIn = $true
        }

        $Parameters = @{
            DisplayName       = $User.DisplayName
            UserPrincipalName = $User.UserPrincipalName
            MailNickname      = $User.MailNickname
            AccountEnabled    = $true
            PasswordProfile   = $PasswordProfile
        }

        if ($User.GivenName)     { $Parameters.GivenName = $User.GivenName }
        if ($User.Surname)       { $Parameters.Surname = $User.Surname }
        if ($User.Department)    { $Parameters.Department = $User.Department }
        if ($User.UsageLocation) { $Parameters.UsageLocation = $User.UsageLocation }

        $Created = New-MgUser @Parameters -ErrorAction Stop

        [pscustomobject]@{
            UserPrincipalName = $User.UserPrincipalName
            Status = "Created"
            Details = $Created.Id
        }
    }
    catch {
        [pscustomobject]@{
            UserPrincipalName = $User.UserPrincipalName
            Status = "Failed"
            Details = $_.Exception.Message
        }
    }
}

$Results | Export-Csv ".\entra-user-creation-results.csv" -NoTypeInformation
$Results | Format-Table -AutoSize

The script checks for an existing UPN, creates the account, sets the password-change-at-next-sign-in flag, and writes a result for each row. Review the script in a test tenant before production use. Password complexity, banned-password, authentication, licensing, and tenant policies still apply.

7.5 Disconnect the Graph session

Disconnect-MgGraph

8. Verify the Created Users

After the bulk job completes, verify the accounts in the admin center and, if appropriate, with Microsoft Graph PowerShell.

Verify in the admin center

  1. Open Entra ID → Users → All users.
  2. Search for several UPNs from the import list.
  3. Open each account and verify display name, UPN, account status, and expected profile properties.
  4. Compare the created accounts with the approved request list.

Verify with PowerShell

Connect-MgGraph -Scopes "User.Read.All"

Get-MgUser -Filter "UserType eq 'Member'" `
  -Property Id,DisplayName,UserPrincipalName,AccountEnabled |
  Select-Object DisplayName,UserPrincipalName,AccountEnabled,Id

Disconnect-MgGraph

For a targeted check, replace the filter with a specific UPN filter or query the user by ID. Avoid relying only on a total user count; confirm the expected identities and properties.

9. Add Newly Created Users to Groups

Creating users and assigning group membership are separate administrative actions. After verifying the accounts, add them to the correct security or Microsoft 365 groups according to your access model.

For a detailed walkthrough of group creation and membership management, see our related tutorial:

Use role-appropriate groups and avoid granting broad access simply to make onboarding easier. Where possible, use group-based licensing and access assignments with documented ownership.

10. Troubleshooting Common Bulk User Creation Errors

CSV upload or validation fails

Download a fresh template and preserve its headers and any version row exactly. Confirm the file is saved with a .csv extension and contains no unexpected spaces or malformed rows.

Duplicate user principal name

Search the tenant for the UPN before resubmitting. Choose a unique, approved sign-in name rather than changing names arbitrarily.

Initial password rejected

Use a password that meets the tenant’s active password policy. Avoid reusing a shared password across many users; use an approved per-user credential process.

Bulk operation reports partial failures

Download the results file, identify failed rows, and correct only those entries. Some users may already have been created successfully.

PowerShell reports insufficient privileges

Check the signed-in identity, Graph scopes, tenant consent, and assigned directory role. Reconnect after permission changes and test with a limited account set.

Graph script skips or fails a user

Inspect the exported results CSV, verify the UPN and required fields, and confirm the account does not already exist. Review the returned error before retrying.

11. Security and Operational Best Practices

  • Use the least-privileged role that supports the task; the portal workflow requires at least User Administrator.
  • Obtain approval for the user list and intended access before provisioning.
  • Use unique initial passwords and require a password change at first sign-in where appropriate.
  • Deliver credentials through an approved secure channel, never in the same email as the account list.
  • Protect CSV files and PowerShell input files because they may contain credentials and personal information.
  • Test with a small batch before importing a large population.
  • Keep the bulk job result and a reconciliation record for audit purposes.
  • Verify accounts, group membership, usage location, and licensing separately.
  • Disable or remove accounts promptly when a provisioning request is cancelled or incorrect.
  • Use a controlled change window for large imports and split batches if service limits or timeouts occur.

12. Frequently Asked Questions

What role is required to bulk create users in Microsoft Entra ID?

Microsoft documents at least the User Administrator role as a prerequisite for bulk user creation in the Entra admin center.

Which CSV columns are required?

The documented required columns are Name [displayName] Required, User name [userPrincipalName] Required, and Initial password [passwordProfile] Required. Preserve the exact headers from the current downloaded template.

Does bulk create send invitation emails?

No. Bulk create provisions internal member accounts and does not send invitation emails. Use the dedicated bulk invite workflow for external B2B guest users.

Can I use PowerShell to create multiple Entra users?

Yes. Microsoft Graph PowerShell provides the New-MgUser cmdlet. You can read approved user records from a CSV and create accounts programmatically.

Can I add users to groups during the same portal CSV import?

The documented bulk-create user CSV workflow creates user accounts. Treat group membership as a separate operation and manage it after verifying the new accounts.

What should I do if only some users were created?

Download the bulk operation results file, identify the failed records, correct their data, and resubmit only the records that were not created.

How should initial passwords be handled?

Use unique passwords that satisfy tenant policy, protect files containing them, require a password change at first sign-in where appropriate, and communicate credentials through an approved secure process.

13. Official References and Further Reading

KS

About the Author

Khurram Shahzad — Hybrid Cloud & Virtualization Engineer

Hybrid Cloud & Virtualization Engineer specializing in VMware, Azure, AWS, Windows Server, Microsoft 365, Linux, networking, backup & disaster recovery. I share practical guides, technical projects and insights into modern IT infrastructure through VMoreCloud.

Explore More Microsoft Azure and Identity Guides

Find practical tutorials on Microsoft Entra ID, Azure, Microsoft 365, Windows Server, virtualization, and cloud infrastructure.

Visit VMoreCloud

Leave a Reply

Your email address will not be published. Required fields are marked *