Una posible solución (que no la única) a este problema es utilizar las extensiones de Gary Lapointe (MVP - Most Valuable Professional en SharePoint). Pero ¿Qué son las extensiones de Gary Lapointe? Las extensiones de Gary Lapoint son una solución de MOSS, que una vez instalada (o desplegada, también podríamos decir) en nuestra Granja MOSS, incluye nuevas operaciones del comando STSADM (de hecho, añade un montón de nuevas operaciones que empiezan por gl-). Para el caso particular de importar y exportar Listas de SharePoint (MOSS), nos van a interesar las operaciones gl-exportlist, gl-importlist, gl-copylist, y quizás gl-getlistschemaxml. Las operaciones gl-exportlist, gl-importlist y gl-copylist utilizan internamente la API de Content Deployment.
También es importante advertir, que la utilización de las extensiones de Gary Lapointe debe realizarse bajo la cuenta y riesgo de cada uno. Esto puede causar rechazo en su utilización, al tratarse de un método no soportado, pero también es importante ser consciente de que las extensiones de Gary Lapointe son ampliamente utilizadas en Granjas MOSS por todo el mundo. Véase el caso de Systernals, finalmente adquirido por Microsoft.
Es importante comentar que como ventaja de utilizar las extensiones de Gary Lapointe para exportar e importar listas de MOSS, existe la posibilidad de mantener los identificadores de objetos, algo que NO es posible con STSADM -o export y STSADM -o import (en todo caso, podríamos con gl-import2, que también es parte de las extensiones de Gary Lapointe, y siempre teniendo en cuenta las limitaciones propias de gl-import2).
Del mismo modo, es importante tener en cuenta al utilizar gl-exportlist/gl-importlist/gl-copylist, que una lista o librería de documentos sólo podrá ser importada con el mismo nombre, ya sea en el mismo Sitio (Web Site) de origen, o en un Sitio (Web Site) diferente. Es decir, la lista /DocumentosProyecto la podremos importar en el Sitio (Web Site) que queramos, pero siempre como /DocumentosProyecto, y jamás bajo otro nombre.
Otro detalle a tener en cuenta al trabajar con gl-exportlist/gl-importlist/gl-copylist, es que sólo funcionan con una Lista o Librería de Documentos completa, es decir, si deseamos exportar e importar sólo una carpeta de una Lista o Librería de Documentos, no podremos hacerlo con gl-exportlist/gl-importlist/gl-copylist. Para esto, existen otros comandos dentro de las extensiones de Gary Lapointe, de tal modo que para conseguir este objetivo deberíamos utilizar gl-exportlistfolder y gl-importlistfolder (comando muy similares a gl-exportlist y gl-importlist).
¿Cómo instalar las extensiones de Gary Lapointe?
Pues muy fácil. Deberemos descargar primero el fichero WSP correspondiente a las extensiones de Gary Lapointe, algo que podemos hacer desde la página de descarga del Blog de Gary Lapointe. Yo me descargué el MOSS Only STSADM Extensions (x86, x64), en la sección STSADM Extension WSP Files. Después copiaremos el fichero WSP de las extensiones de Gary Lapointe a uno de los frontales (por ejemplo, al directorio C:\Temp), para seguidamente, instalar las extensiones de Gary Lapoint utilizando el comando STSADM. A continuación se muestra un ejemplo de los tres comandos STSADM ejecutados (addsolution para copiar la solución al almacén de soluciones de MOSS, y deploysolution y execadmsvcjobs para implementar/desplegar la solución de inmediato) para instalar las extensiones de Gary Lapointe, incluyendo la salida producida por la ejecución de los mismos (en mi caso, una Granja MOSS 2007 SP1).
C:\temp>stsadm -o addsolution -filename Lapointe.SharePoint.STSADM.Commands.wsp
Operation completed successfully.
C:\temp>stsadm -o deploysolution -name Lapointe.SharePoint.STSADM.Commands.wsp -immediate -allowgacdeployment
Timer job successfully created.
C:\temp>stsadm -o execadmsvcjobs
Executing . Operation completed successfully.
|
Si deseamos comprobar con la Consola de Administración Central de MOSS, si las extensiones de Gary Lapointe están instaladas en nuestra Granja MOSS, es suficiente con seleccionar la pestaña Operaciones (Operations), y seguidamente click en la opción Administración de soluciones (Solution management) de la sección Configuración Global (Global Configuration). Así, en la página Administración de soluciones (Solution management), deberemos poder comprobar si la solución lapointe.sharepoint.stsadm.commands.wsp existe y está implementada.
STSADM -o gl-exportlist
Este comando es muy similar al comando STSADM -o export, con la particularidad de que deberemos especificar la URL de la librería de documentos o lista que deseemos exportar. A continuación se muestra la salida de STSADM -help gl-exportlist, con un resumen de todos los parámetros de gl-exportlist.
stsadm -o gl-exportlist
Exports a list.
Parameters: -url <list view url> -filename <export file name> [-overwrite] [-includeusersecurity] [-haltonwarning] [-haltonfatalerror] [-nologfile] [-versions <1-4> 1 - Last major version for files and list items 2 - The current version, either the last major or the last minor 3 - Last major and last minor version for files and list items 4 - All versions for files and list items (default)] [-cabsize <integer from 1-1024 megabytes> (default: 25)] [-nofilecompression] [-includedescendants <All | Content | None>] [-excludedependencies (Specifies whether to exclude dependencies from the export package when exporting objects of type SPFile or SPListItem)] [-quiet]
Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
Es importante especificar correctamente la URL, en particular, la parte correspondiente a la Aplicación Web. Por ejemplo, para mi Aplicación Web http://moss.guillesql.local, es necesario utilizar dicha URL (o algún otro Acceso Alternativo valido) al especificar la URL de la Librería de Documentos o Lista a exportar con STSADM -o gl-exportlist. Si en vez de utilizar la URL de la Aplicación Web, se utiliza otra URL que tampoco esté definida como Acceso Alternativo (ej: http://vmoss01mob.guillesql.local) se obtendrá el siguiente error:
The Web application at http://vmoss01mob.guillesql.local/Documentos%20Versionados/Forms/AllItems.html could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.
A continuación se muestra un ejemplo de utilización de STSADM -o gl-exportlist, que realizará una exportación de la lista sin compresión (creará un directorio z:\temp\exportlist que almacenará todos los ficheros generados durante la exportación de la lista, incluyendo todas las versiones y la seguridad):
stsadm -o gl-exportlist -url "http://moss.guillesql.local/Documents/Forms/AllItems.html" -filename "z:\temp\exportlist" -includeusersecurity -versions 4 -nofilecompression
Un parámetro que puede resultar de gran utilidad es el parámetro -nofilecompression para decirle a STSADM que genere los ficheros de la exportación en un directorio y ya está. En este caso, los ficheros de la exportación se generan directamente sobre la ubicación de destino deseada (en vez de sobre un directorio temporal previo a la compresión), ahorrando tiempo de exportación (es decir, la exportación será más rápida al no ser necesario realizar la compresión, liberando recursos de disco y de CPU).
STSADM -o gl-importlist
Este comando es muy similar al comando STSADM -o import. Sin embargo, gl-importlist nos va a permitir importar sólo una lista o librería de documentos, exportada previamente con STSADM -o gl-exportlist.
Un detalle muy importante al utilizar gl-importlist, es que deberemos especificar el Sitio (Web Site) de destino empleando el parámetro -url, es decir, gl-importlist nos va a permitir importar una lista sobre el Sitio (Web Site) deseado con el mismo nombre, pero NO nos va a permitir importar sobre una lista con nombre diferente, ni en el mismo Sitio (Web Site) ni sobre un Sitio (Web Site) distinto al de origen.
A continuación se muestra la salida de STSADM -help gl-importlist, con un resumen de todos los parámetros de gl-importlist.
stsadm -o gl-importlist
Imports a list.
Parameters: -url <url of a web site to import to> -filename <import file name> [-includeusersecurity] [-haltonwarning] [-haltonfatalerror] [-nologfile] [-updateversions <1-3> 1 - Add new versions to the current file (default) 2 - Overwrite the file and all its versions (delete then insert) 3 - Ignore the file if it exists on the destination] [-nofilecompression] [-quiet] [-retargetlinks (resets links pointing to the source to now point to the target)] [-sourceurl <url to a view of the original list> (use if retargetlinks)] [-retainobjectidentity] [-suppressafterevents (disable the firing of "After" events when creating or modifying list items)] [-copysecuritysettings (must provide sourceurl and includeusersecurity)] Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
A continuación se muestra un ejemplo de utilización de STSADM -o gl-importlist, que realizará una importación de una lista sin compresión (desde un directorio z:\temp\exportlist que almacenará todos los ficheros generados durante la exportación de la lista original) sobre un Sitio (Web Site) creado como Sitio de Restauración:
stsadm -o gl-importlist -url "http://moss.guillesql.local/RestoreSite" -filename "z:\temp\exportlist" -includeusersecurity -updateversions 2 -nofilecompression -retargetlinks -sourceurl "http://moss.guillesql.local/Documents/Forms/AllItems.html"
Un parámetro muy útil en importaciones con gl-importlist, es el parámetro -retainobjectidentity, que permite mantener los identificadores de objeto originales.
STSADM -o gl-copylist
El comando gl-copylist no aporta gran cosa, pues realmente se limita a realizar un gl-exportlist seguido de un gl-importlist, pero empleando un único comando: gl-copylist. Por lo tanto, no va aportar grandes funcionalidades que no sean ya aportadas por los comandos gl-exportlist o gl-importlist.
A continuación se muestra la salida de STSADM -help gl-copylist, con un resumen de todos los parámetros de gl-copylist.
stsadm -o gl-copylist
Copies a list to a new web.
Parameters: -sourceurl <list view url to copy> -targeturl <url of a web site to copy to> [-includeusersecurity] [-haltonwarning] [-haltonfatalerror] [-nologfile] [-versions <1-4> 1 - Last major version for files and list items 2 - The current version, either the last major or the last minor 3 - Last major and last minor version for files and list items 4 - All versions for files and list items (default)] [-updateversions <1-3> 1 - Add new versions to the current file (default) 2 - Overwrite the file and all its versions (delete then insert) 3 - Ignore the file if it exists on the destination] [-quiet] [-retargetlinks (resets links pointing to the source to now point to the target)] [-deletesource] [-temppath <temporary folder path for storing of export files>] [-includedescendants <All | Content | None>] [-excludedependencies (Specifies whether to exclude dependencies from the export package when exporting objects of type SPFile or SPListItem)] [-nofilecompression] [-suppressafterevents (disable the firing of "After" events when creating or modifying list items)]
Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
A continuación se muestra un ejemplo de utilización de STSADM -o gl-copylist, que realizará una exportación e importación de una lista sobre un Sitio (Web Site) creado como Sitio de Restauración:
stsadm -o gl-copylist -sourceurl "http://moss.guillesql.local/Documents/Forms/AllItems.html" -targeturl "http://moss.guillesql.local/RestoreSite" -includeusersecurity -updateversions 2 -versions 4 -retargetlinks
Un parámetro que puede resultar útil al utilizar gl-copylist, es el parámetro -deletesource, que permite eliminar la lista origen una vez importada en el destino, consiguiendo un comportamiento similar a un hipotético gl-movelist.
STSADM -o gl-getlistschemaxml
Para acabar, queda comentar el comando gl-getlistschemaxml, que si bien no nos va a servir para exportar e importar listas, nos puede ayudar en la depuración de errores. Su cometido, es devolvernos un XML a modo de resumen de configuración de la lista especificada, con el objetivo de poder analizar dicho XML, poder compararlo y utilizarlo de línea base, etc.
A continuación se muestra la salida de STSADM -help gl-getlistschemaxml, con un resumen de todos los parámetros de gl-getlistschemaxml.
stsadm -o gl-getlistschemaxml
Returns the XML schema for a list.
Parameters: -url <list view url>
Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
A continuación se muestra un ejemplo de utilización de STSADM -o gl-getlistschemaxml:
stsadm -o gl-getlistschemaxml -url "http://moss.guillesql.local/Documents/Forms/AllItems.html" > fichero.xml
Exportar e Importar carpetas MOSS con gl-exportlistfolder y gl-importlistfolder
Para finalizar, vamos a comentar otros dos comandos STSADM de las extensiones de Gary Lapointe de gran utilidad, que nos van a permitir exportar e importar carpetas de MOSS, con lo que podremos por fin copiar y mover carpetas MOSS.
A continuación se muestra la salida de STSADM -help gl-exportlistfolder, con un resumen de todos los parámetros de gl-exportlistfolder.
stsadm -o gl-exportlistfolder
Exports a list.
Parameters: -url <folder url> -filename <export file name> [-overwrite] [-includeusersecurity] [-haltonwarning] [-haltonfatalerror] [-nologfile] [-versions <1-4> 1 - Last major version for files and list items 2 - The current version, either the last major or the last minor 3 - Last major and last minor version for files and list items 4 - All versions for files and list items (default)] [-cabsize <integer from 1-1024 megabytes> (default: 25)] [-nofilecompression] [-includedescendants <All | Content | None>] [-excludedependencies (Specifies whether to exclude dependencies from the export package when exporting objects of type SPFile or SPListItem)] [-quiet]
Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
A continuación se muestra la salida de STSADM -help gl-importlistfolder, con un resumen de todos los parámetros de gl-importlistfolder.
stsadm -o gl-importlistfolder
Imports a list item or items.
Parameters: -url <url of list folder to import to> -filename <import file name> [-includeusersecurity] [-haltonwarning] [-haltonfatalerror] [-nologfile] [-updateversions <1-3> 1 - Add new versions to the current file (default) 2 - Overwrite the file and all its versions (delete then insert) 3 - Ignore the file if it exists on the destination] [-nofilecompression] [-quiet] [-retargetlinks (resets links pointing to the source to now point to the target)] [-sourceurl <url to original source folder> (use if retargetlinks)] [-suppressafterevents (disable the firing of "After" events when creating or modifying list items)] [-retainobjectidentity]
Copyright 2008 Gary Lapointe > For more information on this command and others: > http://stsadm.blogspot.com/ > Use of this command is at your own risk. > Gary Lapointe assumes no liability.
|
A continuación se incluye un ejemplo de gl-exportlistfolder y gl-importlistfolder, en el cual se exporta la carpeta /MisDocumentos/MiCarpeta, que seguidamente se importará en /MisDocumentos/RestoreFolder/MiCarpeta.
stsadm -o gl-exportlistfolder -url http://moss.guillesql.local/MisDocumentos/MiCarpeta -filename c:\temp\folder -includedescendants all
stsadm -o gl-importlistfolder -url http://moss.guillesql.local/MisDocumentos/RestoreFolder -filename c:\temp\folder.cmp