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, andwhatsapp. - ScheduleRule: deadline-relative at 7 days, 48 hours, and 4 hours before close.
- SourceReference: Opportunity-owned TenderOpportunityId.