[{"data":1,"prerenderedAt":656},["ShallowReactive",2],{"insight-crm-migration-checklist":3,"insights-cards":546},{"id":4,"title":5,"body":6,"category":527,"date":528,"description":529,"extension":530,"meta":531,"navigation":532,"path":533,"readingTime":534,"relatedArticles":535,"relatedAssessment":539,"relatedServices":540,"seo":543,"stem":544,"__hash__":545},"insights\u002Finsights\u002Fcrm-migration-checklist.md","CRM Migration Checklist: The Records Arrive, the Selling Process Gets Left Behind",{"type":7,"value":8,"toc":512},"minimark",[9,13,18,21,28,34,40,43,47,169,172,176,179,182,185,188,191,195,198,201,204,220,223,226,230,233,254,257,261,264,287,290,294,297,300,304,307,369,372,375,389,393,396,419,422,426,431,451,456,473,478,489,494,505,509],[10,11,12],"p",{},"A CRM migration is usually scoped as an export, a mapping spreadsheet and an import. That scope moves the rows and leaves behind what gave them meaning: what each stage implied, who owned which account and why, and which quiet automations kept deals from going stale. The damage does not appear in the import log. It appears a quarter later, as a forecast nobody believes.",[14,15,17],"h2",{"id":16},"a-crm-holds-three-things-and-only-one-of-them-exports","A CRM holds three things, and only one of them exports",[10,19,20],{},"It helps to separate what lives in the old system into three layers.",[10,22,23,27],{},[24,25,26],"strong",{},"Data."," Contacts, companies, deals, activities, attachments. This is what an export gives you.",[10,29,30,33],{},[24,31,32],{},"Meaning."," What \"Proposal sent\" required before a deal could enter it. What a probability of 60 percent was understood to imply. Why some accounts are marked \"strategic\". This layer lives in people's heads and in conventions, and no file contains it.",[10,35,36,39],{},[24,37,38],{},"Behavior."," Assignment rules, reminders, validation, approval routing, scheduled reports, integrations that push closed deals to billing. This layer is configuration and code. It does not export either, and nobody has a full list of it.",[10,41,42],{},"A migration that handles only the first layer produces a new system with the same records and a different business. The checklist below is organized around recovering the other two.",[14,44,46],{"id":45},"object-by-object-what-a-plain-copy-does-to-each","Object by object: what a plain copy does to each",[48,49,50,66],"table",{},[51,52,53],"thead",{},[54,55,56,60,63],"tr",{},[57,58,59],"th",{},"Object",[57,61,62],{},"What typically goes wrong",[57,64,65],{},"Decision to make before any export",[67,68,69,81,92,103,114,125,136,147,158],"tbody",{},[54,70,71,75,78],{},[72,73,74],"td",{},"Companies and contacts",[72,76,77],{},"Duplicates multiply, because each system defines \"same company\" differently",[72,79,80],{},"Matching rules: domain, tax ID, normalized name. Who resolves conflicts",[54,82,83,86,89],{},[72,84,85],{},"Deals",[72,87,88],{},"Stage names are copied but their meaning is not. Close dates and amounts load fine, probabilities become nonsense",[72,90,91],{},"A written stage map with rules, not just a lookup table",[54,93,94,97,100],{},[72,95,96],{},"Ownership",[72,98,99],{},"Records load under an admin user or a departed rep",[72,101,102],{},"An owner for every open record, agreed with sales management",[54,104,105,108,111],{},[72,106,107],{},"Activity history",[72,109,110],{},"Emails, calls and notes lose threading, authorship or timestamps. \"Created on\" becomes the import date",[72,112,113],{},"How much history to bring, in what form, and where the rest stays readable",[54,115,116,119,122],{},[72,117,118],{},"Custom fields",[72,120,121],{},"Hundreds of fields get recreated without anyone knowing which matter",[72,123,124],{},"A keep, merge, archive or drop decision per field, with a named owner",[54,126,127,130,133],{},[72,128,129],{},"Relationships",[72,131,132],{},"Links between contacts, deals and parent accounts break when IDs change",[72,134,135],{},"A crosswalk of old IDs to new IDs, stored permanently",[54,137,138,141,144],{},[72,139,140],{},"Attachments",[72,142,143],{},"Files are left behind or exceed storage limits",[72,145,146],{},"Which files are needed, and where they will live",[54,148,149,152,155],{},[72,150,151],{},"Automations",[72,153,154],{},"Silently disappear",[72,156,157],{},"An inventory of every rule and what it protected",[54,159,160,163,166],{},[72,161,162],{},"Reports and dashboards",[72,164,165],{},"Cannot be copied at all",[72,167,168],{},"A short list of reports to rebuild against the new model",[10,170,171],{},"Contacts and companies are the easy part, and even they need a deduplication policy. Everything below them requires a decision that somebody with authority has to make. The pattern to avoid is making those decisions during the import, under time pressure, by whoever happens to be holding the spreadsheet.",[14,173,175],{"id":174},"the-stage-map-is-not-a-lookup-table","The stage map is not a lookup table",[10,177,178],{},"This is the item most often waved through, because it looks trivial. Old stage on the left, new stage on the right.",[10,180,181],{},"Picture a company moving from a seven-stage pipeline to a five-stage one. The old system has \"Negotiation\" and \"Verbal commit\". The new one has only \"Negotiation\". Merge the two and every deal that had a verbal yes is now indistinguishable from one where pricing is still being argued. The weighted forecast drops or jumps depending on the probability attached to the new stage, and no deal changed in reality.",[10,183,184],{},"The opposite case is just as common. One old stage, \"Qualified\", has to be split into \"Discovery\" and \"Solution fit\". A lookup table cannot split. Someone has to define a rule (for example, a deal with a recorded demo goes to the later stage) or the reps have to reclassify their own deals.",[10,186,187],{},"A usable stage map therefore has four columns: old stage, new stage, the rule for ambiguous cases, and who decides when the rule does not apply. For open deals in late stages, have the owning rep confirm the placement by hand. It is a few hours of work and it protects the number leadership will be judged on.",[10,189,190],{},"Do the same for anything that behaves like a stage: lead status, deal type, loss reasons, account tiers.",[14,192,194],{"id":193},"custom-fields-are-archaeology","Custom fields are archaeology",[10,196,197],{},"A mature CRM has fields nobody can explain. The instinct is to drop them. Be careful: a field with no living author is often an undocumented business rule.",[10,199,200],{},"Suppose there is a checkbox called \"Legal hold 2\" on a few hundred accounts. Nobody remembers creating it. A search of the automations shows it suppresses those accounts from marketing emails. Dropping it in the migration would resume sending campaigns to customers who were deliberately excluded.",[10,202,203],{},"For each custom field, check four things before deciding its fate:",[205,206,207,211,214,217],"ol",{},[208,209,210],"li",{},"How many records have a value, and when was one last changed?",[208,212,213],{},"Does any automation, report, integration or template reference it?",[208,215,216],{},"Does any rep read it before a call or a renewal?",[208,218,219],{},"Does another team (finance, legal, support) depend on it?",[10,221,222],{},"Fields that fail all four can be archived to a flat file and left behind. The rest get mapped, merged or redefined.",[10,224,225],{},"The hardest version of this problem appears when the system you are leaving was written in-house, or bent far away from its vendor defaults over the years. Field names in such a system made sense to its original author and to almost nobody else, and that author may no longer work for you. Budget real time for reading code and querying the database directly. The schema will tell you what is stored. Only the code and the users will tell you what it means.",[14,227,229],{"id":228},"history-decide-what-you-are-willing-to-lose-and-say-so","History: decide what you are willing to lose, and say so",[10,231,232],{},"Full activity history rarely survives a migration intact. Email threading, call recordings, inline images and the original author and timestamp are all fragile. You have three honest options:",[234,235,236,242,248],"ul",{},[208,237,238,241],{},[24,239,240],{},"Migrate recent history in full."," For example, all activity on open deals and on accounts touched in the last year or two.",[208,243,244,247],{},[24,245,246],{},"Compress older history."," One summary note per account or deal, with dates and counts, plus a link to the archive.",[208,249,250,253],{},[24,251,252],{},"Keep the old system readable."," A read-only license or an exported archive that people can search.",[10,255,256],{},"Most teams end up with a combination. What matters is that the choice is explicit and announced. Reps forgive a known gap. They do not forgive opening an account before a renewal call and finding five years of context gone without warning.",[14,258,260],{"id":259},"behavior-inventory-what-the-old-system-did-on-its-own","Behavior: inventory what the old system did on its own",[10,262,263],{},"List every automated behavior in the source system, including the ones nobody thinks of as automation:",[234,265,266,269,272,275,278,281,284],{},[208,267,268],{},"Assignment and round-robin rules.",[208,270,271],{},"Required fields and validation at each stage.",[208,273,274],{},"Reminders, escalations and stale-deal alerts.",[208,276,277],{},"Approval routing for discounts or contract terms.",[208,279,280],{},"Email templates and sequences.",[208,282,283],{},"Scheduled reports that land in someone's inbox every Monday.",[208,285,286],{},"Every integration: what it reads, what it writes, how often, and what breaks downstream if it stops.",[10,288,289],{},"For each one, decide whether to rebuild it, replace it or retire it. Integrations deserve the closest look, because the consumers are outside sales. Finance may be invoicing from a nightly export that nobody in the project knows exists.",[14,291,293],{"id":292},"ownership-disputes-belong-in-the-migration-plan","Ownership disputes belong in the migration plan",[10,295,296],{},"If two reps already disagree about who owns an account, moving to a new system will not settle it. It will formalize whichever answer happened to be in the export. The same goes for territories that were redrawn informally, for accounts still assigned to people who left, and for house accounts nobody claims.",[10,298,299],{},"Treat ownership as its own workstream. Get the rules of engagement in writing from sales leadership, apply them to the data before the load, and publish the result to the team in advance. A migration is one of the few moments when cleaning this up is expected. Use it.",[14,301,303],{"id":302},"choosing-a-cutover","Choosing a cutover",[10,305,306],{},"There are three workable patterns. Taste should not decide between them. The volume and value of deals that are open on cutover day should.",[48,308,309,325],{},[51,310,311],{},[54,312,313,316,319,322],{},[57,314,315],{},"Pattern",[57,317,318],{},"How it works",[57,320,321],{},"Fits when",[57,323,324],{},"Main risk",[67,326,327,341,355],{},[54,328,329,332,335,338],{},[72,330,331],{},"Big bang",[72,333,334],{},"Freeze the old system, load everything, open the new one",[72,336,337],{},"Small pipeline, short sales cycle, anything missed can be re-entered within a day",[72,339,340],{},"No fallback if the load is wrong",[54,342,343,346,349,352],{},[72,344,345],{},"Parallel run",[72,347,348],{},"Both systems live for a fixed period, with one named system of record at each moment",[72,350,351],{},"Large open pipeline, long cycles, high cost of a lost deal",[72,353,354],{},"Double entry fatigue, and drift between the two",[54,356,357,360,363,366],{},[72,358,359],{},"Phased by team",[72,361,362],{},"One team or region moves at a time",[72,364,365],{},"Distinct teams with little account overlap",[72,367,368],{},"Shared accounts split across two systems",[10,370,371],{},"A parallel run only works with two conditions. First, a written end date and exit criteria, or it runs forever. Second, clarity about which system is authoritative on any given day. Two sources of truth is worse than either one.",[10,373,374],{},"Whichever pattern you choose:",[234,376,377,380,383,386],{},[208,378,379],{},"Run at least one full rehearsal load into a test environment, with real data, and time it.",[208,381,382],{},"Define a short freeze window for the final load, and tell the sales team well ahead.",[208,384,385],{},"Avoid the last weeks of a quarter.",[208,387,388],{},"Write the rollback plan before you need it: what triggers it, who calls it, how long it takes.",[14,390,392],{"id":391},"verification-beyond-the-row-count","Verification beyond the row count",[10,394,395],{},"Matching record counts prove the import ran. They do not prove the business survived it. Reconcile on business terms:",[234,397,398,401,404,407,410,413,416],{},[208,399,400],{},"Total open pipeline value by stage and by owner, old versus new.",[208,402,403],{},"Number of open deals per rep.",[208,405,406],{},"Closed revenue by month for the last several quarters.",[208,408,409],{},"A sample of accounts checked by the reps who own them, including their largest and their messiest.",[208,411,412],{},"Every open deal has an owner, a stage, an amount and a next step.",[208,414,415],{},"Every rebuilt report produces the same figure as its predecessor for a past period.",[208,417,418],{},"Every integration has processed a real record end to end.",[10,420,421],{},"Have each manager sign off on their own team's pipeline. They will spot a wrong number faster than any script.",[14,423,425],{"id":424},"the-checklist-in-order","The checklist, in order",[10,427,428],{},[24,429,430],{},"Before any export",[234,432,433,436,439,442,445,448],{},[208,434,435],{},"Inventory objects, fields, automations, integrations and reports.",[208,437,438],{},"Write the stage map with rules and an escalation owner.",[208,440,441],{},"Decide the fate of each custom field.",[208,443,444],{},"Settle ownership and territory rules.",[208,446,447],{},"Agree the history policy and the archive location.",[208,449,450],{},"Profile the data for duplicates, orphans and stale records.",[10,452,453],{},[24,454,455],{},"During build and rehearsal",[234,457,458,461,464,467,470],{},[208,459,460],{},"Create the ID crosswalk and keep it.",[208,462,463],{},"Clean data in the source or in a staging area, not by hand in the target.",[208,465,466],{},"Rebuild the automations and the short list of reports.",[208,468,469],{},"Run a rehearsal load and the business reconciliation.",[208,471,472],{},"Let a few reps review their own accounts in the test environment.",[10,474,475],{},[24,476,477],{},"At cutover",[234,479,480,483,486],{},[208,481,482],{},"Announce the freeze, run the final load, reconcile.",[208,484,485],{},"Get manager sign-off per team.",[208,487,488],{},"Make the old system read-only on a stated date.",[10,490,491],{},[24,492,493],{},"In the first month",[234,495,496,499,502],{},[208,497,498],{},"Keep a fast channel for \"this record is wrong\" reports.",[208,500,501],{},"Watch the forecast against the old system's last known numbers.",[208,503,504],{},"Decommission the old system only after the archive is confirmed readable.",[14,506,508],{"id":507},"what-would-your-export-leave-behind","What would your export leave behind?",[10,510,511],{},"If you are planning to move off your current CRM, the useful first step is an inventory of meaning and behavior, not a mapping spreadsheet. Trivo can go through your current system with you, mark what moves cleanly and what needs a decision, and lay out the cutover that fits the pipeline you have in flight.",{"title":513,"searchDepth":514,"depth":514,"links":515},"",2,[516,517,518,519,520,521,522,523,524,525,526],{"id":16,"depth":514,"text":17},{"id":45,"depth":514,"text":46},{"id":174,"depth":514,"text":175},{"id":193,"depth":514,"text":194},{"id":228,"depth":514,"text":229},{"id":259,"depth":514,"text":260},{"id":292,"depth":514,"text":293},{"id":302,"depth":514,"text":303},{"id":391,"depth":514,"text":392},{"id":424,"depth":514,"text":425},{"id":507,"depth":514,"text":508},"CRM","2026-10-12","A CRM migration is a process migration with a data load attached. What a plain export loses, how to choose a cutover, and a checklist for each stage.","md",{},true,"\u002Finsights\u002Fcrm-migration-checklist",9,[536,537,538],"custom-crm-vs-off-the-shelf","crm-implementation-timeline","strangler-fig-modernization","legacy-risk",[541,542],"crm","modernization",{"title":5,"description":529},"insights\u002Fcrm-migration-checklist","mhEhvE_QMto7bgYMZInpbOmsDPe4QISQWajYJBzO8vo",[547,554,561,566,571,576,582,587,589,594,600,607,612,618,624,630,636,641,646,651],{"path":548,"title":549,"description":550,"category":551,"readingTime":534,"relatedServices":552,"date":528},"\u002Finsights\u002Fbuild-vs-buy","The License Fee Is the Small Number: A Working Guide to Build or Buy","Buying software is usually right, until the product sits on top of how you make money. How to sort capabilities, price the hidden costs and decide.","Strategy",[553,542],"custom-software",{"path":555,"title":556,"description":557,"category":558,"readingTime":534,"relatedServices":559,"date":528},"\u002Finsights\u002Fcloudflare-observability","The Cloudflare Signals You Need Wired Up Before Something Breaks","Cloudflare records plenty by default. Whether a person hears about a problem in time depends on choices made in a quiet week, not mid-outage.","Cloudflare",[560,542],"cloudflare",{"path":562,"title":563,"description":564,"category":558,"readingTime":534,"relatedServices":565,"date":528},"\u002Finsights\u002Fcloudflare-performance-tuning","After the Static Assets: Where Cloudflare Performance Is Actually Won","Default caching handles images, CSS and JavaScript. The larger gains sit in HTML, API responses, cache keys and origin trips that nobody tuned.",[560,553],{"path":567,"title":568,"description":569,"category":558,"readingTime":534,"relatedServices":570,"date":528},"\u002Finsights\u002Fcloudflare-waf-and-ddos","Managed Rules Know the Internet. Custom Rules Have to Know Your Application.","Cloudflare's managed WAF and DDoS rules stop generic attacks. Logins, APIs, bots and false positives still need rules written from your own traffic.",[560,553],{"path":572,"title":573,"description":574,"category":558,"readingTime":534,"relatedServices":575,"date":528},"\u002Finsights\u002Fcloudflare-zero-trust-and-integrity","Who Got In Versus What Is Running: Two Integrity Problems One Control Cannot Solve","Zero Trust verifies who reaches a system. Client-side script monitoring verifies what runs in the browser. They fail differently and need separate owners.",[560,542],{"path":577,"title":578,"description":579,"category":527,"readingTime":580,"relatedServices":581,"date":528},"\u002Finsights\u002Fcrm-adoption-and-training","Your CRM Passed Every Test and Nobody Uses It: A Diagnostic for Stalled Adoption","Low CRM adoption is rarely a training gap. How to tell whether the cause is screen friction, missing payback or management habits, and what to fix first.",8,[541],{"path":583,"title":584,"description":585,"category":527,"readingTime":580,"relatedServices":586,"date":528},"\u002Finsights\u002Fcrm-implementation-timeline","The Honest Calendar of a CRM Implementation: Five Phases and Where the Weeks Go","Provisioning a CRM takes a day. Making it the place your team sells from takes months. A phase-by-phase calendar, with the parts quotes tend to leave out.",[541,553],{"path":533,"title":5,"description":529,"category":527,"readingTime":534,"relatedServices":588,"date":528},[541,542],{"path":590,"title":591,"description":592,"category":527,"readingTime":580,"relatedServices":593,"date":528},"\u002Finsights\u002Fcustom-crm-vs-off-the-shelf","Should You Build Your Own CRM? Run the Build-or-Buy Test on Your Sales Process","Most of a CRM is a commodity you should buy. The question is whether the way you sell fits the platform's model, and what it costs when it does not.",[541,553],{"path":595,"title":596,"description":597,"category":551,"readingTime":598,"relatedServices":599,"date":528},"\u002Finsights\u002Fcustom-software-cost-framework","Estimate Before the Estimate: Sizing a Custom Software Budget on Your Own","You can't know the price before a quote, but you can know what drives it. Six cost drivers, a self-check worksheet and how to read a proposal.",10,[553],{"path":601,"title":602,"description":603,"category":604,"readingTime":534,"relatedServices":605,"date":528},"\u002Finsights\u002Fetl-vs-elt","Transform before or after loading? A practical ETL versus ELT decision for mid-sized teams","ETL or ELT is a question of where transformation runs and who pays for it. A practical way for a mid-sized team to choose, with the costs most plans miss.","Data",[553,606],"ai-automation",{"path":608,"title":609,"description":610,"category":551,"readingTime":598,"relatedServices":611,"date":528},"\u002Finsights\u002Fevaluating-engineering-depth","Ask About the Outage: How to Vet a Software Vendor's Real Engineering Ability","Portfolios and logos look the same from every vendor. The interview questions, artifacts and deal-breakers that show who has really run software in production.",[553,542],{"path":613,"title":614,"description":615,"category":616,"readingTime":598,"relatedServices":617,"date":528},"\u002Finsights\u002Fhipaa-business-associate-agreement","A BAA Is a Contract, Not a Badge: What Your Software Vendor Is Really Signing Up For","What a HIPAA Business Associate Agreement commits a software vendor to, what it leaves unproven, and what to ask and build before PHI reaches the system.","Compliance",[553,606],{"path":619,"title":620,"description":621,"category":616,"readingTime":622,"relatedServices":623,"date":528},"\u002Finsights\u002Fhipaa-technical-safeguards-checklist","Reading 45 CFR 164.312 Like a Design Document: HIPAA Technical Safeguards for Engineers","The five HIPAA technical safeguard standards mapped to concrete engineering decisions: identity, logging, integrity, authentication and encryption.",11,[553,542,560],{"path":625,"title":626,"description":627,"category":628,"readingTime":534,"relatedServices":629,"date":528},"\u002Finsights\u002Flegacy-erp-anticorruption-layer","The ERP stays as it is: building on a decades-old system through an anti-corruption layer","How to build new software on an old ERP without modifying it, using an anti-corruption layer: what goes inside, how to handle writes, when to skip it.","Modernization",[542,553],{"path":631,"title":632,"description":633,"category":634,"readingTime":598,"relatedServices":635,"date":528},"\u002Finsights\u002Fllm-in-production-confidence-thresholds","An LLM that proposes and a system that decides: thresholds, review and audit for production AI","Running an LLM in production without giving it autonomy: measured confidence, thresholds set by business cost, human review that works, an audit trail.","AI",[606,553],{"path":637,"title":638,"description":639,"category":551,"readingTime":534,"relatedServices":640,"date":528},"\u002Finsights\u002Fnearshore-offshore-onshore-cost","Cheap Hours, Expensive Projects: Pricing US, Nearshore and Offshore Teams Honestly","The hourly rate tells you little about what a project will cost. How overlap, rework, turnover and compliance change the math for each delivery model.",[553],{"path":642,"title":643,"description":644,"category":634,"readingTime":534,"relatedServices":645,"date":528},"\u002Finsights\u002Frpa-vs-api-integration","Bots on the screen or calls to the API: where RPA earns its place and where it becomes debt","RPA and API integration solve the same problem at different layers. How to choose, what screen automation really costs, and how to run it safely if you must.",[606,553],{"path":647,"title":648,"description":649,"category":628,"readingTime":534,"relatedServices":650,"date":528},"\u002Finsights\u002Fstrangler-fig-modernization","Replace the legacy system in slices: a working guide to the strangler fig pattern","How to retire a legacy system piece by piece while the business keeps running: the facade, the first slice, parallel runs, and when the pattern fails.",[542,553],{"path":652,"title":653,"description":654,"category":551,"readingTime":598,"relatedServices":655,"date":528},"\u002Finsights\u002Ftwo-week-discovery-deliverables","Paying for a Plan, Not a Pitch: What Two Weeks of Discovery Owes You","A paid discovery should leave you with documents another team could build from. The five deliverables, the work behind them and the limits to expect.",[553,542],1792618973202]