Categories
Developers Salesforce

La mayor actualización de bases de datos de Salesforce: migración a HBase 2

Escrito por Viraj Jasani y Andrew Purtell

Los datos son el motor de las operaciones de Salesforce, ayudando a nuestros clientes a tomar mejores decisiones a diario. El equipo de almacenamiento de Big Data (BDS), una parte clave de la organización de ingeniería de Salesforce, despliega posiblemente una de las mayores huellas de producción de bases de datos distribuidas. Esta infraestructura se basa en la combinación de HBase y Phoenix de código abierto, diseñadas para permitir el acceso aleatorio de lectura y escritura a petabytes de datos a gran escala, alto rendimiento, baja latencia y en tiempo real. Se trata de una capacidad inalcanzable para las bases de datos relacionales tradicionales

En 2014, BDS describió sus motivaciones en detalle, encapsulando cómo HBase y Phoenix resolvieron muchos problemas técnicos durante el viaje de más de 10 años del equipo. Una parte importante de este viaje implicó el desarrollo de una estrategia para actualizar la infraestructura. A la escala de Salesforce, donde los clientes exigen un funcionamiento ininterrumpido y sin interrupciones las 24 horas del día, los 7 días de la semana, surgieron desafíos significativos.

Siga leyendo para explorar cómo BDS impulsó la actualización de HBase 1 a HBase 2 con un impacto mínimo para los clientes de Salesforce.

¿Por qué actualizar a HBase 2?

Durante muchos años, la ejecución de HBase 1 y Phoenix 4 presentaba problemas mínimos. Sin embargo, una importante actualización a HBase 2 y Phoenix 5 fue perseguido por varias razones, tales como:

  • Disponibilidad. HBase, una base de datos distribuida fuertemente consistente (CP de teorema CAP), carecía de alta disponibilidad durante las transiciones de regiones de tablas (véase nuestro post existente sobre los detalles de las transiciones de regiones). HBase 2 rediseñó significativamentelos flujos de trabajo de asignación de regiones eliminando su dependencia de Zookeeper. Esto aumentó la disponibilidad general del almacén de datos e impulsó la estabilidad de la infraestructura al tiempo que mantuvo la confianza de los clientes.
  • Necesidad de velocidad. HBase 2 mejoró el rendimiento de las solicitudes de escritura con un diseño que escribe en varias réplicas de los archivos Write-Ahead-Log (WAL) de forma asíncrona, algo clave para las aplicaciones que utilizan una base de datos y que ofrece un alto rendimiento
  • Baja latencia. Siendo una base de datos sensible a la latencia, BDS encontró problemas de largas pausas GC a veces. HBase 2 y Phoenix 5 proporcionan soporte de compilación y tiempo de ejecución para Java 11. Utilizar Java junto con Shenandoah GC en producción ayudó a reducir la latencia.
  • Menos hilos ociosos. Durante la producción, BDS informó regularmente de un mayor número de hilos ociosos que estaban destinados a iniciar Remote-Procedure Calls (o RPC). HBase 2 soporta un marcoNetty asíncrono, impulsado por eventos, basado en socket no bloqueante para reducir el consumo de recursos y mejorar el rendimiento durante las llamadas RPC.
  • Correcciones rápidas de seguridad. Mantenerse cerca de las últimas versiones importantes de código abierto impulsa la resolución rápida y eficaz de las vulnerabilidades de seguridad de terceros. El estado de fin de vida de la línea de lanzamiento de HBase 1 justificó aún más el paso a HBase 2.
  • Correcciones rápidas de seguridad

¿A qué retos se enfrentó el BDS?

Independientemente de la actualización, maximizar la disponibilidad para los clientes es un enfoque clave. Mantener una disponibilidad del 99,999% es fundamental, por lo que cualquier error o cambio de comportamiento es una prioridad a resolver. Consecuentemente, cualquier actualización mayor, menor, o parche de HBase/Phoenix significaba que BDS tenía que mantener la disponibilidad tanto durante como después de la finalización de la actualización continua.

Salesforce ha participado en un proyecto de varios años para migrar de sus propios centros de datos privados a la infraestructura de nube pública (más detalles aquí), y la flexibilidad de la infraestructura de nube pública puede mejorar en gran medida la capacidad del equipo de BDS para realizar una migración sin problemas mediante el aprovechamiento de recursos adicionales para construir una réplica exacta del clúster dado, seguido de una conmutación del tráfico de clientes del clúster en ejecución de la versión antigua al nuevo clúster.

Sin embargo, a partir de este momento, un número significativo de clústeres todavía se están ejecutando en centros de datos de primera parte. Por lo tanto, la actualización de HBase 1 a HBase 2, junto con Phoenix 4 a Phoenix 5, viene con un desafío crítico: tenía que llevarse a cabo sin ningún tiempo de inactividad, independientemente de la infraestructura subyacente.

Cambios de clúster

Como ejemplo de escala, los clústeres de producción con aproximadamente 300 nodos tardan más de 5 horas en completar la actualización continua de todos los componentes. La significativa re-arquitectura con HBase 2 hace imposible realizar la actualización sin tiempo de inactividad. BDS ha trabajado con la comunidad de código abierto para encontrar soluciones a este problema, ya que se trata de un reto único para organizaciones a la escala de Salesforce

¿Cómo se preparó BDS?

Cualquier objetivo complejo conlleva importantes compromisos. BDS evaluó metódicamente las funcionalidades básicas de HBase/Phoenix, determinando si las actividades de fondo no críticas podían desactivarse temporalmente durante la actualización. Este proceso duró dos años y se caracterizó por una dedicación inquebrantable a la entrega de un despliegue de producción sin problemas, lo que implicó varios pasos clave

La estabilización de las compilaciones fue una prioridad inicial, que garantizó la estabilidad de HBase y los proyectos posteriores de Phoenix. Para ello, se verificó en profundidad la compilación del código y se probó con éxito toda la compilación de CI

El desafío más difícil surgió cuando BDS necesitó evaluar varias compensaciones y desarrollar una estrategia para ejecutar una actualización continua sin problemas, eliminando el tiempo de inactividad. Esto requirió mucho tiempo, el desarrollo de una secuencia exacta de pasos que lograron los objetivos, manteniendo el servicio, mientras que también trabaja en torno a los problemas de compatibilidad en los estados intermedios.

A medida que el equipo se encontraba con problemas relacionados con las diferencias en los esquemas de las tablas del sistema entre las dos versiones, reconocía la posible imposibilidad de llevar a cabo la tarea. Sin embargo, BDS lo resolvió con éxito mediante la implementación de un procedimiento que podía actualizar los esquemas sin alterar la compatibilidad entre los clientes antiguos y los servidores nuevos.

El equipo de BDS se dio cuenta de que la tarea era imposible

Además, al encontrarse con otros obstáculos, BDS contribuyó con sus correcciones a la base de código de fuente abierta.

Además, como utilizaban HBase y Phoenix, el equipo se aseguró de que los clientes que utilizaban conexiones JDBC para consultar datos pudieran seguir realizando operaciones CRUD con un mínimo de reintentos durante la actualización.

Cuidado con los datos

Por último, para gestionar la actualización sin tiempo de inactividad, fue bastante crucial para BDS hacer hincapié en la construcción de un procedimiento que facilitara la transición de las asignaciones de regiones de tabla «basadas en Zookeeper» a «sin Zookeeper», un requisito previo crítico para su actualización.

Actualización sin tiempo de inactividad

El equipo también realizó rigurosas pruebas de rendimiento durante todo el ciclo de vida del proyecto. Ser uno de los miembros activos de la comunidad de código abierto también les ayudó a conseguir una mejor tracción en las correcciones de errores críticos que contribuyeron.

Un vistazo a HBase 2 pre-requisito + actualización pasos de procedimiento. (detalles aquí)

Más información

Categories
Discover Magazine Enterprise Software Inteligencia Artificial Salesforce

PyRCA: Facilitar el análisis de causa raíz en AIOps

TL;DR: PyRCA es una librería de aprendizaje automático de código abierto diseñada específicamente para realizar análisis de causa raíz (RCA) en operaciones de TI. Ofrece un marco completo que permite a los usuarios identificar fácilmente las dependencias causales métricas complicadas y localizar automáticamente las causas raíz de los incidentes. La biblioteca proporciona una interfaz unificada para múltiples modelos RCA de uso común, incluyendo tareas de construcción de gráficos y puntuación. PyRCA pretende servir como una solución RCA de ventanilla única para el personal de operaciones de TI, científicos de datos e investigadores, permitiéndoles desarrollar, evaluar y desplegar modelos RCA en aplicaciones del mundo real de forma rápida y eficiente.

Background and Motivation: La necesidad de PyRCA

Con cada vez más aplicaciones de Internet desplegadas en la nube, garantizar la calidad de los sistemas en la nube y la experiencia del usuario se ha vuelto cada vez más crucial. Las incidencias en estos sistemas pueden provocar una mala experiencia de usuario e importantes pérdidas económicas. Para hacer frente a este problema, un enfoque eficaz es crear un sistema de monitorización que recoja y rastree los Indicadores Clave de Rendimiento (KPI) de las aplicaciones en ejecución. Cualquier anomalía en estas métricas KPI puede tratarse como un incidente. Cuando se produce un incidente, los ingenieros suelen recopilar todas las métricas relacionadas e investigar sus comportamientos para identificar la causa raíz o pistas para un diagnóstico posterior.

Figura 1. Ejemplo de un sistema de comercio electrónico. Ejemplo de sistema de comercio electrónico, que incluye servicio web, servicio de pago, servicio de entrega, servicio de compra y servicio de base de datos. La figura de la izquierda ilustra las dependencias entre cada servicio, mientras que la figura de la derecha muestra el gráfico causal del tiempo de respuesta de cada servicio, obtenido invirtiendo el gráfico de dependencias.

Por ejemplo, en un sistema de comercio electrónico como el ilustrado en la figura 1, si el tiempo de respuesta del servicio web aumenta significativamente, los ingenieros investigarían el tiempo de respuesta de los servicios anteriores en el gráfico causal. Si el tiempo de respuesta de un servicio de base de datos es alto, puede sugerir que el tiempo de respuesta prolongado del servicio web está causado por el servicio de base de datos, y el incidente puede mitigarse reiniciando el servidor de base de datos. Sin embargo, los sistemas modernos en la nube a menudo comprenden un gran número de componentes conectados a través de dependencias complejas, que se ejecutan en un entorno distribuido. Con miles o más métricas KPI que explorar para cada incidente, comprobar manualmente todas las métricas potencialmente relevantes puede llevar mucho tiempo, requerir mucho trabajo y ser propenso a errores para los ingenieros. Por lo tanto, una caja de herramientas RCA automatizada es altamente deseable.

PyRCA: One-Stop Python RCA Library Makes IT Operations Easy

Hemos desarrollado una solución holística PyRCA, una biblioteca Python para el análisis de causa raíz, para satisfacer las necesidades de los casos de uso tanto industriales como académicos. PyRCA es la primera librería RCA de código abierto que proporciona un marco de trabajo integral que incluye carga de datos, descubrimiento de grafos causales, localización de causas raíz y visualización de resultados RCA. PyRCA soporta múltiples modelos de construcción de grafos causales y de puntuación de causas raíz. Además, viene con un panel de control GUI para llevar a cabo RCA de forma interactiva, lo que se ajusta mejor a la experiencia del usuario en escenarios del mundo real. Las principales características de PyRCA son:

  • PyRCA ofrece un marco estandarizado y altamente adaptable para la carga de datos métricos con el formato comúnmente utilizado ‘pandas.DataFrame’ y la evaluación comparativa de un conjunto diverso de modelos RCA.
  • PyRCA proporciona una colección de modelos variados para descubrir gráficos causales e identificar las causas raíz, todos accesibles a través de una interfaz unificada. Además, los usuarios avanzados tienen la opción de configurar completamente cada modelo para satisfacer sus necesidades específicas.
  • Los modelos RCA proporcionados en la biblioteca pueden mejorarse incorporando conocimientos de dominio proporcionados por el usuario, lo que los hace más robustos al tratar con datos métricos ruidosos.
  • Los desarrolladores pueden extender PyRCA fácilmente implementando una única clase heredada de la clase base RCA para añadir nuevos modelos RCA.
  • PyRCA también ofrece una herramienta de visualización que permite a los usuarios incorporar fácilmente el conocimiento del dominio, examinar los resultados RCA y comparar diferentes modelos, todo ello sin necesidad de codificación.

Continuaremos mejorando PyRCA en el futuro para hacerlo más completo y fácil de usar en aplicaciones del mundo real.

Depper Dive

Example

Figura 2. El marco del ACR. La figura de la izquierda muestra un sistema de producción que contiene un gran número de servicios con interdependencias complejas. El sistema de monitorización de la nube recopila detalles de cada solicitud de servicio y su estado de forma continua. La figura de la derecha muestra la canalización de RCA.

En la Figura 2, mostramos un ejemplo de cómo funciona RCA cuando se integra con un sistema de producción. Un sistema de producción típico consta de varios servicios con interdependencias complejas. Para garantizar la fiabilidad de todo el sistema, se integra un sistema de monitorización para recopilar periódicamente diversas medidas que controlan la salud de cada servicio. Cuando las medidas anómalas son detectadas por el módulo de detección de anomalías, suelen indicar el fallo del servicio correspondiente, lo que puede afectar gravemente a la experiencia del usuario. A continuación, el módulo de detección de anomalías activa automáticamente la tarea de localización de la causa raíz para el módulo RCA.

El módulo RCA aprovecha múltiples métricas del sistema de producción y el conocimiento experto para construir un gráfico causal. Al considerar las métricas de anomalía y sus dependencias en el gráfico, el módulo RCA puede calcular las puntuaciones de la causa raíz y presentar los resultados a los ingenieros de fiabilidad del sitio para ayudarles en las acciones de remediación posteriores. En resumen, el objetivo de RCA es localizar las métricas top-K que tienen más probabilidades de ser la causa raíz de las métricas de anomalía, dadas las métricas de anomalía.

Principios de diseño

Figura 3. Arquitectura principal de PyRCA. La arquitectura principal de PyRCA.  

Los principios de diseño de PyRCA aseguran que la librería sea flexible, extensible y fácil de usar. Proporciona un marco unificado para RCA, permitiendo a los usuarios aplicar múltiples modelos y visualizar los resultados. Esto permite una fácil personalización mediante archivos de configuración, y la biblioteca puede ampliarse fácilmente con nuevos métodos de construcción y puntuación. El panel interactivo también facilita la incorporación de conocimiento experto y la demostración de resultados, haciendo que PyRCA sea fácil de usar para una amplia gama de usuarios.

Figura 4. Ejemplo de archivo YAML para la configuración. Ejemplo de archivo YAML para conocimiento experto configurable.

La API de la biblioteca PyRCA consta de tres componentes principales. En primer lugar, la capa de entrada carga los datos métricos en el formato ‘pandas.DataFrame’ y analiza el conocimiento experto del archivo de configuración en formato YAML. En la figura 4 se muestra un ejemplo. La capa de modelos implementa una amplia gama de modelos para la detección de anomalías, la construcción de gráficos causales y métodos de puntuación de causas raíz. Por último, la capa de salida soporta la visualización de gráficos causales y la evaluación de los resultados del análisis de causa raíz. También incluye una herramienta de simulación de datos para el análisis empírico. Juntos, estos tres componentes proporcionan a los usuarios un marco de trabajo de ACR completo y flexible que es fácil de usar y personalizar.

Modelos de ACR

Figura 5. La taxonomía de los modelos de ACR. La taxonomía de los modelos de ACR.

Un tipo común de modelo de ACR implica dos pasos. El primer paso es construir gráficos causales basados en métricas observadas y conocimiento del dominio, mientras que el segundo paso es extraer subgráficos anómalos o caminos basados en anomalías observadas. Normalmente, estos grafos causales pueden reconstruirse a partir de la topología de una aplicación específica, que se obtiene del análisis de registros y de trazas. Sin embargo, cuando los grafos de servicios o llamadas no están disponibles o sólo lo están parcialmente, la construcción del grafo topológico del sistema de producción puede suponer un reto. En tales casos, los modelos de descubrimiento causal pueden ser útiles para construir el gráfico causal que describe las relaciones causales entre las métricas observadas de una manera basada en datos. Este enfoque es particularmente útil cuando se investigan las relaciones entre las métricas monitorizadas en lugar de las llamadas a la API.

Aunque los modelos RCA de dos fases, que implican la construcción de un grafo causal seguido de la extracción de subgrafos o rutas anómalas, ofrecen una gran capacidad de explicación, el tiempo de ejecución de los algoritmos de construcción de grafos causales puede ser un factor limitante. En el peor de los casos, el tiempo de ejecución puede ser exponencial en el número de variables (nodos), lo que puede dificultar su aplicación en escenarios reales. Por otro lado, los modelos de ACR de una fase manejan directamente datos normales y anormales para obtener las causas raíz y tienen la capacidad de manejar eficientemente miles o incluso millones de métricas. Mostramos la comparación de estos dos tipos de modelos en la Figura 5.

Casos-de-uso

Figura 6. El panel interactivo de PyRCA. El panel de control interactivo de PyRCA (pestaña Análisis de datos)

Figure 7. El panel de control interactivo de PyRCA (pestaña Análisis de datos)

PyRCA ofrece una aplicación de panel de control fácil de usar que se puede iniciar ejecutando ‘python -m pyrca.tools’. La app consta de varias pestañas, incluyendo «Análisis de datos». En esta pestaña, los usuarios pueden cargar fácilmente sus datos métricos en formato CSV y visualizar todas las métricas, junto con estadísticas básicas como medias y varianzas. Los usuarios también pueden ajustar los hiperparámetros para los detectores de anomalías basados en estadísticas y umbrales. PyRCA incluye un detector básico de anomalías basado en estadísticas, pyrca.outliers.stats, que puede utilizarse para detectar picos anómalos en los datos. Sin embargo, si este detector no es adecuado para el caso de uso específico de un usuario, éste puede explorar otros detectores de anomalías ofrecidos por Merlion. Es importante tener en cuenta que los datos de las series temporales deben estar en formato CSV, donde la primera columna es la marca de tiempo y las otras columnas representan las métricas.

La pestaña «Causal Graph Discovery», mostrada en la Figura 7, permite a los usuarios construir gráficos causales estimados a partir de datos métricos. En primer lugar, los usuarios cargan los datos métricos y el archivo opcional de conocimiento del dominio en formato YAML. A continuación, seleccionan los datos métricos para construir el gráfico que describe las relaciones de dependencia entre las distintas métricas. Los usuarios pueden establecer los hiperparámetros del algoritmo de construcción del gráfico causal y la ruta del archivo de conocimiento del dominio, y hacer clic en el botón «Ejecutar» para generar la versión inicial del gráfico causal. A continuación, pueden comprobar manualmente si faltan enlaces o si hay enlaces incorrectos en el gráfico generado. Si el gráfico tiene errores, los usuarios pueden añadir restricciones adicionales como nodos raíz/hoja y enlaces obligatorios/prohibidos en la tarjeta «Editar conocimiento del dominio». Una vez añadidas las nuevas restricciones, pueden perfeccionar el gráfico causal pulsando de nuevo el botón «Ejecutar». Si el gráfico causal es satisfactorio, los usuarios pueden descargarlo y guardarlo para futuros despliegues del modelo RCA.

En aplicaciones del mundo real, los métodos de descubrimiento causal pueden enfrentarse a retos a la hora de producir gráficos causales precisos debido a problemas con los datos en aplicaciones del mundo real. Esta aplicación proporciona una interfaz fácil de usar que permite la edición interactiva y la revisión de los gráficos causales.

The Bottom Line

  • PyRCA está diseñado para abordar los puntos débiles asociados con los flujos de trabajo actuales de la industria para las operaciones de TI.
  • Proporciona interfaces unificadas y fácilmente extensibles e implementaciones para una amplia gama de modelos RCA.
  • Nos dedicamos a mejorar continuamente PyRCA y planeamos añadir compatibilidad con datos de registro y datos de seguimiento, así como incluir más modelos RCA en el benchmark.
  • Aceptamos y fomentamos las contribuciones de la comunidad de código abierto.

Explore más

Salesforce AI le invita a profundizar en los conceptos tratados en esta entrada de blog (consulte los enlaces siguientes). Conéctese con nosotros en las redes sociales y en nuestro sitio web para obtener actualizaciones periódicas sobre éste y otros proyectos de investigación.

Acerca de los autores

Chenghao Liu es un científico aplicado senior en Salesforce AI Asia, que trabaja en la investigación de AIOps, incluyendo la previsión de series temporales, la detección de anomalías y el aprendizaje automático causal.

Wenzhuo Yang es investigador principal aplicado en Salesforce AI Asia y trabaja en la investigación de AIOps y aprendizaje automático aplicado, incluyendo aprendizaje automático causal, IA explicable y sistemas de recomendación.

Doyen Sahoo es director senior de Salesforce AI Asia. Doyen dirige varios proyectos relacionados con la IA para operaciones de TI o AIOps, trabajando tanto en investigación fundamental como aplicada.

Steven HOI es el director general de Salesforce Research Asia y supervisa las actividades de investigación y desarrollo de IA de Salesforce en APAC. Sus intereses de investigación incluyen el aprendizaje automático y una amplia gama de aplicaciones de IA.

Categories
Developers

Enviar, registrar, repetir: registro de alertas de correo electrónico como actividades

Última actualización en 24 de octubre de 2023 por Rakesh Gupta

Gran idea o pregunta permanente:

  • ¿Cómo se registran los correos electrónicos enviados con la acción enviar correo electrónico
  • ?

Objetivos:

Después de leer este blog, serás capaz de:

  • Utilizar el flujo desencadenado por registros para enviar una alerta por correo electrónico.
  • Utilizar la acción de flujo «Enviar correo electrónico»
  • Utilizar plantilla de correo electrónico con la acción «Enviar correo electrónico» sin crear una alerta por correo electrónico.
  • Registrar los correos electrónicos enviados con la acción «Enviar correo electrónico»
  • Y mucho más.

👉 Anteriormente, he escrito varios posts sobre cómo enviar alerta de correo electrónico utilizando Salesforce Flow. ¿Por qué no echarles un vistazo mientras estás en ello?

  1. Notificación por correo electrónico de caducidad de contraseña
  2. ¿Desea enviar un correo electrónico HTML desde Salesforce Flow? ¡¡¡Oh, sí!!! ¡Se puede hacer!
  3. Envíe un correo electrónico de bienvenida con archivos adjuntos a los nuevos usuarios mediante Salesforce Flow
  4. Custom Email (Correo electrónico personalizado)
  5. Notificación de correo electrónico personalizada para tareas completadas
  6. Notificación por correo electrónico sobre la asignación de temas

Benjamin Moore, un administrador de Salesforce en Gurukul On Cloud (GoC), tiene asignada una tarea específica. Una vez que un caso se cierra con éxito, él debe:

  1. Enviar una alerta por correo electrónico al cliente solicitando su opinión.
  2. Lograr los comentarios de los clientes
  3. Registrar el correo electrónico enviado en los registros de casos y contactos para futuras referencias.

Enfoque del campeón de automatización (I-do):

Con la última versión de Salesforce, ahora es posible registrar automáticamente correos electrónicos en la línea de tiempo de actividad de un registro cuando se utiliza la acción Enviar correo electrónico. Esta mejora ofrece a los usuarios la flexibilidad de:

  1. Registrar correos electrónicos en los registros de destinatarios: esto abarca clientes potenciales, contactos y cuentas de persona.<img decoding="async" data-attachment-id="60425" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/log-emails-to-lead-and-contact-records/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-emails-to-Lead-and-contact-records.png?fit=2104%2C1360&ssl=1" data-orig-size="2104,1360" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Registrar correos electrónicos en registros de clientes potenciales y contactos" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-emails-to-Lead-and-contact-records.png?fit=300%2C194&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-emails-to-Lead-and-contact-records.png?fit=640%2C414&ssl=1" class="aligncenter wp-image-60425 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades.png" alt width="640" height="414" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-14.png 2104w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-15.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-16.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-17.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-18.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-19.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-20.png 2048w, https://i0.wp.com/automationchampion.com/wp-content/uplo
  2. Registrar correos electrónicos en registros de no destinatarios, como cuentas, casos u oportunidades.<img decoding="async" data-attachment-id="60423" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/log-email-to-non-recipient-records-salesforce/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?fit=2096%2C772&ssl=1" data-orig-size="2096,772" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Registrar correo electrónico en los registros de no destinatarios de Salesforce" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?fit=300%2C110&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?fit=640%2C236&ssl=1" class="aligncenter wp-image-60423 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-1.png" alt width="640" height="236" srcset="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?w=2096&ssl=1 2096w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=300%2C110&ssl=1 300w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=1024%2C377&ssl=1 1024w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=150%2C55&ssl=1 150w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=768%2C283&ssl=1 768w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=1536%2C566&ssl=1 1536w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-non-recipient-records-Salesforce.png?resize=2048%2C754&ssl=1 2048w, https://
  3. Cómodo registro de mensajes de correo electrónico en registros de destinatarios y no destinatarios simultáneamente.
  4. Cómodo registro de mensajes de correo electrónico en registros de destinatarios y no destinatarios simultáneamente

Antes de esta versión, los correos electrónicos enviados mediante la acción Enviar correo electrónico no se podían rastrear automáticamente en Líneas de tiempo de actividad. A partir de la versión Spring’24, no es posible registrar los mensajes de correo electrónico enviados a los usuarios; de lo contrario, obtendrá un error.

saveAsActivity debe ser false al enviar correos a usuarios. WhatId no está disponible para enviar correos a UserIds.

Antes de continuar, debería familiarizarse con el objeto EmailTemplate de Salesforce. Representa una plantilla para un correo electrónico, correo electrónico masivo, correo electrónico de lista o correo electrónico de compromiso de ventas. Sólo se admite en los paquetes gestionados de primera generación.

EmailTemplate

Nombre de campo Detalles
Nombre Nombre de la plantilla. La etiqueta es Nombre de la plantilla de correo electrónico.
Tipo de entidad relacionada Cuando UIType is 2 (Lightning Experience) or 3 (Lightning ExperienceSample), RelatedEntityType indica con qué entidades se puede utilizar esta plantilla.los valores válidos son el nombre de la API de la entidad: «Account» para cuenta, «Contact» para contacto, «Opportunity» para oportunidad, «Lead» para cliente potencial, etc. El valor puede ser cualquier entidad a la que el usuario tenga acceso de lectura (incluidas entidades personalizadas), pero no entidades virtuales, entidades de configuración ni entidades de plataforma.
Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardarConsulte este artículo< para entender por qué utilizamos el flujo desencadenado por registro después de guardar para este escenario.
Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar
Flujo desencadenado por registro después de guardar

Antes de discutir la solución, permítanme mostrarles un diagrama del proceso a alto nivel. Por favor, dedique unos minutos a revisar el siguiente Diagrama de flujo para entenderlo.

Comencemos a construir este proceso de automatización.

Práctica guiada (We-do):

Hay 6 pasos para resolver el requerimiento de negocio de Benjamín utilizando Record-Triggered After-Save Flow. Debemos:

  1. Crear una plantilla de correo electrónico
  2. Definir las propiedades del flujo para el flujo desencadenado por registros
  3. Añadir un elemento de decisión para determinar si el caso se ha cerrado
  4. Añadir un elemento get records para encontrar la plantilla de correo electrónico
  5. Añadir un elemento de decisión para comprobar si se ha encontrado o no la plantilla de correo electrónico
  6. Añadir acción enviar correo electrónico  – para enviar y registrar el correo electrónico

Paso 1: Crear una plantilla de correo electrónico 

  1. Desde el App Launcher, busca y selecciona Plantillas de correo electrónico.
  2. Haz clic en el botón Nuevo Plantilla de correo electrónico.
  3. Introduzca un Nombre, Tipo de entidad relacionada, Carpeta, Asunto y Cuerpo para su plantilla de correo electrónico.
  4. Guarde su plantilla cuando haya terminado.<img loading="lazy" decoding="async" data-attachment-id="60434" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/create-an-email-template-in-lightning-experience/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-an-Email-Template-in-Lightning-Experience-.png?fit=1628%2C2050&ssl=1" data-orig-size="1628,2050" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Crear una plantilla de correo electrónico en Lightning Experience" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-an-Email-Template-in-Lightning-Experience-.png?fit=238%2C300&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-an-Email-Template-in-Lightning-Experience-.png?fit=640%2C806&ssl=1" class="aligncenter wp-image-60434 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-3.png" alt width="640" height="806" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-24.png 1628w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-25.png 238w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-26.png 813w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-27.png 119w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-28.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-29.png 1220w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-an-Email-Template-in-Lightning-Experie

Paso 2: Definir las propiedades de flujo

  1. Haga clic en Configuración.
  2. En el cuadro Búsqueda rápida, escriba Flujos.
  3. Posiciones
  4. Seleccione Flujos, y, a continuación, haga clic en Nuevo flujo.
  5. Seleccione la opción Flujo desencadenado por registro, haga clic en Crear
    1. Objeto: Caso
    2. Desencadenar el flujo cuando: Se crea o actualiza un registro
    3. Establecer condiciones de entrada: Ninguna
    4. Optimizar el flujo para: Acción y registros relacionados 
  6. Haga clic en la X de la parte superior para guardar los cambios.<img loading="lazy" decoding="async" data-attachment-id="60436" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/create-a-basic-flow/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?fit=1860%2C1592&ssl=1" data-orig-size="1860,1592" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Crear un flujo básico" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?fit=300%2C257&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?fit=640%2C548&ssl=1" class="aligncenter wp-image-60436 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-4.png" alt width="640" height="548" srcset="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?w=1860&ssl=1 1860w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=300%2C257&ssl=1 300w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=1024%2C876&ssl=1 1024w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=150%2C128&ssl=1 150w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=768%2C657&ssl=1 768w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=1536%2C1315&ssl=1 1536w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Create-a-Basic-Flow.png?resize=1200%2C1027&ssl=1 1200w, https://i0.wp.com/automationch

Paso 3: Uso del elemento de decisión para comprobar si el caso se ha cerrado

Ahora usaremos el elemento Decision para comprobar si el caso se cerró o no. 

  1. En el Diseñador de Flujos, haga clic en el +icono y seleccione el elemento Decisión.
  2. Introduzca un nombre en el campo Etiqueta; el Nombre de API se rellenará automáticamente.
  3. Nombre de API
  4. Debajo de Detalles del resultado, introduzca la Etiqueta; el Nombre de la API se rellenará automáticamente.
  5. Requisitos de las Condiciones para Ejecutar el Resultado: Se cumplen todas las condiciones (AND)
    1. Fila 1:
      1. Recurso{!$Record.IsClosed}
      2. Operador: Equals
      3. Valor: {!$ConstanteGlobal.True}
  6. Cuándo Ejecutar Resultado: Sólo si el registro que desencadenó la ejecución del flujo se actualiza para cumplir los requisitos de la condición
  7. Haga clic en Hecho para guardar los cambios.<img loading="lazy" decoding="async" data-attachment-id="60449" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/run-flow-when-field-changes/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Run-flow-when-field-changes.png?fit=2096%2C1438&ssl=1" data-orig-size="2096,1438" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Ejecutar flujo al cambiar de campo" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Run-flow-when-field-changes.png?fit=300%2C206&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Run-flow-when-field-changes.png?fit=640%2C439&ssl=1" class="aligncenter wp-image-60449 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-5.png" alt width="640" height="439" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-30.png 2096w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-31.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-32.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-33.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-34.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-35.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-36.png 2048w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-37.png

Paso 4: Añadir un elemento Get Record para encontrar la plantilla de correo electrónico

El siguiente paso es utilizar el elemento Get Records para encontrar la plantilla de correo electrónico creada en el paso #1.

  1. En el Diseñador de flujo, debajo del nodo Decisión , haga clic en el +icono y seleccione el elemento Obtener registros.
  2. Introduzca un nombre en el campo Etiqueta; se rellenará automáticamente el nombre de la API
  3. Seleccione el EmailTemplate objeto de la lista desplegable.
  4. Seleccione Se cumplen todas las condiciones (Y)
  5. Configurar condiciones de filtro
    1. Fila 1:
      1. Campo: Nombre
      2. Operador: Iguales
      3. Valor: Solicitud de retroalimentación de cierre de caso
  6. Cuántos registros almacenar:
    1. seleccionar Sólo el primer registro
  7. <li

  8. Cómo almacenar los datos del registro:
    1. Elija la opción de Almacenar automáticamente todos los campos.
  9. Haga clic en la X de la parte superior para guardar los cambios.<img loading="lazy" decoding="async" data-attachment-id="60446" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/how-to-use-get-element-flow/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?fit=1564%2C1796&ssl=1" data-orig-size="1564,1796" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Cómo utilizar Get Element Flow" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?fit=261%2C300&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?fit=640%2C735&ssl=1" class="aligncenter size-full wp-image-60446" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-6.png" alt width="640" height="735" srcset="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?w=1564&ssl=1 1564w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?resize=261%2C300&ssl=1 261w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?resize=892%2C1024&ssl=1 892w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?resize=131%2C150&ssl=1 131w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?resize=768%2C882&ssl=1 768w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?resize=1338%2C1536&ssl=1 1338w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/How-to-use-Get-Element-Flow.png?res

Paso 5: Uso del elemento de decisión para comprobar si la plantilla de correo electrónico se encontró o no

Ahora, utilizaremos el elemento Decisionpara comprobar si el elemento Get Records anterior devuelve el registro de oportunidades abiertas. 

  1. Introduzca un nombre en el campo Etiqueta; el Nombre de la API se rellenará automáticamente.
  2. En Detalles del resultado, introduzca la Etiqueta; el Nombre de la API se rellenará automáticamente.
  3. Requisitos de condición para ejecutar el resultadoSe cumplen todas las condiciones (AND)
    1. Fila 1:
      1. Recurso: {!Get_Email_Template}
      2. Operador: Is Null 
      3. Valor: {!$ConstanteGlobal.False}
  4. Cuándo Ejecutar Resultado: Si se cumplen los requisitos de la condición.
  5. Click Hecho.<img loading="lazy" decoding="async" data-attachment-id="60451" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/was-the-email-template-found/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Was-the-Email-Template-Found.png?fit=2100%2C1420&ssl=1" data-orig-size="2100,1420" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="¿Se encontró la plantilla de correo electrónico?" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Was-the-Email-Template-Found.png?fit=300%2C203&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Was-the-Email-Template-Found.png?fit=640%2C433&ssl=1" class="aligncenter wp-image-60451 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-7.png" alt width="640" height="433" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-38.png 2100w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-39.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-40.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-41.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-42.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-43.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-44.png 2048w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-45.png

Paso 6: Añadir acción – Enviar y registrar alerta por correo electrónico

Ahora utilizaremos la acción Enviar correo electrónico estática para enviar una alerta por correo electrónico y registrar el correo electrónico. 

  1. Debajo del nodo Encontrado, haga clic en el icono + y seleccione el elemento Acción
  2. Busca y selecciona el elemento Enviar correo electrónico< en el menú desplegable
  3. Etiqueta la nueva acción Solicitud de devolución de correo electrónico al cliente
  4. Configurar valores de entrada
    1. ID de plantilla de correo electrónico: {!Get_Email_Template.Id}
    2. Registrar correo electrónico al enviar: {!$GlobalConstant.True}
      1. Nota:- Indica si se registra el correo electrónico en las líneas de tiempo de actividad de los registros especificados. Los valores válidos son true y false. El valor predeterminado es false, y el correo electrónico no se registra. Para registrar un correo electrónico, debe especificar un valor en ID de destinatario o ID de registro relacionado. Si Log Email on Send se establece en true, cambia la API a la que llama la acción, lo que puede afectar a su límite diario de envío de correos electrónicos. 
  5. <li

  6. ID de destinatario: {!$Record.ContactId}
    1. Nota:- El ID de una cuenta de cliente potencial, contacto o persona a la que enviar el correo electrónico. Si se incluye Registrar correo electrónico al enviar, entonces ID de destinatario es el ID del registro donde se registra el correo electrónico. Si se incluye ID de plantilla de correo electrónico, entonces se requiere ID de destinatario.
  7. ID de registro relacionado: {!$Record.Id}
    1. Nota:- El ID de un registro no receptor. Por ejemplo, el ID de un registro de caso. Si se incluye Registrar correo electrónico al enviar, entonces ID de registro relacionado es el ID de un registro secundario en el que registrar el correo electrónico. En este caso, el correo electrónico no se puede registrar si el ID de destinatario es un registro de cliente potencial. Si se incluye Id. de plantilla de correo electrónico, entonces Id. de registro relacionado es el Id. del registro de no destinatario utilizado para rellenar los campos merge de plantilla de correo electrónico.
  • Haga clic en la X de la parte superior para guardar los cambios.<img loading="lazy" decoding="async" data-attachment-id="60455" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/send-amd-log-email-salesforce-flow/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Send-amd-Log-Email-Salesforce-Flow.png?fit=1632%2C2278&ssl=1" data-orig-size="1632,2278" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Enviar amd Log Email Salesforce Flow" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Send-amd-Log-Email-Salesforce-Flow.png?fit=215%2C300&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Send-amd-Log-Email-Salesforce-Flow.png?fit=640%2C893&ssl=1" class="aligncenter wp-image-60455 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-8.png" alt width="640" height="893" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-46.png 1632w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-47.png 215w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-48.png 734w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-49.png 107w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-50.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-51.png 1100w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-52.png

    Al final, el Flowde Benjamin se parecerá a la siguiente captura de pantalla:Una vez que todo se vea bien, realice los siguientes pasos: 

    <img loading="lazy" decoding="async" data-attachment-id="60456" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/log-emails-sent-with-the-send-email-action/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?fit=1322%2C1396&ssl=1" data-orig-size="1322,1396" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Registro de correos electrónicos enviados con la acción Enviar correo electrónico" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?fit=284%2C300&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?fit=640%2C676&ssl=1" class="aligncenter wp-image-60456 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-9.png" alt width="640" height="676" srcset="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?w=1322&ssl=1 1322w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?resize=284%2C300&ssl=1 284w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?resize=970%2C1024&ssl=1 970w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?resize=142%2C150&ssl=1 142w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?resize=768%2C811&ssl=1 768w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-Emails-Sent-with-the-Send-Email-Action-.png?r

    1. Haga clic en Guardar.
    2. Introduzca Flow Label the API Name will auto-populate.
    3. Haga clic en Mostrar avanzadas.
    4. Versión de la API para ejecutar el flujo: 59
    5. Etiqueta de entrevista: Registrar los correos electrónicos enviados con la acción Enviar correo electrónico {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar.

    <img loading="lazy" decoding="async" data-attachment-id="60458" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/salesforce-flow-185-2/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Salesforce-FLow-185.png?fit=1634%2C760&ssl=1" data-orig-size="1634,760" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Salesforce FLow 185" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Salesforce-FLow-185.png?fit=300%2C140&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Salesforce-FLow-185.png?fit=640%2C298&ssl=1" class="aligncenter wp-image-60458 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-10.png" alt width="640" height="298" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-53.png 1634w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-54.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-55.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-56.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-57.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-58.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-59.png 1200w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Salesforce-FLow-

    ¡Ya casi está! Una vez que todo se ve bien, haga clic en el Activar botón. 

    Prueba de concepto

    A partir de ahora, si un agente de soporte cierra un caso, se activará el flujo after-save activado por registro que hemos creado. Hará lo siguiente:
    1. Envía un email de alerta al cliente
    2. Registra el correo electrónico en el caso, y
    3. También registra el email en el contacto<img loading="lazy" decoding="async" data-attachment-id="60466" data-permalink="https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/log-email-to-lead-or-contact-salesforce/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-lead-or-contact-salesforce.png?fit=1076%2C702&ssl=1" data-orig-size="1076,702" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Registrar correo electrónico a cliente potencial o ponerse en contacto con salesforce" data-image-description data-image-caption data-medium-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-lead-or-contact-salesforce.png?fit=300%2C196&ssl=1" data-large-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/Log-email-to-lead-or-contact-salesforce.png?fit=640%2C418&ssl=1" class="aligncenter wp-image-60466 size-full" src="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-13.png" alt width="640" height="418" srcset="https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-67.png 1076w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-68.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-69.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/enviar-registrar-repetir-registro-de-alertas-de-correo-electronico-como-actividades-70.png 150w, https://i0.wp.com/automationchampion.com/wp-co

    Evaluación formativa:

    ¡Quiero saber de ti!


    ¿Qué es lo que has aprendido de este post? Cómo te imaginas aplicar estos nuevos conocimientos en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/10/24/send-log-repeat-logging-email-alerts-as-activities-2/

  • Categories
    Developers

    Salesforce Velocity con Sweep: Un nuevo estado de ánimo operativo

    Última actualización en 25 octubre, 2023 por Rakesh Gupta

    Salesforce es la plataforma CRM líder en el mundo por una razón: está en constante evolución e innovación, impulsando un crecimiento masivo en el ecosistema.

    Salesforce es la plataforma CRM líder en el mundo por una razón: está en constante evolución e innovación, impulsando un crecimiento masivo en el ecosistema

    El ecosistema de servicios y productos de Salesforce ha crecido significativamente en los últimos años. En 2021, IDC publicó un estudio según el cual la economía de Salesforce crearía 9,3 millones de nuevos puestos de trabajo y 1,6 billones de dólares en nuevos ingresos empresariales en todo el mundo para 2026. El estudio también descubrió que Salesforce está impulsando un inmenso crecimiento para su ecosistema de socios, que ganarán 6,19 dólares por cada dólar que gane Salesforce en 2026.

    La economía de Salesforce ha crecido significativamente en los últimos años

    Y sin embargo, las empresas de todas las etapas luchan por hacer que su Salesforce evolucione a la velocidad de su negocio. Las empresas en fase inicial tardan meses en crear, configurar y lanzar la versión 1 de su instancia de Salesforce. Las empresas más maduras sufren por no comprender lo que se ha construido en su entorno a lo largo del tiempo. Esto hace que se requiera demasiado tiempo para el mantenimiento rutinario.

    Velocidad

    La velocidad se detiene porque cambios aparentemente sencillos corren el riesgo de romper lo que funciona actualmente. El resultado de todo esto es que las iniciativas estratégicas se bloquean, los equipos de Salesforce se convierten en reactivos en lugar de catalizadores del negocio, y se pierde la velocidad y agilidad vitales en el enfoque general de salida al mercado.

    La velocidad se detiene porque cambios aparentemente sencillos corren el riesgo de romper lo que funciona actualmente

    ¿Qué es la velocidad de Salesforce?

    Imagine un mundo en el que todo en su Salesforce funciona correctamente, desde el uso diario del equipo hasta la toma de decisiones y la planificación de estrategias por parte de la dirección. Donde los administradores no son sólo ejecutores técnicos, sino verdaderos socios comerciales. En el que los usuarios no tengan que idear soluciones para evitar procesos que no se comportan como se espera.

    Eso es lo que quiere decir Salesforce

    Eso es la velocidad de Salesforce.

    Sweep simplifica la forma en que su equipo entiende, crea e itera en Salesforce, eliminando las tareas administrativas y liberándoles para trabajar en las principales prioridades del negocio.

    Empezando por la visibilidad

    Como todo nuevo producto, comienza con un efecto visual sorpresa. Una vez que conecte Sweep a su org de Salesforce, Sweep crea una visibilidad inmediata de sus procesos de ingresos con documentación en tiempo real y mapeo de dependencia de todo lo que está sucediendo en su Salesforce, esto alineará a todo el equipo en la comprensión de los cambios que deben hacerse.

    <p

    <img decoding=»async» data-attachment-id=»60490″ data-permalink=»https://automationchampion.com/2023/10/25/salesforce-velocity-with-sweep-a-new-operational-state-of-mind-2/dashboard2-44bf962b882744cef2fe/» data-orig-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/dashboard2.44bf962b882744cef2fe.png?fit=3380%2C2037&ssl=1″ data-orig-size=»3380,2037″ data-comments-opened=»1″ data-image-meta=»{«aperture»:»0″,»credit»:»»,»camera»:»»,»caption»:»»,»created_timestamp»:»0″,»copyright»:»»,»focal_length»:»0″,»iso»:»0″,»shutter_speed»:»0″,»title»:»»,»orientation»:»0″}» data-image-title=»dashboard2.44bf962b882744cef2fe» data-image-description data-image-caption data-medium-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/dashboard2.44bf962b882744cef2fe.png?fit=300%2C181&ssl=1″ data-large-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/dashboard2.44bf962b882744cef2fe.png?fit=640%2C386&ssl=1″ class=»aligncenter wp-image-60490 size-full» src=»https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo.png» alt width=»640″ height=»386″ srcset=»https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-4.png 3380w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-5.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-6.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-7.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-8.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-9.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-10.png 2048w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-11.png 1200w, https://

    Sweep aprovecha las modernas capacidades de IA para analizar su arquitectura de Salesforce y ayudarle a comprender rápidamente por qué se creó cada objeto, con qué está relacionado y cómo le afectará un cambio. Si un campo está siendo actualizado por una automatización y no sabe por qué, simplemente haga clic en el campo en Sweep, busque todas las automatizaciones que tocan este campo y pregunte al chatbot de IA cómo se actualiza este campo y cuáles serían las consecuencias si lo cambiara. (¿Captura de pantalla del chatbot?) Atrás quedaron los días de abrir cada flujo y hacer clic a través de cada nodo para averiguar qué flujo actualiza este campo.

    Colaboración

    Ahora que puedes ver, es hora de pensar – juntos – en un lenguaje visual. El lienzo de Sweep permite a los equipos comunicarse en torno a nuevos procesos, sugerir cambios y dejar comentarios en un espacio de trabajo mutuo. No más diagramas de flujo y documentos que deben traducirse en alcances técnicos-una realidad compartida para cada usuario de negocio.

    Cree y despliegue fácilmente- directamente en Salesforce

    Todos hemos estado allí, pensando que un cambio menor en un proceso es también un cambio técnico menor-y luego nos damos cuenta de que no es el caso.

    <p

    <img loading=»lazy» decoding=»async» data-attachment-id=»60488″ data-permalink=»https://automationchampion.com/2023/10/25/salesforce-velocity-with-sweep-a-new-operational-state-of-mind-2/nyl-funnel/» data-orig-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/NYL-funnel.png?fit=1960%2C1155&ssl=1″ data-orig-size=»1960,1155″ data-comments-opened=»1″ data-image-meta=»{«aperture»:»0″,»credit»:»»,»camera»:»»,»caption»:»»,»created_timestamp»:»0″,»copyright»:»»,»focal_length»:»0″,»iso»:»0″,»shutter_speed»:»0″,»title»:»»,»orientation»:»0″}» data-image-title=»Embudo NYL» data-image-description data-image-caption data-medium-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/NYL-funnel.png?fit=300%2C177&ssl=1″ data-large-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/NYL-funnel.png?fit=640%2C377&ssl=1″ class=»aligncenter wp-image-60488 size-full» src=»https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-2.png» alt width=»640″ height=»377″ srcset=»https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-12.png 1960w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-13.png 300w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-14.png 1024w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-15.png 150w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-16.png 768w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-17.png 1536w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-18.png 1200w, https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-19.png

    Lo que diferencia a Sweep de otros productos es que implementa los cambios en Salesforce de forma nativa, sin código. Todo lo que acaba de crear vive, y puede editarse, en Salesforce. Se ahorran horas de desarrollo y pruebas sin sacrificar el control.

    Sweep

    Aprovechamiento de las capacidades de Salesforce para un sólido motor GTM

    Otra discusión antigua pero común al comprar nuevas herramientas para su pila de tecnología de ingresos es: ¿No podemos construirlo en Salesforce? Bueno, la respuesta es siempre: Sí, pero es difícil/largo

    <img loading=»lazy» decoding=»async» data-attachment-id=»60486″ data-permalink=»https://automationchampion.com/2023/10/25/salesforce-velocity-with-sweep-a-new-operational-state-of-mind-2/aibot/» data-orig-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?fit=2174%2C1226&ssl=1″ data-orig-size=»2174,1226″ data-comments-opened=»1″ data-image-meta=»{«aperture»:»0″,»credit»:»»,»camera»:»»,»caption»:»»,»created_timestamp»:»0″,»copyright»:»»,»focal_length»:»0″,»iso»:»0″,»shutter_speed»:»0″,»title»:»»,»orientation»:»0″}» data-image-title=»aibot» data-image-description data-image-caption data-medium-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?fit=300%2C169&ssl=1″ data-large-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?fit=640%2C361&ssl=1″ class=»aligncenter wp-image-60486 size-full» src=»https://discover.egafutura.com/wp-content/uploads/2023/11/salesforce-velocity-con-sweep-un-nuevo-estado-de-animo-operativo-3.png» alt width=»640″ height=»361″ srcset=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?w=2174&ssl=1 2174w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=300%2C169&ssl=1 300w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=1024%2C577&ssl=1 1024w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=150%2C85&ssl=1 150w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=768%2C433&ssl=1 768w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=1536%2C866&ssl=1 1536w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=2048%2C1155&ssl=1 2048w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=1200%2C677&ssl=1 1200w, https://i0.wp.com/automationchampion.com/wp-content/uploads/2023/10/aibot.png?resize=1170%2C660&ssl=1 1170w, https://i0.wp.com/automationchampio

    Para cada persona

    Sea usted administrador, ejecutivo de ingresos o socio de Salesforce, Sweep le facilitará la vida en Salesforce. Sweep permite a los equipos «hablar el idioma de Salesforce» sin barreras. Reduce el tiempo de descubrimiento, proporciona claridad y visibilidad a los equipos, y acelera el tiempo de implementación.

    Los usuarios deberían considerar Sweep como un miembro más de su equipo, que potencia todos sus recursos existentes.

    Los usuarios deberían considerar Sweep como un miembro más de su equipo, que potencia todos sus recursos existentes

    Resumen

    Sweep aporta una visión nueva e innovadora al saturado mercado de herramientas y softwares GTM. Permite a los equipos de ingresos mejorar sus procesos GTM reduciendo la carga de mantenimiento y desarrollo de Salesforce.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/10/25/salesforce-velocity-with-sweep-a-new-operational-state-of-mind-2/

    Categories
    Developers

    Asigne automáticamente nuevos clientes potenciales a una cadencia de compromiso de ventas

    Última actualización en 29 octubre, 2023 por Rakesh Gupta

    Gran Idea o Pregunta Perdurable:

    • ¿Cómo se asignan automáticamente los clientes potenciales recién creados a una cadencia de compromiso de ventas?

    Objetivos:

    Después de leer este blog, serás capaz de:

    • Trabajar con el objeto ActionCadence para conocer una Cadencia.
    • Asignar una Cadencia de compromiso de ventas a un cliente potencial o contacto.
    • Y mucho más.

    👉 Anteriormente, he escrito varios posts sobre la Cadencia de Compromiso de Ventas. ¿Por qué no les echas un vistazo mientras estás en ello?

    1. ¿Has recorrido ya el camino de baldosas amarillas de la cadencia de ventas?
    2. No te pierdas nada: Notificaciones para la eliminación de prospectos en Sales Engagement Cadence

    Benjamin Moore es administrador de Salesforce en Gurukul On Cloud (GoC). El director de ventas le ha asignado la tarea de asignar automáticamente la cadencia «Seguimiento de prospectos interesados» a cualquier lead de nueva creación con «Web» como LeadSource.

    Seguimiento de prospectos interesados

    Enfoque del campeón de la automatización (I-do):

    Ahorre a sus representantes de ventas un paso adicional. Añadir automáticamente registros de clientes potenciales, contactos o cuentas de persona a una cadencia cuando se crean los registros utilizando el flujo después de guardar activado por registro. Aunque esto se puede resolver utilizando varias herramientas de automatización como Apex Trigger y otras, utilizaremos Salesforce Flow para resolverlo.

    Antes de hablar de la solución, permítame mostrarle un diagrama del proceso a alto nivel. Por favor, dedique unos minutos a revisar el siguiente diagrama de Flujo para entenderlo. Empecemos a construir este proceso de automatización.

    Práctica guiada (We-do):

    Hay 2 pasos para resolver el requerimiento de negocio de Benjamín utilizando FlujoDespués de Guardar. Debemos:
      1. Crear y activar una cadencia de compromiso de ventas
      2. Flujo de Salesforce
        1. Defina las propiedades de flujo para el flujo activado por registros.
        2. Defina las propiedades de flujo para el flujo activado por registros
        3. Crear una fórmula para determinar si el registro se ha creado o actualizado.
        4. Crear una fórmula para determinar si el registro se ha creado o actualizado
        5. Añadir un elemento Decisión para comprobar el LeadSource.
        6. Añadir un elemento Decision para determinar si se ha encontrado o no la Cadencia.
        7. Añadir un elemento Decision para determinar si se ha encontrado o no la Cadencia
        8. Agregar acción principal Asignar objetivo a cadencia  – para asignar cadencia al lead.

    <li

    Cosas a tener en cuenta

    Asumiendo que el lector ya ha dado Permisos de compromiso de ventas al asignatario objetivo (es decir, el propietario del lead en este escenario), este artículo será breve. Si el propietario del lead (nuestro asignado de destino) no tiene estos permisos, el usuario que crea el lead se encontrará con un error:

    El asignado de destino no tiene ningún permiso de Sales Engagement.

    Para evitar esto:

    1. Asegúrese de que todas las personas que gestionan cadencias tienen permisos de Compromiso de ventas.
    2. Antes de asignar una cadencia, verifica si el propietario del lead (nuestro asignatario objetivo) tiene los permisos necesarios. Si no es así, concédalos antes de proceder.

    Artículos útiles

    1. ¿Perfiles? ¡Tan Ayer! – Asignar automáticamente un grupo de conjuntos de permisos a un usuario
    2. Asignar automáticamente conjuntos de permisos a un nuevo usuario

    Paso 1: Crear y activar una cadencia de compromiso de ventas

    1. En la aplicación Compromiso de ventas, seleccione Cadencias en el menú Navegación.
    • Desde el menú Acciones, seleccione Nuevo.
    • Introduzca un nombre único y una descripción para la cadencia. Haga clic en Guardar.

    Paso 2.1: Definir las propiedades de flujo

    1. Haga clic en Configuración.
    2. En el cuadro de búsqueda rápida, escriba Flujos.
    3. En el cuadro de búsqueda rápida, escriba Flujos
    4. Seleccione Flujos y, a continuación, haga clic en Nuevo flujo.
    5. Seleccione la opción Flujo desencadenado por registro y haga clic en Crear y configure el flujo como se indica a continuación:
      1. Objeto: Lead
      2. Desencadenar el flujo cuando: Se crea o actualiza un registro
      3. Establecer criterios de entrada: Ninguno
      4. Optimizar el flujo para acción y registros relacionados
    6. <li
    7. Haga clic en el X en la parte superior para guardar los cambios.

    Paso 2.2: Crear una fórmula para determinar si el registro se ha creado o actualizado

    1. Dentro de Caja de herramientas, seleccione Administrador, y haga clic en Nuevo recurso para determinar si el registro es nuevo o antiguo.
    2. Introduzca la siguiente información:
      1. Recurso Tipo: Fórmula
      2. Nombre de la API: forB_IsNew
      3. Tipo de datos: Boolean
      4. Fórmula: IsNew()
    3. Haga clic en Hecho.

    Paso 2.3: Utilizar el elemento de decisión para comprobar el LeadSource

    Ahora utilizaremos el elemento Decision element para determinar si el LeadSource es Web o no.

    1. En el Diseñador de flujo, haga clic en el +icono y seleccione el elemento Decisión.
    2. Introduzca un nombre en el campo Etiqueta; el Nombre de API se rellenará automáticamente.
    3. Nombre de API
    4. Dentro de Detalles del resultado, introduzca la Etiqueta; el Nombre de la API se rellenará automáticamente.
    5. Requisitos de las Condiciones para Ejecutar el Resultado: Se cumplen todas las condiciones (AND)
      1. Fila 1:
        1. Recurso: {!$Record.LeadSource}
        2. Operador:Igual
        3. Valor: Web
      2. Añadir Condición
      3. Fila 2
        1. Recurso: {!forB_IsNew}
        2. Operador: Equals
        3. Valor: {!$ConstanteGlobal.True}
    6. Cuándo Ejecutar Resultado: Si se cumplen los requisitos de la condición.
    7. Click Hecho.

    Paso 2.4: Añadir un elemento Get Record para buscar la cadencia en función de su nombre

    El siguiente paso es encontrar el ID de Cadencia que creamos en el Paso #1. Haga un seguimiento de los prospectos interesados utilizando el elemento Obtener registro.

    1. En el Diseñador de flujos, debajo del nodo Creado, haga clic en el +icono y seleccione el elemento Obtener registros.
    2. Introduzca el elemento Obtener registros
    3. Introduzca un nombre en el campo Etiqueta el Nombre de la API se autocompletará.
    4. Seleccione Se cumplen todas las condiciones (Y).
    5. Configurar condiciones de filtro
      1. Fila 1:
        1. Campo: Nombre
        2. Operador: Igual
        3. Valor: Seguimiento de prospectos interesados
    6. Cuántos registros almacenar:
      1. seleccionar Sólo el primer registro
    7. <li
    8. Cómo almacenar los datos del registro:
      1. Elija la opción de Almacenar automáticamente todos los campos.
    • Haga clic en el botón X< de la parte superior para guardar los cambios.
    • Paso 2.5: Utilizar el elemento de decisión para comprobar si se ha encontrado o no el gas de cadencia

      Ahora, utilizaremos el elemento Decision para comprobar el elemento Get del paso 2.4 para determinar si devuelve la cadencia.

      1. En el Diseñador de flujos, haga clic en el +icono y seleccione el elemento Decisión.
      2. Introduzca un nombre en el campo Etiqueta; el Nombre de API se rellenará automáticamente.
      3. Introduzca un nombre en el campo Etiqueta
      4. En Detalles del resultado, introduzca la Etiqueta; el Nombre de la API se rellenará automáticamente.
      5. Requisitos de condición para ejecutar el resultado: Se cumplen todas las condiciones (AND)
        1. Fila 1:
          1. Recurso: {!Get_Cadence}
          2. Operador: Is Null 
          3. Valor: {!$ConstanteGlobal.False}
        2. Click Hecho.

      Paso 2.6: Añadir Asignar objetivo a la acción principal de cadencia  – para asignar cadencia al Lead.

      1. En el Diseñador de Flujo, debajo del nodo, haga clic en el +icono y seleccione el elemento Acción.
      2. Para asignar un objetivo a un líder, haga clic en el elemento Acción
      3. Seleccione la acción Asignar objetivo a Cadence core.
      4. Introduzca un nombre en el campo Etiqueta: el campo Nombre de API se rellenará automáticamente.
      5. Introduzca un nombre en el campo Etiqueta
      6. Configurar valores de entrada:
        1. Nombre o Id de cadencia: {!Get_Cadence.Id}
        2. Id. de destino: {!$Registro.Id}
        3. Id de usuario: {!$Record.OwnerId}
      7. Click Hecho.

      Al final, Benjamin’s Flow< tendrá el aspecto de la siguiente captura de pantalla:Una vez que todo se vea bien, realice los siguientes pasos:

      1. Haga clic en Guardar.
      2. Introduzca Flujo Etiqueta elNombre de la API se rellenará automáticamente.
      3. Haga clic en Guardar
      4. Haga clic en Mostrar avanzadas.
      5. Versión de la API para ejecutar el flujo59
      6. Etiqueta de entrevista: Llevar a cabo después de – Guardar flujo {!$Flow.CurrentDateTime}
      7. Clic Guardar.

      ¡Ya casi está! Una vez que todo se vea bien, haga clic en el botón Activar .

      Prueba de concepto

      A partir de ahora, cuando se cree un lead con el leadSource como Web, automáticamente se disparará un Flujo disparado por Registro y se le asignará la cadencia. Vamos a probarlo

      1. Ahora crea un nuevo lead a través de la UI
      2. Navegue hasta el componente Compromiso de ventas para verificar la cadencia asignada.

      Evaluación formativa:

      ¡Quiero escucharte!

      ¿Qué es una cosa que has aprendido de este post? Cómo te imaginas aplicar estos nuevos conocimientos en el mundo real? No dudes en compartirlo en los comentarios.

      Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/10/28/automatically-assign-new-leads-to-a-sales-engagement-cadence-2/

    Categories
    Developers

    Nunca te pierdas el ritmo: notificaciones para la eliminación de clientes potenciales en la cadencia de participación de ventas

    Última actualización el 1 de noviembre de 2023 por Rakesh Gupta

    Gran idea o pregunta duradera:

    • ¿Cómo se notifica al propietario del cliente potencial cuando alguien elimina un cliente potencial de la cadencia de participación de ventas?

    Objetivos:

    Después de leer este blog, podrás:

    • Comprender la captura de datos modificados
    • Comprender el objeto ActionCadenceTracker
    • Suscríbase para cambiar eventos mediante un activador de Apex
    • Llamar a un flujo iniciado automáticamente desde la clase Apex
    • Y mucho más.

    👉 Anteriormente, escribí un artículo sobre Sales Engagement. ¿Por qué no echarles un vistazo mientras lo haces?

    1. ¿Ya ha recorrido el camino de ladrillos amarillos de la cadencia de ventas?

    A Benjamin Moore , administrador de Salesforce en Gurukul On Cloud (GoC), se le ha asignado una tarea específica. Siempre que un vendedor por teléfono o el equipo de ventas internas elimine un cliente potencial (cliente potencial) de la cadencia de participación de ventas, asegúrese de la creación automática de una tarea con estos detalles:

    • Asunto : – Cliente potencial eliminado de la cadencia de participación en ventas
    • Estado : – No iniciado
    • Prioridad :- Alta
    • Fecha de vencimiento : – Hoy
    • Relacionado con : – Plomo
    • Asignado a : – Propietario principal

    ¿Qué es la cadencia de participación en ventas?

    La adquisición de clientes potenciales es un paso importante en cualquier esfuerzo de marketing. Una vez que los equipos de ventas internas tienen una lista de clientes potenciales, están listos para emprender actividades de divulgación. ¡Pero espera! Demos un paso atrás y reflexionemos sobre las siguientes preguntas como preámbulo para comprender la cadencia de ventas: (1) ¿Con qué frecuencia desea que sus representantes se comuniquen con los clientes potenciales? (2) ¿Cómo le gustaría que se comunicaran con el cliente potencial, mediante llamada o correo electrónico? (2) ¿Cómo desea capturar la disposición de las llamadas? (3) etcétera.

    La cadencia de participación de ventas es una línea de tiempo de las actividades y métodos de ventas que siguen los representantes de ventas para atraer clientes potenciales. El propósito de una cadencia es facilitar que el representante de ventas interno cumpla con el cronograma y garantice que los prospectos no sean olvidados, es decir, que nada se pierda. Por ejemplo, si ofrece una consulta gratuita en su sitio web y alguien completa un formulario, la cadencia incluiría una lista de las cosas que hace para programar la primera reunión.

    Una cadencia de ventas normalmente incluye tres puntos de contacto diferentes: correo electrónico , redes sociales y llamadas/correos de voz . La cadencia, para diferentes embudos de ventas, puede diferir, pero siempre debe incluir una combinación de las tres formas de comunicación mencionadas.

    Una cadencia de participación de ventas se parece a esto:

    HVS.png

    En otras palabras, las cadencias de participación de ventas difieren de un tipo de proceso de ventas a otro, pero la idea básica sigue siendo la misma: toques consistentes y secuenciales.

    ¿Qué es la captura de datos modificados?

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/11/01/never-miss-a-beat-notifications-for-prospect-removal-in-sales-engagement-cadence/

    Categories
    Developers Tutoriales de Salesforce

    Desmitificando Light DOM y sus casos de uso ☁️

    Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

    El enlace a la publicación original, lo encontrarás al final de este artículo.

    Desmitificando Light DOM y sus casos de uso | Blog de desarrolladores de Salesforce

    Light DOM es una función de Lightning Web Components que ha estado disponible de forma general en Lightning Experience, Experience Cloud, LWC OSS (código abierto) y todas las versiones de la aplicación móvil Salesforce desde Summer '23 .

    Los componentes web Lightning, de forma predeterminada, se representan en DOM oculto , lo que proporciona una encapsulación y seguridad sólidas para sus componentes. Sin embargo, al mismo tiempo, evita el estilo global y bloquea las integraciones de terceros que introspeccionan el interior de sus componentes. Light DOM es una característica que se puede habilitar de forma granular en componentes seleccionados, de modo que Shadow DOM no los afecte.

    ¿Cómo funciona el DOM ligero?

    Usemos un componente web Lightning muy simple como ejemplo.

    holaCodey.html

    <dx-code-block title language="html" code-block="

    Hello Codey!

    «>

    holaCodey.js

    En el ejemplo anterior, el DOM oculto predeterminado del componente evita que una regla CSS definida en el componente principal o el host alcance el elemento <p> . Además, no permite que el código JavaScript externo al componente consulte el elemento <p> mediante las API de consulta del navegador.

    Para activar el DOM ligero para un componente, debe especificar el renderMode ligero en su archivo JavaScript y la directiva de plantilla lwc:render-mode en la etiqueta <template> del componente. Ambos cambios son necesarios debido a la forma en que se compilan los componentes web Lightning.

    holaCodey.html

    <dx-code-block title language="html" code-block="

    Hello Codey!

    «>

    holaCodey.js

    Cuando activa el DOM claro en un componente, el marcado del componente se adjunta al elemento anfitrión en lugar de a su árbol de sombra. Luego puede acceder al marcado desde otros componentes de la página como cualquier otro contenido en el host del documento que no esté protegido por Shadow DOM.

    Los componentes DOM ligeros permiten el uso de API de consulta de navegador estándar como querySelector y querySelectorAll . En este caso, en lugar de usar this.template.querySelector , debes usar this.querySelector .

    holaCodey.js

    O más simplemente, a menudo puedes usar la directiva lwc:ref en ambos casos (componentes DOM sombreados y claros) y omitir el querySelector .

    holaCodey.html

    <dx-code-block title language="html" code-block="

    Hello Codey!

    «>

    holaCodey.js

    Cuándo usarlo y cuándo no usarlo

    Light DOM es una opción para cada componente individual. Sus efectos no se aplicarán a otros componentes a menos que también opten por participar. Tenga en cuenta que los componentes base siempre se representan en DOM oculto.

    Recomendamos habilitar DOM ligero si tiene bibliotecas que necesitan acceder a los componentes internos mediante API de consulta de navegador estándar, aplicar estilos globales o necesita más flexibilidad para implementar las mejores prácticas de accesibilidad, siempre y cuando el componente no exponga datos confidenciales. Cubriremos estos casos de uso con más profundidad en la siguiente sección.

    No recomendamos habilitar DOM ligero para un componente si ese componente aparece o funciona con datos confidenciales. El uso de DOM ligero elimina la encapsulación de DOM en sombra y expone los componentes al raspado de DOM. Por lo tanto, tenga en cuenta esta importante consideración.

    Casos de uso habilitados por DOM ligero

    Light DOM permite varios casos de uso que anteriormente no eran compatibles.

    1) Soporte de bibliotecas que necesitan acceso a las partes internas de un componente

    Light DOM permite el uso de bibliotecas que necesitan acceso a los componentes internos. Un buen ejemplo de esto son las bibliotecas de análisis utilizadas en los sitios de Experience Cloud, como Google Analytics, ya que necesitan acceso a los componentes internos para obtener mejores resultados.

    Podemos probar este caso de uso, incluido el componente helloCodey anterior, en un componente principal mascotChanger de la siguiente manera.

    mascotChanger.html

    <dx-code-block title language="html" code-block="
    «>

    mascotChanger.js

    Tenga en cuenta que, aunque el párrafo consultado pertenece al componente helloCodey , podemos acceder a él con this.template.querySelector , porque pertenece al DOM ligero secundario. Sin embargo, si el componente helloCodey no tuviera habilitado el DOM ligero, querySelector habría devuelto null .

    También puede acceder a los componentes internos del DOM ligero desde un script que se carga como un recurso estático en la página, siempre y cuando todos los componentes ancestros estén habilitados para el DOM ligero. Por ejemplo, en un sitio LWR Experience Cloud, que es DOM completamente ligero, puede agregar un recurso estático de JavaScript que encuentre los componentes internos helloCodey de la siguiente manera.

    myJSResource.js

    2) Implementación más sencilla de componentes profundamente anidados

    Otro ejemplo en el que esto puede resultar útil es implementar componentes complejos y profundamente anidados. En ese caso, es posible que prefiera tener un único componente DOM de sombra en el nivel superior y componentes DOM claros dentro para evitar gastos generales. Por ejemplo, un componente de tabla de datos personalizado puede tener solo un gran componente DOM de sombra alrededor de todo, en lugar de una sombra para cada fila y celda de la tabla.

    Esta implementación facilita la consulta de sus propios elementos desde el componente de nivel superior de su jerarquía y también la implementación de la accesibilidad. Además, hay una ligera mejora en el rendimiento en algunos casos de uso al usar DOM claro sobre DOM sombreado, lo que se debe principalmente a la sobrecarga de simplemente crear nodos de sombra adicionales.

    3) Estilo global

    Light DOM también facilita el estilo global, ya que permite que los estilos CSS caigan en cascada en el marcado del componente. Por ejemplo, un componente DOM ligero puede establecer un estilo que se carga y luego se aplica una vez para todos los componentes DOM ligeros de la página. La inyección de estilos globales a través de DOM ligero solo se admite en sitios de Experience Cloud, editor de contenido CMS o Sales Enablement.

    Por ejemplo, definamos un componente colorChanger de la siguiente manera.

    colorChanger.html

    <dx-code-block title language="html" code-block="
    «>

    colorChanger.js

    colorChanger.css

    El color de fondo azul se aplicará a los párrafos de todas las instancias del componente helloCodey en la página, ya que está habilitado para DOM claro.

    En la mayoría de los casos, no querrás que tu estilo se filtre a otros componentes. Eso todavía es posible para componentes DOM ligeros. Solo necesita colocar esas reglas de estilo en un archivo *.scoped.css , para que tengan como alcance el componente DOM ligero. El CSS con alcance está escrito exactamente igual que el CSS normal, pero solo se aplicará a ese componente sin filtrarse.

    Tenga en cuenta que si las reglas de estilo se cargan globalmente como recursos estáticos en una página de Lightning Experience o un sitio de Experience Cloud, se les quitará el alcance y se aplicarán tanto a los componentes DOM claros como también a los componentes DOM de sombra, ya que la sombra sintética no evitará que se filtren. Esta es una limitación que se solucionará una vez que la sombra nativa sea totalmente compatible (actualmente en Developer Preview ). Cuando la sombra nativa está habilitada, solo los componentes habilitados para DOM claro heredarán los estilos globales.

    4) Implementación más flexible de las mejores prácticas de accesibilidad

    Light DOM permite que un componente haga referencia a la i d un elemento que vive en otro componente separado habilitado para Light DOM. Esto le permite vincular dos elementos utilizando los atributos i d y aria , lo que le otorga flexibilidad adicional para implementar las mejores prácticas de accesibilidad en sus proyectos. Mejoremos nuestro componente mascotChanger para demostrar esto.

    mascotChanger.html

    <dx-code-block title language="html" code-block="

    «>

    mascotChanger.js

    mascotaNombreInput.html

    <dx-code-block title language="html" code-block="

    «>

    mascotaNombreEtiqueta.html

    <dx-code-block title language="html" code-block="

    «>

    Tenga en cuenta que Salesforce está trabajando actualmente con el W3C para agregar nuevos estándares, de modo que el DOM oculto nativo pueda participar en estos patrones de accesibilidad. Esto significa que, en el futuro, este caso de uso ligero de DOM no será necesario. Como parte de nuestros esfuerzos de accesibilidad, también patrocinamos a Igalia para implementar parcialmente ARIA Element Reflection , que ahora es totalmente compatible con Safari y parcialmente con Chrome. Si quieres saber más sobre este tema, echa un vistazo a nuestra propuesta cross-root-aria , el repositorio para el grupo de trabajo Modelo de objetos de accesibilidad .

    La siguiente tabla resume los casos de uso y dónde se admiten.

    Experiencia en la nube Experiencia relámpago Aplicaciones móviles de Salesforce LWC OSS/LWR en Node.js*
    Soporte de bibliotecas que necesitan acceso a las partes internas de los componentes.
    Implementación más sencilla de componentes profundamente anidados
    Estilo global No No
    Implementación más flexible de las mejores prácticas de accesibilidad

    *Si se utiliza DOM de sombra nativo en lugar de sombra sintética . La sombra nativa es la opción predeterminada para LWC OSS y LWR en Node.js.

    Otras Consideraciones

    Cuando se trabaja con DOM ligero, hay algunas consideraciones adicionales a tener en cuenta, entre ellas:

    • Los eventos no se reorientan con DOM ligero. Lea más en la guía para desarrolladores .
    • No hay soporte de navegador para espacios fuera del DOM oculto, por lo que se emula. Esto implica que algunas funciones, como los enlaces de ciclo de vida, no están disponibles en ellos. Eche un vistazo a la documentación para saber más.
    • Por ahora, los componentes ligeros habilitados para DOM no se pueden empaquetar.

    Conclusión

    En esta publicación de blog, revisamos qué es el DOM ligero, los casos de uso que permite y las consideraciones a tener en cuenta para decidir qué componentes habilitarán la función. Todos los ejemplos que se muestran en este blog se encuentran en un repositorio de GitHub que puedes probar tú mismo.

    Para obtener más información sobre DOM ligero en la plataforma Salesforce, lea la documentación o, si está trabajando fuera de la plataforma, lea la documentación OSS .

    Si decide seguir adelante y transformar sus componentes DOM ocultos en componentes DOM claros, consulte esta herramienta creada por Salesforce Engineering para simplificar la migración.

    Sobre el Autor

    Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .

    Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

    Añadir a holgura Suscríbete a RSS

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2023/10/demystifying-light-dom-and-its-use-cases.html

    Categories
    Developers Salesforce

    Uso de prueba de flujo versus clase de prueba para flujo en Salesforce

    Introducción de la prueba de flujo

    Anteriormente, si queríamos probar el flujo, necesitábamos escribir una clase de prueba de Apex para el flujo. Con la versión Summer '22, Salesforce introdujo un marco de prueba para flujos activados por registros para automatizar las pruebas de flujos. Ahora podemos dejar que Salesforce pruebe el flujo, asegurarnos de que los resultados cumplan con las expectativas y resaltar cuando no lo sean. Ahora podemos crear y ejecutar pruebas dentro del propio generador de flujo, de forma declarativa sin escribir ningún código.

    Cómo funciona

    Establecer detalles de prueba, desencadenante y ruta

    Proporciona una etiqueta de prueba de flujo y una descripción de la prueba. Establezca el activador de prueba en Creado/actualizado según el escenario. La ruta de la prueba está configurada para Ejecutar inmediatamente.

    imagen.png Establecer registro de activación inicial/actualizado

    Usando la función de búsqueda, podemos buscar el registro para usarlo como plantilla inicial. Tras la selección del registro, los campos se completan a partir del registro seleccionado. La prueba hereda los valores de campo del registro seleccionado. Sin embargo, podemos modificar los valores de estos campos antes de finalizar la prueba. La prueba no está vinculada a este registro pero contiene y utiliza sus valores de campo.

    imagen.png Establecer afirmaciones

    La aserción es una forma de comparar el resultado real con el resultado previsto. Si coinciden, entonces la afirmación se evalúa como verdadera. De lo contrario, la afirmación falla. Escriba las siguientes afirmaciones para garantizar que se cumplan los criterios de entrada de registros para el flujo y se logre el resultado esperado.

    imagen.png Ejecutar prueba y ver detalles

    Haga clic en el botón "Ver pruebas", seleccione el menú desplegable de la prueba de flujo que queremos ejecutar y seleccione Ejecutar prueba y ver detalles.

    imagen.png La prueba de flujo se ejecuta y resalta el camino que tomó la prueba. Si necesitamos probar el flujo, simplemente podemos ejecutar la prueba. Ya no es necesario configurar los datos de prueba mediante programación. ¡Esto aumenta la eficiencia de las pruebas! Si necesitamos realizar una mejora en este flujo en el futuro, necesitaremos actualizar el registro de prueba asociado en consecuencia.

    imagen.png Beneficios

    1. Fácil y cómodo de usar: podemos crear registros de prueba a través de la interfaz de usuario y ponerlos a prueba.
    2. Tiempo y esfuerzo: reduce el tiempo y el esfuerzo necesarios, ya que no necesitamos escribir código, solo crear registros desde la interfaz de usuario y realizar afirmaciones.
    3. No afectará la cobertura del código existente a nivel de clase: si migramos cualquier funcionalidad del activador al flujo, la lógica subyacente del activador/clase también se limpia manualmente como parte de este ejercicio. Esto no reducirá la cobertura del código de la clase ya que la lógica se elimina por completo.
    4. Cobertura de la prueba de flujo: el porcentaje de cobertura no se captura en la prueba de flujo como podemos hacerlo a través de la clase Apex. Más bien es capaz de cubrir nodos. Una vez seleccionamos “Ejecutar prueba y ver detalles”. La ruta resaltada en amarillo representará la cobertura real del flujo desde el principio hasta el final del nodo.

    imagen.png

    imagen.png

    imagen.png Desventaja

    1. Solo puede crear pruebas de flujo para crear, actualizar o crear/actualizar flujos activados por registros. Aún no se admite la eliminación de flujos activados por registros. – Solo para el escenario de eliminación de registros podemos escribir una clase de prueba
    2. Puede afectar la cobertura general: dado que la cobertura de prueba general se calcula en función de la cobertura de prueba de todas las clases combinadas (promedio), si migramos cualquier característica que tenga una cobertura de prueba más alta en la clase ápice relevante, podría reducir el porcentaje de cobertura general del código. (Como actualmente solo nos estamos enfocando en migrar el activador relacionado con la cuenta para fluir, solo se ve afectada 1 clase de prueba, por lo que no hay cambios significativos en la cobertura del código Apex).
    3. Las pruebas de flujo no admiten rutas de flujo que se ejecuten de forma asincrónica. Sin embargo, no tenemos flujo asíncrono en nuestra organización. Estamos creando flujos para cubrir escenarios que se ejecutan sincrónicamente.

    Recomendación

    • Podemos comenzar a dar pasos para pasar a la prueba de flujo a medida que Salesforce realiza mejoras continuas en el flujo, por lo que en versiones futuras, podemos esperar que la prueba de flujo incluya más mejoras y reduzca las limitaciones.
    • Podemos comenzar escribiendo una prueba de flujo para las actualizaciones rápidas de campos (antes) de los flujos de activación de registros.
    • Mejorar la cobertura de prueba de las clases que tienen menos cobertura para que podamos usar la prueba de flujo.

    Preguntas más frecuentes

    ¿Cuál es el porcentaje de cobertura para implementar Flow?

    En relación con las pruebas de Apex, las pruebas de flujo no se consideran parte de la cobertura de pruebas como en el 75%+ para el despliegue de productos.

    ¿Brindan cobertura de código como lo hace la clase de prueba? Si no, ¿debemos pensar en eliminar el flujo de la cobertura de prueba?

    Sí, cubren resaltando nodo por nodo.

    ¿Puede confirmar si la prueba de flujo permite ejecutar pruebas masivas?

    No, no admite pruebas de registros masivos. En la mayoría de los escenarios relacionados con desencadenantes, hemos creado un registro individual en la clase de prueba y verificamos los escenarios de prueba. Si reemplazamos esos desencadenantes con flujos, no habrá una gran diferencia en los casos de prueba.

    ¿La prueba de flujo admite la asincronía?

    Las pruebas de flujo no admiten rutas de flujo que se ejecuten de forma asincrónica. Sin embargo, no tenemos flujo asíncrono en nuestra organización. Estamos creando flujos para cubrir escenarios que se ejecutan sincrónicamente.

    ¿Cuál es el rendimiento de las pruebas de flujo en comparación con las clases de prueba?

    No veo ninguna documentación oficial, pero creo que la prueba de flujo será más rápida en comparación con la clase de prueba porque cuando ejecutamos una prueba creará una instancia de la clase y llamará a métodos individuales. Podemos ejecutar casos de prueba individuales utilizando una prueba de flujo, pero no es posible ejecutar un solo método individual desde la clase de prueba, lo que lleva mucho tiempo.

    Referencia

    Prueba de flujo (beta)

    Consideraciones para probar el flujo

    50% Me gusta VS
    50% No me gusta

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://www.sfdcamplified.com/use-of-flow-test-vs-test-class-for-flow-in-salesforce/#utm_source=rss&utm_medium=rss&utm_campaign=use-of-flow-test-vs-test-class-for-flow-in-salesforce

    Categories
    Developers

    Validaciones personalizadas mediante flujos activados por registros

    Última actualización el 3 de agosto de 2023 por Rakesh Gupta

    Gran idea o pregunta duradera:

    • ¿Cómo se escribe una regla de validación utilizando un flujo desencadenado por registros antes de guardar sin crear metadatos adicionales?

    Objetivos:

    Después de leer este blog, podrá:

    • Comprender la regla de validación
    • Flujo antes de guardar activado por registro de usuario para crear una regla de validación
    • Mostrar el mensaje de error en la parte superior de la página
    • Y mucho más

    👉 Anteriormente, escribí varias publicaciones sobre la validación y Salesforce Flow. ¿Por qué no echarles un vistazo mientras estás en ello?

    1. Adición de validación a los componentes de la pantalla de flujo
    2. ¿Regla de validación usando un flujo antes de guardar? ¡Sí!
    3. Cómo corregir el error FIELD_CUSTOM_VALIDATION_EXCEPTION)

    A Benjamin Moore , administrador de Salesforce en Gurukul On Cloud (GoC), se le ha encomendado un requisito específico. Debe restringir que los usuarios creen una nueva oportunidad dentro de la cuenta si existe una oportunidad abierta. El siguiente texto debe utilizarse para el mensaje de error:

    Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.

    ¿Qué es la regla de validación?

    Una regla de validación permite que un administrador del sistema defina una lógica personalizada y mensajes de error para garantizar la integridad de los datos. La regla puede contener una fórmula o una expresión que evalúe los datos en uno o más campos y devuelva un valor verdadero o falso . Por ejemplo, la regla incluye un mensaje de error que se muestra cuando devuelve un valor verdadero que indica que se están ingresando datos incorrectos. Recuerde, una regla de validación solo se activa cuando se crea o edita un registro .

    En este artículo, hablé sobre muchos hechos ocultos que no son muy conocidos sobre la regla de validación . Por ejemplo, mostré cómo usar una regla de validación para administrar requisitos usando tipos de metadatos personalizados.

    ¿Qué es Antes de Guardar Flujo?

    El flujo antes de guardar es un disparador que se realiza antes de una operación , como una inserción, actualización, eliminación, etc. Puede usar dicho flujo para verificar o cambiar valores antes de que los datos se actualicen o inserten en la base de datos. Guardar antes es mucho más rápido porque cada registro no se guarda en la base de datos nuevamente. Evitar ese procedimiento de guardado adicional significa omitir otra ronda de reglas de asignación, reglas de respuesta automática, reglas de flujo de trabajo y otras personalizaciones que tardan en ejecutarse. Use un flujo antes de guardar en los siguientes casos de uso:

    1. Actualizar campos en registros nuevos o modificados: significa que desea actualizar los campos en el registro que inició el Flujo
    2. Activar una regla de validación (no necesaria después del lanzamiento de winter'24)

    Lea este artículo para obtener más información sobre cuándo usar el flujo anterior frente al flujo posterior al guardado.

    Enfoque de Campeón de Automatización (I-do):

    Paso 2: uso del elemento de decisión para verificar si la oportunidad se creó o actualizó

    Ahora usaremos el elemento Decisión para verificar si el registro de oportunidad fue creado o actualizado.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso : {!$Record.Id}
        2. Operador : es nulo
        3. Valor : {!$ConstanteGlobal.Verdadero}
    5. Cuándo ejecutar el resultado : si se cumplen los requisitos de la condición
    6. Haz clic en la X en la parte superior para guardar tus cambios.

    Paso 3: agregar un elemento Obtener registro para encontrar oportunidades abiertas relacionadas

    El siguiente paso es usar el elemento Obtener registros para encontrar oportunidades abiertas relacionadas en la cuenta.

    1. En Flow Designer, debajo del nodo Creado , haga clic en el icono + y seleccione el elemento Obtener registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Seleccione el objeto Oportunidad de la lista desplegable.
    4. Seleccione Se cumplen todas las condiciones (Y) .
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo : ID de cuenta
        2. Operador : Igual
        3. Valor : {!$Record.AccountId}
      2. Haga clic en Agregar condición
        1. Fila 1:
          1. Campo : EstáCerrado
          2. Operador : Igual
          3. Valor : {!$ConstanteGlobal.Falso}
    6. Cuántos registros almacenar:
      1. seleccione Todos los registros
    7. Cómo almacenar datos de registro:
      1. Elija la opción para Almacenar automáticamente todos los campos .
    8. Haz clic en la X en la parte superior para guardar tus cambios.

    Paso 4: uso del elemento de decisión para verificar si se encontró o no una oportunidad abierta  

    Ahora, usaremos el elemento Decisión para comprobar si el elemento Obtener registros anterior devuelve un registro de oportunidades abiertas.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!Get_Related_Opportunity}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
    5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 5: agregar un elemento de error personalizado para mostrar mensajes de error

    1. En el nodo , seleccione el elemento Error personalizado .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Establecer detalles del mensaje de error 1
      1. Dónde mostrar el mensaje de error : en una ventana en una página de registro
      2. Mensaje de error:
        1. Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.
    4. Haz clic en la X en la parte superior para guardar tus cambios.

    Al final, Benjamin's Flow se verá como la siguiente captura de pantalla:

    Una vez que todo se vea bien, realice los siguientes pasos:

    1. Haga clic en Guardar .
    2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
    3. Haga clic en Mostrar avanzado .
    4. Versión de API para ejecutar el flujo : 59
    5. Etiqueta de entrevista : regla de validación personalizada mediante flujo {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar .

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    👉 Mira el video para obtener instrucciones paso a paso.

    [contenido incrustado]
    Cosas para recordar
    1. El límite para el campo del mensaje de error es de 255 caracteres.
    2. Solo puede agregar un mensaje de error para una página.
    3. Solo puede agregar un mensaje de error por campo.
    4. no es posible utilizar el enlace con su mensaje de error.
      1. parámetro de escape Indica si cualquier marcado HTML en el mensaje de error personalizado se debe escapar ( verdadero ) o no ( falso ). Este parámetro se ignora tanto en Lightning Experience como en la aplicación móvil Salesforce, y el HTML siempre se escapa. El parámetro de escape solo se aplica en Salesforce Classic. Lea este artículo para obtener más información.

    Prueba de concepto

    A partir de ahora, si un usuario intenta crear una nueva oportunidad en una cuenta que ya tiene una oportunidad abierta, se activará el flujo activado por registro antes de guardar que hemos creado y mostrará un mensaje de error.

    Evaluación formativa:

    ¡Quiero saber de ti!

    ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/08/03/record-triggered-flows-for-custom-validations-2/

    Categories
    Developers

    Integración de API de zona horaria de Salesforce y Google: traducción de coordenadas a información de zona horaria

    Última actualización el 29 de junio de 2023 por Rakesh Gupta

    Gran idea o pregunta duradera:

    • ¿Cómo puede aprovechar la API de zona horaria de Google para actualizar automáticamente la información de zona horaria de un cliente potencial en función de sus coordenadas geográficas?

    Objetivos:

    Después de leer este blog, podrá:

    Jestilla Zetkin se desempeña actualmente como arquitecta de Salesforce en Gurukul On Cloud (GoC). El Director Comercial le ha confiado a Jestilla un desafío único. El objetivo es asegurarse de que, en el momento de la creación, los prospectos de Salesforce (creados a través de Web-to-lead) reciban los detalles exactos de la zona horaria, que se determinan en función de sus respectivas coordenadas geográficas.

    1. El caso de uso comercial requiere que usemos la API de zona horaria de Google para actualizar automáticamente cuatro campos específicos en los clientes potenciales:
      1. dstOffset (la compensación del horario de verano en segundos)
      2. rawOffset (el desplazamiento de la hora universal coordinada para la zona horaria de la ubicación dada)
      3. timeZoneId (una cadena que identifica de forma única la zona horaria)
      4. y timeZoneName (el nombre largo de la zona horaria)
    2. En caso de una respuesta fallida, instituya una acción de contingencia para crear una tarea para el propietario designado del cliente potencial.

    ¿Qué es la API de zona horaria de Google?

    Hay muchas posibilidades de que su base de clientes esté repartida en varias zonas horarias. Este factor puede influir en gran medida en sus interacciones con ellos, especialmente al programar llamadas, reuniones o enviar mensajes automáticos. La plataforma de Salesforce ofrece un entorno altamente adaptable para almacenar y administrar datos de clientes, pero de forma predeterminada, no proporciona una forma de registrar automáticamente la zona horaria del cliente potencial en función de sus coordenadas geográficas.

    La API de zona horaria de Google es un servicio ofrecido por Google como parte de su plataforma Google Maps. La API proporciona datos de zona horaria para cualquier ubicación en todo el mundo en función de las coordenadas de latitud y longitud. Este servicio puede ser particularmente útil para los desarrolladores que necesitan ajustar la comunicación de acuerdo con la ubicación geográfica de un cliente potencial o contacto o para empresas que operan en diferentes zonas horarias.

    La API de zona horaria proporciona la siguiente información:

    • El ID de la zona horaria , según lo define la base de datos de zonas horarias de la IANA (por ejemplo, America/New_York ).
    • El nombre de la zona horaria (por ejemplo, hora de verano del este ).
    • La diferencia horaria con respecto a la hora universal coordinada (UTC) sin tener en cuenta el horario de verano (rawOffset).
    • El desfase horario debido al horario de verano (dstOffset).

    Tenga en cuenta que la API de zona horaria de Google está sujeta a cargos, por lo que es importante comprender las implicaciones de costos antes de implementarla.

    ¿ Cómo funciona la API de zona horaria de Google?

    La API de zona horaria de Google funciona tomando coordenadas de latitud y longitud y devolviendo datos de zona horaria en formato JSON. Aquí hay un ejemplo básico de cómo usarlo.

    La siguiente solicitud HTTP GET obtiene información de zona horaria para una ubicación en la latitud 40.712776 y longitud -74.005974 (ciudad de Nueva York), y asume que está realizando la solicitud en una determinada marca de tiempo (marca de tiempo UNIX).

     https://maps.googleapis.com/maps/api/timezone/json?location=40.712776,-74.005974&timestamp=1458000000&key=YOUR_API_KEY

    En la URL de solicitud anterior, reemplace YOUR_API_KEY con su clave API real.

    Aquí hay una respuesta de muestra en formato JSON que la API podría devolver:

    
    
    { "dstOffset": 3600, "compensación sin procesar": -18000, "estado": "OK", "timeZoneId": "América/Nueva_York", "timeZoneName" : "Hora de verano del Este"
    }
    

    La respuesta incluye la siguiente información:

    1. dstOffset : La compensación del horario de verano en segundos. Será cero si la zona horaria no está en el horario de verano durante la marca de tiempo especificada.
    2. rawOffset : el desplazamiento de UTC (sin contar el horario de verano) en segundos.
    3. estado : una cadena que indica el estado de la solicitud. “OK” significa que la solicitud fue exitosa.
    4. timeZoneId : una cadena que contiene el ID "tz" de la zona horaria (por ejemplo, "América/Nueva_York").
    5. timeZoneName : una cadena que contiene el nombre de forma larga de la zona horaria (por ejemplo, "hora de verano del este").

    Recuerde, en la URL de solicitud, se requiere el parámetro de marca de tiempo y el parámetro de ubicación espera coordenadas de latitud y longitud.

    1. Marca de tiempo : el tiempo deseado en segundos desde la medianoche del 1 de enero de 1970 UTC. La API de zona horaria utiliza la marca de tiempo para determinar si se debe aplicar o no el horario de verano, según la zona horaria de la ubicación.
    2. Ubicación : una tupla de latitud, longitud separada por comas, ubicación = 40.712776, -74.005974, que representa la ubicación para buscar.

    Además, no olvide incluir su clave API.

    Beneficios de usar la API de zona horaria de Google

    La API de zona horaria de Google ofrece una serie de beneficios significativos, especialmente para desarrolladores y empresas que necesitan operar en diferentes zonas horarias. Estos son algunos de los beneficios clave:

    1. Precisión : la API de zona horaria de Google proporciona datos de zona horaria precisos para cualquier ubicación en todo el mundo. Tiene en cuenta tanto la zona horaria 'sin procesar' como el horario de verano, lo que garantiza que siempre tenga la hora local correcta.
    2. Facilidad de uso : la API es fácil de usar y solo requiere la latitud y la longitud como entradas. Devuelve datos en un formato JSON estructurado, que es fácil de analizar y usar en varias aplicaciones.
    3. Cobertura global : la API proporciona datos de zona horaria para ubicaciones en todo el mundo, lo que la hace útil para empresas globales y aplicaciones con bases de usuarios internacionales.
    4. Confiabilidad : como servicio proporcionado por Google, es altamente confiable, lo que garantiza que tenga acceso constante a los datos de la zona horaria cuando los necesite.
    5. Integración : se puede integrar en una variedad de aplicaciones y plataformas, incluidas aplicaciones móviles, servicios web y plataformas de CRM como Salesforce. Esto permite funcionalidades como la programación de comunicaciones en diferentes franjas horarias, etc.
    6. Información actualizada : Google actualiza continuamente sus bases de datos, lo que garantiza que los datos devueltos por la API de zona horaria, como los cambios de horario de verano, estén siempre actualizados.

    Al aprovechar estos beneficios, las empresas pueden mejorar la experiencia del cliente, aumentar la eficiencia operativa y garantizar un registro de datos preciso, entre otras ventajas.

    Antes de comenzar a usar la API de zona horaria, necesita un proyecto con una cuenta de facturación y la API de zona horaria habilitada. Aquí hay una guía paso a paso para configurar su proyecto de Google Cloud y habilitar la API de zona horaria:

    Paso 1: crea o selecciona tu proyecto

    1. Navegue a Google Cloud Console .
    2. Si ha creado un proyecto anteriormente, puede seleccionarlo de la lista desplegable en la parte superior. De lo contrario, haga clic en Nuevo proyecto en la parte superior derecha.
    3. Asigne un nombre a su proyecto y, opcionalmente, también puede editar el ID del proyecto.
    4. Haga clic en Crear para crear el proyecto.

    Paso 2: configurar una cuenta de facturación

    Debe vincular una cuenta de facturación a su proyecto para usar la API de zona horaria de Google. Así es cómo:

    1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y haga clic en Facturación .
    2. Si tiene una o más cuentas de facturación, elija una cuenta y asóciela con su proyecto. De lo contrario, haga clic en Crear cuenta , complete el formulario para crear una nueva cuenta de facturación y luego asóciela con su proyecto.

    Paso 3: habilite la API de zona horaria

    Una vez que haya configurado su proyecto y su cuenta de facturación, puede habilitar la API de zona horaria.

    1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | biblioteca
    2. En la biblioteca de API, busque API de zona horaria y selecciónela.
    3. En la página de la API de zona horaria, haga clic en Habilitar .

    Paso 4: Genere su clave API

    Finalmente, necesita una clave de API para autenticar sus solicitudes en la API de zona horaria.

    1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | Cartas credenciales.
    2. Haga clic en el botón + CREAR CREDENCIALES en la parte superior y seleccione Clave API .
    3. Su nueva clave de API se creará y se mostrará. Cópielo y guárdelo de forma segura. Necesitará esta clave para realizar solicitudes a la API de zona horaria.

    Ahora, su proyecto de Google Cloud está todo configurado y puede comenzar a usar la API de zona horaria de Google.

    👉 Si bien la API de zona horaria es compatible con OAuth 2.0 y la cuenta de servicio para la autenticación, esta guía se enfoca en el método de clave de API más simple por razones de brevedad. Si necesita un método de autenticación más seguro o complejo, consulte la documentación de autenticación oficial de Google.

    Enfoque de Campeón de Automatización (I-do):

    Si bien esto se puede resolver utilizando varias herramientas de automatización como Apex Trigger y otras, utilizaremos Salesforce Flow y la función de flujo HTTP Callout (GET) recientemente introducida .

    HTTP Callout extrae o envía datos entre la base de datos de Salesforce y un sistema externo a través de Flow Builder sin usar código. Puede configurar integraciones directas según sea necesario sin tener que trabajar con un desarrollador o llamar a una herramienta de middleware, como Mulesoft. Después de configurar la acción de llamada HTTP en un flujo, Flow Builder genera automáticamente un registro de servicio externo , una acción invocable y una clase de Apex que puede usar para crear un recurso definido por Apex para flujos. A continuación, puede utilizar la salida de datos de la solicitud de la API como entrada en Flow Builder y en Salesforce.

    Puede usar HTTP Callout para conectar un flujo a una variedad de API.

    • Obtener información de direcciones usando una API de mapa
    • Obtén las condiciones meteorológicas con una API de servicios meteorológicos
    • Genere el código de barras con una API de servicio de código de barras
    • Obtenga información de autorización de pago con una API de procesamiento de pagos
    • y mucho más

    Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.

    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 3 pasos para resolver el requisito empresarial de Jestilla mediante Record-Triggered After-Save Flow . Debemos:

    1. Cree campos personalizados en el cliente potencial para almacenar la respuesta
    2. Crear una credencial con nombre
    3. Flujo de fuerza de ventas
      1. Definir propiedades de flujo para el flujo desencadenado por registro
      2. Agregue una fórmula para calcular la marca de tiempo
      3. Configurar una llamada HTTP GET para la API de zona horaria
      4. Agregue un elemento de decisión para verificar el código de respuesta
      5. Agregue un elemento Actualizar registros para actualizar el prospecto
      6. Agregue un elemento Crear registros para crear una tarea para que el propietario del cliente potencial maneje la respuesta de error

    Paso 1: Cree campos personalizados en el objeto principal para almacenar la respuesta

    En este paso, hemos establecido campos personalizados dentro del objeto principal. Estos servirán como repositorios para los datos de respuesta de la API de zona horaria de Google.

    Etiqueta de campo Nombre de API de campo Tipo de datos
    dstOffset dstOffset __c Número (18,0)
    rawOffset rawOffset__c Número (18,0)
    Posición actual Posición_actual__c Geolocalización
    Identificación de zona horaria Time_Zone_Id__c Texto (255)
    Nombre de zona horaria
    Nombre_de_la_zona_horaria__c Texto (255)

    Paso 2: crear una credencial con nombre

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, ingrese Credenciales con nombre y luego seleccione Credenciales con nombre .
    3. Haga clic en Nuevo legado .
    4. Rellene la página con la URL y los parámetros de autenticación del extremo de la llamada.
    5. Haga clic en Guardar .

    Paso 3.1: Definir propiedades de flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos , luego haga clic en Nuevo flujo .
    4. Seleccione la opción Flujo activado por registro , haga clic en Crear
      1. Objeto: Plomo
      2. Activar el flujo cuando: se crea un registro
      3. Establecer condiciones de entrada: se cumplen todas las condiciones (Y)
      4. Fila 1:
        1. Campo : Posición_Actual__Latitud__s
        2. Operador : es nulo
        3. Valor : {!$ConstanteGlobal.Falso}
      5. Haga clic en + Agregar condición
      6. Fila 2:
        1. Campo : Posición_Actual__Longitud__s
        2. Operador : es nulo
        3. Valor : {!$ConstanteGlobal.Falso}
      7. Optimizar el flujo para : acción y registros relacionados
      8. Elija la opción para incluir una ruta de ejecución asíncrona para acceder a un sistema externo después de que la transacción original para el registro de activación se confirme con éxito .
    5. Haga clic en Listo.

    Paso 3.2: fórmula para calcular la marca de tiempo

    1. En Caja de herramientas , seleccione Administrador y luego haga clic en Nuevo recurso para calcular los segundos desde la época de Unix (1 de enero de 1970, 00:00:00).
    2. Ingrese la siguiente información :
      1. Tipo de recurso : Fórmula
      2. Nombre de API : forN_Timestamp
      3. Tipo de datos : Número
      4. Lugares decimales : 0
      5. Fórmula : RONDA((AHORA() – FECHAHORAVALUE(“1970-01-01 00:00:00”)) * 24 * 60 * 60, 0)
    3. Haga clic en Listo.

    Paso 3.3: configurar una acción de llamada HTTP GET

    HTTP Callout lo guía a través de la introducción de los detalles sobre el servicio HTTP basado en web o el punto final de la API REST al que se está conectando. Después de completar la configuración, invoca la acción en un flujo.

    1. En el nodo Ejecutar asincrónicamente , seleccione Acción .
    2. Haga clic en + Crear llamada HTTP .
    3. Configure el servicio externo que conecta Salesforce con la API basada en HTTP.
      1. Introduzca un Nombre para el servicio externo.
      2. Seleccione la credencial con nombre que creó en el paso 2 .
      3. Haga clic en Siguiente .
    4. El siguiente paso es configurar la acción invocable que puede usar en Flow Builder o en Salesforce.
      1. Para Etiqueta , ingrese la acción que realiza la llamada.
      2. Método : OBTENER
      3. Agregue el extremo de la URL para la solicitud.
        1. Ruta URL : /maps/api/timezone/json
      4. Agregue claves de parámetros de consulta si la API a la que está llamando las tiene. Cuando usa esta acción en un flujo, ingresa valores para las claves definidas.
        1. Haga clic en Agregar clave
          1. Clave : ubicación
          2. Tipo de datos : cadena
          3. Requerido : Verdadero
        2. Haga clic en Agregar clave
          1. Clave : marca de tiempo
          2. Tipo de datos : entero
          3. Requerido : Verdadero
        3. Haga clic en Agregar clave
          1. Clave: clave
          2. Tipo de datos : cadena
          3. Requerido : Verdadero
    5. Proporcione un cuerpo de respuesta de API de muestra. Salesforce genera una estructura de datos a partir de la respuesta de muestra.
      1. Vaya a la sección Proporcione una respuesta de muestra .
      2. Haga clic en Nuevo .
      3. Pegue una respuesta JSON de muestra .
         { "timeZoneName": "cadena de muestra", "compensación sin procesar": 1, "timeZoneId": "cadena de muestra", "errorMessage": "cadena de muestra", "dstOffset": 1, "estado": "cadena de muestra"
        }

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2023/06/29/salesforce-and-googles-time-zone-api-integration-translating-coordinates-into-time-zone-info-2/

    Categories
    Developers Tutoriales de Salesforce

    Herramientas para desarrolladores desde cero (Parte 1 de 2) ☁️

    Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

    El enlace a la publicación original, lo encontrarás al final de este artículo.

    Herramientas para desarrolladores desde cero (Parte 1 de 2) | Blog de desarrolladores de Salesforce

    Tanto si es un nuevo desarrollador que acaba de empezar su carrera en el ecosistema de Salesforce como si es un desarrollador experimentado de Salesforce que aún no se ha cambiado a nuestras nuevas herramientas para desarrolladores, esta serie de publicaciones de blog es para usted. Le mostraremos cómo configurar y utilizar las herramientas que pueden ayudar a todos los desarrolladores de Salesforce a ser mucho más productivos y felices.

    Antes de que empieces

    Si es nuevo en Salesforce y no tiene una organización (instancia de Salesforce) disponible para practicar, regístrese en una organización Developer Edition . Es completamente gratis y tiene la mayoría de las funciones de Salesforce preinstaladas para que pruebe y aprenda. Deberá proporcionar un nombre de usuario en forma de dirección de correo electrónico, pero no es necesario que sea uno real. Es solo un nombre de usuario que debe ser único en todos los productos de Salesforce. Después de solicitar una organización, recibirá un correo electrónico con los pasos para iniciar sesión. Tome nota del nombre de usuario de la organización que proporcionó, ya que tendrá que usarlo más adelante.

    Si es un desarrollador de Salesforce establecido y un usuario de Developer Console, este es el momento adecuado para adoptar las nuevas herramientas de desarrollador. Si bien Developer Console puede ser una forma rápida de cambiar algunas líneas de código, usar las herramientas más modernas cambiará las reglas del juego, ya que incluyen un montón de capacidades que simplificarán su trabajo. Usar las nuevas herramientas requiere un cambio de hábitos al principio, pero te prometo que muy pronto entenderás sus beneficios. Además, tenga en cuenta que ya no estamos invirtiendo en Developer Console, y problemas como la falta de soporte para Lightning Web Components son algo que no abordaremos.

    Instalación de las herramientas de desarrollador

    Los metadatos de su organización están en la nube, pero para desarrollarse de una manera más productiva, desarrollará localmente. El modus operandi será trabajar con los metadatos en su máquina local y sincronizarlos con su organización, lo que significa recuperarlos o implementarlos cuando sea necesario.

    Una alternativa al desarrollo local es usar Code Builder (Beta) , un IDE basado en web que puede iniciar desde su organización y que tiene las herramientas de desarrollador instaladas. Sin embargo, en este blog, nos centraremos en el flujo de trabajo de desarrollo local.

    El primer paso es instalar las siguientes herramientas en su máquina:

    • CLI de Salesforce : esta es la herramienta de interfaz de línea de comandos que utilizará para escribir comandos para mover su código entre su entorno local y su organización, ejecutar pruebas, implementar datos de muestra y mucho más. Si no le gusta escribir comandos en una terminal, no tema, ya que tenemos opciones alternativas como se describe en esta publicación de blog.
    • Código VS : este es el IDE que usará para desarrollar en su máquina local.
    • Java : algunas funciones en las extensiones de Salesforce para VS Code dependen de la plataforma Java, kit de desarrollo de edición estándar (JDK). Instálelo siguiendo las instrucciones vinculadas.
    • Extensiones de Salesforce para VS Code : Este es un grupo de extensiones de VS Code que aumentan las capacidades de VSCode, exponiendo la mayoría de los comandos de la CLI de Salesforce en la interfaz de usuario de VS Code, para que pueda ejecutarlos con clics. Las extensiones también agregan funciones para habilitar la depuración, facilitar las pruebas, permitirle explorar los metadatos en su organización y más.

    Creación de un proyecto de Salesforce DX

    Cuando trabaja con los metadatos de una organización localmente, los archivos de metadatos deben almacenarse en una carpeta de proyecto, siguiendo una estructura determinada. Eso es lo que llamamos un proyecto de Salesforce DX.

    Una vez instaladas las herramientas para desarrolladores, puede continuar y crear un proyecto de Salesforce DX que luego conectará a su organización. Una forma de hacerlo es escribir un comando que utilice la CLI de Salesforce para crear el proyecto. Puede escribir ese comando en una terminal normal.

    sf project generate -n myProject

    Nota: la CLI de Salesforce contiene dos ejecutables, sfdx y sf . En este blog, escribiremos los comandos utilizando el ejecutable y la sintaxis más modernos, que es sf .

    El indicador -n indica el nombre del proyecto. La CLI de Salesforce aplicará scaffolding a un proyecto en una carpeta con ese nombre. Una vez que se crea el proyecto, puede abrirlo en VS Code, con File → Open Folder .

    Gracias a las extensiones de Salesforce para VS Code, existe una forma sin escribir para ejecutar los comandos de la CLI de Salesforce. Simplemente abra la paleta de comandos de VS Code con View → Command Palette y escriba SFDX para ver todos los comandos disponibles. También podríamos haber creado el proyecto con SFDX: Create Project en lugar de escribir el comando.

    Autorizar y establecer una organización como predeterminada

    Una vez que su proyecto esté configurado, el siguiente paso es autorizar la CLI de Salesforce para que funcione con su organización. Comencemos esta vez con la forma de hacerlo sin escribir. Cuando abra el proyecto por primera vez, simplemente haga clic en el botón Sin conjunto de organizaciones predeterminado y aparecerá la paleta de comandos, sugiriendo que autorice una organización. Proceda siguiendo las instrucciones del comando.

    Otra forma de hacerlo es ejecutar un comando CLI de Salesforce. Esta vez, y de ahora en adelante, le recomiendo que use el terminal integrado de VS Code para ejecutar comandos, ya que tener todas las herramientas en la misma pantalla reduce el cambio de contexto. Puede abrirlo en Terminal → New Terminal .

    El comando CLI de Salesforce utilizado para autorizar una organización es:

    sf org login web -s

    Luego, siga las instrucciones dadas por el comando. El indicador -s configurará esa organización como su organización predeterminada para este proyecto. Puede ver la organización predeterminada de su proyecto en la barra inferior de VS Code.

    Todos los comandos de la CLI de Salesforce tienen varios indicadores disponibles. Por ejemplo, si desea conectarse a una zona de pruebas, puede pasar la URL de la instancia de la zona de pruebas a sf org login web usando -r . Para ver la ayuda del comando y todos sus indicadores disponibles, ejecute el comando agregando --help al final.

    Cuando trabaja con varias organizaciones, será común autorizar la CLI de Salesforce con varias organizaciones. Puede ver las organizaciones a las que la CLI de Salesforce tiene autorización para acceder ejecutando sf org list . Puede cambiar la organización predeterminada de un proyecto haciendo clic en el nombre de la organización en la barra inferior de VS Code, como hicimos para autorizar por primera vez, o ejecutando:

    sf config set target-org=your-org-username@sf.com

    Permítanme compartir con ustedes un último consejo. Las organizaciones pueden tener alias. Esto es útil cuando no desea recordar nombres de usuario largos o complejos. Para establecer un alias, escriba el siguiente comando.

    sf alias set myalias=your-org-username@sf.com

    Cuando se establece un alias, puede utilizar el alias en lugar del nombre de usuario de la organización en cualquiera de los comandos de la CLI de Salesforce.

    Implementación de metadatos en la organización

    Una vez que la CLI de Salesforce y su IDE estén autorizados con su organización, y la organización esté configurada como la organización predeterminada para su proyecto, puede comenzar a desarrollar e implementar cambios. Por ejemplo, digamos que queremos crear una clase de Apex. Puede crear el archivo de metadatos que representa la clase de Apex manualmente en la carpeta classes . Sin embargo, es mucho más efectivo crear la clase desde la paleta de comandos.

    También puede crear una clase escribiendo el siguiente comando de la CLI de Salesforce:

    sf apex generate class -n myClass -d force-app/main/default/classes

    Una vez que su clase esté lista para implementarse en su organización, hay varias formas de hacerlo. Una forma es especificar los metadatos en el comando.

    sf project deploy start -m ApexClass

    Una segunda forma es especificar una carpeta para implementar.

    sf project deploy start -p force-app/main/default/classes

    Y una tercera forma, disponible gracias a Salesforce Extensions for VS Code, es hacer clic con el botón derecho en el archivo y hacer clic en Deploy This Source to Org .

    Todas esas opciones le permiten ejecutar las implementaciones usted mismo. Si desea automatizar este paso e implementar un archivo cada vez que se guarda, puede establecer la configuración Implementar al guardar VS Code en "Verdadero" y ahorrar algo de tiempo.

    Cuando se implementan sus metadatos, normalmente querrá abrir su organización para realizar pruebas. Puede iniciar sesión utilizando su navegador como de costumbre. Pero para los desarrolladores, es más eficiente hacer clic en el botón de abrir organización en la barra inferior de VS Code.

    Conclusión

    En esta publicación de blog, aprendió cómo obtener una organización gratuita para el desarrollo y cómo instalar las herramientas de desarrollo que todo desarrollador de Salesforce debería usar hoy. Ha entendido cómo crear un proyecto y autorizarlo con su organización y, por último, cómo implementar metadatos mediante la CLI de Salesforce o VS Code. En la Parte 2 de esta serie, aprenderá cómo recuperar metadatos, trabajar con organizaciones con seguimiento de origen y usar bibliotecas de Node para cuidar la calidad de su código. Además, compartiremos otras gemas ocultas de las extensiones de Salesforce para VS Code. Si te gusta un formato de video, mira nuestro episodio de codeLive . Y si tiene preguntas, no dude en hacerlas en Salesforce Developers Trailblazer Community . ¡Estén atentos para la segunda publicación de blog de esta serie mañana!

    Sobre el Autor

    Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .

    Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.

    Agregar a Slack Suscríbete a RSS

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2023/05/developer-tooling-from-scratch-part-1-of-2.html

    Categories
    Developers

    Agregar productos automáticamente a la nueva oportunidad

    Última actualización el 30 de marzo de 2022 por Rakesh Gupta

    Gran idea o pregunta duradera:

    ¿Cómo agrega automáticamente productos a una nueva oportunidad?

    Objetivos:

    Esta publicación de blog nos ayudará a comprender lo siguiente

    • Usar el generador de flujo de Salesforce para asignar automáticamente el producto a una oportunidad
    • Use obtener elementos para evitar la codificación rígida de Id.
    • Funciona con el libro de precios y la entrada del libro de precios.
    • y mucho más

    Martin Jones trabaja como administrador de sistemas en Gurukul on Cloud (GoC) . Ha creado un proceso utilizando Process Builder para asignar automáticamente Pricebook a una nueva oportunidad en función de los tipos de registro, como se menciona a continuación:

    • Si el tipo de registro de Oportunidad es Fabricación , asigne un libro de precios Fabricación
    • Si el tipo de registro de Oportunidad es Minorista , asigne un libro de precios Minorista

    Funciona bien y los representantes de ventas están contentos. Sin embargo, Martin recibió otro requisito del vicepresidente de ventas : cuando se agrega el libro de precios de fabricación a una oportunidad recién creada , se le agregan automáticamente los siguientes productos :

    • iPhone 13 Plus – Cantidad (3) – Precio de venta ($0)

    Enfoque de Campeón de Automatización (I-do):

    Una vez que los representantes de ventas crean una nueva oportunidad, el siguiente paso es agregarle el libro de precios y los productos. Los productos son bienes o servicios físicos que vendes a los clientes. Sus representantes de ventas pueden usar productos para generar cotizaciones de ventas, contratos o pedidos.
    Price Book es un catálogo en el que se enumera el precio de venta regular de los productos. Los libros de precios se utilizan para vender productos a diferentes precios según la geografía , el volumen, los contratos gubernamentales, los clientes sin fines de lucro, los clientes estratégicos, etc. En Salesforce , un producto se puede asociar con varios Libros de precios y un Libro de precios puede tener varios productos.
    ¡Sí! ¡Tienes razón! Esto requiere un objeto Junction. ¡Y he aquí que tenemos uno conocido como Price Book Entry ! Price Book Entry es un objeto de unión entre Product y Price Book , como se muestra en la siguiente captura de pantalla:

    Este blog es una continuación de mi blog anterior: asignación automática de Pricebook según el tipo de registro de oportunidad .

    En el blog anterior, discutí cómo asignar automáticamente el libro de precios según el tipo de registro de Oportunidad . Recibí toneladas de solicitudes para escribir otro blog sobre cómo agregar algunos productos predeterminados a la nueva oportunidad.

    ¡Asi que aqui esta! El requisito es interesante. Entonces, crearemos una solución para el requisito existente, ¡usando Salesforce Flow!

    Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar . Consulte este artículo para comprender por qué estamos utilizando el flujo desencadenado por registro posterior al guardado para este escenario.
    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.

    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 2 pasos para resolver el requisito empresarial de Martin mediante Record-Triggered Flow . Debemos:

    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Fórmula para determinar si la oportunidad se crea o actualiza
    3. Agregue un elemento de decisión para verificar el libro de precios asociado en la oportunidad
    4. Agregue un elemento Obtener registros para encontrar la entrada del libro de precios para iPhone 13 Plus
    5. Agregue un elemento de decisión para verificar si se encontró o no la entrada del libro de precios para iPhone 13 Plus
    6. Agregue un elemento de creación de registros para agregar un producto a la oportunidad

    Paso 1: Definir propiedades de flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en Nuevo flujo .
    4. Seleccione el flujo activado por registro y haga clic en Crear y configure el flujo de la siguiente manera:
      1. Objeto : Oportunidad
      2. Activar el flujo cuando : se crea o actualiza un registro
      3. Establecer criterios de entrada
        1. Requisitos de condición: Ninguno
      4. Optimice el flujo para la acción y los registros relacionados
    5. Haga clic en Listo .

    Paso 2: fórmula para determinar si el usuario está creado o actualizado

    1. En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para determinar si el registro se crea o actualiza.
    2. Ingrese la siguiente información :
      1. Tipo de recurso : Fórmula
      2. Nombre de API : forB_IsNew
      3. Tipo de datos : booleano
      4. Fórmula : EsNuevo()
    3. Haga clic en Listo .

    Paso 3: uso del elemento de decisión para verificar la lista de precios asociada en la oportunidad

    Ahora usaremos el elemento Decisión para verificar si el libro de precios de fabricación está asociado a una oportunidad.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso : {!forB_IsNew}
        2. Operador : Igual
        3. Valor : {!$ConstanteGlobal.Verdadero}
      2. Haga clic en Agregar condición
      3. Fila 2:
        1. Recurso: {!$Record.PriceBook2Id}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
      4. Haga clic en Agregar condición
      5. Fila 3:
        1. Recurso: {!$Record.PriceBook2.Name}
        2. Operador: Igual
        3. Valor: Fabricación
    5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 4: Adición de un elemento Obtener registro para encontrar el ID de entrada del libro de precios del iPhone 13 Plus

    El siguiente paso es usar el elemento Obtener registros para encontrar el ID de entrada del libro de precios del iPhone 13 Plus.

    1. En Flow Designer, debajo del nodo Fabricación , haga clic en el icono + y seleccione el elemento Obtener registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Seleccione el objeto Entrada de libro de precios de la lista desplegable.
    4. Seleccione Se cumplen todas las condiciones (Y) .
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo : Pricebook2Id
        2. Operador : Igual
        3. Valor : {!$Record.PriceBook2Id}
      2. Haga clic en Agregar condición
      3. Fila 2:
        1. Campo: Nombre
        2. Operador: Igual
        3. Valor: iPhone 13 Plus
    6. Cuántos registros almacenar:
      1. seleccione Solo el primer registro
    7. Cómo almacenar datos de registro:
      1. Elija la opción para Almacenar automáticamente todos los campos .
    8. Haga clic en Listo .

    Paso 5: usar el elemento de decisión para verificar si se encontró o no la entrada del libro de precios del iPhone 13 Plus  

    Ahora usaremos el elemento Decisión para verificar la variable de registro del paso 4 para encontrar si devuelve el Id. de entrada del libro de precios o no.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!Find_Pricebook_Entry}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
    5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 6: agregue el elemento Crear registros para agregar el producto a la oportunidad

    El paso final es agregar el producto iPhone 13 Plus a la oportunidad. Para ello utilizaremos el elemento Create Records .

    1. En Flow Designer, debajo del nodo , haga clic en el icono + y seleccione el elemento Crear registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Ingrese la siguiente información :
      1. Cuántos registros crear : uno
      2. Cómo establecer los campos de registro : use recursos separados y valores literales
      3. Objeto : Producto de oportunidad
      4. Establecer valores de campo para la licencia del paquete de usuario
      5. Fila 1:
        1. Campo : ID de oportunidad
        2. Valor : {!$Record.Id}
      6. Haga clic en Agregar campo
      7. Fila 2:
        1. Campo : Cantidad
        2. Valor : 3
      8. Haga clic en Agregar campo
      9. Fila 3:
        1. Campo : PricebookEntryId
        2. Valor : {!Find_Pricebook_Entry.Id}
      10. Haga clic en Agregar campo
      11. Fila 4:
        1. Campo : PrecioUnitario
        2. Valor : 0
    4. Haga clic en Listo .

    Al final, Martin's Flow se verá como la siguiente captura de pantalla:

    Una vez que todo se vea bien, realice los siguientes pasos:

    1. Haga clic en Guardar .
    2. Ingrese la etiqueta de flujo , el nombre de la API se completará automáticamente.
    3. Haga clic en Mostrar avanzado .
    4. Versión de API para ejecutar el flujo : 54
    5. Etiqueta de entrevista : Agregar producto automáticamente a la oportunidad {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar .

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    Prueba de concepto

    De ahora en adelante, si un usuario comercial crea una Oportunidad con el tipo de registro Fabricación , Salesforce Flow agregará automáticamente el libro de precios y los productos.

    1. Navegar a la Oportunidad   y cree una nueva oportunidad para el tipo de registro Fabricación .
    2. Una vez hecho esto, haga clic en Guardar   botón. El flujo agregará automáticamente el libro de precios y los productos predeterminados, como se muestra en la siguiente captura de pantalla:

    Evaluación formativa:

    ¡Quiero saber de ti!

    ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/03/30/automatically-add-products-to-new-opportunity-2/

    Categories
    Developers Salesforce

    ¡Elimine automáticamente la licencia del paquete administrado de un usuario desactivado!

    Última actualización el 29 de marzo de 2022 por Rakesh Gupta

    Salesforce Flow es una manera fantástica de automatizar varios procesos comerciales . Le permite crear un flujo basado en ciertos criterios que establezca. El flujo de Salesforce puede hacer muchas cosas: crear un registro , actualizar registros , publicar en Chatter , enviar un correo electrónico, etc.

    Hace unos años, en septiembre de 2015, escribí un artículo Asignación automática de licencias de paquetes a nuevos usuarios para mostrar cómo se pueden asignar automáticamente licencias de paquetes administrados a nuevos usuarios .  

    La abrumadora respuesta positiva fue seguida por solicitudes: ¡escribir otro blog que muestre cómo eliminar automáticamente la licencia del paquete administrado de los usuarios desactivados! A continuación se muestra uno de los correos electrónicos de muestra, de un caballero a quien no conozco, pero me gustaría agradecer por hacer la solicitud. ¡Porque las solicitudes e ideas de los lectores de mi blog han contribuido enormemente a mi dominio de la plataforma Salesforce!

     Estoy buscando una manera de eliminar automáticamente los miembros de un paquete instalado cuando desactivo su cuenta de usuario. Actualmente, tengo que eliminar el Usuario; luego elimínelos del paquete instalado. ¿Hay alguna forma a través de PB y/o Flow? Me gustaría un proceso de eliminación automatizado que capture todas las asociaciones. Gracias,
    erin ryan

    En esta publicación de blog, le mostraré cómo aprovechar el flujo de Salesforce para eliminar automáticamente las licencias de paquetes administrados de los usuarios desactivados. Comencemos con un caso de uso empresarial.

    Martin Jones trabaja como administrador de sistemas en Gurukul on Cloud (GoC) . En GoC están utilizando Conga Composer para optimizar y escalar su proceso de generación de documentos. Martin recibió un requisito de la administración para eliminar automáticamente las licencias de paquetes administrados tan pronto como se desactive la cuenta de un usuario.

    Solución para el requisito comercial anterior

    Antes de continuar, primero reflexionemos: ¿por qué necesitamos automatizar este proceso en primer lugar? En AppExchange , los proveedores de aplicaciones usan paquetes administrados, en parte, para ocultar el código y la lógica de implementación a los clientes. Otro beneficio de un paquete administrado es que los proveedores de aplicaciones pueden enviar fácilmente actualizaciones a la organización de sus clientes de una sola vez.

    Cuando la cuenta de un usuario se desactiva en Salesforce, su licencia de Salesforce se libera y está disponible para reasignación. Este no es el caso con respecto a la licencia de paquete administrado del usuario desactivado. A pesar de estar desactivada, la licencia del paquete administrado de un usuario no se elimina automáticamente de su cuenta; el administrador del sistema debe eliminar manualmente la licencia del paquete administrado de la cuenta del usuario desactivado.

    Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar . Consulte este artículo para comprender por qué estamos utilizando el flujo desencadenado por registro posterior al guardado para este escenario.

    Hagamos una pausa aquí, familiarícese con los objetos UserPackageLicense y los objetos PackageLicense en Salesforce.

    Nombre del objeto Detalles
    Licencia de paquete de usuario Representa una licencia de un paquete administrado instalado, asignado a un usuario específico.
    PaqueteLicencia Representa una licencia de un paquete administrado instalado.

    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.

    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 5 pasos para resolver el requisito de negocio de Martin utilizando Record-Triggered Flow . Debemos:

    1. Flujo desencadenado por registro clonado creado en Asignación automática de licencia de paquete a nuevos usuarios
    2. Agregue un ORDEN DE RESULTADO en el elemento de decisión para verificar si la cuenta de usuario ha sido desactivada
    3. Agregue un elemento de obtención de registros para encontrar licencias de paquetes de administración asignadas
    4. Agregue un elemento de decisión para verificar si se encontró o no la licencia del paquete de administración
    5. Agregue un elemento de eliminación de registros para eliminar administrar licencias de paquetes

    Paso 1: clonar un flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en el Nombre del flujo   que será modificado. En este caso Asignar Licencia de Paquete Conga.
    4. Haga clic en el botón Guardar como en la parte superior derecha del generador de flujo.
    5. Una vez que haya terminado, haga clic en el botón Guardar .

    Paso 2: agregue una ORDEN DE RESULTADO en el elemento de decisión para verificar el estado de la cuenta de usuario

    Ahora usaremos el elemento Decisión para verificar si el usuario ha sido desactivado.

    1. Haga clic en el elemento Elemento de decisión creado o actualizado .
    2. Agregue un nuevo ORDEN DE RESULTADO haciendo clic en el icono + .
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!$Record.IsActive}
        2. Operador: Igual
        3. Valor: {!$ConstanteGlobal.Falso}
    5. Cuándo ejecutar el resultado : sólo si el registro que activó la ejecución del flujo se actualiza para cumplir con los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 3: Adición de un elemento Obtener registro para buscar licencias de paquete de administración asignadas

    La siguiente tarea es verificar si una licencia de paquete administrado está asignada al usuario. Para ello, utilizaremos el elemento Obtener Registros .

    1. En Flow Designer, debajo del nodo Cuenta de usuario desactivada , haga clic en el icono + y seleccione el elemento Obtener registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Seleccione el objeto Licencia de paquete de usuario de la lista desplegable.
    4. Seleccione Se cumplen todas las condiciones (Y) .
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo : ID de usuario
        2. Operador : Igual
        3. Valor : {!$Record.Id}
    6. Cuántos registros almacenar:
      1. seleccione Todos los registros
    7. Cómo almacenar datos de registro:
      1. Elija la opción para Almacenar automáticamente todos los campos .
    8. Haga clic en Listo .

    Paso 4: uso del elemento de decisión para verificar si se encontró o no la licencia de Manage Package (del paso 3)

    Ahora usaremos el elemento Decisión para verificar la Variable de recopilación de registros del paso 4 para encontrar si alguna licencia de paquete administrado está asignada al usuario o no.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!Get_User_Package_License}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
      2. Haga clic en Listo .

    Paso 5: agregue el elemento Eliminar registros para eliminar las licencias de paquete de administración asignadas

    El paso final es agregar un elemento Eliminar registros para eliminar la licencia del paquete asignado del usuario.

    1. En Flow Designer, debajo del nodo Paquete de licencia encontrado , haga clic en el ícono + y seleccione el elemento Eliminar registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Ingrese la siguiente información :
      1. Cómo encontrar un registro para eliminar : use los ID almacenados en una variable de registro o una variable de colección de registros
      2. Seleccionar registro(s) para eliminar
        1. Registro o colección de registros : {!Get_User_Package_License}
    4. Haga clic en Listo .

    Al final, Martin's Flow se verá como la siguiente captura de pantalla:

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    Prueba de concepto

    1. En primer lugar, navegue hasta el paquete instalado y verifique las licencias utilizadas para varias aplicaciones, como se muestra a continuación:
    2. Ahora, desactive la cuenta de un usuario a quien haya asignado la licencia del paquete administrado Conga Composer y DocuSign para Salesforce. Para una prueba de concepto, consulte el siguiente video:

    Evaluación formativa:

    ¡Quiero saber de ti! ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/03/29/auto-remove-managed-package-license-from-a-deactivated-user-2/

    Categories
    Developers Salesforce

    Licencia de paquete de asignación automática a nuevos usuarios

    Última actualización el 17 de marzo de 2022 por Rakesh Gupta

    Gran idea o pregunta duradera:

    • ¿Cómo puede asignar automáticamente una licencia de paquete administrado a nuevos usuarios?

    Objetivos:

    Después de leer esta publicación de blog, el lector podrá:

    • Use Flow para agregar automáticamente una licencia de paquete a nuevos usuarios
    • Use el elemento obtener registros para evitar el código duro de Id.
    • Utilice el elemento de decisión para validar los datos
    • Comprender cómo usar Flow para crear registros

    Pamela Kline trabaja como Administradora de sistemas en Universal Containers (UC). Están utilizando Conga Composer para optimizar y escalar su proceso de generación de documentos. Ha recibido un requisito de la gerencia para asignar automáticamente la licencia de Conga Composer a los nuevos usuarios. Lo que les ayuda a minimizar las actividades manuales posteriores a la creación de usuarios.

    Enfoque de Campeón de Automatización (I-do):

    Hace unos meses , había escrito un artículo Agregar automáticamente un usuario a un grupo de Chatter para discutir una forma a través de la cual puede agregar automáticamente nuevos usuarios a un grupo de Chatter . Para lograrlo , utilizamos Salesforce Flow .

    Recibí muy buenos comentarios de todos ustedes y algunos de ellos solicitaron que explicaran cómo pueden automatizar el proceso de asignación de licencias de paquetes. En esta publicación de blog, explicaré cómo configurar un Flujo de Salesforce para automatizar el proceso de asignación de licencias de paquetes.

    Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar . Consulte este artículo para comprender por qué estamos utilizando el flujo desencadenado por registro posterior al guardado para este escenario.

    Hagamos una pausa aquí, familiarícese con los objetos UserPackageLicense y los objetos PackageLicense en Salesforce.

    Nombre del objeto Detalles
    Licencia de paquete de usuario Representa una licencia de un paquete administrado instalado, asignado a un usuario específico.
    PaqueteLicencia Representa una licencia de un paquete administrado instalado.

    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.


    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 6 pasos para resolver el requisito empresarial de Pamela mediante el flujo activado por registro . Debemos:

    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Fórmula para determinar si el usuario es creado o actualizado
    3. Agregue un elemento de decisión para verificar el resultado de la fórmula anterior
    4. Agregue un elemento de obtención de registros para encontrar el ID de licencia del paquete Conga Composer
    5. Agregue un elemento de decisión para verificar si se encontró o no la licencia de Conga Composer
    6. Agregue un elemento de creación de registros para asignar la licencia del paquete al nuevo usuario

    Paso 1: Definir propiedades de flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en Nuevo flujo .
    4. Seleccione el flujo activado por registro y haga clic en Crear y configure el flujo de la siguiente manera:
      1. Objeto : Usuario
      2. Activar el flujo cuando : se crea o actualiza un registro
      3. Establecer criterios de entrada
        1. Requisitos de condición: Ninguno
      4. Optimice el flujo para la acción y los registros relacionados
    5. Haga clic en Listo .

    Paso 2: fórmula para determinar si el usuario está creado o actualizado

    1. En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para determinar si el registro es nuevo o antiguo.
    2. Ingrese la siguiente información :
      1. Tipo de recurso : Fórmula
      2. Nombre de API : forB_IsNew
      3. Tipo de datos : booleano
      4. Fórmula : EsNuevo()
    3. Haga clic en Listo .

    Paso 3: uso del elemento de decisión para verificar si el usuario está activo y recién creado

    Ahora usaremos el elemento Decisión para comprobar si el usuario acaba de configurarse y está activo.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!$Record.IsActive}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.True}
      2. Añadir condición
      3. Fila 2
        1. Recurso : {!forB_IsNew}
        2. Operador : Igual
        3. Valor : {!$ConstanteGlobal.Verdadero}
    5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 4: Adición de un elemento Obtener registro para encontrar el ID de licencia del paquete Conga Composer

    El siguiente paso es utilizar el elemento Obtener registros para obtener el Id. del paquete instalado de Conga Composer.

    1. En Flow Designer, debajo del nodo Creado , haga clic en el icono + y seleccione el elemento Obtener registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Seleccione el objeto Licencia de paquete de registro de la lista desplegable.
    4. Seleccione Se cumplen todas las condiciones (Y) .
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo: Prefijo de espacio de nombres
        2. Operador: Igual
        3. Valor: APXTConga4
    6. Cuántos registros almacenar:
      1. seleccione Solo el primer registro
    7. Cómo almacenar datos de registro:
      1. Elija la opción para Almacenar automáticamente todos los campos .
    8. Haga clic en Listo .

    Para encontrar el prefijo de espacio de nombres de los paquetes instalados, vaya a Configuración | Aplicaciones | Embalaje | Paquetes instalados , como se muestra en la siguiente captura de pantalla:

    Prefijo de espacio de nombres

    <img data-attachment-id="7094" data-permalink="https://automationchampion.com/2022/03/17/auto-assign-package-license-to-new-users/namespace-prefix/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2015/09/namespace-prefix.png?fit=1126%2C436&ssl=1" data-orig-size="1126,436" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Namespace Prefix" data-image-description="

    Namespace Prefix

    » data-image-caption=»

    Namespace Prefix

    » data-medium-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2015/09/namespace-prefix.png?fit=300%2C116&ssl=1″ data-large-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2015/09/namespace-prefix.png?fit=640%2C248&ssl=1″ loading=»lazy» class=»aligncenter wp-image-7094 size-full» src=»https://discover.egafutura.com/wp-content/uploads/2022/03/licencia-de-paquete-de-asignacion-automatica-a-nuevos-usuarios-10.png» alt=»Prefijo de espacio de nombres» width=»640″ height=»248″ data-recalc-dims=»1″>

    Paso 5: uso del elemento de decisión para verificar si se encontró o no la licencia de Conga Composer (del paso 4)

    Ahora usaremos el elemento Decisión para verificar la variable de registro del paso 4 para encontrar si devuelve la identificación de la licencia del paquete o no.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!Conga_Composer_Package_License_Id}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
      2. Haga clic en Listo .

    Paso 6: agregue el elemento Crear registros para asignar la licencia del paquete a los nuevos usuarios

    El último paso es asignar la licencia del paquete Conga a los nuevos usuarios.

    1. En Flow Designer, debajo del nodo Licencia encontrada , haga clic en el icono + y seleccione el elemento Crear registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Ingrese la siguiente información :
      1. Cuántos registros crear : uno
      2. Cómo establecer los campos de registro : use recursos separados y valores literales
      3. Objeto : Licencia de paquete de usuario
      4. Establecer valores de campo para la licencia del paquete de usuario
      5. Fila 1:
        1. Campo : Id . de licencia del paquete
        2. Valor : {!Conga_Composer_Package_License_Id.Id}
      6. Haga clic en Agregar campo
      7. Fila 2:
        1. Campo : ID de usuario
        2. Valor : {!$Record.Id}
    4. Haga clic en Listo .

    Al final, Pamela's Flow se verá como la siguiente captura de pantalla:


    Una vez que todo se vea bien, realice los siguientes pasos:
    1. Haga clic en Guardar .
    2. Ingrese la etiqueta de flujo , el nombre de la API se completará automáticamente.
    3. Haga clic en Mostrar avanzado .
    4. Versión de API para ejecutar el flujo : 54
    5. Etiqueta de entrevista : Asignar licencia de paquete de Conga {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar .

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    Prueba de concepto

    A partir de ahora, cuando se crea una cuenta de usuario, Salesforce Flow se activará automáticamente y agregará una licencia de paquete ( Conga Composer ) al usuario recién creado. Vamos a probarlo.

    1. Ahora cree un nuevo usuario a través de la interfaz de usuario
    2. Una vez que se crea el usuario, nuestra automatización asignará automáticamente la licencia del paquete al usuario recién creado . Para validar Puede consultar el objeto Licencia del paquete de usuario o navegar a Configuración | Aplicaciones | Embalaje | Paquetes Instalados | Compositor de congas | Administrar Licencias.

    Evaluación formativa:

    ¡Quiero saber de ti!

    ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/03/17/auto-assign-package-license-to-new-users/

    Categories
    Developers Salesforce

    Agregar usuario de socio automáticamente al grupo público

    Última actualización el 11 de marzo de 2022 por Rakesh Gupta

    Gran idea o pregunta duradera:

    ¿Cómo agrega automáticamente usuarios asociados a un grupo público?

    Esta es una continuación de mi último artículo Primeros pasos con Process Builder – Parte 56 (Creación automática de un grupo público para una cuenta nueva) . En mi artículo anterior, había discutido un caso de uso, cada vez que una cuenta está habilitada como cuenta de socio, luego crea automáticamente un grupo público para ella. Este artículo va un paso más allá y explica cómo alguien utiliza el flujo de Salesforce para agregar usuarios de socios de esa cuenta al grupo público automáticamente.

    Objetivos:

    Después de leer este artículo, el lector podrá:

    • Agregue automáticamente los usuarios asociados recién creados a un grupo público
    • Cómo referir una etiqueta personalizada en el flujo de iluminación
    • Cómo usar un elemento de decisión para buscar: la variable de registro o la variable de colección de registros contiene un registro o no

    Donna Serdula trabaja como administradora de sistemas en Universal Containers (UC). Acaban de implementar una comunidad de socios para administrar mejor el trabajo relacionado de sus socios en un solo lugar y ayudarlos a vender más. Como parte del proceso de incorporación de socios, una vez que ambas partes firman el contrato, el siguiente paso es crear cuentas y contactos de socios en Salesforce que les otorgarán acceso a la comunidad de socios. Actualmente, en Universal Containers tienen pocos procesos manuales que quieren automatizar, los cuales se mencionan a continuación:

    • Como parte del proceso de incorporación de socios, el administrador del sistema en Universal Containers crea manualmente un grupo público (número de cuenta para nombre y nombre de desarrollador) para cada cuenta de socio. ( Blog del Generador de Procesos 56 )
    • Luego, agregue usuarios asociados de esa cuenta al grupo público creado en el paso anterior. ( Blog de flujo de Salesforce 102 )

    Enfoque de Campeón de Automatización (I-do):

    Voy a explicar la solución para el segundo requisito en este artículo. Blog 56 se refiere a la solución al primer requisito. Hay un par de soluciones posibles para el segundo escenario empresarial .

    Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar . Consulte este artículo para comprender por qué estamos utilizando el flujo desencadenado por registro posterior al guardado para este escenario.

    Hagamos una pausa aquí, familiarícese con el Grupo   y miembro del grupo   objetos en Salesforce.

    Nombre del objeto Detalles
    Grupo Representa un conjunto de registros de usuario. El grupo puede contener usuarios individuales, otros grupos, los usuarios en un rol o territorio particular, o los usuarios en un rol o territorio particular más todos los usuarios debajo de ese rol o territorio en la jerarquía.
    Miembro del grupo Representa a un Usuario o Grupo, que es miembro de un grupo público.

    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.

    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 6 pasos para resolver el requisito empresarial de Donna mediante Record-Triggered Flow . Debemos:

    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Fórmula para determinar si el usuario es creado o actualizado
    3. Agregue un elemento de decisión para verificar si el usuario ha completado el ID de cuenta
    4. Agregue un elemento de obtención de registro para encontrar el Id. de registro de grupo público
    5. Agregue un elemento de decisión para verificar la identificación del grupo público de la variable de registro (del paso 4)
    6. Agregue un elemento de creación de registros para agregar un usuario al grupo público

    Paso 1: Definir propiedades de flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en Nuevo flujo .
    4. Seleccione el flujo activado por registro y haga clic en Crear y configure el flujo de la siguiente manera:
      1. Objeto : Usuario
      2. Activar el flujo cuando : se crea o actualiza un registro
      3. Establecer criterios de entrada
        1. Requisitos de condición: Ninguno
      4. Optimice el flujo para la acción y los registros relacionados
    5. Haga clic en Listo .

    Paso 2: fórmula para determinar si el usuario está creado o actualizado

    1. En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para determinar si el registro es nuevo o antiguo.
    2. Ingrese la siguiente información :
      1. Tipo de recurso : Fórmula
      2. Nombre de API : forB_IsNew
      3. Tipo de datos : booleano
      4. Fórmula : EsNuevo()
    3. Haga clic en Listo .

    Paso 3: usar el elemento de decisión para verificar si el usuario tiene el identificador de cuenta completado

    Ahora usaremos el elemento Decisión para verificar si el ID de cuenta se completa en el usuario.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!$Record.AccountId}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
      2. Añadir condición
      3. Fila 2
        1. Recurso : {!forB_IsNew}
        2. Operador : Igual
        3. Valor : {!$ConstanteGlobal.Verdadero}
    5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
    6. Haga clic en Listo .

    Paso 4: Adición de un elemento Obtener registro para encontrar el ID de grupo público para la cuenta del usuario del socio

    El siguiente paso es encontrar el ID de grupo público para la cuenta de usuario del socio.

    1. En Flow Designer, debajo del nodo , haga clic en el icono + y seleccione el elemento Obtener registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Seleccione el objeto Grupo de registros de la lista desplegable.
    4. Seleccione Se cumplen todas las condiciones (Y) .
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Nombre del campo
        2. Operador: Igual
        3. Valor: {!$Record.Account.AccountNumber}
    6. Cuántos registros almacenar:
      1. seleccione Solo el primer registro
    7. Cómo almacenar datos de registro:
      1. Elija la opción para Almacenar automáticamente todos los campos .
    8. Haga clic en Listo .

    Paso 5: uso del elemento de decisión para comprobar el ID de grupo público de la variable de registro (del paso 4)

    Ahora usaremos el elemento Decisión para verificar la variable de registro del paso 4 para encontrar si devuelve la identificación del grupo público o no.

    1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
    4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {!Find_Public_Group}
        2. Operador: es nulo
        3. Valor: {!$ConstanteGlobal.Falso}
      2. Haga clic en Listo .

    Paso 6: agregue el elemento Crear registros para agregar un usuario de socio al grupo público

    El paso final es agregar usuarios de socios al grupo público, tan pronto como se active la cuenta de usuario de socios . Usaremos el elemento Create Records .

    1. En Flow Designer, debajo del nodo Grupo encontrado , haga clic en el icono + y seleccione el elemento Crear registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Ingrese la siguiente información :
      1. Cuántos registros crear : uno
      2. Cómo establecer los campos de registro : use recursos separados y valores literales
      3. Objeto : Miembro del grupo
      4. Establecer valores de campo para el miembro del grupo
      5. Fila 1:
        1. Fila 1:
          1. Campo : ID de grupo
          2. Valor : {!Find_Public_Group.Id}
        2. Agregue campo
        3. Fila 2
          1. Campo : UserOrGroupId
          2. Valor : {!$Record.Id}
    4. Haga clic en Listo .

    Al final, Donna's Flow se verá como la siguiente captura de pantalla:

    Una vez que todo se vea bien, realice los siguientes pasos:

    1. Haga clic en Guardar .
    2. Ingrese la etiqueta de flujo , el nombre de la API se completará automáticamente.
    3. Haga clic en Mostrar avanzado .
    4. Versión de API para ejecutar el flujo : 54
    5. Etiqueta de entrevista : activado por registro: usuario después de guardar {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar .

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    Prueba de concepto

    A partir de ahora, si un administrador del sistema crea un usuario de socio, Salesforce Flow lo activará y lo agregará automáticamente a su respectivo grupo público .

    1. Navegar a la cuenta   pestaña, luego abra una cuenta Grand Hotels & Resorts Ltd. Ya la he habilitado como cuenta de socio en mi último artículo Creación automática de un grupo público para una nueva cuenta . Grand Hotels & Resorts Ltd - Cuenta de socio
    2. La cuenta de socio Grand Hotels & Resorts Ltd tiene dos contactos, como se muestra en la captura de pantalla anterior. Ahora, voy a habilitar el contacto de Tom Barr como usuario asociado. Para hacer esto, abra el contacto de Tom Barr , haga clic en Administrar usuario externo y luego haga clic en Habilitar usuario de socio , como se muestra en la siguiente captura de pantalla: Habilitar contacto como usuario asociado
    3. Te redirigirá a la pantalla de configuración de nuevo usuario, desde donde puedes crear un nuevo usuario. Configurar nuevo usuario de socio
    4. Una vez hecho esto, haga clic en el botón Guardar n. Espere unos minutos y luego abra el grupo público CD439877 (Haga clic en Configuración | Administrar | Administrar usuarios | Grupos públicos ).

    Prueba de concepto

    <img data-attachment-id="8757" data-permalink="https://automationchampion.com/2022/03/11/automatically-add-partner-user-to-public-group-2/proof-of-concept-7/" data-orig-file="https://i0.wp.com/automationchampion.com/wp-content/uploads/2016/09/proof-of-concept.png?fit=1854%2C632&ssl=1" data-orig-size="1854,632" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Proof of concept" data-image-description="

    Proof of concept

    » data-image-caption=»

    Proof of concept

    » data-medium-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2016/09/proof-of-concept.png?fit=300%2C102&ssl=1″ data-large-file=»https://i0.wp.com/automationchampion.com/wp-content/uploads/2016/09/proof-of-concept.png?fit=640%2C218&ssl=1″ loading=»lazy» class=»aligncenter wp-image-8757 size-full» src=»https://discover.egafutura.com/wp-content/uploads/2022/03/agregar-usuario-de-socio-automaticamente-al-grupo-publico-21.png» alt=»Prueba de concepto» width=»640″ height=»218″ data-recalc-dims=»1″>

    Evaluación formativa:

    ¡Quiero saber de ti!

    ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/03/11/automatically-add-partner-user-to-public-group-2/

    Categories
    Developers

    Eliminación automática de publicaciones de Chatter generadas por el sistema

    Última actualización el 3 de marzo de 2022 por Rakesh Gupta

    Gran idea o pregunta duradera:

    ¿Cómo se eliminan las publicaciones de Chatter generadas por el sistema?

    Objetivos:

    Después de leer esta publicación de blog, el lector podrá:

    • Asigne el campo personalizado de cliente potencial al campo personalizado de cuenta
    • Crear un flujo activado por registro para eliminar registros
    • y mucho más

    Warren Mason trabaja como administrador de sistemas en Universal Containers (UC). Cuando convertimos el cliente potencial, aparece una publicación de chat automática en el feed de la cuenta, es decir, UserName convirtió un cliente potencial a esta cuenta, como se muestra en la siguiente captura de pantalla:

    Warren tiene el requisito de eliminar automáticamente dichas publicaciones generadas por el sistema al momento de la conversión de clientes potenciales.

    Enfoque de Campeón de Automatización (I-do):

    Salesforce Chatter es una excelente manera de impulsar la colaboración en su organización. Un usuario puede publicar estados , enlaces y archivos y comentar las publicaciones de otros. Sin embargo, muchas veces me he dado cuenta de que las personas buscan formas de eliminar las publicaciones de Chatter generadas por el sistema .

    Para resolver este requisito, utilizaremos el Flujo desencadenado por registro después de guardar . Consulte este artículo para comprender por qué estamos utilizando el flujo desencadenado por registro posterior al guardado para este escenario. Desglosemos la solución en los siguientes pasos para su comprensión:

    Antes de continuar, debe comprender la tabla Feed en Salesforce. Todos los objetos tienen un objeto Feed relacionado predeterminado.

    • Para los objetos personalizados, todas las fuentes se nombran como CustomObject__Feed , donde CustomObject__c es el nombre del objeto personalizado relacionado, como JobApplication_Feed .
    • Para los objetos estándar, todos los feeds se denominan ObjectFeed , donde Object es el nombre del objeto estándar relacionado, como LeadFeed .

    Ahora debe comprender el objeto mencionado a continuación en Salesforce:

    • AccountFeed : este objeto representa un solo elemento de fuente en la fuente que se muestra en la página de detalles para un registro de cliente potencial.

    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.

    Comencemos a construir este proceso de automatización.

    Práctica guiada (nosotros hacemos):

    Hay 4 pasos para resolver el requisito de negocio de Warren mediante Record-Triggered Flow . Debemos:

    1. Crear un campo de casilla de verificación personalizado en Lead
    2. Cree un campo de casilla de verificación personalizado en la cuenta
    3. Asignar campos de clientes potenciales personalizados para la conversión de clientes potenciales
    4. Pasos de flujo de Salesforce:
      1. Definir propiedades de flujo para el flujo desencadenado por registro
      2. Agregar una ruta programada
      3. Agregue un elemento de eliminación de registros para eliminar la publicación generada por el sistema

    Paso 1: crear un campo de casilla de verificación en un objeto de cliente potencial

    1. Haga clic en Configuración .
    2. En el Administrador de objetos, escriba Cliente potencial .
    3. Seleccione Campos y relaciones , luego haga clic en Nuevo .
    4. Seleccione Casilla de verificación como Tipo de datos, luego haga clic en Siguiente .
    5. Ingrese Etiqueta de campo y haga clic en la tecla de tabulación, se completará el nombre de la API .
    6. Como práctica recomendada, siempre ingrese una descripción .
    7. Valores predeterminados : marcado
    8. Configure la Seguridad a nivel de campo para los perfiles , asegúrese de configurar este campo como de solo lectura.
    9. No agregue este campo en el diseño de página .
    10. Haga clic en Guardar.

    Paso 2: crear un campo de casilla de verificación en el objeto de cuenta

    1. Haga clic en Configuración .
    2. En el Administrador de objetos, escriba Cuenta .
    3. Seleccione Campos y relaciones , luego haga clic en Nuevo .
    4. Seleccione Casilla de verificación como Tipo de datos, luego haga clic en Siguiente .
    5. Ingrese Etiqueta de campo y haga clic en la tecla de tabulación, se completará el nombre de la API .
    6. Como práctica recomendada, siempre ingrese una descripción .
    7. Valores predeterminados : Desmarcado
    8. Configure la Seguridad a nivel de campo para los perfiles , asegúrese de configurar este campo como de solo lectura.
    9. No agregue este campo en el diseño de página .
    10. Haga clic en Guardar.

    Paso 3: Asigne campos de clientes potenciales personalizados para la conversión de clientes potenciales

    1. Haga clic en Configuración .
    2. En el Administrador de objetos, escriba Cliente potencial .
    3. Seleccione Campos y relaciones y , a continuación, haga clic en Asignar campos de candidatos.
      1. Puede asignar cada uno de los campos personalizados de cliente potencial de su organización a uno de sus campos personalizados de cuenta , contacto u oportunidad.
    4. Asigne el campo Conversión de clientes potenciales como se muestra en la siguiente captura de pantalla.
    5. Haga clic en Guardar.

    Paso 4.1: Flujo de Salesforce: definir las propiedades del flujo

    1. Haga clic en Configuración .
    2. En el cuadro Búsqueda rápida, escriba Flujos .
    3. Seleccione Flujos y luego haga clic en Nuevo flujo .
    4. Seleccione el flujo activado por registro y haga clic en Crear y configure el flujo de la siguiente manera:
      1. Objeto : Cuenta
      2. Activar el flujo cuando : se crea un registro
      3. Establecer criterios de entrada
        1. Requisitos de condición: se cumplen todas las condiciones (Y)
          1. Fila 1:
            1. Campo : Lead_Conversion__c
            2. Operador : Igual
            3. Valor : {!$ConstanteGlobal.Verdadero}
      4. Optimice el flujo para la acción y los registros relacionados
    5. Haga clic en Listo .

    Paso 4.2: Flujo de Salesforce: agregar rutas programadas

    El propósito de usar una ruta programada es permitir que Salesforce genere las publicaciones programadas. A medida que las publicaciones generadas por el sistema se insertan en el objeto AccountFeed, es decir, hijo de Cuenta.

    1. En Inicio , seleccione Agregar rutas programadas (opcional) .
    2. En RUTAS PROGRAMADAS, haga clic en Nueva ruta programada .
    3. En Detalles de rutas programadas ,   ingrese la etiqueta , el nombre de la API se completará automáticamente.
    4. Hora Origen: Cliente potencial: Fecha de creación
    5. Número de compensación: 0
    6. Opciones de compensación: Horas después
    7. Opciones avanzadas
      1. Tamaño del lote : 100
    8. Haga clic en Listo .

    Paso 4.3: Flujo de Salesforce: agregue un elemento Eliminar registros para eliminar publicaciones generadas por el sistema

    1. En Flow Designer, en el nodo Esperar 0 h , haga clic en el icono + y seleccione el elemento Eliminar registros .
    2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
    3. Para Cómo encontrar registros para eliminar , seleccione Especificar condiciones .
    4. Selecciona el feed de la cuenta   objeto de la lista desplegable.
    5. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo: ParentId
        2. Operador: Igual
        3. Valor: {!$Record.Id}
    6. Haga clic en Listo .


    Al final, Warren's Flow se verá como la siguiente captura de pantalla:

    Una vez que todo se vea bien, realice los siguientes pasos:

    1. Haga clic en Guardar .
    2. Ingrese la etiqueta de flujo , el nombre de la API se completará automáticamente.
    3. Haga clic en Mostrar avanzado .
    4. Versión de API para ejecutar el flujo : 54
    5. Etiqueta de entrevista : Eliminar publicaciones generadas por el sistema {!$Flow.CurrentDateTime}
    6. Haga clic en Guardar .

    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

    Prueba de concepto

    A partir de ahora, si un usuario empresarial convierte un cliente potencial, Salesforce Flow activará e iniciará automáticamente el flujo. Luego eliminará la publicación generada por el sistema después de unos minutos. Vamos a probarlo.

    1. A continuación se muestra el estado actual de la Sra. Kristen Akin principal antes de la conversión.
    2. Después de convertir el cliente potencial, se le dirigirá a la página de detalles de la cuenta. Haga clic en las noticias en tiempo real de Chatter de la cuenta.
    3. Salida final
      1. Espere unos minutos y actualice la página de detalles de la cuenta.
      2. Consulta el feed de la cuenta. Se eliminará la publicación de Chatter.

    Evaluación formativa:

    ¡Quiero saber de ti!

    ¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

    Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/03/03/auto-delete-system-generated-chatter-posts/

    Categories
    Developers

    Introducción a Salesforce Flow – Parte 62 (Asignar automáticamente o quitar conjunto de permisos a varios usuarios)

    Gran idea o pregunta duradera:

    Los conjuntos de permisos son útiles para proporcionar un conjunto particular de funcionalidades a un usuario además de los permisos proporcionados por su perfil . Por ejemplo, es posible que desee permitir que solo algunos de sus usuarios de ventas conviertan clientes potenciales. En este caso, en lugar de tener un perfil de ventas especial con el permiso de conversión de clientes potenciales, puede crear un conjunto de permisos y asignarlo a un usuario específico. ¿Qué sucede si solo desea que se asigne un conjunto de permisos durante un tiempo designado y no desea olvidarse de eliminarlo más tarde?
    • Asigne el conjunto de permisos para un período de tiempo específico del 01 de enero de 2022 al 15 de enero de 2022 (como si hubiera definido la hora de inicio y finalización)
    • Eliminar el conjunto de permisos del usuario el31 de agosto de 2021, es decir, una fecha futura
    He escrito algunos artículos sobre la automatización del conjunto de permisos.   y automatización . ¡¿Por qué no les echas un vistazo mientras estás en ello ?!
    1. Introducción a Salesforce Flow – Parte 53 (Clonar un usuario con su grupo público asociado, pertenencia a la cola y conjuntos de permisos)
    2. Introducción a Salesforce Flow – Parte 24 (Asignar automáticamente conjuntos de permisos a un nuevo usuario)

    Objetivos:

    Después de leer este artículo, podrá:
    • Utilice el flujo activado por programación para asignar o eliminar el conjunto de permisos en la fecha especificada automáticamente
    • Práctica recomendada para referir el conjunto de permisos a un flujo activado por registro
    • Utilice un elemento de decisión para buscar: la variable de registro o la variable de colección de registros contiene un registro o no
    • Asignar un conjunto de permisos a los usuarios el primer día del mes
    • Eliminar el conjunto de permisos de los usuarios el sexto día del mes
    • Supervisar la cola de flujo de trabajo de programación
    Brenda David es Administradora de sistemas en Universal Containers (UC). La gerencia de la UC ha anunciado una iniciativa para permitir que sus empleados actualicen o eliminen las solicitudes de vacaciones en lugar de enviar una solicitud por correo electrónico a RR.HH. Para hacer esto, los usuarios necesitarán permisos especiales, como actualizar o eliminar solicitudes de vacaciones (objetos personalizados) que están fuera de sus permisos estándar. Solo deben tener acceso desde el primer día de cada mes hasta el día 05 del mes (Otorgar acceso durante los primeros cinco días del mes).

    Enfoque de campeón de automatización (I-do):

    Si bien esto se puede resolver utilizando varias herramientas de automatización como Apex , etc. , usaremos el flujo activado programado . Antes de continuar, debe comprender el PermissionSetAssignment   objeto . Representa la asociación entre un usuario y un PermissionSet. A continuación se muestran los campos clave del objeto PermissionSetAssignment
    Nombre del campo Detalles
    PermissionSetId ID del PermissionSet para asignar al usuario especificado en AssigneeId.
    AssigneeId ID del usuario para asignar el conjunto de permisos especificado en PermissionSetId.
    Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo y comprenderlo. Comencemos a construir este proceso de automatización.

    Práctica guiada (lo hacemos):

    Hay 2 pasos para resolver los requisitos comerciales de Brenda mediante el flujo activado programado . Debemos:
    1. Creación de un conjunto de permisos: autenticación de dos factores
    2. Pasos del flujo de Salesforce:
      1. Definir propiedades de flujo para flujo activado programado
      2. Agregue una fórmula para obtener días a partir de la fecha
      3. Agregue un elemento de obtención de registros para encontrar la identificación del conjunto de permisos
      4. Agregue un elemento de decisión para verificar la identificación del conjunto de permisos de la variable de registro (del paso 2.3)
      5. Agregue un elemento de registro para encontrar el ID de asignación del conjunto de permisos
      6. Agregue un elemento de decisión para verificar el ID de asignación del conjunto de permisos de la variable de registro (del paso 2.5) y el día del mes
      7. Agregue un elemento de creación de registros para asignar el conjunto de permisos
      8. Agregue un elemento Eliminar registros para eliminar el conjunto de permisos

    Paso 1: crear un conjunto de permisos

    1. Haga clic enConfiguración .
    2. En el cuadro Búsqueda rápida, escribaConjuntos de permisos .
    3. SeleccioneConjuntos de permisos y luego haga clic en Nuevo .
    4. Etiquete el conjunto de permisos y luego presione la tecla de tabulación, el nombre de la API se completará automáticamente.
    5. Haga clic enGuardar.

    Paso 2.1: Flujo de Salesforce – Definir propiedades de flujo

      1. Haga clic en Configuración .
      2. En el cuadro Búsqueda rápida, escriba Flujos .
      3. Seleccione Flujos y luego haga clic en Nuevo flujo .
      4. Seleccione el flujo activado por programación   opción y haga clic en Siguiente   y configure el flujo de la siguiente manera:
        1. ¿Cómo quieres empezar a construir ? Freeform
        2. Establecer horario
          1. Fecha de inicio: 27 de abril de 2021
          2. Hora de inicio: 12:00 AM
          3. Frecuencia: Diaria
          4. Haz clic enListo .
        3. Seleccionar objeto : Usuario
      5. Seleccione Se cumplen todas las condiciones (Y) .
      6. Condición de establecimiento
        1. Fila 1
          1. Campo: Usuario | Está activo
          2. Operador: Igual a
          3. Valor: {! $ GlobalConstant.True}
        2. + Agregar condición
        3. Fila 2
          1. Campo: Usuario | Tipo de usuario
          2. Operador: Igual a
          3. Valor: estándar
      7. Haz clic enListo .

    Paso 2.2: Flujo de Salesforce: cree una fórmula para obtener el día a partir de la fecha

    1. En Caja de herramientas , seleccione Administrador, luego haga clic en Nuevo recurso para crear una fórmula para obtener el día a partir de la fecha.
    2. Ingrese la siguiente información:
      1. Tipo de recurso : Fórmula
      2. Nombre de API : forNDaysOfMonth
      3. Tipo de datos : Número
      4. Lugares decimales : 0
      5. Fórmula : {DÍA ({! $ Flow.CurrentDate})
    3. Haz clic enListo .

    Paso 2.3: Lightning Flow: agregar un elemento Get Record para encontrar el ID del conjunto de permisos

    El siguiente paso es utilizar el  Obtener el elemento Registros para encontrar el conjunto de permisos Modificar solicitud de vacaciones . Para hacer eso, siga las instrucciones a continuación:
    1. En Caja de herramientas , seleccione Elemento .
    2. Arrastre y suelte el elemento Obtener registros en el diseñador de flujo.
    3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
    4. Seleccione el conjunto de permisos   objeto de la lista desplegable.
    5. SeleccioneSe cumplen todas las condiciones (Y) .
    6. Establecer condiciones de filtro
      1. Fila 1:
        1. Nombre del campo
        2. Operador: Igual a
        3. Valor: Modify_Vacation_Request
    7. Cuántos registros almacenar:
      1. seleccionesolo el primer registro
    8. Cómo almacenar datos de registro:
      1. Elija la opción para almacenar automáticamente todos los campos .
    9. Haz clic enListo .

    Paso 2.4: Flujo de Salesforce: uso del elemento de decisión para verificar el ID del conjunto de permisos de la variable de registro (del paso 2.3)

    Ahora usaremos el elemento Decisión para verificar la Variable de registro del paso 2.3 para encontrar si devuelve el ID del conjunto de permisos o no.
    1. En Caja de herramientas , seleccione Elemento .
    2. Arrastre y suelte el elemento Decisión en el diseñador de flujo.
    3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
    4. En Detalles del resultado ,   ingrese la etiqueta que el nombre de la API se completará automáticamente.
    5. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {! Get_Permission_Set}
        2. Operador: es nulo
        3. Valor: {! $ GlobalConstant.False}
    6. Haz clic enListo .

    Paso 2.5: Lightning Flow: agregar un elemento Get Record para encontrar el ID de asignación del conjunto de permisos

    El siguiente paso es utilizar el  Obtener el elemento Registros para encontrar el ID de asignación de configuración de permisos. Para hacer eso, siga las instrucciones a continuación:
    1. En Caja de herramientas , seleccione Elemento .
    2. Arrastre y suelte el elemento Obtener registros en el diseñador de flujo.
    3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
    4. Seleccione la asignación de conjunto de permisos   objeto de la lista desplegable.
    5. SeleccioneSe cumplen todas las condiciones (Y) .
    6. Establecer condiciones de filtro
      1. Fila 1:
        1. Campo: AssigneeId
        2. Operador: Igual a
        3. Valor: {! $ Record.Id}
      2. + Agregar condición
      3. Fila 2:
        1. Campo: PermissionSetId
        2. Operador: Igual a
        3. Valor: {! Get_Permission_Set.Id}
    7. Cuántos registros almacenar:
      1. seleccionesolo el primer registro
    8. Cómo almacenar datos de registro:
      1. Elija la opción para almacenar automáticamente todos los campos .
    9. Haz clic enListo .

    Paso 2.6: Flujo de Salesforce: uso del elemento de decisión para verificar el ID de asignación del conjunto de permisos de la variable de registro (del paso 2.5) y el día del mes

    Usaremos el elemento Decisión para verificar la Variable de registro del paso 2.5 para encontrar si el conjunto de permisos está asignado al usuario o no con el día del mes. Hay dos posibilidades:
      • Si hoy es el primer día del mes y el conjunto de permisos no está asignado al usuario, asigne el conjunto de permisos.
      • Si hoy es el sexto día del mes y el conjunto de permisos está asignado al usuario, elimínelo.
    1. En Caja de herramientas , seleccione Elemento .
    2. Arrastre y suelte el elemento Decisión en el diseñador de flujo.
    3. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
    4. En Detalles del resultado ,   ingrese la etiqueta (Agregar conjunto de permisos), el nombre de la API se completará automáticamente.
    5. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {! Get_Permission_Set_Assignment}
        2. Operador: es nulo
        3. Valor: {! $ GlobalConstant.True}
      2. + Agregar condición
      3. Fila 2:
        1. Campo : {! ForNDaysOfMonth}
        2. Operador : Igual a
        3. Valor : 1
    6. Ahora agregue un segundo nodo al elemento de decisión.
    7. En Detalles de resultado , haga clic en +
    8. En Detalles del resultado ,   ingrese la etiqueta (Eliminar conjunto de permisos), el nombre de la API se completará automáticamente.
    9. Requisitos de las condiciones para ejecutar el resultado : se cumplen todas las condiciones (Y)
      1. Fila 1:
        1. Recurso: {! Get_Permission_Set_Assignment}
        2. Operador: es nulo
        3. Valor: {! $ GlobalConstant.False}
      2. + Agregar condición
      3. Fila 2:
        1. Campo : {! ForNDaysOfMonth}
        2. Operador : Igual a
        3. Valor : 6
    10. Haz clic enListo .

    Paso 2.7: Flujo de Salesforce: crear registros para agregar un conjunto de permisos

    El siguiente paso es agregar conjuntos de permisos a los usuarios. Usaremos elelementoCreate Records. Para hacer esto, arrastre y suelte el elemento Crear registros en el diseñador de flujo y mapee los campos de acuerdo con los detalles a continuación:
    1. En Caja de herramientas , seleccione Elementos . Arrastre y suelte Crear registros en el lienzo.
    2. Ingrese la siguiente información :
      1. Ingrese la etiqueta, el nombre de la API se completará automáticamente.
      2. Cuántos registros crear : uno
      3. Cómo configurar los campos de registro : use recursos separados y valores literales
      4. Objeto : PermissionSetAssignment
      5. Establecer valores de campo para la asignación de conjuntos de permisos
      6. Fila 1:
        1. Campo : AssigneeId
        2. Valor : {! $ Record.Id}
      7. Haga clic en Agregar fila
      8. Fila 2:
        1. Campo : PermissionSetId
        2. Valor : {! Fet_Permission_Set.Id}
    3. Haz clic en Listo .

    Paso 2.8: Flujo de Salesforce: agregue un elemento Eliminar registros para eliminar el conjunto de permisos

    El siguiente paso es eliminar los conjuntos de permisos para los usuarios. Usaremos elelementoDelete Records. Para hacer esto, arrastre y suelte el elemento Eliminar registros en el diseñador de flujo y mapee los campos de acuerdo con los detalles a continuación:
    1. Arrastre y suelte el elemento Eliminar registros en el diseñador de flujo.
    2. Ingrese un nombre en el campo Etiqueta; el nombre de la API se completará automáticamente.
    3. Para Cómo encontrar registros para eliminar, seleccione Usar los ID almacenados en una variable de registro o una variable de colección de registros .
    4. Seleccionar registro (s) para eliminar
      1. Registro o colección de registros: {! Get_Permission_Set_Assignment}
    5. Haz clic en Listo .
    Al final, el flujo de Brenda se verá como la siguiente captura de pantalla (activé el diseño automático ) para este flujo: Una vez que todo se vea bien, realice los pasos a continuación:
    1. Haga clic enGuardar .
    2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
    3. Haga clic enMostrar avanzado .
    4. Tipo : flujo activado por programa
    5. Versión de API para ejecutar el flujo : 52
    6. Etiqueta de entrevista : Agregar o quitar conjunto de permisos automáticamente {! $ Flow.CurrentDateTime}
    7. Haga clic enGuardar .
    ¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar.

    Supervise el flujo de su programación

    Para monitorear los flujos que están programados, navegue a la siguiente ruta:
    1. Vaya a Configuración (icono de engranaje) | Ambientes | Trabajos | Trabajos programados .
    2. Ahora busque su flujo programado que muestra la información como se muestra en la siguiente captura de pantalla:
    3. Utilice el enlace Supr para eliminar el trabajo de flujo programado de la cola.

    Prueba de concepto

    Cada noche a las 12:00 a. M., Se ejecutará un trabajo programado y agregará o quitará el conjunto de permisos para el usuario según el día del mes.
    1. El primer día del mes, navegue hasta el registro de usuario y confirme que se asignó el conjunto de permisos Modificar solicitud de vacaciones.
    2. El sexto día del mes, navegue hasta el registro de usuario y confirme que se ha eliminado el conjunto de permisos Modificar solicitud de vacaciones.

    Evaluación formativa:

    ¡Quiero saber de ti! ¿Qué aprendió de esta publicación, es relevante para usted y cómo modificará los conceptos enseñados en la publicación para sus propios procesos comerciales? Haz una publicación y etiquétame en Twitter @automationchamp usando #AutomationChampionFlow. … Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2021/04/26/auto-assign-or-remove-permission-set-to-multiple-users/