SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

viernes, 27 de abril de 2012

Server Settings in Project Server 2010 [Help]

En caso que requieran ayuda sobre alguna de las configuraciones posibles de Project Server 2010, les dejo este interesante enlace de Technet en donde podrán encontrar todas las opciones, agrupadas de la misma forma que se encuentran en PWA.

Por cada opción podrán acceder al correspondiente artículo de Technet: http://technet.microsoft.com/en-us/projectserver/hh189421

image

Qué lo disfruten!

jueves, 26 de abril de 2012

¿Cómo configurar informes de análisis de uso en WSS 3.0?

Introducción

imageRequerimiento: conocer si los sitios creados en SharePoint se están utilizando y cómo se están utilizando.

Solución: utilizar informes de análisis de uso. Esta característica existe en MOSS 2007 y se explica en este artículo: http://surpoint.blogspot.com.ar/2010/05/informe-de-uso-del-sitio-en-sharepoint.html. Para WSS 3.0 el procedimiento es un poco más engorroso, pero la característica existe. Los informes son más limitados que los de MOSS.

 

¿Cómo activar los informes?

  1. Ir a Central Administration / Operations / Logging and Reporting / Usage analysis processing
  2. Dentro de Logging Settings clic en Enable logging (dejar los otros dos campos con los valores predeterminados o configurarlos de acuerdo a las necesidades)
  3. Dentro de Processing Settings clic en Enable usage analysis processing y configurar el horario de procesamiento de acuerdo a nuestras preferencias

image

Para más información sobre este punto, consultar el artículo de Microsoft How to configure Usage Analysis Processing on a Web server by using SharePoint Portal Server 2003 and Windows SharePoint Services or by using SharePoint Server 2007 and Windows SharePoint Services 3.0 en http://support.microsoft.com/kb/825541/

 

image¿Cómo encontrar los informes?

El segundo paso es esperar que aparezcan los informes. Para ello, entrar al sitio que queremos analizar:

Site Actions / Site Settings / Site Administration / Site usage report

O por URL a http://servidor/sitio/_layouts/usageDetails.aspx

Nota: si se desea ir a un sub-sitio, se debe acceder al informe específico de ese sub-sitio.

En caso que necesitemos ver un informe consolidado de una colección de sitios, el camino es el siguiente:

Site Actions / Site Settings / Site Collection Administration / Usage summary

Obtendremos un informe como el siguiente:

image

 

¿Por qué pueden no generarse los reportes?

Es posible que no estén los informes y aparezca una pantalla como la siguiente:

image

Las posibles causas de la falta del reporte son:

  • Aún no se han ejecutado los análisis por primera vez. Al menos hay que esperar un día.
  • Nadie ha entrado al sitio desde que activamos esta característica.
  • No hubo actividad en los últimos 31 días.

Una forma sencilla de verificar si la característica está activada en un determinado sitio es a través del siguiente comando de STSADM:

stsadm -o getproperty -propertyname job-usage-analysis -url http://server/sitio

Al ejecutarlo, si la característica está activida, arrojará un resultado como el siguiente

<Property Exist="Yes" Value="daily between 01:00:00 and 02:00:00" />

 

¿Qué informes puedo obtener?

En forma predeterminda obtengo un informe como el siguiente

Page / Month Summary

image

Otros reportes disponibles son los siguientes:

Page / Daily

image

User / Month Summary

image

User / Daily

image

OS / Mont Summary & Daily

image

Browser / Mont Summary & Daily

image

Referrer URL / Mont Summary & Daily

image

 

¿Dónde están registrados los datos?

Los logs de uso del sitio se almacenan en la carpeta que configuramos en el primer paso. Hay que tener en cuenta que se crea una carpeta por cada aplicación web, identificada por un GUID. Más información sobre este punto en: http://msdn.microsoft.com/en-us/library/bb814929(v=office.12).aspx

 

Conclusión

Con esta herramienta se puede obtener algo de información de uso de los sitios. Posiblemente se necesite encarar un enfoque más sofisticado, en caso que el requerimiento sea el de un análisis más repetitivo y metódico. En ese caso podría generarse un herramienta que analice la información registrada en los blogs.

Mi blog está en Facebook. Los espero…

Esta es la URL: https://www.facebook.com/surpointblog

