EASYENTRA Blog

News & Updates

How to Bulk Import New users in Microsoft 365 

Bulk-import users in Microsoft 365 hybrid and cloud-only environments

If you’ve ever sat at your desk manually creating users through the Microsoft 365 Admin Center, you already know the pain. It works fine for one or two accounts. But when you’re staring down a hiring wave, a company acquisition, clicking through the same process for each person isn’t just tedious; it’s a reliability risk. One missed checkbox, one wrong license SKU, one department field left blank. These tiny errors compound quickly when you’re doing them at scale.

Microsoft 365 does provide options for bulk user creation, but most of them only address part of the problem. The real challenge isn’t just creating users, it’s onboarding them completely, consistently, and efficiently.

In this guide, we’ll explore how to handle bulk user onboarding in Microsoft 365 more effectively, starting with native tools, moving into PowerShell automation, and finally looking at a smarter, template-driven approach.

 

The Real Challenge with Manual Bulk Onboarding

Creating users in bulk is easy; the real challenge is everything that comes after.

Using the Microsoft 365 Admin Center

The Microsoft 365 admin center offers a straightforward way to create multiple users through CSV uploads. By navigating to Users → Active users → Add multiple users, administrators can upload a spreadsheet containing user details, allowing accounts to be created in bulk. The platform supports a wider range of attributes compared to Entra, including display names, usernames, and basic profile information. It also provides downloadable templates and sample files, making it easier to structure the data correctly before upload.

While this approach simplifies initial account creation, it doesn’t deliver a complete onboarding experience. Administrators can assign licenses and define usage locations during the process, but critical configurations, such as group memberships, manager assignments, mailbox settings, and other advanced attributes, are not fully covered. As a result, once users are created, administrators still need to revisit each account to complete these configurations manually.

The CSV method reduces effort at the start, but it doesn’t remove the need for significant post-creation work.

Using the Microsoft Entra Admin Center

The Microsoft Entra admin center also supports bulk user creation using CSV uploads. This can be accessed via Entra ID → Users → Bulk operations → Bulk create. Administrators upload a CSV file with required fields such as name, user principal name, initial password, and sign-in status. The system validates the file before proceeding, ensuring that only correctly formatted data is processed. If errors are found, the file must be corrected and reuploaded.

However, this method is more restrictive in terms of supported attributes. It primarily focuses on creating the user identity, without extending into broader configuration needs.

Just like in the Microsoft 365 admin center, the process stops at user creation. Administrators are still responsible for completing the remaining setup steps manually, making bulk onboarding only partially automated and far from truly efficient.

Using Microsoft Graph PowerShell

Microsoft Graph PowerShell provides a powerful and scalable approach to bulk user onboarding, particularly when managing large volumes of users.

The process typically begins with preparing a CSV file that includes key user attributes such as DisplayName, FirstName, LastName, User Principal Name (UPN), MailNickname, Department, JobTitle, ManagerUPN, and LicenseSku.

# Connect to Microsoft Graph
Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"
Connect-ExchangeOnline
# Import CSV
$users = Import-Csv ".csv"
# Get available SKUs
$skus = Get-MgSubscribedSku
foreach ($u in $users) {
    # Prepare user parameters (NO backticks → no errors)
    $params = @{
        DisplayName       = $u.DisplayName
        GivenName         = $u.FirstName
        Surname           = $u.LastName
        UserPrincipalName = $u.UPN
        MailNickname      = ($u.UPN.Split("@")[0])
        AccountEnabled    = $true
        UsageLocation     = "US"
        Department        = $u.Department
        JobTitle          = $u.JobTitle
        PasswordProfile   = @{
            Password                      = [System.Web.Security.Membership]::GeneratePassword(16,4)
            ForceChangePasswordNextSignIn = $true
        }
    }
    try {
        # Create user
        $newUser = New-MgUser @params -ErrorAction Stop
        # Get matching license SKU
        $sku = $skus | Where-Object { $_.SkuPartNumber -eq $u.LicenseSku }
        if ($sku) {
            $licBody = @{
                AddLicenses    = @(@{ SkuId = $sku.SkuId })
                RemoveLicenses = @()
            }
            Set-MgUserLicense -UserId $newUser.Id -BodyParameter $licBody
        }
        # Assign manager
        if ($u.ManagerUPN) {
            $mgr = Get-MgUser -UserId $u.ManagerUPN -ErrorAction SilentlyContinue
            if ($mgr) {
                $mgrRef = @{
                    "@odata.id" = "https://graph.microsoft.com/v1.0/users/$($mgr.Id)"
                }
                Set-MgUserManagerByRef -UserId $newUser.Id -BodyParameter $mgrRef
            }
        }
        Write-Host "✅ Created: $($u.DisplayName)"
    } catch {
        Write-Host "❌ Failed: $($u.DisplayName) - $($_.Exception.Message)"
    }
}

