Categorías
EGA Futura Academy Masterclass de Salesforce

Masterclass de Salesforce: Cómo potenciar tu Empresa con Funcionalidad Avanzada de Flow

El universo de Salesforce es vasto y lleno de posibilidades, especialmente cuando se trata de aprovechar sus herramientas avanzadas para la automatización de procesos. 

 

 

Una de estas herramientas es Salesforce Flow, que permite la creación de flujos de trabajo automatizados que pueden gestionar tareas complejas con facilidad. En una reciente masterclass, expertos en el tema compartieron valiosos conocimientos sobre cómo utilizar Flow de manera avanzada para optimizar procesos comerciales clave.

Introducción a la Masterclass

El evento, que tuvo lugar de manera virtual, reunió a profesionales y entusiastas de Salesforce de diferentes partes del mundo, incluidos participantes de México y Argentina. La masterclass fue liderada por Francisco Morales, un experto en Salesforce, junto con la participación de otros especialistas como Josué y Esteban. La sesión inició con un ambiente de entusiasmo y camaradería, destacando la importancia de aprender y compartir conocimientos en comunidad.

Creación de Flujos Avanzados

Durante la sesión, los participantes exploraron la creación de un flujo avanzado que replicaba una funcionalidad estándar de Salesforce, pero en un solo paso. El objetivo era simplificar el proceso de gestión de oportunidades de venta al permitir la selección de cuentas, la creación de oportunidades y la asignación de roles de contacto de manera eficiente. A través de la demostración en pantalla, Francisco explicó cómo utilizar elementos avanzados de Flow, como el repeater y el transform, para gestionar datos y operaciones de manera efectiva.

Técnicas y Estrategias

Un aspecto crucial de la masterclass fue el enfoque en la gestión de errores y el uso de loops, una técnica que permite iterar sobre un conjunto de datos para aplicar acciones específicas. Los asistentes aprendieron a utilizar estos elementos para crear flujos robustos que no solo automatizan tareas, sino que también simplifican la experiencia del usuario final. La sesión también abordó la importancia de realizar pruebas y depuraciones para asegurar que los flujos funcionen correctamente y cumplan con los objetivos establecidos.

 

[00:00:00.00] – Hablante 1
Ahora sí, ahora sí, qué lindo, qué lindo, qué lindo. Muy contentos desde aquí de Buenos Aires para poder estar con todos ustedes en México. El nivel de felicidad que tenemos es galáctico. Lo que vamos a ver en la Master Class de la capacitación de hoy, donde lo tenemos a Josué, lo tenemos a Esteban, alias Bebé Corazón. Tenemos a nuestro experto, Francisco Morales, en donde vamos a aprender cómo utilizar Flow de manera avanzada. Francisco, si a vos te parece, lo que yo voy a hacer es darte el control a vos, compartir pantalla y comenzamos con esta clase. ¿Qué opinas? Vamos hoy.

[00:00:46.21] – Hablante 2
Muy bien. Bueno, buenas tardes, noches para todos. Vamos a hacer hoy un ejercicio con Flows. Quiero darles un poquito de contexto antes de empezar. Voy a dar algunas técnicas que nosotros consideramos avanzadas de de Flows. Así que los chicos van a estar atentos a los comentarios, porque yo cuando comparta pantalla voy a dejar de ver los comentarios. Así que ahí me… Si tienen alguna consulta o quieren que hagamos doble clic sobre algo, la verdad es que tenemos poco tiempo para todas las cosas que queremos mostrar. Entonces, por ahí algunas cosas vamos a hacerlas un poquito rápido, pero ahí no tengan miedo de levantar la mano y lo volvemos a explicar o si tienen dudas, lo vemos. El caso que vamos a hacer, lo voy a mostrar porque nos decidimos estratégicamente el caso de uso, que vamos a ver estratégicamente como algo que se pueda Voy a mostrar sencillo. Compartir la pantalla. Voy a compartir toda la pantalla sin miedo al éxito. Sí, ya se ven. Muy bien. Entonces, el caso que vamos a replicar en un flow es el siguiente. Si yo, vamos a poner que esto es una oportunidad. Y en esta oportunidad que es una oportunidad de venta, voy a tener lo que se llama…

[00:01:48.02] – Hablante 2
Vamos a darle vuelta. Ahí va. Entonces, yo, dentro de una oportunidad de venta, voy a tener lo que se llaman los contact roles, que son básicamente las personas que intervienen en esa oportunidad. Entonces, por Por ejemplo, podría estar la persona que toma la decisión o el CFO o la persona de finanzas, etcétera. Entonces, lo que nosotros podemos ver, esto es de caja, es una funcionalidad de caja de Salesforce, es venir a esta fichita que está acá y agregar contact roles. Lo que me va a hacer básicamente esto es mostrarme todos los contactos de la cuenta. Yo voy a elegir, por ejemplo, a Esteban y me voy a elegir a mí mismo, voy a ir a siguiente y acá me va a decir quiénes son. Entonces, voy a poner que Esteban es un business user y que yo soy el que toma la decisión. Cuando yo guardo esto, lo que me va a hacer es que me va a crear estos contact roles en la oportunidad, que básicamente le van a servir a un ejecutivo comercial para ver quién es quién dentro de una oportunidad y tener esa referencia. Entonces, lo que vamos a hacer con nuestro flow es replicar toda esta funcionalidad, pero lo vamos a hacer en un solo paso.

