Recientemente me he visto en la obligación de tener que migrar una lista con datos sensibles de una instalación en Sharepoint 2007 a una instalación nueva en Sharepoint 2010.
Bien, primero un poco de teoría, después explicaré en profundidad y con detalle la práctica.
Después de dar muchas vueltas por Internet y no encontrar información al respecto, he descubierto las siguientes verdades a medida que he intentado métodos para pasar los datos:
Las exportaciones de listas (*.STP) de SP2007 no son compatibles con SP2010. Es decir, no se puede importar y exportar y listo.
El SPMetal de SP2010 no genera las clases de un site de SP2007. Es decir, no se puede utilizar LINQ desde VS2010 para hacer un proceso o un webpart que haga la importación.
Sí se puede conectar al WebService de SP2007 (http://TuServidor/sites/TuSubSite/_vti_bin/Lists.asmx) desde VS2010 y utilizar los métodos de que dispone el servicio para obtener los datos, guardarlos en colecciones y después subirlos, o bien con las clases que sí tenemos disponibles para SP2010 (SPList, SPListItem) o bien conectar al WebService de SP2010 para utilizar REST y guardar los datos.
Cuando llevaba un buen rato implementando este sistema, no sé por qué, he pensado en la manía de Microsoft en cambiar las extensiones de los archivos (p.ej. los docx en realidad son .zip, los swp en realidad son .cab, etc) y he mirado, por curiosidad, el stp que he exportado de SP2007: ¡Eureka! También es un .cab.
Bien, pues resulta que, al descomprimirlo, sólo contiene un archivo y se llama “manifest.xml”. Pues lo he mirado por dentro y tiene un tag bastante indicativo:
<ProductVersion>3</ProductVersion>
Y digo, bueno, ¿realmente sería suficiente con cambiar la versión para que lo lea SP2010? Pues sí, efectivamente. He cambiado la versión, he vuelto a empaquetarlo como .cab y le he cambiado la extensión otra vez a .stp y esta vez sí me ha permitido SP2010 importarlo.
¿Fácil no? Bueno, pues sí, el resultado final es muy fácil.
Vamos con la práctica completa:
1.- Exportar la lista de SP2007.
Entrar en la edición de la lista de Sharepoint 2007 y buscar la opción “Save document library as template”:
Aparecerá la siguiente pantalla. En ella, recordar CHEQUEAR la opción de incluir contenido, si no, el trabajo no sirve de nada:
Al archivo generado, digamos, “wikipages.stp”, cambiarle la extensión por “.cab”:
Ahora podemos extraer el contenido del archivo con, por ejemplo Winrar:
Una vez descomprimido, ya podemos editar el archivo extraido con, por ejemplo, el Notepad:
Donde decía
<ProductVersion>3</ProductVersion>
Lo modificamos y ponemos
<ProductVersion>4</ProductVersion>
y lo guardamos.
Por cierto, ¿¿¿veis que pone <Language>1033</Language>??? Bien, pues nos dice que la lista se ha creado en inglés EEUU. Si el idioma base del site donde intenteis importarlo no es el mismo, seguramente tendreis problemas.
Bueno, pues ya tenemos casi todo hecho. El siguiente paso es volver a crear el .cab, lo hacemos con la utilidad del S.O. para ello:
Después lo renombramos a la extensión .stp:
Y ya podemos irnos a SP2010 a importar la plantilla, para ello entramos en las opciones del Site:
Y vamos a la opción List templates:
Y, en la opción del Ribbon “Documents”, seleccionamos a través de Upload Document, el archivo WikiPages2010.stp.
Nos aparecerá en la lista y sólo nos queda seleccionarlo y activarlo.
Ya está. Sí, seguro, ya está. Ya podemos crear nuestra lista basada en este Template List y nos la creará con todo el contenido.
Fuente: http://serpoint.wordpress.com/2010/12/10/migrar-lista-de-sharepoint-2007-a-lista-de-sharepoint-2010/
Comentarios