Notification Technical Limitations
Summary
The Notification Service is functional and event-driven but Transitional. The following verified limitations are grouped by concern. Each reflects the reviewed source, not runtime configuration.
Architecture
- No separate engine, worker, dispatcher daemon, processor or outbox relay — orchestration and delivery run in-process within one consumed-event scope.
- The application layer couples directly to
NotificationDbContext; there is no repository or unit-of-work abstraction. - Two implementations (extracted service and legacy monolith) coexist with different contracts and template models.
Delivery
- SMS and WhatsApp are placeholders with no real provider; they log simulated deliveries.
- Email delivers only when an address is resolvable; the active email provider is chosen once at startup.
- Delivery is synchronous within the dispatch scope, with no asynchronous delivery queue or batching.
Retry
- Retry is a bounded in-process loop; there is no persisted retry queue or scheduled re-drive.
- The dead-letter exchange/queue names are configured but not wired (the queue is declared with null arguments).
- Automatic re-drive of already-failed messages is not implemented; re-driving is manual via the retry endpoint.
Processing
- Processing is single-pass and synchronous with no reprocessing scheduler.
- Workflow and most Recruitment events are absent from the resolver’s supported event types.
Authorization
- No authentication or authorization is registered; all endpoints are anonymous.
- Recipient identity on the inbox endpoint is caller-supplied and unverified.
- There is no context-wide tenant guard; tenant scoping relies on per-query parameters and upstream enforcement.
Validation
- Validation is minimal and inline; there is no validation framework or domain invariant enforcement.
- Template rendering is intentionally tolerant, silently emptying unknown placeholders.
Compatibility
- The gateway routing toggle defaults off, so notification traffic stays on the monolith unless enabled.
- The portal inbox still calls legacy monolith endpoints; cutover to the extracted contract is not evident.
Testing
- Only a smoke script and in-service test hooks exist; there are no unit, integration or contract test projects for the service.
Requires Confirmation
Production provider selection, dead-letter enablement, access enforcement, canonical implementation and test ownership require confirmation.
Source References
microservices/src/notification-service/Program.csmicroservices/src/notification-service/Application/NotificationDispatcher.csmicroservices/src/notification-service/Channels/PlaceholderSenders.csmicroservices/src/notification-service/Messaging/NotificationEventConsumer.cs
Related Articles
See Also
Keywords
Limitations, constraints, gaps, verified absence, transitional.
Revision Information
- Status: Draft
- Last reviewed: 2026-07-21
- Next review: 2026-10-21