CTT Verification
This page explains the actual CTT verification flow shown in the team flowchart.
API Endpoints
POST /ticket/verification/ctt
Purpose
CTT verification checks whether a CTT can be verified from session-related evidence and whether the case should stay open, close, or trigger cleanup actions.
Trigger
The flow starts from a CTT verification request.
The flowchart shows that the system then:
- loops each CTT number in the request
- prepares CTT context
- decides whether the CTT and its context are valid enough to continue
Main business intent
This flow is not only about marking a case verified.
It also decides:
- whether the case has enough context to be checked
- whether a usable
LOGIN_IDexists - whether PPOE or Radius evidence shows the line is verified
- whether the verified result should keep the CTT open or allow closure-related action
- whether an already-cancelled CTT should be unlinked from
NTT
Flow summary
| Step | Business meaning |
|---|---|
| CTT verification request | a verification run is requested for one or more CTT items |
| Loop each CTT number | each CTT is handled one by one |
| Prepare CTT context | the system gathers the data needed for verification |
| CTT found and context valid? | invalid or missing CTT context stops the normal verification path |
Extract LOGIN_ID from customerInfo | the login identifier is needed for session checks |
LOGIN_ID exists? | without it, the system cannot continue session-based verification |
| Check PPOE status | the system checks one verification evidence source |
| Check Radius status | the system checks another verification evidence source |
| Resolve final verification decision | the system combines evidence into one result |
| Verified by PPOE or Radius? | if not verified, the CTT stays open |
| UNIFI source + HSI/all-services-down? | extra closure logic only applies to this scenario |
| Session online? | if not online, the CTT stays open even if verification succeeded |
| CTT already Cancel? | if already cancelled, unlink path is used instead of normal close path |
Decision path
1. CTT and context must exist
First gate:
- CTT found and context valid?
If no:
- the item is skipped or failed
- it does not continue into session verification checks
2. LOGIN_ID must exist
If the CTT context is valid, the flow extracts LOGIN_ID from customerInfo.
Second gate:
LOGIN_IDexists?
If no:
- no verification action happens
- audit is still saved
- the result records no login ID
3. PPOE and Radius are checked
If LOGIN_ID exists, the flow checks:
- PPOE status
- Radius status
Then it resolves one final verification decision.
Third gate:
- Verified by PPOE or Radius?
If no:
- save unverified result
- keep CTT open
4. Extra closure logic applies only for a specific source/scenario
If verification succeeds, the next gate is:
- UNIFI source + HSI/all-services-down?
If no:
- save verified result
- keep CTT open
This means a verified result does not automatically close every CTT.
5. Session must be online for the closure-related path
If the case is from the UNIFI plus HSI or all-services-down scenario, the next gate is:
- Session online?
If no:
- save offline result
- keep CTT open
6. Cancelled CTT behaves differently
If the session is online, the next gate is:
- CTT already Cancel?
If yes:
- unlink CTT from
NTT
If no:
- set CTT status to
Closed - resolve CTT if needed
Final outcomes
The flowchart shows these final outcome buckets:
| Outcome | Result |
|---|---|
No valid LOGIN_ID | no action, but audit notes missing login ID |
| Unverified | keep CTT open |
| Verified but not in closure scenario | keep CTT open |
| Verified and closure scenario but session offline | keep CTT open |
| Verified, closure scenario, session online, already cancelled | unlink from NTT |
| Verified, closure scenario, session online, not cancelled | close CTT and resolve if needed |
All branches end by saving audit + result.
Hidden rules from the flowchart
The flowchart includes a hidden-rules note box. These are important because they are easy to miss in code review:
- Radius overrides primary PPOE when both exist
verifyCtt(...)routes torunCttForPPOEOnly(...)- verification still saves note or result even when there is no auto-close
- TaaS vs TMF routing depends on
cttNopattern, not source enum
What this means for developers
- do not assume verification success means automatic closure
- do not assume missing
LOGIN_IDis a silent no-op; it still creates an audit result - do not assume only one evidence source matters; PPOE and Radius both participate
- do not assume source enum alone decides TaaS vs TMF behavior
- keep result-saving behavior intact even when no close action happens
What this means for QA and support
When checking a verification issue, verify these in order:
- was the CTT found and was its context valid
- was
LOGIN_IDpresent incustomerInfo - what PPOE result was returned
- what Radius result was returned
- whether the final decision was verified or unverified
- whether the case matched the UNIFI plus HSI or all-services-down closure scenario
- whether the session was online
- whether the CTT was already cancelled
Related references
- CTT Overview
- CTT Flowcharts
- CTT Verification PDF
- CTT Status Rules
- CTT Link and Unlink
- Ticket Service
- Queue Services
Still worth confirming with the team
The flowchart gives the main path clearly, but these details are still worth confirming in plain language:
| Question | Why it matters |
|---|---|
| what exact cases count as "context valid" | helps onboarding and troubleshooting |
| what exact PPOE and Radius states count as verified | needed for a full decision matrix |
| whether "UNIFI source + HSI/all-services-down" has edge-case exceptions | important for closure behavior |
| what user-facing message should appear for each failed gate | improves support and QA clarity |