[00:02:46.12] – Hablante 2
Es decir, nosotros vamos a suponer que en un solo flow de pantalla vamos a elegir primero la cuenta, vamos a crear una oportunidad y vamos a crear los contact roles a partir de los contactos de esa cuenta, todo en un solo flow de pantalla. Vamos a hacer de eso usando distintos elementos de flows, entre ellos el repiter, el transfón. Vamos a ver un poquito de gestión de errores si nos da el tiempo y los loops también vamos a ver. Y lo que hicimos hacer así, es decir, vamos a replicar una funcionalidad estándar porque queremos que sea fácil de entender. Queremos que esta puesta en contexto sea rápida y todos entiendan qué es lo que vamos a hacer para no tener que estar mostrando diagramas de objetos y demás. Entonces, vamos a irnos a crear un flow nuevo y acá me gustaría, si los De hecho, me pueden dar una mano explicando los tipos de flow ahora cuando lleguemos a esa pantalla. Vamos a ir a Configuración, vamos a ir a Flow. Yo voy a dar por asumido que sabe algunas cosas básicas y si alguien necesita de nuevo hacer un doble clic o lo que sea, me avisa.

[00:03:43.03] – Hablante 2
Me voy a crear un nuevo flow Esta es la típica pregunta de si vamos a comenzar desde cero o si vamos a usar un template. En este caso, nosotros vamos a comenzar desde cero. Y acá sí me gustaría si Eki nos puede dar una mano explicando los más importante sobre todo. Sí, total.

[00:03:57.03] – Hablante 4
Obviamente, el de pantalla, que es el que vamos a usar ahora. Después, tienes los disparados por Trigger, que son básicamente los APEX triggers, pero migrados a Flow. Básicamente, hay un evento, lo captura ese flow, el record trigger flow. Después, tenemos los Schedule, los Schedule Flows, que también básicamente es algo que vos podés disparar todos los días o semanalmente o mensualmente. Entonces, esos flows están buenos, están ocupados para cuando querés que pase algo todos los días. Como los batches de APEX, son menos parecidos a esos. Después, tenemos los platform events, que también se disparan a través de no un evento cualquiera, sino a través de un platform event, es decir, un evento que viene de una integración que nosotros los podemos capturar tanto en código como en flows usando este tipo de flows. Los platform event trigger flows, que también son bastante útiles cuando hay muchas integraciones dando vuelta y queremos capturar eventos de otros sistemas. Y después los Auto Launch, ahí en la tercera fila, que son básicamente flows que quizás no sabemos no sé bien dónde lo vamos a usar, pero sabemos que lo vamos a usar. Entonces, los creamos y después los podemos usar dentro de otro flow, los podemos usar dentro de una automatización cualquiera, dentro de un Trigger Flow, de hecho, en cualquier caso, en un script flow.

[00:05:15.01] – Hablante 4
Entonces, los autolunch flow, básicamente, no disparan por eventos, sino que los invocás vos. Y después, los orchestrations, los record trigger, los orchestration flows. Los record trigger, los orchestrations flows son básicamente flow gigantes, donde vos puedes ubicar muchos subflows y le vas guiando al usuario cómo ejecutar cada flow, como etapas, paso a paso. Entonces, es quizás como un orquestrador. Y vieron que está con las manitos como orquestrando algo. Básicamente, el usuario está como orquestrando los pasos a seguir al usuario que le estás en el flow. Entonces, están buenos, están buenos. Y además, está bueno que vos lo asignes. O sea, vos puedes asignar cada paso a un usuario. Y bueno, eso sería un poco explicar los flows típicos que se usan, que quizás no son tan típicos como el orchestration y el plan for events, que también están bastante buenos. Bien.

[00:06:00.08] – Hablante 1
Antes de volver a vos, Francisco, yo quiero, porque estoy loco de alegría de ver tanta gente. Primero, Grisel, muchísimas gracias por organizar este evento y un saludo lleno de amor para todo el grupo de usuarios de Monterrey, México. Estoy loco de contento y le quiero agradecer la presencia. Andrés Medina, Fernanda, Welsy, Jairo Romo, Francesca o Francesca, Luis, Gabriel, Natalia, son un montón. Mario, Simón, Benito García, Martín, Diana, Aldo, María Rodríguez. Está Angie Cagliolo en el fondo, lo sé. Dulce, Cristian, Enz, no termino más, Matilda, Ever, Silivia. Primera vez en 50 años, qué lindo nombre, Casmin, Priel. Y todos los que están conectados, les agradecemos un montón. Quiero comentar también que a todos los que se registraron, las horas después de que finalice el evento, van a recibir un correo electrónico con la grabación. ¿Cuál es la onda? La onda es que todo este material técnico que les vamos a estar presentando hoy, lo puedan ver luego y a medida que lo van viendo, hagan pausa y lo puedan replicar en sus entornos. Le agradezco a a Esteban, que lo conocemos internamente como Bebé Corazón, y ahora vamos de nuevo, Francisco, con vos.

