This page is not using a valid page layout – how to fix

This post describes an issue when trying to view classic publishing pages in SharePoint Online and how to resolve.


The issue

After migrating publishing sites from SharePoint 2010 – SharePoint Online, I encountered an issue with classic SharePoint Server publishing pages. Post-migration, some publishing pages wouldn’t open and displayed this error message:

Fix publishing pages with custom page layouts created from template - HANDS  ON SharePoint
Now another issue with this was that quite often the publishing pages affected were the migrated sites’ homepage – rendering the whole site inoperable! Microsoft have an article on the issue here and state that the cause is that “The .aspx page is using an invalid page layout, or the current layout is corrupt”.

Resolution

The Microsoft documentation on how to resolve this is pretty good, but I found it didn’t quite get me to fix my issue. Here’s what I did:

  • Navigate to Site Content & Structure: /_layouts/sitemanager.aspx. NOTE: You need to be a SharePoint admin to access
  • Open the Pages library > find your broken page > click on the drop-down button and press edit page settings
  • Select the (Welcome Page) Blank Web Part Page layout
  • Press OK

When I had to do this for my broken pages, there was a warning message above the page layout that said “Current page layout is not valid. Please select a valid page layout from the drop down list below”. I just selected the (Welcome Page) Blank Web Part Page layout anyway, pressed OK and it worked.


How to overwrite files using the create file action in Power Automate

In this post we explore a common error experienced when trying to update existing files in SharePoint using the create file step in Power Automate – and how to resolve it.

The problem

I recently ran into an issue seemingly many others have encountered when trying to update an existing file in SharePoint using the create file step in Power Automate. When running my flow, I received the following error:

Bad Request error in Power Automate when trying to use the create file step to update an existing file in SharePoint.
  • Bad Request status: 400
  • Message: A file with the name [NAME OF FILE] already exists. It was last modified by [NAME OF USER] on [DATE]

The solution

The solution to this has already been shared a fair few times via the Power Automate blogs, but here it is:

  • Press the ellipsis … > settings within the create file step
Open the ellipsis and press settings within the create file step.
  • Scroll down until Content Transfer > set allow chunking to off
  • Save and re-run your flow

That’s it, now when I use the create file step to update existing files, it runs successfully!

Note: Chunking of content is used for splitting up large content for downloads/ uploads. You may need to consider this before turning off chunking in your flow. More information on chunking can be found here.


How to find the internal name of list or library columns

This post is a guide on how to find the internal name of columns within Microsoft lists or document libraries in SharePoint.


In this post:

Intro
Option 1: list/ library settings
Option 2: sort or group by the column
Option 3: REST API request
Option 4: Microsoft Graph Explorer

Intro

Columns in Microsoft Lists/ SharePoint lists & libraries have two main names – their display name that you can see within the list or library and their internal name. Sometimes you may be required to use a column’s internal name (for example: when creating column/list view formatting). There are several ways to do this, depending on the column so take a look below for more:

NOTE: In the examples below I will be focusing on lists, but the same applies for document libraries.

Option 1: list/ library settings

This is by far the easiest way to get the internal name of a column. All internal custom columns, plus several of the out-the-box column names within lists or libraries can be found by heading to list settings and clicking on the column itself:

  • Press the cog > list/ library settings
Press list settings from the cog menu.
  • Scroll down until you see columns > select the column
  • The Field= end part of the URL in the browser will show you the internal name of your column (Modified By in my example)
Editing the column will show you the internal name of the column from the Field= part at the end of the URL .

Option 2: sort or group by the column

Some out-the-box columns don’t appear within list settings, but you can still get their internal name by either grouping or sorting based on the particular column. For example, the file size column is an out-the-box column that isn’t you won’t find in list settings. If you add this column to your list/ library view and sort you can get access to the internal name:

  • Click on the drop-down and press show/ hide columns
  • Select the column you wish to add > tick it > press apply
  • Select the drop-down next to your newly added column > either sort by or group by depending on what is available
    • For sorted columns – look for the sortField part of the URL to get the internal name of your column
URL example to find the internal name of sorted columns
  • For grouped columns – look for the groupBy part of the URL to get the internal name of your column
URL example to find the internal name of grouped columns.

Option 3: REST API requests

SharePoint has a REST API service that allows you to perform CRUD operations by using REST HTTP requests. There is much more information about the SharePoint REST service here, but you can use GET requests via the browser to return information as per your requirements.

In our example, we want to return all the internal column names from a given list. To do this we simply need to send a REST request to SharePoint as follows:

https://[YOUR SITE].sharepoint.com/_api/Web/Lists(guid'[YOUR GUID]')/Fields

This will return a huge wall of text, but if you CTRL+F and search for the name of your column or use a code editor you will find the internal name and display name:

Option 4: Microsoft Graph

You can also use the MS Graph Explorer to do something similar to a REST API request. The graph explorer allows you to create a run requests via an easy to use interface that also shows you the results. In our example I ran the following GET request via graph explorer:

https://graph.microsoft.com/v1.0/sites/[YOUR TENANT].sharepoint.com/sites/[YOUR SITE]/lists/[YOUR LIST]/Columns
Entering the above request in Graph Explorer will return you all the internal column names in your list.

Which allowed me to look through the response preview to find my file size column’s internal name:


Description column in SharePoint libraries – how to use

In this post we take a look at the description column that is available within SharePoint Online document libraries and how to make use of it.


There is a description column available in modern SharePoint document libraries. This description column comes out of the box when you create a new document library, or when you add/remove columns from the existing Shared Documents library that comes with every Team/ SharePoint site.

The problem

The description column exhibits some very strange behaviour. First of all, when you try add it to a library view it does not appear within the properties pane, nor is it a column you can add via edit “columns”.

When adding the properties column to document library views you are not able to edit the column.

If you add the column into a document library view and switch to edit in grid view mode, the column becomes read only meaning you can’t add anything into any of the cells within the library.

If you try to edit the column via edit in grid view the cells within the library are read-only.

The solution

This is more of a workaround than a solution as this appears to be a bug rather than desired behaviour. If you make the column mandatory, then optional it seems to do the trick! To do this:

  • Left-click on the Description column heading > column settings > edit
  • Press more options > set require that this column contains information to yes
  • Press save
Set the Description column to required, then optional to enable editing.
  • With this setting changed, when you edit your document library in grid view now you are able to enter data into the Description field
Once you have made the Description column required, you are able to add data via grid view.
  • Go back to edit the Description column settings and switch off require that this column contains information to make it optional

Add Description column to properties pane

Although the above will allow you to add data to the Description column, it will not add the Description column into the properties pane. You can get the Description column to appear by adding it to the default content type in the document library. Here’s how you can do it:

  • Press the cog > library settings
  • Under general settings > advanced settings
  • Set allow management of content types to yes
  • Press OK
Set allow management of content types to yes in the document library.
  • Scroll down to content types > select the document content type
  • Press add from existing site or list columns
Press add from existing site or list columns to add the Description column to the Document content type.
  • Ensure the Description column is selected > press add
  • Press OK
Add the Description column into the Document content type.

Go back to your document library, select a document and open the properties pane. You will now see the Description column is displayed in the properties pane, as well as being an editable field when you press edit all.

Bonus! History lesson and give your feedback

This description column appears to be a rather recent addition to all tenants, making it’s appearance in summer 2021 with the advent of Microsoft Lists. I went back to SharePoint 2010 just to double-check and sure enough the Description column was not present!

Out of the box SharePoint 2010 document library with no description column.

I’ve added a new item to the Microsoft feedback portal (UserVoice replacement) in the hope this gets addressed by the SharePoint product team so if you could upvote it that would be great!


Microsoft 365 roadmap roundup – year in review 2021

With 2021 drawing to a close, I thought it would be useful to go back through the Microsoft roadmap and look at the year in review, highlighting some of major releases and others that have caught my attention.


Microsoft roadmap
Year in review
2021

The link above covers all the stats from the Microsoft roadmap in an infographic format. I’ve gone through the site to list out the top 10 roadmap posts of the year plus a selection of my favourite releases along the way.

Top 10 most viewed roadmap posts of 2021

These are the top ten most viewed roadmap roundup posts from the blog for this calendar year:


Top 5 launched features 2021

This list is in no particular order, but just the launched features I found the most noteworthy in 2021:

SharePoint

1. SharePoint: Swap root site from SharePoint admin center for customers with 10k+ seats – Customers with more than 10K seats or more can now swap their SharePoint root site from within the SharePoint admin center user interface. Roadmap ID: 72224

The Replace root site panel in the new SharePoint admin center

2. SharePoint: Scenario-Based Site Templates – Use scenario-based site templates that leverage existing SharePoint capabilities (e.g. pages, lists, libraries, branding) to build your own sites faster and get inspired. Roadmap ID: 70574

3. SharePoint: Company-Branded Auto News Digest – Now you can also roll up your news posts into a great-looking digest that you can send in a company branded Auto-News Digest email. Roadmap ID: 70606

4. SharePoint Syntex: Modern site-level term store – A modern experience to create and manage site-level taxonomies for your sites. It’s now easier to navigate your taxonomies and create and edit terms when classifying & discovering your Syntex and SharePoint content. Roadmap ID: 85638

5. SharePoint: Microsoft Lists Updated sharing experience – Create unique sharing links for lists based on who and how you wish to share them, while adhering to any sharing settings per established IT and governance planning and policies. Roadmap ID: 81965

Microsoft Teams

1. Microsoft Teams: Reply to a specific message – When chatting in Teams, you will be able to reply a specific message. The original message will be quoted in the reply text box -quoted replies will be available in 1:1, Group and Meeting chats. Roadmap ID: 81113

Reply to specific chat message in Microsoft Teams Desktop

2. Microsoft Teams: Breakout Room Timer, Room Retention, and Participant Reassignment – You can now set a timer for Breakout rooms. After timer has expired, rooms will automatically close and participants will come back to the main meeting. Room assignment retention provides the ability to persist room configuration and assignment over multiple sessions. With participant reassignment capability, organizer will now be able to move joined participants across rooms and main meeting also when rooms are opened. Roadmap ID: 81372

Image shows how to set time limit for breakout rooms.

3. Microsoft Teams: Manage team templates with template policies – Manage the team templates that your end users see by creating templates policies in the admin center. Within each template policy, you can designate which templates are shown or hidden. Assign different users to different template policies so that your users view only the subset of team templates specified. Roadmap ID: 70701

The template policies is selected and Add is highlighted.

4. Microsoft Teams: Disable/Enable all Attendee’s Video – Ability to disable and enable video for all attendee’s before, or during, a Microsoft Teams meeting. Roadmap ID: 70621

Don't allow attendees to unmute option

5. Microsoft Teams: Align the experience creating a team from different Teams interfaces – Align the experience for Teams creation in Teams Admin Center to the experience in creating a team in the Teams client. Roadmap ID: 70696

Create a team

OneDrive

1. OneDrive: Dialog on First-Time deletion of File(s) – When a user deletes a file(s) for the first time, they will be shown a dialog to educate them that their file is in the OneDrive recycle bin where it can be restored. This will show up on subsequent deletes until the user checks the box stating they do wish to see it again. Roadmap ID: 70702

First delete dialog alert for OneDrive files - M365 Admin

2. Immersive Reader support in OneDrive and SharePoint – Users can now open Word files directly into Immersive Reader from inside OneDrive and SharePoint. Roadmap ID: 81954

thumbnail image 3 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Immersive Reader comes to PowerPoint for the web, OneDrive, SharePoint and MakeCode

3. OneDrive: Request Files for GCC High and DoD – The Request Files feature is now available for the GCCH and DoD environments. Roadmap ID: 72228

Request files UI

4. OneDrive for Business: Progressive Web App (PWA) – You can now install the web version of OneDrive for Business as a Progressive Web App (PWA) in Microsoft Edge, Google Chrome, Firefox, or other browser that supports Progressive Web Apps. Roadmap ID: 82040

5. OneDrive: Android – Night time reading mode for PDF viewing – Users of OneDrive for Android will be able to change the appearance of PDFs in three main color modes which are day mode, night mode and sepia to enhance viewing. Roadmap ID: 72230

Information Protection

1. Microsoft Information Protection: Enhanced simulations and location support for auto-labeling in SharePoint Online and OneDrive for Business – Auto-labeling in SharePoint Online and OneDrive for Business has been updated with improved performance and ability to configure more locations. The configuration limit of 10 locations in a policy has been removed. Roadmap ID: 82060

