Servicios Web y Client Side Scripting de Microsoft Dynamics CRM

Hoy en día, está más que claro que los Servicios Web han llegado para quedarse, por lo menos, para quedarse lo que se suelen quedar las tecnologías; unos cuantos añitos hasta que algo mejor revolucione el mundillo. Pero el caso es que la utilización de servicios web puede ser de grandísima utilidad en la personalización de Microsoft Dynamics CRM, y no sólo desde código .Net como se tiende a pensar. Hoy intentaremos ver un ejemplillo de cómo esto es posible, y así reforzar la idea de la capacidad que tiene JavaScript junto con opciones ISV para personalizar el CRM como veíamos en el post anterior.


Supongo que la mayoría ya habéis oído hablar de AJAX (Asynchronous JavaScript and XML), una gran herramienta que nos permite utilizar Servicios Web desde JavaScript, y de las enormes posibilidades de interactividad que proporciona a los interfaces web. Y como los clientes de Microsoft Dynamics CRM son en sí interfaces web, aún que utilicemos el cliente Outlook los formularios son webs, AJAX también es aplicable a la personalización del CRM.


Vale, ya sabemos que podemos utilizar AJAX, que por lo tanto podemos llamar a Servicios Web desde código JavaScript personalizado en Microsoft CRM. Pero… ¿Y para qué lo utilizamos? Pues vamos a ver un sencillo ejemplo en el que nos podría ayudar, y así seguro que ya se nos empiezan a ocurrir más.


Si recordáis, en el último post vimos como incluir botones personalizados en las barras de herramientas de Microsoft Dynamics CRM. Bueno, pues imaginad que queremos insertar un botón que nos permita consultar datos bursátiles online de una cuenta directamente desde la ficha. Insertar el botón ya sabemos cómo se puede hacer porque ya lo vimos, pero cómo usamos AJAX para llamar a servicios web no está tan claro.


Para utilizar AJAX no tenemos más que instanciar el objeto ActiveX Microsoft.XMLHTTP, y llamar al servicio web que deseamos utilizando el método GET. En nuestro ejemplo vamos a llamar a un servicio web de WebServicex, un sitio que proporciona servicios web de utilidad y gratuitos, para consultar la cotización de la cuenta. Una vez instanciado, hacemos la llamada al servicio web componiendo la url del servicio y concatenándole el símbolo de cotización que tenemos en el campo tickersymbol de la entidad account.


//Server


var serverUrl = «http://www.webservicex.net»;


// Get stock quote.


symbol = crmForm.all.tickersymbol.DataValue;


// Instantiate at connection to the Web service and call the get method.


var xmlhttp = new ActiveXObject(«Microsoft.XMLHTTP»);


xmlhttp.open(«get», serverUrl + «/stockquote.asmx/GetQuote?symbol=»+escape(symbol), false);


xmlhttp.send();


 


Una vez realizada la consulta recibiremos una respuesta XML con un montón de información bursátil sobre el símbolo. Ahora tenemos que parsear el XML y quedarnos con lo que nos interesa. Para ello, y aunque hay métodos mejores, tomamos los substring que nos interesan de la respuesta y listo.


//Tags for XML response


var startNameTag = «Name»;


var endNameTag = «/Name»;


var startLastTag =»Last»;


var endLastTag = «/Last»;


var startMarketTag =»MktCap»;


var endMarketTag = «/MktCap»;


 


// Get Name


var valueStart = 0;


var valueEnd = 0;


valueStart = xmlhttp.responseXML.xml.indexOf(startNameTag, valueEnd) + startNameTag.length+4;


valueEnd = xmlhttp.responseXml.xml.indexOf(endNameTag, valueEnd+1)-4;


 


name= xmlhttp.responseXML.xml.substring(valueStart, valueEnd);


//Get Last Value


var valueStart = 0;


var valueEnd = 0;


valueStart = xmlhttp.responseXML.xml.indexOf(startLastTag, valueEnd) + startLastTag.length+4;