[00:07:38.05] – Hablante 2
Ahí estamos, muy bien, muchas gracias. Ahí estoy. Hay un poquito de delay en el audio, y por ahí, por eso, llega un poquito tarde para los que estamos acá. Entonces, ¿me pueden confirmar ahí, porfa, que se ve bien y que se escucha bien? Rapidito, así seguimos. Amor, carajo. Entonces, gracias ahí a los muchachos que están apoyando. Vamos a hacer, en este caso, un flow de pantalla, pero les interesa ir guiando al usuario a través de diferentes pantallas. Vamos a crearlo. Y entonces, recuerden que lo que nosotros queremos hacer, hago un poco de recapitulación, es permitir al usuario seleccionar una cuenta. A partir de esa cuenta, seleccionar los contactos. Luego, la información básica de la oportunidad, que eso lo podemos cambiar. Vamos a pedir primero datos de la oportunidad y después seleccionar los contactos. Y luego, hacer este paso de crear los contact roles, los roles dentro de esa oportunidad. Y después, al final, hacer todo una operación para registrar en Salesforce. Entonces, lo primero que deberíamos hacer acá, ya estando en el flujo de pantalla, es ir a buscarnos las cuentas, porque nosotros le vamos a mostrar, a ver si le vamos a mostrar cómo, un elemento que se llama data table, que es el primer elemento de los interesantes que consideramos que está bueno mostrar acá.

[00:08:47.07] – Hablante 2
Eso nos va a servir para mostrar todas las cuentas y poder seleccionar una. Entonces, vamos a ir a buscarnos las cuentas, vamos a hacer un get all counts, vamos a seleccionar que es el objeto account. Y acá, como yo me quiero traer todas, podemos dejar alguna condición que sea como muy obvia, que no se va a cumplir. Por ejemplo, pensando así en voz alta, podríamos pedir que el nombre no sea nulo. Entonces, todas las que tengan nombre, que van a ser todas, van a aparecer. Entonces, vamos a poner que name es null igual a falso. De nuevo, acá estoy yendo un poquito rápido y estoy asumiendo que todos entienden esta condición, pero si hay alguno que no, siéntanse libres de consultarlo en el chat. Vamos a pedir que nos traiga todos los registros y que nos traiga todos los campos. Ahora, una vez que tenemos esto, primero Creo que nada, voy a guardar esto porque esto es un talk mío, que necesito guardar y ver el flow. Entonces, vamos a hacer demo para México. Lo próximo y el primer elemento interesante que vamos a ver, que nosotros consideramos avanzado de los que están copados dentro de Salesforce, es la un data table.

[00:09:45.10] – Hablante 2
Entonces, para eso, para permitir al usuario elegir cuál es la cuenta que quiere, vamos a agregar una nueva pantalla, un elemento pantalla, y acá vamos a elegir un data table. Pantalla, hay que poner un nombre, selección de cuenta y le vamos a poner de screen, por una cuestión de que después nos va a resultar fácil encontrarlo. Este data table, nuestro… Vamos a poner data table, count, selection. Voy a mezclar un poquito el inglés y el español todo el tiempo, ahí les pido disculpas. En nuestro source collection, o sea, la fuente de información con la que vamos a alimentar este data table, va a ser nuestra lista de cuentas, bajo donde vamos a hacer nuestro recién flamantemente creado get all accounts. En la fila, le vamos a decir que el fija solo una, porque nosotros queremos trabajar solo con una sola cuenta, si no sería medio engorroso saber qué oportunidades… Imagínense, no sería real tener que elegir muchas cuentas y después tener que crear muchas oportunidades, sería mucho más complejo. En este caso, queremos elegir solo una cuenta. Y en las columnas vamos a mostrar, por ejemplo, no sé, Name. Y creo que en este caso eso es todo, lo que me interesa mostrar, el nombre de la cuenta.

[00:10:51.23] – Hablante 2
Por el tipo voy a ir yendo y viniendo haciendo un debate para mostrar cómo es lo que se ve, pero básicamente estamos obteniendo todas las cuentas y mostrándolas en una pantalla para que el usuario las seleccione. Opportunities. El próximo paso que deberíamos hacer, en este caso, vamos a pedir información de la oportunidad. Esto lo podríamos hacer en una sola pantalla, pero para que no quede desprevido, a mi me gusta hacerlo como en diferentes pantallas. Entonces, acá lo que vamos a hacer es ir creando, voy a hacer una nueva variable del tipo registro, que va a ser una oportunidad nueva. Recuerden que queremos hacer como todos los pasos en un solo flow, va a ser el tipo registro, el objeto vamos a elegir opportunity, y nos interesa que sea una sola, no que sean muchas. Entonces, una vez que hacemos esto, nos va a salir por traer cuáles son los campos obligatorios. Vamos a poner que es el close date, el name y el stage. Si se fijan, acá me está faltando algo que es efectivamente la cuenta, la que va a ir asociada a la la oportunidad, eso lo vamos a hacer en un paso posterior.

[00:11:47.10] – Hablante 2
Una cosa que no estoy haciendo por temas de tiempo, pero que tendré que hacer, es ir sacándole el elemento pausa de todas las pantallas. Vamos a ponerle new opportunity screen, en este caso, ahí si se fijan, ya tenemos una parte bastante importante del flujo que estábamos hablando recién, que es seleccionar la cuenta y después crear la oportunidad. Lo que tenemos que hacer ahora es la parte más compleja, si quieren, de nuestro flow, que es levantar los contactos de esta cuenta y ir ya pensando en crear los contact roles. Lo primero que vamos a hacer es cuenta y después le vamos a dar una pantalla al usuario para simular, para emular, mejor dicho, esto de aquí, que es primero seleccionan los contactos, esto lo vamos a hacer así, tal cual, y después de que seleccionan los contactos, digo cuál es el rol de cada uno de esos contactos. Entonces, vamos a hacer algo parecido a esto. Si alguno se imagina qué elementos vamos a usar y qué técnicas vamos a usar dentro de Flow, lo puedo ir tirando en los comentarios, solo a modo lúdico. Entonces, lo primero que vamos a hacer es ir a buscar los contactos.

