In case you missed it at Ignite, Microsoft announced the new SharePoint Migration Tool that lets you move files to SharePoint or OneDrive in Office 365. I’ve noticed every time this tool comes up there is a lot of confusion and the conversation often ends up in the weeds. I am hoping this post clears things up a bit.
What does the tool move?
Files and only files. What about list items and workflows? Not supported and likely never will be. If you want to move that kind of stuff, go find a migration tool vendor.
What destinations are supported?
The only supported destination is SharePoint Online and OneDrive in Office 365. Want to move between SharePoint 2010 and SharePoint 2016? Great! Go find a migration tool vendor. This tool is not for you.
What sources does it support?
It supports moving files only from SharePoint 2013 and file shares. That is it. Still running SharePoint 2010? Sorry. You’re out of luck.
How does it work?
It more or less uses the same migration API that all of the other ISVs use by uploading your content into Azure BLOB storage and then bulk migrating your files.
Is it secure?
You can decide for yourself, but here is the gist of it. It’s probably more secure than handing over your credentials to a migration tool that doesn’t use OAuth (I’m looking at you Sharegate). Your data is encrypted and uploaded to a dedicated Azure storage account. The tool does this for you and the key is only valid for three days. The Azure blob will be kept for 30 to 90 days and then it is deleted. The files are encrypted at rest with AES 256 and are stored in the same region. If you don’t want to use the storage account the tool creates itself, you can specify your own account and key but you will be responsible for cleaning it up. You can read more on the How it works page.
Will it migrate my permissions?
It will migrate basic Read and Write permissions to SharePoint Online if you have Directory Synchronization configured (which you should).
Does it support bulk migration?
Yes, you can configure bulk migration settings using a CSV file.
Does it support incremental migration?
Yes, it will migrate only the changes if you set the Enable incremental migration setting when you first run the job.
What if my migration job is interrupted? Does it support resume?
Yes, the migration tool will resume any job that has been running for at least 5 minutes.
I don’t want to migrate everything. Are there any filters?
Yes, there are a variety of filters such as dates, extensions, hidden files, etc.
How fast is the migration?
This is largely a factor on the size of your files. Basically having more smaller files is slower than having more larger files even if the total volume is the same. For large files, Microsoft quotes the average customer experience at 2 TB / day. For smaller files, the experience is more like 250 GB / day. That’s a big difference I know and every migration is different. If you are planning a large migration, I recommend you do several tests to get a feel for how fast your migration will be. You can read more about maximizing migration speed.
Will the SharePoint Migration Tool ever support feature X?
I wouldn’t hold my breathe.
But Sharegate supports feature X!
Great. Use Sharegate! It’s a great tool which has also been in development for a lot longer than this one. That comes with a price of course compared to the free tool from Microsoft but it’s a very reasonable one.
What is the SharePoint Migration Tool good for then?
It should excel at file share to OneDrive migration. If you have been looking to get off file shares for a while this might be your free ticket. While this tool isn’t perfect for every migration scenario (and isn’t meant to be), it does have its niches. If you have some files in SharePoint or on a file share that you want to quickly get to SharePoint Online, this isn’t a bad option.
At Microsoft Ignite, they announced new capabilities for working with themes on modern sites. Although, the new theme picker they have shown has not rolled out, you can still make use of the new theming capabilities right now.
Here is what the old theme picker looks like. When we are done, we’ll have our own themes in there and the stock themes will be gone. No longer will your users pick some awful theme for your sites!
The easiest way to build your new theme is to go to the Theme Generator page on the Office Fabric site. Here you can set a color and it will automatically choose a palette for you. You can override the colors in the palette based upon your own company’s brand standard. Just pick a Primary theme color or enter in the hex or RGB codes.
When you scroll down, you will find the code you need, but scroll even further and you will see a preview of what the Fabric Palette looks like.
Once you are happy, we’ll cut and paste the theme definition into our PowerShell script. However, before we do that, we have to install the SharePoint Online Management Shell (if you don’t have it already) and connect to SharePoint Online. You’ll need version 16.0.6906.1200 or newer. If you haven’t updated in a while, download it again.
One you have it installed, you need to connect to SharePoint Online. You’ll need to use an account with the SharePoint administrator or Global Administrator roles. The process involves specifying the URL for your SharePoint Online tenant and the credentials.
$adminUPN="admin@mydomain.onmicrosoft.com"
$orgName="mydomain"
$userCredential = Get-Credential -UserName $adminUPN -Message "Type the password."
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $userCredential
If you have trouble connecting, you can find more details on Microsoft Docs. If you use multi-factor authentication, leave off the credential parameter and it will prompt you with an OAuth login prompt. I’ll usually save this snipped in a PowerShell script so I don’t have to look it up every time.
Now that you are connected, we can add a theme. Create a new PowerShell script using PowerShell ISE, Visual Studio Code, or whatever editor you like. Add the following to the script.
function HashToDictionary {
Param ([Hashtable]$ht)
$dictionary = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
foreach ($entry in $ht.GetEnumerator()) {
$dictionary.Add($entry.Name, $entry.Value)
}
return $dictionary
}
$themepallette = HashToDictionary(
)
Add-SPOTheme -Name "New Company Theme" -Palette $themepallette -IsInverted $false -Overwrite
PowerShell expects the theme in the format of a dictionary object. That is what the helper method HashToDictionary does. Now we paste in our color palette from the Theme Generator into the call to the HashToDictionary method. Be sure to incldue the @ symbol. Here is what the palette looks like on the theme generator.
Cut and paste that into the script. The completed script will now look like the following:
function HashToDictionary {
Param ([Hashtable]$ht)
$dictionary = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
foreach ($entry in $ht.GetEnumerator()) {
$dictionary.Add($entry.Name, $entry.Value)
}
return $dictionary
}
$themepallette = HashToDictionary(
@{
"themePrimary" = "#4ea3e9";
"themeLighterAlt" = "#f6fafe";
"themeLighter" = "#edf6fd";
"themeLight" = "#dbecfa";
"themeTertiary" = "#b4d8f5";
"themeSecondary" = "#5eabea";
"themeDarkAlt" = "#3194e5";
"themeDark" = "#1974bf";
"themeDarker" = "#135b96";
"neutralLighterAlt" = "#f8f8f8";
"neutralLighter" = "#f4f4f4";
"neutralLight" = "#eaeaea";
"neutralQuaternaryAlt" = "#dadada";
"neutralQuaternary" = "#d0d0d0";
"neutralTertiaryAlt" = "#c8c8c8";
"neutralTertiary" = "#b5b5b5";
"neutralSecondary" = "#868686";
"neutralPrimaryAlt" = "#6e6e6e";
"neutralPrimary" = "#252525";
"neutralDark" = "#565656";
"black" = "#3e3e3e";
"white" = "#ffffff";
"primaryBackground" = "#ffffff";
"primaryText" = "#252525";
"bodyBackground" = "#ffffff";
"bodyText" = "#252525";
"disabledBackground" = "#f4f4f4";
"disabledText" = "#c8c8c8";
}
)
Add-SPOTheme -Name "New Company Theme" -Palette $themepallette -IsInverted $false -Overwrite
The Add-SPOTheme Cmdlet has a few parameters. Name should be fairly self explanatory. Set IsInverted to true if you are using an inverted theme (ie high contract / black background). Add the Overwrite to allow you to update the theme after it has been created. Run the PowerShell script to see your new theme. Running it will not yield any output if it is successful.
Refresh your SharePoint site and click on Change the Look underneath the Cog Wheel. You should see your new theme.
Select the theme to apply it to preview it on your site.
Pretty simple right? Now, if you want to remove the out-of-the-box themes. That’s easy too. Go back to PowerShell and issue the following command.
Set-HideDefaultThemes $true
Refresh your site and you will see that the out-of-the-box themes are now gone.
That’s all there is to it. There are a few more commands if you want to inspect what themes are installed or you want to remove one. You can read more about them on Microsoft Docs. Give it a try today!