Mapeado de Datos en Microsoft Dynamics CRM 3.0

He visto por ahí bastantes confusiones y problemas con el mapeado de datos entre entidades en Microsoft CRM 3.0. Así que me he decidido a aportar mi granito de arena para intentar aclarar dudas.


 


Concepto de Mapeado


 


Lo primero, es entender con claridad el concepto de Mapeado de Datos en CRM 3.0, ya que es muy fácil perderse o confundirse. Esta funcionalidad permite que cuando creemos un registro, desde el contexto de un registro relacionado con él, algunos de los campos del nuevo registro aparezcan ya cubiertos con valores extraídos del registro relacionado. Así, por ejemplo, si creamos un nuevo contacto desde una cuenta podemos ver como los campos de la dirección aparecen ya cubiertos con los datos de dirección de la cuenta.


 


Sin embargo, debe quedarnos muy claro, que esto solo es una ayuda para facilitar la creación de nuevos registros por parte de los usuarios, y nada más. De hecho no estamos obligados a aceptar los valores mapeados, en el mismo momento de la creación del registro podemos cambiarlos si no son adecuados. Además hay que tener en mente que no se establece ningún tipo de relación, ni de sincronización entre los campos mapeados. Una vez creado el registro, si los campos origen del mapeado son modificados, estos cambios no son propagados al registro. Por ejemplo, si modificamos la dirección de una cuenta, las direcciones de los contactos asociados no son modificadas.


 


Tiene que quedar muy claro, que el mapeado simplemente permite establecer unos valores por defecto dinámicamente en función del contexto en el que creamos el registro. Y que si no creamos el objeto desde un contexto con un mapeado definido, no se va a aplicar ningún mapeado. Por ejemplo, si creamos un contacto directamente, si ser desde una ficha de una cuenta, los campos de dirección no tendrán ningún valor mapeado por que no tenemos ningún contexto padre.


 


Definir Mapeados en CRM 3.0


 


En Microsoft CRM 3.0 los mapeados están asociados a las relaciones entre entidades.  De hecho en la versión 3.0 la “única” (ya veremos por que entre comillas) forma de llegar a la herramienta de edición de mapeados es a través de las relaciones entre entidades. Así, para poder crear un mapeado entre campos entre dos entidades debemos dirigirnos a personalización de entidades, acceder a una de las dos entidades implicadas en la relación, ver las relaciones de esa entidad, elegir la relación sobre la que queremos crear/modificar un mapeado y dentro de ella seleccionar asignaciones. Una vez ahí podremos ver la lista de mapeados (asignaciones) existentes.


 


 


 


Si queremos crear uno nuevo, no tenemos más que pulsar el en Nuevo. Se nos abrirá una nueva ventana en la que aparecen los campos disponibles de ambas entidades, y en la que tendremos que seleccionar cual será el campo origen y cual el destino.


 



 


Como veis la edición de mapeados depende totalmente de las relaciones, y en principio no hay forma de definir mapeados sin ser desde ahí.


 


Pero… Faltan mapeados, por ejemplo ¿Dónde están los mapeados entre campos de los productos de oferta y los productos de pedido? ¿Qué pasa si queremos modificar esos mapeados? Como veis, a la herramienta de mapeados a través de las relaciones le falta algo. Pero no os preocupéis que ese algo está ahí, solo que los chicos del CRM lo han ocultado un poco en esta versión. En la próxima entrega os contaré como hacer otros mapeados.


 


Actualización: Podéis ver la información de los mapeados “ocultos” entre, por ejemplo, productos de oferta y productos de pedido; En este artículo de la Knowledge Base 914921 


 


Saludos,


Marco Amoedo Martínez

