Skip to content

feat: committees implementation [CM-1066]#3995

Merged
mbani01 merged 12 commits intomainfrom
feat/snowflake_committees_implementation
Apr 6, 2026
Merged

feat: committees implementation [CM-1066]#3995
mbani01 merged 12 commits intomainfrom
feat/snowflake_committees_implementation

Conversation

@mbani01
Copy link
Copy Markdown
Contributor

@mbani01 mbani01 commented Apr 2, 2026

This pull request introduces support for "committees" as a new platform throughout the data pipeline, including database, integrations, and attribute configuration. The main changes add new activity types for committee membership, implement the data extraction and transformation logic for committee events, and update the type system and configuration to recognize "committees" as a first-class source.

Support for "committees" platform and data pipeline:

  • Added two new activity types, added-to-committee and removed-from-committee, to the activityTypes table for tracking committee membership events.
  • Introduced a new source query and transformer for the "committees" platform in the Snowflake connectors, enabling extraction and transformation of committee membership data. [1] [2]
  • Registered the committees source and transformer in the integrations index, and defined its data source name. [1] [2] [3]

Type system and configuration updates:

  • Added "committees" to the PlatformType, OrganizationSource, and OrganizationAttributeSource enums, and included it in the organization attribute source priority list, ensuring proper handling and prioritization. [1] [2] [3] [4]
  • Defined new types and scoring grid for committee activities in the integrations library, and re-exported them for usage across the codebase. [1] [2]

Note

Medium Risk
Adds a new data source and transformer to the Snowflake ingestion pipeline and introduces new activity types, which could affect export volume/deduping and downstream activity/organization attribution if the query or mapping is incorrect.

Overview
Adds first-class support for the committees platform across the pipeline.

Introduces a DB migration that registers new activity types (added-to-committee, removed-from-committee) and a new integrations library export (CommitteesActivityType + COMMITTEES_GRID) used for scoring.

Implements a new Snowflake connector source (buildSourceQuery) and transformer that export committee membership records (including deletes), map them into activities with segment routing and optional organization domain identities, and registers this new data source (DataSourceName.COMMITTEES_COMMITTEES) in the platform registry. Also adds COMMITTEES to platform/org source enums and includes it in organization attribute source priority.

Reviewed by Cursor Bugbot for commit 0ba6e3e. Bugbot is set up for automated code reviews on this repo. Configure here.

Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
@mbani01 mbani01 self-assigned this Apr 2, 2026
Copilot AI review requested due to automatic review settings April 2, 2026 13:58
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

⚠️ Jira Issue Key Missing

Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability.

Example:

  • feat: add user authentication (CM-123)
  • feat: add user authentication (IN-123)

Projects:

  • CM: Community Data Platform
  • IN: Insights

Please add a Jira issue key to your PR title.

1 similar comment
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

⚠️ Jira Issue Key Missing

Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability.

Example:

  • feat: add user authentication (CM-123)
  • feat: add user authentication (IN-123)

Projects:

  • CM: Community Data Platform
  • IN: Insights

Please add a Jira issue key to your PR title.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

⚠️ Jira Issue Key Missing

Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability.

Example:

  • feat: add user authentication (CM-123)
  • feat: add user authentication (IN-123)

Projects:

  • CM: Community Data Platform
  • IN: Insights

Please add a Jira issue key to your PR title.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds “committees” as a first-class platform across the pipeline (types/config, Snowflake connector extraction+transform, and DB activity type registration) so committee membership events can be exported and represented as activities.

Changes:

  • Added committees to platform/org source enums and organization attribute source priority.
  • Implemented Snowflake connector source query + transformer for committee membership events.
  • Added DB migration to register new committee membership activity types.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
