Una de las limitaciones que existian en referencia al uso de External Objects, era su limitada capacidad de Reporting.
En un artículo de Mark Kovacevich, Salesforce Connect Reporting, explicaba un workaround mediante programación en APEX:
- Mostrando una List View con un Controller básico
- VisualForce que con un Custom Controller muestra los registros y pinta un par de diagramas.
Este workaround, no era una funcionalidad para un usuario final, y requiere de programación, despliegue, testing, etc.
Paralelamente surgió en la comunidad y se formalizó una Idea, demandando la funcionalidad de reporting sobre External Objects. Finalmente en la Winter 17, esta idea se materializó y actualmente está disponible el Reporting sobre External Objects.
Cómo crear Reports con un External y otros objetos de forma estándar
Veamos el proceso paso a paso con capturas de pantalla que son autoexplicativas:
Activación de Reporting en el External Object

Creación de una External Lookup Relationship
Creación de un Custom Report Type donde participa nuestro External Object
Construcción de un Report (y/o de un Dashboard basado en un Report)

Condicionantes a tener en cuenta
En este enlace, se listan un conjunto de condiciones para llevar a cabo el reporting, a tener en cuenta, de los cuales destaco los que creo más importantes y no obvios:
- Cada llamada, y como es a un sistema externo, consume 1 Callout, excepto si usamos Heroku como oData Producer.
- Esto nos oblida a validar el Límite, que tengamos en la ORG, con la previsión de llamadas que podamos llegar a tener
- Además si el Report es de tipo Joined, se computa una llamada por cada bloque que llevemos a cabo.
- Cuando la URL para ejecutar la llamada externa excede los 2KBs, por ejemplo, cuando se incluyen filtros o condiciones, el sistema trocerará la petición en llamadas cuya URL no exceda de los 2KBs.
- En números globales, un report que involucra un External Object, no obtendrá más de 2000 registros. Si este objeto continee objetos hijos, este nuevo puede variar.
- Este valor según explica el Product Manager de Salesforce Connect, en un video, es un magic number, establecido por Salesforce para asegurar un buen rendimiento, y no se basa en una litmitación de oData ni del adaptador que se haya seleccionado
- La opción High Data Volume solo debe seleccionarse cuando el Consumer y el Producer sean instancias de Salesforce, no para escenarios de acceso a un adpatador o fuente externa fuera de Salesforce
- Cross filters don’t support external lookup relationships. An external lookup relationship links a child standard, custom, or external object to a parent external object.
- Las funcionalidades de Buckets e Historical Trend Reporting no estan disponibles para External Objects, dado que los datos estan almacenados fuera de Salesforce.
Enlaces interesantes
- Artículo de Mark Kovacevich sobre las limitaciones que inicialmente tenían los External Objects en Reporting: Salesforce Connect Reporting
- Idea donde se confirma la disponibilidad sobre de Reporting sobre External Objects: Run Reports Directly against External Objects
- Artículo en oData.org con ejemplo sobre configuración de Report Types usando External Objects: Salesforce Connect External Object Reporting
- Nota del Winter17 donde se detalla la neva funcionalidad de Reporting sobre External Objects: https://releasenotes.docs.salesforce.com/en-us/winter17/release-notes/rn_rd_external_object_reports.htm
Deja una respuesta