SharePoint Online: Error al acceder a los ámbitos de búsqueda!

Simplemente comentar que desde hace varias semanas resulta imposible acceder a la gestión de los ámbitos de búsqueda de nuestros sitos de SharePoint Online debido a un problema conocido por parte de Microsoft y en el que parece, y espero, que estén trabajando en solucionarlo. La referencia a dicho problema la he encontrado en este post del foro de Office 365 de la comunidad inglesa y este es el error de marras:

image image

Lógicamente en SharePoint Online no tenemos posibilidad de saber que está pasando y no queda otra que o abrir un caso de soporte o bien postear el problema en los foros. El problema lo podéis encontrar tanto en planes de tipo P y de tipo E y condiciona la creación de nuevos ámbitos de búsqueda, no afectando a los creados anteriormente.

SharePoint 2010: Problemas al desplegar artefactos desde VS 11 Beta!

Si como en mi caso, estáis empezando a usar VS 11 Beta (cada vez me gusta más) para crear y desplegar artefactos para SharePoint 2010, puede ser que os encontréis con algún que otro error relativo a la URl especificada para el despliegue en el asistente inicial de configuraicón del proyecto. Para solucionarlo simplemente reemplazar la url de la forma http://<NombreMaquina&gt; por http://localhost y listo.

image image

SharePoint 2010: Como crear external content types a partir de procedimientos almacenados!

Como sabéis, a la hora de integrar sistemas externos en SharePoint 2010 contamos con los denominados tipos de contenido externos o ECTs que son parte de los Business Connectivity Services y que nos permiten modelar la conexión a un sistema externo, las entidades que se van a consumir y las operaciones a realizar. En el caso de que nos estemos conectando a una base de datos, podemos definir esas operaciones a través de llamadas a procedimientos almacenados como podréis ver en los siguientes ejemplos:

SharePoint2010_thumb

Visual Studio 11 y SharePoint 2010: Novedades en desarrollo para SharePoint (IV)!

Siguiendo con la serie de posts sobre las novedades en desarrollo para SharePoint 2010 que tenemos en Visual Studio 11 (VS 11) Beta, en esta ocasión vamos a ver que cambios podemos encontrarnos con respecto a la preview de VS 11. Pero antes, os recuerdo los posts previos de la serie:

Para ver las novedades:

  • Iniciamos VS 11 Beta. El primer cambio es el ya conocido de interfaz del que tanto se ha hablado por la red.
  • A continuación procedemos a crear un proyecto para SharePoint 2010. Como veis, disponemos de 5 tipos de proyectos: SharePoint 2010 Project (el equivalente al proyecto vacío para SharePoint en VS 2010), SharePoint 2010 Silverlight Web Part, SharePoint 2010 Visual Web Part, Import SharePoint 2010 Solution Package  e Import Reusable SharePoint 2010 Workflow. Elegimos la plantilla SharePoint 2010 Project.
  • En el asistente de configuración elegimos como tipo de despliegue “Deploy as a sandboxed solution”.
image image image
  • La estructura del proyecto que se crea es la esperada, aunque con el nuevo Look & Feel de VS 11Beta.
  • Añadimos al proyecto un elemento de tipo WebPart (clásico).
  • A continuación se muestra el editor de código para que dotemos de la correspondiente lógica a la WebPart.
image image image
  • Codificamos el método CreateChildControls()…por ejemplo:
   1: protected override void CreateChildControls()

   2: {

   3:     Label lblInformation =

   4:         new Label();

   5:     lblInformation.Text =

   6:         "Hellow world from CloudShare Dev";

   7:     this.Controls.Add(lblInformation);

   8: }

  • Compilamos y depuramos la WebPart en el entorno de desarollo y cuando estemos listos, procedemos a publicarla ya sea en SharePoint On-Premise o en SharePoint Online (SPO) utilizando la opción “Publish”.
  • En mi caso he especificado un sitio de SPO.
  • Cuando se soliciten las credenciales de Office 365, las añadimos.
image image image
  • Por supuesto, el proceso de despliegue de la WebPart en SPO es el mismo que tenemos en nuestro entorno local.
   1: ------ Build started: Project: CloudShareWP, Configuration: Debug Any CPU ------

   2:   CloudShareWP -> c:\users\jgonzalez\documents\visual studio 11\Projects\CloudShareVSDemoProject\CloudShareWP\bin\Debug\CloudShareWP.dll

   3:   Successfully created package at: c:\users\jgonzalez\documents\visual studio 11\Projects\CloudShareVSDemoProject\CloudShareWP\bin\Debug\CloudShareWP.wsp

   4: ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

   5: ------ Publish started: Project: CloudShareWP.wsp ------

   6: Add Solution:

   7:   Uploading solution 'CloudShareWP.wsp' ...

   8: ========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

  • Concluido el proceso de despliegue, se abre el navegador mostrando la galería de soluciones Sandbox. Localizamos la solución en cuestión y la activamos.
  • En una página de SharePoint, insertamos la WebPart.
  • Comprobamos que la WebPart está operativa en dicha página.
image image image

SharePoint 2010: Puertos necesarios para un despliegue en modo granja!

Esta cuestión la planteaban el otro día en los foros de SharePoint en TechNet por lo que para disponer de la referencia a mano, os dejo un par de enlaces en los que se recogen los puertos que se necesitan para un despliegue en modo granja para SharePoint 2010:

clip_image002

SharePoint Online: ¿Se pueden desplegar un validador de soluciones Sandbox?

Como sabéis, una de las opciones de despliegue de soluciones en SharePoint 2010 es el denominado despliegue en modo Sandbox que implica cargar el .WSP generado en la galería de soluciones a nivel de colección de sitios. Por defecto, tanto SharePoint 2010 como SharePoint Online disponen en dicha galería de validadores de soluciones cuyo cometido es precisamente ese: validar que la solución cargada y que se quiere activar es correcta para ser usada en los sitios de la colección. Este validador es totalmente dummy en SharePoint On-Premise, y no lo es en SharePoint Online ya que cuenta con cierta inteligencia que controla que la solución Sandbox desplegada no contenga referencias prohibidas por ejemplo. Una pregunta que nos podemos hacer es si es posible desplegar validadores de soluciones en SharePoint Online y la respuesta es que no ya que la clase SPSolutionValidator de la que hereda no está permitida para desplegar en una solución de tipo Sandbox. Finalmente, os dejo un ejemplo de validador personalizado: http://www.zimmergren.net/technical/sp-2010-validate-sandboxed-solutions-using-spsolutionvalidator.

image

SharePoint Online: Como permitir que usuarios anónimos escriban en una lista que requiere autenticación!

Cuando nos encontramos con la necesidad de qué usuarios anónimos puedan escribir datos en una lista de  SharePoint Online, tenemos que recurrir a un pequeño desarrollo que haga posible esto teniendo en cuenta que no es posible hacer elevación de privilegios:

  • En VS 11 Beta, creamos un proyecto de tipo SharePoint 2010 Project.
  • Elegimos como tipo de despliegue “Deploy as a sandboxed solution”.
  • Añadimos una característica al proyecto que configuramos de acuerdo a nuestras necesidades. Añadimos un Feature Event Receiver a la feature.
image image image
  • Codificamos el manejador para el evento FeatureActivated() de forma que configuremos el acceso anónimo a una lista. Lo que tenemos que hacer por una parte romper la herencia de permisos de la lista con respecto al sitio principal para a continuación especificar la secuencia de permisos a aplicar par el caso de acceso anónimo (propiedad AonymousPermMask64).
   1: SPWeb web = properties.Feature.Parent as SPWeb;

   2: SPList list = web.Lists["Productos"];

   3: // Chequear si tiene permisos unicos

   4: if (!list.HasUniqueRoleAssignments)

   5: {

   6:     list.BreakRoleInheritance(true);

   7:     //Aseguramos que cada uno pueda editar sus propios items

   8:     list.WriteSecurity = 2;

   9:  

  10:     // Concedemos permisos a usuarios anonimos

  11:     list.AnonymousPermMask64 =

  12:         (SPBasePermissions.Open |

  13:          SPBasePermissions.OpenItems |

  14:          SPBasePermissions.ViewFormPages |

  15:          SPBasePermissions.ViewListItems |

  16:          SPBasePermissions.AddListItems);

  17:  

  18:     list.Update();

  19: }

  • Lo siguiente simplemente es desplegar la solución Sandbox en SharePoint Online, proceso que con VS 11 Beta se simplifica.
  • Activamos la solución en la galería de soluciones Sandbox del sitio.
  • Activamos la correspondiente característica.
image image image
  • Comprobamos que efectivamente la rotura de permisos se ha realizado a través de las opciones de administración de la lista y en concreto la relativa a la gestión de permisos. Vemos como además los usuarios anónimos aparecen con permisos en la lista.
  • Finalmente, simplemente navegamos a la lista de forma anónima y comprobamos que podemos interactuar con ella.
image image
  • Por supuesto, cuando se desactive la característica deberíamos deshacer la rotura de permisos de forma que la lista vuelva a heredarlos. Para ello codificamos el manejador de FeatureDeactivating() de la siguiente forma:
   1: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb web = properties.Feature.Parent as SPWeb;

   4:     SPList list = web.Lists["Productos"];

   5:     // Chequear si tiene permisos unicos

   6:     if (list.HasUniqueRoleAssignments)

   7:     {

   8:         list.ResetRoleInheritance();

   9:         list.Update();

  10:     }

  11: }