CRM Data Lake Integration: Batch vs CDC vs Federation

CRM Data Lake Integration: Batch vs CDC vs Federation

Content

Written by: Doug Camplejohn, CEO & Co-Founder, Coffee

Key Takeaways

  • Use batch ingestion when you can tolerate higher latency and have moderate volumes. Choose CDC for near-real-time freshness. Use zero-copy federation when query-time access costs less than full replication.
  • Plan for API limits, soft-delete handling, and schema drift before you pick a connector, because these issues most often break integrations.
  • Account for platform constraints. Salesforce supports native CDC, Dynamics 365 and Zoho rely on timestamp polling or third-party bridges, and legacy Azure Data Lake exports are now deprecated.
  • Architectures fail when CRM source data is stale or incomplete, even with strong pipelines. Upstream data quality must improve first.
  • Coffee automates CRM record upkeep so every downstream lake pattern receives accurate, reliable data.

Start Building a Reliable CRM Data Lake

CRM Data Lake Integration Patterns

Three patterns dominate CRM data lake integration, and each pattern fits a different scenario.

  1. Batch Ingestion moves CRM data to the lake on a schedule, such as hourly, nightly, or weekly, and processes accumulated changes in groups. This pattern fits low latency tolerance, simple pipelines, and small to moderate volumes.
  2. CDC/Incremental Ingestion captures changes as they occur through log-based CDC or timestamp-based polling and delivers near-real-time updates. This pattern fits larger implementations where freshness matters and teams can manage API limits.
  3. Zero-Copy Federation queries CRM data in place without copying it, using query pushdown or file federation. This pattern fits situations where data freshness matters more than query speed and a replication pipeline would cost too much.

Comparison Scope and What This Article Does Not Cover

With those three patterns defined, the next step is to clarify what this comparison includes and what it leaves to other resources.

This article compares the three integration patterns for moving CRM data into a data lake and the connector options by platform pairing. CRM platforms expose different APIs, CDC support, and export limitations, and storage targets offer different ingestion capabilities. The article stays pattern-led and platform-agnostic, unlike vendor connector pages that only describe a single tool. The focus remains on pattern selection and connector options, while broader debates about data lakes versus warehouses, Salesforce-only guidance, and real-time lakehouse architecture sit outside this scope.

Evaluation Criteria

The right pattern depends on your constraints rather than on a universal winner. Evaluate these factors before you select a pattern or connector:

Side-By-Side Comparison: Batch vs CDC vs Zero-Copy Federation

The table below compares the three patterns across latency, API impact, soft-delete handling, maintenance effort, and best-fit scenarios.

Criterion Batch Ingestion CDC/Incremental Zero-Copy Federation
Typical latency Hours to nightly Minutes to near-real-time Query-time (depends on source)
API limit impact Low (Bulk API 2.0, separate governor from REST) Moderate (CDC allocation, 25K–50K events/day on Salesforce) None (no extraction)
Soft delete handling Poor, because Bulk API returns only existing records and deleted rows accumulate Good, because CDC publishes explicit delete events Depends on source system
Maintenance burden Low Moderate to high Low, because there is no pipeline
Best for Low latency tolerance and small volumes Larger implementations where freshness matters Freshness over speed with limited replication budget

Several platform pairings appear frequently in CRM lake projects. Salesforce to S3 or Databricks fits batch via Bulk API 2.0 for nightly loads or CDC via Confluent and Pub/Sub API for near-real-time. Salesforce to Snowflake or Databricks also supports zero-copy through Salesforce Data 360. Dynamics 365 to ADLS fits Synapse Link for Dataverse or Fabric Link after the legacy Azure Data Lake export deprecation. Zoho to BigQuery fits timestamp-based incremental polling, because Zoho does not expose log-based CDC. Salesforce to Databricks via Lakeflow Connect uses a physical ingestion path with incremental support and SCD Type 2.

See How Coffee Ensures Good Data Before It Reaches Your Lake

Category-By-Category Analysis

Batch Ingestion: When It Fits and When It Fails

