Trabajando con Business Connectivity Services en SharePoint 2013 Online de Office 365

Encontramos que SharePoint Online de Office 365 en esta versión 2013 nos ofrece un sin número de opciones tecnológicas para resolver de una manera efectiva diversas necesidades de negocio de forma rentable y diría yo con un alto retorno de inversión. Usando SharePoint Online de Office 365 en tan solo unos minutos podemos activar el acceso a externos para permitir la colaboración con empleados y con esto resolver una de las necesidades más comunes de hoy en día, como lo muestro en este post.

Una vez dicho esto, hoy quiero compartir como acceder a fuentes de datos externas usando Business Connectivity Services en Office 365 para mostrar a los desarrolladores como se puede consumir información de otras aplicaciones y/o servicios y con ello dar una solución de acceso a datos externos dentro de un entorno hospedado en la nube como lo es Office 365.

Supuestos

  • Se tiene acceso al App Catalog de la instancia de Office 365
  • Se cuenta con un servicio OData accesible
  • Cuentas con el Visual Studio 2012 y el Update 2 instalado

El servicio OData

En este ejemplo usaremos un servicio OData publicado en http://www.odata.org y disponible aquí http://services.odata.org/Northwind/Northwind.svc/ como un ejemplo de implementación de la base de datos Northwind. Si accedes podrás ver que puedes navegar y obtener información de ejemplo usando la sintaxis REST directamente desde la dirección URL del navegador como http://services.odata.org/Northwind/Northwind.svc/Customers(CustomerID%20=%20'ALFKI')/Orders

BCS en Office 365

Si trabajaste con BCS en versiones anteriores seguramente sabes que podemos utilizar SharePoint Designer para crear el tipo de contenido externo y posteriormente usarlo para construir una lista. En este ejemplo usaremos una App for SharePoint 2013 de tipo autohosted para albergar la definición del tipo de contenido externo y la configuración requerida por BCS para operar, me refiero al archivo modelo .bdcm.

Cargamos Visual Studio 2012 y creamos una App for SharePoint 2013 llamado Orders

Al dar clic en Ok procedemos a especificar la instancia de Office 365 que podremos usar para depurar nuestra aplicación SharePoint 2013. No olvidar especificar que esta aplicación es autohosted. Básicamente estamos creando un App-scoped External Content Type.

Este proceso nos crea dos proyectos dentro de la misma solución, trabajaremos solo en Orders (no en OrdersWeb). Dentro del proyecto Orders utilizaremos un asistente que viene con el Update 2 de Visual Studio 2012 con el cual podremos configurar el tipo de contenido para fuentes de datos externa.

El asistente nos solicita la dirección URL de la fuente de datos OData con la cual podremos analizar los recursos disponibles en el servicio para así auto generar los archivos necesarios para configurar nuestro tipo de contenido y nuestra lista. Especificamos el nombre de nuestra fuente de datos en este caso Northwind.

Al dar clic en Next el asistente nos muestra los distintos recursos REST disponibles en el servicio. Para efectos de este ejemplo solo mostraremos las órdenes, así que elegimos Orders para proceder a generar el tipo de contenido externo basado en el esquema de este recurso y también para crear una instancia de lista basada el tipo de contenido externo.

Este asistente nos genera una característica y un tipo de contenido externo llamado Orders. Si analizamos lo que en el Solution Explorer se muestra vemos que tenemos la definición del tipo de contenido (Orders.ect) y una instancia de lista. Si abrimos el archivo Orders.ect con un editor XML encontraremos el archivo modelo que BCS necesita para poder trabajar con la fuente de datos externa, básicamente el asistente de configuración que acabamos de ejecutar nos generó este archivo con las entradas correspondientes necesarias para que BCS pueda trabajar.

 

i abrimos el archivo Elements.xml ubicado dentro de la instancia de lista llamada Orders vemos que se encuentra la definición de la instancia de lista así como las entradas necesarias que indican que es un tipo de contenido externo de BCS.

 

ambién podemos cambiar el Icono de nuestra App for SharePoint 2013 y modificar el comportamiento de la aplicación como tal editando el archivo AppManifest.xml. Lo que haremos es modificar el StartPage de nuestra aplicación para que haga redirección directamente a nuestra lista de Orders.

Cambiamos de:

<StartPage>~remoteAppUrl/Pages/Default.aspx?{StandardTokens}</StartPage>

Por:

<StartPage>~appWebUrl/Lists/Orders</StartPage>

Seleccionamos nuestro proyecto Orders y damos clic derecho para proceder a hacer Publish el cual nos muestra una ventana con el resumen de la publicación que estamos por aplicar. Este proceso compila y empaqueta dentro de un archivo .app nuestra aplicación.

 

A continuación con nuestra aplicación resultante procedemos a subir nuestro archivo al catálogo de aplicaciones.

Dentro de nuestra herramienta central de administración damos clic en Apps y damos clic en App Catalog lo cual nos va a llevar hacia la colección de sitios de aplicaciones. Si aún no tienes configurado esto en tu ambiente de Office 365 favor de avisar para publicar como hacerlo.

