Dec22

Problemas con la Propiedad Administrada ModifiedBy

Tags: Bugs, MOSS/WSS

La propiedad administrada ModifiedBy no se indexa correctamente, en una instalación de Moss por defecto si accedemos a la propiedad administrada podemos ver que el número de elementos que se indexan con esta propiedad es 0.

clip_image002

Esto implica que no se pueden hacer búsquedas sobre esta propiedad y que si no tiene elementos indexados que se correspondan con ella, básicamente es inútil.

Pero como para casi todo en la vida hay una solución:

1. En la administración central ir a la propiedad administrada en cuestión y editar sus propiedades:

clip_image004

clip_image006

clip_image008

2. Para la propiedad administrada ModifiedBy podemos ver que tiene dos propiedades rastreadas asignadas:

Ows_Modified y ows_Modified_x0020_By

clip_image010

Pero a esas dos propiedades administradas hay que añadirle otras 2:

ows_Last_x0020_Modified(Text) y Office:8(Text)

Al añadir Offie:8 hay que tener especial cuidado ya que como se muestra en la siguiente imagen hay dos propiedades rastreadas que se llaman Office:8, la que hay que añadir en este caso es la primera al filtrar por Office, aunque he visto algún caso en que solo aparece una, supongo que debido a que la otra propiedad rastreada no estará informada.

clip_image012

Yo también marcaría el checkbox que permite usar esta propiedad en scopes, pero bueno eso ya no es imprescindible para nuestro propósito, entonces ahora ModifiedBy debería tener esta pinta:

clip_image014

3.Comprobar que la propiedad Office:8 que hemos añadido es la adecuada:

Como antes mencionaba hay dos propiedades rastreadas Office:8, para asegurarnos que la que hemos añadido al mapeo de la propiedad administrada ModifiedBy es la correcta, prodremos hacerlo en la pestaña de Propiedaes rastreadas, dentro de la carpeta Office.

clip_image016

clip_image018

Si la propiedad rastreada asociada a nuestra propiedad Administrada tiene como ID: 'F29F85E0-4FF9-1068-AB91-08002B27B3D9' es que es la correcta, para comprobarlo hay que entrar a las propiedades de la propiedad rastreada y verificar el ID.

clip_image020

clip_image022

4. Hacer un Rastreo complete(Full Crawl)

clip_image024

Y ahora los elementos que se encuentran después del rastreo con esta propiedad es mayor que 1000, o lo que es lo mismo que si hacemos una búsqueda por esta propiedad administrada nos va a devolver resultados.

clip_image026

Si al realizar el full crawl sigue sin contener elementos quizás sea necesario resetear el contenido indexado.

Publicado: 22-Dec-08 | 0 Comentarios | 0 Enlaces a este post

Dec16

El mundo según MOSS: Master Pages, layouts, Ghosted y Unghosted

Tags: MOSS/WSS

Recientemente en mi proyecto actual que ya está en fase de producción, nos hemos visto en la necesidad de realizar cambios sobre la página maestra y sobre los layouts.

En nuestro proyecto las páginas maestras y los layouts los desplegamos mediante una feature que entre otras muchas cosas carga en la librería de páginas maestras, nuestros layouts y páginas maestras personalizadas.

Ante la posibilidad de desplegar de nuevo nuestra feature en producción cuando todo está funcionando debidamente, Enrique Blanco me comentaba que modificando nuestra página maestra, que desplegamos mediante una feature, en la carpeta

12/features/nombrefeature/Mi.master

Y haciendo un “iisreset”, los cambios se verían reflejados en MOSS, yo no creía que esto fuese a funcionar, pero ya ves, una vez mas MOSS me quitó la razón.

Es decir yo mediante una feature desplego mi página maestra y una serie de layouts, que se almacenan en la librería de páginas maestras, y realizando una modificación directamente sobre los ficheros de la feature y reiniciando ISS, la librería de páginas maestras se actualiza a partir de los ficheros contenidos en la carpeta de la feature.