services/libs/types/src/enums/platforms.ts Adds PlatformType.COMMITTEES.
services/libs/types/src/enums/organizations.ts Adds COMMITTEES to org source enums.
services/libs/integrations/src/integrations/index.ts Re-exports committees integration types.
services/libs/integrations/src/integrations/committees/types.ts Defines committee activity types + scoring grid.
services/libs/data-access-layer/src/organizations/attributesConfig.ts Adds committees to org attribute source priority list.
services/apps/snowflake_connectors/src/integrations/types.ts Adds committees datasource name.
services/apps/snowflake_connectors/src/integrations/index.ts Registers committees platform and datasource.
services/apps/snowflake_connectors/src/integrations/committees/committees/buildSourceQuery.ts Adds Snowflake query for committee membership export.
services/apps/snowflake_connectors/src/integrations/committees/committees/transformer.ts Transforms exported rows into committee membership activities.
backend/src/database/migrations/V1775064222__addCommitteesActivityTypes.sql Inserts committees activity types into activityTypes.
backend/src/database/migrations/U1775064222__addCommitteesActivityTypes.sql Undo migration placeholder (empty).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

return null
}

const committeeId = (row.COMMITTEE_ID as string).trim()
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

committeeId is computed via (row.COMMITTEE_ID as string).trim() without null/undefined protection. If COMMITTEE_ID is missing or not a string for any row, this will throw and safeTransformRow will skip the row. Consider using optional chaining + explicit skip/log when COMMITTEE_ID is not present.

Suggested change
const committeeId = (row.COMMITTEE_ID as string).trim()
const rawCommitteeId = row.COMMITTEE_ID
const committeeId =
typeof rawCommitteeId === 'string' && rawCommitteeId.trim().length > 0
? rawCommitteeId.trim()
: null
if (!committeeId) {
log.warn(
{ sfid: row.SFID, rawCommitteeId: row.COMMITTEE_ID, email },
'Skipping row: missing or invalid committeeId',
)
return null
}

Copilot uses AI. Check for mistakes.
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

⚠️ Jira Issue Key Missing

Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability.

Example:

  • feat: add user authentication (CM-123)
  • feat: add user authentication (IN-123)

Projects:

  • CM: Community Data Platform
  • IN: Insights

Please add a Jira issue key to your PR title.

@mbani01 mbani01 changed the title feat: committees implementation feat: committees implementation [CM-1066] Apr 2, 2026
@mbani01 mbani01 requested a review from joanagmaia April 2, 2026 14:48
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
@mbani01 mbani01 force-pushed the feat/snowflake_committees_implementation branch from cb61fdd to 2f5b708 Compare April 3, 2026 11:50
mbani01 added 3 commits April 3, 2026 13:05
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>

export const COMMITTEES_GRID: Record<CommitteesActivityType, IActivityScoringGrid> = {
[CommitteesActivityType.ADDED_TO_COMMITTEE]: { score: 1 },
[CommitteesActivityType.REMOVED_FROM_COMMITTEE]: { score: 1 },
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removal activity score inconsistent with codebase pattern

Medium Severity

REMOVED_FROM_COMMITTEE has score: 1, which is inconsistent with the established codebase scoring convention. Analogous removal activities use negative scores: UNSTAR is -2 (reversal of STAR at 2), and MEMBER_LEAVE is -2 (reversal of MEMBER_JOIN at 2). A committee removal with a positive score would incorrectly boost member engagement metrics.

Fix in Cursor Fix in Web

Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
joanagmaia
joanagmaia previously approved these changes Apr 6, 2026
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
@mbani01 mbani01 merged commit fde44d2 into main Apr 6, 2026
14 checks passed
@mbani01 mbani01 deleted the feat/snowflake_committees_implementation branch April 6, 2026 14:30
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

Reviewed by Cursor Bugbot for commit 0ba6e3e. Configure here.

identities,
},
]
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicated buildOrganizations logic across transformers

Low Severity

The buildOrganizations method in CommitteesCommitteesTransformer is nearly identical to the same method in CventTransformer and TncTransformerBase, differing only in OrganizationSource and PlatformType constants. This duplicated logic across three transformers increases the risk of inconsistent bug fixes and maintenance burden. It could live in TransformerBase parameterized by the platform-specific values.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 0ba6e3e. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants