saas strategy

Software Migration Checklist: Data, People and Rollback

A controlled software migration begins with an inventory and a test export, then proves that a trial import preserves the records, relationships and access people need. Agree acceptance and rollback conditions before switching the source of truth. A file that opens successfully is not enough evidence that the workflow can move safely.

Inventory the system you actually use

List record types, fields, stable identifiers, relationships, attachments, comments, timestamps and permissions. Include automations, reports, scheduled jobs, external links and integrations. Ask users about work maintained outside the main application, such as a personal spreadsheet used to reconcile invoices.

Name the data owner, migration lead, access owner and person who will accept the result. One person may cover several roles, but the responsibilities must be explicit. Identify information that should be retained, cleaned up or excluded, subject to the organisation’s actual obligations. Do not invent a retention rule to simplify a difficult export.

Before replacing software, check whether the problem can be solved in place. A shared naming convention, ownership clean-up or a better approval routine may remove the reason for migration. The cost of change includes interruption and uncertainty, not just importing a file.

Prove what the export contains

A CSV or TSV may represent one view rather than an entire application. For example, GitHub’s project export documentation describes downloading a project view as TSV. That statement does not establish a complete backup of issues, attachments, relationships and application configuration. Check each required object separately.

Export a representative sample before promising a cutover. Include records with long text, non-ASCII characters, line breaks, empty fields, attachments and linked objects. Record the export account, plan, view or filter and date. Preserve an unchanged copy in an approved location and document who can access it.

Count records, but do not rely only on counts. Two files can have the same number of rows and different meanings. Verify identifiers, relationship links, status values, timestamp interpretation and attachment access. Check encoding and timezone assumptions explicitly.

Map fields and relationships

Illustrative migration mapping for client requests
SourceDestinationTransformationValidationOwner
request_idlegacy_request_idPreserve as text, including leading zerosEvery imported request maps to one source IDMigration lead
client_idclient_referenceResolve against imported client recordsNo orphan client referencesData owner
statusworkflow_stateMap “awaiting sign-off” to “review” only after approvalSample each source stateDelivery lead
created_atcreated_atPreserve offset or document conversionCompare dates across timezonesMigration lead
attachment_urlattachment or archive referenceRetrieve through approved access; do not assume links remain validOpen a representative sample with intended rolesData owner
client permissionclient role membershipRebuild through an approved access matrixClient A cannot view Client B dataAccess owner

Keep a reject report for records that cannot be imported, rather than silently dropping them. Decide whether a rejected record blocks migration or can be resolved later. A required client relationship usually needs resolution before acceptance; an optional legacy tag may have a documented exception.

Run a trial import and workflow check

Use an isolated destination and approved test data. Import prerequisite objects first, then dependent records. Reconcile totals, inspect representative samples and perform normal tasks: find a request, edit it, obtain approval, restrict access and export again. Include users who understand the original records, not only the person writing the import.

A supplier’s import success message is a vendor result to investigate. An observed result records which data and behaviours were checked and what failed. Keep the two distinct. If the tool changes IDs, preserve the mapping needed by old references and connected systems.

Training should use the actual future workflow. Explain where work will arrive, who resolves errors and when the old system becomes read-only. The migration is incomplete if the data is present but nobody knows which system to update.

Agree cutover and rollback in advance

Illustrative cutover worksheet
Source of truth before switch: existing request register.
Freeze or delta-capture method: migration lead to confirm.
Final export owner: operations lead.
Acceptance: required record counts reconcile; sampled fields and attachments match;
client-role tests pass; representative workflow completes.
Go/no-go owner: delivery lead, with data and access sign-off.
Rollback trigger: unexplained missing required records or failed client isolation.
Rollback action: stop destination writes, preserve changes, restore old workflow.
Reconciliation: migration lead maps any destination-only work back to source.
Communication: tell participants which system is writable and when to resume.
Retirement: only after acceptance, required retention and exit checks.

Set the rollback window and decision authority to fit the actual operation. Rolling back is not just reopening the old application; work created after cutover must be reconciled. Practise that step with sample changes before relying on it. Avoid cancelling the old subscription while it is still part of the rollback plan.

Arriving from an old Trajectory export link

The current AppTrajectory publication cannot recover former Trajectory accounts, access their projects or generate exports. Work from exports or backups you already possess. Do not send passwords, API tokens or private project files to the publisher. The history and service notice explains the distinction from the former application.

If an old export is incomplete, inventory what is present and identify the gaps. Do not manufacture missing relationships or timestamps to make the import appear complete. Preserve the uncertainty in the migration record and let the data owner decide whether the remaining information is usable.

Finish the operational handover

Monitor early work for errors, confirm support responsibilities and remove old integration credentials once they are no longer needed. Record what was accepted, remaining exceptions and the point at which rollback ended. Use the software-pilot plan for a bounded trial and the access checklist to make account ownership and offboarding explicit.