Choose locations page for auto-labeling configuration.

2. Microsoft 365 compliance center: Information governance – Multi-stage disposition review – This update allows organizations to use a multi-stage disposition process, including multiple stakeholders and reviews before deleting the content. Roadmap ID: 70579

Specifying disposition reviewers.

3. Microsoft Information Protection: Configure external sharing for sensitivity labels in Teams and SharePoint sites – With this update, you can set controls on external sharing while configuring a Team or site protection policy. Roadmap ID: 70735

A sensitivity label when creating a team site from SharePoint.

4. Microsoft 365 compliance center: Advanced eDiscovery – Historical versions – This capability will enable organizations to quickly search across not only the current version of documents, but all the versions of the document. Roadmap ID: 81898

Switch on the toggle to enable historical versions

5. Microsoft 365 compliance center: Retention for Teams – Admins will be able to apply retention and deletion policies to Teams chats and conversations. Roadmap ID: 81963

A look at the roadmap in 2022

Here are 5 interesting features on the roadmap due for release in 2022:

  1. SharePoint: Migrate SharePoint 2010 and 2013 workflows to Power Automate – Provide Microsoft 365 customers with a tool to migrate SharePoint-based workflows to Power Automate. You will be able to migrate SharePoint 2010 (out-of-the-box) workflows and SharePoint 2013 (SharePoint Designer) workflows to Power Automate flows. Initially this will be implemented via PowerShell, and in future it will be more integrated into the SharePoint Migration Tool (SPMT). Roadmap ID: 82108
  2. Microsoft Teams: Pairing the channel and the corresponding SharePoint folder name –  When renaming a Teams’ channel, the corresponding SharePoint folder will be renamed and reflect the new name. This new feature will be available for all Standard and Private channels. For Standard channels – The corresponding folder in SharePoint will be renamed. For Private channels – The corresponding site name and the folder in SharePoint will be renamed. For legacy Teams channels that were renamed prior to this rollout, there will be no change in experience. When a legacy channel is renamed after this release, it will simultaneously rename the corresponding SharePoint folder.  Roadmap ID: 72211
  3. OneDrive and SharePoint for Business: Library Dropdown – We’re adding a dropdown that allows you to easily switch between multiple document libraries associated with a Team or Site. Roadmap ID: 81990
  4. Microsoft Viva: Praise History in Microsoft Viva Insights – The Praise app in Microsoft Teams is designed to help recognize the effort that goes into the wide-ranging, collaborative work that Teams users do. Users can send Praise to their colleagues through the messaging extension pinned to the Teams messaging bar for most users or through the Microsoft Viva Insights app in Teams. With Praise history, users will be able to view their sent and received praise over the past six months. Roadmap ID: 85639
  5. Microsoft Information Protection: Auto labeling (for files at rest in SharePoint Online) can now label PDF files – This feature enables you to label PDF files at rest via the auto-labeling engine as you would Word, Excel, or PowerPoint files. Roadmap ID: 85618

Thanks for reading and look forward to a great 2022 for roadmap updates!


Edit in grid view button missing – how to resolve

In this post we take a look at the common causes for the edit in grid view button to not be visible in SharePoint Online & Microsoft Lists.

The problem

Edit in grid view was made generally available to all Microsoft customers in February 2021 and is available for lists and document libraries in SharePoint Online or Microsoft Lists. I recently had an issue reported to me that the edit in grid view button was missing from the ribbon in a SharePoint Online document library.

After taking a look myself, sure enough this was the case and the option wasn’t present. The first thing to note about this particular document library was that the default view had grouping enabled on a particular column. In trying to replicate the issue, at first when I created a new document library the edit in grid view button was present:

I noticed that when I applied the same grouping to the view the edit in grid view button disappeared!

Applying a grouping to a library view causes the edit in grid view button to disappear.

The solution

The solution for this is more of a workaround as this appears to be a Microsoft bug. I decided the best way to get around this was to create a specific view that defaults into grid view mode when selected. To do this:

  • With your library open > press the cog > library settings
  • Scroll down to views > press create view
  • Select datasheet view
  • Give the view a name > select the columns you wish to display > press OK

Now you have a view that defaults to grid view without users having to select it!