[00:12:52.16] – Hablante 2
Vamos a hacer un get, como hicimos arriba, getcontacts. Y en las condiciones, lo que le vamos a poner como filtro es que la cuenta sea la misma que el usuario seleccionó arriba. Entonces, vamos a poner que KMID sea igual a, a ver cómo se llamaba este elemento, Selección de cuenta de screen. Esto me parece que está muy bueno, como Salesforce te deja hacer el data table y después elegir qué es lo que el usuario seleccionó en esa pantalla previa. En este caso también tenemos que poner que vamos a traernos todos los registros y vamos ahora a mostrar una pantalla que va a tener también, que va a ser muy parecida a esta, o sea, vamos a tener un otro data table donde vamos a mostrar los contactos y le vamos a permitir al usuario elegir, pero en este caso, en vez de permitirle solo uno, vamos a permitir que elija muchos contactos, porque acá ya es lo que puede el usuario elegir. Entonces, nos vamos a abrir acá, vamos a hacer una pantalla. ¿Qué va a hacer? Vamos a hacerlo bien. Contact, Selection, Screen. Vamos a agregar de nuevo un data table, que va a ser data table, contact, Selection.

[00:13:53.19] – Hablante 2
En este caso, nuestra fuente de información va a ser la lista de contactos que acabamos de traer. Esto me pasa cada vez que hago esto. Algunos componentes te piden primero el API, otro te pide el label y te completa el API, entonces, puedo hacerlo en automático, siempre me tarteo eso. En el caso de las filas, como les decía recién, esta vez, en vez de elegir uno solo, vamos a permitir que se elijan múltiples registros. Esto no lo vamos a poner nada acá, podríamos limitar a alguno. Si alguno se le ocurre por qué, sería una buena práctica limitar. Es un buen momento de tirarlo en los comentarios o de comentarlo ahí los chicos, si quieren comentar. Vamos a poner como columna. En este caso también le vamos a poner el name, el contacto y a ver si hay alguna otra que pueda ser interesante. Podemos poner el título, que creo que no lo tiene ninguno, pero en un caso real esto sería útil, porque saber quién es la persona dentro de la empresa nos puede ayudar a saber qué rol va a tener después en una oportunidad de venta. Y en este caso, hasta acá estamos.

[00:14:44.15] – Hablante 2
Voy a ir probando esto en medida que lo vamos haciendo. Entonces, recapitulando, obtuvimos todas las cuentas, lo mostramos, le dejamos al usuario elegir una, le pedimos datos de la oportunidad básicos, vamos a buscar todos los contactos de esa cuenta y le mostramos al usuario para que pueda elegir cuáles son los contactos que vaya a participar en esa oportunidad. Entonces, vamos a guardar, hacer un debug. Esto siempre recomendamos debug, obviamente hacer pruebas en sandbox y demás. Vamos, hasta que carga esto. Voy a ver una pregunta del Chat, en mi ¿Cuál es la idea? Puede ser para evitar la sobreescristura. Sí, tal cual. Nos convendría limitar eso porque si lo dejamos libre, el usuario podría elegir 1000 sin saber que nosotros después vamos a hacer una inserción y un DML, y eso tiene un límite. Así que es Es un buen punto, una buena observación. Otra podría ser que haya límites específicos, por ejemplo, el contact role, que no te deje más de 20, por decir algo, porque ya no sería útil tener más de 20 personas ahí. No sé, estoy inventando, pero podríamos tener una limitación así. Entonces, tendríamos que poner esa restricción ahí de que no elija más de 20, por decir algo.

[00:15:50.18] – Hablante 2
Vamos a correr esto. Recuerda, la primera pantalla nos va a hacer elegir la cuenta. Voy a elegir una cuenta que no sé que tiene contactos de 20. Vamos a avanzar al siguiente. Can nos debería mostrar los datos de la oportunidad. Un poquito de lenteja hoy del amigo Salesforce. Ahí va. Entonces, nos pide una fecha de cierre. Como dijimos, vamos a poner de mañana para poner algo. Una Opportunity Name, que vamos a hacer test, y una Stage, que vamos a poner el primero. Paso siguiente, y ahora me debería permitir elegir los contactos. Cuadrado rojo acá, que queda muy aesthetic. Nos deja elegir los contactos, que son 17 dentro de esa cuenta. Me voy a elegir a mismo y me voy a elegir a bebé corazón, que es Yo acá debería avanzar y si se acuerdan de lo que nosotros teníamos, originalmente, la funcionalidad que estamos queriendo emular. Lo próximo, después de la selección de contactos, si se fijan, ya llegamos hasta esta parte. O sea, es un montón lo que hicimos en 10 minutos. Si yo elijo contactos, contactos. Lo próximo es: Me muestra esos contactos y me muestra el roll. Esto sí se va a poner un poco más tricky y más complejo, pero vamos a ver cómo lo hacemos.