valueEnd = xmlhttp.responseXml.xml.indexOf(endLastTag, valueEnd+1)-4;


last= xmlhttp.responseXML.xml.substring(valueStart, valueEnd);


// Get Market Capitalization


var valueStart = 0;


var valueEnd = 0;


valueStart = xmlhttp.responseXML.xml.indexOf(startMarketTag, valueEnd) + startMarketTag.length+4;


valueEnd = xmlhttp.responseXml.xml.indexOf(endMarketTag, valueEnd+1)-4;


marketCap= xmlhttp.responseXML.xml.substring(valueStart, valueEnd);


 


Y mostramos los resultados en cuadro de diálogo para simplificar. Aunque bien podríamos haber insertado los valores en campos del formulario para que quedasen almacenados, por ejemplo, guardar un dato interesante como es la capitalización de mercado de nuestro cliente.


// Show results


alert(«Valor de las acciones de «+ name +»: n»+last+»n Capitalización: «+marketCap);


 


Bueno como veis no es excesivamente complicado llamar a servicios web desde código de lado cliente en Microsoft Dynamics CRM. Y lo mejor es que esto nos abre multitud de posibilidades, no sólo para llamar a servicios web externos, sino para contactar con nuestras propias aplicaciones o incluso utilizar los propios servicios web de Microsoft CRM. No me diréis que no se os ocurren muchas posibilidades ¿no? En el SDK hay más ejemplos e información así que ya sabéis.


Bueno, espero que este post y el anterior os hayan servido para ver que siempre hay que tener en cuenta las personalizaciones de script de lado cliente antes de lanzarnos a cosas más complejas. A partir de hoy morirán menos moscas a cañonazos.


Saludos,


Marco Amoedo Martínez

Client Side Scripting en Microsoft Dynamics CRM

Son muchas las veces que me encuentro con las mismas preguntas sobre personalización de Microsoft Dynamics CRM 3.0 ¿Se puede hacer esto? ¿Con qué método es mejor hacerlo? ¿Se puede hacer esto con JavaScript/Workflows/Callouts?


Bueno, pues vamos a aclarar un poquito que podemos conseguir con cada cosa, hoy voy a intentar mostrar la utilidad del Client Side Scripting con JavaScript y el fichero ISV.config, para que veáis qué se puede conseguir con esto, y cómo nos permite añadir funcionalidad de forma sencilla a nuestro despliegue de Microsoft Dynamics CRM.


“Las moscas y los cañonazos”


Antes de nada, me gustaría mencionar una frase que solía repetir un profesor mío en la carrera y que creo que debería ser unos de los principios de todos los diseños de sistemas informáticos y la ingeniería en general: “No mates moscas a cañonazos”. Detrás de una frase tan simple, hay una gran filosofía de trabajo. Una filosofía que nos dice que hay que ajustar la solución al problema, y tratar de resolver los problemas con soluciones que no solo sean eficaces, sino que sean eficientes y no añadan complejidades innecesarias. ¿Por qué os cuento esto? Pues, porque muchas veces JavaScript es el matamoscas adecuado, aunque la gente tiende a utilizar los cañones de personalizaciones más complejas en .Net. Hay que destacar que JavaScript se ejecutará en el lado cliente sin afectar al servidor, mientras que las extensiones con .Net se ejecutan en el servidor añadiendo más carga de trabajo al mismo.


Personalmente, cuando me enfrento a personalizaciones de CRM intento investigar primero si las posibilidades de las personalizaciones más sencillas (formularios, vistas, workflows, JavaScript, ISV, Iframes…) son capaces de solucionar el problema. Y digo investigar, porque muchas veces es difícil saber a priori sin un método nos puede solucionar nuestras necesidades. Pero lo bueno, es que aunque utilicemos mucho tiempo en esta investigación, este tiempo nunca será un tiempo perdido ya que nos ayudará a saber un poco más sobre las posibilidades de personalización de Microsoft Dynamics CRM.


