GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

MOSS: Plantillas de Sitio, SubSitios, Tipos de Contenido y Columnas de Sitio


Recientemente, me he encontrado con la necesidad de crear un nuevo SubSitio basado en un SubSitio existente, para lo cual, quizás lo más apropiado es la creación de una Plantilla de Sitio desde el SubSitio deseado, aunque también podría ser una alternativa realizar un STSADM EXPORT del SubSitio original y un STSADM IMPORT sobre el SubSitio destino. En este artículo, quería aprovechar para comentar alguna diferencia entre ambas alternativas (Plantillas de Sitios vs STSADM EXPORT e IMPORT), así como algunos problemillas encontrados.

El escenario en cuestión consiste en un SubSitio de MOSS 2007 bastante personalizado, el cual incluía varias Listas Personalizadas, Tipos de Contenido basados en columnas definidas en el propio SubSitio, entre otras curiosidades (no relevantes en este caso, como WebParts personalizadas, algunas características, etc.). La problemática en cuestión, la necesidad de duplicar el SubSitio existente, es decir, tener una nueva instancia o copia del SubSitio.

Utilización de Plantillas de Sitio (Site Templates) en MOSS 2007

El primer intento para duplicar el SubSitio original, fue crear una Plantilla de Sitio desde el SubSitio original. Una Plantilla de Sitio, es simplemente un fichero con extensión STP que almacena la configuración o estructura de un Sitio, de tal modo, que se facilite la creación de Sitios complejos, al poder partir de una plantilla existente (así, podemos crear un nuevo sitio, con las listas y bibliotecas predefinidas que deseemos, fácilmente).

