TELS Billing Processor - Project Overview

🏠 Home billing / tels-billing-processor / docs

TELS Billing Processor - Project Overview

Solution Structure

Infrastructure-only repository — no source code. Wraps a legacy Windows executable (TELSBillProcessing.exe) with Nomad orchestration, Terraform configuration, and CI/CD pipeline.

Component Type Description
Terraform IaC Nomad batch-legacy module configuration per environment
CI/CD GitLab CI Trigger, enable, disable, and unlock mutex jobs
nomad.yml Job spec Nomad batch-legacy job template

Architecture

Purpose

TELS Billing Processor is a Nomad-orchestrated legacy Windows batch job that runs two core billing operations:

  1. Generate TELS Bills — Daily at 5:00 AM CT. Generates monthly subscription bills for all active facilities.
  2. Process MDID Orders — Hourly from 6:00 AM to 4:00 PM CT (11 runs/day). Processes MDID orders from the vDist transaction system.

Binary

Mutex Pattern

Database-level mutual exclusion prevents concurrent execution: - Mutex types: GenerateTelsBills, ProcessMdidOrders - prohibit_overlap = true in Nomad config - Unlock jobs: Scheduled at impossible time (59 23 31 FEB SUN) — designed for manual GitLab CI trigger only when a job hangs


Scheduled Jobs

Generate TELS Bills

Setting Value
App Name bill-processor-generate-tels-bills
Schedule 0 5 * * * (daily 5:00 AM CT)
Arguments /Mode GenerateTelsBills
Exit Codes 0 = success

Process MDID Orders

Setting Value
App Name bill-processor-process-mdid-orders
Schedule 0 6-16 * * * (hourly, 6 AM–4 PM CT)
Arguments /Mode ProcessMdidOrders
Exit Codes 0 = success

Mutex Unlock (Manual Only)

Job Arguments
bill-processor-unlock-mutex-generate-tels-bills /Mode ReleaseMutex /MutexType GenerateTelsBills
bill-processor-unlock-mutex-process-mdid-orders /Mode ReleaseMutex /MutexType ProcessMdidOrders

Key Technology Stack

Category Technology
Orchestration Nomad (batch-legacy module, Windows)
IaC Terraform 1.1.5+
Secrets HashiCorp Vault
Configuration Consul
Binary Legacy Windows executable (TELSBillProcessing.exe)

External Dependencies

Configured via Consul environment variables:

Integration Setting Description
Auth Service AuthorizationServiceEndpoint Token endpoint
Building Services BuildingServicesServiceEndpoint Building/facility data
TELS Database ConnectionString SQL Server (TELS DB)

Deployment

Environments

Environment Auth Endpoint Building Services Endpoint Database
DEV https://devservices.tels.net/auth https://devservices.tels.net/BuildingServices SQL-DSHE-DE-TRAN
QA https://qaservices.tels.net/auth https://qaservices.tels.net/BuildingServices SQL-DSHE-E-TRAN
PROD https://services.tels.net/auth https://services.tels.net/BuildingServices SQL-TELS-PE-TRAN

CI/CD Pipeline

No build step — binary already exists in Nomad Windows container.

Job naming convention: - b:trigger_{env}_{operation} — Trigger Nomad job - c:disable_{env}_{operation} — Disable job (manual) - d:enable_{env}_{operation} — Enable job (manual) - e:unlock_mutex_{env}_{operation} — Release mutex (manual)

Pipeline: Includes child from platypus/ci-scripts v2 nomad-deploy-no-build.yml


Notes