Mostrando las entradas con la etiqueta Migracion hacia SharePoint 2013. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Migracion hacia SharePoint 2013. Mostrar todas las entradas

miércoles, 9 de diciembre de 2015

Como descargar una solución de granja instalada en SharePoint 2010 y 2013

Cómo descargar una solución de granja instalada es un requerimiento muy usual cuando se esta migrando versiones de SharePoint, por ejemplo de 2010 a 2013.  O bien migrando de un conjunto de servidores a otros por temas de problemas con el existente.

image

Bueno antes de resolver el tema hablemos un poco de las soluciones de granja.  Estas son empacadas en paquetes con extensión WSP, aunque no son las únicas ya que las soluciones Sandbox, las plantillas de sitio y las famosas apps utilizan este formato de paquete para que puedan ser ejecutados desde SharePoint.  Estos paquetes no son mas que empacados que contiene un conjunto de documentos y archivos binarios que componen la solución de granja o Farm Solution.

Es esto posible si por medio de PowerShell podemos realizar esta tarea que en versiones 2007 era impensable.

$FolderPath = "c:\Solutions"

foreach ($solution in Get-SPSolution) 

    $id = $Solution.SolutionID 

    $title = $Solution.Name 

    $filename = $Solution.SolutionFile.Name 

    $solution.SolutionFile.SaveAs("$FolderPath\$filename") 

}

 

Si se migra el paquete de 2010 a 2013 y este no tiene depedencias que hayan variado en la versión 2013, puede intentar el siguiente comando luego de extraer el paquete wsp de la granja SharePoint 2010.

Install-SPSolution –Identity Solution.wsp –GACDeployment –CompatibilityLevel All e intenar ejecutar el sitio en modo 2010.

https://technet.microsoft.com/en-us/library/dn673579.aspx

lunes, 29 de septiembre de 2014

Script para comparar contenido entre versiones de SharePoint

Para este articulo presentaré un procedimiento y scripts para leer el contenido de SharePoint Server 2007 a nivel de Transac-SQL ya que no contamos con PowerShell para esta versión de forma predeterminada (es posible instarlo, pero en ciertos ambientes por las restricciones dentro de la organización es una complicación).  Y para SharePoint Server 2013 utilizaremos PowerShell . 

La idea es generar un archivo CSV desde SQL Server desde el Management Studio para que basado en este archivo podamos de lado de SharePoint Server 2007 vía PowerShell leer el documento e ir validando por medio del modelo de objetos de SharePoint a nivel de PowerShell si existe dicho contenido y si el contenido es el más reciente.

Select
   Top W.FullUrl, W.Title, L.tp_Title as ListTitle, A.tp_DirName, A.tp_LeafName, A.tp_id , DS.Content , DS.Size, D.DocLibRowID, D.TimeCreated, D.Size, D.MetaInfoTimeLastModified, D.ExtensionForFile
From
   your_content_database.dbo.AllLists L With (NoLock) join
   your_content_database.dbo.AllUserData A With (NoLock)
      On L.tp_ID=tp_ListId join
   your_content_database.dbo.AllDocs D With (NoLock)
      On A.tp_ListID=D.ListID
      And A.tp_SiteID=D.SiteID
      And A.tp_DirName=D.DirName
      And A.tp_LeafName=D.LeafName join
   your_content_database.dbo.AllDocStreams DS With (NoLock)
      On DS.SiteID=A.tp_SiteID
      And DS.ParentID=D.ParentID
      And DS.ID=D.ID join
    your_content_database.dbo.Webs W With (NoLock)
      On W.ID=D.WebID
      And W.ID=L.Tp_WebID
      And W.SiteID=A.tp_SiteID
Where
   DS.DeleteTransactionID=0
   And D.DeleteTransactionID=0
   And D.IsCurrentVersion=1
   And A.tp_DeleteTransactionID=0
   And A.tp_IsCurrentVersion=1
   And D.HasStream=1
   And L.tp_DeleteTransactionId=0
   And ExtensionForFile not in ('webpart','dwp','aspx','xsn','master','rules','xoml')
   And D.MetaInfoTimeLastModified>DateAdd(d,-1,GetDate())
Order by DS.Size desc

Referencia donde lo saque:

http://stackoverflow.com/questions/213801/sharepoint-2007-sql-query-to-find-a-list-of-documents-in-site-collection

El formato a generar el archivo csv elegí que fuera el siguiente:

url,list,document,fullurl,created,modified

