Importing users from Active Directory into Office 365

Today I ran into an issue where I had to quickly import x amount of users into an empty trial tenant from
Office 365 in order for to prepare the future mail migration.

Because I’m trying to get everything running through PowerShell, I thought this would be a nice moment to
document everything for future use and for other people to see how it’s done [or give tips ūüėČ ]

Getting user information from Active Directory

First of all I had to get the current user information from Active Directory in a format that I can use in
Office 365.

So we start up PowerShell on the Windows 2008R2 Standard server and get all the details I need:

Now this would give me all the users in the entire domain, something I’m not quite looking for.

So in order to narrow it down, I’ll just query all the users in a specific OU using the SearchBase parameter:

This is better, however now I notice that in my case I have some subfolders with disabled/template users.
Again, I’d like to narrow it down to ONLY the users in the specific OU, no recursion.
For this I will need to further define my query using SearchScope:

This gives me all the results I would like to have, but maybe a bit too much detail for me to export.

In order to see what properties I’d like to export, I need to know what properties I would like to
import on the Office 365 side of things:

    • FirstName
    • LastName
    • DisplayName
    • UserPrincipalName
    • UsageLocation

I can’t get all of those properties from my current AD query, but those that I’m able to get,
I can provide in the format I would like them to be in.

The details I can get from AD are

    • FirstName = GivenName
    • LastName = SurName
    • DisplayName = Name
    • UserPrincipalName = EmailAddress

Using the property parameter we can get the users’ email address and using Select-Object we output the
information in the format we would like to have it:


I can now export this information to a csv file:


Creating Office 365 users based on exported Active
Directory data

Now that we’ve exported our required data, we can simply import this data into our Office 365 tenant

Using the Connect-O365 function which I’ve created in the Connect to Office 365 using PowerShell post,
you can easily perform bulk operations like this:

Once connected, we will need to collect/set some default data required for our bulk user import:

Change the UsageLocation according to your requirements.

Now we’ve got all the information we need to create our new user accounts!

There we go, all the users are imported in your tenant!

Some tips in case you’re running into errors:

    • Be sure to have the email address domain configured in your Office 365 tenant as accepted
    • Be sure to have all your AD information filled in!

You will get automatically assigned passwords for these created accounts and you’re good to go ūüôā


Connect to Office 365 using PowerShell

In order to manage your Office 365 tenant(s) using PowerShell, there are some pre-requisites required.

      1. Ensure you are running Windows 8.1, Windows 8, or Windows 7.
      2. Make sure you have the .NET Framework 3.51 feature [enabled by default on Windows 8 and up]
      3. Make sure you have the latest updates. It is important to run this after you install .NET Framework 3.51, so you get updates for that in addition to updates for your operating system.
      4. Install the Microsoft Online Services Sign-In assistant. Even though the link provided should work, you should always look up the latest version [see next link].
      5. Install the Windows Azure Active Directory (Azure AD) module for the appropriate version of your operating system.

Once these requirements are installed, you can continue to connect to your tenant using the following function:



This will set up a connection with your Office 365 tenant and will also connect to the Exchange configuration so you can easily access mail configuration for your tenant.

Happy scripting!




Reasons to blog


As I’m pondering what to write for my first proper techy blog post, I’ve got to thinking about WHY I’ve chosen to blog in the first place.

Learning by doing…

I’m generally a lurker on forums and social media.

Whenever I need something, I go to Google and have a field day trying to find out of someone has had the same issue that I’m experiencing and hopefully someone has solved it for them.

While this is perfectly fine, over the last few months I’ve noticed that participating in the whole “social” world makes you think about PowerShell more, makes you actively work with PowerShell more and basically it gets you more involved, learning by doing.

It might give you perspectives that you’ve never thought about before [there’s multiple ways to Rome..] and just lets you think about issues you might never think about/come across in your normal day of work.

So for me, blogging makes me have to actively think about PowerShell and DO something with it.

Growing by teaching…

Another point for me to start blogging has to do with my lurking again.

I’m on Twitter, but I never used to be actively participating in it‚Ķ I just read articles tweeted or retweeted by people I followed, but never posted anything.

Until I read the following article by David Sanoy: Be a PowerShell Champion.

I won’t copy the entire contents, but to sum it up:

You don’t need to be the best in PowerShell, but by sharing, teaching, promoting and helping people, you yourself can be a “Champion” of PowerShell within your company/community.

Based on this, with the help of some of my colleagues we started having active tech sessions at work and I gave a presentation on “What is PowerShell” and basically trying to introduce my co-workers to the magic that is.

The amount of people showing up, the reviews, the “high” and all was unexpected to me and really gave me a kick‚Ķ.

I liked teaching people, I liked getting people enthusiastic about something.

Another added bonus was that while preparing for the presentation, I noticed that I had to really KNOW what I was telling them.

Through blogging I’d like to get the same experience, but with a wider audience!