Además de publicar los artículos míos, voy a tratar de compartir artículos de otros en la medida que me de el tiempo. Lo mismo estoy tratando de hacer con mi cuenta de Twitter: http://twitter.com/jpussacq/

Lo que tiene de interesante es que facilita un poco más la conversación. En definitiva, si son usuarios habituales de Facebook, los espero.

Nos vemos!

image

Client Object Model: trabajando con seguridad

Introducción

En el artículo anterior presentamos el nuevo modelo de objetos de cliente de SharePoint 2010.
SharePoint 2010 Development Platform Stack
En este nuevo artículo vamos a dar un paso más y realizar algunos cambios de seguridad en una librería de documentos utilizando la versión del modelo para JavaScript. Este es el requerimiento que tendremos que cumplir:
1) Al entrar a una librería de documentos llamada SPECIAL, el sistema mostrará una leyenda en la que nos indica que está evaluando el estado actual de la seguridad. Básicamente si está o no heredando permisos.
image
2) Si está heredando permisos, nos dará la posibilidad de quebrar esa herencia y asignar un grupo de AD con permisos de contribución.
image
2) Si no está heredando los permisos, nos dará la posibilidad de poder volver a heredar los permisos.
image
Asumo que el lector ya tiene un conocimiento previo de cómo trabaja el modelo de objetos de cliente y su forma asincrónica de procesamiento. Si no es así, la recomendación es leer el artículo mencionando más arriba.

Paso 1

El primer paso es crear los elementos para trabajar:
  • Creamos una librería de documentos.
  • Agregamos una CEWP en la vista de todos los elementos.
  • Creamos un archivo SpecialDocs.htm que será referenciada desde la CEWP.
  • Creamos un archivo SpecialDocs.js que realizará los cambios en seguridad
image

 

Paso 2

El segundo paso es crear el código HTML que nos muestra la leyenda y los botones. Lo guardaremos en nuestro archivo SpecialDocs.htm. Por simplificación incluiremos dentro de este código los estilos CSS a utilizar. El código es el siguiente:
<script src="/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/Internal/SpecialDocs.js"></script>

<table cellpadding=2 cellspacing=0 width='100%' id="de_leyenda" class="de_procesando" style='margin-bottom: 5px;' border=0>
<tr>
<td width=10 valign=center style='padding: 4px'><img src='/_layouts/images/exclaim.gif' alt='' /></td>
<td id="de_leyenda_texto">Detectando estado de seguridad especial....</td>
<td><button class="ms-ButtonHeightWidth" id="de_boton_activar" type="button" onclick="ExecuteOrDelayUntilScriptLoaded(de_activar(), 'sp.js');">Activar</button></td>
<td><button class="ms-ButtonHeightWidth" id="de_boton_inactivar" type="button" onclick="ExecuteOrDelayUntilScriptLoaded(de_inactivar(), 'sp.js');">Desactivar</button></td>
</tr>
</table>

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(documentos_especiales, "sp.js");
</script>

<style>
.de_procesando {
    background-color: #FCE996;
}
.de_activa {
    background-color: #AEDC95;
}
.de_inactiva {
    background-color: #D9000F;
    color: white;
}
#de_boton_activar {
    display: none;
}
#de_boton_inactivar {
    display: none;
}
</style>
Los puntos principales a tener en cuenta son:
  • La inclusión de la librería jQuery y de nuestra librería con el código JavaScript para modificar la seguridad de SharePoint.
  • La creación de una tabla con las tres posibles leyendas (y botones) que serán activadas mediante la utilización de CSS.
  • La utilización de “ExecuteOrDelayUntilScriptLoaded” para ejecutar los scripts.
  • La inclusión de una sección de estilos.

 

Paso 3

Aquí escribiremos nuestra primera función utilizando el modelo de objetos de cliente que se encargará de detectar si nuestra librería tiene permisos únicos o está heredándolos. El código es el siguiente:
function documentos_especiales() {
  
    var contexto = new SP.ClientContext.get_current();
    this.lista = contexto.get_web().get_lists().getByTitle('Special');
    
    contexto.load(lista, 'Title', 'HasUniqueRoleAssignments');
    
    contexto.executeQueryAsync(Function.createDelegate(this, this.de_ok), Function.createDelegate(this, this.de_error));

    }