JavaScript e ISV en funcionamiento


Vamos a pensar un escenario en el que JavaScript será el matamoscas adecuado, y así ver algo más de su utilidad. Imaginad que en nuestra empresa resulta de vital importancia controlar de una manera más menos fiel la duración de las llamadas, por ejemplo, para saber lo que se tarda en atender de media a un cliente en el callcenter o poder conseguir estadísticas sobre nuestros empleados de atención al cliente. Sabemos que existe un campo en la entidad Llamada Telefónica que se utiliza para almacenar la duración, pero este campo se cubre de forma manual introduciendo demasiada desviación del tiempo real de atención. Así que necesitamos un método que permita a nuestros empleados determinar la duración de la llamada de una forma más fiel a la realidad.


¿Qué os parece utilizar unos botones en el formulario de la llamada para tener disponible una especie de contador de duración? Pues es una sencilla personalización que se puede conseguir mediante JavaScript y personalizaciones ISV, que podría servir para nuestro objetivo.


Si nos fijamos en los campos disponibles en la entidad “phonecall” encontraremos dos que serán la base de nuestro desarrollo. Se trata de actualstart y actualend, dos campos tipo DateTime que mostraremos deshabilitados en el formulario y con formato de fecha y hora. El objetivo de incluirlos en el formulario es que nuestro código JavaScript pueda acceder a ellos utilizando el DOM (Document Object Model, más información en el SDK) del CRM, y deshabilitados para que el usuario no pueda modificarlos manualmente. El formulario quedaría más o menos como en la figura del final donde aparecen los campos añadidos y los botones.


Ahora tenemos que usar estos campos para calcular la duración. El primer paso, podría ser incluir un botón en el formulario que almacenase el instante de comienzo de la llamada en el campo actualstart. El segundo paso, sería poner otro botón para parar el contador, este botón almacenaría el instante actual en el campo actualend y obtendría la duración de la llamada mediante la diferencia de actualend y actualstart. Y finalmente podemos poner un tercer botón para resetear el contador.


Vale, ¿Y cómo añadimos los botones y la funcionalidad de los botones? Pues como ya dije con ISV.config y Javascript. Lo primero es pensar que código JavaScript tienen que ejecutar los botones. Como por ejemplo:




  • Botón Start Timer


 


Sólo debemos almacenar la fecha y hora actuales en el campo actualstart


 


crmForm.all.actualstart.DataValue=new Date();


 




  • Botón Stop Timer

 


Tomamos la fecha y hora actuales, la almacenamos en actualend, y calculamos la duración.


 


var inicio = crmForm.all.actualstart.DataValue;


var fin = new Date();


var duration =(fin-inicio)/1000/60; crmForm.all.actualdurationminutes.DataValue=Math.round(duration); crmForm.all.actualend.DataValue=fin;


 




  • Botón Reset Timer

 


Ponemos el valor null en los tres campos


 


crmForm.all.actualstart.DataValue=null;


crmForm.all.actualend.DataValue=null;


crmForm.all.actualdurationminutes.DataValue=null;


Una vez que hemos pensado el código, tenemos que añadir los botones a la barra de herramientas de la entidad llamada de teléfono para que lo ejecuten. Esto lo conseguimos añadiendo nuevos elementos Button dentro del elemento ToolBar de la entidad phonecall (llamada de teléfono), cada uno con el código correspondiente en la propiedad JavaScript. A continuación tenéis el xml que he añadido al fichero ISV.config.xml para obtener el resultado de la imagen,


     <Entity name=«phonecall«>


<!– The Timer Tool Bar –>


<ToolBar ValidForCreate=«1« ValidForUpdate=«1«>


<ToolBarSpacer />


<Button Title=«Start« ToolTip=«Start Timer« Icon=«/_imgs/ico_18_history.gif«


JavaScript=«crmForm.all.actualstart.DataValue=new Date();«


AvailableOffline=«true«/>


