Reduciendo el tiempo de presentación de contenidos en un Content by Search WebPart

Una de las grandes novedades que trajo SharePoint 2013 fue la renovación de su Arquitectura de búsqueda y consigo una sería de funcionalidades como los Content by Search WebParts, Cross-Site Publishing y Continuous Crawl.

Como sabemos el uso de escenarios de publicación en Portales web de SharePoint basados en el motor de búsqueda tiene muchas ventajas, sin embargo también tiene sus retos. Uno de los principales retos está relacionado al tiempo en que se presentan los contenidos en el Portal. Debido a que los contenidos se presentan en base al motor de búsqueda, el tiempo en que este configurado el rastreo de contenidos es uno de los criterios que determinará el tiempo en que se presentarán los contenidos.

Para este escenario SharePoint 2013 proporciona un mecanismo de rastreo mucho mas eficiente y rápido que rastrea los contenidos en menos tiempo que el tradicional rastreo incremental. Este es el rastreo continuo!

El rastreo continuo por defecto se realiza cada 15 minutos, este se encarga de verificar si existen nuevos contenidos para añadirlos al índice, a diferencia de un rastreo incremental, el rastreo continuo no tiene que esperar a que un rastreo anterior finalice para iniciar uno nuevo, esto permite siempre tener los contenidos mas recientes actualizados en el Portal.

Aún así estos 15 minutos pueden resultar mucho tiempo para los requerimientos de algunas empresas. En este caso es posible reducir el tiempo del rastreo continuo ejecutando los siguientes comandos de PowerShell:

1. Primer obtenemos la propiedad «ContinuousCrawlInterval» para ver el valor actual. Por defecto este es 15 minutos.

2. Ahora establecemos el valor de la propiedad a 5 minutos.

3. Para que se apliquen los cambios debemos ejecutar el método Update.

4. Finalmente verificamos que efectivamente se haya realizado el cambio.

Lo que notaremos ahora es que los resultados de búsqueda se presentan con muchas mas rapidez. Si ejecutamos una búsqueda desde los sitios de búsqueda podremos apreciar eso, sin embargo también nos daremos cuenta de que los Content by Search WebParts no refrescan los datos inmediatamente. Estos se demoran unos 15 minutos aproximadamente, esto debido a que los WebParts también manejan una configuración de Cache de 15 minutos.

Esto también se puede cambiar mediante la ejecución de unos comandos en PowerShell:

Como podemos apreciar, la propiedad «SearchResultsCacheTTL» es la que nos permite expresar en segundos el tiempo en que se manejará en cache el contenido y no se verá refrescado. En este caso lo configuré para 5 minutos.

Y listo! a través de la ejecución de estos comandos podemos presentar la información de manera mas rápida. Sin embargo, es importante tomar en cuenta que tanto el tiempo destinado para el continuous crawl como el tiempo empleado para el cache al verse reduciendo, consumen mas recursos de los servidores tanto Web Front End (Por el manejo del cache) como los servidores de la topología de búsqueda.

Item Scheduling y Content by Search WebParts