function de_ok() {

    if ( !lista.get_hasUniqueRoleAssignments()) {
        $('#de_leyenda_texto').text('Seguridad especial NO ACTIVADA! Haga clic en "Activar" para usar permisos especiales.');
        $("#de_leyenda").removeClass("de_procesando").addClass("de_inactiva");
        $("#de_boton_activar").css("display","inline");
        }
    else {
        $('#de_leyenda_texto').text('Seguridad especial ACTIVADA. Haga clic en "Desactivar" para dejar de usar permisos especiales.');
        $("#de_leyenda").removeClass("de_procesando").addClass("de_activa");
        $("#de_boton_inactivar").css("display","inline");
        }

    }   
 
function de_error(sender, args) { 
    alert('ERROR: ' + args.get_message() + '\n' + args.get_stackTrace()); 
}

Los puntos principales a tener en cuenta son:


  • Es necesario hacer específica la información de permisos únicos, caso contrario, el modelo no la traerá por un tema de optimización:

    • contexto.load(lista, 'Title', 'HasUniqueRoleAssignments');
  • Cómo se está utilizando jQuery para modificar la leyenda e indicar qué botones mostrar.
  • La ejecución asincrónica.

 


Paso 4


En nuestra segunda función haremos lo siguiente:


  • Romperemos la herencia de permisos.
  • Agregaremos al grupo EJEMPLO con permisos de contribución.
  • Recargaremos la página.
function de_activar() {

  if ( confirm ("Confirma?") ) {
    
    var contexto = new SP.ClientContext.get_current();
    this.lista = contexto.get_web().get_lists().getByTitle('Special');

    // Rompo la herencia
    lista.breakRoleInheritance(false, false);

    // Defino el grupo a agregar
    this.usuario = contexto.get_web().ensureUser('DOMINIO\\EJEMPLO');

    // Defino el rol a agregar
    var coleccionRDB = SP.RoleDefinitionBindingCollection.newObject(contexto);
    coleccionRDB.add(contexto.get_web().get_roleDefinitions().getByType(SP.RoleType.contributor));

    // Asigno el usuario con el permiso correspondiente
    lista.get_roleAssignments().add(usuario, coleccionRDB);

    contexto.executeQueryAsync(Function.createDelegate(this, this.de_activar_ok), Function.createDelegate(this, this.de_activar_error));

  }
}

function de_activar_ok() {
    window.location.reload();
}   
 
function de_activar_error(sender, args) { 
    alert('ERROR: ' + args.get_message() + '\n' + args.get_stackTrace()); 
}

Los puntos principales a tener en cuenta son:


  • La forma en que se obtiene el usuario o grupo a agregar (ensureUser):

    • this.usuario = contexto.get_web().ensureUser('DOMINIO\\EJEMPLO');
  • La forma en que se definen los permisos con que se agregará a este grupo.
  • La necesidad de recargar la página para que vuelva a verificar el estado de la seguridad.

 


Paso 5


El último paso es sencillo, simplemente volveremos a heredar los permisos:
function de_inactivar() {

  if ( confirm ("Confirma?") ) {

    var contexto = new SP.ClientContext.get_current();
    this.lista = contexto.get_web().get_lists().getByTitle('Special');
    
    lista.resetRoleInheritance();
    
    contexto.executeQueryAsync(Function.createDelegate(this, this.de_inactivar_ok), Function.createDelegate(this, this.de_inactivar_error));

  }
}

function de_inactivar_ok() {
    window.location.reload();
}   
 
function de_inactivar_error(sender, args) { 
    alert('ERROR: ' + args.get_message() + '\n' + args.get_stackTrace()); 
}

 


 


Enlaces interesantes


No dejen de leer estos enlaces en donde encontrará mucha información de valor acerca del modelo de objetos de cliente:




Conclusión


En este artículo vimos como ejecutar código del modelo de objetos de cliente de SharePoint 2010 para alterar la seguridad de una librería. Creo que lo interesante radica en:


  • La simplicidad de uso.
  • No necesita ninguna instalación en el servidor.
  • La posibilidad de ejecutarlo desde una CEWP

Sin duda, un enfoque de programación muy potente. Espero que les haya resultado útil.