Entonces la versión original de arriba la modificamos de la siguiente forma:

 

Select
   Top W.FullUrl, L.tp_Title as ListTitle, A.tp_LeafName, A.tp_DirName, D.TimeCreated,D.MetaInfoTimeLastModified
From
   your_content_database.dbo.AllLists L With (NoLock) join
   your_content_database.dbo.AllUserData A With (NoLock)
      On L.tp_ID=tp_ListId join
   your_content_database.dbo.AllDocs D With (NoLock)
      On A.tp_ListID=D.ListID
      And A.tp_SiteID=D.SiteID
      And A.tp_DirName=D.DirName
      And A.tp_LeafName=D.LeafName join
   your_content_database.dbo.AllDocStreams DS With (NoLock)
      On DS.SiteID=A.tp_SiteID
      And DS.ParentID=D.ParentID
      And DS.ID=D.ID join
    your_content_database.dbo.Webs W With (NoLock)
      On W.ID=D.WebID
      And W.ID=L.Tp_WebID
      And W.SiteID=A.tp_SiteID
Where
   DS.DeleteTransactionID=0
   And D.DeleteTransactionID=0
   And D.IsCurrentVersion=1
   And A.tp_DeleteTransactionID=0
   And A.tp_IsCurrentVersion=1
   And D.HasStream=1
   And L.tp_DeleteTransactionId=0
   And ExtensionForFile not in ('webpart','dwp','aspx','xsn','master','rules','xoml')
   And D.MetaInfoTimeLastModified>DateAdd(d,-1,GetDate())
Order by DS.Size desc

El Script de mi autoría para SharePoint 2013 es el siguiente:

$filename = "ModificadoApartirDel20Sep2014_RRHH"
$importedFile = "E:\migracion\Cambios\"+$filename+".csv"
$contents = Import-Csv -LiteralPath $importedFile    
$outfile = "e:\migracion\Cambios\"+$filename+"_log.csv"
$linea = "Estado,url,Creado Origen,Creado Destino,Modificado Origen,Modificado Destino"
add-content $outfile $linea

foreach ($row in $contents) {
    #write-host $row.url $row.list $row.document
    #write-host  $row.document $row.created $row.modified
    # Web URL
    $hostname = https://hostname/
    $urlWeb = $hostname + $row.url
        $web = Get-SPWeb -Identity $urlweb
    # SPList name
    $listname = $row.list
    $list = $web.Lists[$listname]
        $items = $list.Items
    $encontrado = $false
    #foreach($field in $list.fields)
    #{
    #    write-host "Field: " $field.Title
    #}
    $linea = ""   
    foreach($item in $items){
        if($item.Name -eq $row.document)
        {
            if($item["Created"] -gt $row.created -or $item["Modified"] -gt $row.modified){
            $encontrado = $true
            $linea = "Sin Actualizar," +$hostname +$row.fullurl+ "/" +$item.Name+","+$rowcreado+","+$itemcreado+","+$rowmodificado+","+$itemmodificado 
            add-content $outfile $linea   
           
            }else {
            $linea =  "Actualizado," +$hostname +$row.fullurl+ "/"+ $item.Name+","+$rowcreado+","+$itemcreado+","+$rowmodificado+","+$itemmodificado
            add-content $outfile $linea
            }
            break
        }
    }
    if ($encontrado){
        $linea = "No Encontrado,"+$hostname + $row.fullurl+ "/" +$row.document+","+$rowcreado+","+$itemcreado+","+$rowmodificado+","+$itemmodificado
        add-content $outfile $linea
    }
}

 

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

martes, 23 de septiembre de 2014

Tip del día: Script para colocar las bases de datos de SharePoint read only

Esto es útil cuando se esta migrando para garantizar que el ultimo cambio permitido esta en el respaldo de la base de datos antes de migrarlo.

Esto se hace a nivel de comando T-SQL de SQL Server y lo que hace SharePoint es que deshabilita las opciones en los menús para editar documentos e inclusive para ingresar a los “Settings” de SharePoint.   Aunque se le puede entrar a nivel de URL de la siguiente forma: http://hostname/_layouts/settings.aspx.

ALTER DATABASE [WSS_CONTENT_????] SET READ_WRITE WITH ROLLBACK IMMEDIATE

Donde [WSS_CONTENT_????] es el nombre de la base de datos de contenido a colocar de modo solo lectura.

