What Changed

Fixed Solutions Analyzer to properly deduplicate connectors in Codeless Connector Framework (CCF) v2 solutions where azuredeploy wrapper files were creating synthetic duplicate connector IDs alongside real definition entries.

Root Cause

In CCF v2 solutions, connector directories typically contain two files describing the same logical connector:

  • DataConnectorDefinition.json: The actual connector definition with a literal ID field
  • azuredeploy_*_poller_connector.json: An ARM deployment wrapper with a non-literal ID reference

When the ARM template ID contains variables that cannot be resolved, the analyzer generates a synthetic ID from the connector title. This caused the same logical connector to appear twice in the output with different IDs.

Fix Implementation

Added two-phase deduplication logic in map_solutions_connectors_tables.py:

Phase 1: Track connector titles from non-azuredeploy files that have literal IDs, organized by parent directory and title.

Phase 2: When processing azuredeploy files, skip any connector entries where:

  • The ID was generated (not literal)
  • The same (directory, title) combination already exists from a definition file

Validation Results

Testing with the 1Password solution confirmed the fix removes only synthetic duplicates:

  • connectors.csv: 593 → 592 entries
  • solutions_with_connectors.csv: 606 → 605 entries
  • solutions_connectors_tables_mapping.csv: 1397 → 1396 entries
  • solutions.csv: unchanged (no impact on solution counts)

This ensures accurate connector counting for Content Hub solution analysis and prevents inflated connector metrics that could affect security program planning and vendor assessments.

Affected Files

Tools/Solutions Analyzer/map_solutions_connectors_tables.py