Hasta la próxima!

 
Juan Pablo Pussacq Laborde
SharePoint MVP | jpussacq.me
Twitter: @jpussacq | Facebook: facebook/surpointblog | Blog: surpoint.blogspot.com



Artículo publicado originalmente en revista COmpartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx


miércoles, 25 de abril de 2012

¿Cómo inhabilitar Master Projects en Project Server?

imageLa funcionalidad de Master Project permite a los usuarios manejar un nivel de agrupamiento, útil para el manejo de Programas de Proyectos. Esta funcionalidad permite agrupar proyectos (llamados sub-proyectos) con propósitos de planificación, análisis y reportes. Además permite que los sitios de proyecto se creen en forma estructurada, facilitando la navegación de los mismos.

Pero ¿Cómo podríamos inhabilitar esta característica?

La primer pregunta es por qué querríamos inhabilitarla. En principio hay varias razones posibles:

  • Nuestra organización no necesita esta característica, porque realiza planificaciones más sencillas o no maneja programas de proyectos.
  • La funcionalidad de proyectos maestros a veces es muy complicada de entender y hace que los usuarios armen ciertas “redes de tareas” que luego son difíciles de mantener.
  • Se desea impulsar otro tipo de funcionalidad como el manejo de entregables, que permite relacionar proyectos de una forma distinta, a través de listas de SharePoint integradas con Project y Project Server.
  • El rendimiento de esta funcionalidad puede no estar acorde a nuestras expectativas.

Si esta es nuestra situación, existe un método muy sencillo para inhabilitar esta funcionalidad. Aplica tanto a Project Server 2007 como a Project Server 2010.

¿Cómo inhabilitar el uso de proyectos maestros?

Ingresar a:

  • Server Settings
  • Operational Policies
  • Additional Server Settings
  • Enterprise Settings
  • Allow master projects to be saved and published to Microsoft Office Project Server 2007

Quitar la verificación de la opción.

image

image

Luego, cuando se intenta salvar un proyecto maestro, aparecerá un mensaje como el siguiente:

image

¿Pero que sucede si ya estaba usando esta funcionalidad?

Es posible que antes de inhabilitar esta funcionalidad necesitemos eliminar algunos proyectos maestros que ya tengamos almacenados.

Los pasos básicos para eliminar proyectos maestros son:

  1. Desvincular los sub-proyectos
  2. Convertir los sub proyectos en proyectos
  3. Eliminar los proyectos maestros

Estas acciones deben ser realizadas en un orden específico:

1. Desvincular los sub-proyectos

En el proyecto maestro:

  1. Seleccionar la tarea resumen correspondiente al sub-proyecto
  2. Ir a Task Information – Advanced
  3. Deschequear Link to Project
  4. Eliminar esta tarea resumen
  5. Guardar y publicar el proyecto maestro

2. Convertir los sub proyectos en proyectos

Ir al sub proyecto:

  1. Hacer algún cambio (por ejemplo el nombre de una tarea)
  2. Guardar y publicar

Nota: si se está utilizando Project Server 2010, esta acción no deberá ser realizada desde PWA porque no tiene efecto.

3. Eliminar los proyectos maestros

Borrar el proyecto principal. Existen dos alternativas:

  1. Desde Project Pro: se borra el proyecto y el sitio
  2. Desde PWA (Server Settings): se puede indicar si borra el proyecto y el sitio o sólo el proyecto.

Importante: si los sub-proyectos poseen sitios de proyecto creados, el sitio del proyecto maestros no se borrará y aparecerá un mensaje en la cola de Project Server como el siguiente:

image

Error summary/areas:
An attempt to delete %s failed because that site has children. Delete the child sites from this site and try again.
WSSSPWebHasChildren
Queue
GeneralQueueJobFailed
Error details:

Lo que en realidad sucede es que no se puede eliminar el sitio de proyecto padre, lo que en principio trae dos problemas:

  • Queda activo un sitio que no se utiliza
  • Aparece como opción de navegación desde los viejos sub-proyectos lo cual genera confusión.

Como solución, se podría dejar un mensaje dentro del sitio de proyecto padre que explique que ese sitio está inactivo. Otro camino posible sería exportar e importar los sitios para subirlos de nivel, pero esto requiere un análisis más profundo.

Aquí terminamos, espero haya sido útil.

