Apex Academy

Desafío 1

Sistema de Asignación Automática de Leads

Sales Cloud · Trigger + Handler + clase de lógica, bulkificado y a prueba de datos incompletos.

Bloqueado

Completa el módulo requisito para desbloquear este desafío. · Módulo 7: Trigger Handlers

La nutria: Antes de empezar: ¿te acuerdas?

En la arquitectura del Módulo 7, ¿dónde vive la regla de negocio?

La empresa recibe Leads de tres fuentes: el formulario web, las ferias y una lista comprada que entra por Data Loader en tandas de 200. Hoy un Admin los reparte a mano cada mañana y los Leads sin dueño claro se quedan días sin tocar.

Tu trabajo: automatizar el reparto. Cada Lead debe asignarse a un Sales Rep según su región y su industria, usando una tabla de asignación que ya existe en la org. Si al Lead le falta la región, va al representante por defecto: nunca se queda sin dueño.

La nutria: Cómo lo harías con clics

Como Admin, esto lo resolvía con las reglas de asignación de leads, pero sus entradas se configuran en Setup, y Ventas quiere mantener la tabla de asignación en un objeto personalizado, sin tocar Setup. Un flow before-save sí podría leer esa tabla: un Get Records por región e industria, otro por región sola si no hay coincidencia, y el representante por defecto al final. Funcionaría. Aquí lo construyes en código porque es el examen de todo lo aprendido: el trigger es el «cuándo», el handler prepara los datos y el servicio carga la tabla una sola vez en un Map y decide el dueño de cada lead en memoria.

El modelo de datos

Objeto / campoPara qué se usa
Lead.Region__c (Text)Región del Lead. Puede venir vacío.
Lead.Industry (Picklist)Industria estándar del Lead.
Assignment_Rule__cObjeto personalizado con Region__c, Industry__c, Sales_Rep__c (Lookup a User) e Is_Default__c (Checkbox).

Lo que vas a construir

  • 1

    El Trigger

    LeadAssignmentTrigger.trigger

    Un único trigger sobre Lead, en los contextos before insert y before update.

  • 2

    El Handler

    LeadAssignmentHandler.cls

    Recibe la lista de Leads del contexto y orquesta: prepara los datos y llama a la clase de lógica.

  • 3

    La clase de lógica

    LeadAssignmentService.cls

    Indexa las reglas en un Map por región+industria y asigna el OwnerId de cada Lead.

Criterios de evaluación

  • ¿Se lee la intención del código sin ejecutarlo? Un nombre como ruleMapByRegionAndIndustry ahorra un comentario.
  • ¿Qué pasaría si mañana añaden una tercera dimensión (por ejemplo, tamaño de cuenta) a la regla de asignación?
  • ¿Podrías escribir un test que cubra el camino feliz y el Lead sin región sin tocar la clase de servicio?
Volver al inicio