You hit export in Affinity, pull 500 contacts into CSV, and upload them to your new platform. Everything looks intact in the spreadsheet. Then you realize: the relationships you spent two years building are now semicolon-separated text. The custom fields that held deal velocity data are empty. List membership is flattened to a single column. Deal associations are orphaned without company links. The workflow states that tracked your buying journey are gone. This isn't negligence—it's how relational databases become flat files. But it also means nine specific fields need intentional recovery work before your data is usable again. Here's what dies on export, why it happens, and the exact steps to rebuild it. The nine fields that orphan on Affinity export Start by understanding what you're actually losing. These aren't data quality issues; they're structural mismatches between a relational database and CSV. Relationships (many-to-many connections). In Affinity, a single contact can have multiple relationship types to multiple people (reports to, partner with, introduced by, invested by). CSV can't express this. You get one text field per relationship type, delimited by semicolons, with no way to distinguish relationship strength or introduction context. Custom fields with conditional logic. Fields that populate automatically based on other field values (e.g., "deal stage" auto-filling based on opportunity type) export as static text. The rule is lost. List membership and hierarchy. Affinity lists are folders within folders. Export gives you a flat text column with one list name. If a contact belonged to five nested lists, you get one or none. Deal associations without company context. The deal is linked to the contact and the company separately. On export, you lose the three-way relationship. You see "Deal: Series A Round" but no company it belongs to. Opportunity tags. Multi-select fields export as semicolon-separated text, losing the visual color coding and filtering capability that made them searchable. Custom multi-select dropdowns. Same problem as tags—you get text, not structured selections. Workflow states. Affinity's workflow automations track where a contact sits in your process (e.g., "initial outreach," "awaiting response," "closed lost"). This exports as a snapshot, not a live automation trigger. Relationship graph depth. The visual web of "who knows who" in Affinity is gone. You export individuals with notes about connections, but the graph structure dies. Email domain-level mappings. Affinity's company domain logic (so all company emails roll up to the company contact) is lost. You're left with unlinked email addresses. Why this happens: relational data vs. CSV flatness Affinity stores data in a relational database. A contact record can have one-to-many relationships with other contacts, companies, deals, and custom fields. When you export to CSV, there's no native way to represent "this person is both a decision maker and an investor in two different deals." The platform has to choose: (a) duplicate the contact row for each relationship, bloating the export, or (b) flatten the relationships into text. Affinity chooses (b), which is why you see a single row per contact and a single text field per relationship type. This is the same reason proper CRM platforms like Orin preserve relationships on import—they're built to store relational data natively, not flatten it into text. Build your recovery map: the nine-field audit Before you re-import, you need a field-by-field map. This takes two hours and saves you weeks of manual cleanup. Step 1: Export and inspect In Affinity, go to Lists > [your list] > Export . Choose "CSV" and include all fields. Open the export in a spreadsheet and sort by a critical field (e.g., deal stage). Scroll through 20 rows and note which columns are empty or contain only text. Create a new column called "Recovery Action" and flag each of the nine problem fields. Step 2: Map relationships back to source Open your Affinity interface side-by-side with your export. For your top 20 contacts, manually inspect the relationship panel in Affinity and compare it to the flat text in the CSV. In the exported text field , you'll see something like "Jane; Bob; Sarah." In Affinity's UI , those names are tagged with role ("Jane = investor", "Bob = co-founder", "Sarah = advisor"). In your recovery map, create a lookup table: contact name → relationship type → linked contact ID. This is tedious for 500 contacts, so use Affinity's API or a tool like Orin's automation engine to bulk-match names and create link instructions for import. Step 3: Decode multi-select and list membership For opportunity tags, custom lists, and workflow states: In your CSV, you have text like "Series A; Enterprise; Hot lead." In your new platform, you need to separate these into individual tags or list memberships. Create a mapping table: raw text value → canonical tag name or list ID. Example: "Series A" stays