Source environment audit
Establishing what is actually running: exact source version and build, extensions, customisations made directly to the platform, database size and character set, attachment and avatar storage and its scale, and anything that has diverged from a stock installation.
Importer compatibility assessment
Determining whether the source version falls within the target platform's own importer coverage, and stating that plainly. Where it does, the migration follows a known path. Where it does not, that is custom importer development and is scoped and priced as such rather than treated as a variation.
Custom importer development
Where the source falls outside supported coverage, building the conversion for that specific schema — including the legacy structures a general-purpose importer cannot know about. This is where historic migration work lives, and it is genuinely different work from running a supported import.
Content and identity mapping
Deciding explicitly how each source construct becomes a target construct: forums to nodes, threads to threads, user groups to permission sets, private messages, subscriptions, polls, attachments, and the parts that have no direct equivalent and need a defined outcome.
User and permission reconciliation
Accounts, group memberships, moderator and administrator assignments and custom permission sets mapped onto the target's model. Permissions that were maintained through years of source work are the least visible and most disruptive thing to get wrong.
Redirect strategy
Every migrated URL has a destination on the new platform, expressed as redirect rules that can be verified rather than assumed, because search visibility after the move depends on them being complete.
Rehearsed, counted migration
Repeated runs against a copy of the real database, with counts reconciled between source and destination per content type. A migration is verified by counting, and the counts are the deliverable that turns 'it looks right' into a statement that can be checked.
Post-migration verification
Search, private messaging, attachment delivery and permission behaviour exercised with real data, and search-engine signals checked after the cutover. The engagement is not finished when the data is across; it is finished when the community works.