Yo siempre pensé que esto lo almacenaba en BBDD, que cuando tu mediante una feature generabas un nuevo elemento en, por ejemplo, la librería de páginas maestras, este nuevo elemento lo almacenaba en BBDD, pero bueno así se demuestra que al arrancar el ISS, MOSS tiene en cuenta los elementos de la librería de páginas maestras y genera una estructura en memoria teniendo en cuenta el origen de cada elemento que esté Ghosted y actualizándolos con respecto a su origen físico en vez de respecto a BBDD que serían los elementos UnGhosted.

Ya investigando un poco más fruto de mi cabezonería ante las cosas que no se comportan como yo creo, me he dado cuenta que la forma en que aprovisionamos archivos mediante una feature, la única que yo conozco, esta es la forma en que nuestra feature los despliega:

<Module Name="AddMasters" Url="_catalogs/MasterPage" RootWebOnly="TRUE">

<File Url=”[Mi.master]" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >

<Property Name="ContentType" Value="[tipoContendio ]" />

<Property Name="PublishingPreviewImage" Value="" />

<Property Name="MasterPageDescription" Value="[descripcion]" />

</File>

</Module>

Al especificar que el tipo de archivo es GhostableInLibrary, especificamos que este archivo existe físicamente, por lo tanto es lógico que los cambios realizados sobre el archivo físico se vean reflejados en la estructura de MOSS.

Evidentemente cuando cargamos elementos en la librería de páginas maestras, todos esos elementos deben ser GhostableInLibrary ya que los aprovisionamos mediante un fichero.

Es más si borramos la carpeta de la feature que contiene nuestra master, MOSS muestra un error y el fichero de log:

w3wp.exe (0x1310)    0x0D64 Windows SharePoint Services    General 72ks Medium Cannot get ghost document: Features\NombreFeature\NuevoLayout.aspx   

w3wp.exe (0x1310)     0x0D64 Windows SharePoint Services   General 8e2s Medium  Unknown SPRequest error occurred. More information: 0x80070002      

En el que indica que se ha producido un error al acceder al elemento “Ghosted”, en este caso mi layout, en la ruta de la carpeta que lo despliega.

Moraleja: hay que tener bien clarito que implica que algo esté Ghosted o Unghosted :

Y de propina otra hablando acerca del rendimiento de las páginas Ghosted y Unghosted de Mario Cortés:

(EDITADO)Y otro enlace mas:

Publicado: 16-Dec-08 | 2 Comentarios | 0 Enlaces a este post

Dec10

PowerShell & SharePoint I

Tags: MOSS/WSS, PowerShell

Recientemente he leído varios artículos acerca del potencial de la PowerShell en combinación con SharePoint y como en alguna ocasión he usado PowerShell, he empezado a investigar un poco acerca de su utilidad en entornos SharePoint.

Espero que este sea el primero de una serie de post dedicados a las posibilidades que ofrece PowerShell en combinación con MOSS.

Para los que no estén familiarizados con que es PowerShell, se podría resumir como un entorno de línea de comandos, con un lenguaje propio de script que permite implementar comandos (cmdlets) y en el que también permite cargar ensamblados .NET.

Una vez tenemos PowerShell instalado, lo ejecutamos, y se presenta una especie de MS-DOS .

1. Cargar la dll de Sharepoint

{System.Reflection.Assembly}::LoadWithPartialName(“Microsoft.Sharepoint”)

clip_image002[4]

2. Obtener un sitio de SharePoint

$siteurl = “http://localhost”

$site = new-object Microsoft.Sharepoint.SPSite($siteurl)

clip_image004[4]

Se puede acceder al contenido de la variable sitio simplemente ejecutando el siguiente comando:

$site

clip_image006[4]

Para obtener todos los miembros de sitio:

$site | get-member

clip_image008[4]

Y podemos mostrar los subsitios de nuestra web en formato de tabla mostrando distintas propiedades:

$site.AllWebs | format-table Url, ID, Name, AllUsers

clip_image010[4]

3. Obtener una lista de un sitio

Primero obtenemos el sitio donde se encuentra la lista y accedemos al objeto SPWeb

$siteUrl = “http://localhost:91”

$spSite = new-object Microsoft.Sharepoint.SPSite

$spWeb = $spSite.OpenWeb()

clip_image012[4]

A partir del objeto SPWeb accedemos a la lista:

$listName =”lista1”

$spList = $spWeb.Lists[$listName]

clip_image014[4]

4. Agregar una columna a una lista

A la lista que anteriormente habíamos obtenido en PowerShell, vamos a añadirle una nueva columna desde PowerShell:

clip_image016[4]

Mediante el comando

$spList.Fields.Add

Accedemos a los posibles valores del método para añadir nuevos campos:

clip_image018[4]

Y con este comando creamos una nueva columna:

$spList.Fields.Add(“Nueva Columna”, “Text”,0)

clip_image020[4]

clip_image022[4]

Algunos enlaces:

· Descargar Windows PowerShell 1.0

· SharePoint PowerShell for Beginners

· SharePoint PowerShell for Beginners - continued

Publicado: 10-Dec-08 | 0 Comentarios | 0 Enlaces a este post

Dec01

Microsoft Office Groove 2007

Tags: Groove

Hace un par de meses tuve la oportunidad de asistir a un training de Groove en Microsoft, a raíz del cual obtuve la certificación de Groove 2007, la verdad es que un producto bastante desconocido y en algunos casos puede resultar ser una solución interesante. En este articulo se detalla cómo se usaron SharePoint y Groove en la coordinación de la ayuda a las víctimas del Huracán Katrina.

Está incluido en ediciones Enterprise y Ultímate de Microsoft Office, y así a primera vista puede parecer similar a una aplicación de mensajería instantánea, como el Messenger o algo así, pero además incorpora la posibilidad de compartir espacio y aplicaciones con otros usuarios de Groove.

A ver si soy capaz de explicarlo con algo más de detalle:

Microsoft Office Groove 2007

Microsoft Groove es un software de escritorio, que se comunica mediante P2P, diseñado para la colaboración y la comunicación de los miembros de pequeños grupos.

El paradigma central Groove es el conjunto de archivos que se comparten, además de algunas herramientas de colaboración, esto junto con los usuarios que poseen acceso a estos recursos se denomina “workspace”.

Un usuario de Groove crea un workspace e invita a otros usuarios a formar parte de él, a cada uno de estos usuarios, al responder afirmativamente al proceso de invitación, se le copia el workspace en su disco duro ,todos los datos cifrados. A partir de este momento todos los cambios que se realicen en el workspace se sincronizarán con los diferentes miembros cuando estos se encuentren conectados.

Entre las principales características de Microsoft Groove cabe destacar que permite sincronizar archivos con librerías de WSS 3.0 y MOSS, herramientas de colaboración (foro, calendario, Notepad compartido, chat), indicadores de presencia de los miembros, alertas, la posibilidad de alojar formularios InfoPath para recoger información de una manera estructurada…

Algunos enlaces interesantes:

· Demo de Groove

· Extending SharePoint with Groove Collaboration

· Microsoft Office Groove 2007 Overview

· Groove User Group

Publicado: 01-Dec-08 | 0 Comentarios | 0 Enlaces a este post

Sep29

¿2000 elementos por carpeta como máximo? No, ahora son 3000.

Tags: MOSS/WSS, Capacity Planning

Según el Capacity Planning for Windows SharePoint Services las limitaciones aconsejables cuando nos enfrentamos al diseño de una taxonomía Sharepoint es no superar estos límites:

image

En caso de superar alguno de estos, el rendimiento de Sharepoint parece ser que se vería mermado.

Pero hace pocos días Microsoft publicó este “WhitePaper”: “SharePoint Performance Optimization - How Microsoft IT Increases Availability and Decreases Rendering Time of SharePoint Sites”

Manage large lists for performance  
Having large lists by itself is not necessarily a performance issue. When SharePoint Server renders the many items in those lists, that can cause spikes in render times and database blocking. One way to mitigate large lists is to use subfolders and create a hierarchical structure where each folder or subfolder has no more than 3,000 items.”