Estando sobre nuestra colección de sitios de catálogo de aplicaciones vamos a seleccionar la lista de Apps for SharePoint donde podremos cargar nuestro archivo .app hacia el catalogo.

Damos clic en new app y procedemos a cargar nuestro archivo .app, posteriormente vamos a capturar información en un formulario donde hay que asegurarse que la opción Enable este seleccionada.

Con esto configurado, ahora podemos usar nuestra aplicación dentro de cualquier colección de sitios. Simplemente seleccionamos Site Actions – site settings

Damos clic en add an app para proceder a buscar y seleccionar nuestra nueva aplicación de Orders.

 

La aplicación de Orders se mostrara en el catálogo de aplicaciones.

 

Damos clic en el botón Trust It para especificar que confiamos en esta aplicación.

 

Con esto se agrega un nuevo enlace en el menú Quick Launch de nuestro sitio. Cuando damos clic sobre el BCS y nuestro tipo de contenido externo cobran vida para mostrarnos las Órdenes de nuestra fuente de datos externa basada en un servicio OData desde una instancia de Office 365.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Configurando el acceso a usuarios externos en SharePoint 2010 Online de Office 365

Recientemente me topé con el escenario de soportar la colaboración entre usuarios internos y externos en un entorno de Office 365. Básicamente estamos hablando de un escenario de extranet donde se necesita permitir a un grupo de empleados de una organización colaborar con diferentes personas externas a la organización, ¿te suena familiar?

Es bien sabido que SharePoint 2010 soporta características de funcionalidad para atacar escenarios de extranet entre ellos el de la autentificación. Pues sucede que Office 365 Microsoft ya tiene configurado un proveedor de autentificación de Windows Live con el cual podemos hacer que usuarios con cuenta de Microsoft Windows Live puedan acceder nuestro portal SharePoint sin necesidad de que nosotros tengamos que aprovisionar, gestionar o mantener credenciales de acceso.

El primo de un amigo me platicó que en su empresa les crean cuentas de directorio activo a los proveedores y que además le pidieron que programara webparts para permitir al proveedor modificar los datos de su cuenta de dominio directamente desde el portal de Extanet porque de pronto se volvía no administrable el hecho de que le proveedor tuviera que levantar tickets de soporte porque se le olvidó su contraseña. Personalmente pienso que exponer el AD para que un externo actualice sus datos mediante una interface de programación no es lo mio.

En este video muestro como SharePoint 2010 Online de Office 365 facilita la configuración de un escenario de Extranet mediante el soporte de autentificación con Windows Live. Desde ya, gracias por ver este video y no olvide suscribirse.

 

Programación de WebParts de SharePoint 2010 con Visual Studio 2010, pan comido para un desarrollador .NET

Tú como programador .NET seguramente has escuchado hablar de SharePoint y muy probablemente en las bolsas de trabajo encuentras que un plus en tu currículo como programador es saber SharePoint o programar en SharePoint. Bien, pues aquí tienes un video que publique en mi canal de YouTube donde como programador puedes conocer lo siguiente de SharePoint:

  • Que son los WebParts
  • Como están constituidos
  • Que elementos o clases usamos para construirlos
  • Como programarlos y con qué herramientas
  • Como empaquetarlos para su portabilidad

Date el tiempo ver este video, especialmente desde la demostración ya que se explica y se muestra lo básico de la construcción de un webpart, múltiples enfoques de empaquetamiento e incluso hasta el uso de AJAX.

Ya instalé SharePoint ¿Y ahora qué? en Video

Hace muchos años di una plática llamada Ya Instale SharePoint ¿y ahora qué? En donde pude mostrar algunas de las características del producto Microsoft Office SharePoint Server 2007 mediante ejemplos y demostraciones graficas ilustrando como podríamos hacer uso de las funcionalidades. Si por alguna razón del destino aun te encuentras dando soporte a plataformas WSS 3.0 o MOSS 2007, este webcast sin duda te será de utilidad ya que se muestra ejemplos de:

  • InfoPath Form Services
  • Content Types
  • Business Data Catalog
  • Workflows
  • Excel Services

Espero que si por alguna razón vez este video lo encuentres útil en estos tiempos.

Paquetes de Ejemplos de Codigo para App for SharePoint y Apps for Office

El buen Ricardo Loo publica en post llamado “Developer Must-Have: 125+ Apps for Office and SharePoint Code Samples’ en el blog de Office Apps donde nos comparte  que el equipo de publicación de contenido ha publicado más de 125 ejemplos de código para Apps for SharePoint y Apps for Office. Básicamente son dos paquetes de ejemplos disponibles para su descarga.

·         Apps for Office sample pack

·         Apps for SharePoint sample pack

Muy conveniente en estos días y sin duda en el futuro.

Mi Musica (My Music)

Dicen que la profesión no está peleada con la vocación. Bueno, pues aquí dejo algunas de las piezas musicales que a muy temprana edad pude componer y que a lo largo de los años la memoria del alma no me dejado olvidar...
Posted by haaron | with no comments