<Button Title=«Stop« ToolTip=«Stop Timer« Icon=«/_imgs/ico_16_142.gif«


JavaScript=«var inicio = crmForm.all.actualstart.DataValue;


var fin = new Date(); var duration =(fin-inicio)/1000/60;


crmForm.all.actualdurationminutes.DataValue=Math.round(duration);


crmForm.all.actualend.DataValue=fin;«


AvailableOffline=«true«/>


<Button Title=«Reset« ToolTip=«Reset Timer« Icon=«/_imgs/ico_16_5005.gif«


JavaScript=«crmForm.all.actualstart.DataValue=null;


crmForm.all.actualend.DataValue=null;«


AvailableOffline=«true«/>


<ToolBarSpacer />            


</ToolBar>


</Entity>


 


 


 


Como veis el xml tiene algunas propiedades más como la imagen del botón, si está disponible offline, etiqueta y demás. Todas ellas vienen explicadas en el SDK del CRM, os recomiendo que os bajéis la nueva versión 3.0.5 del SDK y le echéis un vistazo.


Ahora sólo tenéis que modificar el fichero web.config para activar las personalizaciones ISV. Buscad la opción que os muestro a continuación y poned el valor dependiendo de en qué cliente queráis verlo.


<add key=«ISVIntegration« value=«All|Outlook|OutlookLaptopClient|OutlookWorkstation|Web«/>


Espero que este pequeño ejemplo os ayude a ver más claramente las posibilidades de la personalización de Microsoft Dynamics CRM con scripts del lado cliente. De todas formas, intentaré hacer algún ejemplo más y mostrar más capacidades del JavaScript, como por ejemplo llamadas a servicios web con AJAX.


Hasta la próxima, espero vuestros comentarios.


Marco Amoedo Martínez


Mis agradecimientos a Félix Durán por su aportación a este post en el grupo de noticias.


 

Actualización de Microsoft Dynamics CRM 3.0 SDK

Microsoft acaba de liberar la versión 3.0.5 del SDK de Microsoft Dynamics CRM. Esta versión corrige errores de versiones anteriores del CRM y añade nuevos ejemplos y documentación. Entre las principales novedades encontramos:


