Find and export list of users with no Country set in Office 365 Profile

This is the article no 05 in the series.

Having a complete profile in Office365 is not just a benefit for user himself, but for the entire organization which directly impacts on productivity. A finished profile leads to better visibility and eventually results in faster communications across hundreds of thousands of employees in an enterprise setup. Ultimate idea of Office Delve (latest interface of profile comes with more capabilities such as recent activities) is to provide overall insights of a user information and his activities/engagements which makes obvious sense for anyone.


Nevertheless, none of these would be in action unless you have a complete profile with basic details entered in. No matter how much HR would try to push, we still spot a lot of random users who haven’t completed their profiles.

With this short and sweet article series, I’m trying to give you the steps that we followed during the identifying process as requested by our HR. screenshots may differ than our production setup, but you surely will get the point here.

I had to use some PowerShell scripting to get this list out from Office 365 and generate a CSV file for each criteria so that HR can directly reach out to the user via emails and advice to take an action to update the profile on the spot. As a result, we were able to get 100% completeness of profiles across a 5000+ employee organization.

There is no out of the box reporting when it comes to Profile Completeness in Office 365, therefore we have no option other than PowerShell. PowerShell is the ultimate tool for O365 administration, whenever graphical interface has a barrier, hence, make sure you dig around it to understand its capabilities to go beyond.


In this article I’m demonstrating the steps it takes to find out the users who has not set their relevant country in Office 365 profiles (or simply, delve profile). This isn’t sort of a blog I wanted to write but since this daily requests comes from HR to find users (not criminals though !), this might be a common case in most places and why not write down the steps right?

So here we go, following are the requirements before we get started. Make sure you setup your environment with these:

First and foremost, we need to fetch the Office365 credentials and then connect to Azure Active Directory.

$cred = get-Credential
Connect-AzureAD -Credential $cred
Then let’s fetch all users in this tenant, who are internal to the company and that have at least one license assigned to them.

$Users = Get-AzureADUser | Where {$_.UserType -eq 'Member' -and $_.AssignedLicenses -ne $null}
Now to create an empty array in which we will later store the output (user list who has not set the relevant Country)

$NoCountryUsers = @()

Now we will dig in through each user, and check if they have any value set in their Azure AD user profile. If not, we will save them in to the array we crated. And then finally export these set of users in to a CSV file called “NoCountryUsers.csv“.

foreach ($user in $Users)
    if ($user.Country -eq $null)
        $NoCountryUsers += $user
And, finally we can export the SharePoint result to a CSV through below part. This line will save the data that we extracted and stored in the array we created as “NoCountryUsers
$NoCountryUsers | Select DisplayName, UserPrincipalName | Export-Csv -Path "C:\Tools\Reports\NoCountryUsers.csv" -NoTypeInformation
DISCLAIMER NOTE: This is an enthusiast post and is not sponsored by Microsoft or any other vendor.