Programando con Listas en Windows SharePoint Services 3.0

Aquí un entrenamiento que di hace muchos años para una empresa en la que trabajé como líder de practica de colaboración. Básicamente preparé esta presentación para mostrar a programadores como manejar listas y elementos de forma programática a fin de introducirlos al mundo de la programación SharePoint.

Durante una revisión a un respaldo me encontré con los archivos fuente de este WebCast y decidí compilarlo como video para subirlo a mi canal de Youtube. Si por alguna razón sigues dando soporte a plataforma SharePoint 2007 (MOSS o WSS 3.0) en temas de programación este video sin duda es una referencia que te permitirá entender los fundamentos de programación de listas en SharePoint.

Además, creo que los temas aquí mencionados también aplican para SharePoint 2010 J

Construyendo Flujos de Trabajo en SharePoint 2010 utilizando SharePoint Designer 2010

Damas y caballeros, aquí un ejemplo de principio a fin de como construir una solución de flujo de trabajo en SharePoint 2010 usando tipos de contenido, diagramas de Visio Services, listas personalizadas, condiciones y acciones de SharePoint Designer 2010 y  también se ve como programar una actividad personalizada de SharePoint Designer 2010 con Visual Studio 2010. 

Análisis de Código para SharePoint Online

Aún recuerdo FxCop como una de las primeras herramientas que teníamos disponibles los programadores .NET para revisar nuestro código y evaluarlo contra las practicas recomendadas y de esta forma poder mitigar potenciales riesgos de desempeño, seguridad, acceso a datos, etc. Desde el punto de vista de un programador SharePoint podemos utilizar herramientas para revisar nuestro código de la misma forma por ejemplo las herramientas de análisis de código de Team Foundation sin duda nos dan una información muy valiosa, pero, en el mundo SharePoint debido al modelo de objetos y a las diversas tecnologías disponibles sabemos que se tienen otras reglas de codificación o prácticas de programación adicionales a las de .NET y en ese sentido ¿no sería útil contar con una herramienta que te revisa el código SharePoint?

MICROSOFT SHAREPOINT ONLINE CODE ANALYSIS FRAMEWORK (MSOCAF)

Es una herramienta de revisión y diagnóstico de código de programación de soluciones SharePoint que nos permite identificar inconsistencias clip_image001de programación en distintas áreas para asegurar la calidad de nuestros desarrollos en ambientes o entornos compartidos. MSOCAF ofrece todo un proceso de revisión de soluciones, se utiliza para validar las soluciones de programación que se publican en SharePoint Online de Office 365 y que ahora tenemos disponible para revisar nuestras aplicaciones tanto para soluciones SharePoint Online 2010 y 2013.

Las reglas que revisa son:

  • Rule Tests Against
  • Use of SPList.Items
  • SPListItemCollection\GetItemByID inside loop
  • SPQuery without Row Limit property
  • SPQuery Row Limit value range
  • Timer jobs
  • Out-of-the-box files modification
  • Verbose logging \ tracing
  • Deprecated APIs
  • Editing Web config files
  • Inline code ASPX pages
  • SPListItem.Update() inside loop
  • SPMonitoredScope Web Part check*
  • SPDiagnostics Service
  • ULS logging
  • BlobCache value editing in web.config
  • RunWithElevatedPrivileges restrictions
  • SharePointQueryWebPartsCheck
  • Windows Claims Check

Así que no está nada mal poder incluir el uso de esta solución como parte del proceso de revisión de código de programación en nuestros equipos. Ahora, esta solución ha sido diseñada para Office 365 y SharePoint Online, sin embargo, desde mi muy particular opinión sí creo que nos da un soporte para revisar nuestras soluciones On Premise.

Sin más que decir por el momento aquí les dejo el enlace: https://caf.sharepoint.microsoftonline.com/

Entrevista Audiencias Técnicas Latam

  • ¿Quién eres en tus propias palabras?
    Personalmente soy esposo, padre, hijo, hermano, amigo y profesionalmente apasionado de las soluciones TI para resolver problemas de negocio, originario de la ciudad de Mexicali, Baja California México y egresado del Instituto Tecnológico de Mexicali.
  • ¿Qué ha sido lo que te ha motivado para trabajar con tecnologías Microsoft?
    Desde 1997 tomé la decisión de ser un profesional Microsoft. Lo que me motivó fue la familia de productos de la suite Visual Studio 97, al ver tantas opciones y herramientas decidí ser experto en todas y construir mi carrera entorno a ellas. Desde entonces he venido evolucionando con la plataforma de desarrollo de Microsoft.
  • ¿Qué hace que tú seas un excelente evangelist?
    La experiencia que voy adquiriendo proyecto tras proyecto usando los productos de desarrollo de Microsoft, adicionalmente la pasión por compartir el conocimiento de campo adquirido es lo que considero me hace un evangelist, porque al final del día realmente creo en lo que comparto con los demás.
  • ¿Cuál es la mejor cosa que te ha pasado desde que eres evangelist?
    El aprender nuevas formas de entender las problemáticas de mis clientes y manejar al riesgo, ser evangelist me ha abierto puertas que solo con distintos enfoques de pensamiento puedes aprovechar y evolucionar a lo que nunca imaginé que podría ser o generar en mí.
  • Microsoft ha renovado toda su gama de productos, ¿Qué puedes decirnos de Visual Studio?
    Tomar la decisión de evolucionar con Visual Studio es una forma también de evolucionar como profesional del software, cada vez más nos acercamos a la promesa de tener la información disponible a cualquier hora, en cualquier lugar y desde cualquier dispositivo donde Visual Studio y las tecnologías que lo conforman son los pilares para lograrlo. SI quieres mantenerte en la ola de innovación y ser capaz de tomar ventaja de ello, prende Visual Studio y construye soluciones modernas que aporten valor a la empresa conforme evolucionan los productos.
  • Cuéntanos cuáles crees que son las tres fortalezas del nuevo paquete de desarrollo de la nueva gama de productos Microsoft.
    La unificación de los paradigmas de desarrollo, el poder y capacidad de construcción de soluciones conectadas y modernas, el ecosistema del modelo de negocio de “Windows Store” que ahora existen para Windows 8, Office 2013, SharePoint 2013, etc. Ahora ya no nada más tienes herramientas para construir soluciones sino también el ecosistema para producir y vender aplicaciones en línea.
  • ¿Qué contiene tu “Computer Bag”?
    Al ser un desarrollador SharePoint que utiliza Visual Studio cargo conmigo dos laptops con más de 8 GB de memoria RAM, un router, más de tres discos duro externo, cables de red, módulos de memoria RAM para laptop, tres discos duros de laptops que puedo quitar y poner dependiendo el ambiente que tenga que usar, plumas, lápices, monedas, concentrador de USBs y dos mouse.
  • ¿Tienes alguna experiencia laboral interesante para contarle a la comunidad de Desarrolladores en Latinoamérica acerca de estos productos?
    Tuve la oportunidad de participar en un proyecto a favor del cáncer donde convocaron a programadores para postularse y participar como miembros del equipo y fui uno de los seleccionados dentro muchos. Considero interesante este proyecto porque el resultado es para ayudar a científicos a colaborar en la investigación del cáncer, uno normalmente construye aplicaciones para contabilidad, ventas, calidad o procesos de negocio, pero construir proyectos para combatir el cáncer ofrece un enfoque diferente de ver la tecnología a favor de la humanidad. Claro que fue Visual Studio, Team Foundation y SharePoint la plataforma para poder organizar y controlar a programadores distribuidos por el mundo en específico México, USA, Israel y Polonia. Más información aquí http://player.vimeo.com/video/31274397?color=c9ff23&autoplay=0
  • Nombra 3 recursos indispensables que quieras recomendarle a la comunidad de Desarrolladores sobre el producto.
    http://pluralsight.com/training
    http://devexpress.com
    http://dotnetrocks.com

7632_1220428597665_4293035_n7632_1222269643690_3150958_n165626_1814962980653_6320900_n7632_1220428677667_7363111_n468875_4353982694559_1592458217_o

Microsoft Most Valuable Professional en SharePoint Server

EN_01

Ya soy muchos los años en los que he tenido la fortuna de ser un profesional reconocido por Microsoft inicialmente en la tecnología ASP.NET desde 2005 y SharePoint Server desde 2009. El programa MVP ha dejado muchas satisfacciones que han influido positivamente de forma directa e indirecta en mi vida. Si lo veo asi, es una lista enorme de beneficios que el programa ha dejado a lo largo de este tiempo. Gracias a todas las personas que han sido parte de este viaje. 

Felicitaciones a mis colegas MVPs que tambien fueron renovados!

A veces me pregunto qué hubiese pasado si el nombramiento no hubiese llegado, ¿Tú te lo has preguntado?

Posted by haaron | with no comments
Filed under:

Hay que darle permiso de Retrieve People Data for Search Crawlers a la cuenta que ejecuta el Crawl

Acto 1: Al ver los resultados de búsqueda notas que las imagines de las personas no se ven sin embargo en el My Site si

 

Acto 2: Encuentras en el Log del Crawl errores relacionados con Access denied y con el User Profile

 

¿Cómo se llamó la obra?

Hay que darle permiso "Retrieve People Data for Search Crawlers" a la cuenta que ejecuta el Crawl

 

Y después de un incremental crawl el resultado fue:

 

 

 

 

Una razón mas por la cual no inicializa la aplicación de servicio de perfiles de usuario de SharePoint 2010

Cada vez que la aplicación de servicio de perfiles de usuario de SharePoint 2010 se detiene borra algunos valores del registro de Windows relacionados con el servicio de sincronización del Forefront Identity Manager "FIM". El valor de registro se llama "SQLInstance" y se ubica aquí HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FIMSynchronizationService\Parameters. Si esto no te ha sucedido es porque probablemente tu implementación de SharePoint utiliza la instancia Default del servidor SQL la cual es el nombre del servidor como tal, en mi caso yo utilizo una instancia específica distinta a la Default ejemplo "abc" entonces mi servidor e instancia serian "XYZ\abc".

