ETA Notifier - Project Overview

🏠 Home contracted-services / etanotifier / docs

ETA Notifier - Project Overview

Solution Structure

Project Type Framework Description
TELS.ContractedServices.ETANotifier Console App (Batch) .NET 8.0 Scheduled batch job — publishes upcoming ETA reminders to customers
TELS.ContractedServices.ETANotifier.Tests xUnit (.NET 8.0) .NET 8.0 Unit tests (Moq, xUnit, FluentAssertions)

Architecture

Purpose

ETA Notifier is a scheduled Nomad batch job that sends notification commands reminding customers of upcoming ETAs for contracted services. It is a satellite service to the main Contracted Services system.

How It Works

  1. Runs every weekday at 8:37 AM via Nomad scheduler
  2. Retrieves contacts with contracted service locations from the Contracted Services API (paginated)
  3. Publishes an UpcomingETAReminderCommand per contact via BusProxy
  4. The main Contracted Services subscriber consumes these commands and sends actual notifications

Published Messages

Message Type Consumed By
UpcomingETAReminderCommand Contracted Services subscriber

Schema:

{
  "personId": 500
}

Published via BusProxy (TELS.BusProxy.Client 3.0.0 with S3 fallback, 45s timeout).


Key Technology Stack

Category Technology
Runtime .NET 8.0
Orchestration Nomad (Platypus framework)
Event Publishing TELS.BusProxy.Client 3.0.0 + S3 fallback
Auth JWT token refresh via Auth Service (5-minute cache)
Resilience Polly 8.6.0 (HTTP retry)
Configuration Vault (secrets) + Consul (config) via envconsul
Monitoring New Relic + PagerDuty alerting
Logging JSON to AWS CloudWatch (platypus log group)
Testing xUnit 2.9.3, Moq 4.20.72, FluentAssertions 6.12.0

External Dependencies

Integration Mechanism Description
Contracted Services API HTTP (TELS.WebServiceClients.ContractedServices.V2 2.6.1) Retrieves contacts with contract locations
Auth Service HTTP Token refresh (5-minute cache)
BusProxy HTTP + S3 fallback Message publishing (45s timeout)

Deployment

Infrastructure

Environments

Environment Nomad Dashboard
DEV https://nomad.directsupply-sandbox.cloud/ui/jobs/tels-eta-notifier
QA https://nomad.directsupply-testing.cloud/ui/jobs/tels-eta-notifier
PROD https://nomad.directsupply.cloud/ui/jobs/tels-eta-notifier

Notes