7 comentarios en “Mapeado de Datos en Microsoft Dynamics CRM 3.0”

  1. Hola!!
    Primero…gracias por tener un sitio asi y en castellano :).
    Me gustaria preguntarte si es posible también hacer el mapeado con entidades personalizadas (nuevas), porque he intentado que salgan datos de cuenta al crear una cuenta nueva pero no me sale…

    Gracias y un saludo,

    Sergio G.

  2. Hola de nuevo,
    no se si te gusta que te hagan consultas por aquí o algo así que si es así, cuando vea los comentarios borrados lo entendere :P.
    Bueno, en relación al anterior comentario, he conseguido que salgan los datos automáticos de la cuenta si creo un nuevo elemento de la nueva entidad desde dentro de cuenta (la madre). También he relacionado esta nueva entidad con contrato,así si hago esta entidad desde dentro de un contrato salen los datos del contrato automáticamente también. La cuestión es que he probado a hacer un elemento de esta nueva entidad desde dentro de un contrato que pertenece a una cuenta…y solo salen los datos del contrato. ¿Sabes si hay alguna forma de que salgan todos los datos de cuenta y contrato a la vez?

    Gracias de nuevo

  3. Hola!

    Antes de nada gracias por tus comentarios, y perdón por tardar en responder, que es que a veces tardo en darme cuenta de los nuevos comentarios 🙂

    En principio la respuesta es no, no hay manera de que se mapeen automáticamente datos desde dos entidades a la vez.

    Y ahora vienen los peros… Existe la posibilidad de utilizar los servicios web en conjunción con JavaScript para suplir el problema del mapeado. O alguna otra posibilidad un poquitin más compleja con callouts…

    De todas formas me crea curiosidad saber los motivos para necesitar hacer un mapeado desde dos entidades distintas ¿Podrías explicarme tu caso con más detalles? ¿Que datos quieres mapear de cuenta y contacto? a lo mejor conseguimos resolverlo.

    Un saludo

  4. Hola!!
    Gracias por responder :).
    Mira, es que soy algo novato con el CRM y estamos intentando implementarlo en la empresa, pero estamos haciendo pruebas y eso. Yo queria hacer una entidad “factura” pero hecha por mi, sin tocar la otra, y querria que cuando cree un contrato (perdón porque arriba me equivoque y pensastes que era contacto) dentro de una cuenta, cogiera automaticamente los datos del contrato (precio total…) y los de la cuenta. El otro dia conseguí que si hago una factura desde una cuenta coge los datos de la cuenta, pero si hago una factura dentro de un contrato de esa cuenta, coge unicamente los datos del contrato (imagino que como entidad madre solo coge la superior directamente, no las de mas arriba). Lo de JS, creo que podria, pero no se tampoco com se llaman los formularios o donde tengo que llamar a los campos :P.
    Eso era, si me puedes ayudar (así ya también sabría para editar otras entidades) te lo agradeceria :). Bueno, supongo que podría preguntarte muchas más cosas sobre CRM pero con esto ya te lo agradezco.

    Un Saludo y muchas gracias!!!

  5. Hola!
    El mapeado no constituye ninguna relación en si, no es más que un mecanismo de copia de datos en el momento de la creación de la entidad. El origen de los datos a copiar es el contexto en el que te ecnuentres, cuenta o contrato, pero nunca ambos a la vez.
    Y como no es una relación, en el momento que cambies datos de la cuenta o del contrato , los datos de la factura no cambiarán automaticamente.

    Me imagino que tu idea es más o menos facturar un contrato, y lo que quieres es que en el momento de crear la factura desde el contrato esta aparezca precargada con lo datos de cuenta y contrato. De contrato puedes mapear todo lo que quieras, incluido el campo Lookup de la cuenta asociada. Con lo que podrías tener un campo Lookup en la factura y hacer un mapeado con la cuenta del contrato. De esta forma la factura estara asociada a la cuenta. ¿Te serviría con esto?
    Si necesitas otros datos de la cuenta en la factura, a parte del propio enlace a la cuenta, se me ocurren cosas más complejas, como precarga con JS y WS, o añadirlos con un callout al guardar la factura.
    En cualquier caso, asegúrate de que son necesarios porque estas introduciendo redundancias que pueden llevar a incoherencias de datos.

    Espero haberte aclarado algo, no dudes en preguntar

    Un Saludo

  6. Muy buenas!!!
    Es justo lo que dices, quiero que salgan rellenados los campos de ambas entidades. Sobre lo que dices aquí:
    “Con lo que podrías tener un campo Lookup en la factura y hacer un mapeado con la cuenta del contrato.”
    ¿quieres decir que si hago una relación con un campo que sea el nombre de la cuenta también hará ese mapeado?…perdona :P. Bueno, y si me pudieras explicar si hay forma de hacer directamente, con un script o algo, que un campo de una entidad se modifique según lo que haya en un campo de otra, eso ya seria… ^^.

    Gracias!!!

  7. Hola

    Me refería a que si creas en el contrato tienes un lookup a la cuenta asociada. Al crear la factura desde el contrato puedes tener un mapeado que además de copiar datos del contrato copie también ese campo de lookup del contrato que apunta a la cuenta asociada, con lo que en la factura tendrías un campo lookup apuntando a la cuenta. Esto es un mapeado “normal” por lo que no necesitas nada más.

    Si aun así te hiciese falta rellenar más campos automáticamente, podrías pensar en utilizar otros mecanismos como callouts en pre-create y pre-update que rellenasen los campos necesarios recuperando la información a través de los servicios web. O mediante JavaScript y AJAX, aunque aquí la cosa igual es más compleja.

    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *