Chapter 5: The Sequential Ingestion Pipeline
Once the structural blueprint is verified in the sandbox and the 30-day testing buffer is complete, it is time to execute the final, live cutover.
However, a major misconception is that data can be exported from the old system in one massive file and dumped into the new CRM all at once. In a relational database, data is not flat — it is interconnected. A contact belongs to a company, a deal belongs to a contact, and a historical email belongs to a deal. If you import these records out of order, the relational scaffolding collapses, resulting in orphaned contacts and fragmented sales histories.
The Import Methods
Before executing the sequence, the Data Architect must choose how the data will move:
- Integration Sync: Leveraging a native integration between the two platforms allows you to extract all data in one go and sync fields automatically. Ideal for standard, unmodified data sets.
- Manual CSV Import: Export legacy data into a
.csvfile and upload it into the new CRM. Requires upfront technical work but supports custom mappings and distinct object associations.
Regardless of the method, the data must enter the new system in the following sequential order.
Phase Walkthrough
Select each phase below to see detailed guidance for that import step.
${phases.map((p, i) => {
const status = i < phaseIndex ? 'completed' : i === phaseIndex ? 'active' : 'pending';
const color = status === 'completed' ? '#C1FF72' : status === 'active' ? '#2CE7EA' : 'rgba(255,255,255,0.2)';
const bg = status === 'completed' ? 'rgba(193,255,114,0.1)' : status === 'active' ? 'rgba(44,231,234,0.1)' : 'transparent';
return html`<div style="display:flex;align-items:center;gap:10px;padding:8px 12px;background:${bg};border-radius:6px;border-left:2px solid ${color};">
<div style="width:24px;height:24px;border-radius:50%;background:${color};display:flex;align-items:center;justify-content:center;font-size:0.75rem;font-weight:700;color:#000;flex-shrink:0;">
${status === 'completed' ? html`<span style="color:#fff;">✓</span>` : i + 1}
</div>
<div style="color:${status === 'pending' ? 'rgba(255,255,255,0.4)' : 'rgba(255,255,255,0.8)'};font-size:0.9rem;font-weight:${status === 'active' ? '600' : '400'};">${p}</div>
</div>`;
})}