Moving to Salesforce from another CRM usually means moving years of calls, meetings, follow-ups and notes. Those records are the relationship history your team relies on. They're also where migrations quietly go wrong. Dates land in the wrong field, notes disappear from the timeline, and activities from three years ago vanish from reports a week after go-live.
Most of these problems come from a few Salesforce behaviors that are easy to miss during mapping. This guide explains how to migrate activity history into Salesforce so dates stay accurate, notes stay findable, and the data holds up after cutover.
To migrate activity history to Salesforce, load historical calls and to-dos as closed Tasks and meetings as Events. Salesforce sets a task's completed date/time itself, so you can't load the legacy completion date into it. Map the legacy date to the task's Date field (ActivityDate), keep the original value in a custom field, and consider enabling audit-field permissions to preserve created dates. Decide early whether legacy notes become tasks or Salesforce notes, and plan for activity archiving after 365 days. Vantage Point handles this mapping through its system integration and data migration services.
Activity history is the record of interactions with a customer: calls logged, emails, meetings, follow-up tasks, workflow steps and free-text notes. In most legacy CRMs, these live in several tables, each with its own dates, owners and links to contacts or accounts.
In Salesforce, activities are mainly two objects:
Both link to a person (a contact or lead) through the Name field (WhoId) and to a business record such as an account or opportunity through the Related To field (WhatId). Getting those two links right is as important as the activity itself. An activity with the wrong link is effectively lost.
This is the question that surprises most teams. Salesforce tasks have a completed date/time field, but it isn't editable. Salesforce sets it automatically when a task's status changes to closed. If you load 10,000 closed tasks on migration day, they'll all show a completed date of migration day.
The Salesforce Task object reference describes the fields you can and can't set. The practical workaround has three parts:
Events are simpler. Their start and end date/times are writable, so meetings can keep their original timing.
A simple mapping table keeps everyone aligned. Here's a typical starting point:
| Legacy data | Salesforce destination | Notes |
|---|---|---|
| Activity or completion date | Task Date (ActivityDate) | Also copy to a custom legacy date field |
| Created date and creator | Created Date / Created By | Requires audit-field permission on insert |
| Meeting start and end | Event start and end date/time | Watch time zones in the source export |
| Activity type or code | Task Type or Subtype, or a custom picklist | Consolidate low-use codes first |
| Owner | Assigned To (OwnerId) | Map former users to a placeholder owner |
| Contact link | Name (WhoId) | Resolve via a legacy ID cross-reference |
| Account or deal link | Related To (WhatId) | Load parent records before activities |
| Free-text notes | Task Comments or Salesforce Notes | See the notes decision below |
Low-use fields, such as meeting location in many orgs, are good candidates to drop or fold into the description. Every field you skip is one less thing to test.
Legacy CRMs often store notes as their own record type. Salesforce offers two main options, and the right choice depends on how your team works.
Many teams choose tasks for short interaction notes and Salesforce Notes for longer reference material. Whatever you pick, apply the rule consistently and document it in the mapping, so users know where to look.
Salesforce automatically archives older activities to keep reports and list views fast. According to Salesforce Help, the default threshold is 365 days, and archiving affects reports, list views and the calendar view. Open tasks aren't archived. The archive job runs weekly.
That matters a lot for migrated history. If you load five years of closed activities, most of them will be archived within days of go-live. They're still available on records and through the API, but users running standard activity reports won't see them.
If your team needs to report on older activity, an admin can ask Salesforce Support to raise the archive threshold. Salesforce Help lists a maximum of 3,650 days and recommends staying at or below about five years, because longer windows can slow activity reports. Decide this before cutover, and scope activity reports by date range either way.
The link between an activity and its contact or account is where many migrations break. A cross-reference approach keeps it reliable:
Run the whole sequence on a representative subset first. It's much cheaper to fix a mapping after 500 records than after 500,000. Our guide to filtering migration data before a full load covers that approach.
A mapping document is only useful if someone can trace any Salesforce value back to its origin. For each destination field, record:
This makes validation faster and settles questions after go-live, when someone asks why an activity shows a certain date. It also helps when you compare the generated mapping against the agreed mapping before each revision. For the wider project view, see our CRM migration planning guide.
Vantage Point plans and runs CRM migrations that keep relationship history intact. Our system integration and data migration team builds field-level mappings with source lineage, designs cross-reference loads and validates results, and our Salesforce implementation and advisory services cover the activity model, archiving settings and reporting. We've completed 400+ engagements for 150+ clients, with a 4.71/5.0 average engagement rating and 95% client retention. Senior consultants only — no junior handoffs; the experts you meet are the experts who deliver.
Get the mapping right before the first load. Vantage Point can review your activity data, map dates and notes correctly, and plan a migration your team can trust on day one. Talk to Vantage Point about your Salesforce migration.
No. Salesforce sets a task's completed date/time automatically when the task closes. Map the legacy completion date to the task's Date field (ActivityDate) and keep the original value in a custom field.
Yes, if an admin enables the permission to set audit fields on record creation. A migration user can then set Created Date and Created By when records are first inserted, but not on later updates.
Migrate meetings with a start and end time as events, which keep their original timing. Calls, emails and to-dos without a fixed time slot usually load as tasks.
Convert them to completed tasks if users want one chronological activity timeline. Load them as Salesforce Notes if they're long reference material that people search for rather than scroll through.
Salesforce archives closed activities older than 365 days by default, which removes them from standard reports, list views and the calendar. They're still available on records and through the API.
Yes. An admin can request a higher limit from Salesforce Support, up to 3,650 days. Salesforce recommends about five years or less, because longer windows can slow activity reports.
Load accounts and contacts first with legacy IDs in external ID fields, then relationships, then activities. That order lets each activity link to the correct contact and account.