Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hotfix - Campañas - Auditar los cambios al pulsar en el enlace de baja de una campaña de email #277

Open
wants to merge 11 commits into
base: develop
Choose a base branch
from

Conversation

ManuSinergiaCRM
Copy link
Collaborator

@ManuSinergiaCRM ManuSinergiaCRM commented Jun 19, 2024

Descripción

Se observa que si un usuario tiene varias direcciones de correo, al pulsar el enlace de baja de una campaña de tipo correo electrónico, el CRM configura como Rehusado todas las cuentas de correo relacionadas con la persona o interesado y no solo la cuenta desde la que pulsó en el enlace de baja.

Comentándolo en el área de desarrollo, este comportamiento es razonable ya que la persona o interesado ha indicado que no quiere recibir más correos de campañas de email, por lo que la solución al PR tiene en cuenta esto y creará un registro por cada una de las direcciones de email en la tabla _email_addresses_audit_

Actualización

Auditar todos los emails rehusados ya sea en el proceso de baja de una campaña de tipo Email como desde la UI, donde se ha detectado que solo se audita el cambio en el checkbox de Rehusado del email principal. Es decir, si rehusamos todos los correos de una persona, solo se auditará el email que esté configurado como principal.

Cómo reproducir el problema

Baja de una campaña de tipo email

  1. Crear una persona o un interesado con varios emails.
  2. Crear una campaña de email, añadir al registro anterior y enviar el email de marketing.
  3. Pulsar en el enlace de baja, acción que rehusa todos los emails relacionados con el registro, y comprobar que han sido auditados (tabla email_addresses_audit) los cambios en todos los correos del registro

Rehusar correos desde la vista de edición

  1. Crear una persona o un interesado con varios emails.
  2. Acceder a la vista de edición y rehusar e invalidar todos los emails
  3. Comprobar que han sido auditadas todas las modificaciones realizadas

@ManuSinergiaCRM ManuSinergiaCRM added bug Something isn't working Campañas not urgent labels Jun 19, 2024
@ManuSinergiaCRM ManuSinergiaCRM self-assigned this Jun 19, 2024
Copy link

github-actions bot commented Jun 19, 2024

Actions executed at: 2024-12-24 13:15:14.

@ManuSinergiaCRM ManuSinergiaCRM removed the request for review from AlbertoSTIC June 19, 2024 09:50
@AlbertoSTIC AlbertoSTIC requested review from enricsinergia and jordiSTIC and removed request for AlbertoSTIC July 9, 2024 08:17
Copy link
Collaborator

@enricsinergia enricsinergia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ver comentarios de código.

Por otra parte he comprobado que los registros quedan reflejados en la tabla de audit pero no he sabido ver desde el CRM como consultar esa tabla de auditoría

modules/Campaigns/RemoveMe.php Outdated Show resolved Hide resolved
modules/Campaigns/RemoveMe.php Outdated Show resolved Hide resolved
modules/Campaigns/RemoveMe.php Outdated Show resolved Hide resolved
@enricsinergia
Copy link
Collaborator

Se observa que al marcar el opt-out desde la interfaz de Persona, sólo se guarda en la tabla audit la primera de las direcciones sobre la que se aplica el cambio. Quizás habría que incluir también esta corrección para que tenga realmente sentido grabar en el log cuando viene del removeme.php

@jordiSTIC
Copy link
Collaborator

jordiSTIC commented Jul 23, 2024

Se verifica que al pulsar el enlace para darse de baja, se registra la baja de todos los correos de la persona o interesado, auditando los cambios para cada una de las direcciones

Se observa que desde la edición de los datos de una persona, al cambiar el valor de "Refusado" de un correo, únicamente se audita para la dirección principal de la persona:

  • Si una persona tiene más de un correo, si se cambia el check de "Refusado" de una dirección no principal, no se audita

Observación: Parece ser que las campañas únicamente envían correos a la dirección principal de un contacto, y únicamente si esta no está marcada como "Refusado" ni "No válida"

(id, parent_id, date_created, created_by, field_name, data_type, before_value_string, after_value_string, before_value_text, after_value_text) VALUES
('$newId', '$emailAddressId', UTC_TIMESTAMP(), '1', 'opt_out','bool','0','1',NULL,NULL)";
$result2 = $db->query($query);
if ($result2) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La condición de error está invertida: si falla $result2 devolverá false

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cambiado 👍

Copy link
Collaborator

@jordiSTIC jordiSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • La verificación de la segunda query está invertida. (ver comentario)
  • Se podría añadir también control de errores en la primera query
  • En el caso que $emailAddressesID esté vacío se generará query incorrecta (se da de baja persona a la que se le han eliminado los correos en el crm)

