TELS Compliance Service - Event Catalog

🏠 Home tels-compliance / docs

TELS Compliance Service - Event Catalog

Overview

TELS Compliance uses RabbitMQ via MassTransit 5.5.6 for asynchronous messaging. The subscriber connects to 3 RabbitMQ exchanges (Compliance, WorkOrder, TELS) with 10 dedicated consumers. The API publishes 10+ event types via BusProxy. Many events are self-consumed to drive workflow progression.

Message Bus Architecture

Exchange Queue Consumer
Compliance TELS.Compliance.MQServices.articles ArticleCreatedEventConsumer
Compliance TELS.Compliance.MQServices.articleFinished ArticleFinishedEventConsumer
Compliance TELS.Compliance.MQServices.roleUserRemoved RoleUserRemovedEventConsumer
Compliance TELS.Compliance.MQServices.evaluateStep EvaluateStepEventConsumer
Compliance TELS.Compliance.MQServices.stepPending StepPendingApprovalConsumer
Compliance TELS.Compliance.MQServices.stepTimeout StepTimeoutEventConsumer
Compliance TELS.Compliance.MQServices.diagnostic DiagnosticMessageEventConsumer
WorkOrder TELS.Compliance.MQServices.workitems NewWorkItemEventConsumer
WorkOrder TELS.Compliance.MQServices.statusEvent StatusEventConsumer
TELS TELS.Compliance.MQServices.contactChange ContactChangeConsumer

Delivery Mechanism

Component Purpose Configuration
MassTransit 5.5.6 Consumer/publisher framework RabbitMQ transport, 3 exchanges
RabbitMQ Message broker Compliance, WorkOrder, TELS exchanges
BusProxy Outbound event publishing TELS.BusProxy.Client 3.0.1 with S3/SQL fallback

Consumed Events (Inbound)

IArticleCreatedV1

Property Value
Source Self (API publishes on article creation)
Queue TELS.Compliance.MQServices.articles
Consumer ArticleCreatedEventConsumer
Trigger Article submitted via API
Action Evaluates rules, creates approval steps, notifies first approver

Schema:

{
  "articleId": 12345,
  "objectTypeId": 1,
  "references": [
    { "domain": "TELS", "type": "workitems:authorizationnumber", "identifier": "67890" }
  ]
}

IArticleFinishedV1

Property Value
Source Self (published when article workflow completes)
Queue TELS.Compliance.MQServices.articleFinished
Consumer ArticleFinishedEventConsumer
Trigger Final step in workflow completed (authorized, denied)
Action Post-completion processing, notifications

Schema:

{
  "articleId": 12345,
  "externalReferences": ["domain~~type~~id"],
  "objectType": 1,
  "articleStatus": "Authorized"
}

IRoleUserRemovedV1

Property Value
Source Self (API publishes on role assignment removal)
Queue TELS.Compliance.MQServices.roleUserRemoved
Consumer RoleUserRemovedEventConsumer
Trigger Person removed from a role
Action Re-evaluates pending steps assigned to the removed person's role, publishes IEvaluateStepV1

IEvaluateStepV1

Property Value
Source Self (published by RoleUserRemovedEventHandler)
Queue TELS.Compliance.MQServices.evaluateStep
Consumer EvaluateStepEventConsumer
Trigger Step needs re-evaluation after role change
Action Re-evaluates step assignment, may bypass or reassign

Schema:

{
  "objectTypeId": 1,
  "articleId": 12345,
  "stepId": 5,
  "externalReferences": ["domain~~type~~id"]
}

IStepPendingApprovalV1

Property Value
Source Self (published when step becomes pending)
Queue TELS.Compliance.MQServices.stepPending
Consumer StepPendingApprovalConsumer
Trigger Approval step becomes active
Action Sends notifications to role assignees (email, SMS, push)

Schema:

{
  "articleId": 12345,
  "stepId": 5,
  "externalReferences": ["domain~~type~~id"],
  "objectType": 1,
  "minutesToApprove": 1440
}

IStepTimeoutV1

Property Value
Source Self (scheduled with delay on step creation)
Queue TELS.Compliance.MQServices.stepTimeout
Consumer StepTimeoutEventConsumer
Trigger Step timeout period expires
Action Auto-expires the step if still pending

Schema:

{
  "articleId": 12345,
  "stepId": 5,
  "objectType": 1,
  "automaticApprovalTime": "2026-03-12T10:00:00Z"
}

INewWorkItemV1

Property Value
Source Work Items domain (via WorkOrder exchange)
Queue TELS.Compliance.MQServices.workitems
Consumer NewWorkItemEventConsumer
Contract TELS.WorkItems.Events NuGet
Trigger New work item created
Action Creates compliance article for the work item if rules exist

IStatusEventV1

Property Value
Source Work Items domain (via WorkOrder exchange)
Queue TELS.Compliance.MQServices.statusEvent
Consumer StatusEventConsumer
Contract TELS.WorkItems.Events NuGet
Trigger Work item status changes
Action Updates compliance article based on work item status transition

ContactChange

Property Value
Source Customers Service (via TELS exchange)
Queue TELS.Compliance.MQServices.contactChange
Consumer ContactChangeConsumer
Contract DSE.TELS.Customers.Events NuGet
Trigger Contact information changes in Customers
Action Updates notification configurations for affected persons

IDiagnosticMessageV1

Property Value
Source Self (diagnostic endpoint)
Queue TELS.Compliance.MQServices.diagnostic
Consumer DiagnosticMessageEventConsumer
Trigger Diagnostic test from API
Action Logs diagnostic message for testing

Published Events (Outbound)

IArticleCreatedV1

IArticleFinishedV1

IArticleNotificationOutcome

IStepTimeoutV1

IStepPendingApprovalV1

IRoleUserRemovedV1

IEvaluateStepV1

IFlushCacheRequestV1

IDiagnosticMessageV1

OutboundSMS / MobilePushNotification


Message Flow Diagrams

Article Approval Workflow

Work Items System publishes INewWorkItemV1
  → Queue: TELS.Compliance.MQServices.workitems
  → NewWorkItemEventConsumer creates article via Compliance API
  → API publishes IArticleCreatedV1 via BusProxy
  → ArticleCreatedEventConsumer:
    1. Evaluates rules against article attributes
    2. Creates approval steps from matching rule template
    3. Publishes IStepPendingApprovalV1 for first step
    4. Schedules IStepTimeoutV1 for step timeout
  → StepPendingApprovalConsumer:
    1. Loads role assignees
    2. Sends notifications (email, SMS, push)
  → User authorizes step via API (finishStep)
  → Next step activated (repeat)
  → Final step: publishes IArticleFinishedV1
  → ArticleFinishedEventConsumer: post-completion processing

Role Removal Cascade

Admin removes person from role via API
  → API publishes IRoleUserRemovedV1
  → RoleUserRemovedEventConsumer:
    1. Finds pending steps assigned to role
    2. For each: publishes IEvaluateStepV1
  → EvaluateStepEventConsumer:
    1. Re-evaluates step (bypass if no assignees, reassign)

Contract Package

Package Version Key Messages
TELS.Compliance.Contracts NuGet IArticleCreatedV1, IArticleFinishedV1, IArticleNotificationOutcome, IEvaluateStepV1, IStepPendingApprovalV1, IStepTimeoutV1, IRoleUserRemovedV1, IFlushCacheRequestV1, IDiagnosticMessageV1
TELS.WorkItems.Events 2.0.x INewWorkItemV1, IStatusEventV1
DSE.TELS.Customers.Events 1.0.287926 ContactChange

Summary