Affinity built its reputation on relationship mapping. For wealth advisors juggling 200+ high-net-worth clients, nested connections, and years of deal context, that relationship graph is not just useful—it's foundational. The moment you decide to move, you hit a hard truth: Affinity's export is relational, not contextual. You get names, email addresses, companies, and deal records. You do not get the implicit relationships that live in Affinity's UI—the secondary connections, email thread context, or the unspoken why behind each link. If you're considering Orin, the appeal is clear. Unified messaging (including WhatsApp), regional payment compliance for Malaysia and Singapore, invoicing that doesn't need a second platform, and a built-in AI chat widget that actually understands client context. But first you need to get your relationship data across intact. That's harder than the typical CRM migration because relationship depth matters more to your business than it does to most sales teams. Here's the playbook for moving from Affinity to Orin without losing the graph. Why Affinity's data export is incomplete Affinity exports three core tables: contacts, organizations, and interactions. In a spreadsheet world, that looks sufficient. A contact record includes name, email, phone, title, company, and date added. An interaction record logs emails, meetings, notes. An organization record lists company name, website, industry, and employee count. But Affinity's real value lives in the relationship graph—the UI that shows you how Alice at Goldman is connected to Bob at your fund, who once worked with Charlie at a portfolio company, who knows Dave's brother. That map is visual, not tabular. The export flattens it. Specifically, you lose: Email thread context. Affinity logs which emails live in which threads and who was copied. The export gives you isolated interaction records with subject lines and body text, but not the thread structure. A 6-month negotiation with a client becomes a list of 40 disconnected emails. Secondary connections. If Alice is connected to Bob, and Bob is connected to Charlie, Affinity's UI makes that visible immediately. The export gives you direct relationships only. You lose the insight that Charlie is reachable through Bob. Interaction source. Affinity tracks whether an email was inbound, outbound, CC'd, or forwarded. The export includes subject and body, but the conversation arc is lost if you have no unified view of who initiated and who responded. Implicit metadata. Notes you added in Affinity's contact record, tags, custom fields tied to your internal workflows—these export, but only if you've been consistent in naming and structure. Most teams have not. The missing piece is not data—it's context. And context is what wealth advisors need most. Design a phased test before full migration Migrating 2,000 contacts from Affinity to any new platform is a commitment. Before you attempt it, test with 50 to 100 of your most important relationships. Choose them strategically: Your top 20 clients by AUM. If the migration breaks these, you'll notice immediately. Your most complex deal. Pick one that involved 8+ people, 6+ months of back-and-forth, and multiple organizations. If you can recreate the context for that deal, you can do it for most. Your most connected advisor or partner. If a single team member has 50+ first-degree connections, test all of them. Their network is your network; if it gets orphaned, you've just lost a key asset. Run the test over 2 weeks. Export the subset from Affinity, import into Orin, and spend a few hours each day navigating the relationships, searching for clients, and checking that the context is there. Do not automate this. You need to feel the gaps. Step 1: Export from Affinity—map what you're taking Affinity's export wizard gives you a CSV. Open it in a spreadsheet and audit what's there: Contacts table: One row per contact. Columns typically include: ID (Affinity's internal GUID), first name, last name, email, phone, title, organization ID (foreign key), date added, custom fields you've created. Check if your custom fields exported. If they're blank or corrupted, you've just found your first manual backfill. Organizations table: One row per org. Columns: ID, name, website, industry, employee count, location, custom fields. Spot-check a few orgs against your memory. Missing data here (e.g., no industry) means you'll need to fill it in Orin later. Interactions table: One row per email, meeting, note. Columns: contact ID, organization ID, date, type (email, call, meeting, note), subject, body, direction (inbound/outbound), participants. This is the messiest export because Affinity's interaction logging is not strictly structured. Subject lines and email bodies may contain line breaks, special characters, or encoding issues that break CSV parsing. Before you import anything, run these checks: Count the rows in each table. Do they match what you expect? If you have