Other ways around this issue would be to:

  • Remove the grouping for the view in question to allow edit in grid view
  • Create a new view with the grouping removed and show users how to find it to edit in grid view

Unfortunately this seems to be an bug that although it has been raised with Microsoft, the SharePoint UserVoice has since been shut down so it’s unclear if it is being worked on or not. You can raise feature requests through the Microsoft feedback portal.

Bonus – free history lesson!

Out of curiosity I wanted to see if this was an issue in SharePoint 2010 as I was sure I would have come across it by now. As expected, it wasn’t and datasheet view works fine when views have groupings within them.


Tales of a Microsoft 365 migration – file shares

It’s been 10 months since the last instalment of my tales of a Microsoft 365 migration series! In that time I’ve had a new son, moved house, again and again, plus migrated a boat load of data (pun intended). In this post I’ll detail how we migrated over 20TB of data into SharePoint Online from on-premise file shares.

If you want to take a look back at my other posts documenting my organisations migration journey you can find them below:

Contents

Background
Discovery
Analysis
Migration
Issues & resolutions + things of note

Background

I’ve used this before, but the graphic below highlights the phases of our migration efforts, what we have completed thus far (green) and where we are currently are at (yellow):

  • Exchange email migration

  • Home drive migration

  • File share migration

  • SharePoint migration

Our aim was to migrate all of the file share data server by server into SharePoint Online, making the on-premise file servers read-only and finally decommissioning the servers. These new SharePoint sites were to act as temporary, bridging location- allowing the organisation to continue working as normal, but over a longer period of time review the sites contents and move the data into existing organisational Teams.

Work had been done previously to reduce the volume of content and also identify locations that would require more granular permissions changes.


Discovery

As with the home drive migration project, we needed to ascertain:

  • How many file servers + individual shares are there?
  • What is the total volume size of each server combined?
  • How do users gain access the data once its migrated to SharePoint Online?

Early on we realised the Microsoft Migration Manager would not be suitable for this project, mainly as we saw a significantly higher level of errors when running pre-scans in Migration Manager that were reduced by up to 90% running the exact same pre-scan in ShareGate. This led us to purchase additional ShareGate licenses to ramp up our migration efforts, which honestly was the best thing we ever did!

The pre-scan migrations using ShareGate gave us a great baseline for understanding our data, but we also purchased Treesize pro which we used to generate reports against each file server that made it much easier to understand what we were migrating and interactive (you can drill down through folders using this method, which comes in handy – more on this later).


Analysis

With all the above tooling at our disposal we went to work using Treesize to generate reports for each file server and shared with data owners pre-migration. We also kept an active scan of each location open within in the Treesize application to refer back to, plus an export of each migration task from Sharegate for the first pass and final incremental migration.

Using the above reports we were able to break down each server into tasks that would be within ShareGates software limitations:

  • We found that migrating over 1TB or 1 million items in one task would generally cause issues. The tasks would either not complete or once completed we would be unable to open or export the task reports.
  • We decided to stick to creating tasks that contained no more than 500GB of data, spread across multiple VM’s to also avoid throttling – we highlighted each task in a block of colour in each Treesize spreadsheet to help identify

Migration

Based on the volume of data and the number of files/ folders we had to migrate we ran a two-stage migration for all our file share data:

  • First pass – this was the big migration, we ran it silently in the background to allow longer migration tasks to run and shift all the data across during this first migration.
  • Incremental – this was the migration we made public to our users. We published migration schedules for the entire organisation to see and scheduled tasks in ShareGate to run over the weekends to ensure no loss in service following the migration.

In SharePoint Online, at the site level we opened up access to everyone except external users. We then created document libraries within each SharePoint site and mapped each existing on-premise domain group to the corresponding file share library. Due to the sheer size of the folders structures within our file server environment, we decided to only publish the 2nd and 3rd level of each file share structure as part of the Tree size pre-migration scans. Data owners for each area of the business reviewed the reports we produced using Treesize and identified folders that would require further permission changes to be made.

In some cases we were required to break down ShareGate migration tasks into several parts. We would have to do this where the file share would contain over 1TB data or more than 1 million files/folders, as mentioned above. To do this we would need to drill-down further into the file share structure using Treesize until we got to the position of being under 1TB or 1 million files/ folders.


Issues & workarounds + things of note

#1 Migration Manager vs ShareGate

As mentioned above, when we ran pre-scans of our file share locations using Migration Manager the tool reported thousands of errors that largely related to invalid characters, blocked file types or filenames or paths being too long – meaning we were unable to use the tool for our migration efforts.

Workaround: ShareGate works best for your file share migrations

After running an identical pre-scan using ShareGate, our error reports reduced by as much as 90% in some cases, mainly due to ShareGate’s built in capability of replacing invalid characters. It’s also worth noting that the ShareGate UI is much more feature rich and allows you to do way more migration configuration

ShareGate has an inbuilt illegal character replacement feature that will reduce the amount of potential errors in your migrations.

#2 50,000 unique item permissions limit

When migrating file share data using ShareGate we noticed this error message when migrating files/ folders with more than 50K permissions:

The custom permission associated with the item could not be copied since it would exceed the list limit. The maximum number of permission scope for this list has been reached.

https://support-desktop.sharegate.com/hc/en-us/articles/360001453523-The-custom-permission-associated-with-the-item-could-not-be-copied-since-it-would-exceed-the-list-limit

SharePoint has a limit of 50k permission scopes within a list or library.  A scope is either an item, document or folder with broken inheritance. The documentation provided by Microsoft refers to SharePoint Server, but this limitation also applies to SharePoint Online.

If the 50K unique item permission limit is met, all items scheduled for migration after the 50K unique permission is met will fail.

Workaround: Don’t migrate permissions as part of the migration

Let’s face it, if you have file shares with more than 50K unique item permissions you likely have bigger problems that just trying to migrate the data! In my case we made the decision to not include permissions as part of each migration task. This was a big decision that required senior management backing, but ultimately was the right one as it allowed us to migrate the data.

As we already and created reports for the top-level file share structure, we mapped the permissions for the top-level from the file shares for each library in each SharePoint site. Having published the same spreadsheet, we gave our data owners the chance to highlight any other locations that would require additional unique permissions adding and included them as part of the migration effort.

#3 Breaking permissions inheritance in document libraries

I’ve already wrote a separate article on how to break permissions inheritance on large libraries/ lists in SharePoint. However, I’ll summarise the key areas to watch out for and how to workaround them:

  • 5,000 list view threshold for libraries in SharePoint Online
  • 100,000 item limit for breaking permissions inheritance for document libraries in SharePoint Online

Workaround: Delete items to get library under 100,000 items > break permissions inheritance > then restore the deleted items

Also if you read this before starting, just stop inheriting permissions for each library before doing anything else!

#4 Using on-premise Active Directory domain groups to manage document libraries

We decided to use the existing on-premise domain groups to manage our document libraries in SharePoint Online as we felt it would be an easier task to troubleshoot issues if you can trace back where users originally had permissions using the same domain group. However, we found that you cannot add or manage the membership of a synced on-premise domain group in Microsoft 365. As explained in this article from Microsoft:

If the group is synced from on premises Windows AD they cannot be managed in Azure AD. They must be managed on-prem with tools like the Active Directory Users and Computers.

https://docs.microsoft.com/en-us/microsoft-365/community/all-about-groups

Workaround: Create your own Azure Active Directory security groups

As we want to be able to manage everything in Microsoft 365, having to manage the membership of our SharePoint Online libraries using on-premise active directory just wasn’t going to work. So we decided to create our own security groups in Azure Active Directory, following a similar naming convention and use these groups to manage the document library permissions instead.

#5 Syncing and accidental deletion

Once we started to go live with our new SharePoint file server replacement sites, it didn’t take long before users started to figure out they had the ability to sync or create shortcuts to the libraries/ folders. The first issue we faced was that when users starting syncing these large file shares it would kill their OneDrive. It would take a very long time to complete the sync and it many scenarios the synced location would contain blocked file types that would cause the users OneDrive to error and stop syncing.

We also observed that the nature of syncing confused some of our users, meaning they thought the syncing had actually created a local copy on their machines and began deleting files not realising it was an active connection to the SharePoint document library!

Workaround: Switch off syncing on large document libraries

Greg Zelfond over at SharePoint Maven came to the rescue for me here! He has a great article on how you can disable sync in SharePoint and OneDrive that allowed us to stop our users syncing large libraries and accidentally deleting items.