No he encontrado ningún link desde las páginas de administración del SubSitio de MOSS para crear una Plantilla de Sitio, sin embargo, puede hacerse de dos formas (que yo conozca):

  • Desde SharePoint Designer 2007, abrir el SubSite deseado, y ejecutar File -> Export -> SharePoint Site Template. Esto abrirá un navegador, con la página Save Site as Template (cabrones, que costaba poner un link desde las páginas de administración del SubSite, que costaba...).
  • Desde un navegador, escribir la URL de SubSite original y agregar _layouts/savetmpl.html al final (ej: http://www.guillesql.local/subsite/_layouts/savetmpl.html). Es decir, escribir a manubrio, la URL a la cual nos envía el SharePoint Designer 2007 (casero, como el flan de huevo ;-).

La página Save Site as Template, nos pedirá:

  • File Name. Especificar un nombre para el fichero correspondiente a la Plantilla de Sitio (Site Template), sin extensión (por defecto tomará la extensión stp).
  • Name. Especificar un nombre para la Plantilla de Sitio (Site Template).
  • Description. Especificar una descripción para la Plantilla de Sitio (Site Template).
  • Include Content. Especificar si desea crearse la Plantilla de Sitio (Site Template), incluyendo el contenido (datos, esto es, contenido de las listas y librerías). Se trata de un CheckBox de los de toda la vida.

Una vez creada la Plantilla de Sitio (Site Template), desde la página de administración del Sitio Principal de la Colección de Sitios,  podemos utilizar la opción Site templates de la sección Galleries, para ver la nueva Plantilla de Sitio (Site Template) y el resto de plantillas existentes, así como editar, eliminar y/o añadir (upload) Plantillas de Sitio. Es interesante tener en cuenta, que es posible descargar una Plantilla de Sitio (Site Template) y posteriormente cargar (upload) en una Colección de Sitios diferente, ya sea en la misma o distinta granja MOSS. Al final, es un ficherico de naa.

Una vez que hemos creado nuestra Plantilla de Sitio (Site Template), en nuestro caso, sin incluir el contenido (ya que sólo necesitamos la estructura), el siguiente paso que necesitamos realizar, es crear un nuevo SubSitio partiendo de la Plantilla de Sitio recién creada. Esto es muy sencillo. Es suficiente con crear un SubSitio, del mismo modo que se hace en el resto de casos, de tal modo, que en la página New SharePoint Site utilizaremos la pestaña Custom de la sección Template Selection, ya que es ahí dónde podremos ver las Plantillas de Sitio personalizadas que tenemos disponibles. Fácil y sencillo.

Ya hemos creado nuestro nuevo SubSitio, y aparentemente, está igual que el SubSitio original. Tiene las mismas Listas y Bibliotecas de Documentos, que en principio, es nuestra preocupación principal (habitualmente). Genial. Parece que está todo OK (puta-madre-quinto-dan, como decía un antiguo compañero ;-).

En el caso que nos ocupa, existía una aplicación de consola personalizada. Para nuestra desgracia, al ejecutar dicha aplicación sobre el nuevo SubSitio, se producen errores variopintos, sin gran descripción. Cáspita.

Revisando un poco más a fondo el SubSite original y el nuevo SubSite creado desde la Plantilla de Sitio, podemos observar, que las Listas personalizadas del SubSite original se basan en Tipos de Contenido. Principalmente (y reduciéndolo a lo absurdo), existe un Tipo de Contenido para cada posible elemento de Lista que se puede crear. En consecuencia, existen multitud de Tipos de Contenido personalizados, todos ellos basados en el elemento padre List Content Types - Item, cada uno de los cuales está formado por una pequeña multitud de Columnas (principal y básicamente). Dichas columnas, están definidas en el propio SubSitio. Es decir, desde la página de administración del SubSitio original, podemos:

  • Ver los Tipos de Contenido existentes, desde la opción Site content types de la sección Galleries.
  • Ver las Columnas personalizadas existentes, desde la opción Site columns de la sección Galleries. Aquellas columnas cuyo Source sea el nombre del propio SubSite, son a las que me refiero, que casualmente, están todas juntitas en el grupo Custom Columns.

Sin embargo, en el SubSitio que hemos creado partiendo de la Plantilla de Sitio (Site Template), no se han creado ni los Tipos de Contenidos personalizados, ni las Columnas de Sitio personalizadas.

Al menos yo, no conozco forma de mover o copiar las Columnas de Sitio ni los Tipos de Contenido. Googleando en busca de las Extensiones de Gary LaPointe, con la esperanza de obtener alguna ayuda, descubro que gracias a las mismas, es posible:

  • Exportar los Tipos de Contenido de un Site (eso si, de importar, nada de nada, mal rollo).
  • Exportar e Importar Columnas de un Site, con gl-importsitecolumns y gl-exportsitecolumns.

La cosa está clara: Si no puedo importar los Tipos de Contenido, pues probaré a exportar e importar las Columnas del Sitio, y luego, ya veremos por donde nos guía el destino. Para ello, una vez instaladas las Extensiones de Gary LaPointe, ejecutaremos unos comandos similares a los siguientes:

stsadm -o gl-exportsitecolumns -url "http://www.guillesql.local/Facturas/2009" -outputfile c:\fields.xml -group "Custom Columns"

stsadm -o gl-importsitecolumns -url "http://www.guillesql.local/Facturas/2010" -inputfile c:\fields.xml

Eureka. La importación de las columnas de sitio se ha realizado con éxito, y al probar la ejecución de la aplicación personalizada, todo funciona OK.

Es curioso, observar como las listas personalizadas del nuevo SubSite creado desde la Plantilla de Sitio, se muestran configuradas con varios Tipos de Contenido, y sin embargo, al revisar los Tipos de Contenido de dicho SubSite resulta no existe ninguno de los Tipos de Contenido utilizados por estas Listas. Parece una contradicción, sin embargo, funciona, aunque no podremos reutilizar los Tipos de Contenido.

Probablemente, el problema fuera simplemente, que la aplicación personalizada comprobase la existencia de Columnas de Sitio, como medida preventiva, antes de realizar ninguna acción (y garantizar en cierto modo, que el SubSitio sobre el que actúa tiene el formato que necesita). Sin embargo, tiene pinta, que sin la existencia de dichas Columnas de Sitio, las listas personalizadas se habrían creado correctamente, por lo que habría sido suficiente con eliminar la comprobación de la existencia de Columnas de Sitio de la aplicación personalizada de consola. Nos quedaremos con la duda.

Utilizar STSADM EXPORT e IMPORT como alternativa a las Plantillas de Sitio

Una posible alternativa (WorkAround) a la utilización de Plantillas de Sitio, podría ser realizar un STSADM EXPORT del SubSitio origen, y realizar un STSADM IMPORT para crear el nuevo SubSitio destino con la misma estructura (y datos, claro), eliminando a continuación, el contenido de las Listas que no se desee mantener en el nuevo SubSite.

La utilización de STSADM EXPORT e IMPORT mantiene la definición de Tipos de Contenido y Columnas de Sitio, lo cual, se muestra como una ventaja frente a la utilización de Plantillas de Sitio.

Además, la utilización de STSADM EXPORT e IMPORT, nos permite mantener permisos, si lo necesitamos.

Pero no es oro todo lo que reluce. Si tenemos un SubSitio de MOSS en el que hemos estado trabajando intensamente, es posible que al acceder con SharePoint Designer nos encontremos cierta porquería que no deseemos mantener en la creación de un nuevo SubSitio. Por ejemplo, si existen páginas que han sido modificadas por algún usuario, aparecerá el usuario que las ha modificado (un detalle poco molesto, pero en muchos casos, también poco deseable). Otro ejemplo, mucho más molesto, es que aunque eliminemos el contenido de todas las Listas y Bibliotecas, con SharePoint Designer podríamos encontrarnos algunos restos que se mantendrán al hacer el EXPORT y el IMPORT (ej: ficheros adjuntos en las carpetas Attachments (curioso, tras borrar todo el contenido de nuestro SubSite, podemos encontrarnos que un EXPORT llega a ocupar varios Gigas, por los malditos Attachments).

No olvidemos que STSADM EXPORT e IMPORT, es una utilidad que resulta un poquitín problemática, o cuanto menos, peculiar. Podemos encontrarnos problemas variopintos, desde no poder realizar un EXPORT de un SubSite por haber roto la herencia de permisos (es decir, volviendo a configurar la Herencia, el EXPORT funciona correctamente), así como otros muchos que ya hemos comentado anteriormente:

Conclusiones

Al final, en función de las necesidades particulares de cada caso, nos puede interesar utilizar una solución u otra (Plantillas de Sitio vs STSADM EXPORT e IMPORT). Incluso, quizás nos interese una solución mixta (ej: crear un nuevo SubSitio desde Plantilla en un entorno, y seguidamente, exportar e importar el SubSitio en otro entorno diferente).

 




Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.