Implementando y desplegando Autohosted Apps

Como bien sabemos, con el nuevo modelo de Apps para SharePoint 2013, disponemos de distintas alternativas de hosting para nuestras apps. Tenemos SharePoint-hosted apps, Provider-hosted apps y Autohosted Apps.

Hasta el momento, las Autohosted apps únicamente están soportadas para SharePoint Online en Office 365. Para recordar, cuando implementamos Autohosted apps, lo que sucede es que al momento en que desplegamos nuestra aplicación sobre SharePoint Online, automáticamente por detrás se genera nuestra aplicación en Windows Azure, esto se hace sin necesidad de que nosotros tengamos que crear nuestro ambiente en Azure previamente.

Las Autohosted apps son similares a las Provider-hosted apps, en el sentido de que disponemos de una infraestructura de servidores web separada de la granja de SharePoint, en el caso de las Autohosted apps esta se encuentra montada sobre Windows Azure y en el caso de las Provider-hosted apps esta se encuentra en cualquier otro servidor web como IIS, con la diferencia en que en este caso si debemos configurar y administrar nuestro servidor web.

 En este caso voy a mostrar como crear y desplegar una Autohosted App, tanto desde Visual Studio, como de manera manual considerando un escenario real de pase a producción.

1. Primero debemos crear nuestra aplicación de SharePoint 2013 desde Visual Studio.

2. A continuación debemos especificar el nombre de nuestra App y la URL de nuestro site collection en SharePoint Online (Office 365) y dar clic en Validate.

3. Nos pedirá que ingresemos nuestras credenciales.

4. Validará satisfactoriamente el acceso a nuestro site collection en la nube. Y con esto podremos empezar a desarrollar nuestra App.

¿Como despliego mi aplicación?

1. Para probar nuestra aplicación debemos hacer Deploy desde Visual Studio. Debido a que simplemente es para un escenario de prueba, se creará un sitio temporal en nuestro equipo (https:localhost). Por este motivo aparecerán algunas alertas relacionada a certificados. Dar clic en Yes.

2. Un warning mas dar clic en Yes.

3. Nos redirige a nuestro site collection y nos pide Confiar en nuestra App. Dar clic en Confiar.