WITH ROLLBACK IMMEDIATE bota todas las conexiones hacia la base de datos y ejecuta la modificación a la base de datos a modo lectura, que es lo que deseamos que suceda.

Para devolver la base de datos de contenido de SharePoint a su estado normal es el siguiente comando:

ALTER DATABASE [WSS_CONTENT_????] SET READ_WRITE WITH NO_WAIT

Y eso es todo gracias a PINAL DAVE por su contribución en la nube. Ref: http://blog.sqlauthority.com/2011/04/16/sql-server-making-database-to-read-only-changing-database-to-readwrite/

Así que amigos cuando necesitemos asegurarnos que nadie pero nadie puede modificar el contenido de la base de datos en modo de solo lectura.

SharePoint4Fun,

Juan Manuel Herrera Ocheita

viernes, 21 de marzo de 2014

Migración de base de datos de contenido adjunta desde SharePoint 2003 hasta 2013

Increíble pero cierto, empresas están migrando sus instancias de SharePoint casi olvidadas de SharePoint 2003 a SharePoint 2013.

La buena noticia es que podemos utilizar el mismo método de migración de base de datos para todas las versiones de SharePoint.

image

Un dato importante sobre las versiones de SharePoint a lo largo del tiempo es la siguiente tabla reconociendo los nombres que muestran la evolución de las versiones de SharePoint “relevantes” es decir desde 2003 hasta la versión 2013 que es cuando escribí este artículo.

Descripción  de la versión 2003 2007 2010 2013
Versión base que solo incluye el servicio  o gratuita SharePoint Services 2.0 SharePoint Services 3.0 SharePoint Foundation 2010 SharePoint Foundation 2013
Versión de Servidor o Empresarial Portal Server 2003 SharePoint Office Server 2007 alias utilizado fue MOSS SharePoint Server 2010 SharePoint Server 2013

Para prepararse para la migración es necesario ejecutar herramientas o comandos en cada una de las versiones de SharePoint.  A continuación el detalle:

Descripción  de la versión SharePoint 2003 SharePoint 2007 SharePoint 2010 SharePoint 2013
Herramienta evaluación pre-migración Pre Scan Tool stsadm.exe -o preupgradecheck test-SPMountContentdatabase  test-SPMountContentdatabase 
Observaciones sobre la herramienta Es obligatoria y debe de descargarse en:
http://www.microsoft.com/en-us/download/details.aspx?id=22806
Es necesario instalar el Service Pack 2.0 y recomendado el Service Pack 3.0 Comando de PowerShell que esta incluido en todas las versiones y ediciones de SharePoint 2010 Comando de PowerShell que esta incluido en todas las versiones y ediciones de SharePoint 2013

Para ejecutar la migración de las base de datos de contenido es necesario ejecutar el comando que monta las bases de datos y las migra a la vez.   A continuación el detalle:

