Migrating your SharePoint environment inside a virtual machine might cause some unexpected behaviour. It can be possible that you bump into this error:

Microsoft.Office.Server.Search.Upgrade.SearchServiceInstanceSequence failed

And for Google indexing the detailed error report:

Exception: Microsoft.SharePoint.Upgrade.SPUpgradeException: Action of Microsoft.Office.Server.Search.Upgrade.SearchServiceInstanceSequence failed. —> System.InvalidOperationException: This access control list is not in canonical form and therefore cannot be modified.
at System.Security.AccessControl.CommonAcl.RemoveQualifiedAces(SecurityIdentifier sid, AceQualifier qualifier, Int32 accessMask, AceFlags flags, Boolean saclSemantics, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
at System.Security.AccessControl.DiscretionaryAcl.RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, Int32 accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
at System.Security.AccessControl.CommonObjectSecurity.ModifyAccess (AccessControlModification modification, AccessRule rule, Boolean& modified)
at System.Security.AccessControl.ObjectSecurity.ModifyAccessRule (AccessControlModification modification, AccessRule rule, Boolean& modified)
at Microsoft.Search.Administration.Security.Registry.ConfigureCommonACL(RegistryKey key, String username)
at Microsoft.Search.Administration.Security.Registry.ConfigureCommonACL(RegistryKey baseKey, String keyPath, String username)
at Microsoft.Search.Administration.Security.ServiceRegistry.EnsureACL(String username)
at Microsoft.Office.Server.Search.Administration. SearchServiceInstance.Provision()
at Microsoft.Office.Server.Search.Upgrade. ProvisionSearchServiceInstance.Upgrade()
at Microsoft.SharePoint.Upgrade.SPActionSequence.Upgrade()
— End of inner exception stack trace —
at Microsoft.SharePoint.Upgrade.SPActionSequence.Upgrade()
at Microsoft.SharePoint.Upgrade.SPManager.Upgrade(Object o, Boolean bRecurse)
at Microsoft.SharePoint.Administration. SPPersistedUpgradableObject.Upgrade(Boolean recursively)
at Microsoft.SharePoint.Upgrade.SPManager.Initialize()
at Microsoft.SharePoint.PostSetupConfiguration.UpgradeBootstrapTask.Run()
at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

The solution is hard to find, but easy to fix. The reason that the SharePoint Products and Technologies Configuration Wizard upgrade sequence fails is that it is not possible for the process to access certain registry keys on the computer. Checking out the permissions on the registry keys with regedit.exe learns that the permissions are incorrectly ordered:

Registry permission error message

It’s a bit unclear what caused this behaviour, but it seems that changing/updating the SID of a virtual machine is the problem.

Now the solution:

Browse with regedit.exe to the following 3 registry nodes:

  • HKLMSoftwareMicrosoftShared ToolsWeb Server Extensions12.0
  • HKEY_CLASSES_ROOTAppID{58F1D482-A132-4297-9B8A-F8E4E600CDF6}
  • HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesEventlogApplicationSharePoint Products and Technologies Configuration Wizard

Right click the registry keys and choose the Permissions option from the menu.

Right click the registry keys and choose the Permissions option from the menu

Regedit will show you a warning message about the incorrectly ordered permissions. Press OK and also close the permission dialog that is presented afterwards.

Once you fixed all 3 keys this way, you can start up the SharePoint Products and Technologies Configuration Wizard again and finish your migration.