SharePoint tiene un API para migrar contenido efectivo y poderoso. Dentro del ensamblado Microsoft.SharePoint.dll y debajo de el espacio de nombres Microsoft.SharePoint.Deployment se encuentras las clases principales de esta API; SPExport y SPImport. Estas clases junto con otras mas encapsulan la interface para realizar una migración de contenido exitosa.
Un vistazo realista
Dado el API para la migración el problema o la solución mas bien es de estrategia que de herramienta. No estamos en un mundo perfecto encontraremos problemas en el camino, especialmente cuando se trate de contenido. Pero la estrategia que sigamos nos dará la victoria o la derrota. Cuando inicie su proceso de migración olvídese en pensar que va a migrarlo todo absolutamente todo de una sola vez, no funciona así, entre tanto estemos hablando de cerca de los 10 Gb. de información esto por lo menos sugiere un centenar de sitios con n cantidad de librerías y documentos, páginas, elementos web, enlaces, cientos de usuarios, listas, columnas, flujos de trabajo, y demás contenido de los portales.
Qué herramienta utilizar?
Si esta evaluando otras alternativas dentro de SharePoint, no pierda mas el tiempo esta API fue diseñada para realizar dicha tarea. Otras alternativas solo le acarrearan complicaciones innecesarias y poco efectivas. No me refiero a productos de terceros que hay muy buenos y también caros, sino a posibles caminos que pudiera pensar fuesen efectivos, como Web Services, SharePoint Designer, comando de línea stsadm.exe o por último la interface de SharePoint Server 2007 para copiar contenido conocida como el sitemanager.aspx. Si se trata de migrar contenido masivo y es en distintos servidores o aplicaciones Web, no hay sino esta API diseñada para tal propósito.
La Herramienta
La buena noticia es que ya hubo alguien que hizo una herramienta y que es gratuita, y mi experiencia con ella no ha sido sino gratificante y exitosa. No soluciona todos los problemas pero en un porcentaje significativo estimo 85% el contenido es migrado, y no porque la herramienta no sea efectiva porque se basa en la API de SharePoint, sino porque hay problemas siempre con el contenido, especialmente cuando este proviene de una migración de WSS 2.0, y no sean practicado las mejores prácticas en la administración de contenido.
La herramienta puede bajarla en el sitio codeplex en esta dirección:
http://www.codeplex.com/SPDeploymentWizard
Hay una versión Release 1.1. La que recomiendo. La versión 2.0 que esta en beta en el momento que escribí esta publicación, requiere que usted instale el Framework 3.5 en el servidor de SharePoint, y esto puede se un tema importante a considerar. Lo que no hace la versión 1.1 que es un ejecutable que usted ejecuta desde cada servidor donde realizará la exportación e importación. Las mejoras incluidas en la versión 2.0 son para integración continua para hacer instalaciones de contenido silenciosas en ambientes de desarrollo preferentemente. Allí no habrá problema de reiniciar el servidor por la instalación del Framework 3.5, no así en el caso de ambientes de producción.
Escenario:
Necesito migrar mas de 7 Gb de contenido de un servidor de SharePoint a otro. No estoy forzado a migrar exactamente la misma estructura porque es sobre un portal que tiene una organización diferente. La estructura de permisos es muy sencilla; hay sitios principales que tienen administradores de contenido asociados. Cada administrador agrupará a los usuarios en permisos basados en los niveles de permiso estándar de SharePoint, Lectores, colaboradores y administradores.
Solución:
Utilizaré la herramienta de migración SPDeploymentWizard para migrar el contenido. Para ello se creará de primero la estructura nueva de sitios en el servidor destino y se migrará el contenido por áreas, Una a la vez revisando que el contenido y las funcionalidades del antiguo sitio estén presentes en el nuevo sitio. Ya que utilizaremos esta herramienta describiremos el procedimiento y cada opción de la misma.
Preparación para la migración
Disponga de espacio en disco
Debe de disponer espacio en disco en el disco del sistema operativo, como el base de datos. Cuanto, la cantidad de espacio que va a migrar debe de estar libre en ambos ambientes, y el mismo espacio para la ubicación donde creará el archivo comprimido o cmp. El espacio en el sistema operativo es necesario ya que crea archivos temporales para comprimir el contenido que creará.
Preparar el ambiente de pruebas
Para de planificación deberá contemplar un ambiente de pruebas. Estoy ayudará a anticipar con los problemas que se toparán en la migración. Como archivos con error, Elementos Web no encontrados, y permitirá tomar decisiones sobre soluciones alternas sin afectar la información que se encuentra en producción.
Bosquejo de la estructura de Sitios
Antes de realizar la migración haga un bosquejo de donde se ubicaran en el sitio destino el contenido de la fuente, esto es esencial cuando se escoge no retener los ID de los objetos y re-emparentar el contenido a importar.
Colaboración de los usuarios para verificar contenido
Esto es sumamente importante, esto en realidad dará el éxito al proyecto de migración o el rechazo total. Deberá coordinarse con los usuarios involucrados que representan cada porción del contenido, para poder validar efectivamente si el contenido paso satisfactoriamente. Asegúrese que tenga a los líderes o personas que manejan el contenido para no darse sorpresas futuras que sean irreversibles.
Archivos con extensión “cmp”
Algo que debe de saber sobre estos archivos comprimirán la información y creará varios archivos no mayor en promedio de 32 Mb.
El lenguaje del contenido
Deberá verificar que el lenguaje del producto con que se instaló SharePoint en ambos servidores origen y destino, sea el mismo. Ya que no se puede migrar contenido en un lenguaje distinto al servidor destino. Esta no es una limitación del API de Migración de SharePoint, sino de toda la plataforma de SharePoint en sí.
Pasos Generales
1) Exporte el contenido y verifique los errores y advertencias.
2) Impórtelo, revise la bitácora y verifique los errores y advertencias.
3) Revíselo navegando sobre los sitios importados y si encuentra errores vaya resolviéndolos uno a uno.
Lo que no incluye
- Los elementos web personalizados (debe de incluirlos manualmente usted antes de realizar la importación del contenido)
- Las características dependientes del contenido a exportar (debe de instalarlas y activarlas manualmente antes de realizar la importación del contenido)
- Las bitácoras, historial de los flujos de trabajo, y timer jobs. Si desea mas información vea la referencia al final del artículo.
Consejos prácticos y advertencias
Importación sin retención de los ID de los objetos
Cuando no retiene los Id de los objetos en la importación cuidado de no duplicar el contenido, esto le acarrea problemas. Para evitar esto revise el sitio antes de importar y luego si ya lo migro y desea volverlo a migrar, borre el contenido anterior.
Empiece de poco en poco.
Cuando es mucho el contenido, el proceso se convierte en largo y probablemente acarreará muchos problemas, para aislarlos, empiece luego de planificado la ubicación del contenido empiece con sub-sitios asilando los errores y encontrará que algunos no reportan ningún error, esto le dará mas confianza y paciencia para continuar con la tarea, que no es sencilla, ni rápida, en los casos cuando es un contenido extenso.
El Procedimiento
Introducción
El procedimiento ser realizará con la versión Release 1.1 , aunque ya esta en Beta la versión 2.0, lo que me gusta de la versión 1.1 es que podemos copiar el archivo SPDeploymentWizard.exe acompañado de su archivos de configuración (SPDeploymentWizard.exe.config) y listo no necesitamos instalar nada. Que es de agradecer que sea así en un servidor y mas aún en un ambiente Productivo.
Este ejecutable debe de correr en los servidores origen y destino en el momento que se realiza cada uno de los correspondientes procesos, Exportación e Importación.
La Exportación:
1) Bueno una vez copiado este asistente en el servidor destino ejecútelo y le mostrará una imagen parecida a la de abajo. Para continuar presione el botón [Next] (Es importante ejecutarlos con la cuenta de administrador de la colección de sitios de la aplicación web para que no tenga ningún limitación del contenido que desea leer para crear el comprimido de exportación).
2) Seleccione la opción Export y luego escriba la dirección URL del servidor donde esta instalada la aplicación Web que desea migrar el contenido. Ojo con el puerto puede no ser el 80 que como predeterminado no es necesario indicarlo. Para continuar presione el botón [Next], como se muestra en la imagen de abajo.
3) Le mostrará el contenido de la aplicación Web seleccionada del servidor de SharePoint origen. Navegue sobre el contenido seleccionado con clic derecho lo que desea exportar incluyendo o excluyendo descendientes. Para eliminar algún elemento seleccionado de la lista del contenido seleccionado, haga clic derecho sobre el elemento y seleccione la opción [Remove]. Para continuar presione el botón [Next].
4) Configuración de la exportación. Seleccione las opciones mas convenientes. Sugerencia: Excluya los objetos dependientes, no incluya la seguridad y escriba un nombre que le indique el contenido a exportar. Para continuar presione el botón [Next].
5) Presione el botón [Finish] y al finalizar el proceso de compresión y creación de los archivos. Presione el botón [Ok].
6) Le mostrará una bitácora del proceso realizado. Verifique si no tiene errores. Por los avisos de advertencia (o warnings) no se preocupe mucho, solo tome nota y revise cuando ya ha importado el contenido que creo en la exportación. Al final del archivo le mostrará el total de errores encontrados y de avisos de advertencia.
La Importación:
1) En el servidor destino, copie el ejecutable de la herramienta, SPDeploymentWizard.exe y su archivo de configuración SPDeploymentWizard.exe.config. Luego ejecútelo y le mostrará la página de bienvenida. Presione el botón [Next]
2) Seleccione la opción de Importación. En la casilla Site URL, escriba el nombre de la aplicación Web donde copiará el contenido (Si escribe http: le mostrará las aplicaciones Web que están instaladas en el servidor). En la casilla Import Web URL coloque la dirección absoluta o relativa donde esta ubicará el contenido a Importar (Mire la imagen y sigua los consejos que describo allí). Para continuar presione el botón [Next].
3) Configuración de la Importación. Si la exportación generó mas de un archivo seleccione la opción [From multiple files] y seleccione donde esta ubicado los archivos del contenido con el botón [Browse…], escriba el nombre base de los archivos comprimidos (normalmente es el nombre del archivo que no tiene un número al final). No seleccione la opción de retener el ID (Abajo la explicación). La opción importante a continuación es la casilla de selección multiple [User info update] Import All, esto actualizará el usuario que creo y modifico cada elemento así como la fecha y la hora. Presione el botón [Next] para continuar:
Retain objects IDs and locations:Si elige la retención de ID de los objetos necesitará crear en el sitio destino la misma estructura que tiene en el fuente, ya que no se puede re-emparentar con esta opción habilitada. Si desea mayor libertad como es el caso de ejemplo de esta publicación, deberá tener cuidado del contenido que importa ya que puede duplicar el contenido.
4) Presione el botón [Finish]. Dependiendo del volumen del contenido así se demorará. Cuando finaliza el proceso le mostrará el mensaje que aparece abajo. Presione el botón [Ok].
5) Le mostrará una bitácora del proceso realizado. Verifique si no tiene errores. Por los avisos de advertencia (o warnings) no se preocupe mucho, solo tome nota y revise el contenido importado. Al final del archivo le mostrará el total de errores encontrados y de avisos de advertencia.
Eso es todo, espero haya terminado con éxito el proceso. Lea las recomendaciones y demás referencias para estar seguro de lo que esta haciendo.
Mensaje de Advertencia en al Exportación
Si le muestra el siguiente mensaje al final del archivo de bitácora:
[5/5/2009 6:43:25 PM]: Completed with 10 warnings.
[5/5/2009 6:43:25 PM]: Completed with 0 errors.
Y la advertencia es la siguiente:
[5/5/2009 6:38:11 PM]: Warning: A Web Part or Web Form Control type could not be found, or is not registered as safe. The Web Part will still be exported.
No se preocupe mucho, lo que le esta indicando es que no fue registrado el elemento web como seguro en el archivo de configuración, pero que de todos modos lo incluirá en el archivo de exportación.
Mensaje de Error en la Importación
Si le da el siguiente error:
[5/6/2009 8:57:22 AM]: Error: Failure writing to target file
Muy probablemente no tiene disponible espacio en disco en el sistema operativo donde el API de SharePoint crea los archivos temporales para comprimir el contenido. Puede cambiar la ubicación predeterminada de los archivos temporales aunque no lo recomiendo ya que no solo afecta la migración sino cualquier proceso del sistema operativo. Además debe de reiniciar el Servidor para que estos cambios tengan efecto. Si esta interesado este es el enlace: http://blogs.technet.com/stefan_gossner/archive/2008/04/11/deep-dive-into-the-sharepoint-content-deployment-and-migration-api-part-6.aspx
Referencia recomendada: Esto ayudará a comprender cada una de las opciones seleccionadas y lo que sucede detrás bastidores.
Hasta la próxima y buena suerte, que la va a necesitar!, recuerde empiece de poco en poco…
Manolo Herrera