SharePoint Online: Soporte de correo entrante en listas!

Una cuestión que empieza a ser un tanto recurrente cuando hablamos sobre las capacidades disponibles en SharePoint Online en Office 365 es respecto al soporte de correo entrante en listas de SharePoint que permita que sea suficiente con especificar la dirección de correo electrónico asociada a la lista para que todo correo enviado a la misma sea archivado en la lista en cuestión. Esta capacidad, disponible en instalaciones On-Premise, de momento no está disponible en SharePoint Online y a día de hoy Microsoft no ha comentado cuando estará o si ve factible que esta funcionalidad se encuentre como parte del offering de la plataforma de colaboración en la nube…los motivos, pues varios como: cuestiones de escalabilidad, rendimiento, configuración de políticas, etc. Os recomiendo leer este post en el que se trata bastante en profundidad este tema.

image

SharePoint 2010: Integración con SSRS 2008 y SSRS 2008 R2 (VIII)!

Siguiendo con la serie de artículos en torno a la integración entre SharePoint 2010 y SQL Server Reporting Services (SSRS) en esta ocasión quería tratar un tema que necesitaremos por ejemplo para poder crear suscripciones: crear una cuenta de ejecución de informes que resida en SQL Server. Antes de empezar, os remito al último post de la serie que a su vez tiene un enlace a todos los artículos relativos a esta integración que se han publicado hasta ahora: SharePoint 2010: Integración con SSRS 2008 y SSRS 2008 R2 (VII)!

Para crear una cuenta de ejecución de informes a nivel de BD:

  • En primer lugar, es necesario crear a nivel de BD un login con los privilegios mínimos que nos permita definir orígenes de datos de SQL Server usando dicho login. Para añadir el login, tenemos dos posibilidades:
    • A través del SQL Server Management Studio.
    • Creando dicho login a través de T-SQL de acuerdo al siguiente script:
   1: --Añadimos el usuario en la master

   2: use master

   3: exec sp_droplogin @loginame='ReportExecution'

   4: exec sp_addlogin @loginame='ReportExecution', @passwd='pass@word1'

   5:  

   6: --En AdventureWorksDW

   7: use AdventureWorks2008

   8: if exists(select * from sysusers where name='ReportExecution')

   9:     exec sp_dropuser @name_in_db='ReportExecution'

  10: exec sp_adduser @loginame='ReportExecution', @grpname='db_datareader'

  11:  

  12: --En msdb

  13: use msdb

  14: if exists(select * from sysusers where name='ReportExecution')

  15:     exec sp_dropuser @name_in_db='ReportExecution'

  16: --add the users to the databases and give them permissions

  17: exec sp_adduser @loginame='ReportExecution', @grpname='db_datareader' 

  18:  

  19: --En ReportServer

  20: use ReportServer

  21: if exists(select * from sysusers where name='ReportExecution')

  22:     exec sp_dropuser @name_in_db='ReportExecution'

  23: --add the users to the databases and give them permissions

  24: exec sp_adduser @loginame='ReportExecution', @grpname='db_datareader'

Nota: Si la ejecución del T-SQL da algún tipo de error, se recomienda ejecutar los bloques relativos a cada BD en la que se está añadiendo el login de forma independiente.

  • Una vez que hemos creado el origen de datos, nos aseguramos que nuestro servidor de SQL Server permite autenticación Windows y SQL Server ya que por defecto puede ser que esté configurado para utilizar únicamente autenticación Windows.
  • Para realizar esta configuración nos conectamos al servidor de BD dónde está configurado SSRS (y también dónde estén las BDs fuente de los informes) con SQL Server Management Studio, hacemos clic con el botón derecho del ratón sobre el nombre del servidor y pulsamos la opción Propiedades o Properties.
  • En la ventana que se abre, nos vamos a la sección “Seguridad” o “Security” y marcamos la opción relativa al uso de autenticación Windows y SQL.
  • Pulsamos OK, de manera que se mostrará un mensaje informativo indicando que para que los cambios tenga lugar será necesario reiniciar el servicio de SQL Server.
  • Para reiniciar el servicio de SQL Server, nos vamos a la herramienta de configuración de SQL Server y simplemente re-iniciamos el servicio correspondiente.
