In this article, we will review the case when the "Upload failed "Add and customize pages" permission denied" error occurs on SharePoint Site restoration or copying. This error can be found on the summary page of the completed operation (Operation Details page -> Summary Information) and the log files of the Restore SharePoint Sites or Copy SharePoint Sites operations.
Cause
This happens because the "Custom script" option is set to "Blocked" for the whole SharePoint Site collection in the Settings of the SharePoint admin center. Starting from June 2024, this setting is set to "Blocked" by default for all users and all sites in your SharePoint Site collection.
When this feature is "Blocked", G.A. Suite will not be able to restore/copy Site Templetaes (Solutions), all aspx files, custom forms and views, etc.
For more details, please refer to the Microsoft Documentation: Features affected when custom script is blocked.
Solution
Solution 1
Before restoring/copying SharePoint Sites, the Tenant Administrator of the SharePoint Site Collection must set the "Custom script" setting to "Allowed" for restoration/copy to be completed successfully.
For this, the Tenant Administrator should navigate to the SharePoint admin center -> Active Sites -> Select the site in question -> Open the Settings page -> Click Edit under the "Custom script" setting.
Select "Allowed" and save the changes.
Solution 2
Alternatively, the Tenant Administrator can provide the following parameter in the PowerShell script to extend the period of this setting. However, Microsoft will disable this option in November 2024.
Please note: To get started using PowerShell in SharePoint Online, you need to install the SharePoint Online Management Shell and connect to SharePoint Online. Please refer to this article for more details.
Please note: The URLs below serve as examples; you need to change them to the URL of the target SharePoint Site selected for restoration/copy.
To connect to the Admin site of the tenant:
Connect-SPOService -url https://<TENANTNAME>-admin.sharepoint.com
To change the settings to "Allowed":
Set-SPOSite -Identity https://<TENANTNAME>.sharepoint.com/sites/<PWANAME> -DenyAddAndCustomizePages $false
Additionally, you can check the results of command execution by running:
Get-SPOSite -Identity https://<TENANTNAME>.sharepoint.com/sites/<PWANAME> | Select DenyAddAndCustomizePages
Also, if you are using the latest version of Microsoft.Online.SharePoint.PowerShell module, you can temporarily disable the 24-hour reset of this setting by running:
Set-SPOTenant -DelayDenyAddAndCustomizePagesEnforcement $True
We cannot guarantee this will work for your tenant since Microsoft only promised this setting would be available until November 2024.
To get the latest version of Microsoft.Online.SharePoint.PowerShell module, you can run this from the PowerShell console launched with the "Run as Administrator" option:
Update-Module -Name Microsoft.Online.SharePoint.PowerShell
Solution 3
The next alternative solution is to check the Skip pages upload checkbox on the SharePoint Sites copy/restore window in G.A. Suite.
This option allows skipping the upload/restore of .aspx pages (in any libraries) as well as the Pages, Site Pages, Style Library, and PDP libraries during the copy/restore. This prevents errors during the copy/restore process. This option can be used if you are unable to manage permissions or if you don't need these pages to be copied/restored.