Hoja de Ruta para Microsoft Dynamics CRM

DynamicsCRMParece que está de moda esto de las hojas de ruta… El caso es que como muchos ya habréis leído en el blog del equipo del CRM, Microsoft ha decidido crear un documento llamado “CRM Statement of Direction” que esta accesible en CustomerSource y PartnerSource.

El documento no tiene desperdicio, a lo largo de 18 páginas se comentan novedades muy interesantes aunque sin comprometerse a una fecha exacta. Muchas de ellas han sido anunciadas durante el WPC ’08 en Houston. Pero antes de acceder al documento, en la descripción ya hay un par de detalles interesantes. Se trata de un documento que tiene el objetivo de transmitir las direcciones futuras para Microsoft Dynamics CRM cuya próxima versión, V.Next (aún no tiene nombre), se prevé que coincida en tiempo con la release de Office 14 en torno a finales de 2009 principios de 2010. Además de dejar claro que se trata de un documento “vivo” que se mantendrá actualizado periódicamente.

Bueno, pasemos a la parte interesante. ¿Qué novedades hay? Básicamente las podemos desgranar en unas cuantas categorías: CRM Mobile, Aceleradores, Sharepoint, Bizztalk, CRM Online y CRM V.Next

CRM Mobile

Bueno, la verdad es que ya se estaba tardando en dejar claro las intenciones en este apartado. Había mucha gente preguntándose dónde estaban los clientes para dispositivos móviles en CRM 4.0, y si bien es verdad que hay dos fantásticos clientes para dispositivos móviles de la mano de partners como CWR Mobility y Ten Digits, la curiosidad era saber que tenía pensado hacer Microsoft. Y en este documento se dan algunas respuestas bastante claras, dejando claro que el objetivo es dotar a Microsoft Dynamics CRM de clientes móviles que permitan trabajar online y offline en plataformas Windows Mobile y Blackberry, además de acceso total desde cualquier dispositivo con un navegador compatible con HTML 4.0. Los anuncios más interesantes son:

CRM Mobile Express: Una nueva versión del cliente que Microsoft lanzo para CRM 3.0 como Open Source. Este cliente está orientado a trabajar a través de internet, es decir online, en cualquier dispositivo que soporte HTML 4.0. La principal novedad es que Microsoft dará soporte completo a este cliente. Se prevé que esté disponible durante en los próximos meses (Q3 2008)

Alianza con Ten Digits: Microsoft ha anunciado una alianza con Ten Digits para ofrecen un cliente para dispositivos móviles basados en Windows Mobile y BlackBerry capaz de trabajar offline. Poco se sabe todavía de esta alianza, se supone que durante los próximos meses se arán a conocer los detalles de su funcionamiento.

Aceleradores, Sharepoint y Bizztalk

Microsoft repasa en este documento los aceleradores de soluciones o “plantillas” que han sido anunciadas en el WPC’08 y que serán liberados en los próximos meses. Estas plantillas tendrás todo lo necesario, incluido el código, y vendrás lista para funcionar incluso con instalación. Los “solution accelerators” son:

Analytics: Continuando con la versión libreada para CRM 3.0, un paquete de Business Intelegence para CRM 3.0. Aunque con la diferencia de que esta vez se incluirán funcionalidades para distintos niveles de madurez proporcionando un rango de soluciones de BI que cubran diferentes tamaños de organizaciones.

  • eService: Se trata de una aplicación web lista para crear un portal de atención al cliente utilizando como backend Microsoft Dynamics CRM.
  • Event Management: Una aplicación con las correspondientes personalizaciones para CRM que permitirá a una empresa gestionar eventos. Incluyendo invitaciones, registro vía web, control de asistencia, etc.
  • Enterprise Search: Basada en la utilización de la tecnología incluida en el Business Data Catalog de Microsoft Sharepoint. Permitirá crear portales en Sharepoint integrando la información de Microsoft CRM y permitiendo utilizar las funcionalidades de búsqueda.
  • Sales Methodologies: Una plantilla que permitirá incluir plantillas e integración de procesos de ventas tales como: Account Selling (TAS), SPI Solution Selling y Miller Heiman.
  • Extended Sales Forecasting: Un acelerador para aumentar las cap acidades de los procesos de venta en Microsoft CRM y dar mayores facilidades a los usuarios de ventas para gestionar sus oportunidades. De momento no hay mucha información.
  • CRM Notifications: Este acelerador retoma la idea de los feeds RSS que se había liberado para CRM 3.0 y permitirá a los usuarios crear alertas mediante su lector de RSS favorito para seguir los feeds con, por ejemplo, las últimas oportunidades o los últimos casos creados.
  • Business Productivity: Se tratará de un kit de personalizaciones variadas de utilidad en casi cualquier organización. Aunque su enfoque no está todavía definido.