Descripción  de la versión SharePoint 2003 SharePoint 2007 SharePoint 2010 SharePoint 2013
Comando de migración N/A stsadm -o addcontentdb mount-SPContentdatabase  mount-SPContentdatabase 
Observaciones sobre la herramienta N/A No muestra porcentaje de avance sino un comentario al final de la migración no hay como saber que avance tiene sino hasta el final Muestra el % de Avance en la ventana del comando u puede consultar la siguiente página: http://hostname:port/_admin/UpgradeStatus.aspx Muestra el % de Avance en la ventana del comando u puede consultar la siguiente página: http://hostname:port/_admin/UpgradeStatus.aspx
Ejemplo de línea de comando N/A stsadm -o addcontentdb -url [htpt://SharePoint2007Server] -databasename [WSS_Content_???] mount-SPContentdatabase -WebApplication [http://SharePoint2010Server] -Name [Wss_Content_???] mount-SPContentdatabase -WebApplication [http://SharePoint2013Server] -Name [Wss_Content_???]

El orden para montar las bases de datos de contenido es primero la primaria y luego en cualquier orden el resto, esto aplica para cada aplicación Web de SharePoint que debe de ser creada antes de poder ser montada.  También es necesario desmontar la base de datos que crea de forma predeterminada para que pueda montarse la que se esta migrando.

A continuación como se actualiza la interfaz visual en cada versión luego de montar la base de datos de contenido.

Tema SharePoint 2003 SharePoint 2007 SharePoint 2010 SharePoint 2013
Visual Upgrade N/A Manualmente Aplica la master Page de la versión 2007 Puedes hacerlo por medio de la interfaz Web de cada colección de sitios o bien por línea de comando Puedes hacerlo por medio de la interfaz Web de cada colección de sitios o bien por línea de comando
Interfaz de Usuario N/A

N/A

Puedes mejorar visualmente su aplicación web emigrado siguiendo estos pasos:

Abra la aplicación web migrado en su navegador.
Haga clic en Acciones del sitio a la derecha.
Haga clic en la actualización visual.
Para actualizar una colección de sitios
Compruebe que la cuenta de usuario que realiza este procedimiento es un administrador de colección de sitios.
En la página Configuración del sitio de la colección de sitios , en la sección Administración de la colección de sitios , haga clic en Sitio actualización colección.
En la página de la colección de sitios de actualización , haga clic en Actualizar esta colección de sitios .
Esta opción inicia el proceso de actualización de la colección de sitios . Una caja se abre para confirmar que desea para iniciar el proceso .
Haga clic Estoy listo para comenzar la actualización real .
gif
Los controles de salud de colecciones de sitios se ejecutan automáticamente en modo de reparación antes de que comience la actualización. Los resultados de los exámenes de salud se incluyen en el registro de la actualización de la colección de sitios . Si hay un error , se debe abordar antes de poder continuar con la actualización .
La actualización se inicia y aparece la página de estado de actualización para la colección de sitios . Esta página se actualiza automáticamente mientras la actualización está en curso y muestra información sobre el proceso, tales como los siguientes :
Los errores o advertencias
Cuando comenzó la actualización
¿Dónde se puede encontrar el archivo de registro de actualización
Después de la actualización, la página de estado de actualización se muestra en la nueva interfaz de usuario con el mensaje , Asciende Concluye con éxito .
Haga clic Veamos el nuevo sitio para ir a la página de inicio.
Línea de comando N/A

N/A

$webapp = Get-SPWebApplication <web-app-URL>
foreach ($site in $webapp.sites)
{
   $site.VisualUpgradeWebs()
}
Upgrade-SPSite http://server/sitecollection –VersionUpgrade

Otros aspectos a tomar en cuenta en la migración son los siguientes:

1) Instalación de cada una de las versiones en un ambiente virtual o físico de naturaleza temporal.  Es necesario para migrar de SharePoint 2003 a 2013 tener instalado de forma mínima el SharePoint 2007, 2010. Y en SharePoint 2013 la configuración final similar a la inicial para el proceso de migración.

2) Servicios: Es necesario migrar los servicios de primero entre ellos Perfiles de Usuario, la base de datos de contenido de los sitios personales de cada usuario (si aplica).  El servicio de búsqueda no se migra es preferible crearlo de nuevo. 

3) Personalizaciones:  Si se tiene personalizaciones instaladas deberá evaluar su factibilidad de migración a las versiones posteriores.  Plantillas de Sitios, Elementos Web, Páginas, flujos de trabajo.  En algunos casos tendrá que contemplarse crear de nuevo la funcionalidad en la versión final destino, como los flujos de trabajo.

4) Modo de Autenticación:  El modo de autenticación predeterminado y válido de SharePoint 2013 es Claims Authenticación y el de las versiones de SharePoint anteriores es Modo Clásico por lo que es necesario convertir le modo Clásico a Claims.  Para ello ver la siguiente referencia: http://technet.microsoft.com/en-us/library/gg251985(v=office.15).aspx

Bueno amigo, espero que esta guía aclare mejor el camino de migración.  Le sugiero vea los artículos anteriores que he escrito sobre la migración para que pueda completar los detalles de la migración que no expuse en este artículo.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

miércoles, 5 de febrero de 2014

Depurando base de datos de contenido para migrar a SharePoint

Esto es aplicable a casi todas las versiones de SharePoint (2007,2010,2013) utilizando el método de migración “Attached Content Database”.  Es importante mencionar que no migrar con las herramientas y procesos definidos por Microsoft de 2007 a 2013, es necesario pasar de 2007 a 2010 y luego de 2010 a 2013, por lo que si es su caso es necesario que tome en cuenta que debe de provisionar un servidor intermedio donde instale la granja de 2010 que incluye SQL Server y SharePoint 2010 en la edición de SharePoint del origen.  Es decir si esta migrando la Edición Standard la granja intermedia debe de ser Standard, la destino (SP 2013) puede ser igual o mayor es decir Standard o Enterprise pero no menor.