@ManuSinergiaCRM
Copy link
Collaborator Author

  • La verificación de la segunda query está invertida. (ver comentario)
  • Se podría añadir también control de errores en la primera query
  • En el caso que $emailAddressesID esté vacío se generará query incorrecta (se da de baja persona a la que se le han eliminado los correos en el crm)

Hecho

@ManuSinergiaCRM
Copy link
Collaborator Author

ManuSinergiaCRM commented Sep 23, 2024

Tras comentarlo con Alberto y por coherencia, se ha decidido auditar todos los emails rehusados ya sea en el proceso de baja de una campaña de tipo Email como desde la UI, donde se ha detectado que solo se audita el rehusado del email principal.

Copy link
Collaborator

@jordiSTIC jordiSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Realizadas las pruebas y verificado el código.
(A)Probado

Observación: no se audita el cambio de email principal

@ManuSinergiaCRM
Copy link
Collaborator Author

Realizadas las pruebas y verificado el código. (A)Probado

Observación: no se audita el cambio de email principal

En relación a la observación, el email principal de la persona se almacena en un campo llamado email1 que por defecto no tiene activada la propiedad de auditado, pero si se activa sí se audita el campo

Copy link
Collaborator

@enricsinergia enricsinergia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En la acción de rehusar desde la interficie del CRM se graba también un cambio en la propiedad del confirm_opt_in cuando no se realiza cambio. Este registro se graba tanto al rehusar como al desmarcar el flag de rehusado.
A pesar de no ser una incidencia producida por este PR, creo que valdría la pena solucionar este tema ya que estamos arreglando los audits del rehusar.

@ManuSinergiaCRM
Copy link
Collaborator Author

ManuSinergiaCRM commented Dec 26, 2024

He estado mirando cual es la operativa de confirm_opt_in y no acabo de saber si actualmente estamos usando este campo. Preguntando al GPT de SuiteCRM dice que


Paso 1: Configurar el campo "Email Opt-In"

En versiones recientes de SuiteCRM (7.10+), el campo principal utilizado para gestionar el consentimiento es email_opt_out en lugar de confirm_opt_in.
Este campo controla si un destinatario:
- Ha aceptado recibir correos electrónicos (Opt-In).
- Se ha dado de baja voluntariamente (Opt-Out).

En versiones anteriores, el campo confirm_opt_in complementaba este proceso, pero en versiones más nuevas puede estar deshabilitado o haber sido reemplazado por lógica más sencilla centrada en email_opt_out.


¿Alguno sabéis si se está usando el envío de email a una persona para que confirme la autorización?
Si no lo tenéis claro, a la vuelta de vacaciones hablo con AES o escribo a la comunidad de SuiteCRM para ver si alguien puede confirmar algo al respecto.

En caso de que no se esté usando, la solución sería anular la propiedas audited del campo confirm_opt_in en metadata/email_addressesMetaData.php

Si por el contrario, es una funcionalidad que está disponible para las entidades, la propuesta de solución sería añadir el siguiente código en la línea 3063 del fichero include/database/DBManager.php:

$after_value = isset($bean->$field) ? $bean->$field : $before_value;

Esta solución tiene sentido ya que si un campo no existe en el bean es razonable pensar que no ha sido modificado. Me preocupa que el cambio se realiza en DBManager.php aunque me da calma ver que la función modificada es llamada por otras (getAuditDataChanges() y auditBean()) cuyo ámbito es auditar y que solo son llamadas desde la funcionalidad de guardado o importación de un bean.

@enricsinergia
Copy link
Collaborator

Hola @ManuSinergiaCRM ,
no te sé decir ninguna entidad que lo tenga activo (sí que ha habido incidencias por tenerlo activo pero creo recordar que normalmente el error era tenerlo activo). Se podría mirar con el run_in_instances y recoger el valor del email_enable_confirm_opt_in, aunque quizás también nos podemos olvidar de ello. No esperaba que esto se complicase de esta forma y no siendo un error grave, quizás no vale la pena el riesgo de tocar la línea que comentas.

@ManuSinergiaCRM
Copy link
Collaborator Author

Buenas, tras comentar el escenario con Enric, vemos que el caso de uso encontrado y su solución excede a este PR y decidimos crear un issue donde tratar dicha problemática: #545 y así poder continuar con la aprobación de este PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Campañas not urgent
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Incidencia - Campañas - Cambio de valor no auditado al pulsar en el enlace de baja
3 participants