[00:16:54.13] – Hablante 2
Acá ya empieza el transform y el répeter, empezamos a combinar un poquito. Entonces, vamos a hablar de esto. Entonces, ¿qué deberíamos hacer ahora? Deberíamos mostrarle al usuario esos contactos que eligió y al lado, un picklist, una lista de selección con diferentes opciones de role. Entonces, ¿cómo vamos a hacer eso? Vamos a usar el elemento repeater, vamos Vamos a agregar una pantalla primero, primero que nada. Vamos a ponerle contact, no, selection. Acá tengo label primero, después me completa el apname. Le vamos a sacar del footer el elemento pausa y vamos a agregar, dijimos, repiter. Otro elemento a mi humilde entender, avanzado y por de más potente el repeater. ¿Por qué usamos un repeater y no un data table? Es porque el data table no nos deja editar el repeater. Sí podemos ya trabajar el dato. Y la forma en la que vamos a precargar, si quieren, esto es diciendo contact repeater, es diciendo que nos precargue la lista de ítems, en este caso, data table, contact selection, y todos los que están seleccionados. ¿Y qué vamos a hacer ahora? Esto acá se pone divertido cómo hacemos esto. Lo que nosotros tenemos que empezar a hacer ahora es arrojar elementos dentro de este repeater y luego ir prepopulando esos elementos con la lista nuestra que nos trajimos acá.

[00:18:14.11] – Hablante 2
Para que se entienda esto, este repeater lo que va a hacer es: va a traer esta lista de contactos y después nos va a permitir usar la información dentro de esa lista en elementos que nosotros carguemos acá, que pueden ser de todo tipo. Acá podemos pedir toda la información, todo el tipo de información que ven acá. Entonces, ¿qué es lo que nosotros deberíamos hacer? Primero, deberíamos mostrar un texto que sea el nombre del contacto. Si se acuerda, lo primero que se ve en la otra pantalla es el nombre del contacto. Le vengo a agregar un display text que va a ser contacto. Y le vamos a agregar, esta es la clave de este elemento, el repiter, repopulated_items. Entonces, lo vamos a elegir, este rounds, y vamos a elegir el name del contacto. No sé si existe el name como tal o si vamos con el last name. Vamos a poner last name. Acá podríamos hacerle un first name más last name. Vamos a mostrar, en este caso, el last name. Y lo otro que vamos a hacer, dijimos que era hacer un picklist, si se acuerdan. Necesitamos replicar de vuelta esto de acá. Entonces, ya vayamos a hacer un picklist.

[00:19:16.19] – Hablante 2
Y este picklist, le vamos a poder poner nuestras opciones, que después, como se imaginarán, hay que agarrar y hay que justamente transformar esto, vamos a dar el elemento transform, transformar esto en efectivamente los contact roles, porque hasta acá lo único que estamos haciendo es mostrándole la información al usuario para que la elija, para que decida qué role va a tener cada uno de los contactos. Vamos a dejar que elija múltiples opciones del usuario, vamos a decir que no, y las opciones vamos a copiarlas. Vamos a hacer un par, no vamos a hacer todas. Business Users, una. Vamos a agregar otra que sea por ahí, la más importante, que es decision maker. Y maker. Hay que hacerle que me cree la opción. Y una más que va a ser evaluator. Bien. Y una cosa importante, a ver si se da cuenta y lo pueden decir en los comentarios. El repeater tiene dos opciones que quizás aquí no son tan útiles, que es que me permite agregar, porque imagínese que esto es para que el usuario lo vaya creando dinámicamente, me permite eliminar ítems de la lista que me va a mostrar acá. ¿Y por qué digo que en este caso no es válido?

[00:20:17.02] – Hablante 2
No deberíamos mostrar esas opciones, porque nosotros ya nos estamos trayendo prefoculada esta lista con contactos que el usuario seleccionó. Entonces, no nos interesa que pueda agregar, porque si agrega, nosotros no vamos a tener el contacto, por ejemplo, porque es algo que solo va a de lo que seleccionó antes. Si nosotros quisiéramos hacer algo de agregar, lo podríamos hacer, pero pidiendo más datos. Nosotros podríamos hacer un repiter que tenga primero todo lo que precargó de la lista que el usuario seleccionó y después tener más datos que sean nuevos. O sea, le podríamos pedir el nombre, el apellido y el mail, por ejemplo, y podríamos dar de alta uno nuevo. Para hacerlo simple, ahí vamos a en chat. Para hacerlo simple, vamos a quitar que puedan agregar o que puedan eliminar. Y voy a al chat porque me dicen que hay una pregunta, que podríamos traer… Podríamos traernos una variable de contact role y traerla desde aquí, sí, para usar el picklist que está aquí. Lo que pasa es que después en la transformación lo va a ser un poco más complejo, por eso prefiero crear el picklist. Sabemos todos que tiene una de ventaja, que supongo que es a lo que apunta la pregunta, que es que habría que actualizarlo con los valores del contact role y el picklist, pero para los fines prácticos lo vamos a dejar así.

