The Salesforce Objects That Break Data Migration Projects

June 12, 2026
 by 
Eren Yılmaz

A Salesforce data migration becomes significantly more challenging when projects encounter areas such as Chatter feeds, files, person accounts, big objects, CPQ records, and field history. Each carries structural rules that simple extract-and-load cannot deliver. Moving them safely requires object-specific logic, not a generic pipeline.

Most Salesforce migration projects go fine until they reach the objects with added complexity. Accounts, contacts, and opportunities may move through without incident then the project hits Chatter, or a file library running several terabytes, or a CPQ quote structure with dependency chains four levels deep, and the migration stalls.  

These objects do not fail because the tool is weak. They fail because they are sObjects that do not fit the simple, mutable model generic tools are built around. They carry version histories, immutability rules, dual-object structures, and API restrictions that a generic extract-transform-load pipeline is not designed to handle.

This article identifies the six areas that most often challenge a Salesforce complex object data migration, explains the technical reason each one resists standard handling, and outlines how conemis transition cloud (ctc) moves them without delays while maintaining data integrity.

Why do some Salesforce objects resist standard migration?

Standard migration projects assume records are stored in single SObject, or sObjects with clean relationships. That assumption holds for the core CRM objects and requires additional handling for objects that carry structural complexity beyond the simple sObject model. A complex object carries at least one property the standard model does not account for: a record cannot be updated after creation, a child record depends on three or four ancestors resolving first, history sits in a system table the API exposes differently, or the object is metadata rather than data.  

When a tool built for flat sObjects meets one of these, the loading will go wrong. It fails outright, or it loads the records while the version history, associations, or audit trail around them never arrive. The second outcome is the dangerous one, because the migration looks complete until someone opens a record and finds the history, the file version, or the feed context missing. A reliable Salesforce migration treats these objects as distinct problems, each with its own extraction, transformation and load logic.

Which objects challenge data migrations, and why?

These six object families account for the most common friction points in migrations. Each fails for a different structural reason.

1. Chatter feeds carry context that does not survive a flat export

Chatter records resist migration because their meaning lives in associations, not in the records themselves. FeedItem and FeedComment objects each reference a parent record, an author, mentioned users, and often an attached file. Export the FeedItem in isolation and you get a row of text with broken pointers: the parent ID belongs to the source org, the author ID no longer resolves, and the @mentions reference users that may not exist in the target. Salesforce provides no standard migration path for feed data, so a generic tool requires extensive manual reference mapping across multiple sequential operations, with high risk of broken associations at scale.

ctc migrates Chatter by resolving every reference against the target org first, remapping parent records, authors, and mentioned users, then loading FeedItems and FeedComments with their associations intact and their original timestamps preserved. See how this was delivered for a global media and entertainment company.

2. Files and Attachments fail at version history and volume

File migration is another challenge for standard tools because a file in Salesforce is not one record. A single document is a ContentDocument with one or more ContentVersion records beneath it, plus sharing rules, ownership, and link associations to every record it is attached to. A flat export captures the latest version and discards the history, the sharing model, and the links. At enterprise volume, the problem compounds: a library of several terabytes pushes against API limits and storage timing in ways a generic loader requires manual management of API limits and sequencing.

ctc migrates files by preserving the full ContentVersion chain, carrying ownership and sharing logic, reattaching documents to their related records, and sequencing large transfers to stay within platform limits.

3. Person Accounts collide with the standard data model

Person Accounts are difficult because a single Person Account exists as an Account record, and a Contact record bound together. Standard tools treat Account and Contact as separate objects and migrate them independently, which splits a Person Account into two disconnected records or creates duplicates. The migration also has to respect whether the target org has Person Accounts enabled and how its record types are configured.  

ctc handles Person Accounts by recognizing the dual structure during extraction, mapping the paired records as a single unit, and loading them in the sequence the target org's configuration requires.

4. Big Objects are append-only by design