SharePoint. En el documento también se anuncia la liberación del “CRM List Web Part” para CRM 4.0. Se trata de una versión actualizada del Web Part existente para 3.0 que permitía : seguridad de Microsoft CRM. La principal novedad es que soportará CRM 4.0 Hosted y en el futuro CRM OnLine.

Bizztalk. Ahora mismo está disponible un adaptador de BizzTalk para CRM 3.0 y 4.0. Sin embargo este adaptador no utiliza el nuevo end point de Servicios Web de CRM 4.0 con lo cual no aprovecha las características de CRM 4.0 como multi organización. Microsoft prevé lanzar una nueva versión que utilice todas las características de CRM 4.0

Bueno, esto es todo por hoy. Habrá que permanecer atentos a próximas noticias entorno a este documento y las fechas finales de publicación de las funcionalidades prometidas.

En un próximo post comentaré las características que se van esbozando para la siguiente versión de Microsoft CRM y algunas cosas más sobre la evolución de CRM Online. Si no podéis esperar y tenéis acceso a PartnerSource o CustomerSource, consultad el documento completo allí.

Un saludo

Cambiar la vista por defecto de la historia de actividades

Para abrir la segunda era de este blog, me gustaría compartir con vosotros un pequeño código en JavaScript para Microsoft Dynamics CRM 4.0 que permite fijar la vista por defecto del histórico de actividades de “Los últimos 30 días” a “Todas”.

Este es un requisito que me he encontrado bastante a menudo en organizaciones que hacen un uso intensivo del CRM para registrar las interacciones con sus clientes, y en el que las interacciones en forma de actividades ocurren con una frecuencia no demasiado alta.

El caso es que por defecto Microsoft Dynamics CRM 3.0 y 4.0 en la vista de historia filtran por defecto las actividades cerradas en los últimos 30 días. Esto quiere decir que al abrir la vista de historial, por ejemplo en un contacto, puede ser que no se muestre ninguna actividad ya que estas han sido completadas hace más de treinta días.

clip_image002

Este comportamiento es para muchos usuarios es un poco inconveniente, ya que han de acordarse de cambiar el filtro de “Últimos 30 días” a “Todas” para poder ver las últimas actividades realizadas con este cliente.

Probablemente algunos conoceréis un código publicado por mi amigo Michael Höehne que permitía solventar este problema para el caso de CRM 3.0. Por si no os acordáis aquí está un post en su blog explicando cómo cambiar la vista por defecto en CRM 3.0.

Lo malo, es que este código no funciona en Microsoft Dynamics CRM 4.0, es lo que tiene utilizar personalizaciones no soportadas, a veces dejan de funcionar al actualizar la versión J Sin embargo, la buena noticia es que después de pelearme un poco con este código y utilizando Visual Studio para depurar el JavaScript, he dado con la causa del fallo en CRM 4.0 y la solución.

