19/9/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.

crmrulo

Si hay alguien ahí fuera, por favor, que deje comentarios, críticas, alabanzas… en el sitio de codeplex.

5/9/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í:

  1. 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.
  2. Guardar el excel obtenido con formato XML Spreadsheet 2003 Por ejemplo notes.xmlattachments_-1
  3. Añadir el campo PhysicalFileName con el mismo contenido que la columna File name.attachments_00
  4. Crear una carpeta Attachments y copiar en ella los ficheros adjuntos que queramos importar.
  5. 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.
    attachments_01
  6. Desde el importador, mapear el campo PhysicalFileName a Document
  7. Mapear también el campo Regarding al nombre (o campo principal) de la entidad padre.attachments_02
  8. 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.

  1. Repartir los ficheros en varias carpetas para que cada zip resultante sea de aproximadamente 5 MB.
  2. Copiar el fichero notes.xml en cada una de las carpetas.
  3. Crear n ficheros attachments1.zip, attachments2.zip etc
  4. 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.