SharePoint: Como leer una cadena de conexión programáticamente del web.config!

Con esta necesidad me he encontrado hoy…y la solución es bastante sencilla como podréis ver en el siguiente bloque de código:

  • Lo primero que necesitaremos es añadir referencias a Microsoft.SharePoint, System.Configuration y System.Web (siempre que no las hayamos añadido ya) acompañadas de las correspondientes directivas using a Microsoft.SharePoint, Microsoft.SharePoint.Administration, System.Configuration y System.Web.Configuration.
  • A partir de aquí, WebConfigurationManager.OpenWebConfiguration() nos da acceso al archivo web.config de la Aplicación Web actual y para localizar la cadena de conexión en cuestión no tenemos más que acceder a la sección de Connection Strings del mismo.
   1: string sConnectionString="";

   2: try

   3: {

   4:     string sWebApplicationName = string.Empty;             

   5:     string sConnectionStringKey = "<KeyCadenaConexion>";

   6:     Configuration cConfig;

   7:     sWebApplicationName = SPContext.Current.Site.WebApplication.Name;

   8:     cConfig = WebConfigurationManager.OpenWebConfiguration("/", sWebApplicationName);

   9:  

  10:     if (cConfig != null)

  11:     {

  12:         if (!string.IsNullOrEmpty(cConfig.ConnectionStrings.ConnectionStrings[sConnectionStringKey].ToString()))

  13:         {

  14:             sConnectionString=cConfig.ConnectionStrings.ConnectionStrings[sConnectionStringKey].ToString();

  15:         }

  16:  

  17:     }

  18: }

  19: catch (Exception)

  20: {

  21:     throw;            

  22:  

  23: }

Office 365: Búsqueda inteligente en OneDrive!

Una de las novedades que faltaba por llegar a mis tenant de Office 365, y que aparecía ya hace unos días en el roadmap público de Office 365, es la denominada búsqueda inteligente (Smart Search) para OneDrive que se apoya en el motor de búsqueda de SharePoint y que permite que el usuario pueda buscar de forma muy rápida información en todo el Tenant desde OneDrive:

  • La experiencia de usuario es brutal puesto que la función de búsqueda al más puro estilo de los buscadores populares de Internet va sugiriendo al usuario documentos que pueden cumplir su criterio de búsqueda conforme lo va escribiendo.
  • Además, por cada resultado que cumple el criterio de búsqueda se pueden realizar de forma rápida acciones como Compartir, o pasar directamente al buscador global del tenant de Office 365.
image image

Office 365: Lanzado el repositorio de Office 365 Development Patterns & Practices!

Menuda semana de lanzamientos y novedades, previos a las vacaciones, que estamos teniendo en Office 365. En esta ocasión toca hablar del repositorio de patrones y buenas prácticas para el desarrollo de aplicaciones que ha lanzado el equipo de Office 365 Development Patterns & Practices: Office 365 Development Patterns & Practices launched. El repositorio, cuyo origen está en el equipo y repositorio de Office AMS, se encuentra disponible en Git y abierto a contribuciones: https://github.com/officedev/PnP

O365-Developer-Patterns-Practices

Office 365: Disponibles las nuevas herramientas de administración (API incluida)!

Microsoft, tal y como estaba anunciado en el roadmap público de Office 365, acaba de liberar las nuevas herramientas de administración para Office 365 que incluyen:

  • Por un lado, el Office 365 Management Pack for Microsoft System Center 2012 R2 que permitirá recibir comunicaciones de servicio de Office 365 en System Center

Office-365-Monitoring-Dashboard-v2

  • Por otro una nueva API de Office 365 Service Communications que permite acceder a las comunicaciones de servicio de Office 365 para simplificar la monitorización de nuestros tenant de Office 365. En concreto, se podrá acceder vía API a:
    • La salud del servicio en tiempo real, de forma que conozcamos muy rápidamente cualquier problema que impacte en los servicios de Office 365,
    • Comunicaciones del centro de mensajes, de forma que se puedan encontrar mensajes del centro de comunicaciones que apliquen a nuestro tenant de Office 365.
    • Notificaciones de mantenimiento planeado, de forma que podamos desarrollar comunicaciones apropiadas y estrategias operacionales para nuestra organización.
Command-window

Más información sobre la nueva API de Office 365 Service Communications en el siguiente enlace: http://msdn.microsoft.com/en-us/library/dn776043(v=office.15).aspx

[Product Review]: GScan Online de Gradient!

Con este artículo, voy a comenzar la que espero sea una serie de revisiones de productos sobre SharePoint (y posiblemente otras plataformas) que vayan llegando a mis manos de una u de otra forma y que considere interesantes por el requerimiento de negocio (o técnico) que resuelven).

Resumen

Una de las características más importantes de SharePoint desde el punto de vista de modelado de soluciones de negocio es sin duda su “carácter de plataforma extensible” lo que permite dar respuesta a los diferentes requerimientos plantados cuando se decide optar por SharePoint como plataforma corporativa sobre la que construir y dar respuesta a las necesidades de una organización.

En el marco de SharePoint 2013 y SharePoint Online, Microsoft ha definido un nuevo modelo de extensibilidad que introduce el concepto de Aplicación para dar respuesta a los requerimientos de soluciones de negocio personalizadas tanto para usuarios individuales como para una organización. La apuesta de Microsoft es aclara, recomendando la adopción y uso de este modelo de Aplicaciones como el marco de trabajo para construir estas soluciones para SharePoint, poniendo además a disposición de los desarrolladores y de los usuarios una tienda, el Office Store, en el que se pueden publicar y descubrir Aplicaciones que resuelvan las necesidades planteadas. Precisamente, en este artículo se analiza la aplicación GScan Online de Gradient (https://www.gscanonline.com/) como claro ejemplo de respuesta a un requerimiento de negocio muy habitual hoy en día (digitalización simple de información + 0 papeles) y de las posibilidades del nuevo modelo de aplicación para SharePoint (la Aplicación está disponible en el Office Store tanto para SharePoint OnPremise como para SharePoint Online en Office 365).

Instalación y configuración de GScan Online

Para poder evaluar GScan Online en un sitio de SharePoint 2013 (OnPremises u Online), es necesario realizar su instalación desde la página oficial de la Aplicación en el Office Store.  GScan Oline es una aplicación de SharePoint de tipo Provider-Hosted ya que todo el procesado que realiza cuando se digitaliza información es un trabajo pesado que se tiene que realizar en un servidor en el que se han desplegado los componentes necesarios para realizar el procesado de documentos, extraer los metadatos adecuados del documento, aplicar OCR si así se estima, etc. Una vez que se ha instalado GScan Online, es realmente sencillo comenzar a utilizarla:

  • Desde la página de “Contenidos del sitio”, hacemos clic en el Tile de GScan Online Lite (Versión de prueba de GScan Online) de manera que se inicia un asistente inicial de configuración (Nota: Este asistente se inicia únicamente cuando se configura GScan Online por primera vez). Dentro de los pasos del asistente, tendremos uno relativo a instalar y configurar una pequeña utilidad de cliente necesaria para poder hacer uso de los dispositivos de escaneo a los que tengamos acceso desde nuestro equipo de trabajo. Una vez que se ha instalado esta utilidad, el asistente de configuración incluye, entre otros pasos, la posibilidad de elegir aquellas Bibliotecas de Documentos del sitio actual en las que se va a guardar la información digitalizada.
image image
  • Además, podremos elegir tanto el Tipo de Contenido de la Biblioteca como los metadatos del mismo que se quieren incorporar a la digitalización.
  • Concluida la configuración inicial de GScan Lite, ya estamos en disposición de comenzar a utilizar esta Aplicación. La pantalla de inicio de la misma nos permite visualizar de un solo vistazo las distintas características y funcionalidades que aporta:
    • Cinta de trabajo, desde la que se pueden realizar tareas como realizar retoques sobre el documento a digitalizar (procesar), alejar / acercar el documento, aplicar OCR al mismo, moverse entre página del documento, etc.
    • Un panel de metadatos del documento en el que se listan los metadatos disponibles en la Biblioteca de Documentos de destino y cuyo valor podremos extraer del documento a procesar. Estos metadatos se pueden añadir de forma completamente manual o bien aprovechando la potente capacidad de OCR de GScan Online.
    • Finalmente, una sección global de accesos directos que nos permite indicar el origen de los contenidos a procesar (un dispositivo de escaneo, el sistema de archivos de nuestro equipo, OneDrive, DropBox, etc).
image image
  • Mención especial merecen las opciones de configuración de la Aplicación ya que permiten configurar aspectos muy variados del proceso de digitalización: resolución a aplicar, tipo de escaneo (Duplex vs. Simplex vs. Flatbed), tipo de imagen (Color, escala de grises, blanco y negó), si se va a utilizar un separador de documentos (puede ser una página en blanco o una página con un código de barras), etc.

image

Uso de GScan Online

Para ver GScan Online, vamos a partir de alguno de los Documentos de demostración proporcionados por Gradient:

  • Para el ejemplo, voy a hacer uso de una factura que pesa más de 1 MB en disco. En concreto, el PDF a procesar es el que podéis ver a continuación.
  • Una vez que GScan Online adquiere el documento, el aspecto del mismo en la pantalla inicial de la aplicación es el que se muestra a continuación. Como se puede apreciar, el formato del documento es diferente gracias al procesado realizado por GScan Online que permite mejorar la calidad del documento original independientemente de su origen (imágenes escaneadas, fotografías de un Smartphone, imágenes realizadas a mano).

image image
  • Además, sobre el documento procesado (que ocupa bastante menos que los 4 MB del documento original) se pueden realizar operaciones de retoque como recortar el documento, cambiar la orientación, alineado del documento, etc.
  • Una vez que el documento está listo, podremos extraer metadatos del mismo sin más que marcar la zona de texto deseada para cada metadato disponible en la biblioteca de documentos donde se vaya a almacenar.
image image
  • Finalmente, cuando tengamos listo el documento procesado para ser almacenado (podríamos incorporar nuevas páginas procedentes de otros documentos escaneados, procesar documentos independientes adicionales, etc), guardamos el documento y sus metadatos y este es el resultado:
image

Como se puede apreciar, el documento guardado pesa menos que su original y además incluye todos los metadatos especificados por medio de la funcionalidad de OCR.

Conclusiones

Sin duda, GScan Online es un claro ejemplo de solución que extiende SharePoint sobre la base del nuevo marco de extensibilidad del nuevo modelo de Aplicaciones de la plataforma y que cumple un requerimiento de negocio muy habitual hoy en día: facilitar el proceso de digitalización de información en las organizaciones de forma que el camino hacía el concepto de 0 papeles sea posible y no una utopía.

Información adicional sobre GScan Online

Si estás interesado en conocer más detalles sobre GScan Online, tanto a nivel técnico como funcional, contacta conmigo enviándome un correo a jcgonzalezmartin1978@hotmail.com.

Referencias

Office 365: Como añadir usuarios de forma masiva (I)!

Una de las grandes características de Office 365 es su vertibilidad en todos los niveles: posibilidades de negocio, extensibilidad mediante desarrollo, administración, etc. En este artículo vamos a ver esta versatilidad desde la perspectiva de realizar una carga masiva de usuarios en la plataforma. Para agregar usuarios de forma masiva:

  • Desde el portal de administración de Office 365 accedemos a Usuarios y grupos. En la página que se muestra, hacemos clic en el botón de acción que permite hacer la carga masiva de usuarios.
  • Para poder realizar la carga masiva de usuarios tendremos que preparar un archivo .csv con unos datos mínimos. Por suerte, desde la propia página de carga masiva podemos descargarnos un archivo de ejemplo.
image image
  • Los datos mínimos de ejemplo que necesitamos para cada usuario son: Nombre de usuario,Nombre,Apellidos,Nombre para mostrar. Por ejemplo:

soemone@domain.onmicrosoft.com,Someone,Someone,Someone Someone,,,,,,,,,,,

  • Una vez tenemos conformado el archivo CSV de carga, lo agregamos en la caja de texto con la ruta del archivo y pulsamos “Siguiente”.
  • En la nueva pantalla que se muestra, se muestra el resultado de comprobar el archivo de carga. En este caso, como nos hemos asegurado de indicar los datos mínimos, no tendremos errores.
image image
  • A continuación especificamos el estado de inicio de sesión para cada usuario que en este caso es Permitido.
  • En la siguiente pantalla configuramos los servicios que queremos que tengan asociados los usuarios que vamos a importar.
image image
  • En la siguiente pantalla, especificamos la dirección de correo a la que se van a enviar las nuevas cuentas de Office 365 creadas junto con sus contraseñas.
  • Finalmente, como resultado se muestran los usuarios importados.
image image
  • Para acabar, comprobamos que hemos recibido en nuestro correo ese e-mail con los login de usuario y las contraseñas.

image

SharePoint 2013 & SharePoint Online: Restricciones en la sincronización de documentos con OneDrive (II)!

Siguiendo con la serie de artículos sobre restricciones en la sincronización de documentos con OneDrive para empresas en esta nueva entrega os dejo una referencia adicional a un artículo escrito por Bill Baear en el que proporciona más detalles sobre las restricciones en la sincronización de documentos: http://blogs.technet.com/b/wbaer/archive/2014/05/24/file-and-folder-considerations-with-onedrive-for-business.aspx. En dicho artículo podéis encontrar detalles relativos a:

  • Caracteres no permitidos en los nombres de los archivos y carpetas de OneDrive a sincronizar.
  • Los archivos y carpetas cuyo nombre esté precedido por _ no se mostrarán puesto que se consideran ocultos.
  • Los archivos cuyo nombre es precedido o seguido por un ., no pueden ser sincronizados por OneDrive para empresas.

SharePoint: Modos “ReadOnly” vs. “Manteinance” en colecciones de Sitios!

“Enredando” con PowerShell y las propiedades que se pueden modificar o no a nivel de Colección de Sitios (objeto SPSite), me surgió la duda de que diferencia hay entre las propiedades ReadOnly y ManteinanceMode y de ahí que me decidiera a escribir un post al respecto:

  • Básicamente, la propiedad ManteinanceMode a nivel de colección de sitios nos indica si está en modo mantenimiento o no…esta propiedad no se puede modificar desde el modelo de objetos, pero si puede ser modificada por SharePoint si a nivel de SQL Server se ha hecho un cambio de la BD de Contenidos en la reside la colección pasándola a un estado de solo lectura. En cambio, la propiedad ReadOnly nos permite configurar una colección para que pase a estado “Modo de sólo lectura” que en esencia es como el estado de “Mantenimiento”, pero con la diferencia de que en este caso si podemos modificar el valor de esta propiedad mediante el modelo de objetos lo cuál es interesante en escenarios en los que queremos hacer un movimiento de nuestras BDs de Contenidos a otra granja o bien en escenarios de migración desde versiones previas de SharePoint.
  • Para jugar con ambas propiedades, he creado el siguiente script PowerShell que por un lado permite leer los valores de ambas propiedades y por otro permite cambiar el valor de la propiedad ReadOnly para una cierta Colección de Sitios:
   1: ############################################################################################################################################

   2: # This script allows to play with ReadOnly and ManteinanceMode properties at the Site Collection Level

   3: # Required Parameters: 

   4: #    ->$sSiteCollection: Site Collection where we are going to do the backup / restore.

   5: #    ->$sOperationType: Operation Type (Read / Modify properties).

   6: #    ->$sReadOnlyMode: Read Only mode for the ReadOnly property.

   7: ############################################################################################################################################

   8:  

   9: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

  10: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

  11:  

  12: $host.Runspace.ThreadOptions = "ReuseThread"

  13:  

  14: #Definition of the function that restores de deleted Site Collection

  15: function ReadModify-SPSiteProperties

  16: {

  17:     param ($sSiteCollection,$sOperationType,$sReadOnlyMode)

  18:     try

  19:     {

  20:         $spSite=Get-SPSite -Identity $sSiteCollection

  21:         

  22:         #Operation Type

  23:         switch ($sOperationType) 

  24:         { 

  25:         "Read" {

  26:             Write-Host "Reading $sSiteCollection values for ReadOnly & ManteinanceMode properties!!" -ForegroundColor Green

  27:             Write-Host "Value for ReadOnly property: " $spSite.ReadOnly -ForegroundColor Green

  28:             Write-Host "Value for ManteinanceMode property: " $spSite.MaintenanceMode -ForegroundColor Green

  29:             } 

  30:         "Modify" {

  31:             Write-Host "Modifiyng ReadOnly property in $sSiteCollection to $sReadOnlyMode" -ForegroundColor Green

  32:             $spSite.ReadOnly=$sReadOnlyMode            

  33:             Write-Host "Value for ReadOnly property: " $spSite.ReadOnly -ForegroundColor Green            

  34:             }         

  35:         default {

  36:             Write-Host "Requested Operation not valid!!" -ForegroundColor Green          

  37:             }

  38:         }

  39:        

  40:         $spSite.Dispose()

  41:     }

  42:     catch [System.Exception]

  43:     {

  44:         write-host -f red $_.Exception.ToString()

  45:     }

  46: }

  47:  

  48: Start-SPAssignment –Global

  49: #Calling the function

  50: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Read"

  51: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Modify" -sReadOnlyMode $false

  52: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Read"

  53: Stop-SPAssignment –Global

  54:  

  55: Remove-PSSnapin Microsoft.SharePoint.PowerShell

  • Si ejecutamos el script para leer los valores de ambas propiedades, inicialmente su valor será cero. Si ejecutamos el script de forma que cambiemos el valor de la propiedad ReadOnly a True, veremos como al acceder el sitio, este está en modo lectura y se muestra la correspondiente barra informativa indicando este hecho:

image

  • En cambio, si cambiamos el modo de la BD de contenidos donde reside la colección a modo ReadOnly veremos que la propiedad ManteinanceMode tiene un valor True y que en la barra informativa al acceder el sitio se indica un mensaje diferente a cuando se hizo el cambio de ReadOnly a True, aunque la experiencia de acceso es la misma en ambos casos.

image

Podéis descargaros el script que he usado para este post del siguiente enlace: How to read and modify ReadOnly and ManteinanceMode Site Collection Properties

SharePoint 2013 & SharePoint Online: Resumen de artículos sobre búsquedas (I)!

Con el fin de recoger un resumen de los artículos sobre búsquedas publicados en el blog, he decidido publicar este post en el que podéis encontrar los distintos artículos sobre aspectos variados de las búsquedas que he ido publicando.

Búsquedas en SharePoint 2013 On-Premise:

Búsquedas en SharePoint Online

SharePoint: Truncado de archivos de Log de Bases de Datos!

El otro día me preguntaba un compañero de trabajo que hacer ante un archivo de log de una BD de SharePoint que estaba provocando problemas en un cliente. En seguida le pregunté si se trataba de una BD de contenidos o bien era alguna BD especial de SharePoint…y bingo, se trataba de la BD de configuración de la granja. Por suerte, tanto el archivo de log de esta BD como de otras BDs de SharePoint se puede truncar sin ningún problema y solucionar los problemas de un crecimiento excesivo de los mismos. En lugar de escribir algo ya escrito en numerosas referencias en la red, os dejo una selección de artículos en los que se explica paso a paso como hacer ese truncado:

SharePoint-2013-logo