Hace ya unos meses que tenemos disponible un pequeño gran add-in para Microsoft Dynamics CRM que nos permite mostrar información del CRM a través de feeds RSS. Aunque en principio la tecnología RSS fue concebida para la sindicación de noticias, es una idea aplicable a otros tipos de información, como viene a demostrar este ejemplo.
La verdad es que el concepto, contrariamente a lo que se pueda pensar, es muy interesante para dinamizar una implementación de Microsoft Dynamics CRM. Podemos disponer de información del negocio de manera dinámica sin ni siquiera tener que abrir el CRM, recibiremos información sobre nuevas oportunidades, nuevas cuentas, productos, nuevas incidencias, etc… directamente en nuestro lector de feeds. Nos mantendremos actualizados de la nueva información importante que se introduzca en nuestro sistema CRM.
Por poner un ejemplo, que seguro que ya se os están ocurriendo un montón, imaginad un agente de servicio técnico que trabaja todo el día a través de Outlook con el cliente de CRM instalado, para ese agente sería genial tener un feed RSS que le avisase de las nuevas incidencias que se la han asignado, de nuevos artículos interesantes en la base de conocimiento, y todo ello automáticamente sin tener que preocuparse. Y además sin salir de Outlook, por que aunque hay buenos clientes RSS externos a Outlook, también tenemos clientes como IntraVnews para Outlook 2003, y Outlook 12 (Office 2007) que ya trae incluido un lector de RSS; aunque todavía no se puede utilizar con Microsoft CRM.
Funcionamiento y Seguridad
La versatilidad de este add-in es increíble por su forma de crear los feeds RSS. Pone a nuestra disposición un hilo rss por cada vista que tengamos disponible en el sistema, por ejemplo: Mis Citas, Cuentas activas, Mis casos, etc. , lo que nos permite crear feeds RSS a placer ya que las vistas son personalizables. Pero eso no es todo, los usuarios también puede personalizar su experiencia con los feeds ya que ellos mismos los pueden crear guardando su consultas avanzadas.
¿Cómo consigue esto? Pues seguro que ya lo habéis adivinado, gracias a los Servicios Web y el al hecho de que todas las vistas y consultas pueden ser obtenidas de ellos. Estas consultas se guardan en formato Fetch XML (del que hablaremos otro día) lo que permite al add-in utilizarlas directamente en el método Fetch de los servicios web para obtener la información de los feeds.
En cuanto a la seguridad podemos estar tranquilos, por que utiliza impersonación en las llamadas a los servicios web, con lo que los usuarios sólo podrán acceder en el RSS a la misma información que su rol en Microsoft Dynamics CRM le permita.
La instalación y el Problema
El addin CrmRssFeeds, lo podéis descargar siguiendo el enlace, es en realidad una pequeña aplicación web que incluye unas páginas aspx para la generación de los feeds. Incluye todo el código, lo que como veremos no solucionará un problema, y un sencillo pero muy descriptivo manual de instalación. Que básicamente nos guiará en la compilación y el despliegue de la aplicación.
El principal problema que podemos tener si seguimos al pie de la letra los pasos del manual es que vamos a encontrar una Excepción en la llamada a los servicios web ¿Por qué? Pues porque en ningún sitio hemos puesto la url de nuestros servicios web. La url se encuentra configurada en el propio código de los proxys de los servicios web (tal y como la deja Visual Studio por defecto), con lo que para cambiar la configuración debemos modificar la url en los ficheros crmservice.cs y metadataservice.cs.
Otro problema con el que me he encontrado, es que mucha gente ignora el aviso de que hay que compilar la aplicación con .Net Framework 1.1 y utiliza el prompt de Visual Studio 2005. Si compilamos con .Net 2.0 el rss funcionará correctamente, pero, Microsoft CRM no lo hará y encontraremos errores como que no se puede mostrar el calendario de servicios. Esto se debe a que al hacer esto el pool de aplicaciones de Microsoft CRM será reasignado a la versión 2.0 de ASP.NET. Si llegais a esta situación tendréis que cambiar manualmente la configuración del pool en el administrador de IIS. Para evitar este problema basta con asegurarse de utilizar la versión 1.1 de .Net con el compilador de C#, por ejemplo, modificando el make.bat para que utilice obligatoriamente la versión correcta indicando el path completo C:WINDOWSMicrosoft.NETFrameworkv1.1.4322csc /out:RSSServices.dll /target:library MetadataCache.cs MetadataService.cs CrmService.cs
Versión Modificada
Como el CRM Rss está publicado con código abierto bajo una licencia de código fuente, me he permitido el lujo de modificarlo. Espero no estar infringiendo ningún acuerdo de licencia, que por lo que he leído me parece que no.
La modificación que he hecho es una tontería para evitar los problemas que he descrito:
Añadir un web.config con dos entradas de configuración de la aplicación CRMServiceUrl y MetadataServiceUrl.
Modificar los proxys de los servicios web para que utilicen esas entradas de configuración.
Modificar el readme para avisar de estos cambios
Modificar el make.bat para incluir la ruta completa al compilador adecuado de C#.
Podeis descargarla desde geeks, CRM Rss Connector Modified by Marco.
Conclusiones
El soporte para Rss en Microsoft Dynamics CRM 3.0 es una herramienta increíble que nos proporciona un dinamismo inimaginable en nuestra implementación de Microsoft Dynamics CRM, y lo hace de la forma más sencilla posible. Además, es otro gran ejemplo de las cosas que podemos construir utilizando el SDK de Microsoft Dynamics CRM.
¿Qué os parece la disponibilidad de feeds rss en aplicaciones de negocio como CRMs? ¿Creis que con esto acercamos la tecnología al usuario? ¿Me meteré en un lío por modificar el CRM Rss Feed Connector?
Un Saludo,
Marco Amoedo Martínez
La última vez que hablamos sobre los métodos de los servicios web del CRM dejamos a un lado dos métodos…