Hasta la próxima.

viernes, 20 de abril de 2012

¿ #ProjectServer 2010 y #SQLServer 2012 son compatibles?

La respuesta está en el siguiente artículo, pero como adelanto les digo que necesitamos SP1 de Project Server y de SharePoint:
PROJECT SERVER 2010. COMPATIBILIDAD SQL SERVER 2012.

miércoles, 18 de abril de 2012

Abrir archivos PDF en SharePoint 2010

No dejen de ver este script propuesto por Juan Manuel Herrera para automatizar esta tarea con Power Shell:
Script para permitir a las bibliotecas abrir los archivos PDFS en SharePoint 2010

¿Cómo crear una carpeta usando Client Object Model?

Les dejo este ejemplo de SharePoint Kings en donde nos muestran cómo crear una carpeta usando el modelo ECMAScript de COM. Espero les sirva:
Create Folder in library using ECMA client object model

martes, 17 de abril de 2012

Manejo de errores en Client Object Model

Una breve introducción al manejo de excepciones en el modelo de objetos de cliente de SharePoint via SharePont Kings, que además nos explica diferencias entre código administrado y ECMA: Exception handling in client object model

viernes, 13 de abril de 2012

¿Cómo eliminar referencias circulares en Project?

Algunos de ustedes habrán tenido la mala suerte de luchar con las referencias circulares en Project. En una consulta de los foros de Microsoft, Sapna Shukla nos explica como eliminarlas. El resumen es:

  • La causa principal son las relaciones en las tareas sumarias.
  • Con lo cual la solución pasa por evitar ese tipo de relaciones

Transcribo cómo nos propone eliminarlas:

The most identifiable cause of circular relationships is links on summary lines. Turn off automatic calculation for a while from File - Options - Schedule -Calculation Tab, and then go to View - > Outline -> All sub tasks to expand the file. Now delete all summary links from predecessors n successors to elimniate any cause.

Yet another quick way is create a Custom field and copy all Predecessors into it and delete all values from Predecessor Column; now copy values from this custom field and paste as it is in Predecessor column now it should prompt on pasting which all links are errorneous and leading to Circular dependencies, you can delete them.

Sapna S

Fuente: http://social.msdn.microsoft.com/Forums/en-US/projectprofessional2010general/thread/4c9a1531-0998-4a2e-9052-6dfcabd8602f

jueves, 12 de abril de 2012

¿Cómo actualizar Project Server 2007 a SP3?

En este breve artículo vamos a proporcionar algo de información a aquellas personas que requieran actualizar una instalación de Project Server 2007 a SP3.

 

Introducción

Una instalación de Project Server consta de al menos tres productos:

  • Project Server
  • Project Pro
  • SharePoint

Para actualizar al SP3, no es necesario tener instalado previamente el SP2. Como se trata de una actualización acumulativa, incluye todos los parches que eran parte del SP1 y del SP2. Esto aplica tanto a Project Pro, Project Server y SharePoint.

Tener en cuenta que el SP3 contiene todos los paquetes de actualizaciones hasta el paquete de Agosto de 2011 inclusive. No incluye el de Octubre de 2011.

 

Enlaces de descarga de SP3 – PROJECT PRO 2007

 

Enlaces de descarga de SP3 – PROJECT SERVER 2007

 

Enlaces de descargar SP de – WSS 3.0

 

Cómo instalar

Primero debemos instalar el SP3 de SharePoint, luego Project Server. En general aplican las mismas guías descriptas en este artículo: http://technet.microsoft.com/en-us/library/cc263467(office.12).aspx.

Luego de instalar los paquetes, es recomendable ejecutar el configurador de SharePoint desde la línea de comando, tal cual nos recomienda este artículo: http://blogs.technet.com/b/elfarodeprojectserver/archive/2011/10/26/project-2007-amp-project-server-2007-service-pack-3.aspx

psconfig -cmd upgrade -inplace b2b –wait

 

Otros enlaces interesantes

miércoles, 11 de abril de 2012

Delegados en #ProjectServer 2010

Les dejo este interesante artículo que explica cómo funciona la característica de delegados en Project Server 2010:

http://blogs.msdn.com/b/project/archive/2010/03/19/project-2010-introducing-delegates.aspx

clip_image016