Migrating CRM Attachments: Documents, Images and Files
You switched CRMs. Contacts and deals look fine. Then sales opens a won deal and the signed contract is a 404, or the proposal PDF never arrived. Contact data without the attached documents is an incomplete migration.
We migrate CRM files with storage mapping and URL rewriting so the signed agreement is one click away.

Sound Familiar?
These are the exact issues our clients faced after a records-only CRM cutover:
- Sales opens a won deal and the signed contract returns a 404, or the PDF never made it across at all
- Proposals, signed agreements, and supporting images sit orphaned in the old CRM while contacts and deals look complete
- Native import tools moved records but skipped binary CRM attachments, so document migration was left as "we'll do it later"
- Ops spends days downloading files by hand and re-uploading them, still guessing which record each file belonged to
- External Drive, SharePoint, or S3 links still point at the old storage path, so one click from the new CRM opens nothing
Salesforce classic Notes and Attachments are a documented migration nightmare, and Lightning already treats legacy Attachments as read-only with Files as the supported path. Leaving binaries on a deprecated object while you cut over is how signed contracts go missing when the old org is decommissioned.
What CRM File Migration Actually Does
Extract binaries → map storage → rewrite URLs → re-link parents. Sales keeps one-click access to every signed document.
Inventory Source Files
Count attachments, total bytes, and parent types across deals, accounts, and cases
Extract and Map Storage
Download binaries and land them in CRM Files, S3, Drive, or SharePoint with capacity planned
Rewrite URLs and Links
Old paths become new ones so notes, emails, and portals stop returning 404s
Validate on Key Deals
File counts and byte totals match; signed contracts open from the new CRM in one click
Everything You Need for Document Migration That Holds
Binary File Extraction
We pull CRM files as real binaries, not CSV rows: Salesforce ContentVersion and legacy Attachments, HubSpot Files via notes, and platform-specific attachment stores.
Storage Mapping
Files land where they belong: destination CRM Files, S3, Google Drive, or SharePoint, with capacity planned so a 50–100 GB library does not blow target storage limits on day one.
URL Rewriting
Old attachment URLs and embed links are rewritten to the new storage paths, so emails, notes, and portal pages keep opening the right PDF instead of a dead link.
Parent Record Re-Association
Every file is re-linked to the correct account, contact, deal, or case after IDs change. No orphaned PDFs floating with no parent.
Legacy Attachment Conversion
Classic Notes and Attachments convert to modern Files (or the destination equivalent) before or during cutover, so you are not stuck on a deprecated storage model.
Count and Byte Validation
We reconcile file counts and total byte sizes against the source, then spot-check signed contracts on key deals before the old CRM is switched off.
Platforms and Storage We Cover for CRM File Migration
From 404 Contracts to One-Click Access
How a 35-person professional services firm recovered 18,400 orphaned documents after a records-only CRM cutover and stopped sales hunting for signed agreements in email.
The Broken Cutover
- Contacts and deals imported cleanly; native tools skipped CRM attachments entirely
- Sales opened won deals and hit 404s on signed contracts still pointing at the old storage
- Ops estimated 6–8 minutes per file to find, download, re-upload, and re-link by hand
- About 18,400 files (~42 GB) left behind, including proposals and signed agreements
- Two client disputes stalled because the signed PDF could not be produced from the new CRM
Mapped File Migration
- Binaries extracted, uploaded to mapped storage, and re-associated to the correct parents
- URL rewriting fixed notes and email embeds that still pointed at the old CRM paths
- File counts and byte totals reconciled; sample signed contracts validated on key accounts
- Sales opens the deal and the agreement loads in one click again
- Old CRM kept readable until ops signed off on integrity, then decommissioned safely
Before vs After File Migration
How It Works
From first conversation to validated file cutover in 3–8 weeks.
Audit Attachments and Storage
How many files, how many gigabytes, where they live today, and which signed contracts sales cannot afford to lose.
Scope Storage and Mapping
30-minute call on source and target platforms, storage strategy, and which document types must open in one click after cutover.
Extract, Upload, Rewrite
Download binaries, upload to mapped storage, re-associate parents, rewrite URLs, then validate counts and sample contracts.
Cut Over with Files Intact
Sales finds the signed agreement on the deal. Source stays readable until ops signs off on file integrity.
Frequently Asked Questions
Why do CRM attachments break after a migration?
Because contacts and deals are relational rows, while CRM attachments are binary objects stored outside that schema. Native import tools routinely move records and skip files. When files do move, parent IDs change and old URLs still point at the source storage, so signed contracts open as 404s even though the deal looks fine.
Can we re-upload documents manually instead?
For under about 100 files, yes. Beyond that, practitioner guides treat manual download-and-upload as non-viable: each file needs the right parent, and Salesforce-to-HubSpot style moves often take three API calls per file. Mid-size libraries (tens of thousands of documents) need scripted extraction, storage mapping, and URL rewriting, not evenings of drag-and-drop.
Where should the files live after migration?
It depends on volume and cost. Keeping everything inside the CRM is simple until file storage limits bite. Large libraries often map to S3, Azure Blob, Google Drive, or SharePoint, with a link back on the CRM record. Getting that storage mapping wrong is expensive: Dynamics Dataverse database storage has been cited around US$40 per GB per month (about R660 at current rates), versus pennies per GB for blob storage.
What about Salesforce classic Notes and Attachments?
Legacy Attachments are a known migration failure mode. Lightning already treats them as read-only, and Salesforce has signalled deprecation in favour of Files (ContentDocument / ContentVersion). We convert and migrate them as modern files, re-link parents, and validate byte totals so those contracts are not left behind in a dying object model.
How long does CRM file migration take?
Most attachment and document migrations we run take 3 to 8 weeks from audit to cutover. Clean libraries with a clear parent map sit toward the shorter end. Multi-year contract archives, mixed Drive and SharePoint links, or remediation after a records-only cutover already went live push toward 2 to 3 months, phased so sales can keep working.
How much does CRM attachment and file migration cost?
Focused file migration with storage mapping and URL rewriting typically lands between R45,000 and R150,000 depending on volume and platform pair. Full remediations after a records-only go-live, with orphaned PDFs and broken links to repair, sit higher. Against weeks of manual re-upload and the risk of missing signed agreements in a dispute, most clients see payback inside one or two quarters.
Stop Leaving Signed Contracts Behind
If sales cannot open the proposal or signed agreement from the deal record, your CRM migration is not finished, no matter how clean the contact list looks.
Tell us which CRM you left, where files live today, and which document types must survive cutover. We will show you how storage mapping and URL rewriting would work for your library.