Skip to content

Notification Value Objects

Why This Exists

This document defines immutable or value-based concepts used by the Notification Domain.

Owner

The owner is the Chief Product Officer and Enterprise Architect.

Business Value

Value objects make delivery rules, priorities, preferences, and scheduling predictable across notification channels.

Value Object Catalogue

Value object Purpose Validation rules
NotificationId Identifies a notification. Must be unique.
NotificationRequestId Identifies a notification request. Must be unique and traceable to source.
NotificationType Classifies the notification. Must use approved type catalogue.
NotificationPriority Defines urgency. Allowed values: low, normal, high, urgent, critical.
ChannelType Defines channel. Allowed values: in_app, push, email, sms, whatsapp, outlook, gmail, calendar.
DeliveryStatus Tracks delivery state. Allowed values: pending, scheduled, sent, delivered, failed, blocked, cancelled.
ReadStatus Tracks recipient read state. Allowed values: unread, read, acknowledged, dismissed.
EscalationLevel Defines escalation severity. Allowed values: none, level_1, level_2, level_3.
DeliveryWindow Defines allowable send period. Must include timezone and start/end time.
QuietHours Defines preferred no-send window. Must include timezone and exceptions policy.
ScheduleRule Defines timing for delivery. Must be immediate, delayed, deadline-relative, or recurring.
TemplateVersion Identifies rendered template version. Must be immutable after send.
SourceReference References source domain fact. Must include source domain, aggregate type, aggregate ID, and event ID where available.
RecipientReference References user, role, team, organization, or contact. Must not duplicate Identity or Organization facts.
ProviderMessageId Stores provider-specific message reference. Optional until provider accepts send.
CommunicationSubject Short message subject. Must be channel-safe and not exceed configured length.

Validation Principles

  • Notification priority must be justified by type, policy, or source request.
  • Channel type must be enabled for the recipient and organization unless escalation policy permits override.
  • Schedule rules must avoid indefinite recurrence.
  • Source references must be treated as references, not owned business facts.

Example

A tender deadline reminder may use:

  • NotificationType: tender_deadline.
  • NotificationPriority: critical.
  • ChannelType: in_app, email, and whatsapp.
  • ScheduleRule: deadline-relative at 7 days, 48 hours, and 4 hours before close.
  • SourceReference: Opportunity-owned TenderOpportunityId.