Express Outage Triage

Express triage workflow for immediate outage severity classification. Validates the incoming outage report and immediately diagnoses the root cause to return a real-time severity and affected-subscriber count, enabling NOC teams to prioritize dispatch and rerouting actions without waiting for the full pipeline.
{
  "Comment": "Express outage triage — rapid classification and impact assessment without field dispatch or restoration",
  "StartAt": "SetTriageContext",
  "States": {
    "SetTriageContext": {
      "Type": "Pass",
      "Parameters": {
        "outageId.$": "$.outageId",
        "affectedNodeId.$": "$.affectedNodeId",
        "outageType.$": "$.outageType",
        "severity.$": "$.severity",
        "detectedBy.$": "$.detectedBy",
        "region.$": "$.region",
        "carrier.$": "$.carrier",
        "estimatedAffectedSubscribers.$": "$.estimatedAffectedSubscribers",
        "detectedAt.$": "$.detectedAt",
        "meta": {
          "workflow": "ExpressOutageTriage",
          "checkType": "TRIAGE_ONLY"
        }
      },
      "Next": "ValidateOutageReport"
    },
    "ValidateOutageReport": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "FunctionName": "${ValidateOutageReportFunctionArn}",
        "Payload.$": "$"
      },
      "ResultPath": "$.validation",
      "Next": "IsReportValid"
    },
    "IsReportValid": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.validation.Payload.isValid",
          "BooleanEquals": true,
          "Next": "DiagnoseRootCause"
        }
      ],
      "Default": "TriageFailed"
    },
    "DiagnoseRootCause": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "FunctionName": "${DiagnoseRootCauseFunctionArn}",
        "Payload.$": "$.validation.Payload"
      },
      "ResultPath": "$.diagnosis",
      "Next": "TriageHold"
    },
    "TriageHold": {
      "Type": "Wait",
      "Seconds": 2,
      "Next": "AssessImpactRadius"
    },
    "AssessImpactRadius": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "FunctionName": "${AssessImpactRadiusFunctionArn}",
        "Payload.$": "$.diagnosis.Payload"
      },
      "ResultPath": "$.impact",
      "Next": "TriageOutcome"
    },
    "TriageOutcome": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.validation.Payload.severity",
          "StringEquals": "P1_CRITICAL",
          "Next": "CriticalOutage"
        },
        {
          "Variable": "$.impact.Payload.slaBreachRisk",
          "BooleanEquals": true,
          "Next": "CriticalOutage"
        }
      ],
      "Default": "StandardOutage"
    },
    "CriticalOutage": {
      "Type": "Succeed"
    },
    "StandardOutage": {
      "Type": "Succeed"
    },
    "TriageFailed": {
      "Type": "Fail",
      "Error": "OutageTriageFailed",
      "Cause": "Outage report is invalid — full validation and diagnosis required"
    }
  }
}
JSON
Expand
100%

Telecommunications teams can use patterns like this to build reliable, compliant, and scalable automation for payment systems and can test and refine these flows locally with Thrubit to reduce cloud cost and speed up iteration.