# Patrones de Integración Salesforce: MuleSoft, APIs y Middleware 2026
Salesforce no vive aislado. En cualquier empresa mexicana mediana o grande, Salesforce necesita hablar con el ERP (SAP, Oracle, Dynamics), con el sistema de facturación, con la plataforma de e-commerce, con el sistema de nómina y probablemente con 10 herramientas más. La integración es donde los proyectos de Salesforce se hacen o se rompen.
El problema no es la falta de opciones — Salesforce tiene más APIs y herramientas de integración que cualquier otro CRM. El problema es elegir el patrón correcto para cada caso, evitar los anti-patterns que generan deuda técnica, y construir integraciones que soporten el crecimiento del negocio sin caerse cada vez que un sistema se actualiza.
Tabla de Contenidos
- Por qué la integración es el reto principal
- APIs nativas de Salesforce
- Patrones de integración fundamentales
- Real-time vs Batch: cuándo usar cada uno
- MuleSoft: la plataforma de integración de Salesforce
- Integración SAP-Salesforce: el bridge más demandado
- Herramientas de integración alternativas
- Salesforce Connect y External Objects
- Event-driven architecture con Platform Events
- Manejo de errores y monitoreo
- Costos de integración en México
- Errores comunes y anti-patterns
- Preguntas frecuentes
---
Por qué la integración es el reto principal {#por-que-integración}
La realidad de una empresa mexicana típica
Una empresa manufacturera en Monterrey con 300 empleados podría tener:
- SAP Business One: ERP (finanzas, inventario, producción)
- Salesforce Sales Cloud: CRM (ventas, pipeline, cotizaciones)
- Microsoft 365: Email, documentos, colaboración
- Aspel NOI: Nómina
- Shopify: E-commerce
- PAC (Facturación): Digiprocess o similar
- WhatsApp Business API: Comunicación con clientes
- Power BI: Reportes ejecutivos
- Sistema legacy: Algún sistema de hace 15 años que nadie quiere tocar
Cada uno de estos sistemas tiene datos que los otros necesitan. Sin integración, los datos se duplican, se desincronizaron y se generan errores que cuestan dinero.
El costo de la no-integración
- Datos duplicados: 15–20% del tiempo de ventas se pierde buscando o reconciliando información
- Errores de inventario: Vender producto que no hay porque Salesforce no sabe lo que sabe SAP
- Facturación tardía: Cerrar un deal en Salesforce y que la factura tarde 3 días porque alguien tiene que capturarla manualmente en el ERP
- Reportes inconsistentes: El director ve una cosa en Salesforce y otra en SAP, pierde confianza en ambos
- Clientes frustrados: "Me dijeron que mi pedido estaba listo pero cuando llamé nadie sabía nada"
---
APIs nativas de Salesforce
Salesforce ofrece múltiples APIs para diferentes casos de uso:
REST API
La más usada para integraciones modernas:
```http
# Crear un registro
POST /services/data/v60.0/sobjects/Account
Content-Type: application/json
Authorization: Bearer {access_token}
{
"Name": "Empresa ABC",
"BillingCity": "Monterrey",
"Industry": "Manufacturing",
"Phone": "+5281XXXXXXXX"
}
```
```http
# Consultar registros
GET /services/data/v60.0/query?q=SELECT+Id,Name,Amount+FROM+Opportunity+WHERE+StageName='Closed Won'+AND+CloseDate=THIS_YEAR
Authorization: Bearer {access_token}
```
Ideal para: CRUD de registros, consultas ad-hoc, integraciones custom, aplicaciones web/móvil.
Límites: 100,000 API calls/24 horas (Enterprise Edition). Más con paquetes adicionales.
Bulk API 2.0
Para grandes volúmenes de datos (miles a millones de registros):
```http
# Paso 1: Crear job
POST /services/data/v60.0/jobs/ingest
{
"operation": "upsert",
"object": "Contact",
"externalIdFieldName": "External_ID__c",
"contentType": "CSV",
"lineEnding": "LF"
}
# Paso 2: Subir datos (CSV)
PUT /services/data/v60.0/jobs/ingest/{jobId}/batches
Content-Type: text/csv
External_ID__c,FirstName,LastName,Email
EXT-001,María,García,maria@empresa.com
EXT-002,Carlos,López,carlos@empresa.com
```
Ideal para: Migración de datos, sincronización nocturna, carga masiva de registros.
Límites: 150MB por archivo, 10,000 batches por job rolling 24 horas.
SOAP API
La API legacy pero aún necesaria para algunos casos:
```xml
xmlns:sf="urn:partner.soap.sforce.com">
```
Ideal para: Sistemas legacy que solo hablan SOAP, metadata operations, describeSObject.
Streaming API / Platform Events
Para integraciones en tiempo real basadas en eventos:
```javascript
// Suscribirse a cambios en Oportunidades
const faye = new Faye.Client('/cometd/60.0');
faye.subscribe('/topic/OpportunityUpdates', (message) => {
console.log('Oportunidad actualizada:', message.data.sobject);
});
```
Ideal para: Notificaciones en tiempo real, sincronización event-driven, triggers externos.
Composite API
Para operaciones que requieren múltiples llamadas en una sola request:
```json
{
"compositeRequest": [
{
"method": "POST",
"url": "/services/data/v60.0/sobjects/Account",
"referenceId": "newAccount",
"body": { "Name": "Empresa XYZ" }
},
{
"method": "POST",
"url": "/services/data/v60.0/sobjects/Contact",
"referenceId": "newContact",
"body": {
"LastName": "García",
"AccountId": "@{newAccount.id}"
}
}
]
}
```
Ideal para: Crear registros relacionados en una sola transacción, reducir llamadas API.
Resumen de APIs
| API | Volumen | Latencia | Uso principal |
|---|
| REST | Bajo-medio | Baja | CRUD, queries, integración general |
|---|---|---|---|
| Bulk 2.0 | Alto | Alta | Carga masiva, migración |
| SOAP | Bajo | Media | Legacy, metadata |
| Streaming | N/A | Muy baja | Eventos en tiempo real |
| Composite | Medio | Baja | Operaciones multi-objeto |
| GraphQL | Medio | Baja | Queries flexibles (nuevo) |
---
¿Necesitas integrar Salesforce con tu ERP o sistemas existentes? Nuestro equipo de consultoría Salesforce diseña integraciones robustas que no se rompen con cada actualización.
---
Patrones de integración fundamentales
1. Request-Reply (Síncrono)
El sistema A llama al sistema B y espera la respuesta.
```
Salesforce ──── Request ────▶ ERP
Salesforce ◀── Response ──── ERP
```
Ejemplo: Salesforce consulta el inventario disponible en SAP antes de crear una cotizacion.
Cuándo usar:
- Necesitas la respuesta inmediatamente
- La operación es rápida (< 2 segundos)
- El sistema externo tiene alta disponibilidad
Cuándo NO usar:
- La operación tarda más de 10 segundos (riesgo de timeout)
- El sistema externo es inestable
- No necesitas la respuesta de inmediato
Implementación en Salesforce: Apex callouts, External Services, Flow HTTP Callout.
2. Fire-and-Forget (Asíncrono)
El sistema A envía un mensaje y no espera respuesta.
```
Salesforce ──── Message ────▶ Queue ────▶ ERP
(no espera respuesta)
```
Ejemplo: Cuando se cierra una Oportunidad en Salesforce, se envía un evento para que el ERP genere la orden de venta.
Cuándo usar:
- No necesitas respuesta inmediata
- La operación puede tardar
- El sistema destino puede estar temporalmente no disponible
- Necesitas desacoplamiento entre sistemas
Implementación: Platform Events, Outbound Messages, MuleSoft con colas.
3. Batch Data Synchronization
Sincronización periódica de datos en lotes.
```
┌─── 2 AM ───┐
SAP ────▶│ ETL/Job │────▶ Salesforce
└─────────────┘
```
Ejemplo: Cada noche, SAP envía la lista actualizada de productos y precios a Salesforce.
Cuándo usar:
- Los datos no necesitan estar sincronizados en tiempo real
- Grandes volúmenes (miles de registros)
- Ventanas de mantenimiento disponibles
Implementación: Bulk API + scheduled job, MuleSoft batch, Informatica, Talend.
4. Remote Call-In
Un sistema externo llama a Salesforce para leer o escribir datos.
```
ERP ──── API Call ────▶ Salesforce
ERP ◀── Response ──── Salesforce
```
Ejemplo: El portal de clientes (no Salesforce) consulta los casos abiertos del cliente desde Salesforce vía REST API.
Implementación: REST/SOAP API de Salesforce, Apex REST endpoints custom.
5. UI Update Based on Data Changes
La UI de Salesforce se actualiza cuando cambian datos en un sistema externo.
```
ERP ──── Event ────▶ Platform Events ────▶ LWC (UI update)
```
Ejemplo: Un agente de servicio ve en tiempo real cuando el estatus de envío cambia en el sistema de logistica.
Implementación: Platform Events + emp API en Lightning Web Components.
6. Data Virtualization
Mostrar datos externos en Salesforce sin replicarlos.
```
Salesforce UI ──── Query ────▶ External System
◀── Data ────
```
Ejemplo: Ver el historial de facturas del ERP directamente en la página del Account en Salesforce, sin copiar las facturas a Salesforce.
Implementación: Salesforce Connect + External Objects, o Apex callouts en LWC.
---
Real-time vs Batch: cuándo usar cada uno
La decisión más importante en cualquier integración:
Real-time (tiempo real)
| Ventaja | Desventaja |
|---|
| Datos siempre actualizados | Mayor complejidad |
|---|---|
| Mejor experiencia de usuario | Mayor carga en ambos sistemas |
| Decisiones con info actual | Más puntos de falla |
| Más costoso de implementar |
Usar real-time cuando:
- Un vendedor necesita ver el inventario actual antes de cotizar
- Un agente de servicio necesita ver el estatus de un pedido en el ERP
- Una aprobación en Salesforce debe desencadenar acción inmediata en otro sistema
- El dato pierde valor si no es actual (precios, disponibilidad)
Batch (por lotes)
| Ventaja | Desventaja |
|---|
| Más simple de implementar | Datos no 100% actualizados |
|---|---|
| Maneja grandes volúmenes eficientemente | Requiere ventana de ejecución |
| Menor impacto en sistemas durante horario laboral | Errores se detectan después |
| Más resiliente a fallos temporales |
Usar batch cuando:
- Catálogo de productos (se actualiza diaria o semanalmente)
- Datos maestros de clientes (cambios poco frecuentes)
- Reportes y analytics (no necesitan ser real-time)
- Sincronización histórica de datos
- Volúmenes > 10,000 registros
Enfoque híbrido (lo más común)
La mayoría de las integraciones reales combinan ambos:
- Real-time: Oportunidades cerradas → orden en ERP, consulta de inventario, estatus de pedido
- Batch: Catálogo de productos, listas de precios, datos maestros de clientes, saldos contables
---
MuleSoft: la plataforma de integración de Salesforce
Qué es MuleSoft
MuleSoft es la plataforma de integración que Salesforce adquirió en 2018 por $6.5 mil millones. Es un iPaaS (Integration Platform as a Service) que conecta cualquier sistema con cualquier otro.
Por qué MuleSoft para Salesforce
- Propiedad de Salesforce: Integración nativa, soporte unificado
- API-led connectivity: Metodología probada para integraciones escalables
- Anypoint Platform: Desarrollo, gestión y monitoreo en una plataforma
- Connectores preconstruidos: 400+ conectores para sistemas comunes (SAP, Oracle, Workday, etc.)
- Reutilización: APIs que se construyen una vez y se usan en múltiples integraciones
API-led connectivity: la metodología
MuleSoft promueve una arquitectura de tres capas:
```
┌─────────────────────────────────────────┐
│ Experience APIs │
│ (Mobile App, Portal, Salesforce UI) │
├─────────────────────────────────────────┤
│ Process APIs │
│ (Lógica de negocio, orquestación) │
├──────────┬──────────┬───────────────────┤
│ System │ System │ System │
│ API: │ API: │ API: │
│ SAP │ Salesforce│ E-commerce │
└──────────┴──────────┴───────────────────┘
```
System APIs: Conectan directamente con cada sistema (SAP, Salesforce, DB). Abstraen la complejidad técnica.
Process APIs: Orquestan datos de múltiples System APIs para un proceso de negocio (ej: "crear pedido" = validar inventario en SAP + crear opportunity en Salesforce + notificar vía email).
Experience APIs: Exponen datos específicamente para cada canal (la app móvil necesita datos diferentes que el portal web).
Ejemplo: flujo de MuleSoft
```xml
topic="OrderClosed" /> output application/xml --- { SalesOrder: { CardCode: payload.Account__r.SAP_ID__c, DocDate: payload.CloseDate, Lines: payload.OpportunityLineItems map { ItemCode: $.Product2.SAP_Product_Code__c, Quantity: $.Quantity, Price: $.UnitPrice } } }]]> bapiName="BAPI_SALESORDER_CREATEFROMDAT2" /> type="Opportunity"> #[output application/java --- [{ Id: vars.opportunityId, SAP_Order_Number__c: payload.SalesOrderDocEntry }]] ``` MuleSoft no es barato: Más costos de implementación ($30,000–$100,000 USD para el proyecto inicial). ¿Vale la pena? Para empresas con 5+ integraciones complejas y presupuesto enterprise, sí. Para 1–2 integraciones simples, hay opciones más económicas. --- ¿Necesitas integrar Salesforce con SAP u otros sistemas? Nuestros especialistas diseñan arquitecturas de integración que escalan con tu negocio. --- Muchas empresas mexicanas tienen: Integrarlos es el proyecto de integración más solicitado en el mercado mexicano. Reto 1: IDs diferentes SAP usa CardCode/ItemCode, Salesforce usa IDs de 18 caracteres. Solución: Campo de External ID en Salesforce que almacena el código SAP. Usar upsert en lugar de insert para evitar duplicados. Reto 2: Modelo de datos diferente SAP tiene un modelo relacional complejo; Salesforce tiene un modelo orientado a objetos diferente. Solución: Capa de transformación en el middleware que mapea y transforma datos. No intentes replicar el modelo de SAP en Salesforce. Reto 3: Volumen de datos SAP puede tener millones de registros históricos. Solución: No migres todo. Sincroniza solo datos activos (clientes activos, productos vigentes, pedidos del último año). Datos históricos se consultan on-demand vía External Objects. Reto 4: Conflictos de datos ¿Quién es el "master" de cada dato? Solución: Definir ownership claro: Reto 5: Fiscalidad mexicana Los CFDI se generan en SAP (normalmente) y Salesforce necesita visibilidad. Solución: SAP genera CFDI → XML y PDF se almacenan en Salesforce como attachments en el Account o en un objeto custom de facturación. --- Para integraciones simples sin middleware: ``` Flow: Cuando se cierra una Oportunidad → HTTP Callout a API del ERP → Parsear respuesta → Actualizar campo en Oportunidad ``` Ventaja: Sin costo adicional, todo dentro de Salesforce. Desventaja: Limitado para escenarios complejos, sin monitoreo enterprise. Para lógica de integración custom: ```apex // Apex trigger + callout public class OrderSyncService { @future(callout=true) public static void syncToERP(String opportunityId) { Opportunity opp = [SELECT Id, Name, Amount, (SELECT Product2.ProductCode, Quantity, UnitPrice FROM OpportunityLineItems) FROM Opportunity WHERE Id = :opportunityId]; HttpRequest req = new HttpRequest(); req.setEndpoint('callout:ERP_Named_Credential/api/orders'); req.setMethod('POST'); req.setHeader('Content-Type', 'application/json'); req.setBody(JSON.serialize(mapToERPFormat(opp))); HttpResponse res = new Http().send(req); if (res.getStatusCode() == 201) { Map (Map opp.ERP_Order_Number__c = (String) result.get('orderNumber'); update opp; } else { // Log error, create integration error record Integration_Log__c log = new Integration_Log__c( Type__c = 'Error', Endpoint__c = 'ERP Order Sync', Status_Code__c = String.valueOf(res.getStatusCode()), Response_Body__c = res.getBody().left(32000) ); insert log; } } } ``` Para integraciones simples y automatizaciones: Ventaja: No-code, rápido de configurar, económico para volúmenes bajos. Desventaja: No escala para enterprise, limitado en transformaciones complejas. Costo: $30–$300 USD/mes. Alternativa open source a Zapier: --- Salesforce Connect permite acceder a datos externos desde Salesforce sin replicarlos. Los datos se consultan en tiempo real del sistema origen. ``` Salesforce UI → External Object → OData/Custom Adapter → Sistema Externo ``` Los External Objects se ven y se comportan como objetos nativos de Salesforce en la UI, pero los datos viven en el sistema externo. --- ¿Necesitas integrar Salesforce con SAP o sistemas legacy? Contáctanos para una evaluación de integración y te recomendamos la arquitectura correcta. --- Platform Events son el mecanismo de Salesforce para arquitecturas basadas en eventos: ```apex // Publicar un evento desde Apex Order_Event__e event = new Order_Event__e( Order_Id__c = opportunity.Id, Action__c = 'CLOSED_WON', Amount__c = opportunity.Amount, Account_SAP_Id__c = opportunity.Account.SAP_ID__c ); Database.SaveResult sr = EventBus.publish(event); ``` ```apex // Suscribirse a eventos con un trigger trigger OrderEventTrigger on Order_Event__e (after insert) { for (Order_Event__e event : Trigger.New) { if (event.Action__c == 'CLOSED_WON') { // Procesar el evento OrderSyncService.syncToERP(event.Order_Id__c); } } } ``` CDC publica eventos automáticamente cuando cambian registros: ```javascript // Suscribirse a cambios en Accounts desde una app externa const cometd = new CometD(); cometd.subscribe('/data/AccountChangeEvent', (message) => { const change = message.data.payload; console.log('Account changed:', change.ChangeEventHeader.recordIds); console.log('Changed fields:', change.ChangeEventHeader.changedFields); // Sincronizar con sistema externo }); ``` Ventaja: No necesitas triggers ni código custom para detectar cambios. Salesforce publica el evento automáticamente. --- Cada integración debe tener un mecanismo de logging: ```apex // Objeto custom: Integration_Log__c public class IntegrationLogger { public static void logSuccess(String integration, String endpoint, String requestBody, String responseBody) { insert new Integration_Log__c( Integration_Name__c = integration, Endpoint__c = endpoint, Status__c = 'Success', Request_Body__c = requestBody?.left(32000), Response_Body__c = responseBody?.left(32000), Timestamp__c = Datetime.now() ); } public static void logError(String integration, String endpoint, Integer statusCode, String errorMessage) { insert new Integration_Log__c( Integration_Name__c = integration, Endpoint__c = endpoint, Status__c = 'Error', Status_Code__c = String.valueOf(statusCode), Error_Message__c = errorMessage?.left(32000), Timestamp__c = Datetime.now() ); } } ``` No todo error es permanente. Implementa retries para errores transitorios: Crea un dashboard en Salesforce con: Si un sistema externo está caído, no sigas bombardeándolo con requests: ```apex public class CircuitBreaker { private static Integer failureCount = 0; private static Datetime lastFailure; private static final Integer THRESHOLD = 5; private static final Integer TIMEOUT_MINUTES = 5; public static Boolean isOpen() { if (failureCount >= THRESHOLD && lastFailure?.addMinutes(TIMEOUT_MINUTES) > Datetime.now()) { return true; // Circuito abierto, no intentar } return false; } public static void recordFailure() { failureCount++; lastFailure = Datetime.now(); } public static void recordSuccess() { failureCount = 0; } } ``` --- Cuantificando el impacto: --- Conectar cada sistema directamente con cada otro sistema: ``` SAP ←→ Salesforce SAP ←→ E-commerce SAP ←→ WMS Salesforce ←→ E-commerce Salesforce ←→ Marketing E-commerce ←→ WMS ``` 6 conexiones para 4 sistemas. Con 10 sistemas: 45 conexiones. Inmantenible. Solución: Hub-and-spoke con middleware central. Ambos sistemas pueden modificar el mismo dato, sin reglas claras de quién gana. Solución: Definir master por campo. Si ambos pueden editar, definir reglas de conflicto (last-write-wins, source-of-truth priority). Un trigger en Salesforce llama a SAP, que dispara un callback a Salesforce, que actualiza un registro y dispara otro trigger... Solución: Diseñar el flujo end-to-end antes de codificar. Usar flags para evitar loops. Salesforce tiene governor limits estrictos. Si tu integración hace 200 callouts en un trigger, explotará. Solución: Batch processing, platform events, async processing con Queueable/Batch Apex. "Si falla, se logea y ya". ¿Quién revisa el log? ¿Se reintenta? ¿Se notifica? Solución: Dead letter queue + alertas + dashboard + proceso de revisión manual. --- No. MuleSoft es una excelente opción enterprise, pero para integraciones simples, Salesforce Flows, Apex callouts o herramientas como Workato y Zapier son suficientes. MuleSoft se justifica cuando tienes 5+ integraciones complejas. Depende de tu edición y licencias. Enterprise Edition: 100,000/24h base + 1,000 por licencia. Unlimited: 5,000,000/24h. Puedes comprar paquetes adicionales. Depende del caso de uso. La mayoría de las implementaciones exitosas usan ambos: real-time para datos operativos (inventario, estatus) y batch para datos maestros (catálogo, precios). Sí, pero necesitas un middleware que actúe como traductor. MuleSoft, Dell Boomi y otros tienen conectores para sistemas legacy. La alternativa es exponer el sistema legacy vía una API REST wrapper. Con diseño correcto: el mensaje se encola, se reintenta automáticamente, y si después de N intentos falla, se registra en dead letter queue para revisión manual. Sin diseño correcto: datos se pierden silenciosamente. Usa sandboxes de Salesforce conectados a ambientes de prueba de los otros sistemas. Nunca pruebes integraciones contra producción de ningún sistema. Monitoreo continuo (alertas automáticas por errores). Revisión mensual del dashboard de integraciones. Review completo trimestral de arquitectura y performance. --- La integración de Salesforce no es un proyecto de una vez — es una capability de la organización que necesita diseño, mantenimiento y evolución. El patrón correcto depende de tus necesidades de negocio: real-time para datos operativos, batch para volúmenes grandes, events para desacoplamiento. No caigas en el trap de "conectamos todo y ya". Diseña tu arquitectura de integración pensando en 3 años: nuevos sistemas, nuevos procesos, nuevos volúmenes. El costo de rediseñar una integración mal hecha es 3–5x mayor que hacerla bien desde el inicio. En iTechDev, diseñamos e implementamos integraciones SAP-Salesforce, e-commerce-ERP y multi-system para empresas mexicanas. No empezamos con herramientas — empezamos con entender tu flujo de negocio y luego elegimos la tecnologia correcta. Consulta con nuestros especialistas en integración Salesforce →Costos de MuleSoft
Edición Precio estimado/año Gold (básico) $60,000–$80,000 USD Platinum $120,000–$180,000 USD Titanium $250,000+ USD Integración SAP-Salesforce: el bridge más demandado
Por qué SAP-Salesforce es tan común en México
Datos que típicamente se sincronizan
Dato Dirección Frecuencia Clientes/Accounts SAP ↔ Salesforce Real-time + batch nocturno Productos/Catálogo SAP → Salesforce Batch diario Precios SAP → Salesforce Batch diario Inventario disponible SAP → Salesforce Near real-time (cada 5 min) o API on-demand Cotizaciones Salesforce → SAP Real-time (al aprobar) Pedidos de venta Salesforce → SAP Real-time (al cerrar) Facturas/CFDI SAP → Salesforce Batch o real-time Estatus de pedido/envío SAP → Salesforce Real-time o polling Saldos de cartera SAP → Salesforce Batch diario Opciones de middleware
Middleware Costo Complejidad Mejor para MuleSoft Alto ($60K+/año) Media-Alta Enterprise, múltiples integraciones SAP CPI/Integration Suite Medio ($30K+/año) Media SAP-centric, ya tienes SAP Cloud Dell Boomi Medio ($30K+/año) Media Multi-system, interfaz amigable Workato Medio ($20K+/año) Baja Business users, automatizaciones Custom (Apex + APIs) Bajo (solo desarrollo) Alta 1–2 integraciones simples Mapeo de objetos SAP ↔ Salesforce
SAP Salesforce Notas Business Partner Account + Contact SAP BP → SF Account; personas de contacto → SF Contact Material Master Product2 Datos del producto + precios Sales Order Opportunity + Quote Cotización aprobada = Sales Order Delivery Custom Object o Opportunity field Estatus de envío Billing Document Custom Object o Attachment Factura/CFDI Conditions PriceBook Entry Precios y descuentos Retos comunes y cómo resolverlos
Herramientas de integración alternativas
Salesforce Flow + HTTP Callout
Salesforce Functions (Apex)
Zapier / Make (Integromat)
n8n (self-hosted)
Salesforce Connect y External Objects
Qué es
Cómo funciona
Casos de uso
Limitaciones
Cuándo usarlo vs replicar datos
Criterio Salesforce Connect Replicar datos Volumen de consultas Bajo (< 100/hora) Alto Necesidad de reportes SF Baja Alta Datos que cambian mucho Sí (siempre actual) No ideal Velocidad de consulta Depende del externo Rápida (local) Offline/cache No Sí Event-driven architecture con Platform Events
Qué son Platform Events
Beneficios de event-driven
Change Data Capture (CDC)
Platform Events vs Outbound Messages vs Streaming API
Feature Platform Events Outbound Messages Change Data Capture Custom events Sí No No CRUD changes No (manual) Workflow/Flow based Automático Replay Sí (24 horas) No Sí (3 días) External subscribers Sí Sí (SOAP) Sí Volume Alto Medio Alto Reliability Alta (con replay) Media Alta Manejo de errores y monitoreo
El pattern de Integration Log
Retry strategy
Dashboard de integraciones
Circuit breaker pattern
Costos de integración en México
Por complejidad de integración
Complejidad Ejemplo Costo estimado Simple Salesforce ↔ Mailchimp $3,000–$8,000 USD Media Salesforce ↔ ERP (2–3 objetos) $15,000–$40,000 USD Compleja SAP-Salesforce full integration $40,000–$120,000 USD Enterprise Multi-system hub (SAP+SF+Ecom+WMS) $100,000–$300,000 USD Costo de middleware (anual)
Herramienta Costo anual MuleSoft $60,000–$250,000 USD SAP Integration Suite $30,000–$80,000 USD Dell Boomi $30,000–$80,000 USD Workato $20,000–$60,000 USD Custom (sin middleware) $0 (solo desarrollo) Zapier/Make $500–$3,600 USD Costo de no tener integración
Errores comunes y anti-patterns
Anti-pattern 1: Point-to-point spaghetti
Anti-pattern 2: Sincronización bidireccional sin master
Anti-pattern 3: Triggers en cascada
Anti-pattern 4: Ignorar los límites de Salesforce
Anti-pattern 5: No tener strategy de error handling
Preguntas frecuentes
¿Necesito MuleSoft para integrar Salesforce?
¿Cuántas API calls tengo disponibles en Salesforce?
¿Es mejor integración real-time o batch?
¿Puedo integrar Salesforce con sistemas legacy (COBOL, AS/400)?
¿Qué pasa si un sistema se cae durante la integración?
¿Cómo pruebo integraciones sin afectar producción?
¿Cada cuánto debo revisar mis integraciones?
Conclusión