Normalmente pensamos que migrar el contenido es simplemente el ejecutar algunos comandos y asistentes y no debemos de preocuparnos por lo que estamos migrando y este pensamiento esta lejos de ser la realidad cuando nos enfrentamos a migrar contenido.

Uno de los problemas que encontramos con el contenido es que esta atado a personalizaciones o customization  (plantillas, elementos web, ensamblados, paginas)que ya no están disponibles en las versiones siguientes de SharePoint.

Una de las decisiones que tenemos que tomar con las personalizaciones que no pueden ser actualizadas es si vamos a continuar con ellas o bien vamos a depurarlas.  Especialmente cuando solo se crearon para pruebas de concepto o es un contenido que no estamos utilizando.

Si la decisión es depurar el contenido asociado debemos de tomar las siguientes consideraciones:

1) Cómo saber qué contenido esta asociado a estas personalizaciones?

Para ello es necesario realizar el siguiente procedimiento:

1) Realizar una copia de respaldo en SQL server de la base de datos de contenido (wss_content_???)

2) Restaurar la copia de respaldo en el servidor o instancia de SQL Server del SharePoint a migrar

3) En el front-end del SharePoint a migrar (ej SP 2013) ejecutar el PowerShell para SharePoint el siguiente comando:

test-SPContentDatabase –Name [nombre de base de datos de contenido] –WebApplication [url de la aplicación Web a migrar]

Supuestos Claves para ejecutar este comando:

1) Disponer de la instalación de la granja de SharePoint de la versión a migrar.  Por ejemplo si deseamos migrar de SharePoint 2010 a 2013, necesitamos tener lista la granja de SharePoint 2013.

2) En la granja SharePoint 2013 crear una Aplicación Web donde la base de datos de contenido se migrara.  Para ello ejecutar la siguiente línea de comando:

New-SPWebApplication -Name "Nombre de la aplicación Web" -Port 80 -URL https://hostname -ApplicationPool "Nombre del grupo de aplicaciones o Application Pool" -ApplicationPoolAccount (Get-SPManagedAccount "DOMAIN\accountname")

NOTA: Esta forma de crear la aplicación web sin indicar el proveedor de autenticación nos permitirá crear de modo de autenticación clásica que es el encontrado en la mayoría de instalaciones de SharePoint en versiones anteriores.

El reporte que muestra el comando Test-SPContentDatabase es similar al siguiente:

 

Category        : MissingSetupFile
Error           : True
UpgradeBlocking : False
Message         : File [SiteTemplates\PWA\dwp\OWCViewPart.webpart] is reference
                  d [1] times in the database [wss_content], but is not install
                  ed on the current farm. Please install any feature/solution w
                  hich contains this file.
Remedy          : One or more setup files are referenced in the database [wss_c
                  ontent], but are not installed on the current farm. Please in
                  stall any feature or solution which contains these files.

Category        : MissingSetupFile
Error           : True
UpgradeBlocking : False
Message         : File [SiteTemplates\PWA\OWCView.aspx] is referenced [1] times
                   in the database [wss_content], but is not installed on the c
                  urrent farm. Please install any feature/solution which contai
                  ns this file.
Remedy          : One or more setup files are referenced in the database [wss_c
                  ontent], but are not installed on the current farm. Please in
                  stall any feature or solution which contains these files.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [2a95bc7f-1b64-5b9c-a95e-7cefb40e285f] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [b255b401-608d-1234-e356-5094dd5939d9] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [94b5bae7-436c-dcc2-5869-d491181c283b] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [f03d4046-dd6f-42af-0763-6b694862139e] is refer
                  enced [2] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [df924004-d5d2-093e-9169-631764a71371] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [c518b765-02fe-771b-f4a9-eecb5931a900] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [02c190cb-f53b-1e26-83bc-70e3ffcb82ee] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [1edd0724-1ed3-ea30-be9b-783273bf3865] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [af35b6c5-265f-0ace-4a83-a70d245d68c8] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [a700a8e9-1c1d-79a4-6d09-65eb3e18eb9c] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [5958946a-4253-2961-26db-bb792c2d6d39] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [2bcf2517-38c7-3d4a-2c51-80d3a874e9b9] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [3fd0eb94-f155-f577-5443-98e094b69713] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [7a96438e-3332-7df0-0799-21f23a241ed0] is refer
                  enced [2] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [4ab44f9a-fa88-e31b-f9c6-bddaf0dda8bc] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingWebPart
Error           : True
UpgradeBlocking : False
Message         : WebPart class [5ed5ec80-694e-cbd9-826d-bc4c9fbbd297] is refer
                  enced [1] times in the database [wss_content], but is not ins
                  talled on the current farm. Please install any feature/soluti
                  on which contains this web part.
Remedy          : One or more web parts are referenced in the database [wss_con
                  tent], but are not installed on the current farm. Please inst
                  all any feature or solution which contains these web parts.

Category        : MissingAssembly
Error           : True
UpgradeBlocking : False
Message         : Assembly [Microsoft.Office.Project.Server.PWA,Version=12.0.0.
                  0,Culture=neutral,PublicKeyToken=71e9bce111e9429c] is referen
                  ced in the database [wss_content], but is not installed on th
                  e current farm. Please install any feature/solution which con
                  tains this assembly.
Remedy          : One or more assemblies are referenced in the database [wss_co
                  ntent], but are not installed on the current farm. Please ins
                  tall any feature or solution which contains these assemblies.

 

Una forma de visualizar esto mejor es utilizando el siguiente comando:

Test-SpContentDatabase -name [SiteName] –webapplication [SiteURL] -serverinstance [SQLServer] | ConvertTo-Html | Out-file

Y algo mejor una aplicación para SP 2010 para revisar el archivo y conocer la url de estas dependencias:

http://blogs.msdn.com/b/chandru/archive/2012/03/11/making-use-of-test-spcontentdatabase-generated-output.aspx

o bien a través de SharePoint Feature Administration and Clean Up Tool:

http://featureadmin.codeplex.com/

Pero si es para 2013, pueda que necesitemos aplicar Queries de SQL Server para obtener estas URL:

--Missing features

--Database [wss_content] has reference(s) to a missing

--feature: Id = [75a0fea7-cbdd-4360-90cb-12aed8c69f43]

SELECT features.SolutionId,sites.PortalName, sites.PortalURL, sites.RootWebId, fullurl = case when Webs.FullUrl = '' then webs2.fullurl else webs.FullUrl end, webs.Title, webs.WebTemplate

FROM Features

left outer join Sites

on sites.Id = Features.SiteId

left outer join Webs

on webs.Id = features.WebId

left outer join Webs as webs2

on sites.RootWebId = webs2.Id

where featureid = '75a0fea7-cbdd-4360-90cb-12aed8c69f43'

--MISSING SETUP FILES

select * from AllDocs where SetupPath like '%Features\AssetTrackingModules\default.aspx%'

-- MISSING ASSEMBLY

--Assembly [KnowledgeBaseEventHandler, Version=14.0.0.0,

-- Culture=neutral, PublicKeyToken=71e9bce111e9429c] is

-- referenced in the database [wss_content]

SELECT s.fullurl, webs.fullurl, assembly, hostType

from EventReceivers e

join webs on (e.webid = webs.id)

join sites s on (s.id = e.siteid)

where Assembly LIKE '%KnowledgeBaseEventHandler%'

-- no results

Si se decide eliminar los sitios que nos se migraran por contener plantillas no soportadas en versiones posteriores no se olvide de limpiar la papelera de reciclaje de SharePoint del usuario y de la colección de sitios porque de lo contrario seguirá marcando el error.

Si no es posible desactivar y eliminar las características a través de línea de comando o bien con la herramienta FeatureAdmin2010.exe como ultimo recurso es posible eliminar vía t-sql la feature de la tabla de features de la base de datos de contenido WSS_Content???.  Esto aunque no es soportado por Microsoft (Usted corre por su propia cuenta al ejecutarlo) pero SharePoint no contiene llaves foráneas y al parecer la declaración de las features están únicamente en dicha tabla. Por ejemplo:

begin tran

delete from Features where featureid = '75a0fea7-d31d-491a-9177-f0e461a81e3f'

--commit tran

4) Cuando ya no hay errores podemos ejecutar el comando:

Mount-SPContentDatabase –Name WSS_Content??? –WebApplication http://hostname

image

Si desea ver el avance o el reporte de la migración podemos revisarlo desde el Central Administration en la pagina /_admin/UpgradeStatus.aspx

 

5) Convertir la Web Application de modo clásico a modo de reclamos o claims.

Convert-SPWebApplication -Identity "https://<webappurl>" -To Claims –RetainPermissions [-Force]
Bueno en este artículo vimos como depurar los errores que muestra al ejecutar el comando test-SPContentDatabase.  Es un proceso largo y el cual en ocasiones tendrá que decidirse si migrar o eliminar “contenido” que ya no es soportado o  bien ya no se utiliza.
 