[00:21:23.14] – Hablante 2
Si no, podríamos traernos una variable acá que sea de un contact role, lo vamos a buscar, lo hace y lo traemos, o creamos un recurso mostramos el picklist acá. Así que sí, es una buena pregunta y es válido. Para este caso, lo vamos a dejar como una picklist que nosotros creamos, dejamos el last name arriba y vamos a guardar esto. Entonces, vamos a probar esto para ver si funciona. Es la primera vez que uso Flows, por eso, igual te da de inseguro. Vamos con ventx, vamos a elegir Ventix, que ya la tenemos preparada. Si alguno nos puede decir en los comentarios si se puede ordenar esa lista alfabéticamente. Si lo saben. Page prospecting, text. La selección de los contactos. De vuelta, dijimos que íbamos a elegir a Esteban y en este caso, a mi persona. Y acá, el mal ejemplo, vamos de vuelta. Porque como los dos somos morales y estamos mostrando solo el apellido, no vamos a distinguir cuáles. Vamos a elegir a Gaspar y a un Morales. Entonces, ahora sí, Gaspar y Morales están diferenciados. Y en el contact role tenemos lo que elegimos en nuestra píclis. No vamos a dar finish porque no va a hacer nada.

[00:22:24.10] – Hablante 2
Vamos de vuelta a nuestra edición. Entonces, ¿qué es lo que sigue a esto? Dijimos: Ya tenemos Ya tenemos toda la selección de contactos, ya tenemos toda la selección de cuáles son los roles distintos. Lo que tenemos que hacer es ahora, ¿qué pasa? El repeater no sabe qué es lo que hay acá adentro. Podría haber cualquier cosa. De hecho, nosotros podríamos meter campos que no tengan nada que ver con el contacto y completarlo. Y lo que quiero decir con esto es que no es que el repeater sabe que esto es una lista de contactos, porque si no, lo que yo podría hacer fácilmente, quizás alguno lo piensa, porque yo lo pensé cuando lo intenté hacer. Bueno, acá hago un Create Opportunity Contact role, con lo que se modificó el repeater y ya está. Pero no, porque el repiter efectivamente no sabe qué es lo que hay ahí adentro. Entonces, lo que nos falta, y es un elemento que queremos mostrar ahora, también de los que consideramos avanzados, es el elemento transform. Entonces, lo que vamos a hacer, vamos a convertir esta lista de no sabemos qué que hay acá adentro en, efectivamente, opportunities, contact roles. Para hacer eso, lo primero que tenemos que hacer antes de hacer eso es insertar la oportunidad, porque el opportunity contact role, uno de los requerimientos que tiene es que necesita la oportunidad, necesita la ID de la oportunidad.

[00:23:30.21] – Hablante 2
Entonces, vamos a hacer dos cosas antes. Lo primero, si se acuerdan, es que les dije que nos falta algo en la oportunidad, que es tener una ID de cuenta. Entonces, lo primero que vamos a hacer es hacer una asignación de eso, o sea, un assignment normal, que sea Seleccionamos, vamos a ver. Set. Account. Y entonces, dijimos que a nuestra nueva oportunidad, en su campo account ID, le vamos a setear nuestra cuenta seleccionada. Que si se fix, si se acuerdan, lo quiero copiar acá. Es lo que el usuario selecciona en esta pantalla, en la selección de cuenta de screen, en nuestro data table. Vamos a venir acá. Ahí estamos. Y vamos a elegir el ID y ahí voy para Un momentito del chat.

[00:24:15.17] – Hablante 3
Si querés, yo voy respondiendo la pregunta de Diana. Ella pregunta: Todavía no entiendo qué hace el repeater. Básicamente, en el ejemplo que estamos dando, Fran está armando como una especie de layout chiquitito de contactos. Él arma uno solo y lo que hace el repeat es repetirlo en pantalla la cantidad de veces que vos le digas al flow. En este caso, ¿qué cantidad de veces? La cantidad de contactos que seleccione la pantalla anterior. Otro caso de uso, quizá vos querés armar un creador de contactos, entonces vos podrías permitir que el usuario diga: Okey, nombre y apellido, por ejemplo, Diana D. Generar otro contacto, te genera otra línea abajo con el mismo layout, los mismos campos, y eso te va armando una lista de todos los contactos que querés cargar. Espero que ayude la explicación.

[00:24:59.19] – Hablante 2
Sí, bien. Quizás la forma más fácil de verlo es, yo agregué solamente dos systems acá, el nombre del contacto elegido y el contact row, solamente los agregué dos veces. Y si yo me voy a hacer el debacle de esto, vamos a guardar. Y elijo el bebé, que me lo ordena cada vez como quiere. Eso es por guardar y después de bajear.

[00:25:17.22] – Hablante 4
Me dieron tips de cómo ordenarlo también.

[00:25:19.23] – Hablante 2
Vamos. Vamos a salir un poco con los tips. Te voy a mostrar rápido esto. Esto lo agregué en ese elemento solo una vez. El evento. Y si yo vengo ahora y elijo muchos contactos. Lo que va a hacer el repeater es que va a agarrar cada uno de estos, que la lista que yo le estoy pasando son los que seleccionó acá. Entonces, me va a hacer uno, dos, tres, cuatro, cinco, seis repeticiones de esos dos campitos que yo elegí. Quizás ahí queda un poco más claro qué es lo que hace el repeater. Vamos a cerrar esto de acá. A ver alguno que me ayude de los que está acá para ver cómo ordenamos esto, que haya visto los comentarios.

[00:25:55.18] – Hablante 4
Bien.

[00:25:56.13] – Hablante 2
Desean que altere Hacerle un sort. Claro.

[00:26:03.13] – Hablante 4
O usar el elemento sort, que también es buena.

