New claim intake and adjuster assignment¶
This operation was identified through source tracing and is not present in the prior flat-format documentation. clsThirdPartyNewClaim is a batch job that scans newly reported claims for a run date, skips claims that already have a third-party case, assigns a recovery adjuster via clsAdjusterAssignment, creates the case, and schedules an initial "Review new claim" task. clsClaimActivityManager is a related batch job that generates a follow-up task on already-open recovery cases based on a caller-supplied task code, text, and assignee.
| Field | Value |
|---|---|
| Operation ID | OP-TP-09 |
| Trigger | clsThirdPartyNewClaim.NewThirdPartyNewClaim(dataPortal, runDate).Save(); clsClaimActivityManager.NewClaimActivityManager(dataPortal, runDate).Save() |
| Inputs | Run date; new-claim list rows (claim ID, claim number, policy number, date of injury, security/conflict flags); open-case list rows with caller-supplied task code, text, assignee, and case sequence number |
| Outputs | New THRDPARTY_CASE rows with an assigned adjuster; new THRDPARTY_TASK rows ("Review new claim" or caller-supplied); a running count of successfully processed records; per-record error messages for duplicates or save failures |
| Primary components | clsThirdPartyNewClaim.processRecords, clsAdjusterAssignment.AssignAdjuster, clsAdjusterAssignment.CheckForCase, clsClaimActivityManager.ProcessOpenCases |
| Entry point | Business\SAIF.Business.Claim.ThirdParty\clsThirdPartyNewClaim.vb |
Steps¶
- Retrieve the new-claim list for a run date (SQL-041), yielding a collection of
clsThirdPartyNewClaimcandidate rows each carrying claim security information viaSetClaimSecurity. - For each candidate claim, check for an existing case.
clsAdjusterAssignment.CheckForCaseissues a direct inline-SQL scalar count againstTHRDPARTY_CASEfiltered by claim ID.* - If a case already exists: record a "Duplicate" error message and skip the claim; no case or task is created.
- Determine adjuster confidentiality. If the claim's security info indicates a conflict or an exposure situation, the claim is treated as confidential/secured for assignment purposes.
- Assign a recovery adjuster (
AssignAdjuster): - If the claim is secured/confidential: the adjuster is forced to a designated conflict-adjuster code, and the matching user name is looked up from the claim-assignment range list (BR-034).
- Otherwise, the assignment first attempts a policy-level match: if the claim's policy number appears in the policy-assignment list, that policy's designated adjuster and user name are used (BR-034).
- If no policy match is found, the assignment falls back to a claim-number-range match: the last two digits of the claim number are compared against low/high bounds in the claim-assignment range list, and the first matching range's adjuster and user name are used (BR-034).
- If still no match and at least one range entry exists, the last-iterated range entry is used as a fallback default.*
- If an adjuster code was resolved but no user name, a final pass re-scans the claim-assignment list by adjuster code to backfill the user name.*
- Create the third-party case. A new
clsThirdPartyCaseis instantiated for the claim ID and date of injury, withThrdpartyAdjusterCodeset to the assigned adjuster (see Maintain recovery case for case-level validation rules). - If the case is not savable (fails its own business rules): a "SaveError" message is recorded and no task is created.
- Save the case, then create the initial review task. A new
clsThirdpartyTaskis created with task codeNOTIC, text "Review new claim", the assigned user name, and a due date supplied by the run's criteria object (see Manage notes and tasks for task validation rules). - If the task is not savable: a "TaskError" message is recorded (the case has already been saved at this point).
- If the task is savable: it is saved and the batch's processed-record count is incremented.
- Retrieve the open-case list for a run date (SQL-042), yielding
clsClaimActivityManagerrows each carrying a case sequence number and caller-supplied task code/text/assignee. - Generate a follow-up task on each open case (
ProcessOpenCases). A newclsThirdpartyTaskis created against the case's sequence number with a due date of tomorrow, the supplied user name, task code, and task text. - If the task is savable: it is saved and the batch's processed-record count is incremented.
- If the task is not savable: the record is silently skipped — no error message is recorded, unlike the new-claim intake path.*
Process flow¶
flowchart TD
Start([Batch run for run date]) --> NewList[Retrieve new claim list]
NewList --> Dup{Case already<br>exists for claim?}
Dup -->|Yes| DupErr([Error: Duplicate])
Dup -->|No| Secured{Conflict or<br>exposure flagged?}
Secured -->|Yes| Conflict[Assign conflict<br>adjuster code]
Secured -->|No| PolicyMatch{Policy number<br>matches assignment list?}
PolicyMatch -->|Yes| PolicyAssign[Assign policy's adjuster]
PolicyMatch -->|No| RangeMatch{Claim number last-2-digits<br>within a range?}
RangeMatch -->|Yes| RangeAssign[Assign range's adjuster]
RangeMatch -->|No| DefaultAssign[Fall back to last<br>range entry, if any]
Conflict --> CreateCase[Create THRDPARTY_CASE<br>with assigned adjuster]
PolicyAssign --> CreateCase
RangeAssign --> CreateCase
DefaultAssign --> CreateCase
CreateCase --> Savable{Case savable?}
Savable -->|No| SaveErr([Error: SaveError])
Savable -->|Yes| SaveCase[Save case]
SaveCase --> CreateTask[Create NOTIC review task]
CreateTask --> TaskSavable{Task savable?}
TaskSavable -->|No| TaskErr([Error: TaskError])
TaskSavable -->|Yes| SaveTask([Save task,<br>increment record count])
OpenList([Retrieve open case list]) --> NewFollowup[Create follow-up task<br>due tomorrow]
NewFollowup --> FollowSavable{Task savable?}
FollowSavable -->|No| Skip([Skipped silently])
FollowSavable -->|Yes| SaveFollowup([Save task,<br>increment record count])
Failure and edge-case behavior¶
CheckForCaseuses an inline, hand-built SQL string (Select count(*) from thrdparty_case where claim_id = :claimId) rather than a cataloged stored procedure, so it is not represented in the SQL catalog as a named entry.*- The "fall back to last range entry" behavior in
AssignAdjuster(step 4) means an unmatched claim number silently receives whatever adjuster happened to be last in the range collection, rather than failing or defaulting to an explicit "unassigned" adjuster.* - If case creation fails (
SaveError), the batch does not attempt to create the review task at all, so a failed case never produces an orphan task. - If task creation fails after a successful case save (
TaskError), the case remains persisted without its initial review task — the record count is not incremented and the failure is only visible via the recorded error message. clsClaimActivityManager.ProcessOpenCaseshas no error-message path for a failed task save, unlike the otherwise-analogous new-claim intake flow — a failed follow-up task is simply not counted and leaves no diagnostic trail.*- Both batch jobs rely on the constructing criteria's
runDate/taskDatefor due-date calculation rather than deriving it independently, so caller-supplied dates directly control task scheduling.*
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Related documentation¶
Sources¶
Business\SAIF.Business.Claim.ThirdParty\clsThirdPartyNewClaim.vbBusiness\SAIF.Business.Claim.ThirdParty\clsClaimActivityManager.vbBusiness\SAIF.Business.Claim.ThirdParty\clsAdjusterAssignment.vb