Hace poco empecé a trabajar en un tenant nuevo, y una de las primeras preguntas que quería responder no era "qué está roto", era más sencilla que eso: qué hay realmente aquí. ¿Con qué estoy tratando? Antes de poder arreglar nada, necesitas saber qué estás mirando, si es un entorno ordenado con un modelo de contenido real detrás, o si es un todo vale.
Los tipos de contenido y el Term Store son dos de las señales más claras para responder esa pregunta, y en ambos casos es fácil sacar una lectura equivocada si no sabes qué filtrar primero. Construí un script para cada uno y los ejecuté ambos contra un tenant real.
Tipos de contenido: globales frente a locales
SharePoint ofrece dos formas de crear un tipo de contenido. Puedes publicar uno de forma centralizada desde el Content Type Hub, sindicado a todos los sitios que se suscriben a él, consistente por diseño, una única fuente de verdad. O el propietario de un sitio con los permisos adecuados puede simplemente crear uno directamente en su propio sitio, sin aprobación, sin visibilidad centralizada, sin nada que le impida llamarlo como quiera.
Ambos son legítimos, y el número de tipos de contenido globales de un tenant indica cuánto se gestiona de forma centralizada. Su número de tipos de contenido locales indica cuánta dispersión existe fuera de ese control, y la dispersión es donde suelen vivir la duplicación, la inconsistencia y la confusión.
Ejecutar el script contra un tenant real produjo una imagen clara, aunque algo preocupante.
Trece tipos de contenido publicados globalmente desde el hub. Cero uso de cualquiera de ellos, en ningún sitio, en ninguna lista. El hub existe, pero nada en el tenant está realmente construido sobre él.
Trescientos veinticinco tipos de contenido locales. Ese es el número que cuenta la historia real aquí, el modelo de contenido de este tenant se ha construido enteramente sitio por sitio, no de forma centralizada.
El detalle más interesante, sin embargo, no fue el total, sino la forma de la duplicación. Nombres de tipos de contenido como Guidelines, Policy, Tools, News, aparecían con frecuencia, indicando que distintos sitios se construyeron sobre las mismas ideas, pero sin gestionarse de forma coordinada. También hubo casos en los que los mismos tipos de contenido se habían desplegado en varios sitios, un proceso de configuración repetido, la misma plantilla de sitio o rutina de aprovisionamiento ejecutada veintitrés veces, cada ejecución creando su propia copia local independiente de lo que conceptualmente es el mismo tipo de contenido, en lugar de que ninguna de ellas apunte nunca a algo compartido.
Term Store: la misma pregunta, una respuesta muy distinta
Esperaba que el Term Store contara una historia parecida. No fue así, una vez que lo filtré correctamente, y acertar con ese filtrado resultó ser la verdadera lección que merece la pena compartir.
La primera pasada parecía un desastre: diecinueve conjuntos de términos, once de ellos completamente vacíos. Un cincuenta y ocho por ciento vacío es el tipo de cifra que te hace asumir que nadie mantiene la taxonomía. Pero al mirar con más detalle exactamente cuáles eran los conjuntos vacíos, la historia era otra. Los once pertenecían a grupos que SharePoint aprovisiona automáticamente de forma interna, Search Dictionaries, System, y un puñado de grupos de scaffolding de Site Collection, nada de eso forma parte de la taxonomía de trabajo real del tenant.
Una vez excluidos correctamente, la imagen real es la opuesta a la que sugería la primera pasada: todos los conjuntos de términos genuinamente gestionados por personas en este tenant tienen términos reales dentro, correctamente cerrados a la edición abierta, sin dispersión. Una taxonomía limpia y bien gobernada, la conclusión exactamente opuesta a la que implicaban las cifras en bruto antes de filtrar.
Una excepción deliberada: dejé el grupo People dentro del alcance en lugar de filtrarlo junto con los demás grupos de sistema. Muchas organizaciones lo usan de forma genuina, términos de Department, Job Title y Location que alimentan el etiquetado basado en perfil, así que un conjunto People vacío es una observación de gobernanza real y digna de conocer, no ruido de scaffolding que ocultar. En este tenant, en efecto aparece vacío, lo cual es algo justo y concreto que señalar, esta funcionalidad en particular nunca se adoptó, más que un problema de la taxonomía.
Por qué ambas cosas merece la pena conocerlas, incluso antes de decidir qué hacer con ellas
Quiero tener cuidado de no vender ninguno de los dos hallazgos. Trescientos tipos de contenido construidos sitio por sitio no es un desastre, muchos tenants funcionan durante años exactamente así sin que nada llegue a romperse realmente. Y un Term Store limpio no significa que no quede nada por mejorar, una taxonomía People sin usar sigue mereciendo una conversación.
Lo que ambas auditorías te dan es lo mismo: un punto de partida honesto, en lugar de una suposición. Una migración, un rediseño, un impulso de gobernanza, todo esto se plantea de forma muy distinta según lo que realmente haya. Suponer, o dar por hecho que un hub existe y por tanto está cumpliendo su función, o asumir que un Term Store con aspecto vacío significa mala gobernanza, habría sido activamente engañoso en ambas direcciones aquí.
Los scripts
Ambos scripts están disponibles en la biblioteca de scripts:
- Análisis de tipos de contenido, que genera cuatro informes: el inventario de tipos de contenido globales, dónde se usa realmente cada uno, la lista completa de tipos de contenido locales con nombres duplicados señalados, y cualquier tipo de contenido a nivel de lista que se haya desviado de su padre. Artículo completo.
- Análisis del Term Store, que genera un inventario completo, los conjuntos de términos vacíos, los términos con traducciones ausentes en los idiomas configurados, y los conjuntos de términos que no parecen usarse en ningún lugar del tenant, excluyendo desde el principio los grupos de scaffolding del sistema. Artículo completo.
Ninguno de los dos es una solución. Ambos son un inventario honesto, que, en un tenant que apenas estás conociendo, suele ser lo primero que realmente necesitas.