[00:26:06.10] – Hablante 2
Después de traer el teléfono. Esta me gusta más. Más práctica.

[00:26:09.21] – Hablante 4
Es más rápida, sí.

[00:26:11.14] – Hablante 2
A ver si funciona. Hay premios, ¿no? Si funciona. Hay un abrazo de Josu. Hay un abrazo de Josu.

[00:26:16.05] – Hablante 4
Y te agrada por tu ortografía, fron. Se escribe Tessin Jack con C y luego con doble C.

[00:26:20.19] – Hablante 2
Ahí está, sí, man. Ahí me ha decido la pared. ¿Funcionó? Funcionó. Muy bien. Y gracias ahí por el tip. Entonces, volviendo y ya viendo la parte más suculente y final. Nosotros ya tendríamos nuestro account ID para la oportunidad, entonces podemos insertarla. Vamos a hacer un create record para que me guarden más todavía la verdad. Y vamos a ir con new opportunity. Entonces, ahí metemos la oportunidad. ¿Por qué debemos hacer esto? Recuerden porque el counter roll necesita la oportunidad de ir, y si no, hasta acá no teníamos la oportunidad de ir. Entonces, vamos de vuelta. ¿Qué queremos hacer ahora con estos contact roles? Queremos transformarlos, porque recuerden, esto es un repiter que no tiene formato, no es una lista de contact roles ni es una una lista de contacts, porque acá ya hay un dato que estamos inventando, que es una píblis nuestra. Entonces, ¿qué queremos hacer? Queremos transformar eso. ¿Cómo lo hacemos? Vamos a meter un loop acá, porque el repiter, mal que mal, es una lista de algo, es una lista de elementos. Entonces, vamos a hacer loop, repiter, elements. Y lo que vamos a hacer es ir transformando cada uno de esos elementos, lo vamos a ir convirtiendo en un contact row section.

[00:27:22.02] – Hablante 2
Para hacer eso, importante, tenemos que primero elegir la pantalla, esto es algo que a mí me costó un poquito entender, y acá, contact repeater. Y acá, importante, ¿Cuál vamos a elegir? De estos, all items, porque no vamos a tener ni agregados los pre-populated tampoco, porque nos interesa la información que está en ese pick list, no solo lo que nos trajo como para prearmar la lista, ni tampoco los eliminados. Obviamente, los eliminados no. Esta opción es un poco tramposa. Vamos a agregar los all items. No se me ocurrió ningún ejemplo en el que pueda pensar por qué uno querría agregar los eliminados. O sea, por qué el eliminado sería como algo positivo para trabajar después, pero capaz que debe haber por algo estar. Pensar como si fuese en producto, si quizás vos querés eliminar de cierta continuidad. Ahí es muy buena. Es procesar, no sé, imagínate. Sí, es un buen caso. Nosotros, en este caso, vamos a elegir el all items. Nos interesa integrar por todos los elementos que nos quedaron ahí, porque sabemos que no nos pueden agregar nada. Recuerden, es un caso específico de repita. Una vez dentro del loop, vamos a usar el otro elemento que les queremos mostrar que está bastante interesante, que es este elemento transform.

[00:28:20.09] – Hablante 2
Vamos a poner acá transform to of contact. Me he olvidado el nombre. Este elemento superpotente lo que nos va a hacer es nos va a permitir meter una fuente de información y eso lo va a convertir en un objetivo, un target de data. Entonces, nuestra fuente de información, en este caso, va a ser cada uno de los elementos que estemos iterando. Entonces, vamos a elegir esto. Si te fijan, acá me trajo los campos que nosotros mapeamos arriba. Una cosa importante, nosotros también necesitamos el opportunity ID. Entonces, algo muy copado de este elemento es que nos deja elegir varias fuentes de información. Entonces, y nos vamos también a crearnos nuestro new opportunity, porque acá vamos a necesitar el, recuerden, ID. Ahora, el target data va a ser una nueva lista, entonces, vamos a crear uno nuevo. Lista de registros. Y va a ser de opportunity, muy bien. Entonces, el opportunity contact role necesita de tres cosas. Necesita de una oportunidad, necesita de un contacto y necesita del bendito campo role. Entonces, vamos a ver de dónde sacamos cada uno de esos campos. El ID del contacto lo vamos a sacar de nuestro ID del repeater. Esto es algo que, si ustedes recuerdan, nosotros no agregamos, pero Salesforce te lo agrega solo.

[00:29:31.17] – Hablante 2
No quiero irme de acá para no perder esto, pero en la pantalla de repeater, Salesforce nos dice que nos va a traer el ID por default de esa lista. Entonces, nosotros eso ya lo tenemos y lo vamos a mapear con el contact ID. ¿Qué pasó acá? No me deja poner el ID con el contact ID. A ver si me dejan los otros.

[00:29:48.23] – Hablante 4
Porque estás en una colección, lo que tienes a la derecha, Fran, y lo que tienes a la izquierda es un solo elemento.