Antes de nada pongamos el código.



   1: /*************************************************************
   2: BEGIN SET THE DEFAULT VIEW OF ACTIVTY HISTORY TO ALL
   3: **************************************************************/
   4: if (crmForm.FormType==2 || crmForm.FormType==3 || crmForm.FormType==4)
   5: { 
   6: var DEFAULT_VIEW = «All»;
   7: /**************************************************************
   8: * Change the default view of a view selection combo box
   9: **************************************************************/
  10: SetDefaultView = function(viewCombo, viewName) { 
  11:  
  12:     /* If the view has already been set, we don’t need to do it again. */
  13:     if (viewCombo.value != viewName) { 
  14:  
  15:         /* Set the new view */
  16:         viewCombo.value = viewName; 
  17:  
  18:         /* Call FireOnChange to run the code in the appropriate HTML control.
  19:          * Without this call, only the selection in the combo box changes,
  20:          * but not the content of the grid */
  21:         viewCombo.FireOnChange();
  22:     }
  23: } 
  24:  
  25: /**************************************************************
  26: * Event handler. Called whenever the ready state of the 
  27: * areaActivityHistoryFrame changes. 
  28: **************************************************************/
  29: areaActivityHistoryFrame_OnReadyStateChange = function() { 
  30:  
  31:     /* Waiting until the frame has finished loading */
  32:     if (this.readyState == «complete») { 
  33:  
  34:         /* This is the frame we’re interested in */
  35:         var frame = document.frames(«areaActivityHistoryFrame»); 
  36:  
  37:         /* And this is the view combo box */
  38:         var viewCombo = frame.document.getElementById(«actualend»); 
  39:  
  40:         /* The view combo box uses a style sheet that references a HTML
  41:          * control. We have to wait until the htc file is loaded, 
  42:          * otherwise the call to FireOnChange in the SetDefaultView
  43:          * method will fail. */
  44:         if (viewCombo.readyState == «complete») { 
  45:  
  46:             /* If the control already has finished loading, we can
  47:              * directly set the new view. */
  48:             SetDefaultView(viewCombo, DEFAULT_VIEW);
  49:         } 
  50:  
  51:         else {
  52:             /* Otherwise we have to register another event handler
  53:              * waiting until all of the include files used by the 
  54:              * combo box are loaded as well. */
  55:             viewCombo.onreadystatechange = function() {
  56:                 if (this.readyState == «complete») {
  57:                     SetDefaultView(this, DEFAULT_VIEW);
  58:                 }
  59:             }
  60:         }
  61:     }
  62: } 
  63:  
  64: /**************************************************************
  65: * loadNavItem. Instead of using the function LoadArea 
  66: * available in the CRM intenal code we have to use this modified 
  67: * function to avoid a problem loading the breadcrumb.
  68: **************************************************************/
  69: loadNavItem = function (navItemName)
  70: {
  71:     var o = document.getElementById(navItemName);
  72:     crmNavBar.down(o);
  73: } 
  74:  
  75: /* Load the history area.*/
  76: loadNavItem(‘navActivityHistory’); 
  77:  
  78: /* Immediately switch back to the main form. The previous line is needed
  79: * to initialize the history frame. This line switches back immediately,
  80: * so you see the main application form while the history frame is loaded
  81: * in the background. 
  82: */
  83: loadNavItem(‘navInfo’); 
  84:  
  85: /* We have to wait until the the history frame was completely loaded, so
  86: /* we register a new event handler, calling the code above. */
  87: document.frames(«areaActivityHistoryFrame»).document.onreadystatechange = areaActivityHistoryFrame_OnReadyStateChange; 
  88:  
  89: }
  90: /*************************************************************
  91: END SET THE DEFAULT VIEW OF ACTIVTY HISTORY TO ALL
  92: **************************************************************/ 

NOTA: AL principio del código se define una variable llamada DEFAULT_VIEW con el valor “All”. No estoy seguro, pero podría ser necesario cambiar este valor al nombre concreto de la opción de la lista en la vista del Historial. Por ejemplo “Todas”, o similar en español. Ahora mismo sólo tengo a mano CRM 4.0 en inglés así que no lo puedo comprobar. Si alguien lo prueba por favor que deje un comentario.

La explicación

