Appearance
Extract And Load Connectors
This runbook tracks connector rollout, naming, and operations for EDP extract/load integrations.
Connector Inventory
| Integration | Domain | Snapshot Mode | Raw Landing | ODS Processing | Status |
|---|---|---|---|---|---|
| AD DS | Identity and access | Full and incremental | edp_raw.ad | Planned processing DAG | In progress |
| M365 / Entra ID | Identity and collaboration | Full and incremental | edp_raw.m365 | edp_ods.m365 | In progress |
| KnowBe4 | Security awareness | Full and incremental | Planned | Planned | Planned |
| Microsoft Exchange | Messaging | Full and incremental | Planned | Planned | Planned |
| Microsoft Teams | Collaboration | Full and incremental | Included with m365 connector | edp_ods.m365 | In progress |
Naming Convention
Prefer database and schema boundaries over table prefixes.
- Raw source-shaped data:
edp_raw.<source_schema>.<entity> - ODS current state:
edp_ods.<source_schema>.<entity> - Curated reporting:
edp_mart.<domain>_<entity>_<grain>
Examples:
edp_raw.ad.usersedp_raw.ad.group_membershipsedp_raw.m365.teamsedp_ods.m365.channel_memberships
AD
DAGs:
ad_full_snapshotad_incremental_snapshotad_process_snapshots
Airflow configuration:
ad_sources: JSON array of source mappings.ad_target_conn_id: Airflow connection id for raw PostgreSQL writes. Defaults topostgres_raw.- Legacy names are still read by the DAG for existing Airflow environments.
Required raw tables:
ad.sync_runsad.sync_statead.usersad.groupsad.group_membershipsad.computers
Operational checks:
- Confirm the target connection points to
edp_raw. - Confirm
sync_statecursors are advancing for incremental runs. - Compare user, group, computer, and membership counts to expected source ranges.
- Use
ad_reset_sync_state=trueonly when intentionally forcing cursor reset.
M365
DAGs:
m365_full_snapshotm365_incremental_snapshotm365_process_snapshots
Airflow configuration:
m365_identity_source: JSON object withairflow_conn_idand optionalsource_key.m365_identity_target_conn_id: raw database connection id. Defaults topostgres_raw.m365_identity_ods_conn_id: ODS database connection id. Defaults topostgres_ods.
Required raw tables:
m365.sync_runsm365.usersm365.groupsm365.group_membershipsm365.teamsm365.channelsm365.team_membershipsm365.channel_memberships
Required ODS tables:
m365.usersm365.groupsm365.group_membershipsm365.teamsm365.channelsm365.team_membershipsm365.channel_memberships
Operational checks:
- Confirm Graph app credentials are stored in the Airflow connection referenced by
m365_identity_source. - Confirm app permissions include the Graph application permissions required by collected endpoints.
- Review
m365.sync_runsfor failures and row count anomalies. - Confirm
m365_process_snapshotsruns after successful raw syncs. - For standard Teams channels, expect inherited membership rows derived from team membership.
Reprocessing
Use bounded reprocessing by source key, run id, and snapshot timestamp. Avoid direct manual edits to ODS rows when raw data can be replayed.
Recommended order:
- Re-run or backfill raw connector tasks for the affected source window.
- Re-run the ODS processing DAG for that source and window.
- Rebuild affected mart or dashboard-facing outputs.
Keep failed runs visible in run metadata. Do not delete failed run records unless they contain sensitive test data and the cleanup is documented.