SharePoint Online migration design considerations

This article discusses SharePoint Online migration design considerations. The following articles in this blog are also related:

Introduction

A considerable number of Microsoft 365 migration projects have a SharePoint Online (SPO) portion. Whether that be a straight forward file data migration task or a more complex custom on-premises SharePoint to SharePoint Online migration, there are a number of design considerations you need to take into account in every SPO project.

SharePoint Online migration design considerations

The most common and important SharePoint Online migration design considerations are the following:

1) Be aware of all SPO physical limitations. There are certain limitations which come in by design and which may affect your migration project design. Take a look at . A great example of a limitation which may affect your project is the following:

  • A list can have up to 30 million items and a library can have up to 30 million files and folders. When a list, library, or folder contains more than 100,000 items, you can't break permissions inheritance on the list, library, or folder. Nor can you reinherit permissions on it. However, you can still break inheritance on the individual items within that list, library, or folder, up to the maximum number of unique permissions in the list or library.
  • For optimum performance, we recommend storing no more than 300,000 files in a single OneDrive or team site library. Although SharePoint Online can store 30 million documents per library, for optimum performance we recommend syncing no more than 300,000 files across all document libraries.

Other useful articles which describe important SPO limitations are the following:

  • https://sharepointmaven.com/top-5-limitations-of-sharepoint-online/
  • https://support.microsoft.com/en-us/office/invalid-file-names-and-file-types-in-onedrive-and-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa#individualfilesize
  • https://github.com/deadlydog/PathLengthChecker

2) Plan for storage. You need to identify at early phase the source environment storage size (files and folders) and take into account that a percentage of this storage may be saved when migrating to SPO. This is because the common fie storage protocols, such as NTFS may be using a fairly high disk cluster size, thus resulting in disk fragmentation and lack of storage space optimization. It is important to ask your customer to revisit their data repository structure and determine if a data cleanup should be performed, to exclude very old, duplicate and unnecessary files. Audit the source environment with windirstat and NTFS Permissions reporter or other similar tools.

3) Determine who your users and groups currently are and how these will be mapped to users and groups in the SPO infrastructure.

4) Determine the number and type (template) of SPO sites and whether there will be subsites allowed. Another consideration is the URL structure to be used underneath your root path. Some orgtanizations prefer the default organization of sites underneath the /sites subdirectory while some others prefer to create a custom URL structure (by utilizing Powershell) depending on their organization structure, e.g. and .

5) Clearly identify what permissions you will be assigning to which users and groups in the SPO sites. It is very important to decide whether you will be keeping and transfering the existing NTFS/CIFS permissions from your on-premises file server to the SPO sites. Preserving these permissions may save you time or may have adverse effects later on where you could find yourself with a large number of unique permissions on SPO items, which you will have to clear, depending on your requirements. The Pnp.Powershell Sharepoint Powershell module can prove very useful for these kinds of operations. There are two type of Sharepoint Online permissions: inherited permissions (default for new sites) and unique permissions. The following article explains SPO unique permissions in great detail, alongside their features, best practices, pitfalls and limitations: https://www.syskit.com/blog/managing-unique-permissions-office-365/

6) Ensure that you have configured your item / document libraries in such a way that you avoid having your site's items locked by default. To ensure you don't lock the user files by default, check your SPO library configuration and set the "checkout required" property to "No". Also ensure that all your SPO sites have a status of Unlock, as per the following article: https://docs.microsoft.com/el-gr/sharepoint/manage-lock-status.

7) Microsoft Migration Manager agent is your friend. To have the Migration Manager work efficiently, pay attention to the following items:

8) Ensure that you train your customer administrators and end-users sufficiently. Microsoft has released a series of free training videos for administrator and end-users. Place emphasis on the Onedrive for Business (ODFB) client training, since this is the most common tool which end-users will be utilizing on a daily basis. For instance, explaining the status codes/icons of OneDrive for Business can be of great benefit to end-users.

9) Advise your users to always download and use the latest ODFB release: https://support.microsoft.com/en-us/office/onedrive-release-notes-845dcf18-f921-435e-bf28-4e24b95e5fc0?ui=en-us&rs=en-us&ad=us

10) Make use of mail-enabled security groups in SPO, so that you can utilize these groups for email operations as well. Consider Microsoft 365 Unified Groups as an alternative.

11) Ensure that you design an efficient process for deploying the Microsoft 365 apps on all supported user machines by utilizing the Office Deployment Tool alongside the Office config tool (https://config.office.com).

12) Ensure that you make the most of all available migration connectors from various data source environments (e.g. Google Cloud Platform and Google Drive) into your target environments, i.e. Sharepoint Online and OneDrive for Business. The following article offers a handful of useful resources on this subject: https://docs.microsoft.com/en-us/sharepointmigration/migrate-to-sharepoint-online.

13) When running Powershell scripts or other unmanaged code and scripts against your SPO tenant, avoid getting thottled by reviewing the following article: https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online. ALways reduce the concurrent operations you programmatically run against SPO and make sure your code follows the suggestions included in the previous article.

14) Create a robust security design around SPO, which should be based in the least privilege principle. Have a minimum of two global admins, always enable security defaults and 2FA in your tenant and pay attention to M365 security center and the secure score. Specific to Sharepoint Online are the various security policies (such as DLP) as well as the SPO sharing and access policies. Managing your guest users and external access in general is of paramount importance. Ensure that you have knowledge of the storage location (region) of your Sharepoint Online data, as per https://docs.microsoft.com/en-us/microsoft-365/enterprise/eu-data-storage-locations?view=o365-worldwide..

15) Design an SPO reporting mechanism on top of what SPO gives you out of the box inside the admin portals. This can be accomplished by either a set of well-designed Powershell scripts or by utilizing a third party tool.

16) Besides the out-of-the-box file restoration capabilities of SPO (file versions and Recycle Bin), you should alweays plan for a proper Cloud-to-OnPremise or Cloud-To-Cloud backup solution. A backup plan involves backup properties, what to backup, how often to backup, what backup type to take each time (full, differential, incremental) and how long to keep each backup (retention window). A proper backup solution helps keep your organization secure and allow for point-in-time restoration, in cases of disaster and critical malware attacks, such as ransomware incidents.

Additional resources

https://docs.microsoft.com/en-us/sharepointmigration/migrate-to-sharepoint-online

https://docs.microsoft.com/en-us/sharepointmigration/mover-o365