Esto fue lo que me encontré en los ULS logs:

UserProfileApplication.SynchronizeMIIS: End setup for 'Intranet User Profile'.
SetupSynchronizationService :: Sync DB failover Check :: databaseServerMiis = sql_alias
SetupSynchronizationService :: Sync DB failover Check :: originalSyncConnectionString = Data Source=sql_alias;Initial Catalog=XYZ_XYZ_Intranet_UserProfile_Sync;Integrated Security=True;Enlist=False;Connect Timeout=15
SetupSynchronizationService :: Sync DB failover Check:: originalSyncConnectionDataSource = sql_alias
SetupSynchronizationService :: Sync DB failover Check :: new datasource string on connection object = sql_alias
UserProfileApplication.SynchronizeMIIS: Begin setup for 'Intranet User Profile'.
ILMPostSetupConfiguration: ILM Configuration: Validating installation of SQL Service.
ILM Configuration: Error 'ERR_SERVICE_NOT_INSTALLED'.
ERROR ILMPostSetupConfiguration: ILM Configuration: Validating installation of SQL Service FAILED ...
ILM Configuration: Validating account.
ILM Configuration: Validating the system groups...
ILM Configuration: Error 'ERR_INVALID_GROUPS'.
UserProfileApplication.SynchronizeMIIS: Failed to configure MIIS pre database, will attempt during next rerun. Exception: System.Configuration.ConfigurationErrorsException: ERR_INVALID_GROUPS at Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ValidateConfigurationResult(UInt32 result) at Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ConfigureMiisStage1() at Microsoft.Office.Server.Administration.UserProfileApplication.SetupSynchronizationService(ProfileSynchronizationServiceInstance profileSyncInstance). UserProfileApplication.SynchronizeMIIS: End setup for 'Intranet User Profile'.

Después de leer un poco en internet encontré esto y pude ver que el valor de registro SQLInstance estaba vacío por ende no se podía conectar como lo dice las entradas del log.

 

Así que con solo cambiar esa llave estaría solucionado el problema pero tendríamos que asegurarnos que cuando se detenga e inicialice de nuevo la aplicación de servicio de perfiles de usuario tengamos que ir al servidor a establecer este valor una vez más y manualmente, cosa que sinceramente no es lo mejor.

En mi caso muy particular y espero el de muchos también, tengo un SQL Alias que apunta a mi servidor de base de datos, lo que hice fue editar el SQL Alias para que contenga el nombre de la instancia.

 

De nuevo al inicializar el servicio de perfiles todo funciono a la perfección y mi registro de Windows no tuvo ni tendrá que ser tocado por nadie.

el contenido es el rey

Y que me mandan un diseño gráfico de una Intranet en donde al parecer todo se ve bien sin embargo destaque los siguientes puntos:

  • No veo ningún lugar que sugiera la búsqueda de contenido, creo que hay un pequeño enlace en el pie de la página. Hoy en día la búsquedas en los sitios son tan importantes de soportar ya que las personas cada vez más están acostumbrados a realizar búsquedas para cualquier cosa que requieran, es por ello que nuestros sitios de publicación de contenido SharePoint lo deberían soportar adicional tenemos el motor disponible en la plataforma. Cuando cargas tu navegador ¿cuál es tu página de inicio? Seguramente un buscador. Las personas especialmente las nuevas generaciones esperan un buscador en la empresa que les permita escrudiñar la información para encontrar el contenido que requieren con solo proporcionar una palabra clave y dar clic en buscar.
  • Hay que asegurarnos que entendemos el alcance de la funcionalidad expresada en el diseño, normalmente un diseñador gráfico nos podrá proporcionar un ejemplo del aspecto visual que está trabajando pero hay que tener mucho cuidado en aquellos sutiles iconos o formas que representan funcionalidad y que indudablemente tendremos que soportar. Por ejemplo puede que el diseño sugiera el ordenar alfabéticamente algo mediante iconos en los títulos de las columnas de una grilla, bien, pues alguien debe de validar que en efecto eso este soportado por la plataforma donde se montara el diseño gráfico. Un ejemplo también es que hoy en día nos entregan sitios con el icono de RSS asumiendo que será implementado y creando huecos de funcionalidad que visualmente se ven bien pero que quizás no estaban considerados como parte del desarrollo. Cada pixel y cada región cuentan deben de estar justificados funcionalmente.
  • También otro aspecto que me ha tocado revisar es que cuando se entrega una propuesta de diseño gráfico se te da normalmente la página principal con los colores, imagines representativos de la marca, pero eso no es todo el sitio, es importante que se entregue lo que llamamos marcos de página (page layouts) que describen los distintos tipos de contenido e información que el sitio estará entregando en sus distintas secciones o categorías. No es lo mismo una página de noticias que una página de información corporativa, cada acomodamiento distinto representa un tipo de marco en SharePoint y potencialmente una estructura de datos distinta. Es muy importante el tipo de información que será presentada en cada sección de contenido de todo el sitio. Hay que buscar que se vea la estructura y uniformidad en la navegación y en el contenido.
  • Hoy en día la presencia el redes sociales también representa un tema importante de no ignorar desde lo que es cuenta de twitter, youtube, Facebook y linked in son parte de los elementos que se integran en un sitio de publicación web. El diseño debería de contar con un área o sección específica quizás en el pie de página que sugiera la presencia de la marca en las redes sociales.