Salesforce Bulk API 2.0 does not suit low-latency or real-time needs, yet it remains the right tool for large extracts. A single Bulk API job can process millions of records, and REST governor limits do not apply in the same way. Bulk API 2.0 jobs have their own limits, up to 10,000 jobs per rolling 24-hour period and 150 million records processed per day, and they do not count against daily REST API limits. Batch ingestion fails for near-real-time needs, high-change large volumes, and scenarios that require precise delete tracking without workarounds.

CDC/Incremental Ingestion: Why It Often Wins

Salesforce Change Data Capture sends field-level deltas on record changes in near-real-time, which makes it far more efficient than polling full records. As noted in the evaluation criteria, Salesforce CDC has a 72-hour retention window, so a consumer that stays offline through a long weekend cannot replay missed events and must rely on a reconciliation query. Dynamics 365 Business Central lacks push-based streaming and robust transaction-log CDC, so teams build incremental syncs with timestamp logic. Zoho CRM uses API-based incremental polling with Modified_Time and optional Notification or Watch APIs for event-driven tracking. For HubSpot, replication pipelines rely on APIs, incremental polling, and webhooks because HubSpot does not expose transaction logs for CDC.

Zero-Copy Federation: How It Works and When to Use It

Salesforce Data 360 zero-copy uses query pushdown and file or query federation to query Snowflake, Databricks, Redshift, and BigQuery at runtime without copying data into Salesforce. Zero-copy federation costs 70 Data Cloud credits per million rows, compared with 2,000 credits per million rows for traditional batch ingestion, a 28.5x reduction. That saving comes with a catch, because federation credits are charged per access and every query consumes credits. File Federation is now recommended over Query Federation wherever the external platform supports it, since it avoids dual compute billing and delivers near-native latencies when data and compute sit together. Zero-copy fits read-heavy scenarios without write-back to the warehouse, offline access needs, or strict sub-second response time requirements.

Connectors by Platform Pairing

CData Sync automates continuous pipelines from platforms such as Microsoft Dynamics CRM into a data lake. Skyvia moves data between cloud CRMs such as Zoho and cloud storage such as Azure without code. Databricks Lakeflow Connect’s Salesforce connection uses a physical ingestion path and supports OAuth and mutual TLS authentication. Salesforce Data 360 zero-copy works with Snowflake and Databricks. Microsoft’s Azure Data Lake export for Dynamics pipelines was deprecated in October 2023 and decommissioned beginning March 2025, with Synapse Link for Dataverse or Link to Microsoft Fabric as the documented replacements. Microsoft’s low-latency sync for Fabric Link removes the intermediate CSV step and streams data directly to Delta Parquet format, which now serves as the recommended path for new Dynamics implementations.

Bronze/Silver/Gold Modeling of CRM Objects

Model Account, Contact, Lead, Opportunity, Case, and activities as separate objects in each lake layer. Databricks recommends streaming tables in the bronze layer for raw ingestion, streaming tables in the silver layer for incremental row-level transformations, and materialized views in the gold layer for aggregations and metrics. Separating ingestion and transformation into distinct pipelines allows independent scheduling, monitoring, and troubleshooting. A failure in transformation does not block new data from landing in bronze.

How to Handle Soft Deletes and CRM IDs in a Data Lake

Salesforce Bulk API extracts handle deletes poorly, because a query returns only existing records and a warehouse built on extracts accumulates rows Salesforce deleted months ago. Salesforce CDC publishes events for record creation, update, delete, and undelete, so deletions arrive as explicit events, which creates a clear advantage over query-based extraction. For identity resolution, an External ID field on the Salesforce object usually works best for B2B integrations, because it stores the source system’s primary key and enables upserts without a prior lookup. Schema drift remains the most common source of integration breakage, since source systems add, rename, and retype columns on their own schedules. PII masking and RBAC should run at the lake layer rather than relying on the source system’s controls.

Reverse ETL: Syncing Data Lake Insights Back to the CRM

Reverse ETL pushes integrated warehouse data back to operational systems and functions as its own pattern. Limit this pattern to attributes that truly need to live in the CRM. Bidirectional CRM sync requires conflict resolution policies, origin tagging, and cooldown logic per integration, because both systems become potential sources of truth for the same fields. Every write can trigger an echo loop or overwrite a recent change.

Databricks vs Snowflake for CRM Data Lake

Databricks Lakeflow Connect supports incremental ingestion, SCD Type 2, Unity Catalog governance, and automated schema evolution for new and deleted columns. Snowflake zero-copy with Salesforce Data 360 supports bidirectional sharing, so insights such as segmentation and identity resolution can be read from Snowflake in real time without duplication. The choice depends on your existing stack and governance needs rather than on a single winner.

Best-Fit Use Cases

Early-stage teams with simple stacks and low data volumes can start with batch ingestion via Bulk API 2.0 into S3 or BigQuery. The maintenance burden stays low and the pattern remains easy to reprocess. Growing sales organizations on Salesforce or HubSpot with freshness requirements should move to CDC or incremental ingestion. Pair Salesforce Pub/Sub API with a managed connector such as Fivetran or Airbyte to handle schema evolution and delete tracking. Teams with established Snowflake or Databricks environments and Salesforce as the CRM should evaluate zero-copy federation for infrequently queried external data while physically ingesting the high-velocity streams that power sub-second experiences.

Unreliable CRM data breaks every pattern, because manual entry often leaves gaps. A pipeline that faithfully replicates bad data produces a bad lake. Coffee addresses that upstream problem by automatically creating and enriching contacts, companies, and activities. That work saves reps 8–12 hours per week and unifies structured and unstructured data into one coherent view. Because Coffee works either as a standalone AI-first CRM for small companies (1–20 employees) or as a Companion App on top of Salesforce and HubSpot, it fits regardless of the current stack.

Operational and Long-Term Considerations

Cross-functional ownership between data engineering and RevOps often creates a governance gap. The team that builds the pipeline rarely owns the CRM schema, and the team that owns the CRM schema rarely monitors the pipeline. Schema evolution monitoring and alerting on pipeline failures need clear ownership. Adding a schema validation task at the start of the workflow that compares bronze and silver metadata and fires an alert on drift catches unexpected source changes before they break reporting. Managed connectors such as Fivetran, Airbyte, and Stitch sell schema evolution, deletion handling, incremental state, retry logic, and API limit management, rather than just extraction. That operational layer consumes engineering attention over time. Coffee’s agent handles data entry and enrichment continuously on the CRM side, which reduces long-term maintenance and improves downstream lake reliability.

Hire the Coffee Agent to Keep Your CRM Data Lake-Ready

Risks, Limitations, and Common Misconceptions

Many teams assume a data lake integration automatically improves CRM data quality, yet the pipeline only mirrors what exists upstream. A pipeline that replicates stale, duplicate, or missing records produces a lake that generates inaccurate forecasts and weak AI outputs. Coffee’s philosophy stays direct: good AI requires good data. Coffee’s agent ingests and structures high-quality, ground-truth data from emails, calendars, and transcripts instead of relying on fallible manual entry.

Design around these additional risks:

Coffee does not target large enterprises with complex custom workflows or heavily regulated industries that require multi-year security reviews. Current integrations run via Zapier, with deeper native integrations on the roadmap.

Decision Framework

Match your constraints to a pattern using this checklist:

  • When latency tolerance is nightly and volume stays under 150 million records per day, use batch via Bulk API 2.0.
  • When freshness matters and the source CRM supports CDC, such as Salesforce Enterprise and above, use CDC or incremental via Pub/Sub API with a managed connector.
  • When the warehouse already acts as the source of truth and Salesforce needs to see that data, use zero-copy federation via Salesforce Data 360.
  • When you run Dynamics 365 and relied on the legacy Azure Data Lake export, migrate to Synapse Link for Dataverse or Fabric Link.
  • When you run Zoho or HubSpot, use timestamp-based incremental polling with webhook augmentation for near-real-time freshness.
  • When CRM data itself is unreliable, fix the upstream problem first with Coffee before you invest in lake infrastructure.

