A bespoke platform has no export standard, no published schema and no migration tool written for it. So the project does not start with mapping. It starts with establishing what the system holds and whether it can be got out reliably more than once.
Access is the first question. A database replica, a read-only account, an API somebody wrote for a partner, or a nightly file drop each imply a different method and a different level of confidence. Systems where extraction can only be done once, by hand, are the hardest to migrate safely, because you cannot rehearse.
Schema discovery follows. In-house systems accumulate meaning in unexpected places: status flags that encode business rules, price fields overridden by a table nobody documents, product relationships expressed by naming convention. Reading the code that writes the data is usually faster than interviewing people about it.
Because of that uncertainty, these projects are staged deliberately. A small sample, validated in detail. A larger segment, validated again. Then a full run with a rehearsed cutover. The scope is fixed after the first two stages rather than promised on day one, and we say so before anyone signs anything.