Según esto parece que el nuevo límite son 3000 elementos por carpeta, evidentemente esto son recomendaciones para no perjudicar el rendimiento y supongo que habrá taxonomías que soporten 3000 elementos sin reducir su rendimiento y otras que no. Tan solo son recomendaciones, sin embargo al hilo de esto me surge la pregunta de si las limitaciones de alguna de las otras recomendaciones no se deberían ver afectadas de igual manera.

Publicado: 29-Sep-08 | 0 Comentarios | 0 Enlaces a este post

Sep25

iFilters para documentos PDF(FoxIt y Adobe iFilter 8)

Tags: MOSS/WSS

Los ifilters son plugins que permiten al servicio de indexación de MOSS(o al Windows desktop Search) indexar diferentes formatos de archivos, por la tanto se pueden realizar búsquedas sobre ellos.

Normalmente uno de esos iFilter que hay que añadir es para buscar en documentos PDF.

Para los iFIlters de PDF parece que hay dos opciones claras por un lado uno propio de Adobe iFilter 8 y por el otro lado FoxIt aunque en la siguiente comparativa parece que el de FoxIt presenta mejores resultados, también hay que destacar que la versión de producción del FoxIt es de pago mientras que el de adobe es gratuito.

Independientemente de cuál se elija, dependiendo de las características de las máquinas, la instalación es muy sencilla. Excepto la versión de 64 bits de Adobe que es un poco mas compleja (instrucciones para instalar la versión de 64 bits de Adobe iFilter).

Una vez instalado el iFilter podremos buscar contenidos de documentos de PDF, y faltaría un pequeño detalle cómo es que en MOSS aparezca el icono del PDF asociado a los documentos PDF en vez del icono genérico de documento en blanco.

  1. Descargar el icono para los documentos pdf. Por ejemplo este de Adobe.
  2. Guardar el icono en la ruta TEMPLATES\IMAGES (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\template\images)
  3. Abrir el archivo docicon.xml. (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\template\xml\docicon.xml)
  4. Añadir un nuevo elemento al mapeo en la categoria ByExtension.

    <Mapping Key="pdf" Value="pdficon_small.gif" />

    Ten en cuenta el nombre que has usado para el icono que quieres asociar.

  5. Guarda el archivo docicon.xml
  6. En el SSP de la administración central, crear un nuevo tipo de archivo pdf.
  7. Reinicia el IIS

image .

image

Ahora en tus búsquedas ya aparecerán los documentos PDF y tendrán un icono asociado.

Publicado: 25-Sep-08 | 0 Comentarios | 0 Enlaces a este post

Sep12

Ejecutar de manera inmediata de un job con stsadm

Tags: MOSS/WSS, stsadm

Desde la herramienta de línea de comandos STSADM es posible ejecutar inmediatamente un job.

Para esto necesitamos tener instaladas las extensiones de stsadm que pueden encontrarse en:

http://www.thelapointes.com/blog/Lapointe.SharePoint.STSADM.Commands.wsp

Con este vínculo obtenemos un archivo con extensión wsp (archivo de solución de sharepoint) que es necesario añadir al almacén de soluciones (Añadir y desplegar una solución en sharepoint)

Una vez la solución esta implementada en nuestra máquina podremos hacer uso de estas extensiones.

Para más información acerca de otras funcionalidades de estas extensiones, puede consultarse: http://stsadm.blogspot.com/

clip_image002

Ahora en la línea de comandos ejecutaremos las instrucciones necesarias para ejecutar un job:

El comando runtimerjob será el que usaremos para ejecutar nuestro job. Como con cualquier otro comando de stsadm podemos consultar su ayuda.

clip_image004

La sintaxis del comando sería la siguiente:

clip_image006

clip_image008

 

Publicado: 12-Sep-08 | 0 Comentarios | 0 Enlaces a este post

Sep10

Añadir y desplegar una solución en Sharepoint

Tags: stsadm, MOSS/WSS

El despliegue de una solución en Sharepoint puede realizarse de varias maneras, una de ellas es incluir esta solución o un conjunto de soluciones en una feature; pero la que aquí se va a tratar es la opción de desplegar una solución usando stsadm y la administración de Sharepoint.

Para esto necesitaremos previamente tener nuestra solución, en nuestro caso vamos a desplegar una solución de extensiones de stsadm, esto es transparente ya que la funcionalidad de la solución es independiente de su modo de despliegue.

clip_image002

En línea de comandos desde la ruta donde se encuentra el ejecutable stsadm ejecutaremos la siguiente instrucción.

clip_image004

Y de esta manera tenemos en nuestro almacén de soluciones esta nueva solución, esto puede verse usando las funciones de administración de Sharepoint como se muestra a continuación

clip_image006

En la administración de soluciones veremos tanto las soluciones desplegadas como las que no, en nuestro caso nuestra solución esta sin desplegar ya que solo la hemos copiado al almacén de soluciones.

clip_image008

La propia solución nos redirige a una página donde podremos implementarla o desplegarla.

clip_image010

Y también deberemos de especificar cuando queremos desplegar la solución.

clip_image012

Una vez desplegada la nueva solución aparecerá como implementada así como su scope (ámbito)

clip_image014

La implementación de la solución se corresponde con el comando “deploysolution” de stsadm.

Publicado: 10-Sep-08 | 2 Comentarios | 1 Enlace a este post

Sep03

Importación/Exportacion de las propiedades de los perfiles de MOSS

Tags: MOSS/WSS

Una tarea típica a la hora de replicar entornos, y bastante engorrosa, es la de replicar las propiedades del perfil, para facilitar este paso, existe una herramienta en codeplex.com: Sharepoint 2007 Shared Services Provider.

La sintaxis para su uso es la siguiente:

Para exportar las propiedades de los perfiles a un fichero xml:

ProfilePropertyMgr.exe -url <url> -filename output.xml –export

Y para importarlas:

ProfilePropertyMgr.exe -url <url> -filename input.xml -import

Publicado: 03-Sep-08 | 0 Comentarios | 0 Enlaces a este post

Sep01

VPC: Compactar el disco duro en una máquina virtual

Tags: Virtual PC

A medida que usamos una máquina virtual, el disco duro va creciendo ya que cada vez que necesitamos más espacio del disponible va aumentando el tamaño del archivo de disco duro, y aunque borremos datos, podemos ver que el tamaño del archivo físico del disco duro virtual no disminuye, esto es debido a que el software del Virtual Pc no libera de manera adecuada el espacio correspondiente …, por lo tanto muchas veces es interesante redimensionar estos discos duros para que su tamaño se ajuste a su contenido y al archivo físico del disco duro no ocupe más de lo necesario.

Para esto solo hay que seguir los siguientes pasos:

1. Borrar todos los archivos no necesarios de la máquina virtual a compactar: temporales, papelera de reciclaje, IE cache….,CCleaner funciona bastante bien para esto.

2. Desfragmentar el disco duro tantas veces como puedas, hasta que ya no se desfragmente mas.

3. En el menú CD de la máquina virtual ->Capturar Imagen de ISO, que dependiendo del idioma de la instalación se encuentra en :

C:\Archivos de programa\Microsoft Virtual PC\Virtual Machine Additions

clip_image002

4. Ejecutar el Precompactor, normalmente intentará ejecutarse automáticamente sino en mi PC ejecutamos el disco montado con el Precompactor.

5. Apagar la máquina virtual.

6. En la configuración de la máquina virtual, ejecutamos el asistente para el disco virtual sobre el que se ha ejecutado el Precompactor.

clip_image004

Nos permitirá elegir la ubicación del Nuevo disco o sobrescribir el existente, si elegimos una nueva ubicación luego habría que modificar la ruta del disco duro de la maquina virtual y borrar el anterior.

La reducción que se consigue depende mucho de cada entorno, pero yo en algún caso he llegado a disminuir el espacio que ocupa una maquina virtual en un 30%.

Publicado: 01-Sep-08 | 0 Comentarios | 0 Enlaces a este post