Nous avons découvert dans un précédent message les possibilités offertes par le Hub de Types de Contenu ou Content Type (CT):
Cette solution est une fonctionnalité très intéressante mais qu’il faut prendre avec beaucoup d’attention.
En effet, le principe est basé sur un Timer qui s’exécute au sein de la ferme toutes les XX minutes pour publier les modifications à toute la ferme ou tout le tenant pour Office 365.
Création d’un Content Type orphelin
Le cas typique est la création d’un CT qui a été publié et qui est supprimé du Hub avant d’avoir été totalement “dépublié” de la ferme ou du tenant. Le résultat est donc la présence au sein de certaines collections (voir toutes) de ces CT qui sont maintenant orphelin du Hub. A cela il faut rajouter la même présence dans les collections “OneDrive” des utilisateurs de ces mêmes CT.
Prenons un exemple concrêt:
Imaginons maintenant un tenant de 30’000 utilisateurs avec 20’000 collections OneDrive, à cela on rajoute une 100 de sites SharePoint classiques.
On parle donc de 20’100 collections de sites qui sont susceptibles de recevoir les CT depuis le Hub. Maintenant, on publie un CT et disons qu’il mette 5 secondes par collection pour se déployer au sein du tenant (valeur hypothétique bien sur). Il nous faudra donc 100’500 secondes pour publier le CT sur tout le tenant, soit environ 28 heures au total.
Il suffit maintenant d’imaginer un administrateur, un peu trop pressé et voulant corriger son erreur, peut très facilement supprimer le CT du HUB avant même que celui-ci soit publié partout et donc créer des orphelins dans de nombreuses collections.
Le cas est expliqué en commentaire de ce post d’ailleurs:
Nettoyer les Content Type orphelins
La solution est un peu tricky mais fonctionne bien surtout quand on souhaite éviter d’aller sur 20’100 collections de site et supprimer les CT à la main. Il faut trouver une collection ou le CT est encore présent pour obtenir:
- Son nom et son Groupe
- Son Parent
- Son ID (pour trouver le CT ID: How do I find the ID for associated content type when adding a page layout?)
Une fois qu’on a cela, il faut utiliser un script PowerShell (Le CT ID peut être défini uniquement via Code) utilisant la base fournie:
Vous devez juste modifier la partie centrale en commentant les colonnes et forcant l’ID:
# create Content Type using ContentTypeCreationInformation object (ctci)
$ctci = new-object Microsoft.SharePoint.Client.ContentTypeCreationInformation
$ctci.id = $MyContentTypeID
$ctci.name = $contentTypeName
#$ctci.ParentContentType = $parentContentType
$ctci.group = $contentTypeGroup
$ctci = $contentTypes.add($ctci)
$context.load($ctci)
Ce script doit être exécuté sur le Content Type Hub pour recréer les CT (Vides pour le coup) afin de les republier et dépublier après 24/48 heures.
C’est seulement une fois la dépublication effectuée que vous pouvez supprimer les CT du Hub (en vérifiant les log d’exécution dans le Hub).
Attention
La dépublication ne fonctionne que si le site collection admin n’a pas utilisé ce CT dans sa collection. Si c’est le cas, la dépublication ne s’exécutera pas sur cette collection.
Conclusion
L’utilisation du CT Hub est vraiment une très bonne chose, mais il faut vraiment bien réfléchir à sa stratégie avant de créer ces CT dans le Hub sous peine de devoir risquer de gros soucis.
Romelard Fabrice [MBA Risk Management]
Commentaires
Enregistrer un commentaire