No te confundas con lo bien que un diseño gráfico se pueda ver, sin duda eso es una fortaleza y representa la forma en la que podrás conectarte inmediatamente con algún visitante, sin embargo el contenido es el rey y en conjunto se da el binomio perfecto de funcionalidad que enganche al usuario con una apariencia sugerente, atractiva y motivante de usar.

Posted by haaron | with no comments
Filed under: , , ,

Y si funciona ¿qué?

Durante una reunión se me pidió mi opinión sobre la factibilidad de automatizar un proceso que actualmente se lleva en papel y su ejecución es literalmente a mano por un proceso electrónico y digital utilizando a SharePoint como la plataforma para lograrlo y ciertamente podríamos decir que en SharePoint se tienen las características necesarias para hacer frente con éxito a un escenarios de captura electrónica de datos y gestión de aprobaciones mediante flujos de trabajo. Sin embargo antes de emitir mi recomendación hice las siguientes preguntas:

  • Cuál sería la meta de este esfuerzo y podríamos enlistar algunos objetivos
  • Aproximadamente ¿cuantas personas estaríamos tocando con la automatización de este proceso?
  • En cuanto a tiempo se refiere, la duración de una instancia del proceso es de ¿cuánto tiempo?
  • El volumen de solicitudes y aprobaciones que se dan por cada instancia del proceso en promedio al mes ¿es de?

Después de escuchar las respuestas y de entender un poco más el contexto de este cliente "el cual busca posicionar a SharePoint para buscan financiamiento" procedí a comentar mi punto de vista el cual describo a continuación:

Estoy seguro que SharePoint puede soportar a gran escala una solución como la que están buscando con la infraestructura y procedimientos adecuados sin embargo, ¿podría el negocio soportarlo también? Mejorar un proceso que actualmente se lleva a mano por uno electrónico o digital requiere mucho más que una infraestructura de servidores, requiere del soporte y compromiso del negocio por las siguientes razones:

  • Necesitaras definir si las autorizaciones que actualmente se llevan en papel y son la causa de la lentitud del proceso se transformaran a autorizaciones digitales las cuales reducirán el tiempo de la gestión. ¿Podrá el negocio darle validez a la autorización digital o electrónica?
  • Una vez reconociendo la autorización digital entonces el resguardo de los registros electrónicos también deberá ser gestionado por la política actual de retención de la información la cual hoy se lleva en papel y cuenta con todo un departamento de archivo. ¿Podría el negocio darle validez legal por así decirlo a los registros electrónicos producidos por el proceso? ¿Cómo entonces podríamos describir una auditoria?
  • De pronto en menos de seis meses podrás identificar la reducción del uso de impresoras y papel, ¿se tienen contratos celebrados con proveedores tanto de soporte técnico y/o fabricantes que se tengan que revisar?
  • Qué pasaría si al ver el impacto y valor de la automatización de un proceso manual a un proceso digital resulta en una demanda mayor por parte del usuario final en la automatización de otros procesos. ¿Estamos listos para soportar una demanda mayor de trabajo? ¿tenemos en claro cómo podríamos evolucionar de forma gradual de un negocio basado en papel a un negocio basado en formas electrónicas?
  • ¿Cuáles serían otros procesos candidatos que por orden natural pudiera seguir a este esfuerzo?

En resumen hay que preguntarnos qué pasara si sale mal pero también que pasara si sale bien la iniciativa. No es que sea un aguafiestas pero para poder hacer un enfoque de solución integral al problema y las expectativas de negocio hay que preguntar ¿Y qué pasaría si es exitoso el proyecto?

Posted by haaron | with no comments

8 años reflexionando y compartiendo experiencias en texto

Fue un día como hoy pero del año 2005 que escribí mi primer post en este blog y desde entonces he venido registrando experiencias y la evolución de la tecnología con la que he venido trabajando. Hoy se cumplen 8 años de reflexionar y compartir experiencias en texto. Gracias por prestarme sus ojos y hacer clic con su intelecto estimado lector y gracias a msmvps.com por prestarme el espacio.

Haaron Gonzalez
Microsoft MVP SharePoint Server

Cuestionario inicial de oportunidad SharePoint

Uno de los principales problemas del mundo del desarrollo de soluciones en SharePoint con los que me he encontrado desde el año 2003 es justamente como dimensionar un proyecto, como entender la realidad en la que nuestros clientes se encuentran y buscar visualizar las expectativas para solucionar su problema, en ese sentido he escrito algunos post que dan un norte de cómo manejar esta situación:

Sin embargo, el día de hoy quiero compartir un formulario que normalmente utilizo al inicio de cualquier oportunidad. Este formulario me permite identificar de forma inicial la problemática que el cliente cree tener, la solución que el cliente visualiza, un diagnóstico inicial del estado de la tecnología y sobre todo un poco de contexto para determinar si mis servicios serán de valor aquí mediante el entendimiento de la necesidad. Quería compartirlo con la comunidad como una herramienta general que puedes usar tanto como para SharePoint o cualquier otro producto que dé una solución de negocio.


Aqui lo puedes decargar:

Enhance the way your Team Members work with Tasks in a SharePoint site

¿Se quiere reír un ratito mi estimado lector? Mire decidí subir un video a mi canal de YouTube grabado en Ingles. Esto es una simple prueba de concepto y le quiero pedir su retroalimentación al respecto. Cualquier sugerencia y crítica constructiva para mejorar mis ingles será bienvenida. Sin más, los dejo!

Inspirado por el artículo Peter Bright sobre WinRT

microsoft-_net-framework-4

 

En mi caso todo empezó con MS-DOS 3.0 pero esa es otra historia. Yo tomé el barco de Microsoft desde 1997, como programador inicié con Visual Basic 5, tuve la oportunidad de utilizar la suite de Office 97 y experimentar lo que fue OLE 2.0, ya como programador Visual Basic 6 construí aplicaciones profesionales que hacían uso de componentes COM construidos por mí y también tuve la oportunidad de compartir con PowerBuilder funcionalidad gracias a COM. El primer libro de programación que compré fue Developing COM/ActiveX Components With Visual Basic 6 de Dan Appleman. Ya durante los cursos oficiales de Visual Basic 6 pude conocer lo que fue Distributed COM (DCOM) y Microsoft Transaction Server (MTS).  A la par HTML y lo que Microsoft llamó DHTML también eran parte de las técnicas de programación que tuve que aprender y dominar, en particular ASP y VBScript fueron para mí una gran oportunidad profesional, en la universidad pude construir aplicaciones web para procesos escolares, así que mí experiencia en ASP mejoró mucho. Después de durar un tiempo construyendo aplicaciones Windows y Web tanto para empresas como para los últimos semestres de pronto escuchamos del Beta de .NET en MSDN, un buen amigo mío lo descargó no sé de dónde y pudimos ver en primer instancia lo que significó el nuevo modelo e acceso a datos, la evolución de DAO por ADO y de ADO a ADO.NET. Recuerdo que el simple el hecho de tener DataSets y DataTables con respecto a Recordsets fue increíble. La posibilidad de trabajar Offline y usar DataSet.WriteXml() para llevarnos los datos en XML y poder trabajar fuera de línea nos dio una y refrescante alternativa. El poder serializar objetos para persistirlos también fue algo emocionante. Tratar de asimilar los tipos de datos por valor y por referencia también fue retador. El 13 de Febrero de 2002 se liberó Visual Studio .NET 2002 en San Francisco, CA donde Bill Gates presidio el lanzamiento y dejó ver la visión que ha venido empujando a Microsoft desde ya hace mucho tiempo "La información disponible a cualquier hora, en cualquier lugar y desde cualquier dispositivo". En ese lanzamiento Grady Booch tuvo una participación durante una demostración justamente hablando de modelado y de ahí conocí el mundo de UML, Design Patterns, etc. También a Tim Huckaby fue parte del Iron Developer contest con quien después tuve la oportunidad de trabajar aquí y algunos otros Speakers en especial a Ari Bixhorn y Chris de DPE de Microsoft. Increíble el lanzamiento y dejó ver todo una nueva visión. En aquel entonces los recursos de capacitación disponibles eran pocos, el .NET Show con Robert Hess y Erica Wiechers, LearVisualStudio.NET con Bob Tabor que después lo hicieron MVP, también me fascinó el concepto del programa VBTV Cheap Show de Chris and Ari donde de una manera muy cómica y relajada dieron a conocer Visual Basic .NET. Tuve la oportunidad de hacer un proyecto en ASP.NET usando Visual Studio .NET 2003 para un evento nacional de la universidad, ahí fue mi primer presentación técnica ante ejecutivos y director nacional de la institución, toda una experiencia nueva pero tan familiar a la vez. Estuve trabajando por un tiempo como programador ASP y de pronto llegó la oportunidad para ser programador .NET de una empresa de software para gobierno importante en mi ciudad. Inicie con Visual Studio .NET 2003 creando aplicaciones ASP.NET 1.1. En ese entonces surge Pattern & Practices y pude conocer el podcast de .NET Rocks de Carl Franklin. Los blogs empezaron a ser más populares. Trabaje bastante con Visual Studio .NET 2003, recibí el nombramiento MVP en el 2004, tome el riesgo y me fui a la ciudad de México a trabajar como instructor y conferencista, surgió Visual Studio 2005 y tuve la oportunidad de participar en el lanzamiento del producto dando platica de ASP.NET 2.0 y conociendo a personas con las sigo frecuentando y que también son MVPs. Lo que más me llamó la atención en aquel entonces fue el modelo proveedor de ASP.NET para soportar la extensibilidad y la implementación de mecanismos muy interesantes para fortalecer la integración. Una vez más Visual Studio 2005 y .NET Framework 2.0 introdujeron muchas mejoras para los programadores en especial el modelo proveedor y sin duda el uso de Generics como parte del modelo de programación y en el caso de Windows Forms el Clickonce Deployment, de hecho .NET Framework 2.0 fue la base de otras versiones de .NET Framework, básicamente se han ido apilando nueva funcionalidad. A mediados entre 2005 y 2008 Microsoft busca unificar los paradigmas de desarrollo y crea WCF, WF, WPF y CardSpace como parte del .NET Framework 3.0. Cabe mencionar que SharePoint 2007 fue construido sobre .NET Framework 2.0 y 3.0. Un cambio radical de nuevo en el modelo de programación y en la forma de construir soluciones conectadas, visualmente atractivas y procesos de negocio. En el 2008 se liberó Visual Studio 2008 con el .NET Framework 3.5 donde por fin LINQ pudo florecer y posicionarse como la respuesta para abstraer el lenguaje que normalmente usamos para manipular una base de datos. LINQ nos dio la posibilidad de seguir usando el lenguaje de programación que conocemos para expresar de forma unificada consultas a bases de datos, colecciones de objetos, archivos XML y cualquier otra fuente de datos para la cual existiera un proveedor, adicional fue la base de Entity Framework como el ORM de Microsoft. Sin duda .NET Data Services (la implementación RESTFull) fue otro nuevo y refrescante enfoque para facilitarnos la construcción de aplicaciones conectadas. También .NET Framework 3.5 y Visual Studio 2008 han sido críticos para la evolución de la plataforma .NET ya que se introdujo de forma muy básica la posibilidad del paralelismo y la noción de facilitarnos la escritura de programas capaces tomar ventaja de los diferentes procesadores y núcleos que el hardware tiene. Se introdujo extensiones para trabajar con patrones como MVC y MVVM para web como para cliente. Ya en la versión .NET Framework 4.0 y Visual Studio 2010 florecieron los patrones con nuevas plantillas de proyecto, pudimos tener integrado en el lenguaje una serie de clases para facilitarnos la escritora y uso de aplicaciones paralelas y asíncronas. Y sin duda Visual Studio fue re construido ofreciendo una UI basada en WPF con un bonche de mejoras para depuración, visualización de código, documentación, análisis, diagramas etc. Visual Studio 2012 también ya fue liberado y sus características a la par del sistema operativo han venido a revolucionar la forma en que construimos aplicaciones así como también el ecosistema para distribuirlas.