La información de referencia para programación de la Guía de Programación del Servidor contiene por fin información detallada sobre todos los atributos y todas las entidades del CRM, ahorrándonos el tener que usar el Visor de Metadatos (http://crmserver/sdk/list.aspx). Además se ha añadido información sobre otra gran fuente de dolores de cabeza con las personalizaciones, las enumeraciones de statuscode y statecode y la relación existente entre ellos para cada entidad. Según se informa en la noticia, se han actualizado cerca de 4000 referencias en el SDK, todo un gran trabajo.


Nuevos ejemplos de programación, tanto para el lado cliente como para el lado servidor. Como por ejemplo, trabajar con campos lookup, convertir un objeto dynamic entity a un objeto de una clase concreta del CRM, cómo averiguar el ID de un registro, etc.


Mejora del apéndice sobre roles de seguridad y privilegios, añadiendo también un montón de información sobre todos los privilegios necesarios para los mensajes del método execute del Servicio Web.


Un ejemplo de cómo llamar a servicios web desde código de lado cliente utilizando AJAX. Para mi uno de los mejores


Bueno, no os digo más, probadlo.

Sincronizando datos de Microsoft Dynamics CRM con otras aplicaciones

Hoy vamos a hablar de Microsoft CRM Synchronization Tool, un nuevo ejemplo de la gran y activa comunidad que está surgiendo en torno a Microsoft Dynamics CRM. Se trata de una herramienta de sincronización de datos, creada por Justin Santa Barbara, que nos permitirá tener servidores web remotos (o aplicaciones) que utilicen los datos de Microsoft Dynamics CRM para lectura/escritura manteniendo la sincronización de los datos. Y todo ello mediante métodos soportados, sin comprometer las futuras actualizaciones de nuestro despliegue de CRM.


¿Cómo funciona?


La herramienta se basa en las vistas filtradas para obtener los datos de Microsoft Dynamics CRM 3.0 y en los servicios web para introducir las modificaciones de los datos al CRM. Microsoft CRM Synchronization Tool se encarga de crear una BBDD con tablas que tengan una estructura similar a las vistas filtradas de las entidades que queremos utilizar en la sincronización. Una vez creadas, la herramienta se encarga de comprobar los cambios en los datos las vistas para trasladarlos a las tablas, y viceversa, trasladar los cambios de las tablas al CRM mediante los servicios web.


Con esto conseguimos tener una BBDD con tablas sincronizadas con el CRM, pero aún falta algo, falta la posibilidad de que la aplicación se encuentre en un lugar remoto y que no se pueda asegurar una conexión de red de forma continua. Por ejemplo un servidor CRM en nuestras oficinas, y un servidor web en hosting externo que tiene un aplicación web que necesitamos que utilice datos del CRM. Para esto, la herramienta utiliza una característica de replicación de SQL Server, concretamente Merge Replication, que permite tener sincronizadas las tablas de dos BBDDs. Con esto conseguimos tener una BBDD en el servidor web que utilice datos del CRM, y se sincronice con el CRM cuando se encuentre disponible la conexión entre ambos servidores. En este pdf podéis encontrar un esquema sobre el funcionamiento de Microsoft CRM Synchronization Tool.


Pero la cosa no acaba ahí, también es posible limitar los registro que se utilizan de Microsoft CRM para evitar transmitir por la red datos innecesarios. Podemos, por ejemplo, hacer que las consultas de los usuarios en la web se carguen al CRM sin que sea necesario sincronizarlas de vuelta, es decir, sincronizando en un solo sentido.


En resumen…


La idea es sencilla, pero elegante y eficaz, con lo cual resulta una gran solución para establecer un mecanismo de sincronización de datos en Microsoft Dynamics CRM y otras aplicaciones. Sin embargo, aún no está madura y le falta la documentación, pero en cuanto se avance en su desarrollo seguro que será un “must-have” para Microsoft Dynamics CRM.


Podéis encontrar el código fuente de la herramienta en C# y un pdf aclaratorio de su funcionamiento en CRM SandBox y el blog de Justin Santa Barbara


Hasta la próxima,


Marco Amoedo Martínez

Informe sobre Microsoft Dynamics de Forrester Research

Forrester Research, una conocida firma de investigación de mercados y tendencias tecnológicas, publicó hace un par de meses un informe sobre Microsoft Dynamics y su estrategia. En él se revisan los objetivos de Green Project, y las estrategias de versionado en olas.


 


Aunque no aporta grandes novedades, es de lectura recomendada, ya que nos hace meditar un poco sobre los puntos clave de Microsoft Dynamics, y sus posibilidades y objetivos a largo plazo.


 


Prestad especial atención a los comentarios de los analistas de Forrester sobre la estrategia de mejora de la usabilidad con roles, y la mejora que Microsoft esta llevando a cabo en la experiencia de usuario. También destacar los comentarios sobre las funcionalidades CRM de otros productos de Dynamics, y la estrategia de presentar Dynamics CRM como un producto bien diferenciado en previsión de un futuro.


 


Y sobre todo, aunque no leáis el resto del informe (que sólo tiene 6 páginas), leer las conclusiones. Muy interesante la recomendación final sobre los puntos clave para  decidirse por Microsoft Dynamics en una empresa, aunque creo que es una excesiva simplificación y debería incluirse alguno más. Y sin desperdicio las conclusiones finales que, en resumen, vienen a decir que: Microsoft tiene muy buenas oportunidades de triunfar en este sector, pero que tendrá que lidiar con la complejidad de sincronizar las versiones de sus familias de productos para conseguir el objetivo final, ya que si no podría llegar con retraso con respecto a sus competidores SAP y Oracle.


 


Os dejo el informe de Forrester en la sección de archivos, aunque esta disponible para la descarga desde Microsoft Downloads. También echadle un vistazo a esta imagen sacada del informe, que ayuda a poner en orden las claves de Green Project.


 


Saludos,


Marco Amoedo Martínez



Informe: http://geeks.ms/files/494/download.aspx


SharePoint CRM List Web Part, solución del problema de instalación

A estas alturas la mayoría ya conoceréis la existencia del CRM List Web Part para Sharepoint. Personalmente creo que es una grandísima herramienta, ya que permite integrar gran parte de la información de Microsoft Dynamics CRM en los sitios de SharePoint, facilitando la colaboración y el trabajo diario a los usuarios.


Por poner un ejemplo, imaginad un sitio de SharePoint de soporte técnico en el que queramos almacenar una librería de documentación técnica, un foro para el personal técnico, y publicar noticias relacionadas con el servicio técnico. Vamos un lugar de colaboración y comunicación entre el equipo técnico, es fácil de conseguir con SharePoint ¿no? Pero, no sería más cómodo para un técnico de servicio, y mucho más productivo, poder ver la lista de casos sin resolver que tiene asignada directamente en la portada del sitio de SharePoint, sin tener que mantener otro navegador abierto con el CRM, y además poder abrir el caso con solo hacer click sobre él en la lista. Pues esta es una de la múltiples posibilidades que nos abre el CRM List Web Part, y que combinadas con otros Web Parts como el de Reporting Services, pueden permitirnos crear sitios web SharePoint que tengan toda la información necesaria para el trabajo diario de algunos roles de personal sin necesidad de conocer el funcionamiento completo del CRM.


El Problemas de Instalación


Bueno, y ahora viene la justificación del título de este post. Seguro que a más de uno le ha pasado que al intentar instalar esta herramienta se encuentra con un curioso error diciendo que no tenemos una versión válida de SharePoint. A mí también me pasó. La causa, una “cagada” en la comprobación de la versión que hace que el instalador sólo detecte como válida la versión Inglesa.


A la espera de que solucionen este problema en el instalador, os voy a dar un pequeño rodeo, o “workarround” que si no está en inglés igual no funciona, para solucionar el problema.


La Solución


En resumen, lo que tendremos que hacer es instalar manualmente el Web Part en nuestro SharePoint no inglés. Para ello necesitamos extraer del instalador el .cab que contiene el Web Part y utilizar un comando de administración de Sharepoint para instalarlo en nuestro servidor.




  • Paso 1, conseguir el .cab: En la documentación encontramos este comando, Msiexec /i listwebpart.msi EXTRACTCABONLY=1 TARGETDIR=<path to install location>, pero de nuevo el problema está en que debe ejecutarse en un servidor con Sharepoint en inglés. Pero no os preocupéis, ya lo he hecho yo en un Virtual PC, así que bajaros el archivo con el .cab de Microsoft CRM List Web Part.


  • Paso 2, instalar el .cab en el servidor: Debemos de ejecutar este comando en el servidor de SharePoint donde queramos instalar el Web Part, «C:Archivos de programaArchivos comunesMicrosoft Sharedweb server extensions60BINstsadm» -o addwppack -filename MicrosoftCRMListWebPart.cab -globalinstall.


  • Paso 3, configurar el Web Part: Seleccionar “editar página compartida” en el sitio SharePoint en el que queráis añadir el Web Part , pulsad añadir elementos web, y en la galería del servidor virtual encontrareis el CRM Web Part. Una vez añadido sólo hay que configurarlo, indicando entre otras cosas la dirección del servidor de CRM (ie: http://servidorcrm:5555), pero la configuración es bastante intuitiva y no muy compleja. En este enlace tenéis más explicaciones sobre la configuración del Web Part, y sobre como conectar varias instancias para mostrar listas de registros relacionados (ie: un web part con cuentas, y otro con los casos de la cuenta seleccionada en el anterior).

Conclusión


Una magnifica utilidad que Microsoft nos da, una vez más, para Dynamics CRM 3.0, aún a pesar de la pequeña “cagada” con la instalación. Si no lo habéis probado, no sé a que estáis esperando, por que de verdad que os va a gustar.


Como recomendación final, si necesitáis hacer un despliegue más complejo que CRM y SharePoint en el mismo servidor, leeros la documentación del Web Part por que hay que configurar unas cuantas cosillas más.


Saludos,


Marco Amoedo Martínez

Más sacudidas de la primera ola – Dynamics AX 4.0 RTM

Ya hace meses que comenzaron las sacudidas de la primera ola de Green Project con Microsoft Dynamics CRM 3.0 y un “desconocido” en nuestro mercado Dynamics GP 9.0, es hora de otra «sacudida», Microsoft Dynamics AX 4.0.


 


El 9 de Junio Microsoft liberó Dynamics AX 4.0 RTM, dando disponibilidad general para el acceso a esta solución ERP. Esta versión se encuentra dentro de la primera ola de aplicaciones de Green Project, el proyecto de futuro de Microsoft Dynamics, y cumple con lo requisitos para ello. Se han incluido servicios web, integración total con Office y Sharepoint, experiencia de usuario mejorada, feeds RSS, Business Inteligence con SQL Reporting Services 2005 y un montón de cosas más.


 


Entre las nuevas funcionalidades más destacables están cosas como el soporte RFID, que posibilitará una mayor automatización de la cadena de suministro. Un nuevo conector para BizTalk 2006, que permitirá mayores facilidades de integración. El AIF (Application Integration Framework) para integrar procesos entre compañías utilizando XML. Una arquitectura orientada a servicios con un modelo de objetos con metadatos, que permite extender y adaptar la aplicación para adecuarse a cualquier entorno.


 


Sólo hay un pero, las versiones localizadas y adaptadas a otros mercados saldrán para finales de año. Así que tendremos que esperar un poquito más para poder tener Dynamics AX 4.0 en español.


 


Ahora falta que se cumpla una promesa, el conector de Axapta 4.0 para CRM 3.0, al igual que el existente para GP 9.0, que permitirá sincronización on-line entre ambas soluciones. Algo que anunció Satya  Nadella en su blog hace un tiempo, y que también debería cumplirse para la siguiente versión de Dynamics NAV 5.0.


 


Si queréis saber más sobre esta noticia podéis consultar el blog de Satya, donde además teneis disponible un podcast con entrevistas a partcipantes del TAP (Technology Adoption Program) de AX 4.0. Y la nota de prensa de Microsoft sobre el lanzamiento.


 


Como veis Microsoft está haciendo una apuesta muy fuerte por el mercado de software empresarial con Microsoft Dynamics. ¿Qué os parece?


 


Saludos,


Marco Amoedo Martínez

Como conseguir una actualización segura de CRM 1.2 a 3.0

Esta es una pregunta que estoy viendo muy a menudo por lo foros, y es de suponer que la gente de soporte de Microsoft Dynamics también, porque a principios de Junio se ha publicado el Microsoft CRM 3.0 Upgrade Advisor Wizard. Una herramienta que diagnostica una instalación de Microsoft CRM 1.2 y genera un informe indicando si nuestra instalación está preparada para actualizarse. Además, está disponible en castellano entre otros idiomas.


No la he probado todavía, pero se supone que en caso de encontrar algún problema la herramienta nos avisará y nos dará algunas pistas para solucionarlo. Si no, siempre nos quedarán los foros. En cualquier caso, esto es otra muestra más del gran esfuerzo que Microsoft Dynamics está haciendo con esta solución CRM.


En estos procesos de actualización de versiones es cuando toma sentido la recomendación: “Usar personalizaciones soportadas”, que luego intentamos actualizar y pasa lo que pasa.


¿Alguna experiencia traumática con actualizaciones? Dejad vuestros comentarios.


Saludos,


Marco Amoedo Martínez

Pruebas de rendimiento de Microsoft Dynamics CRM

Hace un mes os hable de un nuevo toolkit de Microsoft Dynamics para hacer pruebas de rendimiento de Microsoft Dynamics CRM 3.0, el Microsoft CRM Performance and Stress Toolkit. Como ya vimos esta era una herramienta muy potente y que nos permitiría establecer métricas de rendimiento sobre una implementación de la herramienta CRM.


Como primer ejemplo de lo que se puede conseguir con este toolkit, en CRM Sandbox han publicado un informe sobre unas pruebas de rendimiento de Microsoft Dynamics CRM. Os adelanto que los resultados son muy buenos. Se trata de unas pruebas que simularon a unos 2000 usuarios concurrentes, haciendo una operación aproximadamente cada 8 minutos sobre un conjunto de datos de 80Gb (8.5 millones de filas). Vamos una prueba de carga “heavy”, como dicen los ingleses, y que supera con creces a lo que se puede considerar un despliegue de tamaño medio.


Eso sí, hay unas pequeñas trampas, la polémica ya está servida. El hardware estaba compuesto principalmente por dos pedazo de servidores con 4 procesadores Xeon de última generación y 32Gb de RAM, es decir, unos pedazo de bichos. Otro truco, y para mí lo más interesante del informe, son una serie de optimizaciones sobre los índices de la BBDD de Microsoft Dynamics CRM. Os recomiendo que le echéis un vistazo a estas optimizaciones, no tienen desperdicio. Y finalmente tampoco había definida ninguna regla de workflow en el entorno de prueba, a mi me hubiese gustado ver como se comportaba lanzando un montón de procesos de workflow, pero bueno, cuando convenza a alguien para que me preste unos servidores así lo probaré.


Venga, echadle un vistazo vosotros mismos y me comentáis vuestras opiniones.


Hasta la próxima,


Marco Amoedo Martínez


 

Nueva demo de Microsoft Dynamics CRM

Microsoft Dynamics ha publicado una nueva demostración de CRM 3.0 que será de gran ayuda a todos los que tengan que demostrarle a alguien las maravillas y posibilidades de este producto. La demo se publica en formato de imagen de Virtual PC 2004, consiste en una máquina virtual corriendo Windows 2003 con Microsoft Dynamics CRM 3.0 y todo lo necesario ya instalado.


Esta demo está pensada, en principio, para marketing y venta de la herramienta, pero hará las delicias de todos aquellos a los que nos gusta curiosear las capacidades de este magnífico software. Podremos ver en funcionamiento cosas tan interesantes como la integración con Sharepoint, la creación de un portal web de servicio al cliente integrado con Microsoft Dynamics CRM, data mining, ejemplos de la potencia del workflow, y un montón de mejoras más que podréis descubrir en los 3Gb y pico que ocupa.


Sin duda, es una gran herramienta de Marketing a la hora de convencer a un cliente de las ventajas y beneficios de Microsoft Dynamics CRM 3.0, sobre todo si queremos mostrarle todas las posibilidades de la herramienta. Pero también es una gran ayuda para profundizar más en la parte técnica, “destripando” las personalizaciones y viendo su funcionamiento.


Esta demo de Microsoft Dynamics CRM 3.0 ha sido fruto de un montón de sugerencias hechas por partners de Microsoft en el sitio Microsoft CRM VPC Feedback, donde si queréis podéis dejar también vuestras sugerencias para futuras versiones de la demo. De nuevo, una gran muestra del magnífico trabajo “comunitario” que Microsoft Dynamics está haciendo con esta herramienta.


Podéis consultar un pdf en el blog de Ben Vollmer que explica más en detalle todas las novedades y mejoras a la imagen de VPC. La demo de Microsoft Dynamics CRM 3.0 está disponible en el centro de descargas de Microsoft. ¿A que estáis esperando?


Marco Amoedo Martínez


Microsoft Dynamics CRM 3.0 Imagen VPC