Photos in Office 365 are a pain. This is because there are currently three(!) main places photos are stored in Office 365:
- SharePoint Online (SPO
- Exchange Online (EXO)
- Azure Active Directory (AAD)
If you are syncing profiles using AD Connect those profiles are being synced into AAD. From there they take a rather arduous and rocky path to EXO and SPO via a number of intermediatary steps that may not work or may only complete after a period of time. e.g. from EXO to SPO photos may only sync if someones photo has not been set directly in SPO and a rather profile property attribute is not set correctly.
Needless to say it can be very hard to work out why you have one photo in AD on-prem, one in AAD, one in EXO and another in SPO … all potentially different!
At Hyperfish we built our product to push photos to all the places they should go when someone updates them. This means that when someone updates their photo and that update is appoved that it will be resized appropriately for each location and then saved into AD, EXO and SPO immediately. This results in the persons photo being the same everywhere at the same time. Happy place!
However, we have some customers who want to bulk move/copy photos around between these different systems to get things back in order all at once. To do this we created a helpful wee commandline utitility that we have published the source code for on GitHub and a precompiled release if you dont want to compile it yourself.
Photo Importer Exporter
Creative naming huh! 🙂
The Photo Importer Exporter is a very basic Windows command line utility that lets you:
- Export photos from SharePoint Online
- Export photos from Exchange Online
- Import photos to Active Directory
- Import photos to SharePoint Online
- Import phtoso to Exchange Online
All you do is Export the photos from, say, Exchange Online (the highest resolution location) and it will download them all to the /photos directory. Then you can Import them to, say, Active Directory and the utility will resize them appropriately and save them to AD for you. Simple huh.
It’s a work in progress and we will be adding bits to it as we come accross other scenarios we want to support.
But for now you can grab the code and take a look, suggest additions, make pull requests if you like, log issues … or just use it 🙂