Skip to content

Notifications Missing Global Recipient Deduplication #24691

@manerow

Description

@manerow

Problem

When an EventSubscription includes multiple destinations that resolve to overlapping recipients, users receive duplicate notifications. Each destination is processed independently, so recipients appearing in more than one destination get the same notification multiple times.

Example:

Root Cause

There is no global recipient deduplication across destinations.
Each destination resolves recipients separately, and internal deduplication only occurs within a single destination. No mechanism tracks recipients already notified during the same event cycle.

Key Flow:

  • createEventsWithReceivers() attaches all destination IDs to each event
  • publishEvents() iterates destinations sequentially
  • Each publisher (EmailPublisher, SlackPublisher, etc.) resolves recipients independently
  • RecipientResolver returns a per-destination recipient set, unaware of other destinations
  • No cross-destination deduplication is performed

Relevant Code

  • AbstractEventConsumer.java (307–315): createEventsWithReceivers()
  • AbstractEventConsumer.java (195–205): publishEvents()
  • EmailPublisher, SlackEventPublisher, etc.: Per-destination recipient resolution
  • RecipientResolver.java: Independent recipient sets per destination

Impact

  • Users receive duplicate notifications when multiple destinations overlap
  • Affects Email, Slack, MS Teams, GChat, Webhooks
  • Occurs when the same transport type is used in multiple destinations

Metadata

Metadata

Assignees

Type

Projects

Status

Validation 🧐

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions