Step by Step Guide to Migrate from SharePoint 2013 to SharePoint 2016 – Part 4

Migrate-SharePoint-2013-to-2016-part-4

Migration Guide – SharePoint 2013 to SharePoint 2016/SharePoint 2019:

Step by Step Guide to Migrate from SharePoint 2013 to SharePoint 2016 – Part 1
Step by Step Guide to Migrate from SharePoint 2013 to SharePoint 2016 – Part 2
Step by Step Guide to Migrate from SharePoint 2013 to SharePoint 2016 – Part 3
Step by Step Guide to Migrate from SharePoint 2013 to SharePoint 2016 – Part 5

Welcome to the part 4 in our series showing you how to migrate from SharePoint 2013 to SharePoint 2016. In the previous section, we showed you how to upgrade the Secure Store service application, Business Data Connectivity service application, Managed Metadata service application and PerformancePoint Services service application. In part 4, we will go through how to upgrade the Search service application and ensure that the new proxies are in the default proxy group.

 Upgrading the Search service application

Before upgrading the Search service application, the User Profile service application and the Managed Metadata service application need to be upgraded first.

As you are going to upgrade the Search service application, copy the search administration database from SharePoint 2013 to the SharePoint 2016 environment.

As you restore the application from the old environment (SharePoint 2013), it triggers SharePoint 2016 to make a new one in the new farm and point it to the copied search administration database.

After you have copied the Search service app, SharePoint Server 2016 will create a new search topology with all the search components and databases for it.

While reinstating the Search service app, SharePoint 2016 creates a new search topology but upgrades the restored Search Admin database in place of creating a new one.

In the new SharePoint 2016 farm, the upgraded Search Administration database holds all additions and modifications done to the result sources, search schema and query rules created in the old SharePoint Server.

To complete the upgrade, you will have to create a proxy and add it to the default proxy group in the new environment. You will also have to ensure that the new Links DB and the new search topology are configured the same way as they were in the SharePoint 2013 environment.

The index in SharePoint 2016 is empty, as its search topology is new. After you have upgraded all content sources, a full crawl of the entire indexed corpus will need to be undertaken.

Follow the below steps to upgrade the Search service application using the PowerShell command:
  1. To copy the search administration database from the SharePoint 2013 farm to the 2016 farm, follow these steps:

Note: The content and service DB have already been copied from the SharePoint 2013 environment. We are copying the Search Administration DB at this stage because it requires you to pause the Search service application in the SharePoint 2013 environment.

  1. Ensure that you have the following memberships:
  • securityadmin fixed server role on the SQL Server instance.
  • db_owner fixed database role on all the databases that have to be upgraded.
  • Administrators group on the server where you are running the PowerShell commands.

Use th eAdd-SharePointShellAdmin cmdlet to grant permissions to use SharePoint Server 2016 cmdlets.

  1. Launch the SharePoint Management Shell.

For Windows Server 2012 R2:

  • Go to the ‘Computer’ and right-click on it, click on the ‘All apps’, and then Right-click on the ‘SharePoint Management Shell’.
  1. Set the ‘Search Administration database’ to read-only. Follow the same instructions as you did to set all the other databases to read-only in the second phase of the process to upgrade the SharePoint 2013 sites to SharePoint Server 2016.
  2. Pause the ‘Search service application.’ Type the following command at the Windows PowerShell command prompt:

$ssa = Get-SharePointEnterpriseSearchServiceApplication <SearchServiceApplicationName> SuSharePointend-SharePointEnterpriseSearchServiceApplication -Identity $ssa

In the above command, SearchServiceApplicationName represents the name you wish to use for the paused Search service application.

Whilst the Search service application paused, the SharePoint 2013 index with (SharePoint1) environment will not be updated. This could mean that, during the SharePoint 2016 upgrade, search results might not be up to date.

  1. Copy the search administration database in the old SharePoint 2013 (Service Pack 1) farm to the SharePoint 2016 farm. Follow the steps in part 2 for the search administration database only.

 

The remaining steps need to be performed in SharePoint 2016 environment.

  1. Make sure that you have the following memberships:
  • ‘securityadmin’ fixed server role on the SQL Server instance.
  • ‘db_owner’ fixed database role on all databases that are to be updated.
  • Administrators group on the server on which you are running the Windows PowerShell cmdlets.

Use the ‘Add-SharePointShellAdmin’ cmdlets to grant permissions to use SharePoint Server 2016 cmdlets.

  1. Launch the SharePoint 2016 Management Shell.
  • For Windows Server 2012 R2: Go to the ‘Computer’ right-click on it, click on the ‘All apps’, and then click on the ‘SharePoint 2016 Management Shell’.
  1. In order to store the application pool that will be used as a variable for this service application, type the following command at the Windows PowerShell:

$applicationPool = Get-SharePointServiceApplicationPool -Identity ‘SharePoint Web Services default’    

In this command, ‘SharePoint Web Services default’ is the name of the service app pool that will contain the new service app.

If there are multiple application pools and you wish to use a different one for a given service application, this step in the procedure should be repeated to ensure each service application uses the suitable application pool.

  1. Type the following command at the PowerShell command prompt to reinstate the Search service app and upgrade the Search Administration DB:

$searchInst = Get-SharePointEnterpriseSearchServiceInstance -local

Restore-SharePointEnterpriseSearchServiceApplication -Name ‘<SearchServiceApplicationName>’ -applicationpool $applicationPool -databasename ‘<SearchServiceApplicationDBName>’ -databaseserver <ServerName> -AdminSearchServiceInstance $searchInst

The ‘$applicationpool’ variable is set to recognize the service app pool that will be used. ‘SearchServiceApplicationDBName’ is the name of the search administration DB to be upgraded, and the Search service app will use the same name. The ‘$searchInst’ variable will be used to recognize the new Search Service app instance.

  1. To get the ID for the Search service application and to store it as a variable you will have to type the following command.

$ssa = Get-SharePointEnterpriseSearchServiceApplication

  1. Type the following command to create a proxy for the Search service application.

New-SharePointEnterpriseSearchServiceApplicationProxy -Name ProxyName -SearchApplication $ssa

In the above command, ‘ProxyName’ represents the name of the proxy to be used. ‘$ssa’ is the variable that was set earlier to recognize the new Search service app.

  1. Get the Search service app proxy ID for the proxy that was just created and set it as the variable $ssap:

$ssap = Get-SharePointEnterpriseSearchServiceApplicationProxy

In order to add the Search service application proxy to the default proxy group type the following command:

Add-SharePointServiceApplicationProxyGroupMember -member $ssap -identity ” “

In the above command, $ssap is the variable that was set earlier to identify the ID for the proxy that was just created for the Search service application. An empty identity parameter (” “) is used to add it to the default group.

  1. In your old environment, if the SharePoint 2013 farm uses a partitioned Links Database, you need to partition the Links Database in the new SharePoint 2016 environment also.
  2. This is an optional step. You can migrate search relevance settings from the old SharePoint 2013 farm to the 2016 farm. As the upgraded Search service application has a new, empty index, search analytics data from the old SharePoint 2013 farm cannot be fully migrated to 2016. You need to manually copy SharePoint 2013’s Analytics Reporting database and attach it to the new SharePoint 2016’s Search service application.
  • Create a backup of the Analytics Reporting database in the SharePoint 2013 farm.
  • Restore the SharePoint 2013 backed up database to the new database server of the SharePoint 2016.
  • Attach the restored database to the new Search service application in the SharePoint Server 2016 farm.
  1. Before proceeding, ensure that the new SharePoint Server 2016 farm’s search topology is similar to the SharePoint 2013 farm. If the search requirements have now changed, it is a good time to scale out the search topology of the new SharePoint 2916 farm.
  2. Resume the Search service application in the SharePoint 2013 (SharePoint1) environment. Type the following command at the Windows PowerShell:

$ssa = Get-SharePointEnterpriseSearchServiceApplication <SearchServiceApplicationName>

$ssa.ForceResume(0x02)

Ensure that all new proxies are in the default proxy group

To ensure that proxies have been created and added to the default proxy group, use the following procedure:

  1. Make sure that you have these memberships:
  • securityadmin fixed server role on the SQL Server instance.
  • db_owner fixed database role on the databases that have to be updated.
  • Administrators group role on the server where you are running the PowerShell cmdlets.

‘Add-SharePointShellAdmin’ cmdlet can be used by administrators to grant permissions to use SharePoint Server 2016 cmdlets.

  1. Launch the SharePoint 2016 Management Shell.

For Windows Server 2012 R2:

  • Go to the Computer and right-click on the ‘Computer’, click on the ‘All apps’, and then click on the ‘SharePoint 2016 Management Shell’.
  1. Type the following commands at the Windows PowerShell command prompt:

$pg = Get-SharePointServiceApplicationProxyGroup -Identity ” “

$pg.Proxies

In the above commands, $pg is a variable you set to represent the default proxy group.

To specify the default proxy group, use an empty identity parameter (” “).

After you run the above commands, a list of all proxies in the default proxy group will be displayed, that will also include their display names, type names and IDs.

Conclusion

By following the steps in this part of our series, you should have completed the upgrading of service applications. In the next part, we will show you how to start the process of upgrading the content databases.

Reference: https://technet.microsoft.com/en-us/library/jj839719(v=office.16).aSharePointx