This is the article 01 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.
FINDING USERS WITH NO CELL PHONE NUMBER SET IN THEIR PROFILE (This Article)
In this article I’m trying to explain the steps it takes to find out the users who has not set a phone number in their Office 365 profile (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 !
So here we go, following are the requirements before we get started:
- Azure AD PowerShell Module : https://www.powershellgallery.com/packages/AzureAD
- SharePoint Online PnP Module: https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline/
- SharePoint Online Administrator
- Azure AD Administrator
This is the full script which we will be using across this entire scenario:
$cred = get-Credential Connect-AzureAD -Credential $cred Connect-PnpOnline -Url https://mantoso-admin.sharepoint.com/ -Credentials $cred $Users = Get-AzureADUser | Where {$_.UserType -eq 'Member' -and $_.AssignedLicenses -ne $null} $NoCellUsers = @() foreach ($user in $Users) { if ($user.Mobile -eq $null) { $NoCellUsers += $user } } $NoCellUsers | Select DisplayName, UserPrincipalName | Export-Csv -Path "C:\O365Reports\UsersWithNoCellInAD.csv" -NoTypeInformation $NoCellinSPUsers = @() foreach ($user in $Users) { $SPProfile = Get-PnPUserProfileProperty -Account $user.UserPrincipalName -ErrorAction SilentlyContinue if ($SPProfile -ne $null) { if ($SPProfile.UserProfileProperties.CellPhone -eq "") { $NoCellinSPUsers += $user } } } $NoCellinSPUsers | Select DisplayName, UserPrincipalName | Export-Csv -Path "C:\O365Reports\UsersWithNoCellInSP.csv" -NoTypeInformation
Script steps breakdown:
First and foremost, we need to fetch the Office365 credentials and then connect to Azure Active Directory and the SharePoint Online Admin Center with the PnP cmdlets.
$cred = get-Credential Connect-AzureAD -Credential $cred Connect-PnpOnline -Url https://mantoso-admin.sharepoint.com/ -Credentials $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 a mobile)
$NoCellUsers = @()
Now we will dig in through each user, and check if their Mobile property is filled or not. If not, I will add them to the array i just created in the previous step, and export them to a CSV file called “NoCellUsers.csv”. Sounds great right !
$Users = Get-AzureADUser | Where {$_.UserType -eq 'Member' -and $_.AssignedLicenses -ne $null} $NoCellUsers = @() foreach ($user in $Users) { if ($user.Mobile -eq $null) { $NoCellUsers += $user } } $NoCellUsers | Select DisplayName, UserPrincipalName | Export-Csv -Path "C:\Tools\Reports\NoCellUsers.csv" -NoTypeInformation
AD Users done but SharePoint yet to be. For that we have to dig in to SharePoint Users and find out if they have SharePoint profiles or not. If the profile exists and “CellPhone” property is null, it means this user has not set the phone number. In this case we will save this entry in a new array called “NoCellSPUsers” for SharePoint only reports.
$NoCellSPUsers = @() foreach ($user in $Users) { $SPProfile = Get-PnPUserProfileProperty -Account $user.UserPrincipalName -ErrorAction SilentlyContinue if ($SPProfile -ne $null) { if ($SPProfile.UserProfileProperties.CellPhone -eq "") { $NoCellinSPUsers += $user } } }
And, finally we can export the SharePoint result to a CSV through below part.
$NoCellinSPUsers | Select DisplayName, UserPrincipalName | Export-Csv -Path "C:\Tools\Reports\.csv" -NoTypeInformation
Also read the other articles of this series:
- Find and export list of users with no Manager Name set in Office 365 profile:
- Find and export list of users with no Manager Name set in Office 365 profile:
- Find and export list of users with no Profile Picture set in Office 365 Account:
- Find and export list of users with no Birthday set in Office 365 profile:
- Find and export list of users with no Country set in Office 365 Profile:
- Find and export list of users with no Department set in Office 365 Profile:
- Find and export list of users with no Skills Defined in Office 365 profile:
- Find and export the list of users who has not completed About Me section in their Office 365 profile
DISCLAIMER NOTE: This is an enthusiast post and is not sponsored by Microsoft or any other vendor.