CRM a diario
Todo acerca de Microsoft Dynamics CRM (y alrededores)
12/01/12
Funciones Javascript para CRM 2011: una chuleta
Andreas Wijaya's Blog: CRM 2011 Javascript Functions
19/09/11
CRM Reports Uploader and LOcalizer
Hace unos meses (antes del verano, parecen años…) comenté en este blog si alguien se animaba a hacer una mini-herramienta para permitir localización de informes en Microsoft Dynamics CRM. Estaba trabajando en un proyecto en el que tenía (en ese momento) dos informes (en realidad un informe y un sub-informe) que había que publicar en tres idiomas. Cada vez que había que hacer un cambio, por lo tanto tenía que, en el peor de los casos:
- Modificar los informes en el idioma base
- Modificar las cuatro traducciones
- Subir los seis informes a CRM
Total, que cada pequeño cambio era un drama. Pues nada, al final me he animado a hacer la herramienta yo mismo. En un alarde de creatividad lo he llamado CRM Reports Uploader and LOcalizer (CrmRULO) y lo he colgado en codeplex.
Si hay alguien ahí fuera, por favor, que deje comentarios, críticas, alabanzas… en el sitio de codeplex.
05/09/11
Importar ficheros adjuntos en CRM 2011
Un tema poco documentado y que puede ser fuente de bastantes frustraciones: aunque el nuevo sistema de importación de CRM está muy bien, ¿qué pasa cuando tenemos un montón de datos en forma de ficheros adjuntos? Los ficheros adjuntos se representan internamente con la entidad attachment aunque en la interfaz de usuario aparecen como Notas.
El proceso es así:
- Exportar los registros Nota que nos interesen mediante una búsqueda avanzada. No olvidar incluir la columna Regarding apuntando al registro padre de la nota. Los registros padre deben haber sido importados previamente.
- Guardar el excel obtenido con formato XML Spreadsheet 2003 Por ejemplo notes.xml

- Añadir el campo PhysicalFileName con el mismo contenido que la columna File name.

- Crear una carpeta Attachments y copiar en ella los ficheros adjuntos que queramos importar.
- Crear un fichero zip con el fichero notes.xml y la carpeta Attachments.
Nota: si el tamaño total del fichero resultante es mayor de 8 MB ver la sección Ficheros grandes.
- Desde el importador, mapear el campo PhysicalFileName a Document
- Mapear también el campo Regarding al nombre (o campo principal) de la entidad padre.