image image image
  • Comprobamos a través de SQL Server Management Studio que accedemos a BD mediante autenticación SQL y especificando las credenciales del login de BD creado.
  • Creamos un origen de datos usando el login de BD creado. Por ejemplo, en Report Builder 3.0.
  • Comprobamos que la conectividad a la BD es correcta y generamos un primer informe de ejemplo.
image image image
  • Por ejemplo, un informe creado con esta forma de autenticación y plenamente operativo es el siguiente.
  • El mismo informe vemos que se visualiza en un sitio de SharePoint de forma correcta.sdf
image image

Y hasta aquí llega este nuevo artículo en torno a la integración de SSRS y SharePoint 2010.

SharePoint 2010: ¿Se soportan los metadatos administrados en listas relacionales?

Hace un tiempo comentaba en este artículo las limitaciones que nos podemos encontrar a la hora de trabajar con los metadatos administrados de SharePoint 2010 (disponibles a partir de la versión estándar de la plataforma). El caso es qué haciendo alguna prueba con este tipo de dato, me he dado cuenta de otra limitación adicional que intuía, pero que no había tenido la oportunidad de comprobar: el soporte de este tipo de campo a la hora de trabajar con listas “cuasi-relacionales”…y el resultado de las pruebas es que este tipo de campo no está soportado ni para relacionar dos listas ni para ser utilizado como un campo proyectado al realizar definir un campo de lookup en una lista hija con respecto a la lista padre en la que está disponible una columna de este tipo. Para probarlo, dos pasos sencillos:

  • Creamos en primer lugar una lista en la que esté disponible una columna de tipo metadato administrado.
  • Creamos a continuación la lista a vincular con la lista inicial mediante un campo de lookup y comprobamos como dicho campo no aparece a la hora de modelar el lookup.
image image

SharePoint Online: Configuración y uso de los BCS (III)!

En el primer artículo de la serie sobre configuración y uso de los Business Connectivity Services (BCS) en SharePoint Online dentro de Office 365 veíamos como integrar un servicio WCF publicado en Azure, mientras que en la segunda parte os referenciaba a como integrar datos de una BD de SQL Azure….una pregunta que puede surgir es si este tipo de integraciones sólo son posibles con servicios o BD’s en Windows Azure o por el contrario podemos ir más allá e integrarnos con servicios On-Premise y BD’s On-Premise…y la respuesta, como veremos, es que sí. Antes de comenzar os recuerdo los posts previos de la serie:

La idea de este artículo es ver como integrar un servicio On-Premise que requiera autenticación en SharePoint Online:

  • A modo de demostración, partiré de uno de los servicios web que expone SharePoint 2010 y en concreto los relativos al despliegue SharePoint 2010 que tenemos en el CIIN.
  • Por ejemplo, para el servicio Lists.asmx necesitaremos tanto la Url del servicio como la relativa al WSDL.
  • Lo siguiente que haremos es configurar la correspondiente aplicación de destino en el Servicio de Almacenamiento Seguro de SharePoint Online siguiendo las pautas vistas en este artículo. En este caso, lo más peculiar es que las credenciales a especificar son las relativas a una cuenta de dominio.
image image image
  • Una vez que hemos establecido las credenciales, nos vamos a SharePoint Designer 2010 (SPD 2010)
  • Como siempre, nos iremos a la sección “External Content Types” para proceder a crear el correspondiente tipo de contenido externo (ECT) en el que tendremos que especificar la correspondiente conexión al servicio. En este caso, el tipo de conexión que elegiremos es “WCF”, de manera que los parámetros de conexión son:
    • Service Metadadata Url: <Sitio_SharePoint>/_vti_bin/Lists.asmx?WSDL
    • Metadata Connection Mode: WSDL
    • Service Endpoint Url: <Sitio_SharePoint>/_vti_bin/Lists.asmx
    • En las opciones de autenticación elegimos “Connect with impersonated custom identity” y especificamos el ID de la aplicación destino creada en el SSS.
  • Tras pulsar “OK”, se nos pedirán las credenciales de nuestra cuenta de dominio (únicamente la primera vez que nos conectemos) y al cabo de unos instantes tendremos disponible la conexión para modelar el ECT…cool!
image image image

Y listo, ya podríamos comenzar a modelar el ECT…en este caso el servicio no expone unos Web Methods adecuados para modelar un ECT, pero si hubiésemos publicado un servicio en nuestro entorno que si lo hiciese podríamos exponer las correspondientes entidades y crear todas las operaciones sin problemas.

Lync Online: ¿Por qué no están disponibles las opciones de grabación?

Como esta pregunta empieza a ser un tanto recurrente, simplemente comentar que la opción de grabación de Lync Online no depende del servicio, sino del país dónde se esté usando como podéis ver en este KB con fecha el 8 de noviembre de este año:

At the release of Office 365, recording options will be disabled in the Microsoft Lync 2010 client for legal and privacy reasons. Because certain countries and nationalities require permission from all parties to record instant messaging (IM), audio, and video conversations, the Lync Online engineering team decided to remove this feature until a future update is released to address this. Recording options will be re-enabled after the update is released and deployed to Lync Online.

Discusiones al respecto en los foros de Office 365:

Configuración On-Premise: http://office.microsoft.com/es-es/communicator-help/grabar-y-reproducir-reuniones-en-lync-2010-HA101834765.aspx

image

SharePoint Online: Como hacer una redirección en función de los permisos del usuario logado (I)!

Si tenemos la necesidad de hacer una redirección desde una página cualquiera de un sitio de SharePoint Online en función de los permisos de usuario, contamos con dos tipos de técnicas (teniendo en cuenta las limitaciones del servicio): utilizar código de cliente vs utilizar código de servidor. En el caso de utilizar código de cliente, recurriremos al modelo de objetos en cliente (sabor ECMAScript) que nos permite conocer el usuario logado, comprobar sus permisos  y realizar la correspondiente redirección. Por ejemplo, podemos insertar el siguiente código en una Content Editor WebPart de una página de manera que si el usuario tiene un cierto nivel de permisos se haga la redirección correspondiente:

   1: <script type="text/javascript">

   2: ExecuteOrDelayUntilScriptLoaded(ConsultarUsuario, "sp.js");

   3:  

   4:     function ConsultarUsuario() {

   5:  

   6:         // Contexto de cliente

   7:         var context = new SP.ClientContext.get_current();

   8:         

   9:         // Carga del sitio actual (SPWeb)

  10:         this.site = context.get_web();

  11:         context.load(this.site);

  12:  

  13:         // Usuario actual

  14:         this.UsuarioActual = site.get_currentUser();

  15:         this.UsuarioActual.retrieve();

  16:  

  17:     //Permisos para el usuario actual

  18:     context.load(site,'EffectiveBasePermissions');

  19:  

  20:         // Ejecutar la consulta de forma asíncrona

  21:         context.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFailure));

  22:     }

  23:  

  24:     function onSuccess(senger, args) {

  25:         alert("Usuario Actual: " + this.UsuarioActual.get_title() + "\n" + "Login de Usuario:: " + this.UsuarioActual.get_loginName());

  26:     if (this.site.get_effectiveBasePermissions().has(SP.PermissionKind.manageLists))

  27:         alert("No tienes permisos para ver esta página, redirigiendo ...");

  28:         window.location = 'http://www.ciin.es'

  29:     }

  30:     function onFailure(sender, args) {

  31:         alert("Petición fallida " + args.get_message() + "\n" + args.get_stackTrace());

  32:     }</script><input onclick="ConsultarUsuario()" type="button" value="Usuario Actual"/>

Para añadir el código en la WebPart, basta con utilizar la opción de añadir código fuente HTML en lugar de texto enriquecido:

image

Referencias: