Discovery: what is actually running, not what people think is running
Ask around and every answer you get will be honest and incomplete. The person who built the nurture remembers the nurture. Ops remembers what broke. Nobody remembers the operational program a contractor stood up before the rebrand before last, still firing nightly, still stamping a field that a CRM assignment rule reads. Recall gets you a hypothesis list. Treat it as one, then go and find evidence.
Every platform will tell you what is alive if you ask it properly. Last-run and last-activity dates on every operational program, automation rule and workflow. Sends by asset over a trailing window. Form submissions counted by month, never lifetime, because lifetime totals flatter assets that died years ago. Then the part most teams skip: for each field, how many records hold a non-null value, and when it was last written. A field existing in the schema tells you nothing — plenty were built for one campaign in a forgotten quarter and still clutter every picklist. Those counts are the field-use audit everything downstream relies on.
Look outside the platform as well, because the export will not. On a Segment to Marketo consolidation our consultants delivered for an aviation and robotics business, the site pages themselves had to be updated to carry the tracking script, and the reporting the business actually looked at sat in Tableau. Neither shows up in an audit that stops at the platform's own admin screens.
What the inventory carries against each object:
- An owner. Not a team — a person who would notice if it stopped.
- The last time it did anything: ran, sent, took a submission, wrote a value.
- Dependencies in both directions. The tracking script on pages built outside the CMS. A webhook. A scheduled extract reading the platform's tables straight into a BI tool. A nightly file drop from a system marketing has never heard of, which keeps arriving after cutover whether or not anything is listening.
- A disposition — move, rebuild, archive, kill — with the name of whoever agreed it.
- Whether anyone can describe the intended behaviour without opening it. Often the answer is no. Write that down; it is a finding in itself.
The argument worth having early: most of a legacy instance should not move. Lifting everything and tidying up afterwards is the most expensive decision on the table: the tidying never happens, and you have paid to rebuild rubbish that now looks like a deliberate choice. Nothing moves unless someone justifies it. An asset with no named owner does not move, and "we might need it" is not an owner. What stays behind gets exported, kept readable, and put on the retention register with an owner and a date it goes; an archive with no retention owner is a liability with a filename.
We write acceptance criteria before anyone logs into the destination. "The nurture is migrated" is not one. A criterion says that a person submitting the demo form with a given country value enters the stream, receives the second email on the same delay as production, is checked against the same suppression list, and the sync writes the same value to the same CRM field. Across the migrations we have run it has done double duty: it becomes the go/no-go checklist at cutover, thresholds attached, and it decides sequencing — which instance goes first, which workspace and person partition each acquired organisation lands in, which sending subdomain carries its mail.
The work itself is dull, and anyone who says otherwise is selling a tool. Someone reads every flow step by hand. In a HubSpot to Odoo build our consultants delivered for an authenticator product company, that meant transcribing operational program logic held in regular expressions and testing each condition on its own, in a platform the team had to learn from scratch first. Nothing does this for you.
Use the political window while it is open. Propose switching off the regional newsletter in a normal quarter and you have started an argument with whoever launched it. During a migration the burden of proof flips — everything must earn its passage — and programs that survived several budget cycles die quietly in a spreadsheet review. That window shuts on the go-live date and it does not reopen.