- Por último podemos guardar el mapa creado por si necesitamos reutilizarlo más adelante.
Ficheros grandes
Lo que significa aquí grande depende de vuestra implementación de CRM. En la mía resultó ser de 8MB el límite de tamaño de los ficheros adjuntos.
- Repartir los ficheros en varias carpetas para que cada zip resultante sea de aproximadamente 5 MB.
- Copiar el fichero notes.xml en cada una de las carpetas.
- Crear n ficheros attachments1.zip, attachments2.zip etc
- Repetir el proceso de arriba para cada fichero zip.
Hay que tener en cuenta que en cada importación fallarán los registros para los que no existe el fichero correspondiente en la carpeta del zip. De todas formas, al final del proceso se habrán importado todos.
Gracias a David E. que comentó el punto clave del atributo PhysicalFileName.
05/08/11
Reports en CRM 2011: lecciones aprendidas
Llevo unos días trabajando en un proyecto de migración del CRM de mi empresa a Microsoft Dynamics CRM 2011 Online. Incluye algunos temas de reporting, y el más básico de ellos es la impresión de facturas automatizada. No debería ser un problema, ¿no? En realidad, no, pero aún así hay algunas cosas que he descubierto por el camino y que … aquí van:
- Si nuestra instalación de CRM es Online, los reports no se pueden basar en consultas SQL, sino en FetchXML. Para que el BIDS (Business Inteligence Development Studio) funcione con estos reports hay que instalar un complemento que viene incluido en el instalador de CRM.
- No existe soporte a localización de los informes, como ocurre con otros proyectos .NET. Esto no es específico de CRM, sino de Reporting Services, así que toca olvidarse de ficheros de recursos resx. Hay algunas alternativas, como por ejemplo incluir código .NET en el informe, pero esto no es posible en la versión Online, ya que requiere instalar las DLLs en la GAC.
- Si se requiere un sub-informe (por ejemplo Factura y Líneas de factura) se debe subir primero el informe padre y luego el informe hijo. En el informe hijo habrá que rellenar el atributo parentreportid.
- Las vistas por defecto de informes muestran los que están en el idioma del usuario y los marcados como Todos los idiomas (-1) En un momento un poco ridículo pensé que quería decir “Todos los idiomas menos uno”, he, he. Pues no, quiere decir que si ponemos el atributo languagecode a –1 los usuarios verán el informe independientemente del idioma que hayan seleccionado.
- Cuando se hacen cambios, subir cada vez el report al servidor es un proceso tedioso. Más aún si tenemos subreports y versiones localizadas.
Conclusión: estaría bien fabricar una herramienta que permita:
- Localizar un report a varios otros idiomas.
- Publicar un conjunto de reports al servidor en una sola acción.
¿Alguien se anima a hacerla? ![]()
22/07/11
Tribulaciones con Silverlight en IFD
Hace poco (poquísimo, o sea, hoy) he tenido que investigar un problema que surge cuando instalamos el Internet Facing Deployment en una instalación de Dynamics CRM 4.0
Una vez superados los temas propios de IFD (cabeceras, DNS etc) me esperaba un problema añadido: las páginas que había añadido a esta organización en Silverlight. El problema es que mis páginas Silverlight se comunican con un servicio WCF que he colgado en la carpeta ISV del servidor.
Al acceder a este servicio salta el error:
This collection already contains an address with scheme http
Pues bien, para que ese servicio funcione con la nueva URL, tenemos que hacer este cambio en su web.config:
<serviceHostingEnvironment aspNetCompatibilityEnabled="false">
<baseAddressPrefixFilters>
<add prefix="http://deploy.crmdomain.local"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
Este truco lo encontré en este post de los foros de Microsoft por Dan Crowell.
Por otro lado, tuve que recompilar el servicio para añadirle un atributo ya que de otra manera, el módulo Silverlight pedía credenciales después de haber hecho login a CRM con éxito.
[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]
Esta solución viene del post Calling silverlight WCF service over IFD deployment of CRM de los foros de CRM, y hay que agradercérselo a Rajeshreddy Keesara de los foros de Silverlight.
¡Gracias!
20/07/11
Dos cosas buenas del importador de datos en CRM 2011
Y digo dos porque seguro que hay más, que aún no he acabado de explorarlo. En el pasado, para importar datos de otras plataformas teníamos la herramienta DMF o Data Migration Framework, que da miedo de sólo escribirlo. Era una de esas herramientas que no sabías muy bien dónde ubicar: los datos los debía conocer un usuario de negocio, pero requería conocimientos de nivel de administrador de base de datos SQL. El resultado no solía ser muy satisfactorio. Pues bien, la última versión de Dynamics CRM incluye una interfaz integrada en la herramienta para hacer importaciones … digamos que bastante complejas.
En esta foto podéis apreciar las dos funcionalidades que comento:
1) Se pueden importar ficheros zip con más de una entidad a la vez. Esto es imprescindible cuando tenemos referencias circulares. (El contacto pertenece a una cuenta que tiene como contacto principal al contacto, toma trabalenguas)
2) Se puede hacer rollback de la importación. Si algo va mal (me da la risa) se crea un proceso asíncrono de borrado de todos los elementos que se han importado.
Además, como los procesos de importación siempre tardan un poquillo, pues … te da tiempo a escribir un post rápido en tu blog :-)
En fin, que seguimos mejorando.
23/06/11
Nuevo kit de demostración para CRM Online
Acaba de publicarse un recurso que será de mucha utilidad para comerciales, ingenieros pre-venta y aficionados a CRM en general. Se trata del Microsoft Dynamics CRM Online Demonstration Kit y es un conjunto de personalizaciones, datos de prueba y un guión de demo para mostrar algunas de las funcionalidades destacadas de Dynamics CRM 2011.
Incluye un montón de recursos:
- 13 Dashboards
- 17 Workflows
- 2 Diálogos
- 1 Web Resource (jscript para formateo de números de teléfono)
- 1 Option Set
- 2 Plantillas de correo electrónico
Por cierto, que los dashboards dan pistas sobre cómo aprovechar la nueva entidad Objetivo (Goal) en su versión reporting.

Gracias al equipo de Dynamics CRM, de nuevo.
