Are you looking to migrate from an older SharePoint on-premises version to a newer version of SharePoint on-premises? You can do this by using the database upgrade approach.
In this SharePoint migration tutorial, we will discuss how to migrate from SharePoint 2010 to SharePoint 2013, 2016, or 2019 using the database upgrade approach (without using any third-party tools).
There are also some paid third-party tools available to perform the migration, but we will focus on the free database upgrade approach.
SharePoint 2010 to SharePoint 2013/2016/2019 Migration Steps
Primarily, I will focus on migrating from SharePoint 2010 to newer versions here. You will learn how to manually migrate content from the old SharePoint server to the new server using the database content DB Migration.
Here are a few scenarios:
- SharePoint 2010 to SharePoint 2013 migration
- SharePoint 2010 to SharePoint 2016 migration
- SharePoint 2010 to SharePoint 2019 migration
There are two ways we can migrate from older versions of SharePoint to the newer version.
- Using third-party tools like Metalogix or Sharegate
- Using the SharePoint database upgrade approach
In the database upgrade approach, we can migrate from one version to the immediate next version.
Meaning, we can migrate from SharePoint 2010 to SharePoint 2013, but we cannot directly migrate from SharePoint 2010 to SharePoint 2016.
To migrate from SharePoint 2010 to SharePoint 2016, we must first migrate from SharePoint 2010 to SharePoint 2013 and then from SharePoint 2013 to SharePoint 2016.
However, almost all third-party SharePoint migration tools offer direct migrations from one version to another.
SharePoint 2010 to SharePoint 2013 Migration Steps
Below are the steps to migrate content from SharePoint 2010 to SharePoint 2013 by using the database upgrade approach.
- First, update your SharePoint 2010 farm with the latest service packs/patches.

- Then, change your SharePoint 2010 web applications from classic mode to claims authentication.

- Delete unused site collection, orphaned user, and sites (optional). You can follow this link below to delete unused files.
- Configure the SharePoint 2013 server on your Machine, create a Web Application, and activate all required features for migration.
- Next, Backup and Restore SharePoint 2010 Content Databases to SharePoint 2013 SQL Server:
Backup SharePoint Content Database: To back up the SharePoint content database, follow the steps below.

Restore SharePoint Content Database: Follow the steps below to restore the SharePoint content database.

- Verify the Content Databases with Test-SPContent Database by using the below PowerShell command. It will help you to find issues such as solution dependencies, wide lists, missing features, orphaned sites, etc.
Test-SPContentDatabase -Name <Database name> -WebApplication <Web-App-URL>- Next, address all issues you have identified on this screen. Fix it one by one till zero error is found. Below is the screenshot for your reference.

- Next, remove the default content database that was already created on your SharePoint 2013 server during configuration.
- Next, mount the Content database in SharePoint 2013 Server by using the following command. Remember: Always mount the root site collection’s database first! Also, if you are migrating My sites, Migrate My Site Host First!
Mount-SPContentDatabase -name "Database name" -DatabaseServer "Database Server Name" -WebApplication "Web-App-URL" -confirm: $falseOnce the content database is successfully mounted to the web application, the site collection becomes accessible in SharePoint 2010 mode.
- Next, upgrade Site Collections to move to SharePoint 2013. By default, after migrating from SharePoint 2010 to SharePoint 2013, all migrated site collections will be on SharePoint 2010 format, retaining their old look and feel and other functionalities. We’ve to migrate all site collections to SharePoint 2013 explicitly.
Site collection administrators can do this by clicking links from the upgrade reminder banner.
To upgrade the site, please navigate to the path below.
(Central Admin >> Upgrade and Migration >> Check upgrade status)
- Next, after a few minutes, an upgrade status screen will appear, allowing you to view the status of your upgrade.

- At the same time, if you open your site, then you will get many errors as shown in the screenshot below.

- Once the upgrade is done, open your site collection, and again it will ask you to change the Hive folder to 15. It means that your site collection is still pending for upgrade. Click the button to start the upgrade.

- Once your upgrade has been completed, you will get a confirmation message as shown in the image below.