[00:29:54.01] – Hablante 2
Es toda la razón. No sé por qué dice colección, si estamos loopeando. Buen punto ese. Claro. Entonces, vamos Vamos a crear uno que no nos permita ser varios. Buen punto ahí el de Steve. Y ahora, sí nos deja. El unit figure ID con el contact ID. El roll, vamos a mapear con el roll. Esto puede fallar. Es lo único de la demo que no tenemos así de cierta de que va a funcionar, porque este campo es uno de esos que son tramposos en Salesforce, porque si viene acá, me lo hace como una piquis, en realidad es un campo de texto. Ese es otro motivo por el cual tampoco lo agregamos como el campo. No referenciamos el campo directamente, sino que creamos nuestra propia píclis. Y vamos a el opportunity ID. Vamos a completar con el ID de nuestra oportunidad. Y con esto terminamos. No me tira falta agregar esto a una variable que va a ser una lista y después al final, hacemos la inserción de esa lista. Si quieren ahí, alguno comente en los comentarios por qué no deberíamos hacer el insert de acá de cada uno de estos. Pero lo que vamos a hacer es vamos a crearnos un nuevo recurso, en este caso, que va a ser una lista.

[00:30:58.19] – Hablante 2
Ahora sí, el contact roles, que va a ser una lista, justamente, de registros. Entonces, vamos a hacer un insert. Técnicamente, es opportunity, como está el rol, pero no se lo está en el área. Vamos a hacer registro. Acá sí vamos a dejar que se puedan meter muchos registros. El objeto, acá sí, no lo podemos hacer los que abreviamos porque Salesforce quiere el nombre completo y guardamos. Y por último, dentro de nuestro group, lo que hacemos es un assignment, contact role to the list. En este caso, del lado izquierdo siempre elegimos a qué queríamos agregar, entonces es nuestro contact role to insert. Y en este caso le agremos un add y ya está. Esta es una parte de strict y también de Salesforce. Cuando uno va a elegir este elemento, te va a preguntar los campos. Entonces, lo que hay que hacer es, ahorramos el punto y hacemos clic. Y eso nos deja el elemento superintuitivo. Si no lo supieron entender así, ahí queda. Ahí nos queda el elemento. Y por último, deberíamos hacer la inserción de esta lista, de nuestros quizás Me falta algo? ¿Piensan que me está faltando algo? ¿Que algo puede fallar? Vamos.

[00:32:04.22] – Hablante 2
Vamos. Lo descubriremos. Ahí va. Muy bien. Vamos a probarlo ahora. Siguiente. Vamos a poner un Los de ahí. Acá. ¿Por qué no llegamos con la demo para México? Al Station Prospecting. Voy a elegir. Me voy a elegir a mí mismo y lo voy a elegir a… ¿Está Josué? Josué. Morales va a ser el business user y Mendoza va a ser el decision maker. Y vamos a cruzar los dedos ahora porque esto puede fallar. Funcionó. Capaz que no guardé el final. Vamos a ver si creó la oportunidad primero. La demo para México y los contact rooms. Josué y Mendoza como decision maker y Francisco Morales como business user. Y hasta Acá faltando seis minutos para terminar la demo. Vamos a abrir un poco para preguntas, dudas, consultas, sugerencias, insultos, lo que consideren.

[00:32:52.16] – Hablante 1
Voy a compartir pantalla mientras pensamos en todas las preguntas que tenemos, porque vamos a hacer un poco de control mental, control mental, y vamos a pensar en 21 de noviembre, 21 de noviembre y nos vamos grabando esta la fecha en la mente, el cerebro, porque el próximo, 21 de noviembre, le voy a dar una pequeña sorpresa, pequeña sorpresa. El 21 de noviembre tenemos el próximo México, Dreaming, un evento en el que no solo las personas que están en México tienen que participar, sino que es una excelente oportunidad de que todos los gana, todos los traidores, nos reunamos en un evento maravilloso en donde vamos a tener la posibilidad de aprender, de verla a Grisel en vivo y al mismo tiempo de hacer networking y compartir experiencias. Yo sé que Y este es el… Ustedes tienen que saber que este es el sombrero de la telepatía. Yo con esto puesto les doy telepatía y les pongo esa fecha, 21 de noviembre. Obviamente que si quieren mucha más información en México francescodreaming. Com, van a poder encontrar todos los detalles del evento para comprar los tickets y también para postularse como conferenciante para poder dar una charla.

[00:34:29.05] – Hablante 1
Ahora, Vamos a volver a Francisco. Dejo de compartir esto y vamos con todas las preguntas.

[00:34:38.02] – Hablante 2
Estamos. Consultas. Nos quedan tres minutitos. A ver, además, no vaya a decir de vuelta lo que te dijo con este. Me mataron. Qué lindo el sombrero, Juanma. Señón, decision, decision, decision, decision, tiempo, por la buena onda. Espero que les haya gustado, que haya sido útil y estamos a un mensaje de distancia. Muchas gracias.

[00:35:07.23] – Hablante 1
Bien, entonces vamos a recapitular. Psicodreaming. Com. Toda la información para el próximo gran evento de Salesforce en Iberoamérica. Todos los que estén registrados van a poder obtener la grabación. Al mismo tiempo, el recording en los próximos días los vamos a estar subiendo a YouTube, subiéndolo a LinkedIn. En egafutura. Com/selford, van a encontrar la grabación también y de las clases anteriores. Y este es el primero de muchos. El primero de muchos. Visiten el perfil de Grisel, el LinkedIn, el de Josué, el de Bebé Corazón, este, el de Francisco y el mío también, Juan Manuel. Los queremos un montón. Realmente estamos muy emocionados de poder haber hecho esta capacitación para todos ustedes y nos vemos en el próximo evento. Saludo muy grande para todos.