SharePoint missing web template
Recentemente mi è capitato di aggiornare uno SharePoint 2016 alla CU October 2020, purtroppo l'aggiornamento falliva con questo errore:
La soluzione ovvia è reinstallare il template di sito mancante. Ma nel mio caso non era percorribile.
Se il template di sito non è vincolante al funzionamento di SharePoint, come nel mio caso, altri suggeriscono di esportare il sito con PowerShell, spacchettarlo, modificare il riferimento al template con uno esistente, rifare il pacchetto e ricreare il sito.
In alternativa si può procedere modificando direttamente il database.
una volta trovato l'ID del sito, si può procedere con l'aggiornare il campo WebTemplate con l'Id di un template esistente:
se il sito era un Team Site si può usare l'id 1, se era di tipo Publishing l'id 39, ecc...
In ultimo, prima di rieseguire l'aggiornamento della CU, conviene verificare il database con il comando PowerShell
se non ci sono più errori, si puo eseguire
per assicurarsi che si aggiornato alla versione attuale, infine eseguire lo SharePoint Configuration Wizard'.
An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information:
Found 1 web(s) using missing web template 10000 (lcid: 1040) with compatibility level 15 in ContentDatabase SP2016_Content_Portal. (EventID:ajdkm)
The site definition with Id 10000 is referenced in the database [SP2016_Content_Portal], but is not installed on the current farm for sites with compatibility level 15. The missing site definition may cause upgrade to fail. Please install any solution which contains the site definition and restart upgrade if necessary. (EventID:ajdkn)
L'errore risulta bloccate e impediva l'aggiornamento. Questo anche se i siti esistenti, con il template mancante, funzionavano regolarmente, o meglio, funzionavano perché si trattava di siti usati solo come redirect verso altri siti, quindi il template era ininfluente.Found 1 web(s) using missing web template 10000 (lcid: 1040) with compatibility level 15 in ContentDatabase SP2016_Content_Portal. (EventID:ajdkm)
The site definition with Id 10000 is referenced in the database [SP2016_Content_Portal], but is not installed on the current farm for sites with compatibility level 15. The missing site definition may cause upgrade to fail. Please install any solution which contains the site definition and restart upgrade if necessary. (EventID:ajdkn)
La soluzione ovvia è reinstallare il template di sito mancante. Ma nel mio caso non era percorribile.
Se il template di sito non è vincolante al funzionamento di SharePoint, come nel mio caso, altri suggeriscono di esportare il sito con PowerShell, spacchettarlo, modificare il riferimento al template con uno esistente, rifare il pacchetto e ricreare il sito.
In alternativa si può procedere modificando direttamente il database.
ATTENZIONE: la modifica diretta al database di SharePoint non è supportata. Se volete farlo, assicuratevi di fare prima un backup e soprattutto provatelo in un sistema non di produzione.
Con questa query T-SQL si elencano tutti i siti con il numero di template indicato nell'errore:T-SQL
SELECT TOP (1000) [Id], *
FROM [SP2016_Content_Portal].[dbo].[AllWebs]
WHERE [WebTemplate] = 10000
T-SQL
UPDATE [SP2016_Content_Portal].[dbo].[AllWebs] SET
[WebTemplate] = 1 -- 1=TeamSite oppure 39=Publishing site
WHERE [ID] = '1CF49D4C-BF81-4C75-BE58-F0F031D04FEA'
Per l'elenco di tutti i template e dei rispettivi id vedi SharePoint Site Template ID – Microsoft Office 365
In ultimo, prima di rieseguire l'aggiornamento della CU, conviene verificare il database con il comando PowerShell
PowerShell
Test-SPContentDatabase SP2016_Content_Portal
PowerShell
Get-SPContentDatabase SP2016_Content_Portal | Upgrade-SPContentDatabase