Como podéis comprobar el código es básicamente el mismo que el que en su día creo Michael Höehne, ya que no me voy a parar a explicar en detalle el funcionamiento. El único cambio por mi parte para hacerlo funcionar en CRM 4.0 ha sido incluir una nueva función loadNavItem(name) y utilizar esta función en lugar de llamar a la función interna de CRM LoadArea() ya que provocaba un error.

La principal causa del fallo del código diseñado para 3.0, es el “breadcrumb” (nunca he sabido como traducir esto al español). Vamos ese texto que nos dice “History”, o el área en la que nos encontremos, en azul debajo de “Contact: Marco Amoedo”. El caso es que la función LoadArea utilizada en el código original falla al llamarla nosotros directamente no es capaz de tomar el nombre del área a mostrar y falla al actualizar el texto de cabecera.

Después de rebuscar un poco por el código JavaScript que incluye Microsoft Dynamics CRM 4.0, me encontré con un objeto la mar de interesante. Se llama crmNavBar, y como comentaré en futuros posts, nos va a proporcionar muchas funciones para manejar la barra de navegación que aparece a la izquierda de la mayoría de los formularios en Microsoft CRM.

En este caso, como se ve en el código, para crear la nueva función para cargar áreas simplemente uso un método del objeto crmNavBar llamado down, al que pasándole el objeto del menú lateral que queremos mostrar se encarga de hacer todo el trabajo tal cual si el usuario hiciese click en ella.

La única pega, es que el usuario puede percibir un parpadeo como resultado de provocar la carga del área del histórico de actividades si la respuesta del servidor no es lo suficientemente rápida L

Espero, que esta pequeña pieza de código os sea de utilidad.

Un saludo,

Marco

NOTA: El código mostrado en este post es una personalización no soportada. Esto quiere decir que no es posible obtener soporte técnico de Microsoft sobre esta personalización, y que además puede dejar de funcionar sin previo aviso al realizar una actualización.


UPDATE: Justo cuando publicaba este post me dí cuenta de que Michael Höehne acababa de publicar una nueva versión de este código para CRM 4.0. Le he hechado un vistazo, y sigue una aproximación mejor que la explicada en este post. Os recomiendo que utlicéis el código publicado allí en vez de este ya que es más sencillo y evitaréis el parpadeo al cargar el formulario http://www.stunnware.com/crm2/topic.aspx?id=js33


De todas formas continuaré hablando del objecto crmNavBar, que como veréis nos habrirá algunas posibilidades muy interesantes.

El del CRM 2.0?

Han pasado muchas lunas desde la última vez que escribí algo en este blog. Podría dar las mil y una excusas para justificarlo, sin embargo creo que ni merece la pena hacerlo. Lo que si tengo claro es que quiero retomarlo, así que aquí estoy de nuevo. La verdad es que durante todo este tiempo han sido mil y una las veces que me he propuesto continuar con escribiendo, espero que esta vez se la definitiva. Aunque he de reconocer que estoy un poco oxidado :o) Me refiero a escribir, no a trabajar con Microsoft Dynamics CRM, en esto último estoy en mejor forma que nunca.

Bueno, a modo de resumen he de decir que ahora trabajo en AlfaPeople UK, Gold Certified Partner especializado en Dynamics CRM, y estoy de forma permanente en Londres. Por aquí tengo el placer de colaborar con gente con un gran conocimiento y sobre todo mucha pasión por Microsoft Dynamics CRM. Prueba de ello son algunas de las cosas que hemos estado haciendo los últimos meses, y que han culminado con la presentación de dos de las soluciones creadas por AlfaPeople en el World Partner Conference hace un par de semanas en Houston.

Para daros una idea os dejo un par de enlaces a video sobre Crm Alive (que no CRM Live! o CRM Online). Se trata de una plataforma para ISVs que está dando mucho que hablar. En próximos post os comentaré con más detalle en que consiste.

Video: CRM Alive para el ISV

Video: CRM Alive para el usuario final

Y sin más, espero que aquí comience la segunda era de este blog. Ahora que está de moda todo esto del 2.0 no sé si cambiarle el nombre a “El del CRM 2.0” :o)

Un Saludo a todos,

Marco