If you like to replace your SharePoint Online root site collection to different site collection, Microsoft has released Invoke-SPOSiteSwap -powershell command. This is handy, for example, when you are creating intranet by using modern SharePoint Communication Sites.
Invoke-SPOSiteSwap is pretty simple command. You just have to have Source Site Collection URL, Target Site Collection URL, and Archive URL. Source Site Collection will be archived and replaced by target site collection.
Problems after Invoke-SPOSiteSwap in Hub Site Navigation
Note!: If you are working with a Hub Site, you have to remove hub site associations, before you can run Invoke-SPOSiteSwap -command successfully.
I removed my intranet hub sites associations from the SharePoint Admin center.
Then I run the Invoke-SPOSiteSwap command (see code sample below) and every thing went well. Source Site collection was archived and target site collection was copied to the SharePoint Root Site.
Invoke-SPOSiteSwap -SourceUrl https://yourtenant.sharepoint.com/sites/IntranetHub -TargetUrl https:/ /yourtenant.sharepoint.com -ArchiveUrl https://yourtenant.sharepoint.com/sites/Archive
Then I created Root Hub Site once again and re-associated hub sites to the target site collection by using SharePoint Admin center.
Every thing seems to be ok, until I noticed, that url in the Hub Site Navigation was pointing to the previous url (/sites/IntranetHub). It didn’t pointed to the tenant root site collection (https://yourtenant.sharepoint.com) as it should be. I waited two days, but there was no change in the navigation url.
Then it tried to edit the Hub Site navigation link by using editing menu. Surprisingly, you can’t change the navigation root item link (in my case Intranet Hub) by using SharePoint navigation editing menu. You can only change the associated hub sites links via edit menu. See picture below.
Then I tried to edit navigation link by using Hub Site settings. Just to notice, that there is no settings to edit navigation link or url. You can just change the Hub site navigation logo and Hub site name via hub site settings. See picture below.
Solution: use powershell command Register-SPOHubSite
Then I decided to create Hub Sites Associations by using PowerShell.
First, I removed all hub site associations from the intranet by using Remove-SPOHubSiteAssociation -command.
PS C:\Windows\system32> Remove-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/comms PS C:\Windows\system32> Remove-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/hr PS C:\Windows\system32> Remove-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/people PS C:\Windows\system32> Remove-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/it
Second, I unregistered root site collection to stop working as a Hub Site by using Unregister-SPOHubSite -command.
Third, I registered root site collection again to the Hub site by using Register-SPOHubSite -command.
PS C:\Windows\system32> Register-SPOHubSite https://yourtenant.sharepoint.com -Principals $null
Then, I set the title and the description to the root hub site by using Set-SPOHubSite -command.
PS C:\Windows\system32> Set-SPOHubSite https://yourtenant.sharepoint.com/ -Title "Intranet Hub" -Description "Hub for the Intranet”
Last, I reassociated all previously associated hub sites to the root hub site collection by using the Add-SPOHubSiteAssociation -command.
PS C:\Windows\system32> Add-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/comms -HubSite https://jhuovi.shar epoint.com PS C:\Windows\system32> Add-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/hr -HubSite https://jhuovi.sharepo int.com PS C:\Windows\system32> Add-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/people -HubSite https://jhuovi.sha repoint.com PS C:\Windows\system32> Add-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/it -HubSite https://jhuovi.sharepo int.com PS C:\Windows\system32> Add-SPOHubSiteAssociation https://yourtenant.sharepoint.com/sites/teamsite -HubSite https://jhuovi.s harepoint.com PS C:\Windows\system32>
Finally, everything was correct in the Hub site navigation
That was the trick! PowerShell commands fixed the problems and I noticed that the hub site url was now correct in the hub site navigation. See picture below.
SharePoint roads are never boring, happy coding!