6# Moving files creates duplicates in the recycle bin

Something I did not know before hand was that when you move files in SharePoint Online it actually creates a copy in the destination location and then deletes from source once completed. Here’s what Microsoft say about it:

When a file is moving, it continues to appear in the source directory until it’s fully moved to the destination and then it will be deleted. The file remains in the source sites Recycle Bin after the Move is complete and is subject to the normal recycle schedule unless a user recovers it from the Recycle Bin.

https://support.microsoft.com/en-us/office/move-or-copy-files-in-sharepoint-00e2f483-4df3-46be-a861-1f5f0c1a87bc

Workaround: Consider the destination of files/folders before moving

I think in hindsight had we realised this before we would have either planned ahead for it and bought more storage space to prepare for having duplicates in our environment for 93 days at a time, or worked with the data owners to better identify files/ folders to be migrated into there final organisational Team home, rather than sit in a file server replacement SharePoint site.


How to break permissions inheritance on large libraries/ lists in SharePoint

This post describes a long-standing issue with managing permissions for large libraries or lists in SharePoint Online and gives a workaround for how you can break permission inheritance.

Intro

If you have ever tried to migrate a large volume of data into SharePoint libraries or lists you will have likely encountered an issue with trying (and failing) to break permissions inheritance on lists/ libraries following the migration.

I was recently dealing with this limitation myself as part of a migration project. We had migrated terabytes of data from on-premise file servers into SharePoint Online libraries and as we were beginning to break permissions inheritance on the library saw this error:

The issue

Faced with the problem of needing to secure lots of data that, based on the error above didn’t seem possible – I decided to refresh my memory on just what the limits of lists/ libraries are in SharePoint Online:

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. 

Microsoft docs – SharePoint limits

With the above being true, the error mentions the list view threshold – which is the way SharePoint throttles and limits resources that govern the amount of data and throughput that can be managed. The list view threshold is set to approximately 5000 items by Microsoft and cannot be changed.

Now the issue with not being able to change the list view threshold, although unique to SharePoint Online isn’t a new thing – in fact it seems to have been a problem for lots of people for a long time. So if we are unable to change the list view threshold, what options do we have?

Well as it turns out the list view threshold error appears to be a bit of a red herring. I had taken a look at Microsoft guidance for managing large lists and libraries – creating indices within the library, but this had no affect as the total number of items in my library exceeded 100,000.

An example of a library that had over 100,000 files/ folders in SharePoint Online.

Workaround

The answer for me came from an inspired post on the SharePoint Stack Exchange! I give full credit for the simple, yet brilliant way to get this to work to Kasper Bo Larsen, who suggested that you should just delete enough stuff to get under 100,000 > break permissions inheritance > then restore the deleted items.

This works a treat!

Now it’s not perfect, nor would I call this a fix but if you have already migrated your data then this certainly will work for you.

Things to note

#1 Remember to break inheritance before any migration tasks begin!

I know this is a super obvious one and hindsight is always 20/20, but I’ve learnt from this mistake and built it into any future migration runbooks to break permissions inheritance before starting any migration tasks. It will save you a lot of hassle I promise…

#2 Trying to break permissions inheritance via PowerShell will yield same results

I had the thought during my investigations of this that maybe trying to break permissions inheritance via PowerShell might supersede some of the restrictions deployed to us mere GUI administrators – this was not the case and the PowerShell route fails just the same.

#3 There are no service limits or boundaries for the SharePoint recycle bin

I tried to find out if there were any limits to how much data you can restore from the SharePoint recycle bin in one go – I couldn’t find anything. With that said, I was able to restore over 60,000 files/ folders in one sitting back to it’s original location after breaking permissions inheritance so I don’t believe that will be a blocker.


Applying site templates in SharePoint Online

This post describes a change to how site designs/ templates are applied to sites in SharePoint Online.

Intro

Microsoft published MC249248 in the Message Center on 7 April 2021 stating the following:

This new SharePoint release of scenario-based site templates will help you expand what’s possible with content, pages, and web parts while helping you quickly get started building your own site. Each template contains pre-populated content and web parts that are fully customizable to meet the needs of your organization. This is rolling out on SharePoint Online and mobile.