- Next, refresh your site collection and check that the site’s User Interface will look like the SharePoint 2013 View.
These are the whole steps for migrating the SharePoint 2010 site to a SharePoint 2013 Site.
Please follow the same steps for migrating a SharePoint 2013 site to SharePoint 2016 and SharePoint 2019.
If you have any Visual Studio solutions, you can first upgrade them and then deploy your WSP file to the targeted site.
In the same way, you can also map the master page paths.
Check out The database engine instance you selected is not valid for this edition of reporting services
Important Points to Remember For Migration
Here are a few key points to remember for a successful SharePoint migration.
- Check-in all SharePoint pages to avoid permission issues during migration
Upgrade-SPSite -identity http://hqinternetdev13/ -VersionUpgrade- To activate the publishing feature, we need to run the following PowerShell script.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Variables
$WebAppURL="http://hqinternetdev13/"
$SiteFeatureName = "PublishingSite"
$WebFeatureName = "PublishingWeb"
#Get all site collections of the web app and iterate through
$SiteColl= Get-SPSite -WebApplication $WebAppURL -Limit ALL
Foreach($Site in $SiteColl)
{
write-host "Processing site collection:"$Site.URL -ForegroundColor Yellow
#Check if publishing feature is already activated in the site
$Feature = Get-SPFeature -Site $Site.URL | Where-object {$_.DisplayName -eq $SiteFeatureName}
if($Feature -eq $null)
{
#Enable the Publishing feature
Enable-SPFeature -Identity $SiteFeatureName -url $Site.URL -Confirm:$False
Write-host "Publishing Feature Activated on $($Site.URL)" -ForegroundColor Green
}
else
{
Write-host "Publishing Feature is already Active on $($Site.URL)" -ForegroundColor Red
}
#Loop through each web in the site collection
Foreach($Web in $Site.AllWebs)
{
write-host "Processing Web"$Web.URL -ForegroundColor Yellow
#Check if publishing feature is already activated in the web
$Feature = Get-SPFeature -Web $Web.URL | Where-object {$_.DisplayName -eq $WebFeatureName}
if($Feature -eq $null)
{
#Enable the Publishing feature
Enable-SPFeature -Identity $WebFeatureName -url $Web.URL -Confirm:$False
Write-host "Publishing Feature Activated on $($Web.URL)" -ForegroundColor Green
}
else
{
Write-host "Publishing Feature is already Active on $($Web.URL)" -ForegroundColor Red
}
}
}- Change the authentication type from classic to claim-based by using the below PowerShell script.
$WebAppName = "http://hqinternetdev13"
$wa = get-SPWebApplication $WebAppName
$wa.UseClaimsAuthentication = $true
$wa.Update()
$account = "EnjoySharePoint\spupgrade"
$account = (New-SPClaimsPrincipal -identity $account -identitytype 1).ToEncodedString()
$wa = get-SPWebApplication $WebAppName
$zp = $wa.ZonePolicies("Default")
$p = $zp.Add($account,"PSPolicy")
$fc=$wa.PolicyRoles.GetSpecialRole("FullControl")
$p.PolicyRoleBindings.Add($fc)
$wa.Update()
$wa.MigrateUsers($true)
$wa.ProvisionGlobally()- Change Site Collection URL using the below script.
$site = Get-SPSite http://hqinternetdev16/sites/Departments1
$site.Rename("http://hqinternetdev16/sites/Departments ")- You can use the below script for migration of subsite to the site collection in SharePoint
Add-PSSnapin Microsoft.SharePoint.PowerShell
$site =Get-SPSite "http://hqinternet19/sites/Departments"
$web = $site.RootWeb
$pweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)
# This code (as an example) uses the first layout as the default.
$layouts = $pweb.GetAvailablePageLayouts()
$pweb.SetDefaultPageLayout($layouts[0], $false)
$pweb.Update()
$web.Dispose()In this tutorial, I explain how to perform a smooth migration from SharePoint 2010 to SharePoint 2013, 2016, or 2019 using the database upgrade approach. Do let me know in the comments below if you face any issues.
You may also like:
- SharePoint List vs Library
- Create Remote Event Receiver in SharePoint Online
- This Edition Cannot Be Upgraded Error in Windows Server
- No Images Are Available Windows Server VMware
- SharePoint User Information List

After working for more than 18 years in Microsoft technologies like SharePoint, Microsoft 365, and Power Platform (Power Apps, Power Automate, and Power BI), I thought will share my SharePoint expertise knowledge with the world. Our audiences are from the United States, Canada, the United Kingdom, Australia, New Zealand, etc. For my expertise knowledge and SharePoint tutorials, Microsoft has been awarded a Microsoft SharePoint MVP (12 times). I have also worked in companies like HP, TCS, KPIT, etc.
please describe.
Step 16: Upgrade your Visual Studio Solution.
how to upgrade solution.
Open your solution file in higher version of Visual studio and publish you webpart file with new URL .
Thank you for your reply, sir.
what about workflows hosted in sp2010 designer workflows going into sp2019.
What are the benifits of adding sharepoint to file explorer? https://windowsclassroom.com/add-sharepoint-to-file-explorer/