FabricFabricAirlift
Source systems

Dynamics 365 to Databricks

Govern Dataverse, Finance and Operations, Sales, and Customer Service ingestion and modernization.

Dynamics 365 to Databricks

A Dynamics estate includes entity metadata, relationships, lookups, choices, change tracking, deletions, Power Platform dependencies, and business measures. Airlift scopes and certifies that connected estate while an admitted Dynamics 365 connector performs the actual extraction.

Generate the route

fa source inspect d365 --json
fa source plan dynamics_365 --variant dynamics_365_dataverse
fa source plan dynamics_365 \
  --variant dynamics_365_finance_operations \
  --json > .airlift/d365-finance-plan.json
fa application-pack plan --file dataverse-manifest.json --json > dataverse-plan.json

Variants are dynamics_365_dataverse, dynamics_365_finance_operations, and dynamics_365_sales_service.

What Airlift adds

  1. Accepts an immutable entity, field, relationship, and consumer inventory.
  2. Records target mappings and keeps plugins, virtual tables, polymorphic lookups, automations, and computed entities in explicit residue lanes.
  3. Tracks snapshot, incremental cursor, deletion behavior, restart, and freshness from the connector run.
  4. Requires independent key, relationship, choice, history, and business-measure validation rather than accepting connector completion as proof.
  5. Mints signed certificates from admitted evidence and freezes the exact wave before consumer cutover.
  6. Opens Lakeflow Connect, Unity Catalog, Delta, Databricks SQL, and AI/BI improvements as a separate modernization release.
import { createSourceMigrationPlan } from '@fabricorg/airlift';

const plan = createSourceMigrationPlan('d365', {
  variant: 'dynamics_365_finance_operations',
});

for (const step of plan.steps) {
  console.log(step.id, step.airliftActions, step.exitCriteria);
}

Supply OAuth or service-principal credentials through a Databricks connection or secret scope. Airlift stores the opaque connectionRef, never the token. The Dataverse business-semantic compiler is executable; Finance and Operations and Sales/Customer Service remain cataloged profiles until their source-specific compilers ship. Use live evidence before claiming a higher support level.

See enterprise application-pack commands for the credential-free manifest, semantic validation, and registration contracts.

Complete developer command sequence

Generate this exact recipe from the installed CLI so the guide and executable surface stay in sync:

fa source recipe dynamics_365
fa source recipe dynamics_365 --variant dynamics_365_dataverse --json > .airlift/dynamics_365-recipe.json

The App is engagement-aware. Microsoft Dynamics 365 appears under Active sources only after the source estate is added to an active engagement. The menu is derived from governed engagement scope; installing Airlift does not expose unrelated source pages.

Every remote mutation below requires --host, --org, authenticated workspace identity, and a stable --idempotency-key. JSON request files contain identifiers, artifact references, and opaque credential references—never passwords, tokens, or connection strings. Run fa <resource> <operation> --help for the current schema and exit semantics.

0. Inspect the source contract

fa source inspect dynamics_365 --json > .airlift/dynamics_365-profile.json
fa source plan dynamics_365 --variant dynamics_365_dataverse --json > .airlift/dynamics_365-capability-plan.json

Expected artifacts:

  • .airlift/dynamics_365-profile.json
  • .airlift/dynamics_365-capability-plan.json

Open Engagements → active engagement in the App. This stage is visible at /engagements after replacing the placeholder ID with the governed engagement ID.

1. Create governed scope and connection references

fa engagement create --file engagement.json --idempotency-key migration-create-v1
fa estate register --file dynamics_365-estate.json --idempotency-key dynamics_365-estate-v1
fa connection register --file dynamics_365-connection.json --idempotency-key dynamics_365-connection-v1
fa engagement update --file dynamics_365-scope.json --idempotency-key dynamics_365-scope-v1
fa engagement preflight <engagement-id>

Expected artifacts:

  • Governed engagement
  • Source estate
  • Opaque connection binding

Open Engagements → active engagement in the App. This stage is visible at /engagements/<engagement-id> after replacing the placeholder ID with the governed engagement ID.

2. Assess and accept inventory

fa assessment start --file dynamics_365-assessment-start.json --idempotency-key dynamics_365-assessment-start-v1
fa assessment status <assessment-id> --json
fa assessment record --file dynamics_365-assessment-record.json --idempotency-key dynamics_365-assessment-record-v1
fa assessment accept --file dynamics_365-assessment-accept.json --idempotency-key dynamics_365-assessment-accept-v1
fa inventory list --estate-id <estate-id> --json

Expected artifacts:

  • Assessment report reference
  • Normalized inventory
  • Dependency graph

Open Engagements → active engagement in the App. This stage is visible at /engagements/<engagement-id>/sources/dynamics_365 after replacing the placeholder ID with the governed engagement ID.

3. Compile the enterprise application pack

fa application-pack inspect --file dynamics_365-manifest.json
fa application-pack plan --file dynamics_365-manifest.json --json > generated/dynamics_365-plan.json

Expected artifacts:

  • Business-semantic target plan
  • Control totals
  • Security mappings
  • Consumer transitions

Open Engagements → active engagement in the App. This stage is visible at /engagements/<engagement-id>/artifacts after replacing the placeholder ID with the governed engagement ID.

4. Convert, move, and remediate

fa plan generate --file dynamics_365-migration-plan.json --idempotency-key dynamics_365-plan-v1
fa conversion batch create --file dynamics_365-batch.json --idempotency-key dynamics_365-batch-v1
fa conversion batch start --file conversion-batch-start.json --idempotency-key conversion-start-v1
fa residue list --engagement-id <engagement-id>
fa transfer plan --file dynamics_365-transfer.json --idempotency-key dynamics_365-transfer-v1
fa transfer run <transfer-id> --idempotency-key transfer-run-v1
fa transfer reconcile <transfer-id> --idempotency-key transfer-reconcile-v1

Expected artifacts:

  • Target artifacts
  • Residue cases
  • Transfer checkpoints
  • Reconciliation evidence

Open Engagements → active engagement in the App. This stage is visible at /engagements/<engagement-id>/runs after replacing the placeholder ID with the governed engagement ID.

5. Validate independently and inspect discrepancies

fa validation run --file dynamics_365-validation.json --idempotency-key dynamics_365-validation-v1
fa validation status <validation-execution-id> --json
fa discrepancy list --engagement-id <engagement-id>
fa artifact list --engagement-id <engagement-id>

Expected artifacts:

  • Provider run references
  • Readiness evidence
  • Discrepancies

Open Engagements → active engagement in the App. This stage is visible at /engagements/<engagement-id>/runs after replacing the placeholder ID with the governed engagement ID.

6. Certify, cut over, and export evidence

fa certificate list --object-id <object-id>
fa cutover status <wave-id> --json
fa evidence list --engagement-id <engagement-id>
fa evidence export --file dynamics_365-evidence-export.json --idempotency-key dynamics_365-evidence-export-v1

Expected artifacts:

  • Migration certificates
  • Cutover evidence
  • Content-digested evidence export

Open Engagements → active engagement in the App. This stage is visible at /assurance after replacing the placeholder ID with the governed engagement ID.

Runway executes releases; Experiments owns validation verdicts; Airlift owns migration readiness and cutover policy.

What developers see in the App

The contextual source workspace shows the accepted estate and the factory stages for this engagement. Artifacts displays immutable references, content digests, media types, and provider lineage. Runs displays assessment, conversion, transfer, validation, and deployment executions without treating a provider's success as an Airlift verdict.

Microsoft Dynamics 365 has its own engagement-scoped workspace; unrelated source systems are not shown.

What you are seeing

This public synthetic capture demonstrates Airlift setup and navigation for Microsoft Dynamics 365; it is not evidence of a live connection or certified migration.

What to do next

Register the client estate, bind a credential reference, run the Microsoft Dynamics 365 assessment recipe, and admit the resulting evidence.

Read the developer workflow

These are automated captures from public synthetic engagements. The source workspace is specific to Microsoft Dynamics 365; no unrelated source is presented as its migration journey. For sources without an evidence-backed journey, the image demonstrates setup, navigation, and developer entry points only—not a live connection, converted output, or certified migration. No client data, credentials, workspace hostnames, or internal deployment identifiers are embedded in the images.

On this page