En un artículo anterior escribí acerca de la capacidad de Item Scheduling y sus beneficios en cuanto a la gestión de la publicación en Portal web en Internet (http://geeks.ms/blogs/marchena/archive/2016/01/08/empleando-item-scheduling-en-bibliotecas-documentales-de-sharepoint-2013.aspx).

Como sabemos SharePoint 2013 trajo múltiples funcionalidades para optimizar la implementación de Portales web en Internet, entre estas podemos mencionar a los Portales basados en Cross-site Publishing, el uso de Content by Search WebParts y continuous crawl.

Entonces, será posible aprovechar la capacidad de Item Scheduling (funcionalidad disponible desde SharePoint 2007) en Portales modernos basados en Cross-site publishing y content by search webparts?

Esto claro que es posible. Como sabemos el Item Scheduling permite manejar los estados de publicación de un documento, entonces un documento al estar en estado Borrador, En Espera o Programado no podrá ser visto por un usuario anónimo o un usuario lector. Sin embargo, un documento en estado Aprobado si puede ser visto por un usuario anónimo o lector.

Recordemos también que el motor de búsqueda únicamente rastrea aquellos documentos que se encuentren con estado Aprobado, en ese sentido es totalmente posible complementar la funcionalidad de Item Scheduling con los Content by Search WebParts.

A continuación mostrará como configurar este escenario. El resultado final debería ser algo como esto:

1. Primero debemos seguir los pasos descritos en el siguiente artículo (http://geeks.ms/blogs/marchena/archive/2016/01/08/empleando-item-scheduling-en-bibliotecas-documentales-de-sharepoint-2013.aspx). Estos son los pasos fundamentales.

2. Ahora, después de haber ejecutado un Full Crawl iremos al esquema de búsqueda desde el Search Service Application y buscaremos las propiedades rastreadas ows_q_DATE_PublishingStartDate y ows_q_DATE_PublishingExpirationDate.

Nota: Puede que estas propiedades rastreadas no se muestren. Si no se muestran en el siguiente punto se explicará como resolver este inconveniente.

3. En el caso de que no se muestren las propiedades rastreadas esto es debido a que al menos un documento debe tener los datos llenos y este documento debe estar marcado como Aprobado.

4. Ejecutamos un Full Crawl nuevamente.

5. Ahora si podremos apreciar que se crearon las propiedades rastreadas correctamente. 

 

6. Debido a que la Fecha de inicio programada y la Fecha de finalización programada las queremos utilizar para refinar los resultados y ordenarlos. Vamos a crear a continuación unas propiedades administradas nuevas.

Primero vamos a crear la propiedad administrada SPSFechaInicioPublicación, este será de tipo Fecha y hora. Así mismo marcar los checks Permite búsquedas, Consultable, Se puede recuperar.

 

 7. En Restringible seleccionar Sí: activa. y en Se puede ordenar seleccionar Sí: activa. Así mismo marcar Caja fuerte.

8. Ahora debemos seleccionar la propiedad rastreada ows_q_DATE_PublishingStartDate que es la asociada al campo de Fecha de inicio programada.

9. Se puede apreciar que se agregó correctamente.

10. Hacemos el mismo procedimiento para la propiedad Administradad SPSFechaFinPublicacion. La configuración será la misma a excepción de la propiedad rastreada a la cual mapearemos. 

11. Mapearemos a la propiedad rastreada ows_q_DATE_PublishingExpirationDate, esta esta asociada al campo Fecha de finalización programada.

12. Podemos apreciar que se asoció correctamente.

13. Ejecutamos un Full Crawl para ver los cambios aplicados. 

14. Y finalmente podremos configurar nuestro refinamiento con las propiedades administradas antes creadas. No tenemos que hacer nada especial sobre nuestro content by search WebPart ya que por defecto solo muestra los contenidos aprobados.

Nota: Debido a que los resultados en el Content by Search WebPart se muestran en base a la frecuencia del rastreo y a la configuración de cache, el momento en que se presentarán los resultados o dejarán de presentarse tendrá una diferencia de aproximadamente unos 15 minutos. Esto se puede reducir, si queremos reducir esta diferencia, debemos seguir los pasos descritos en el siguiente artículo: http://geeks.ms/blogs/marchena/archive/2016/01/08/reduciendo-el-tiempo-de-presentaci-243-n-de-contenidos-en-un-content-by-search-webpart.aspx 

 

Empleando Item Scheduling en bibliotecas documentales de SharePoint 2013

En Sistemas de gestión de contenidos para Portales web en Internet, uno de los principales requerimientos es la gestión adecuada del flujo de publicación de contenidos de tal manera que se pueda controlar de manera eficiente la creación, revisión y aprobación de contenidos. Dentro de estas necesidades se encuentra el de la gestión de la publicación y des-publicación automática de contenidos.

Afortunadamente SharePoint 2013 cuenta con una capacidad conocida como el Item Scheduling. Esta funcionalidad permite controlar la publicación y des-publicación de manera automática tanto en Páginas web como en documentos en bibliotecas documentales.

En el siguiente artículo pasaré a detallar los pasos necesarios para habilitar la capacidad de Item Scheduling en bibliotecas documentales:

Lo primer es tener una colección de sitios desde donde crearemos las bibliotecas documentales que almacenarán los documentos a ser presentados desde nuestro Portal web. En este caso yo dispongo de una colección de sitios que emplea la plantilla de Centro documental. 

Habilitación de Features

1. La capacidad de Item Scheduling está habilitada por defecto para Site collections del tipo «Portal de publicación«. Debido a que nuestro site collection es de tipo «Centro Documental«, debemos habilitar el Publishing Feature. Para esto vamos a Configuración del sitio.

2. Clic en Características de la colección de sitios.

 

3. Activar el Feature «Infraestructura de publicación de SharePoint Server«.

4. Lo mismo debe hacer a nivel del sitio. Para esto damos clic en Administrar las características del sitio

5. Activar el Feature «Publicación de SharePoint Server«.

 

Configuración de Tipo de contenido

1. Ahora debemos habilitar el tipo de contenido a ser usado por nuestras bibliotecas documentales. Vamos a Tipos de contenido de sitio.

 

2. Creamos un tipo de contenido basado en el Tipo de contenido Primario «Documento«. En mi caso, mi tipo de contenido se llama Documentos IWDEMO.

3. Agregaremos las columnas «Fecha de inicio programada» y «Fecha de finalización programada» a nuestro tipo de contenido. Estas columnas se habilitan al momento de Activar los Features de publicación.

4. Verificamos que las columnas se hayan creado correctamente.

 Configuración de biblioteca de documentos

1. Ahora configuramos nuestra biblioteca de documentos. En mi caso cree una biblioteca de nombre «Procedimientos«.

2. En las opciones de Configuración damos clic en Configuración avanzada.

3. Marcamos en ¿Desea permitir la administración de tipos de contenido?

 

4. Agregamos el tipo de contenido que habíamos creado. 

5. El tipo de contenido se mostrará en la lista de tipos de contenido que tiene la biblioteca de documentos.

6. Eliminamos el tipo de contenido «Documento«, ya que no lo vamos a utilizar.

7. Podemos verificar que ahora solo se muestra nuestro tipo de contenido.

8. Ahora debemos configurar las versiones, damos clic en Configuración de versiones.

 

9. Marcamos en ¿Requerir aprobación de contenido para los elementos enviados? y en Historial de versiones de Documentos seleccionar Crear versiones principales y secundarias (borradores). Finalmente clic en Aceptar.

10. Finalmente debemos habilitar el Item Scheduling, para esto damos clic en Administrar programación de elementos.

11. Marcamos el check Habilitar la programación de elementos de esta lista y clic en Aceptar.

 Verificando configuración de Timer Jobs

El proceso de publicación y des-publicación automática esta basado en 2 timer Jobs. Por lo tanto debemos verificar que estos estén habilitados.

1. Verificamos que el timer job «Aprobación programada» se encuentra habilitado. Este timer job se ejecuta cada minuto.

 

2. Verificamos que el timer job «Eliminación de publicación programada» se encuentra habilitado. Este timer job también está configuración para ejecutarse cada minuto.

 Publicación de documentos

Ahora debemos verificar que la capacidad de Item Scheduling esté funcionando correctamente.

1. Cargamos un documentos a la biblioteca de documentos de «Procedimientos«. Completamos los metadatos, para esto debemos especificar la Fecha de inicio programada para cual puede ser Inmediatamente o a una fecha y hora exacta. Para el caso de la Fecha de finalización programada esta puede ser Nunca o puede ser una fecha y hora exacta.

 

2. Al completar los datos veremos que el documento se pone en Estado «Borrador«, esto significa que el documento se encuentra en su versión menor.

3. Debemos proceder a publicar el documento a su versión mayor, para esto seleccionamos al documento y desde el Ribbon ubicamos el botón Publicar y le damos clic.

 

4. En la siguiente ventana podemos especificar un comentario y damos clic en Aceptar.

5. Ahora el documento se encontrará en Estado «En Espera«, esto quiere decir que se encuentra pendiente de Aprobación.

6. El rol de Aprobador deberá seleccionar el documento y en el Ribbon dar clic en Aprobar o rechazar.

7. A continuación debe dar clic en Aprobado y clic en Aceptar.

8. Si es en la Fecha de inicio programada se especificó una fecha en el futuro, entonces el Estado de aprobación cambiará a «Programado«. Si es que la Fecha de inicio programada era inmediatamente, entonces se mostrará el Estado de aprobación como «Aprobado«.

 9. Cuando se cumpla la Fecha de inicio programada, automáticamente el Estado cambiará de Programado a Aprobado. Esto se da mediante el timer job que se ejecuta cada minuto.

Nota: Al estar el documento en Estado Aprobado esto quiere decir que todos los lectores o usuarios anónimos podrán visualizarlo (Publicación automática).

 10. Si es que se cumplió la Fecha de Finalización programada, entonces el Estado del documento cambiará de Aprobado a Borrador. Esto quiere decir que los lectores o usuarios anónimos no podrán ver el documento (Des-publicación automática).

 Y listo!

Como pueden apreciar, la capacidad de Item Scheduling trae muchos beneficios en cuanto a la gestión de la publicación de contenidos tanto de páginas web como documentos. Espero que haya sido de mucha utilidad. 

Como recuperar archivos de índice dañados/corruptos en una topología de búsqueda

En una topología de búsqueda de SharePoint 2013 uno de los componentes críticos para la ejecución de búsquedas y/o para presentar información en los Content by Search WebParts y Search Results WebParts es el índice de búsqueda.

Desde la página de Administración del Search Service Application podemos constantemente monitorear la salud de nuestra topología de búsqueda. Podremos detectar un problema con el componente de índice si es que se presenta un ícono amarillo de warning como se puede apreciar en la siguiente imagen:

Cuando el índice de búsqueda presenta un ícono de warning esto puede estar relacionado a 2 temas:

a) El disco de índice esta lleno por lo que no es posible seguir almacenando información ahi. Esto genera que un Full crawl o incremental crawl se quede detenido por siempre hasta que el tema se resuelva.

b) Los archivos de índice de uno nodo particular están corruptos. Esto puede deberse a una manipulación indebida de estos archivos, algún problema con disco o algún virus.

Para resolver estos problemas seguir los pasos descritos a continuación:

1. En el Search Service Application dar clic en Restablecer índice

2. Clic en Restablecer ahora.

3. Se restablecer el índice (Se limpia por completo).

4. Podremos apreciar que la topología ya se muestra correctamente sin ningún warning. 

5. Finalmente debe ejecutar un Full crawl para poder llenar nuevamente nuestro índice.

IMPORTANTE:

Si el problema era asociado a espacio en disco, entonces previamente debemos hacer un dimensionamiento adecuado del índice y aprovisionar el espacio necesario.

Si el problema tiene que ver con corrupción de archivos es importante diagnosticar la causa raíz (Si fue por virus aplicar antivirus, Si fue problema de disco o manipulación manual tomar las acciones respectivas).

Configurando FBA y Anonymous Authentication en Extended Web Applications – SharePoint 2013

Uno de los requerimientos más comunes cuando implementamos portales web públicos sobre SharePoint 2013, es que los portales tengan la capacidad de proveer acceso autenticado a secciones del Portal.

El mecanismo de autenticación por defecto es Windows Authentication, pero para portales públicos definitivamente no es un escenario válido registrar usuario públicos en el directorio activo. En ese sentido, SharePoint 2013 ofrece el soporte a emplear 2 mecanismo de autenticación adicionales: Forms Based Authentication o Trusted Identity Provider. En este artículo veremos el método Forms Based Authentication (FBA).

FBA es un mecanismo soportado por ASP.NET y básicamente provee una base de datos desde donde se puede gestionar las credenciales de los usuarios, esta base de datos se crea en SQL, y es una de las opciones más idóneas para cumplir el requerimiento de disponer de un medio para gestionar accesos a usuarios externos.

A continuación explicaré el paso a paso para configurar un Portal web con autenticación anónima y Forms based authentication, para lo cual será necesario crear una aplicación web y extenderla:

1. Primero debemos crear una nueva aplicación web.

2. Especificamos que emplearemos el puerto 80.

 3. Empleamos la autenticación Windows con NTLM.

4. Especificamos la cuenta de identidad del Application Pool, debemos recordar esta cuenta pues la emplearemos más adelante.

 5. Especificamos el nombre de la base de datos del Portal.

 6. Validar que se haya creado la aplicación web correctamente.

7. Creamos una colección de sitios.

 8. Especificamos los datos de la colección del sitio.

 9. Seleccionar la plantilla «Portal de publicación«.

 10. Especificar la cuenta del administrador.

 11. Se creó la colección de sitios.

12. Validamos el acceso a la colección de sitios.

 13. Ahora seleccionamos la aplicación web y damos clic a Authenticacion Providers.

14. Damos clic en la zona Default.

15. Seleccionamos Enable anonymous access.

 16. Ingresamos a la colección de sitios y damos clic en Configuración del sitio.

 17. Damos clic a Permisos del sitio.

 18. Damos clic en Acceso anónimo.

 19. Seleccionamos Sitio web completo.

20.  Ingresamos al site collection y veremos que aparecerá la opción de Inicio de sesión

21. En Application Management, seleccionamos Configure alternate Access mappings.

22. Damos clic en Edit Public URLs.

23. Seleccionamos la aplicación web que creamos al inicio y en la Zona Intranet especificamos la URL: http://portal.

 24. Veremos que se creó correctamente la nueva URL alternativa (El registro debe existir en el DNS).

25. Podemos verificar que se puede acceder sin problemas con la URL alternativa.

26. Ahora debemos extender la aplicación web. Esto debido a que queremos que la URL pública solo permita acceso anónimo y por FBA y el interno solo permita acceso autenticado de Windows.

Seleccionamos la aplicación web y damos clic Extend.

27. En este caso emplearemos el puerto 443 y especificaremos la URL pública que utilizaremos.

28. Especificamos que permitiremos acceso anónimo y SSL.

29. Inicialmente dejaremos por defecto autenticación Windows con NTLM.

 

30. Seleccionaremos la Zona Internet.

31. Entramos al IIS y verificamos que se haya creado un Sitio de IIS para la aplicación extendida.

32. Damos clic derecho y Edit Bindings…

33. Vemos que la URL ya se presenta por defecto. Seleccionamos el binding y damos clic en Edit…

34. Debido a que estamos empleando SSL y Puerto 443, entonces debemos seleccionar el certificado que previamente debemos haber importado en el servidor WFE.

35. Cerramos la configuración del binding.

36. Probamos el acceso (El registro DNS ya debe existir) y se verá el site collection correctamente, como podemos apreciar ya se muestra el acceso anónimo sin necesidad de haber hecho una configuración adicional. Esto porque la aplicación extendida es una replica, esto quiere decir que todo lo que esté configurado en la aplicación web en Zona default se replicará en esta aplicación web en Zona Internet.

37. Ahora toca configurar la aplicación para que soporte FBA. Seleccionamos la aplicación web y clic en Authentication Providers.

38. Seleccionamos la Zona Internet, que es donde deseamos configurar el soporte a FBA.

39. Seleccionamos Enable Forms Based Authentication (FBA) y ASP.NET Membership Provider Name especificamos el nombre: SQL_Membership y en ASP.NET Role Manager Name especificamos el nombre: SQL_Role.

40. Ahora para facilitar la configuración de FBA vamos a instalar 2 Farm Solutions (.wsp) libres. Uno es el FBA configuration Manager for SharePoint (http://blogs.technet.com/b/speschka/archive/2012/07/28/fba-configuration-manager-for-sharepoint-2013.aspx) y el otro es el SharePoint 2013 FBA Pack (http://sharepoint2013fba.codeplex.com/).

Añadimos los .wsp desde PowerShell con el Add-SPSolution.

41. Verificamos que se hayan añadido correctamente y las desplegamos.

42. Desplegamos el fbaconfigfeature.wsp.

43. Desplegamos el visigo.sharepoint.formsbasedauthenticacion.wsp.

 44. Al acceder a la colección de sitios con la URL externa (https://www.iwdemo.com) nos aparecerá un formulario para seleccionar el tipo de autenticación. Seleccionaremos Autenticación de Windows.

45. Ingresamos a la Configuración del sitio.

 

46. Ahora damos clic en Características de la colección de sitios.

47. Y activamos el Feature «Forms Based Authentication Management«.

48. Podremos validar que en Configuración del sitio aparecieron nuevas opciones de configuración de FBA.

49. Ahora corresponde crear la base de datos de FBA. Ubicamos la ruta C:WindowsMicrosoft.NETFramework64v4.0.30319 y ubicamos el archivo aspnet_regsql.exe y lo ejecutamos.

50. En la ventana ASP.NET SQL Server Setup Wizard, damos clic en Next.

51. Configure SQL Server for application services y clic en Next.

52. Especificamos el nombre del servidor de base de datos y el nombre de la base de datos (Ej. Extranet_User_DB). 

 53. Clic en Next.

54. Clic en Finish.

55. Ingresamos al SQL Server Management Studio y validamos que se creó la base de datos correctamente.

56. Ahora debemos dar permisos a la cuenta de Application Pool de nuestra aplicación web del Portal hacia la base de datos de FBA. Si no la recordamos en Service Accounts podemos ubicarla.

57. Ahora damos permisos a esta cuenta (Ej. sp13_webapp).

58. En Membership seleccionamos db_owner.

59. Ahora debemos ejecutar a la aplicación FBA Configuration Manager que descargamos al inicio (http://blogs.technet.com/b/speschka/archive/2012/07/28/fba-configuration-manager-for-sharepoint-2013.aspx)

A. En Web Application Url especificamos la URL de la aplicación web que creamos al inicio.

B. En Zone, seleccionamos la Zona Internet pues es la que empleamos cuando extendimos la aplicación y en esta zona es donde deseamos configurar FBA.

C. En Sample Configurations seleccionamos People Picker Wildcard.

D. En Connection String especificamos los siguiente: <add name=»fbaSQL» connectionString=»server=VMSP2015;database=Extranet_User_DB;Trusted_Connection=true» />

E. En People Picker Wildcard especificamos: <add key=»SQL_Membership» value=»%» />

F. En Membership Provider especificamos: <add connectionStringName=»fbaSQL» applicationName=»/» name=»SQL_Membership» type=»System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a» />

G. En Role Provider especificamos: <add connectionStringName=»fbaSQL» applicationName=»/» name=»SQL_Role» type=»System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a»/>

Finalmente damos clic en Apply Config.

 

60. Damos clic en OK.

61. Ahora verificamos los cambios, damos clic derecho en el sitio IIS extendido y luego clic en Explore.

62. Vemos que se generó un backup del web.config.

63. Luego abrimos el web.config y validamos que se registró correctamente.

64. En el Sitio IIS de SharePoint Web Services seleccionamos SecurityTokenServiceApplication, clic derecho y clic en Explore.

65. Vemos que también se generó una copia del web.config.

66. En el Web.config vemos que también se deben mostrar los cambios.

67. Lo mismo hacemos para la Administración Central.

68. Validamos de la misma manera el web.config.

 69. Ejecutamos un IIS Reset.

70. Podemos verificar que también se aplicaron los cambios correctamente al especificar la aplicación web, la Zona Internet y clic en Get FBA Config.

71. Ingresamos a la URL de la aplicación extendida.

 

72. En la Configuración del sitio damos clic en FBA User Management.

 

73. Damos clic en New User.

74. Especificamos los datos de una cuenta. 

75. Especificamos el mensaje de correo para la cuenta que estamos registrando.

76. Vemos que se registró la cuenta correctamente.

 

77. Agregamos esta cuenta al grupo de Integrantes para probar que el acceso funcione correctamente. 

78. Verificamos la cuenta.

79. Validamos que se registró correctamente.

80. Ingresamos nuevamente a la URL https://www.iwdemo.com y seleccionamos Autenticación de formularios.

81. Ingresamos las credenciales del usuario de FBA.

82. Y validamos su ingreso correctamente.

83. Ahora, como queremos que desde la URL pública solo se acceda anónimo o mediante FBA y no mediante Autenticación Windows vamos a cambiar los administradores de la colección de sitios.

 

84. Agregamos un segundo administrador de la colección de sitios.

85. Buscamos la cuenta FBA antes creada.

86. Verificamos que se haya agregado como administrador secundario de manera correcta.

87. Seleccionamos nuevamente la aplicación web y clic en Authentication Providers.

88. Seleccionamos la zona Internet.

89. Quitamos la opción Enable Windows Authentication.

90. Ingresamos nuevamente a la URL https://www.iwdemo.com

91. Automáticamente se muestra el formulario de autenticación de FBA.

92. Ingresamos las credenciales.

93. Y validamos el ingreso.

94. Podremos comprobar que es administrador de la colección de sitios pues se puede apreciar la sección Administración de la colección de sitios.

 

 

Creando un mapa de sitio con Managed Navigation en SharePoint 2013

SharePoint 2013 como sabemos ofrece un nuevo mecanismo para configuración la navegación del Portal mediante la Navegación Administrada. Esta configuración puede realizarse de manera centralizada y por medio del uso de términos. Además ofrece muchas ventajas, como la posibilidad de configurar URLs amigables o incorporar propiedades SEO.

Lamentablemente SharePoint 2013 no dispone de un WebPart o algún componente nativo para la creación de un mapa de sitio que es un requerimiento muy común en Portales web.

A falta del componente nativo, es posible desarrollar nuestro propio componente que consulte a los términos de la navegación Administrada, sin embargo también existen componentes libres en Internet, que pueden ser utilizados.

En la siguiente página pueden encontrar un componente de Site Map muy bueno: http://www.codeproject.com/Articles/775248/Site-Map-Web-Part-SharePoint

A continuación detalle el proceso de instalación y configuración:

1. Descargar la solución. El .zip esta conformado por el código fuente así como el compilado (.wsp) para instalar directamente. 

2. Instalamos el .wsp ejecutando el comando Add-SPSolution.

 3. En la Administración Central nos dirigimos a Solution Management y ubicar la solución recién agregada. Se mostrará como Not Deployed.

4. Procedemos a instalarla dando clic en Deploy Solution. Esto también se puede lograr con el comando Install-SPSolution.

5. Procedemos a instalar en las aplicaciones web donde lo requiramos. 

6. Y listo, se mostrará como Deployed

 7. Ahora nos vamos a la colección de sitios desde donde deseemos agregar el Mapa del Sitio. En características de la colección del sitio Activamos el Feature Questech Systems Site Map Web Part.

8. Creamos una nueva página para el Mapa del Sitio e insertamos el WebPart Site Map

9. El resultado será el siguiente:

10. En el WebPart de SiteMap solo se mostrarán los términos de la navegación administrada que se encuentren marcados para mostrarse desde la navegación global o local. Así que asegurémonos a seleccionar al menos 1 de ellos.

11. El resultado se puede comprobar. 

12. Ahora crearé mas niveles en mi navegación Administrada. En este caso crearé hasta 4 niveles.

13. En la navegación global podremos ver que solo se ve como máximo hasta el 3er nivel pues es el comportamiento nativo.

14.En la navegación local (Quick Launch) vemos que máximo se muestra hasta el segundo nivel, también este es el comportamiento nativo. 

15. Sin embargo, en nuestro mapa del sitio si podremos ver todos los niveles que necesitemos. 

 16. Por último, si queremos cambiar los estilos de nuestro SiteMap no es necesario modificar el código fuente, ya que es posible configurar el WebPart y especificar las clases que deseemos.

Y listo, disponemos de un mapa del sitio configurable y que cumple con las necesidades básicas.

SEO SiteMap en Portales web de SharePoint 2013

Dentro de las características SEO que SharePoint 2013 trae, una de las más importantes es la creación de un SiteMap (Mapa del sitio) que pueda ser empleado por los motores de búsqueda para optimizar los resultados de los mismos. Este mapa de sitio viene a ser un archivo .XML que contiene el listado de las URLs de nuestro Portal para estas sean indizadas por los motores de búsqueda de una manera más sencilla. Esto definitivamente optimiza las capacidades de búsqueda.

Para lograr esto los pasos son sencillos:

1. Ir a la configuración del sitio y debajo de Administración de la colección de sitios seleccionar Características de la colección de sitios.

2. Ubicar la característica Mapa del sitio del motor de búsqueda y Activarlo.

3. La activación del feature antes mencionado habilitará la ejecución de un timer job diario para la generación el SiteMap (Archivo XML) del Site collection.

Nosotros podemos forzar la ejecución del timer Job. para esto nos vamos a la sección de Monitoring en la Administración Central y debajo de Timer Jobs seleccionamos Review Job definitions.

4. Ubicamos el timer job Search Engine Sitemap job y le damos clic.

5. Ejecutamos el timer job. Clic en Run Now.

6. Validamos que se ejecute el timer Job.

7. Ahora nos dirigimos hacia nuestro site collection y en la raíz le agregamos a la url sitemap0.xml. La URL quedaría algo como: http://portal/sitemap0.xml.

8. Se abrirá el archivo XML y podremos comprobar que se generó el SiteMap correctamente con todas las URLs del Portal a ser indizadas por el motor de búsqueda.

Y eso es todo!

SEO en escenarios de Cross-site publishing en SharePoint 2013

SharePoint 2013 a evolucionado significativamente en cuanto a características de web Content Management frente a su predecesor SharePoint 2010.

Muchos de estos features han estado orientados a lograr implementaciones de Portales web que cumplan con los estándares del mercado y que satisfagan las expectativas de las empresas sin la necesidad de invertir mucho esfuerzo en desarrollos o personalizaciones.

En post anteriores he ido mencionando algunos de estos como son:

1. Cross-site publishing.

2. Managed Navigation.

3. Responsive Design.

4. Variations.

Entre otros.

Adicionalmente a los ya mencionados, uno de los requerimientos más importantes cuando implementamos portales web es que estos soporten capacidades de Search Engine Optimization (SEO), es decir, que nuestro Portales se encuentre optimizado para que los motores de búsqueda pueda priorizar nuestras páginas en los resultados de búsqueda.

 A diferencia de SharePoint 2010, SP2013 trae muchas capacidades de SEO de manera nativa. Por ejemplo, el manejo de URL amigables a través de Managed Navigation es uno de ellos. Así mismo, cuando creamos páginas web, en la pestaña de Páginas podemos dirigirnos a las opciones de Editar propiedades de SEO debajo de Editar propiedades.

Aparecerá un formulario donde podremos completar los valores de los principales atributos SEO como son: Título del explorador, Descripción META, palabras clave.

Una vez aplicados los cambios sobre la página, podremos explorar que en el HTML que se genera ya se incorporar el valor que especificamos en el tag <title>.

Lo mismo sucede con los meta tags para description y keywords.

 Configurar estos valores en nuestras páginas resulta bastante sencillo, sin embargo, que sucede en un escenario de Cross-site publishing, donde el contenido puede encontrarse en listas y no en bibliotecas de páginas. Por ejemplo, en el caso de emplear una lista de noticias donde queremos que cada noticia tenga sus campos SEO.

Pues para esto seguiremos los pasos a continuación especificados:

1. Primero debemos crear un tipo de contenido que utilizaremos para nuestra lista (Ej. lista noticias), a continuación debemos agregar todas las columnas de sitio de tipo SEO.

2. Veremos que se añadieron las columnas SEO (Descripción metaPalabras clave meta, etc.). 

 

 3. Estas columnas de manera nativa se encuentran selladas y en sus propiedades esta especificado que no se mostrará en la vista de lectura, edición o creación de un elemento de lista. En este sentido debemos primero ejecutar por cada columnas el siguiente script de PowerShell, para quitar el sello temporalmente.

4. A continuación especificamos que la columna debe poder verse en el formulario de lectura, edición y creación. 

5. Podremos comprobarlo si es que creamos un nuevo elemento en la lista. 

6. Una vez comprobado debemos volver a cambiar el estado de la columna para que se encuentra sellada. Con esto protegemos la columna.

7. A continuación debemos asegurarnos de que las propiedades administradas de SEO estén asociadas correctamente con las propiedades rastreadas de nuestras columnas de sitio. Previamente debemos ejecutar el rastreo completo.

Para esto nos vamos a la Administración Central y ubicamos el servicio de aplicaciones de búsqueda, y a continuación seleccionamos Search Schema

 8. Después buscamos todas las propiedades administradas que tengan la palabra SEO.

 9. Editamos cada una de ellas.

 

10. Y tenemos que asegurarnos que la propiedad rastreada esté mapeada correctamente. Por defecto se encuentran mapeadas las propiedades rastreadas en Inglés, pero si nuestro ambiente es en español debemos agregar la de español. Por ejemplo para título del explorador debemos agregar: ows_Titulo_x0020_del_x0020_exp.

11. Para palabras clave Meta: ows_q_TEXT_Palabrasclavemeta.

 12. Para descripción meta: ows_q_TEXT_Descripcionmeta.

 13. Finalmente registramos las noticias que necesitemos.

 

14. Una vez publicada la información vía el esquema de Cross-site publishing podremos acceder a la página de publicación. Por defecto el WebPart de reutilización de elemento de catálogo soporta los campos SEO.

15. Si accedemos al HTML podremos ver que el tag <title> tiene el valor que nosotros especificamos. 

16. Lo mismo para los meta tags de description y keywords.

Listo. Eso es todo, de esa manera logramos incorporar SEO para nuestras listas y/o bibliotecas en el esquema de Cross-site publishing.

En el caso de no utilizar el webpart de reutilización de elementos del catálogo nativo y en vez de eso utilicemos un WebPart como el Content by Search WebPart debemos asegurarnos de que su propiedad AddSEOPropertiesFromSearch se encuentre en True, para hacer esto podemos exportar el WebPart.

Guardamos el Webpart con el nombre que deseemos.

 

Editamos el archivo con un editor (Ej. NotePad ++). Y verificamos que la propiedad este en True, si es así, no tenemos que hacer nada más, pero si está en False, tendremos que cambiarlo a True y volver a cargar el WebPart en la galería de WebParts como si fuera uno nuevo pues este tendremos que utilizar para soportar las características SEO y que emplee las propiedades SEO de nuestro catálogo.

Cross site publishing con listas de SharePoint

En el siguiente post, explicaré como emplear Cross-site publishing para listas de SharePoint las cuales no requieren ser consultadas desde la navegación superior o el Quick Launch de SharePoint.

Típicamente los elementos de este tipo de listas requerirán ser consultas mediante Content by search Webparts desde la página principal u otras páginas internas. Algunos de ejemplos de este tipo de listas podrían ser Noticias, Anuncios, Comunicados, Eventos, entre otros.

A continuación pasaré a detallar el paso a paso de implementación.

1. Lo primer que debemos hacer es crear nuestra estructura de términos y subtérminos con la agrupación requerida. En mi ejemplo yo he creado un Conjunto de términos llamado Clasificaciones Portal, ya que en este se encontrarán todos los tipos de contenidos que desearé presentar en mi portal. A continuación he creado un término por cada uno de los contenidos asociados a una lista (Audios, Eventos, Anuncios, Videos, Noticias, etc.).

Finalmente por cada uno de esos términos que representan una Categoría de información, cree sus propios subtérminos, de esta manera cada Anuncio por ejemplo podrá ser clasificado. Esta es la estructura mínima que se debería cumplir si es que deseamos publicar múltiples listas como catálogos mediante la característica de Cross-site publishing.

2. Una vez lista nuestra estructura de términos y subtérminos, debemos crear una columna de sitio asociada al conjunto de términos. En mi ejemplo he llamado a la columna «Clasificación» y el conjunto de términos asociado es «Clasificaciones Portal«. 

 

 3. Posteriormente crearé todas las demás columnas que necesite y las asociaré a un nuevo tipo de contenido. Para que funcione el esquema de cross-site publishing, existen 2 columnas muy importantes. 1 es la columna de clasificación que creamos antes y otra es la columna de URL, esta columna permitirá generar URLs amigables por cada uno de los elementos registrados en nuestra lista, favoreciendo a las capacidad de SEO.

 4. Ahora crearemos nuestra lista, en este caso crearé una lista que la llamaré Anuncios.

 5. A mi lista le asociaré el tipo de contenido de Anuncios antes, creado. Por otro lado, ubicaré la columna «Clasificación» y le daré clic,

6. Como vimos antes, durante la creación de esta columna, se asoció al conjunto de términos, sin embargo como yo únicamente quiero seleccionar los términos de clasificación de Anuncios, es posible modificar para que solo me muestre los subtérminos de la categoría de Anuncios. 

7. Así que seleccionamos el términos Anuncios y guardamos los cambios.

 

 

 8. Ahora podemos probar que funcione. Crear un nuevo elemento y seleccionamos los valores del campo Clasificación

 

 9. Podremos observar que únicamente se muestran los términos de clasificación de un Anuncio. Lo bueno es que con esto no hemos alterado la columna de sitio, es decir que cada lista que creemos podrá utilizar esta misma columna y editarla de la misma manera para que solo seleccione los términos que le correspondan.

 10. Ahora solo nos quedamos configurar a nuestra lista como catálogo. Seleccionamos Configuración del catálogo

 

 11. Seleccionamos Habilitar esta biblioteca como catálogo y Habilitar acceso anónimo.

 

 12. En campos de dirección URL de elementos del catálogo, seleccionamos nuestro campo de URL, en este caso URL del Anuncio. Y en jerarquía de Navegación seleccionamos nuestro campo Clasificación.

 

 13. Ahora nos dirigimos al Portal web de publicación el cual consumirá a los catálogos. Nos vamos a Configuración del sitio y seleccionamos Administrar conexiones al catálogo.

 

 14. Damos clic en Conectar a un catálogo.

15. Ubicamos nuestro catálogo de Anuncios y damos clic en Conectar.

 

 16. Dejamos marcado Integrar el catálogo en mi sitio, mediante esta opción se crearán URL relativas al Portal actual que será generadas mediante el campo de URL del catálogo.

17. En Jerarquía de la Navegación se mostrará automáticamente nuestro campo Clasificación y en Término raíz de la Jerarquía se mostrará también el término Anuncios.

18. Debemos marcar el check incluir término raíz en la navegación del sitio. Así se mostrará en la navegación en el primer Nivel Anuncios y en el segundo Nivel los términos de clasificación de los Anuncios.

19. Todo lo demás quedará por defecto. 

 20. Aquí podremos apreciar el resultado.

21. En la navegación del Portal podremos observar que ya se generó correctamente la replica del término Anuncios con su respectivo subtérmino.

 

22. Si deseamos que no se muestren los Anuncios en la navegación podemos desactivar la navegación global y local para el término Anuncios. 

Espero haya sido de utilidad!

Configurando variantes con Managed Navigation en SharePoint 2013 – Parte 2

En el post anterior (http://geeks.ms/blogs/marchena/archive/2015/01/24/configurando-variantes-con-managed-navigation-en-sharepoint-2013-parte-1.aspx), se explicó el procedimiento para configurar variantes en SharePoint Server 2013. En este post se explicará como configurar la navegación administrada e integrarla con las variantes.

La navegación administrada en SharePoint 2013 permite gestionar la navegación de un portal mediante el uso de términos y subtérminos de clasificación de contenidos. Es un mecanismo mucho más flexible que la navegación estructural que era muy limitada.

A continuación se explicará el paso a paso de la configuración de la navegación administrada y la sincronización entre sitios de variantes.

1. Primero ingresamos a nuestro sitio web de origen y vamos a la configuración del sitio.

2. Debajo de Aspecto damos clic en Navegación.

 3. Veremos que por defecto el sitio ya estará configurado con Navegación administrada

 

 4. En la parte inferior en Navegación administrada conjunto de términos veremos que existe el conjunto de términos Navegación de variantes que corresponde al sitio web de origen, así mismo veremos que se creo otro conjunto de términos para el sitio web de destino (Navegación de variantes (en-us)).

5. Damos clic en Herramienta de administración de almacén de términos para crear los términos que definirán nuestro árbol de navegación.

 

 6. En Navegación de variantes creamos nuestro árbol de navegación basado en términos y subtérminos. 

 

7. Al guardar los cambios podremos observar que en nuestro sitio web de origen ya se muestran los términos de navegación.

 8. Ahora creamos todas las páginas basados en los Page Layouts que deseemos ya que estas páginas serán asociadas a los términos de navegación antes definidos.

 9. Una manera de asociar las páginas a los términos de navegación es ir a la pestaña Página y dar clic en la opción Direcciones URL de página.

 10. A continuación dar clic en Agregar una dirección URL descriptiva a esta página.

11. Aquí seleccionaré el término que representará la ubicación de nuestra página en el árbol de navegación. Clic en Agregar.

 12.  Podremos ver que ya se encuentra la dirección especificada.

13. Ese procedimiento debemos realizarlo por cada una de las páginas. Ahora si queremos sincronizar los cambios podemos forzar la ejecución del timer job Variations Propagate Page Job Definition.

14. Si volvemos a la herramienta de administración de términos, veremos ahora que los términos se sincronizaron con éxito.

15. Por último, en la Navegación de variantes empleada por el sitio web de origen, por cada uno de los términos y subtérminos deberemos especificar el nombre de la etiqueta para el idioma Español e Inglés.

 

 16. Aquí vemos como se configura el valor de la etiqueta en Inglés.

 17. Una vez configuradas las etiquetas, solo nos queda ver los resultados. Un punto interesante de las variantes es que el Portal web muestra por defecto sitio web del idioma que tenga configurado en su sistema. Por ejemplo, si la configuración del idioma es Español (Perú).

 18. Cuando ingresamos al Portal, automáticamente seremos redirigidos al sitio web http://portal/es-pe/, donde a su vez podemos apreciar la navegación en idioma español. 

 

19. Si en cambio nuestra configuración de Idioma es English (United States).

 20. Automáticamente seremos redirigidos al sitio web en Inglés http://portal/en-us/ y se podrá apreciar la navegación en idioma Inglés. Esto debido a que manualmente especificamos el nombre del término tanto para el idioma Español como el idioma Inglés.

Y Listo. Eso fue todo, espero haya sido de utilidad!