SharePoint4Fun!,
Juan Manuel Herrera Ocheita

martes, 31 de diciembre de 2013

Caso Práctico:Depurando las dependencias no migradas en SharePoint 2010

Una de las plantillas encontradas en SharePoint 2007 que no todas pueden ser migradas a 2010 y mucho menos a 2013 son las plantillas de los 40 fantásticos, sino sabe de lo que hablo posiblemente no tiene de que preocuparse.

Las plantillas de los 40 fantásticos es una historia triste, ya que Microsoft no las adopto para las versiones posteriores de SharePoint y aunque algunas se adaptaron para 2010 estas no están disponibles para 2013.  Estas plantillas en el proceso generan muchos errores.   Si desea saber mas de las plantillas puede consultar los siguientes enlaces:

http://technet.microsoft.com/en-us/sharepoint/bb407286.aspx

http://blogs.technet.com/b/tothesharepoint/archive/2010/08/18/sharepoint-2010-products-upgrade-and-the-fabulous-40-application-templates.aspx

Para este caso vamos asumir que ya sea que sean plantillas de los 40 fantásticos o bien otras dependencias que no se lograron migrar de 2007 a 2010.  Si la migración reporto errores pero terminó y deseamos depurar las dependencias faltantes. Entonces ya hemos migrado de 2007 a 2010 una base de datos de contenido con varios errores de dependencias que no tenemos instaladas en la granja 2010 pero deseamos depurar los errores. Dependiendo de cada error se toman diferentes caminos (para más información puede ver el siguiente enlace:http://kancharla-sharepoint.blogspot.com/2013/08/resolving-missing-references-when.html) pero para este caso vamos a sumir que los sub-sitios que dieron error porque no están las plantillas instaladas eliminaremos dichos sub-sitios, para luego crear una nueva base de datos y allí migrar el contenido sin errores.  El procedimiento es el siguiente:

1. Crear una nueva aplicación Web (para operar cómodamente el contenido depurado)

New-SPWebApplication -ApplicationPool <String> -Name <String> [-DatabaseName <String>] [-DatabaseServer <String>] [-HostHeader <String>] [-Path <String>] [-Port <UInt32>] [-ServiceApplicationProxyGroup <SPServiceApplicationProxyGroupPipeBind>]

http://technet.microsoft.com/en-us/library/ff607931.aspx

Ejemplo: New-SPWebApplication –ApplicationPool “Nueva App Pool” –Name “SharePonit Web App temporal” –DatabaseName “wss_content_NuevoContenido” –HostHeader “” –Path “c:\temporal\Web4444” -Port 4444

2. Exportar el contenido al sistema de archivos

Export-SPWeb [-Identity] <SPWebPipeBind> -Path <String> [-IncludeUserSecurity <SwitchParameter>] [-IncludeVersions <LastMajor | CurrentVersion | LastMajorAndMinor | All>] [-NoFileCompression <SwitchParameter>]

http://technet.microsoft.com/en-us/library/ff607895.aspx

Ejemplo: Export-SPWeb –Idendity http://miwebmigrada –path “c:\temp\contenidodepurado” –IncludeUserSecurity – IncludeVerions All – NoFileCompression

3. Importar el contenido en la nueva aplicación Web

Import-SPWeb [-Identity] <SPWebPipeBind> -Path <String> [-IncludeUserSecurity <SwitchParameter>] [-NoFileCompression <SwitchParameter>] [-UpdateVersions <Append | Overwrite | Ignore>]

http://technet.microsoft.com/es-es/library/ff607613.aspx

Ejemplo: Import-SPweb –Identity “http://hostname:4444” –Path “c:\temp\contenidodepurado” –NoFileCompression –UpdateVerions Overwrite

4. Desmontar la base de datos de contenido de la aplicación Web nueva creada y de la migrada

Dismount-SPContentDatabase [-Identity] <SPContentDatabasePipeBind>

http://technet.microsoft.com/en-us/library/ff607764.aspx

Ejemplo: Dismount-SPContentDatabase –Identity “wss_content_NuevoContenido”

5. Montar la base de datos depurada en la aplicación web deseada

Mount-SPContentDatabase [-Name] <String> [-WebApplication] <SPWebApplicationPipeBind>

http://technet.microsoft.com/en-us/library/ff607581.aspx

Ejemplo: Mount-SPContentDatabase –Name wss_content_NuevoContenido –WebApplication “http://miwebmigrada

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

sábado, 28 de diciembre de 2013

Tips para el proceso de migración de SharePoint 2007 a 2013

Primero lo primero no se puede pasar de SharePoint 2007 a 2013 de un solo con el procedimiento de base de datos acoplada o Attach data base, con herramientas de terceros es posible pero es un proceso lento y no esta libre de errores.  En 2007 hay dos procesos soportados In Place y Attached data base.  Pero el último es el adoptado y único para versiones posteriores, por lo que mantendremos esta tendencia desde 2007.

Para realizar la migración debemos de contar por lo menos con dos granjas una de SharePoint 2010 y otra de SharePoint 2013.

No es recomendado realizar un downgrade es decir una reducción de versión en el proceso de migración.  por ejemplo:  Tenemos una granja SharePoint 2007 Edición Enterprise y deseamos convertirla a SharePoint 2013 Edición Standard o a SharePoint Foundation. 

Lo contrario si es válido y posible, es decir hacer un upgrade o mejora de versión.  Por ejemplo de WSS 3.0 a SharePoint 2013 Enterprise o Standard.

A continuación una tabla de la ruta de migración posible del 2007 al 2013 en sus diferentes ediciones:

image

A continuación una tabla de la ruta de migración recomendada (en color amarillo):

image 

La recomendación se basa en que se utilice la misma edición de 2007 y hasta el final se utilice la edición deseada.  Abajo una tabla de las rutas no soportadas en las cuales se suponen escenarios de color rojo donde erróneamente se escoge una ruta de upgrade en el intermedio (en la versión 2010) y luego se decide equivocadamente hacer un downgrade, esto acarreará muchos errores en la etapa de migración de 2010 a 2013 que puede incluso impedir la migración.

image

Debemos de recordar el idioma en que esta instalado el SharePoint debe de ser el mismo a migrar o bien contar con el paquete de idioma instalado en las granjas de SharePoint a migrar que en este artículo hablamos de 2010 y 2013.

La configuración de las granjas es algo que no debe de tomarse a la ligera ya que esto puede desembocar en un proceso rápido y efectivo o lento y frustrante.

La configuración de Hardware debe de analizarse desde el misma granja de SharePoint 2007, ya que podemos contar con imprevistos como el que no se haya instalado 2007 en una base de datos de SQL Server sino a través de la versión incrustada o embedded y esto hará el proceso de extracción de la base de datos más doloroso y complicado.  Esto sucede cuando instalamos el SharePoint de forma solitaria o Stand Alone, instalación solamente diseñada para demostración y nunca recomendada para un ambiente de producción.  La sorprendente es encontrar empresas que tienen así instalado su SharePoint en modo stand-alone.

La otra configuración importante es la de SharePoint 2010 que a pesar que sea una granja “puente” ya que solo se instalará para migrar el contenido de 2007 a 2010 y de 2010 a 2013.  Debemos de asignar recursos adecuados para que el proceso de migración para que sea exitoso y eficiente.  Esta granja posiblemente no cuente con muchos recursos pero debemos prestar atención a la RAM y espacio en disco y en los servicios y contenido que estamos migrando.

A continuación la configuración mínima y recomendada por Microsoft para SharePoint 2007 Front End en sus diferentes ediciones

image

image

A continuación mi recomendación práctica para una migración para la versión SharePoint 2007

image

image

Para el servidor Puente o sea el servidor SharePoint 2010 las recomendaciones son las siguientes:

image

En la medida de disponer de mayor cantidad de RAM se garantiza un proceso más rápido de migración.  Y el espacio en disco se basa en el requerimiento de SharePoint de 5 veces el tamaño de la memoria RAM partiendo del mínimo recomendado de 80 GB + 5 Veces la RAM.  Se asume por ser un servidor puente que solo será un servidor, pero esto dependerá de la granja de SharePoint 2007 de origen cuantos servidores tienen ya que no solo se migrará contenido sino servicios también.

A continuación la recomendación mínima de una granja de SharePoint 2013 y un servidor de SQL Server 2012 en sus diferentes ediciones:

image

Comandos útiles para la migración de base de datos de contenido adjunta:

image

image

Bueno eso es todo por este artículo espero lo encuentren útil.

Hasta la próxima, SharePoint4Fun!,

Juan Manuel Herrera Ocheita