A cloud migration discovery phase is the work done before anything moves: finding every server, database and connection in the estate, measuring how each one is used, and deciding what happens to it. A proper one produces four things: a verified inventory, a dependency map, a sizing baseline and a decision for each application. Without them, a migration plan is a guess with a Gantt chart on it.

Why discovery decides the timeline

Most migration plans start from a list: a spreadsheet, a CMDB export, or whatever the infrastructure team remembers. That list is almost always incomplete. The surprises arrive mid-project: a server nobody owns, a nightly file transfer to a supplier, a licence tied to a physical host. Each one stops a wave of work while somebody investigates.

Discovery moves those surprises to the start, when they cost a conversation rather than a delayed cutover. It is why the timeline in How Long Does a Cloud Migration Actually Take? depends so heavily on estate complexity, not just server count.

The five outputs of a proper discovery phase

OutputWhat it containsWhy it matters
Verified inventoryEvery server, database and storage system, with an ownerYou cannot migrate, or retire, what you have not found
Dependency mapWhich systems talk to which, on which ports, including external partiesSystems that depend on each other usually have to move together
Utilisation baselineCPU, memory and disk use over time, including peaksSizes the target estate and spots idle servers before you pay to move them
Application decisionsOne of the 7 Rs per application: rehost, replatform, retire, retain and so onStops everything defaulting to lift and shift
Constraints registerLicences, contracts, support end dates, regulated data, downtime windowsSets the order in which things can move

What to collect, and how

No single method sees everything. Most discovery work combines automated collection with conversations with the people who run the systems.

MethodWhat it seesLimits
Agentless collectorServer configuration, disk allocation, database versions, and average and peak CPU, memory and disk I/O, collected through VMware vCenterPer AWS’s documentation, it cannot look inside each VM to see which processes are running
Agent on each serverConfiguration, detailed performance over time, inbound and outbound network connections and running processes, on Windows and Linux servers, including physical onesNeeds installation and access to every server
Imported recordsWhatever your CMDB or spreadsheets already holdOnly as accurate as the source
Owner interviewsBusiness purpose, hidden jobs, planned changesMemory and goodwill vary

(Check before publishing: AWS has been changing its discovery tooling. At the time of drafting, the Application Discovery Service documentation says the service “is no longer open to new customers” and points to AWS Transform for similar capabilities. Confirm what is available on the publish date. Our post on AWS Migration Hub alternatives covers the wider change.)

Whichever tool is used, capture at least a month of utilisation data. A server that looks idle in a quiet week may be the one that runs month-end reporting.

Dependencies are where plans break

Network connection data tells you what talks to what, but it cannot tell you why. The usual hidden dependencies are scheduled jobs that push or pull files, hard-coded IP addresses in application configuration, shared databases used by three applications, licence servers, and certificates or DNS entries managed by someone outside the project team. Mapping them early is what lets you group servers into sensible migration waves rather than moving an application and then discovering its database stayed behind.

A worked example

(Illustrative.) A UK wealth manager believes it has 45 servers running 12 applications. Four weeks of discovery, with agents on every server and a month of utilisation data, finds this:

Before discoveryAfter discovery
Servers4553 (8 not on the list; 5 idle test machines, 3 live)
Applications1214
Known dependenciesNone documented9 found, including a nightly file transfer from the reporting server to a custodian
Servers using under 5% CPU for the full periodNot known11 (candidates to retire or downsize)
Plan3 waves, all rehost4 waves: 7 apps rehosted, 3 replatformed, 2 retired, 2 retained

The reporting application moves in a later wave than first planned, because the custodian’s file transfer needs re-pointing and testing before cutover. Retiring two applications and downsizing eleven servers means fewer things to pay for after the move. None of this would have appeared in the original spreadsheet.

The regulated-firm layer

For FCA-regulated firms, discovery also needs to record things a technical inventory would not:

  • Data classification and location: what each system holds, and where that data is allowed to reside.
  • Important business services: which systems support each one, because that decides which can tolerate downtime during cutover (see FCA operational resilience).
  • Third-party connections: custodians, market data feeds, payment providers, and their contracts.
  • Exit and rollback needs: what you would do if a cutover failed, and how you would leave AWS later.

(Check before publishing: whether the move counts as material outsourcing under the FCA’s rules (SYSC 8) and whether notifying the FCA is required. Confirm against the current FCA Handbook wording.)

What you should have at the end

A discovery phase is finished when you hold a signed-off inventory, a dependency diagram for each application, a decision and an owner for each, a list of constraints, and a draft wave plan. That is also what a landing zone design needs as input: accounts, networks and access rules built around the workloads that are actually moving.

Where to start

You do not need a large programme to begin. Pick your most important application, find everything it touches, and see how closely the result matches what your documentation says. The gap is usually instructive.

A Yemberzal Cloud Migration Assessment is a fixed-fee piece of work that maps every workload and dependency before a price is set for moving anything.