Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Informatica CDGC → Microsoft Purview migration toolkit

A small, pragmatic toolkit for migrating catalog content from Informatica Cloud Data Governance and Catalog (CDGC / IDMC) into Microsoft Purview (Unified Catalog + Data Map) using only Python and the public REST APIs.

It is intentionally minimal: an Excel/JSON ingest format that mirrors what falls out of a CDGC bulk export, and idempotent scripts that create governance content (domains, glossary terms, classifications, lineage) and organize Data Map assets into collections.

The goal is not to replicate Informatica feature-for-feature. It is to give you a working, scriptable starting point you can fork and harden for your own migration.

Repository layout

informatica-to-purview-demo/
├── config.json                              # account name + run options
├── requirements.txt
├── samples/
│   ├── informatica_glossary_export.xlsx     # generated from generate_sample_excel.py
│   ├── informatica_assets_export.json
│   ├── informatica_lineage_export.json
│   └── informatica_classifications_export.json
└── scripts/
    ├── generate_sample_excel.py             # builds an Informatica-style workbook
    ├── purview_import.py                    # loads domain + glossary + assets + lineage + classifications
    ├── create_collections_and_move.py       # creates a collection hierarchy and moves assets into it
    └── verify_assets.py                     # sanity-checks entities by qualifiedName

Prerequisites

  • Python 3.10+
  • A Microsoft Purview account upgraded to the new portal experience (purview.microsoft.com)
  • Azure CLI installed and authenticated: az login
  • A user with Data Curator (Data Map) and Data Governance Administrator (Unified Catalog) — or equivalent — on the target Purview account

Setup

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

Edit config.json:

{
  "purview_account_name": "<your-purview-account-name>",
  "governance_domain": {
    "name": "<domain-name>",
    "description": "<domain-description>",
    "type": "FunctionalUnit",
    "status": "Draft"
  },
  ...
}

Use the bare account name (e.g. contoso-pv), not the full URL.

Usage

# 1. (Optional) Build a sample Informatica-style Excel workbook
python scripts/generate_sample_excel.py

# 2. Sign in
az login

# 3. Dry run (set "dry_run": true in config.json) to preview every API call
python scripts/purview_import.py --config config.json

# 4. Real run
python scripts/purview_import.py --config config.json

# 5. (Optional) Organize assets into a collection hierarchy
python scripts/create_collections_and_move.py

# 6. (Optional) Verify entities by qualifiedName
python scripts/verify_assets.py

What purview_import.py does

Step Purview API Source file
1. Create / reuse governance domain POST /datagovernance/catalog/businessdomains (api-version 2025-09-15-preview) config.json
2. Create glossary terms (idempotent by name) GET then POST /datagovernance/catalog/terms Excel Glossary sheet
3. Register Atlas entities (assets) POST /catalog/api/atlas/v2/entity informatica_assets_export.json
4. Create lineage processes POST /catalog/api/atlas/v2/entity (typeName=Process) informatica_lineage_export.json
5. Apply column classifications POST /catalog/api/atlas/v2/entity/uniqueAttribute/type/{type}/classifications informatica_classifications_export.json

Auth is via AzureCliCredential against audience https://purview.azure.net. The Unified Catalog endpoints use the global host https://api.purview-service.microsoft.com/datagovernance/catalog; the Atlas Data Map endpoints use the per-account host https://{account}.purview.azure.com.

Concept mapping

Informatica CDGC Microsoft Purview
Domain (Axon) Governance Domain (Unified Catalog)
Business Term Glossary Term (under domain)
Steward / Owner Domain contact / steward
Technical Asset Atlas entity in Data Map
Mapping / Job lineage Atlas Process entity with inputs/outputs
Data Classification Atlas classification on column entity
Resource / Folder Collection / sub-collection

Migration strategy (important)

For a real migration, scan the live source first, decorate second:

  1. Register the source (BigQuery, Snowflake, ADLS, SQL, …) in Purview and run a scan so assets land with Purview's canonical qualifiedName format.
  2. Build a CSV mapping Informatica fully-qualified names → Purview qualifiedNames.
  3. Run a decoration-only version of this importer that POSTs glossary term assignments, classifications, custom attributes, business lineage and data-product memberships against the existing Purview entities. Do not let the migration script create the technical assets — let scans do that, otherwise schema drift produces duplicates.
  4. Schedule the source scan and the decoration script on the same cadence. Both are idempotent.

See blog/informatica-to-purview-migration.md for the longer write-up.

Idempotency notes

  • Domain: GET /businessdomains → reuse existing by name, else create.
  • Glossary: GET /terms → skip terms whose name already exists in the domain.
  • Assets / lineage: Atlas POST on qualifiedName is an upsert — re-runs merge attributes, they don't duplicate.
  • Classifications: HTTP 400 with already associated is treated as success.
  • Transient SSL / network errors are retried with exponential backoff (3 attempts, 2s/4s/8s).

Caveats

  • Custom Data Map domains (the preview feature) are portal-only today. Create those in purview.microsoft.com → Data Map → Domains; this repo handles the collections, glossary and assets inside a domain via API.
  • Built-in classification names use dotted forms — MICROSOFT.PERSONAL.EMAIL, MICROSOFT.PERSONAL.US.PHONE_NUMBER, MICROSOFT.PERSONAL.PHYSICALADDRESS, MICROSOFT.GOVERNMENT.US.ZIP_CODE. Custom classifications must already exist before referencing them.
  • Unified Catalog API versions are evolving; pin 2025-09-15-preview (or update UC_API_VERSION in purview_import.py) to track changes.

License

MIT — see LICENSE.

About

Pragmatic Python toolkit for migrating enterprise data catalogs (Informatica CDGC/IDMC, and similar) into Microsoft Purview Data Map and Unified Catalog. Idempotent REST-based importers for governance domains, glossary terms, assets, lineage, classifications, and collection hierarchies. Includes a scan-first / decorate-second migration playbook.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages