No puedo solucionar el error de Process Builder - Duplicate Management

Aug 19 2020

Existe este error increíblemente frustrante relacionado con un conflicto entre Process Builder y Duplicate Management.

Algunas personas han sugerido una solución alternativa para esto, pero no puedo hacer que funcione, el conflicto todavía me está ocurriendo.

Esta es la solución, gracias a Yi-Hs Tsai y Manu Devaraju:

For those looking for a work around to this very annoying problem, here's a solution that I've found works:

Create a checkbox field on the object called "Allow duplicates?" with default set to false.
In your Duplicate rule definition, include this new field under the "Conditions" section.
In your flow or process builder, BEFORE you update the record, first do an update where you set the "Allow duplicates?" field to true.  Then perform the update you want.
Since "Allow duplicates?" is checked and the update no longer meets the rule conditions, so shouldn't trigger the duplicate rule.
If you want the duplicate rule to run in the future for this record, you can do another record update to uncheck the "Allow duplicates?" field.

For instance, I have a duplicate rule on Contacts that has a whole bunch of matching criteria.  Following the steps I:

Create a field on the Contact object called "Allow Duplicates?" with default unchecked.
In my duplicate rule (Setup -> quickfind -> Duplicate Rules), I set a condition: "Contact: Allow Duplicates? EQUALS False"
In my flow, I have a step where I set Allow Duplicates? = true and update my record.
In my flow, then I perform the update on the email, phone, etc., that ordinarily would trigger the rule because of the my matching criteria.
In my flow, when I'm all done, I set the Allow Duplicates? back to false.

Alguien más (Daniel DeAguilar) tenía algo más sobre esto:

So what i did was created the allow duplicates checkbox Yi-Hs mentions on my Account object (default unchecked), and in process builder did the following steps:

Under 'Choose Object and Specify When to Start the Process' i had recursion enabled (this was key)
1st node in process was looking for whenever my parent account field was changed
Immediate action in 1st node was changing duplicate checkbox to 'checked/true'
instead of stop i had 'evaluate next criteria' and go to 2nd node'
2nd node looked for when duplicate checkbox = true/checked
immediate action #1 to set parent account lookup to parent account id field (enabling lookup related lists)
immediate action #2 to set duplicate checkbox = false/unchecked

En el registro de depuración puedo ver que el proceso se está ejecutando y luego se ejecuta la detección de duplicados y todo está bien, el nuevo campo personalizado tiene el valor adecuado y se evita la detección.

Pero después de eso, continúa el procesamiento y la detección de duplicados se ejecuta una vez más y esta vez el nuevo campo personalizado tiene su valor predeterminado, por lo que no evita la detección y obtiene el error DUPLICATES_DETECTED que el proceso no puede manejar.

Lo más desconcertante para mí es dónde/cómo se debe actualizar exactamente el campo 'Permitir duplicados'. El generador de procesos no tiene un comando/opción de actualización explícito.

Aquí hay una captura de pantalla de la configuración de mi generador de procesos:

Respuestas

2 KrisGoncalves Aug 19 2020 at 20:58

Mirando más abajo en los comentarios sobre esa idea para ver el comentario/solución alternativa original de Manu Devaraju, se explica esto mucho mejor. A continuación se muestran los pasos copiados/pegados.

  1. Cree un nuevo campo de lista de selección 'Anular duplicado' (Sí/No) en el objeto Contacto

  2. Cree una regla de coincidencia para la combinación de Nombre, Apellido y Número de teléfono

  3. Cree una regla duplicada con una regla de coincidencia creada en el paso anterior a. En la regla de duplicados, busque la sección a continuación y en los criterios agregue el campo 'Anular Duplicado' y el valor como 'No' b. La condición anterior significa que desea ejecutar la regla de duplicados solo si el valor del campo 'Anular duplicados' es 'No' Condiciones Opcionalmente, especifique las condiciones que debe cumplir un registro para que se ejecute la regla.

  4. En el generador/flujo de procesos, cuando intente crear un nuevo registro o actualizar un registro existente, configure este campo adicional 'Anular duplicado' como 'Sí'; eso significa que está tratando de pasar las reglas duplicadas explícitamente en los flujos para que que fluye NO arrojará ningún mensaje de error

  5. Use las reglas de flujo de trabajo y las actualizaciones de campo para anular el 'Anular indicador' a 'No' inmediatamente después de que el generador de procesos lo actualice a 'Sí' Nombre de regla de flujo de trabajo: WF Unset Anular condiciones de indicador duplicado: Anular duplicado = Sí Acción: Llamar flujo de trabajo Campo Actualizar flujo de trabajo Nombre de actualización de campo: WFU Desarmado Anular indicador duplicado Campo para actualizar: Anular valor de indicador duplicado: No

La clave parece ser que WF haga la actualización final para volver a establecer el indicador en False . Esto no se encuentra con el error (que es específico de PB).