FabricFabricAirlift
Migration lifecycle

Run the assessment

Execute Lakebridge Analyzer as a workspace job and turn its output into governed estate evidence.

Run the assessment

Discovery turns source assessment output into reviewed inventory and dependency evidence.

What you are seeing

Accepted scope is content-digested so later planning cannot silently use a different inventory.

What to do next

Review exclusions and dependencies, export the immutable assessment pack, and proceed to planning.

Read the developer workflow

The assessment establishes the accepted scope for every later migration step. A worker starts the governed assessment, the Lakebridge adapter submits the pre-provisioned workspace job, and Airlift records the job run, report, inventory, dependency digests, and pinned tool version.

Use the authenticated CLI to inspect the lifecycle:

fa assessment list --estate-id est_01ARZ3NDEKTSV4RRFFQ69G5FAV --json
fa assessment status asm_01ARZ3NDEKTSV4RRFFQ69G5FAV --json

Build the source command

Do not hard-code one assessment command for every source. Read the installed profile:

import { createSourceMigrationPlan } from '@fabricorg/airlift';

const assessment = createSourceMigrationPlan('oracle').steps.find(
  (step) => step.id === 'assess',
);
if (!assessment) throw new Error('assessment phase is missing');

console.log(assessment.lakebridgeCommands);
console.log(assessment.airliftActions);

The CLI exposes the same information without writing code:

fa source plan oracle --json | jq '.steps[] | select(.id == "assess")'

For Synapse/ADF construct-level routing, inspect the same versioned catalog consumed by the assessment compiler:

fa source constructs synapse --variant synapse_dedicated_sql --json

The assessment lane, Migration IR disposition, and artifact-admission checks derive from that catalog rather than separate hard-coded tables. Its implementationStatus says which repository behavior exists (routing_only, descriptor_only, or native_generator); none of those values is validation evidence or client support proof.

Your worker runs the listed Lakebridge Profiler/Analyzer command in a pre-provisioned Databricks workspace job. It then invokes airlift.assessment_record with immutable report, inventory, and dependency references. The repository's Lakebridge adapter owns job submission and output parsing; the action owns state.

Required inputs

  • an Airlift estate with an opaque source connection reference;
  • Databricks App service-principal access to the configured analyzer job;
  • AIRLIFT_LAKEBRIDGE_ANALYZER_JOB_ID and volume root;
  • the certified Lakebridge version pin;
  • accepted source scope and exclusions.

Acceptance review

The source owner and migration lead review object counts, dependency coverage, unsupported constructs, complexity assignment, and exclusions. The result must be tied to the source version and observation time. A fixture or local stub proves the adapter contract only; it does not prove a production estate.

Acceptance is a separate airlift.assessment_accept action. It requires a complete, accepted dependency graph and exact normalized object count, then computes the scope digest from projected objects rather than trusting a caller-authored result. See the assessment-to-plan tutorial.

In the Databricks App, open Discover → Assessment studio to review the same runs, digests, inventory, graph, blockers, acceptance, and export controls.

When the estate has more than one assessment, the studio compares it with the immediately preceding snapshot. It displays changes in tables, views, routines, ETL jobs, and other objects alongside inventory/dependency digest drift. A missing digest is a review signal; it is never interpreted as an unchanged estate.

Failure behavior

Job failure, version drift, missing output, malformed report, or digest mismatch leaves the estate unassessed. Retrying reuses the logical assessment identity where appropriate; it never fabricates a successful record from partial output.

On this page