En muchas ocasiones al realizar un código personalizado de CRM, para una acción personalizada de flujo de trabajo, plug-in, etc…nos encontramos con la necesidad de controlar los posibles duplicados a la hora de hacer una creación o actualización de registros.

Para ello bien podemos realizar las comprobaciones que necesitemos mediante el desarrollo de códgio, o por otro lado podemos utilizar los mecanismos que nos ofrece la propia API, lo que nos puede evitar largos tiempos de desarrollo.

Con la propiedad “SuppressDuplicateDetection” podemos indicar si se quiere habilitar o no la detección de duplicados.

Veamos un ejemplo. Si queremos crear un nuevo Contacto pero necesitamos comprobar si ya existe haremos lo siguiente:

Entity nuevaPersona = new Entity(“contact”);
….
CreateRequest crearElemento = new CreateRequest();
crearElemento.Target = nuevaPersona;
crearElemento.Parameters.Add(“SuppressDuplicateDetection”, false); //Habilitamos la detección de duplicados

CreateResponse crearElementoResponse = (CreateResponse)service.Execute(crearElemento);

De este modo se habilitan las reglas de detección de duplicados que se hayan definido en CRM, lo que hace muy sencilla la gestión de los duplicados, pudiendo cambiar estas desde la aplicación sin necesidad de tocar el código fuente.

Si a la hora de ejecutar la CreateRequest encuentra un duplicado en base a las reglas definidas el nuevo elemento no se creará en CRM.