Big Objects resist migration because they cannot be updated or deleted. They are built for high-volume, archival data, and the platform enforces an append-only model: once a record is written, it is immutable. A standard tool's error handling assumes it can retry, update, or roll back a failed load. None of that applies here. A failed Big Object load cannot be corrected in place, only added to.  

ctc migrates Big Objects by validating and mapping records fully before any load, then writing them in correctly sequenced batches, because with an immutable object the only safe load is one that is right the first time.

5. CPQ objects depend on chains that must load in order

CPQ migration, now part of Agentforce Revenue Management, is challenging because of dependency depth. A quote is not a single record. It sits on top of quote lines, product options, bundle structures, price rules, and discount schedules, and each layer references the one beneath it. Load the records in the wrong order and the references fail; load them without preserving the bundle logic, and the quote calculates incorrectly.  

ctc migrates CPQ data by mapping the full dependency graph first, then loading each layer in the order the structure requires so that quotes, bundles, and pricing behave in the target org exactly as they should. ctc can either replicate the same structure from the source or transform it into a new one in the destination.

6. History Tracking objects have no native migration path

Field history challenges migrations because Salesforce stores it in system-managed tables that cannot be written to directly. History Tracking objects record every tracked field change, but they are subject to retention limits and Salesforce offers no standard way to migrate them into a target org. A generic tool has no native path for history data, leaving the audit trail behind. For organizations under regulatory or audit obligations, that is a compliance gap, not a cosmetic one.  

History data can be extracted and preserved for archival purposes before migration. Contact the conemis team to understand the options for your specific compliance requirements.

How do complex objects affect migration sequencing and downtime?

  • CPQ records have to load in dependency order, layer by layer.  
  • Big Objects write in sequenced batches. Failed records cannot be removed after load, which means validation before the first write is the only safe approach.
  • Files transfer in volume-managed waves to stay within Salesforce's limits.  
  • When a project scopes downtime against simple sObject throughput and then meets complex objects mid-cutover, the go-live window slips.  

A complex object data migration controls this by sequencing the full object set in advance:  

ctc maps the load order across all objects together, simple and complex, runs the parallelizable work in parallel and the dependent work in the correct sequence, and can execute a cutover plan whose timeline reflects the objects the migration will actually move, not just the easy ones.

How should you plan a complex object migration?

Plan a complex object migration by inventorying the complex objects, before the project timeline is fixed. If they surface mid-project, when the timeline and budget are set, each one adds work that a generic estimate did not account for, which makes it impossible to meet the go-live date.

A disciplined Salesforce migration starts with a full object inventory: identify which of these six families are present, assess the volume and configuration of each, and scope the object-specific logic each one needs before committing to a go-live date.  

The migration tool matters here. A tool scoped for standard sObjects handles the straightforward majority and stalls on the objects that carry the most risk. ctc is built to migrate the full object range, standard and complex, in a single managed process, which is what keeps a complex object data migration on schedule rather than discovering its hardest work halfway through.

Key Takeaways

  • A Salesforce complex object data migration becomes significantly harder on objects that require manual workarounds from generic tools: Chatter, files, person accounts, big objects, CPQ records, and field history.
  • Each object resists migration for a distinct structural reason, from immutability to dependency depth to API exposure. There is no single workaround.
  • The danger is not always a visible failure. Generic tools often load complex objects while the version history, associations, or audit trail around them never arrive
  • Some complex objects are scoped from the start. Others surface mid-project because their structural complexity wasn't obvious at scoping. Either way, each one adds work that a generic estimate did not account for.
  • Inventory  every complex object before fixing the project timeline, and choose a tool built to migrate the full object range rather than only the standard.

Moving the objects that matter most

The objects that challenge generic data migration tools are also the ones that carry a migration's real risk: the audit trail, the document history, the quote logic a sales team depends on. ctc is built to migrate the full range of Salesforce objects, in one managed process.  

To scope a complex object data migration for your org:

Share this article