4. Y Listo! Nos mostrará nuestra App recientemente desarrollada. Nos podemos dar cuenta que nos ha redirigido a nuestra aplicación que se está ejecutando localmente (https://localhost:puertoaleatorio), pues es un escenario de pruebas, es decir que aún no se ha creado la aplicación en Azure.

¿Cómo desplegar la solución en un ambiente productivo?

Para desplegar nuestra aplicación en el ambiente productivo, primero debemos configurar nuestra solución en Visual Studio.

1. Debemos configurar las dlls siguientes para que tengan la propiedad Copy Local en True:

Microsoft.SharePoint.Client.dll

Microsoft.SharePoint.Client.Runtime.dll

Microsoft.Identity.Model.dll

System.Identity.Model.dll

Microsoft.IdentityModel.Extensions.dll

 

2. A continuación seleccionamos a nuestra App desde el Solution Explorer, damos clic derecho y clic en Publish…

3. Se abrirá la ruta donde esta nuestro App empaquetado. Este tiene extensión .App. Hay que copiarla.

4. A continuación debemos acceder a nuestro Portal de Office 365 para realizar las configuraciones respectivas sobre SharePoint Online. 

5. En el Centro de administración de SharePoint ubicar la categoría aplicaciones y dar clic en Catálogo de aplicaciones.

6. Si aún no existe un catálogo debemos crearlo. Dejar seleccionado Crear un nuevo sitio de catálogo de aplicaciones y clic en Aceptar.

7. Completar los datos el nuevo site collection.

 

8. Se habrá creado nuestro catálogo de apps.

 

 

9. Podemos ingresar y verificar que se creó correctamente.

10. Ingresamos a la biblioteca Aplicaciones para SharePoint en nuestro Catálogo de apps.

 

 

11. Cargamos nuestra App (.App que recientemente copiamos).

12. Podremos ver que el App se cargó correctamente.

13. Ahora solo debemos agregar nuestra nueva App ya disponible en nuestro Catálogo. Para eso ingresamos a cualquier otro site collection que tengamos en SharePoint Online. En Settings seleccionamos Contenidos del sitio.

14. Damos clic en Agregar una aplicación.

 

15. Se muestran las apps disponibles. Ubicamos nuestra App que recientemente desplegamos y le damos clic.

 

16. En la siguiente pantalla damos clic en Confiar.

 

17. Y podremos observar que se agregó satisfactoriamente nuestra nueva App.

18. Ahora solo nos queda probarla!. Un éxito!. 

Preparación de ambiente para desarrollo de Apps en SharePoint 2013

Con el nuevo modelo de desarrollo de Apps para SharePoint 2013 existen cambios en las consideraciones necesarias para disponer de un ambiente de desarrollo.

En versiones anteriores de SharePoint (2007/2010) era necesario para desarrollar WebParts, tener un ambiente de SharePoint donde tengamos a su vez instalado Visual Studio de tal manera de que podamos acceder a las dlls de SharePoint y compilar y desplegar nuestros desarrollos.

En muchos casos los desarrolladores debían disponer de una máquina virtual donde tenían su granja de SharePoint implementada y asi mismo Visual Studio, para posteriormente las soluciones .wsp fueran desplegadas en un ambiente de QA o producción. El problema con esto era que a partir de la versión 2010 de SharePoint, los requerimientos de Hardware para disponer de un ambiente de desarrollo cada vez exigían una inversión mayor y era una mala práctica compartir un único servidor de desarrollo, pues muchas veces algunos desarrollos interferían con otros. Principalmente estas necesidades se daban debido a que los desarrollos se desplegaban sobre la misma infraestructura de SharePoint, comprometiendo la granja con despliegues que requerían reinicios de los application pools y web sites.

 Con el nuevo mode de apps para SharePoint 2013, teniendo en cuenta que los desarrollos no se ejecutan sobre SharePoint, sino externamente (en el cliente o en un servidor externo), tampoco es necesario instalar nuestro Visual Studio para acceder a las dlls de SharePoint.

Existen varios mecanismos para acceder a los objetos de SharePoint: .NET CSOM, JS CSOM, REST. Esto nos permite simplemente desde nuestros equipos conectarnos a servidores remotos de SharePoint 2013 y realizar nuestros desarrollos.

Para habilitar nuestro ambiente de desarrollo seguir los pasos detallados a continuación:

1. Instalar Visual Studio 2012.

2. Descargar e instalar Microsoft Office Developer Tools for Visual Studio 2012.

3. Descargar e instalar SharePoint client components.

4. Y listo, ahora a iniciar Visual Studio 2012. Veremos que ahora disponemos de nuevas plantillas para desarrollar apps para Office y SharePoint.

 

Ahora solo nos toca a empezar a desarrollar Apps!!!

Configurando SharePoint 2013 on-premise para desarrollo de apps

Con SharePoint 2013 se abren ahora nuevas posibilidad para desarrollar aplicaciones para el negocio consumidas a través de un Portal web interno o público, y sin los clásicos problemas de gestión de la infraestructura asociados a un performance deficiente por malos desarrollos.

SharePoint 2013 ofrece el nuevo App model, el cual permite consumir aplicaciones desde SharePoint 2013, que interactúan con los componentes del portal (listas, bibliotecas, elementos, documentos, sitios, etc.) o que consumen servicios y datos externos, pero ejecutando su lógica fuera de la granja de SharePoint. Esto permite que el rendimiento de la granja no se vea afectado.

Lo interesante es que ahora disponemos de hasta 3 alternativas para hospedar nuestra aplicaciones: SharePoint-hosted, Provider-hosted o Autohosted.

SharePoint-hosted permite hospedar aplicaciones en un subsite del sitio original donde se ejecuta la aplicación, sin embargo el procesamiento de la lógica de la App no se ejecuta sobre SharePoint, debido a que este tipo de aplicaciones solo permite ejecutar código a nivel cliente mediante JavaScript y HTML.

Provider-hosted permite hospedar la aplicación en un servidor externo a SharePoint, pudiendo utilizar una variedad de plataformas web no necesariamente Microsoft. Es decir, podríamos alojar nuestra aplicación sobre IIS y desarrollar con ASP.NET, así como también podríamos alojar nuestra aplicación sobre Apache y desarrollar con PHP. Es decir, si eres un desarrollador web puedes fácilmente desarrollar apps. Este tipo de escenarios permiten ejecutar código a nivel de servidor que se ejecuta sobre los servidores web.

Autohosted es un método solo soportado hoy en día cuando desarrollamos apps para SharePoint Online (Office 365), este permite desarrollar apps que automáticamente se hospedan sobre Windows Azure, es decir, nosotros tan solo desarrollamos nuestra aplicación web (ASP.NET) utilizando la plantilla de Visual Studio para aplicaciones de SP2013 y automáticamente al desplegarlo este se hospeda sobre Windows Azure.

Entonces, para comenzar, habilitemos primero nuestro ambiente On-premise de SP2013….

 1. Primero debemos crear una zona dedicada para las aplicaciones que se crearán, no debemos utilizar la Zona interna por defecto (contoso.local), sino una zona dedicada para apps (iwdemoApps.com).

Entonces entramos al DNS y en Forward Lookup Zones, clic derecho y New Zone…

2. Clic en Next.

 3. Seleccionamos Primary Zone y clic en Next.

 4. Seleccionar To all DNS Servers running on domain controllers in this domain: contoso.local y Next.

5.  Especificar el nombre de la zona. Ej. iwdemoApps.com.

 6. Seleccionar Do not allow dynamic updates y clic en Next.

 7. Validar que todo esta bien y clic en Finish.

 8. Ahora en la zona creada (iwdemoApps.com), dar clic derecho y clic en New Alias (CNAME)

 9. A continuación especificar en Alias Name: * y en Fully qualified domain name debemos especificar el registro DNS asociado a el WFE del Portal de SharePoint o al balanceador en el caso de estar en alta disponibilidad, en mi Ejemplo sería: portal.contoso.local.

 10. Ahora verificamos que el registro se haya creado satisfactoriamente.

 11. Para verificar que se creó correctamente el servicio podemos probar hacer un ping de este tipo: ping Apps-12345678ABCDE.iwdemoApps.com.

Una vez configurados los registros DNS, debemos realizar las validaciones y configuraciones respectivas.

12. Sobre SharePoint 2013 debemos verificar que el servicio de User Profile se encuentra iniciado.

13. De la misma manera debemos validar que el servicio de App Management Service se encuentre iniciado.

14. Si no se encuentra ya creado, debemos crear el «App Management Service» service application.

15. Especificamos el Service Application Name y el Database Name.

16. Seleccionamos el Service Application Pool o creamos uno nuevo.

17. Finalmente validamos que se haya creado correctamente el Service Application.

18. En el Quick Launch en el Central Admin, acceder a Apps para las configuraciones respectivas. Dar clic sobre Configure App URLs

19. Probablemente nos aparezca un mensaje similar al de la imagen, especificando que falta configurar el Subscription Settings Service.

20. Para configurar el Subscription Service Setting, lo debemos hacer vía PowerShell, no hay opción de hacerlo mediante el Central Admin. Ejecutar los comandos que se muestran en la siguiente imagen:

21. Podemos validar que el service application se creó correctamente.

22. Validamos también que el servicio se encuentre iniciado (Ver en Services on Server).

23. Volvemos para configurar las URLs para las Apps de SharePoint, pero el mensaje sigue. Esto es porque se requiere un IIS reset para que la granja identifique los cambios.

24. Ejecutamos un iisreset.

25. Ahora si, configuramos nuestras URLs. Para App domain, especificar iwdemoApps.com y para App prefix, podemos emplear el prefijo que deseemos, yo utilizo App.

26. Acto seguido debemos proceder a crear nuestro catálogo de aplicaciones, para lo cual damos clic sobre Manage App Catalog.

27. Seleccionamos Create a new App catalog site y OK.

28. Creamos el site collection correspondiente.

29. En End Users especificar Authenticated Users para que todos los usuarios puedan acceder al catálogo.

30. Y podremos ver el App catalog ya creado.

31. Accedemos a nuestro App catalog para validar que se creó correctamente.

32. Ahora, si es que queremos también consumir apps externas debemos realizar las configuraciones respectivas. Para esto clic en Configure Store Settings.

33. Marcar las opciones tal y como se ve en la pantalla.

34. Luego debemos habilitar un Feature a nivel de nuestra aplicación web, seleccionar nuestra aplicación web y clic en Manage Features en el Ribbon.

35. Marcar el feature «Apps that require accesible Internet facing endpoints».

36. Validamos que se haya activado el Feature correctamente.

 Y Listo!, nuestro ambiente On-premise se encuentra listo. Sobre este ambiente podemos crear SharePoint-Hosted o Provider-Hosted apps (Las Autohosted apps únicamente están soportadas en Office 365).

Buenas prácticas al crear bibliotecas, listas y columnas en SharePoint

El uso de bibliotecas y listas en un sitio de SharePoint es muy frecuente, habilitando a los usuarios múltiples escenarios de colaboración interna.

Cuando implementamos soluciones sobre SharePoint tales como flujos de trabajo, formularios electrónicos o vistas es muy común consultar datos de las listas o bibliotecas creadas. Si el nombre de nuestra lista/biblioteca al momento de ser creada tiene espacios, es muy probable que nos econtremos con nombre internos que presenten caracteres extraños como %20. Para evitar esto a continuación se presenta una buena práctica:

 1. Al momento de crear la lista/biblioteca, especificar el nombre sin espacios:

2. La URL de la lista/biblioteca se mantendrá limpia sin espacio.

3. A continuación cambiar el nombre tal y como deseamos que se muestre en el portal

 4. Si verificamos la URL, esta no habrá cambiado.

Este mismo escenarios es aplicable para las columnas de sitio. Si creamos campos con espacios en blanco es muy probable encontrar caracteres como estos %5Fx0020%5F. Para evitar esto el procedimiento deberá ser el mismo.

1. Crear la columna de sitio sin espacios:

2. En la URL del campo se podrá verificar el nombre del campo creado:

 3. A continuación cambiar el nombre del campo como lo deseemos ver desde SharePoint.

El nombre interno del campo no cambiará.

Espero les haya sido de utilidad!

 

 

Audiencias en Dataview WebParts no funcionan

Cuando trabajamos con Dataview WebParts desde SharePoint designer tenemos flexibilidad para realizar todo tipo de configuraciones sobre el WebPart, tal como filtros, agrupación, ordenamiento y paginación. De la misma manera podemos manipular las propiedades de los WebParts como si lo hicieramos desde el navegador.

Una de las propiedades mas útiles en los WebParts es el uso de audiencias que permiten mostrar el contenido de los WebParts de acuerdo al grupo al que pertenezca el usuario autenticado.

Si es que al aplicar las audiencias no vemos el efecto requerido y todos los usuarios pueden seguir viendo el contenido es muy probable que nuestro Dataview WebPart no se encuentre ubicado dentro de una Zona de WebPart, esto es fundamental para poder hacer uso de las audiencias y es muy posible que nos pueda pasar pues no estamos obligados a utilizar Zonas de WebPart para poder insertar un Dataview WebPart.

Espero les sea de utilidad!

Construyendo un Dataview WebPart para un Banner con contenido dinámico

Existen múltiples maneras de crear banners en SharePoint haciendo uso de variados ejemplos con jquery o javascript que podemos encontrar en Internet.

Construir un Dataview que sea empleado para el banner dinámico puede resultar sencillo si lo único que vamos a mostrar en este es una imagen que irá rotando. Sin embargo, algunos requerimientos comunes es que el banner no solo contenga imágenes que aparezcan dinámicamente, sino también texto que pueda ser modificado a demanda.

Para esto primero necesitamos armar el HTML para el Banner dinámico, algo como este diseño:

A continuación, este HTML lo podemos insertar como el contenido de nuestro Dataview WebPart, ubicamos como ya sabemos la sección <xsl:template name=»dvt_1.rowview» > y aquí insertamos el contenido para después reemplazar las secciones de texto e imágenes por los campos de nuestra lista.

Para que la imagen de fondo sea dinámica y consulte a uno de los campos de nuestra lista deberemos insertar un atributo mediante XSLT tal y como se muestra en la siguiente imagen:

En vez de especificar directamente el atributo background-image dentro de nuestra etiqueta HTML, a continuación de nuestra etiqueta especificamos lo siguiente:

<xsl:attribute name=»style»>background-image:url(‘<xsl:value-of select=»@Imagen» />’)</xsl:attribute>

Y listo, el Dataview esta terminado. Ahora solo debemos insertar el javascript o jquery de nuestra preferencia para dar el efecto de Slider.

 

Mostrando el usuario actual desde un Dataview WebPart

Un requerimiento típico cuando implementamos una Intranet es el de dar un mensaje de bienvenida al usuario actualmente logueado.

Pues para lograr este requerimiento podríamos emplear distintos métodos: Incrustar código Javascript para capturar el usuario actual y mostrarlo en un DIV, desarrollar un WebPart que utilice el modelo de objetos de SharePoint o una manera mas sencilla y rápida, crear un Dataview WebPart que en su contenido muestre al usuario actual.

La tercera alternativa es la propuesta que doy para reducir el tiempo de implementación de este requerimiento.

A continuación los pasos:

1. Crear una página .aspx donde insertaremos nuestro DataView.

2. Insertar un Dataview asociado a una lista donde se encuentre información que queramos mostrar adicionalmente al user name del usuario actual.

3. Ubicar la sección donde se agregarán los parámetros tal y como se muestra en la siguiente imagen:

Ubicar la sección <xsl:decimal-format NaN=»» /> y a continuación se verán algunos parámetros especificados por defecto. Después del último parámetro agregar lo siguiente:

<xsl:param name=»UserID» />.

4. Finalmente ubicar la sección donde insertaremos el contenido tal y como se muestra en la imagen:

Ubicar la sección <xsl:template name=»dvt_1.rowview» /> , borrar el contenido que se encuentra dentro y modificarlo según el contenido que deseemos. Incorporar aquí lo siguiente para mostrar el nombre del usuario actual:

<xsl:value-of select=»$UserID» />.

Y Finalmente el resultado esperado:

Combinando Excel Services y Query String Filters – Parte 2

El uso de parámetros en Excel Services también es posible aplicarlos cuando trabajamos con Tablas dinámicas y Filtros de Tablas dinámicas.

Al construir nuestra tabla dinámica podemos seleccionar como cabecera de filtro a uno o más campos, posteriormente podemos seleccionar los valores que deseemos de ese filtro y visualizar los datos correspondientes.

En mi escenario de prueba, cree una tabla dinámica en Excel que mostraba las calificaciones obtenidas para un grupo de competencias específicas según la Matrícula seleccionada en el Filtro.

En Excel Services podemos fácilmente filtrar los valores tal y como lo hacemos desde el mismo Excel, sin embargo el requerimiento era podemos filtrar externamente los datos sin tener que seleccionar el filtro desde el mismo WebPart.

Para esto, lo que hice fue asignar un nombre a la celda de filtro y publicarla como parámetro, a continuación conecte un WebPart de Filtro de tipo texto pasandole los valores al WebPart de Excel Services y el resultado fue el siguiente:

 

 

Propiedad RefinementEnable – Metadatos en el Panel de Refinamiento con buscador FAST

Es importante tomar en cuenta que si es que deseamos agregar metadatos adicionales a nuestro panel de refinamiento en nuestro centro de búsqueda, previamente debemos haber creado nuestra propiedad administrada.

Las propiedades administradas deben ser creadas mediante PowerShell cuando trabajamos con FAST Search, por tal motivo es importante tener en cuenta que la propiedad RefinementEnable deba estar configurada en True, en caso contrario no será posible utilizar este metadato.

Esta información la pude encontrar en el siguiente enlace: http://gavinb.net/2011/03/21/fast-custom-refiner-on-content-type/.

 

Empleando joined subviews mediante SharePoint designer 2010

Recientemente en un proyecto se me presentó un requerimiento en el cual se necesitaban mostrar mensajes de Bienvenida y reconocimientos de empleados, hasta ese punto era bastante sencillo administrar una lista y crear un dataview sencillo que exponga los resultados. Sin embargo había un requerimiento adicional, en donde se solicitaba que los mensaje de Bienvenida y reconocimientos puedan ser administrados de manera separada. En ese sentido deberíamos manejar 2 listas: una con la información básica del empleado y la categoría del mensaje y otra lista con los mensajes según categoría (Bienvenidas, Reconocimientos, otros).

Mostrarlos en un mismo Dataview requeriría el uso de joined subviews. A continuación explico los pasos necesarios:

1. Crear la lista con datos básicos de empleados y la categoría del mensaje. 

 

2. Crear la lista de mensajes administrables con un campo de categoría también.

 

3. En SP Designer crear un nuevo Linked Data Source.

 4. Clic en Configure Linked Source…

5. Seleccionar las listas que queremos enlazar.

6. Seleccionar la opción Join the contents….

 7. Poner un nombre a nuestra conexión.

8. Crear un nuevo Empty Dataview en una página aspx en blanco.

9. Clic en «Click here to select a data source».

10. Seleccionar nuestra conexión recientemente creada.

11. Seleccionar los campos de la lista de datos básicos del empleado que deseemos incluir en nuestra vista y clic en Multiple Ítem View.

12. Agregar una columna adicional a nuestra tabla para insertar el campo proveniente de la lista enlazada de Mensajes.

 13. Ubicar en el Datasource al campo Mensaje de nuestra lista de mensajes y clic en Joined Subview.

14. Enlazar basados en el campo Categoría.

15. Y finalmente habremos logrado enlazar las 2 listas en una sola vista. Podemos ahora darle el formato que deseemos a la vista.