Todo este texto ha sido inspirado por un artículo que leí hace un par de días y que quiero recomendar ampliamente para aquel programador avanzado y principiante. Este artículo se llama "Turning to the past to power Windows' future: An in-depth look at WinRT" y da una explicación del pasado para entender mejor el presente y sin duda el futuro. Si realmente estas interesado en el mundo Microsoft tienes que leerlo.

Copiando objetos de SharePoint entre ambientes y versiones, incluido Flujos de Trabajo del bien conocido SharePoint Designer 2010

Una de las contradictorias situaciones que los profesionales SharePoint hemos tenido que enfrentar en algún momento de nuestra carrera es justamente el cómo tolerar la frustración inversamente proporcional al nivel de emoción que nos da ver la simplicidad de creación de un flujo de trabajo de SharePoint Designer 2010. En cualquier sitio web, demostración, articulo, ejemplo y blog post en línea te encontrarás las maravillas de usar SharePoint Designer 2010 como una primer opción de personalización del comportamiento de listas y bibliotecas de usuario, lo que rara vez encuentras publicado en la web es como tomar ese flujo de trabajo personalizado, empaquetarlo e implementarlo en un sitio SharePoint distinto de donde fue creado e incluso en un ambiente alterno.

Desde la liberación de SharePoint 2010 se nos dio la opción de exportar como paquete WSP un flujo de trabajo usando justamente SharePoint Designer 2010 bajo el concepto de Reusable workflows, esta opción si nos da posibilidades de portabilidad, sin embargo, sigue enfrentando escenarios no cubiertos como cuando tenemos un flujo de trabajo que tiene que utilizar columnas de sitio que tienen dependencia a otro servicio como el gestor de metadatos, entre otros escenarios, aunque he de decir que Resusable workflows es la onda como una primer opción de portabilidad.

Bueno, para escenarios de portabilidad más complicados tenemos aplicaciones de terceros como la empresa Sharegate tiene un conjunto de productos de software que facilitan enormemente el copiado de objetos entre sitios "incluido flujos de trabajo". Si alguna vez te has enfrentado a como replicar permisos, documentos, contenido, funcionalidad y configuración en la empresa este producto es una alternativa confiable para lograrlo. Adicional a copiar contenido entre ambientes también ofrece la misma experiencia para copiar contenido entre versiones de SharePoint, desde 2003, 2007, 2010, 2013 y Office 365 SharePoint Online.

 

Posted by haaron | with no comments
More Posts Next page »