Okta natively does not allow you to sync users to Office 365 contacts; they either exist as users in Office 365, or they don’t exist at all.
In hybrid scenarios where you are doing a staged migration to Office 365, or where you simply manage your contacts in Okta, you may want to populate the Global Address List in Office 365 with your Okta users.
I’ve written a simple solution for this, you will require:
- Okta Admin Access (to obtain a token)
- Office 365 credentials (to write / modify Contacts)
- An Azure Subscription (for automation)
The solution will sync your users in Okta to Office 365, take note of the following: Continue reading Setting up Okta User -> Office 365 contact synchronisation
Version 3.12 of OneDriveMapper has been released:
- First attempt to support new sign in method in IE mode
- First attempt to support new sign in method in native mode
- Azure AD PassThrough not working yet
- The version on GitLab will change frequently as I fix issues that come up, check the commits if you want to ensure you have the latest
- if you have issues on the latest version, please check the FAQ and submit Fiddler logs and/or provide a VM with remote access to me
- Update: Azure AD SSO working in latest GitLab commit
Note that your region may not yet have been transitioned to the new signin method Microsoft is implementing.
Get the new version here
Recently, I stumbled upon an article detailing how to migrate on-premises (or online) Public Folders to Office 365 Groups
Of course I had to try that out asap 🙂 I used an older script to make a report of my on prem public folders to pick one below 50GB.
It was mostly a breeze and the interface of Office 365 groups allows users to easily search and administer their old Public Folders. We purposely only use them for archive access, where the IM team manages access to the groups holding PF data. I can really recommend this strategy, especially if you can easily split them up in under 50GB sized groups.
I did have one slight error you may run into:
“MigrationTransientException: Couldn’t find a request that matches the information provided. Reason: No such request exists in the specified index. –> Couldn’t find a request that matches the information provided. Reason: No such request exists in the specified index. “
Reason for this: The source public folder path is incorrect, make sure your CSV is mapped correctly or your batch will spin forever (or at least longer than I had patience), never completing.
One of my customers is doing a full cloud-only pilot of Windows 10, Mobile (MDM) managed through Intune to leverage a least-infrastructure solution worldwide.
They’re using Azure AD, but opted out of Onedrive for Business and are using Box Drive instead.
To encourage their users to actually save data to Box instead of Onedrive or locally, I wrote a little Powershell script (since Intune native PS script deployment isn’t live yet). This script checks if Box has been configured, if not it throws a little popup to the user. If it has, it redirects My Documents, and copies any existing content from it to Box.
I used Advanced Installer to wrap this in an MSI for easy deployment through Intune, and would like to share this with you 🙂
ZIP download: configureBoxRedirection_v1.02.zip
- ps1 file which does the actual work
- vbs wrapper to run it silently (hidden windows)
- .aip file (advanced installer)
- .msi file (to roll out with Intune or other tools)
- added a caching mechanism to force Box Drive to locally cache files (normally Box only does this when they are opened)
- added a caching filter to prevent caching of files above 25MB to reduce initial bandwidth overhead
- added a 5 minute loop / wait cycle to allow box to initialize, as the script may otherwise run before Box can initialize
As you may have heard/read at MSIgnite 2017, there is a new migration tool for Sharepoint to Sharepoint and Fileserver to Sharepoint migrations!
So, I will most likely discontinue maintenance of O365Migrator 🙂
Update: Microsoft has delayed the new Sign in experience until the end of October.
As posted in an earlier update, Microsoft has redesigned the user experience around the Office 365 (and Azure) login process.
Only two weeks at most remain until this experience will be mandatory, according to above link.
I’ve take a long look at the new experience and have not found a good method to implement this in the IE sign-in method of OnedriveMapper.
This means that the moment Microsoft disables the old sign-in experience, the IE sign-in method of OnedriveMapper will be effectively deprecated.
I expect Native auth mode will continue to function, and if that is also affected, will be fixed quickly. Native auth requires: Continue reading OnedriveMapper IE mode deprecation notice
While playing around with PHP (experimental support) in Azure Functions, I noticed that there is no documentation yet and very few examples, so here’s my first simple example on how to build an Azure Function using PHP to parse a very simple GET request.
I’m assuming you’ve set up your function, go into Files and edit the function.json file:
This sets the function to listen to get requests and ignore the default Azure Table storage stuff.
Then open the run.php file and Continue reading Parsing a GET request in PHP with an Azure Function
This post describes how you can use the WIX Toolkit or any DLL file in an Azure Function, in this case to edit an MSI file on the fly. The WIX Toolkit is free, but only runs on Windows. Azure Functions run on Windows too, isn’t that nice 🙂
So, an example use case could be my OnedriveMapper MSI file, which is installed with a configuration GUID property by an admin to customize OnedriveMapper. If that GUID was already in the MSI, no such parameter would be necessary.
Using an Azure function in a download link or http request, we could insert a GUID on the fly and create personalized MSI files on demand.
I’ll leave other applications to your imagination, let’s get started!
- Download the WIX toolkit (binaries)
- Extra Microsoft.Deployment.WindowsInstaller.dll
- Add it to the function files or host it at an URL somewhere. In my example, I’m hosting it at http://www.lieben.nu/wix/wix.dll
- Add your MSI file to your function files or host it at an URL somewhere. In my example, I’m hosting it at http://www.lieben.nu/wix/OnedriveMapper.msi
- Add the following code to the Azure Function:
Continue reading On-Demand MSI customization using Azure Functions
I’ve just moved OnedriveMapper’s code to a public GitLab repository. I’d like the code and download itself to live there from now on.
This allows you to discuss and submit issues with the script, and more importantly, it allows everyone to fork/branch and collaborate on making it even better!
I invite everyone to participate! Check it out here: https://gitlab.com/Lieben/OnedriveMapper_V3
News and notifications about updates will of course still always be posted here.
Natively, when connected to Office 365, Okta allows you to automatically provision users and/or groups. Additionally, Okta will assign licenses you select, and if configured, set predefined roles in Office 365. This means you have one locus of control, very nice.
Then, Exchange Online allows you to define custom roles where you can scope permissions for your users with far greater granularity compared to the default roles, Okta won’t detect or provision users into these custom roles.
As this was a business requirement for a customer, I coded up a small proof of concept you can schedule that will read membership of selected groups in Okta through the Okta API, then ensure that ONLY those members are in the matching role groups in Exchange Online.
Continue reading Provisioning Exchange Online / Office 365 Custom Roles automatically from Okta