What the OpenMetadata and Apache Airflow integration covers
A data team that runs Airflow pipelines and wants DAGs, task status and lineage visible in OpenMetadata can connect the two through a documented integration method that the team selects. Before design starts, the team needs to confirm the Airflow version it runs, the OpenMetadata version it will deploy, and the access each method requires. Those checks determine which methods are workable, so they come first. The rest of this section covers what the integration catalogs, what the lineage model supports, and what to confirm before writing a design.
The integration brings Airflow objects into the catalog as pipeline metadata. In practice that means DAGs as pipeline entities, the tasks within each DAG, the run status of recent executions, and lineage edges that record which data assets a pipeline reads from and writes to. Each of these has an owner, a description and a place in the catalog, so a dataset can show the pipeline that produces it and whether that pipeline's latest run succeeded. Which of these objects arrive, and at what depth, depends on the connector scope in the current OpenMetadata documentation. Teams should list the DAGs and the datasets they touch before ingestion so that gaps are visible early.
OpenMetadata's lineage model supports table, column, dashboard, pipeline and metric lineage, and it integrates with OpenLineage events. Pipeline lineage from Airflow is one part of that model. Column-level and dashboard lineage depend on the warehouse and BI sources also being cataloged, so an Airflow integration alone will not show the full path from a source system to a chart. The team should decide whether lineage will come from metadata ingestion, from OpenLineage events emitted by Airflow, or from both, and confirm that the chosen method produces the edges the governance team needs. Lineage that is missing a hop is usually where audit questions get stuck.
OpenMetadata is released under the Apache License 2.0 and is maintained by Collate, which also offers commercial enterprise capabilities and premium support. Apache Airflow is an Apache Software Foundation project under the Apache License 2.0, and the project itself offers no paid edition. Support questions about OpenMetadata therefore go to Collate or to a partner, and support questions about Airflow go to its community or a commercial provider the team chooses. Before design starts, confirm the exact connector scope and the supported Airflow versions in the current OpenMetadata connector documentation. The Airflow version support table shows that Airflow 2 reached end of life on April 22, 2026, so a team still on Airflow 2 should check support status with both projects before planning.
Versions and accounts to confirm before OpenMetadata connects to Airflow
Six items decide how OpenMetadata connects to Apache Airflow: the Airflow release line, the Airflow database and executor, the ingestion image, the OpenMetadata server, the identity the integration uses, and the network path to the API. Confirm each one before you choose a connection method, because several of them change the steps and the effort.
Airflow release line and support status
Airflow 3 was first released on April 22, 2025, and its current patch release is 3.3.2. Airflow 2 entered limited maintenance on October 22, 2025 and reached end of life on April 22, 2026, so it receives no fixes. Confirm which line your deployment runs. If you still run Airflow 2, plan the upgrade to Airflow 3 before you build the OpenMetadata integration on top of it.
Airflow 3.3.2 prerequisites and metadata database
Airflow 3.3.2 supports Python 3.10 to 3.14, PostgreSQL 14 to 18, and MySQL 8.0, 8.4 and Innovation releases. MariaDB is not supported as the metadata database, and SQLite should not be used in production. Confirm which database backs your Airflow deployment, because the choice affects how you secure access and how you verify run history from OpenMetadata.
Airflow executor and scheduler layout
Airflow ships several executors, including LocalExecutor, CeleryExecutor and KubernetesExecutor, and since Airflow 2.10.0 more than one can run in one deployment. Hybrid CeleryKubernetesExecutor and LocalKubernetesExecutor are no longer supported as of Airflow 3.0.0. Confirm your executor and whether more than one scheduler runs, since these choices decide where the integration code runs and which workers need network access.
OpenMetadata ingestion image and Airflow pairing
OpenMetadata 2.0 ingestion images are built on Python 3.12 with Apache Airflow 3.3.0. Custom ingestion images must be rebuilt for Python 3.12, and any custom connector code needs testing against that runtime. Confirm which image your team pulls and whether your Airflow environment matches its Python and Airflow versions before you deploy DAGs that use it.
OpenMetadata server platform requirements
On bare metal, OpenMetadata needs Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. The server's minimum sizing is 2 vCPUs, 4 GB RAM and 20 GB storage, and the database and search services each need at least 2 vCPUs, 2 GB RAM and 30 GB storage. Confirm these against your chosen deployment model, whether Kubernetes or bare metal, before you size the environment.
Service account, token and authentication mode
The integration needs an identity with only the permissions its ingestion and status calls require, typically a dedicated service identity rather than a person's account. OpenMetadata documents SSO with several providers and does not support combining SSO with basic authentication, so confirm the mode your deployment uses. Store the token in your Airflow secrets backend and set a rotation owner before go-live.
Choosing between the REST API, in-Airflow DAG and database connection methods
The decision here is where the code that reads Airflow state lives, who runs it, and which credentials it holds. Three routes are commonly considered. The REST API route uses a script or scheduled job outside the ingestion path that pushes metadata into OpenMetadata through its REST endpoints or the Python SDK. The in-Airflow DAG route schedules ingestion as a DAG inside the Airflow environment, so it runs with Airflow's workers, Python dependencies and connections. The direct database route points an ingestion workflow at the Airflow metadata database and reads run and task records from it. Before choosing, your team must confirm in the current OpenMetadata connector documentation which of these is a supported, documented method for your Airflow version.
Each route shifts ownership differently. With the REST API route, your team owns the code end to end: you write, test, version and redeploy the job, and you maintain the mapping between Airflow objects and OpenMetadata entities. Credentials for the OpenMetadata API sit wherever the job runs, so they should live in your secrets backend and be scoped to the minimum needed. OpenMetadata provides REST APIs, a Python SDK, TypeScript packages and Java libraries, so the language your team already operates is a practical factor. With the in-Airflow DAG route, the code lives in your DAG repository and shares Airflow's release, scheduler and worker lifecycle. Its OpenMetadata credentials are held in Airflow connections or the configured secrets backend, so anyone with Airflow administrator access may be able to read them.
The database route carries the most sensitive trade-off. It requires a database account with network access to the Airflow metadata database, which is the store the scheduler uses to record DAG and task state. That is a privileged path into the system that runs your orchestrator, so security teams will want a read-only account, a narrow network path and a documented owner. The table layout belongs to Airflow, not to a published integration interface, so the integration is coupled to Airflow's internal schema and may need changes after an Airflow upgrade. Airflow's production guidance recommends PostgreSQL or MySQL for this database, and the Airflow 3.3.2 prerequisites list supported versions for each. Confirm your database version against those prerequisites before you rely on this route.
Upgrade exposure and version support should drive the final choice as much as ownership does. Confirm which Airflow line you run: the Airflow version support table shows Airflow 2 reached end of life on April 22, 2026, and Airflow 3 was first released on April 22, 2025, with 3.3.2 as the current patch. An Airflow 2 estate needs an upgrade decision before any integration design. Also plan for OpenMetadata 2.0, whose breaking changes include rebuilding custom ingestion images for Python 3.12. Any method that embeds code in ingestion images or in Airflow will need that rebuild. Write these answers down for each candidate route, then review them with your security, platform and data teams before committing to one method.
How to configure the OpenMetadata and Airflow integration step by step
This sequence takes an existing Airflow environment and OpenMetadata deployment from version confirmation to a verified catalog of DAGs, tasks, run status and owners. Each step closes with a check you can run yourself, so problems surface on a non-production DAG set before the integration reaches production pipelines.
Confirm versions and choose the method
Record the OpenMetadata release and the Airflow version in your environment, then confirm both against their current documentation. Airflow 2 reached end of life on April 22, 2026, so an Airflow 2 environment needs an upgrade decision before integration work starts. Choose one method (REST API, in-Airflow DAG or direct database connection) and check that it is documented for your exact versions. This step is done when you have a written version record and a method choice that your platform and data owners have both approved.
Create a dedicated OpenMetadata service identity
Create a service identity in OpenMetadata for this integration, so that changes made by the pipeline are traceable to one account. Grant only the roles needed to read and write metadata for the Airflow service, and scope any write access to that service alone. Store the credential in your secrets manager and reference it from Airflow connections, so it is never written into DAG code. Check: authenticate with this identity, call the API for the Airflow service, and confirm that a request for an unrelated service is refused.
Register the Airflow service in OpenMetadata
Add an Airflow pipeline service in OpenMetadata that points to your Airflow API or webserver endpoint, using the identity from the previous step. Choose a stable service name, because it becomes part of the fully qualified name of every DAG and task that follows, and renaming it later is disruptive. Assign an owning team and a domain at this stage. Check: the service appears in the services list, its connection test passes in your OpenMetadata version, and its details show the Airflow version you recorded in step one.
Configure the ingestion or push method and schedule
Set up the method you chose. An ingestion workflow pulls DAG and task metadata through the Airflow connection, an in-Airflow DAG pushes metadata from inside your scheduler environment, and a direct database connection reads Airflow's metadata database. Each needs different network access and permissions, so document which systems each one reaches. If you use direct database access, limit it to a read-only account. Set a schedule that matches how often DAGs change and how current run status must be, and record it. Check: the saved configuration validates and shows the next run time you expect from the schedule.
Run a first ingestion on a sample DAG set
Run the first ingestion manually against a non-production Airflow environment, or against a limited set of DAGs selected by tag or naming convention. Include a DAG with several tasks, one with upstream dependencies, and one whose most recent run failed, so that each part of the mapping is exercised. Read the full run log before enabling the schedule. Check: the run finishes without errors in its log, and a named DAG such as the illustrative orders_daily DAG appears in OpenMetadata with each of its tasks listed beneath it.
Verify owners, tasks and run status
Compare OpenMetadata with Airflow for the sample DAGs. Confirm that each DAG's owner matches the owner set in its Airflow definition, that task counts and task names match, and that the latest run status matches the last run shown in the Airflow UI. Resolve any owner mapping gaps before you widen scope, because owners drive access reviews and ticket routing later. Check: choose three DAGs from different owner teams and record a match on owner, task count and last run status for each one.
Enable lineage and verify the OpenLineage path
If your chosen method uses OpenLineage events, enable the lineage path and confirm that events reach OpenMetadata. Verify each configuration setting against the current OpenMetadata and Airflow documentation for your versions, because lineage configuration has changed between releases. Run one DAG that reads a known source table and writes a known target table. Check: the lineage edge between those two tables appears in OpenMetadata. If your chosen method does not use OpenLineage, record this step as not applicable and keep the decision in your version record.
Which Airflow objects map to OpenMetadata entities
This table compares each Airflow object with the OpenMetadata entity or field it may populate and the decision the team must make before ingestion. Rows marked to confirm depend on the connection method and connector version, so check the OpenMetadata docs for your chosen method before you rely on a mapping. The main takeaway is that owners, lineage and run status need decisions up front, because they determine what the catalog can show.
| Airflow object | OpenMetadata entity or field | What the team must decide |
|---|---|---|
| DAGs | Pipeline entity under a pipeline service (confirm the model for your method and connector version) | Which Airflow instances and DAGs belong in one pipeline service |
| Tasks | Steps within the pipeline entity (confirm whether your method ingests tasks) | Whether every task is cataloged or only tasks that read or write data |
| Task run status | Pipeline run status history (confirm whether your method sends run status) | How much run history to keep and who acts on failed runs |
| DAG owner fields | Owner on the pipeline entity, from the owner field or a team mapping | How Airflow owner names map to OpenMetadata users or teams before ingestion |
| Tags and glossary terms | Tags and glossary terms on the pipeline entity (confirm applicability for your method) | Which terms and classifications apply to pipelines and which apply to data assets |
| Task inputs and outputs | Table lineage edges from inputs and outputs (confirm whether your method or OpenLineage events supply them) | Which tables count as inputs and outputs and which component is the lineage source |
| Connection and operator details | Usually not a catalog field (confirm before relying on any mapping) | How to keep credentials and connection secrets out of catalog metadata |
Running OpenMetadata's own ingestion on Airflow
If OpenMetadata's ingestion framework runs as Airflow DAGs, the ingestion images that execute those workflows become part of your platform upgrade, not only part of the catalog. OpenMetadata 2.0 moved its ingestion images to Python 3.12 with Apache Airflow 3.3.0, so any team running these workflows on its own Airflow must plan around that pairing before upgrading. This section covers that case only. It differs from cataloging your business DAGs, where Airflow is the source system and OpenMetadata reads its metadata. Here, OpenMetadata's ingestion code is the workload, so your team owns its runtime, dependencies and credentials. Confirm the supported Airflow and Python combination in the OpenMetadata 2.0 release notes before you choose a target version.
Custom ingestion images are the first consequence. Any image your team built on an earlier Python base must be rebuilt for Python 3.12 before you upgrade to 2.0, and the rebuild should include only the connector packages you actually run. Build the image in CI, run one ingestion workflow per connector against a non-production source, and tag each image with the OpenMetadata version it was tested against. Great Expectations is a separate gate. The 2.0 release notes list migrating Great Expectations to 1.3 as a step to complete before upgrading. List every ingestion workflow that publishes Great Expectations results, because those workflows can fail in ways that are easy to miss if the migration is skipped. Assign an owner to each item on this list.
Two decisions follow. First, choose the Airflow environment that hosts OpenMetadata's ingestion. A dedicated Airflow instance keeps catalog credentials and upgrade timing separate from data pipelines owned by other teams, while the shared business instance reduces the number of environments to operate. Second, decide how source and database credentials reach the ingestion tasks. Use your organization's secrets backend, and avoid storing these credentials as Airflow variables in the metadata database. Confirm that the chosen secrets approach works with the auth manager and access model in your Airflow environment. Airflow's production guidance recommends PostgreSQL or MySQL as the metadata database and treats SQLite as suitable for testing only. Record both decisions, their owners and the review date in your platform documentation.
Version risk is the third consideration. Airflow 2 reached end of life on April 22, 2026, after which it receives no fixes, and its earlier limited-maintenance period covered only security and critical bug fixes. If OpenMetadata ingestion still runs on Airflow 2, it needs a dated plan to move to a supported Airflow 3 release. Airflow 3 was first released on April 22, 2025, and the current patch listed in the version support table is 3.3.2. Check the Airflow upgrading guide for changes that affect the DAG code, operators and connections your ingestion uses. Complete this move before the OpenMetadata 2.0 upgrade, and record who approves the cutover.
Securing the Airflow to OpenMetadata connection
The connection between Airflow and OpenMetadata carries a credential that can write metadata and lineage, and it sits alongside the people who sign in to both systems. The cards cover the identity, secret storage, access paths and audit decisions to settle before the first scheduled ingestion run.
Dedicated least-privilege OpenMetadata identity
Create a service identity in OpenMetadata that only the Airflow ingestion connection uses, with the roles needed to publish pipeline metadata and lineage and nothing more. Avoid reusing an administrator account or a personal user, because that account's permissions and password lifecycle would then control the ingestion schedule. Confirm which roles and policies your chosen ingestion method needs in your OpenMetadata version, and review them after each upgrade.
Store tokens in the Airflow secrets backend
Keep the OpenMetadata token or credential in your Airflow secrets backend and reference it from the connection, so DAG files, Git repositories and task logs never contain the secret value. Check who can read the backend, how a rotation takes place without editing DAGs, and whether secret values can appear in rendered templates or logs. The backend options depend on your Airflow version and deployment, so confirm them against the Airflow documentation for your release.
Separate ingestion and business DAG credentials
Ingestion DAGs that publish metadata should use a different credential, connection ID and secret path from the DAGs that move business data. A shared login means a compromised business DAG can also rewrite catalog entries, and rotating that one credential forces changes to unrelated pipelines. Map each Airflow connection to one purpose, and limit which DAG owners can reference the ingestion connection.
SSO for people, with a planned service path
OpenMetadata documents SSO with Auth0, Azure, Google, Okta, Amazon Cognito, OneLogin, Keycloak and custom OIDC providers. It does not support multiple authentication mechanisms at once, such as SSO combined with basic authentication, so the machine path from Airflow cannot depend on a basic login running alongside SSO. Decide early how the service identity authenticates, and confirm how the Airflow auth manager is configured for your Airflow version so human sign-in to Airflow is handled consistently.
TLS and network restriction to the API
Send ingestion traffic from Airflow to the OpenMetadata API over TLS with certificates your team manages, and keep certificate verification enabled in the connection configuration. Restrict network paths so only the Airflow workers or scheduler subnets can reach the API port, and keep the OpenMetadata database and search services off that path. Document the allowed sources, because a worker moved to a new subnet is an easy cause to miss when ingestion starts failing.
Audit of ingestion runs
Record who changed the ingestion configuration, which identity ran each metadata job and what it published. Keep Airflow run history and task logs for the retention your policy requires, and forward them to your central log platform if you operate one. Confirm what your OpenMetadata version records in its own audit trail, and check that it can be matched to Airflow logs by pipeline name and timestamp so an investigator can trace a bad metadata change to a specific run.
How to verify lineage and task status after the first run
Write the acceptance checks into the scope before any connector is configured. A statement such as "the integration works" cannot be tested, but a list of named checks can be signed off by the platform team, the data owners and the security reviewer. For the Airflow integration, the core set is short: compare a sample of DAGs and their tasks in OpenMetadata against the Airflow UI, confirm that each sampled DAG has an owner and a description, and record a pass or fail result for each item. Choose the sample deliberately, including at least one DAG owned by each team that will use the catalog, so the check covers more than the easiest case. Ask the implementer to attach the evidence to the acceptance record.
Task status needs two runs, not one. First, let Airflow execute a scheduled run of a sampled DAG and confirm that each task's state in OpenMetadata matches the state shown in the Airflow UI once the run finishes. Second, deliberately fail one task, for example by pointing it at a missing input in a test environment, and confirm that OpenMetadata records the failed state and the run that produced it. A successful run alone proves little, because a catalog can display stale success states without any error appearing. Record the Airflow version, the ingestion method (REST API, in-Airflow DAG or direct database connection) and the schedule used for the test. Each of these choices affects how and when status reaches the catalog, so confirm the timing against your own environment.
Lineage needs an end-to-end trace for one pipeline. Pick a DAG that reads from a known source table, writes to a known target table and has a clear owner. Starting from the target table in OpenMetadata, follow the lineage back through the pipeline to the source, and confirm that each edge matches the SQL or operator logic in the DAG. Confirm which lineage paths your chosen method produces and whether column-level lineage is in scope, then test each path on its own. Next, run the ingestion a second time without changing anything. Count the pipeline, task, table and lineage entities before and after, and confirm that their identifiers stay the same. Duplicate entities after a re-run usually point to unstable naming, so treat any increase as a failed check.
Keep profiling, freshness checks and data quality tests out of this acceptance set. They are separate configurations in OpenMetadata, each with its own schedule, scope and failure behavior, so a clean lineage trace does not show that a profiler runs or that a freshness rule fires. Verify each one with its own test: run the profiler on a sampled table and compare the result with a known row count, trigger a freshness check on a table with a known update time, and fail a data quality test on purpose to confirm the alert. OpenMetadata 2.0 made Dynamic Sampling the profiler default, so confirm the sampling settings your team expects before reading profile results. Finally, confirm that the OpenMetadata and Airflow versions used in testing match the versions in the production plan.
Why Airflow runs do not appear in OpenMetadata
This table lists the symptoms teams most often see when Airflow runs do not reach OpenMetadata, the likely cause of each, and the fix to try first. Read it by matching your symptom to a row, then checking the fix against the current docs for your chosen method. Several fixes depend on whether you use the REST API, the in-Airflow DAG or a direct database connection, so confirm those steps before changing production.
| Symptom | Likely cause | Fix |
|---|---|---|
| No DAGs appear | Pipeline service was never registered, or the connection points to the wrong host or API endpoint. | Confirm the Airflow pipeline service exists, then check the server URL and API version against the endpoint Airflow calls. |
| No DAGs appear | Airflow's identity lacks permission to create pipeline services and update entities. | Use a bot identity with a role that allows pipeline writes, and confirm the token is valid. Check role names in the current security docs. |
| Tasks appear but status is stale | Ingestion runs less often than DAGs run, or the push trigger does not fire when tasks finish. | Align the ingestion schedule with DAG cadence, and confirm the push path fires on task completion for your method. |
| Lineage is missing | Inputs and outputs are not declared in the DAG, or the OpenLineage event path is not configured. | Declare inlets and outlets where your method uses them, or point the OpenLineage transport at OpenMetadata. Check the steps against current docs. |
| Duplicate entities after re-runs | DAG IDs or names change between runs, or two services ingest the same Airflow instance. | Keep DAG IDs stable, use one pipeline service per Airflow instance, and merge duplicates after confirming the canonical name. |
| Ingestion fails after the 2.0 upgrade | Custom ingestion images were not rebuilt for Python 3.12, or Great Expectations was not migrated to 1.3. | Rebuild custom images on Python 3.12, migrate Great Expectations to 1.3 before upgrading, and review the 2.0 breaking changes. |
| SSO conflicts with service authentication | Users sign in through SSO, but the Airflow connector uses basic auth or a token SSO does not accept. | OpenMetadata does not run SSO and basic authentication together. Confirm the bot token type your method needs, and check the security docs. |
What does an OpenMetadata and Airflow integration cost and take?
How much does an OpenMetadata and Airflow integration cost?
No price is given on this page, and the quote follows from the written scope. Cost moves with how much of the Airflow estate is in scope and how many environments the work touches. The main drivers are the number of DAGs to catalog and their owners, the ingestion method (REST API, in-Airflow DAG or direct database connection), whether OpenMetadata's own ingestion runs on Airflow, version alignment work, and identity and network changes such as letting the catalog reach the Airflow metadata database or API. One-time costs cover design, build, testing and handover. Recurring costs come from keeping ingestion current through OpenMetadata and Airflow upgrades, which can be scoped separately as a retainer. Ask any provider for a line-item scope that states its assumptions.
How long does an OpenMetadata and Airflow integration take to deliver?
Duration depends on the same drivers as cost, so it is agreed in the written scope before work starts. The work usually runs in a sequence: confirm versions, prepare a non-production environment, build and test ingestion for the chosen method, validate DAG status and lineage, then move to production and hand over. Access approvals, DAG owner reviews and change windows often set the pace more than the build does, so request them early. Ask for milestones with named dependencies on your side, and ask how each environment is counted in the timeline.
What drives the effort in an OpenMetadata Airflow integration?
The effort is set by a small number of choices that you can make before engaging a partner.
- Scale: the number of DAGs, task types and Airflow environments to catalog.
- Method: REST API, in-Airflow DAG or direct database connection, each with different secrets, permissions and failure modes.
- Ingestion location: whether OpenMetadata's own ingestion runs as Airflow DAGs, which adds scheduling, image and worker work.
- Version alignment: the OpenMetadata and Airflow versions in use, and any upgrade needed to reach a supported line.
- Identity and network: service accounts, token handling and firewall or routing paths between the two platforms.
Each item raises the test plan and the number of handover topics, so state them explicitly in the scope.
What do we need to provide for an OpenMetadata and Airflow integration?
The integration depends on access and decisions that only your organization can provide. Expect to supply the following before build starts.
- Admin access: administrator rights in Airflow and OpenMetadata, or named administrators who can act during the work.
- DAG owners: people who can confirm what each DAG does, which data it reads and writes, and which tests should pass.
- A non-production environment: an Airflow and OpenMetadata setup that matches production closely enough to test ingestion and lineage.
- A named decision maker: one person who approves scope changes, acceptance and cutover timing.
If any of these are missing, the schedule and the quote usually change, so confirm them in the scope document.
Can our internal team build the OpenMetadata and Airflow integration themselves?
Yes, an internal team can do this if it can read connector documentation, manage Airflow secrets and run the test plan. Reading connector documentation means understanding the chosen method, its required permissions and the metadata it emits. Managing Airflow secrets means storing connection details securely, rotating them and keeping them out of DAG code. Running the test plan means checking that DAG run status, task outcomes and lineage edges appear correctly in OpenMetadata after each change. Teams without this experience often underestimate the upgrade work, so plan for it. If the team can cover these skills, a partner is most useful for design review, a fixed-scope build or a hand-off checklist.
How is a fixed-scope quote built for this integration?
A fixed-scope quote is built from a written scope agreed before work starts. The scope lists the Airflow environments and DAGs in scope, the chosen ingestion method, whether OpenMetadata ingestion runs on Airflow, the deliverables, the acceptance tests and the client responsibilities. It also states exclusions, such as work on DAG logic or unrelated upgrades. Each quoted item should map to a deliverable or a test, so you can see what is included. Ask how scope changes are priced and approved, and what happens if a dependency on your side is late.
Which OpenMetadata and Airflow versions should we align before starting?
Confirm the versions before the scope is written, because they change the work. OpenMetadata 2.0.0 was released on August 24, 2026, with maintenance releases 2.0.1 to 2.0.5 following. OpenMetadata 2.0 breaking changes include moving embedding credentials into an llmConfiguration block, a new Databricks auth format, rebuilding custom ingestion images for Python 3.12, and migrating Great Expectations to 1.3 before upgrading. On the Airflow side, Airflow 3 was first released on April 22, 2025, and its current patch release is 3.3.2. Airflow 2 reached end of life on April 22, 2026, so it receives no fixes. Confirm your current patch levels and the target versions with each vendor.
Does running OpenMetadata ingestion on Airflow add cost and operational risk?
Yes, it adds an Airflow dependency to the catalog, so the scope should cover it explicitly. OpenMetadata 2.0 moved its ingestion images to Python 3.12 with Apache Airflow 3.3.0, so custom ingestion images may need rebuilding. For production, Airflow recommends PostgreSQL or MySQL as the metadata database, since SQLite is for testing only and MariaDB is not supported. Airflow can run more than one scheduler at once, using database row-level locks, which the design should account for. Work also includes sizing Airflow workers, securing connections and assigning DAG owners to the ingestion DAGs. Confirm each item against the documentation for your versions.
How DeployOpen scopes, delivers and supports this integration
DeployOpen plans, builds and documents the OpenMetadata and Apache Airflow integration inside your own infrastructure, starting from a written scope that names the connection method, DAGs, lineage and ownership in play. Engagements are fixed-scope, so deliverables and timelines are agreed in writing before work starts. Ongoing support and upgrades are available as a retainer.
How we scope
- The written scope names the metadata sources, Airflow version and connection method agreed for the integration.
- We confirm which DAGs, task status signals and lineage paths are in scope before any build begins.
- We check the Airflow and OpenMetadata versions in use against their current support status.
How we build
- Build the chosen connection method, REST API, in-Airflow DAG or direct database, each with its own access model.
- Configure lineage capture and test that table, column and pipeline edges appear as expected in the catalog.
- Run OpenMetadata's own ingestion on Airflow only if the scope includes it, with images rebuilt for the target Python version.
How we hand over
- Deliver the DAG code, connection configuration and secret references, with access handled through your own secrets store.
- Document the data flow, owners, failure handling and upgrade steps so your team can maintain the integration.
- Walk your engineers through the runbook and the verification checks used to accept the work.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer, scoped in writing.
- Upgrade planning covers OpenMetadata release notes and Airflow support windows, including end-of-life dates.
- Changes to DAG delivery or connectors are tested in a non-production environment before they reach production.