This approach gives administrators greater control over the onboarding process, enabling consistent, large-scale provisioning without the limitations of graphical interfaces. It also allows integration with broader automation workflows, making it ideal for organizations looking to streamline identity management.

However, this flexibility comes with added complexity. It requires a good understanding of scripting, and even small issues in the CSV structure or command parameters can lead to execution errors. As a result, careful data validation and script management are essential to ensure a smooth and reliable onboarding process.

 

A Smarter Alternative: Easy Entra

This is where solutions like EasyEntra change the game.

Instead of defining onboarding logic repeatedly, EasyEntra allows you to capture the entire user provisioning process in a reusable Virtual User Template. This template acts as a blueprint, containing everything from identity attributes and license assignments to group memberships, mailbox configuration, and regional settings.

To see how this works in action, here’s a quick walkthrough of creating a user from a predefined template:

1. Create a Virtual User Template from an Existing User

The first step is to establish a template that represents the role you want to standardize. This is typically done by selecting an existing user whose configuration reflects the desired setup, adjusting any settings as needed, and finally capturing those settings into a Virtual User Template:

This approach ensures that everything, from access rights to environment configuration, is consistently defined upfront, rather than reconstructed each time a new user is onboarded.

2. Create New Users Using the Template (PowerShell or GUI)

Once the template is in place, user creation becomes significantly simpler. Instead of executing multiple configuration steps, you only need to reference the template and provide minimal user-specific details, such as the display name.

For bulk onboarding scenarios, EasyEntra also supports PowerShell, but in a much simpler and more structured way. Rather than building complex scripts, you can loop through a CSV file and call a single cmdlet, Invoke-EECreateHybridUserFromTemplate, for each user.

For administrators who prefer not to use PowerShell, EasyEntra also provides a graphical interface where users can be created from templates with just a few inputs. Behind the scenes, all onboarding steps are executed automatically, making it especially useful for helpdesk teams or environments with limited scripting expertise.

Scripts Drift – Templates Don’t

The key difference lies in how the problem is approached. Traditional PowerShell automation focuses on scripting individual steps, which can become complex and difficult to maintain over time. EasyEntra, on the other hand, standardizes the entire process through templates.

By shifting from scripts to templates, organizations can achieve consistent, reliable, and scalable user onboarding, without the ongoing burden of maintaining intricate automation logic.

Free 30-minute demo

try 30 days for free

GET EASYENTRA NEWS

Opt out at any time

“One of the best products I've used.”
Gary Shurland
Chief Information Officer, Mirick, United States
“This tool has been invaluable in streamlining our IT processes.”
Tyson Mckay
Chief Information Officer, Southwest Network, United States
“This product has been a miracle for our Help Desk. EasyEntra has completely transformed how we handle Microsoft 365 administration.”
Doug Sanders
Manager of Technical Customer Support, Junior Achievement USA, United States
“Your product is such a time saver. I love it!”
Scott Fehr
IT Infrastructure, MEC Aerial Work Platforms, United States
“It's a good product and saves us lots of time for these ongoing quick admin tasks.” 
Chris McFerran
Managing Director, CTech IT Solutions Ltd, United Kingdom
“EasyEntra has significantly streamlined our workflow, simplifying everything. It feels almost like a revolution.”
Johan Sadelius
IT-chef, Arjeplog Kommun, Sweden
I greatly appreciate your assistance and willingness to enhance the already outstanding product.”
Michael I. Wilson
Executive Director of Information Technology, Archdiocese Of Washington, United States
“It's great not having to switch back and forth between the O365 admin center and the Teams admin center to assign groups. I am sold!”
Thomas Madden
Director Information Technology, AutoPayPlus, United States
“I would highly recommend organizations use the solution as it greatly simplifies various tasks.”
S. Roger Singh
Chief Technology Officer, Prasad & Company LLP, Canada
“EasyEntra is time-saving. Love the copy/paste for user/computer groups and the copy to new user.”
Damian Nita
Associate Network Administrator, Shenandoah Valley Westminster-Canterbury, United States
“EasyEntra has transformed our daily IT operations by simplifying user management, reducing errors, and enhancing overall efficiency.”
Henrik Nefling
IT- and Digitalization Manager, Animal Protection Denmark, Denmark