Coffee is SOC 2 Type 2 and GDPR compliant, does not use data to train public models, and offers simple seat-based pricing that includes the agent’s unlimited labor. Because Coffee ensures good data in, the CRM data lake integration produces accurate insights, reliable forecasts, and AI outputs that reflect reality.

Start With Coffee and Make Your CRM Data Lake Integration Worth It

Frequently Asked Questions

Are Data Lakes Still Relevant for CRM Data?

Data lakes still matter for CRM data, but the pure lake rarely serves as the only landing zone. The lakehouse pattern now dominates CRM architectures. A physical warehouse holds the high-value, frequently queried core such as Account, Contact, and Opportunity, while a federation layer extends queries to lakes and operational stores that do not justify full materialization. The key decision concerns where CRM objects live in the medallion stack and how they join to non-CRM data such as product telemetry or support tickets.

What Is a Data Lake in Salesforce?

Salesforce Data 360, formerly Data Cloud, functions as Salesforce’s lakehouse layer. It manages 4 million Iceberg tables spanning 50 petabytes of data, powered by Spark, Hyper, and Trino engines. Zero-Copy connectors allow external data in Snowflake, Databricks, BigQuery, and Redshift to be queried without physically entering Salesforce, and Data Sharing lets Salesforce-enriched data be read from those platforms in real time. The result behaves as a bidirectional federation layer rather than a traditional one-way data lake export.

How Do I Handle Soft Deletes and CRM IDs in a Data Lake?

Salesforce CDC publishes explicit delete events for creation, update, delete, and undelete, which creates a clear advantage over query-based Bulk API extracts. A Bulk API extract returns only records that currently exist, so a warehouse built on extracts accumulates rows Salesforce deleted months ago. For identity resolution, an External ID field on the Salesforce object stores the source system’s primary key and enables upsert operations without a prior lookup. Define your External ID strategy before loading data from multiple systems, because retrofitting identity resolution later becomes one of the most time-consuming reconciliation tasks in CRM operations. For Dynamics 365, soft deletes appear as updates to an IsDeleted flag and require separate monitoring from physical deletes captured by Change Tracking.

Reverse ETL: When Should Insights Flow Back to the CRM?

Reverse ETL makes sense when a warehouse-computed attribute, such as a lead score, churn probability, or segment flag, needs to live in the CRM to drive a sales or service workflow. Limit reverse ETL to those attributes. Once the product writes data back, both systems become potential sources of truth for the same fields, and every write risks an echo loop or an overwrite of a recent change. Implement conflict resolution policies, origin tagging, and cooldown logic per integration. Coffee can serve as the system of record or as the agent feeding Salesforce or HubSpot, which creates a clean path to good data in and good data out for SMBs and mid-market teams without the echo-loop risk of a poorly governed reverse ETL pipeline.

CRM Data Lake Integration on Azure: What Replaced the Deprecated Export?

Microsoft deprecated the Export to Data Lake feature for Dynamics 365 in October 2023 and began decommissioning it in March 2025. Synapse Link for Dataverse and Link to Microsoft Fabric, often called Fabric Link, now serve as the documented replacements. Fabric Link provides a no-copy, no-ETL integration that connects Dataverse and Finance and Operations data directly to Microsoft OneLake through shortcuts. Microsoft’s low-latency sync for Fabric Link, which reached general availability in mid-to-late July 2026, removes the intermediate CSV serialization step and streams data directly to Delta Parquet format, reaching upwards of 1 million records per hour per table. Existing Synapse Link pipelines continue to function as an interim target while teams evaluate Fabric Link.

Conclusion

CRM data lake integration usually fails in two places, a poor pattern choice and bad source data. The framework above addresses the pattern choice with batch for simplicity and volume, CDC for freshness and explicit deletes, and zero-copy federation for the long tail of external data that does not justify materialization. No pipeline can solve the source data problem on its own, because a pipeline only mirrors what the CRM contains. When the CRM holds stale contacts, missing activities, and unlogged calls, the lake inherits the same issues. Coffee solves that upstream problem with an autonomous agent that captures emails, calendars, and call transcripts so every record stays accurate and complete before it reaches the integration layer. Good data in leads to good data out.

Get Started With Coffee

Read Next