This was updated on 23 July 2021 with a new timeline stating that this will be complete for Standard Release in late August 2021. What the message doesn’t detail is how this affects the current process for applying site designs to sites you are creating via the SharePoint admin center.

This change landed in my Standard Release environment around the week commencing 16 August. We first noticed it because we no longer had the ability to apply site designs in the admin center!

Before this change you applied your site designs at the point of site creation:

Before the recent site template change, site designs were applied to SharePoint sites at the point of creation.

Following this change the “choose a design” option is no longer present for team or communication sites through the SharePoint admin center. In order to apply designs you now have to apply a site template within the sites settings after you create it.

How to apply a site template

  • Navigate to the site you wish to apply the template to
  • Press the cog > then select apply a site template

Here you are able to choose from Microsoft pre-built templates, or those you have created and deployed into your SharePoint Online environment (from your organization). The experience is slightly different depending on whether you are using pre-built or your own templates.

Using Microsoft pre-built templates

  • Under From Microsoft > select the template you wish to use > press use template
  • The wizard below will show you a progress bar as the template is applied
When applying a Microsoft template, a progress bar will appear as the template is applied.
  • This wizard will disappear once the progress bar reaches 100% and your template will be applied to your site.
A SharePoint site with a Microsoft template applied.

Using custom site templates from your organization

If like me you had already deployed site designs, these are now shown as site templates available from your organization.

  • Press the cog > then select apply a site template
  • Select From your organization > select the template you wish to use > press use template
  • Once you press use template, an orange message bar will appear letting you know that the site template is being applied.
  • The orange message bar will change to green once the site template has been applied. You have to refresh to see the changes
A SharePoint site with a custom template applied.

Resources

Working with the SharePoint Service Administrator Group in SharePoint Online

In this post we take a look at the SharePoint Service Administrator Group, what it is and how to use it in SharePoint Online.

In this post:

Background

Recently I had the task of creating, then modifying a few hundred sites in SharePoint Online. In our case we provisioned the Microsoft 365 group connected SharePoint sites using PnP PowerShell, but as part of this we set the primary owner as an individual admin.

During the process of updating the sites manually, it become more and more annoying that other SharePoint admins had to keep adding themselves into the recently provisioned sites in order to do anything – that is until I found the SharePoint Service Administrator group!

What is the SharePoint Service Administrator group?

The SharePoint Service Administrator is a security group that includes everyone that has been assigned the SharePoint Admin role in Microsoft 365. It’s also worth noting there is also a Company Administrator group also, which includes all users with the Global Admin role.

Greg Zelfond has provided a great write up of these roles over at SharePoint Maven. For the purposes of this post I will be focusing on the SharePoint Service Administrator group.

How to assign the SharePoint Service Administrator group to a site

Follow the steps below to add the SharePoint Service Administrator group as an additional admin of a SharePoint site:

  • Open the SharePoint admin center
  • Under Sites > Active sites > select the site you wish to add the SharePoint Service Administrator group to
  • Press Permissions > Manage additional admins
Select your site then press Permissions > Manage additional admins.
  • Under Add an admin > enter SharePoint Service Administrator
  • Press Save

Issues and troubleshooting

#1 Cannot add SharePoint Service Administrator as a group owner

If you are creating or editing Microsoft 365 group connected SharePoint team sites, you are unable to add security groups as owners or members of a M365 group. Security group driven M365 group membership has been a long-standing request of Microsoft, but Roadmap ID: 83113 added in May 2021 has group driven membership management as targeted for release in December 2022.

Workaround: When creating new sites, set the group owners/ members as you would normally (i.e. one or more individuals), then edit the site once created to add the SharePoint Service Administrator group as an additional admin.

For existing sites, just update the additional admin as per the guidance above.

#2 No SharePoint Service Administrator group to choose from

If you have not assigned the SharePoint admin role to anyone in your tenant yet, the SharePoint Service Administrator role will not be available to select from when trying to assign it as an additional admin. In the below example, this tenant only had one global administrator, but the SharePoint admin role had not been explicitly assigned.

When I tried to add the company administrator role it worked no problem.

Workaround: Assign the SharePoint admin role to those you want to be included in the SharePoint Service Administrator group, or use the Company Administrator group if you only have global admins in your tenancy.