SAIF.Business.Tasks.Claim business rules
This page captures business rules enforced by this library.
BR-CT-01 Claim task must reference a resolvable claim
Field
Value
Statement
A claim task must reference a resolvable claim (ClaimID <> 0).
Trigger
ClaimNum assignment (CheckRules("ClaimNum")) and rule validation before save
Enforcement
clsClaimTask.ValidClaimNum
Outcome
Fails at RuleCheckLevel.LevelOne with "Error: Claim Number is invalid."
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-02 Task due date cannot be more than two years in the future
Field
Value
Statement
A task due date may not be more than two years in the future (the sentinel Date.MaxValue is exempt).
Trigger
Rule check on TaskDate; skipped when the task is deleted or not dirty
Enforcement
clsClaimTask.FutureDateWarning
Outcome
Fails at LevelOne with "Error: Task date is over 2 years in the future."
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-03 Assignee must hold task-update AD access
Field
Value
Statement
The assignee mailid must hold AD resource CTTaskUpdate, or else external resource RTWExternalUpdate.
Trigger
MailID assignment (CheckRules("TaskUser")) while mailidNeedsValidation is set and the task is dirty and not deleted
Enforcement
clsClaimTask.ValidMailId, via ObjectServices.HasResourceAccess / HasResourceAccessExternal
Outcome
Fails at LevelTwo with "Error: MailID [x] does not have access to RTWExternalUpdate"; if only external access is held, BR-CT-06 is registered and validation continues
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-03a Assignee validation exemptions
Field
Value
Statement
Validation of the assignee is skipped for informational messages (PriorityCode = MailID), for the current user (MailID = DataPortalInfo.UserID), and for TEST-prefixed accounts matching the mailid after the TEST prefix.
Trigger
Same as BR-CT-03
Enforcement
clsClaimTask.ValidMailId
Outcome
Rule passes without a resource lookup
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-04 Task text is required
Field
Value
Statement
Task text is required, except for informational messages (PriorityCode = MailID).
Trigger
Rule check on Text
Enforcement
clsClaimTask.ValidText
Outcome
Fails at LevelOne with "Error: Text required."
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-05 Task text length limit
Field
Value
Statement
Task text may not exceed 4,000 characters.
Trigger
Rule check on Text
Enforcement
clsClaimTask.ValidTextLength
Outcome
Fails at LevelOne with "Error: Text limited to 4000 characters."
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-06 External RTW user must be assigned to the claim
Field
Value
Statement
An external return-to-work user may only be assigned a task on a claim they are assigned to.
Trigger
Registered dynamically by BR-CT-03 when the assignee holds only RTWExternalUpdate
Enforcement
clsClaimTask.RTWAssignedClaim → clsClaimSecurity.RTWAssignedToClaim(dpi, ClaimID, MailID)
Outcome
Rule failure blocks assignment when the external user is not assigned to the claim*
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-07 Completing a notepad-required task marks it completed before soft delete
Field
Value
Statement
Completing a task that requires a notepad entry flags it as completed before the soft delete, so a notepad entry can be generated.
Trigger
MarkCompleted() when NotepadFlag = "Y"
Enforcement
clsClaimTask.MarkCompleted
Outcome
Completed = True, DeleteFlag = "Y", task marked dirty
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-08 Task text is sanitized on assignment
Field
Value
Statement
Task text is sanitized on assignment; only non-empty text that differs from the current value is accepted.
Trigger
Text property setter
Enforcement
clsClaimTask.Text setter via clsCharacterAnalyzer.GetCleanString
Outcome
Cleaned text stored, task marked dirty, CheckRules("Text") run; otherwise assignment ignored
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-09 Priority-task flag maps to URGMED priority code
Field
Value
Statement
A task flagged as a priority task carries priority code URG; clearing the flag sets MED.
Trigger
PriorityTask property setter
Enforcement
clsClaimTask.PriorityTask setter
Outcome
Priority code changed and task marked dirty; other codes are overwritten*
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-CT-10 Claim tasks default to the Manage Claims category
Field
Value
Statement
Claim tasks are always created under the Manage Claims category (CLMM) unless the caller requests Fast Track (FSTRK).
Trigger
clsClaimTask.NewTask factory / generator task creation
Enforcement
clsClaimTask.NewTask and clsClaimTaskGenerator.NewTask
Outcome
CategoryCode set to CLMM or FSTRK
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb, SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-CT-11 Claim tasks always report Claims source system
Field
Value
Statement
Claim tasks always report source system Claims / source code CLAIM and never require an action code.
Trigger
Every retrieval and save
Enforcement
clsClaimTask.SourceSystem, SourceCode, ActionCode
Outcome
Retrieval criteria are constrained to CLAIM rows; action code is NONE
Source
SAIF.Business.Tasks.Claim/clsClaimTask.vb
BR-MY-01 Confidential worker name redaction
Field
Value
Statement
The worker name on a task is hidden from users lacking the matching access right when the claim is flagged exposure, health issue, hostile worker, or worker conflict.
Trigger
Every "my tasks" retrieval, per row
Enforcement
clsMyTaskCollection.AfterRetrieve via ClaimServices.HasExposureAccess / HasCollateralAccess / HasSecureAccess / HasConflictAccess
Outcome
WorkerName replaced with the literal "Confidential"
SQL
SQL-001
Source
SAIF.Business.Tasks.Claim/clsMyTaskCollection.vb
BR-MY-02 Urgent claims grouped ahead in my tasks sort
Field
Value
Statement
Tasks are listed with all tasks of a claim that has an urgent task grouped ahead of the remainder, then by due date and claim number.
Trigger
Row add and post-retrieval sort
Enforcement
clsMyTaskCollection.setSortOrder / SortByDefault
Outcome
sortBy key assigned, multi-key sort applied
Source
SAIF.Business.Tasks.Claim/clsMyTaskCollection.vb
BR-MY-03 Unsupported task source system cannot be loaded
Field
Value
Statement
A task whose source code has no supported concrete type cannot be loaded.
Trigger
AfterRetrieve when NewTask() returns Nothing
Enforcement
clsMyTaskCollection.AfterRetrieve
Outcome
ApplicationException " Tasks are not yet supported!"
Source
SAIF.Business.Tasks.Claim/clsMyTaskCollection.vb
BR-CB-01 Coverage B task must reference a valid Coverage B claim
Field
Value
Statement
A Coverage B task must reference a valid claim whose coverage code is B; deleted tasks are exempt.
Trigger
ClaimNum assignment (CheckRules("ClaimNum")) and validation before save
Enforcement
clsCoverageBTask.ValidClaimNum
Outcome
Fails at LevelOne with "Error: Please enter a valid claim number." or "Error: Claim number is not a Coverage B Claim."
Source
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
BR-CB-02 Coverage B task text is required
Field
Value
Statement
Coverage B task text is required.
Trigger
Rule check on Text
Enforcement
clsCoverageBTask.AddBusinessRules → CommonBusinessRules.TextRequired
Outcome
Fails with "Error: Text required."
Source
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
BR-CB-03 Coverage B due date window is one year
Field
Value
Statement
A Coverage B due date must fall between today and one year from today.
Trigger
Base rule TASK2 evaluation when the task is dirty and not deleted
Enforcement
clsCoverageBTask.OverrideRules
Outcome
Base result overridden to fail with "Error: Due date must be between today and one year from today."
Source
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
BR-CB-04 Coverage B tasks always report Coverage B source system
Field
Value
Statement
Coverage B tasks always report source system CoverageB / source code COVB, never require a notepad entry, and require no action code.
Trigger
Every retrieval and save
Enforcement
clsCoverageBTask.SourceSystem, SourceCode, RequiresNotePadEntry, ActionCode
Outcome
Retrieval constrained to COVB rows; notepad never required
Source
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
BR-CB-05 Coverage B due date rolls to next working day
Field
Value
Statement
A Coverage B due date that falls on a non-working day is rolled to the next working day.
Trigger
Task construction (TaskDateModifier = NextWorkDay)
Enforcement
clsCoverageBTask.New, applied by the base date logic
Outcome
Stored due date is a working day
Source
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
BR-GEN-01 Generated task must specify a claim
Field
Value
Statement
A generated task must specify a claim.
Trigger
clsClaimTaskGenerator private NewTask when inClaimID = 0
Enforcement
clsClaimTaskGenerator.NewTask
Outcome
ApplicationException("ClaimID not specified") — creation aborts
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-GEN-02 Generated task due date normalized to a working day
Field
Value
Statement
A generated task's due date is normalized to a working day: same-day requests use the next working day; explicit dates on non-working days roll forward; offsets roll back to the previous working day.
Trigger
Every AddTask overload
Enforcement
clsClaimTaskGenerator.AddTask overloads via clsSmartDate.NextWorkDay / IsWorkingDay
Outcome
Due date replaced with a working day before task creation
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-GEN-03 Default assignee is the responsible adjuster
Field
Value
Statement
When no assignee is supplied, the task is assigned to the claim's responsible adjuster.
Trigger
Private NewTask when inUser is blank
Enforcement
clsClaimTaskGenerator.NewTask via ClaimServices.GetResponsibleAdjuster or clsClaimData.AdjusterMailID
Outcome
MailID set to the adjuster mailid, then validated by BR-CT-03
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-GEN-04 Default create user is the data-portal user
Field
Value
Statement
The create user defaults to the current data-portal user when the caller does not supply one.
Trigger
Generator construction (Initialize)
Enforcement
clsClaimTaskGenerator.Initialize
Outcome
m_CreateUser = IDataPortalInfo.UserID; stamped on every generated task
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-GEN-05 Generated tasks claim must resolve to a valid claim record
Field
Value
Statement
Each generated task's claim must resolve to a valid claim record.
Trigger
Rule added per task at generation; evaluated at validation/save
Enforcement
clsClaimTaskGenerator.IsValidClaimID via clsClaimData.GetData(...).IsValid
Outcome
Fails at LevelThree with "Invalid ClaimdID specified on Task"
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-GEN-06 Unrecognized priority values default silently
Field
Value
Statement
An unrecognized priority enum maps to INFO; an unrecognized priority code maps to Medium.
Trigger
Priority conversion during task creation or display
Enforcement
clsClaimTaskGenerator.GetPriorityText overloads
Outcome
Defaulted priority applied silently
Source
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
BR-LTC-01 Legacy task codes are read-only
Field
Value
Statement
Legacy task codes are read-only reference data — create, insert, update, and delete are not supported.
Trigger
Any attempt to read a non-retrieve SQL property
Enforcement
clsLegacyTaskCode.Criteria and clsLegacyTaskCodeCollection.Criteria
Outcome
ApplicationException(clsConstants.Messages.InvalidSQLProperty)
SQL
SQL-002
Source
SAIF.Business.Tasks.Claim/clsLegacyTaskCode.vb, SAIF.Business.Tasks.Claim/clsLegacyTaskCodeCollection.vb
Notes
Note: Statements marked with * were inferred from code structure, naming conventions, or
contextual evidence where direct confirmation was not available in source artifacts. Statements
marked with ** could not be confirmed; treat as unknown until verified.
Sources
SAIF.Business.Tasks.Claim/clsClaimTask.vb
SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb
SAIF.Business.Tasks.Claim/clsCoverageBTask.vb
SAIF.Business.Tasks.Claim/clsMyTaskCollection.vb
SAIF.Business.Tasks.Claim/clsLegacyTaskCode.vb
SAIF.Business.Tasks.Claim/clsLegacyTaskCodeCollection.vb