Skip to content

SAIF.Application.Claim.Legal business rules

This page captures business rules enforced by the SAIF.Application.Claim.Legal manager classes.

BR-LGL-001 Admin group bypasses claim-conflict and exposure checks

Field Value
Statement Users in the Legal admin group may view any claim, bypassing conflict/exposure checks.
Trigger OnRetrieve() evaluates IsInAdminGroup (SecurityPrincipal.IsAuthorized("LNAdmin")).
Enforcement LegalManagerBase.OnRetrieve
Outcome m_CanViewClaim = True; message cleared.
SQL SQL-012
Stored procedure cross-reference pk80001_legalNet.getHeader
Source SAIF.Application.Claim.Legal\LegalManagerBase.vb

BR-LGL-002 Worker-conflict claims require conflict and exposure access

Field Value
Statement A worker-conflict claim may only be viewed by users with both conflict and exposure access, unless a security override is present.
Trigger ClaimData.IsWorkerConflict and access checks in OnRetrieve().
Enforcement LegalManagerBase.OnRetrieve (HasLegalConflictAccess, CheckForSecurityOverride)
Outcome m_CanViewClaim = False; Message = ClaimAppConstants.ERRORCONFIDENTIALCLAIM.
SQL SQL-012
Stored procedure cross-reference pk80001_legalNet.getHeader
Source SAIF.Application.Claim.Legal\LegalManagerBase.vb

BR-LGL-003 Exposure-flagged claims require exposure access

Field Value
Statement An exposure-flagged claim may only be viewed by users with exposure access, unless a security override is present.
Trigger ClaimData.IsExposure in OnRetrieve().
Enforcement LegalManagerBase.OnRetrieve (HasLegalExposureAccess)
Outcome m_CanViewClaim = False; Message = ClaimAppConstants.ERRORCONFIDENTIALCLAIM.
SQL SQL-012
Stored procedure cross-reference pk80001_legalNet.getHeader
Source SAIF.Application.Claim.Legal\LegalManagerBase.vb

BR-LGL-004 Printing a DEF letter marks the case DEF-sent

Field Value
Statement Printing a Defense Evaluation Form (DEF) letter marks the case as DEF-sent as of today and clears the pending-send flag.
Trigger clsScheduleManager.PrintDEF() invoked (from Save flow when sendDEF = True, or from popup).
Enforcement clsScheduleManager.PrintDEF
Outcome CurrentCase.DefSentDate = Today; SendDefFlag = clsConstants.Yes; sendDEF reset to False.
SQL SQL-001
Stored procedure cross-reference pk80001_LEGALNET.insertLetterRequest
Source SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb

BR-LGL-005 Non-Production DEF email reminders are redirected to the current user

Field Value
Statement Outside of the Production environment, DEF reminder emails are redirected to the current user instead of the real recipient, with the intended recipient noted in the body.
Trigger AppGlobal.EnvironmentService.GetApplicationEnvironment() <> Prod in SendDEFEmail.
Enforcement clsScheduleManager.SendDEFEmail
Outcome Email sent to DPI.UserID@saif.com with a body annotation naming the real intended recipient.
SQL SQL-020
Stored procedure cross-reference pk80001_LEGALNET.get_atty_mngr_email
Source SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb

BR-LGL-006 Attorney assignment batch process runs in testing mode outside Production

Field Value
Statement The attorney-assignment batch process runs in a "testing" mode outside of Production.
Trigger clsAssignmentManager.Testing evaluated at RunAssignmentProcess() invocation.
Enforcement clsAssignmentManager.RunAssignmentProcess / Testing property
Outcome clsAssignmentProcess is constructed with Testing = True in non-Prod, altering its (business-layer) behavior.
Source SAIF.Application.Claim.Legal\LegalNet\clsAssignmentManager.vb

BR-LGL-007 Hearing schedule sync to Guidewire requires an assigned attorney

Field Value
Statement A hearing schedule is only synchronized to Guidewire as a matter if an attorney is currently assigned.
Trigger req.saifAttorneyName <> "" check before calling the Guidewire API.
Enforcement clsScheduleManager.SendDataToGw / clsAssignmentManager.SendDataToGw
Outcome Guidewire RetrieveWithBody call is skipped when no attorney is assigned; no matter is created/updated.
Source SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb, SAIF.Application.Claim.Legal\LegalNet\clsAssignmentManager.vb

BR-LGL-008 Guidewire and WCD integration failures never fail the case save

Field Value
Statement Failures calling out to Guidewire (matter, activity, WCD-number sync) are logged but never fail the underlying case save.
Trigger Any exception raised by client.DataAccessLayer.ProcessRequest.
Enforcement clsScheduleManager.SendDataToGw/CreateScheduleActivity; clsAssignmentManager.SendDataToGw/CreateScheduleActivity; clsRequestManager.UpdateWcdData
Outcome Exception caught, Logging.clsLogError.CreateError(ex) recorded; OnWrite/save flow continues and reports success to the user.
Source SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb, SAIF.Application.Claim.Legal\LegalNet\clsAssignmentManager.vb, SAIF.Application.Claim.Legal\LegalNet\clsRequestManager.vb

BR-LGL-009 Worker-attorney firm change creates a system audit case note

Field Value
Statement Changing the worker-attorney firm on a case creates a system audit case note recording the old and new firm names.
Trigger OldFirmId <> CurrentCase.WorkerAttorneyFirmID at save time, on an existing (non-new) case.
Enforcement clsRequestManager.OnWrite → CreateFirmChangedCaseNote
Outcome A clsCaseNote with CategoryCode = "RFH", CreateUser = "SYSTEM" is added and saved.
Source SAIF.Application.Claim.Legal\LegalNet\clsRequestManager.vb

BR-LGL-010 Worker attorney change creates a system audit case note

Field Value
Statement Changing the worker attorney on a case creates a system audit case note recording the old and new attorney names.
Trigger OldAttorneyId <> CurrentCase.WorkerAttorneyID at save time, on an existing case.
Enforcement clsRequestManager.OnWrite → CreateAttorneyChangedCaseNote
Outcome A clsCaseNote with CategoryCode = "RFH", CreateUser = "SYSTEM" is added and saved.
Source SAIF.Application.Claim.Legal\LegalNet\clsRequestManager.vb

BR-LGL-011 Consolidation is rejected when a hearing is scheduled in the past for a Set Reset case

Field Value
Statement A consolidation change is rejected with a user-facing message if it would consolidate a case whose most recent hearing is scheduled in the past while in Set/Reset status.
Trigger CurrentCase.Consolidations.ConsolidateCases(DPI) throws with message containing "Schedule date must be in the future".
Enforcement clsRequestManager.OnWrite
Outcome AppendMessage("Error: One or more hearing rows are in 'Set' or 'Reset' status and scheduled in the past") (message excerpt); save returns False; other exception messages are rethrown unhandled.
Source SAIF.Application.Claim.Legal\LegalNet\clsRequestManager.vb

BR-LGL-012 Secondary consolidated cases mirror the primary case state

Field Value
Statement Secondary (non-primary) consolidated cases mirror the primary case's status, LCE excusal/transfer state, file location, and DEF-sent flag.
Trigger Save of the primary case triggers updateConsolFileLocation, updateConsolLCE, UpdateConsolCaseStatus, UpdateConsolDEFFLag.
Enforcement LegalManagerBase (four methods)
Outcome Each secondary clsLegalCase is updated and saved to match the primary case's corresponding state.
Source SAIF.Application.Claim.Legal\LegalManagerBase.vb

BR-LGL-013 Case note deletion is restricted by role and note origin

Field Value
Statement A case note can only be deleted by users in the case-update/admin group, unless it is a bill note (DOCCO), which any authorized bill-note updater may delete; notes created by "SYSTEM" can never be deleted.
Trigger DeleteNote() invoked.
Enforcement clsCaseNotesManager.DeleteNote
Outcome Deletion blocked with an error message when the caller lacks the required role or the note is system-created.
Source SAIF.Application.Claim.Legal\LegalNet\clsCaseNotesManager.vb

BR-LGL-014 Case note view update access is restricted by security key

Field Value
Statement Only users with the LNNoteView/LNUpdate security keys can view/update notes in the corresponding capacity; users in the admin or case-update groups can update any note.
Trigger IsInNoteView, CanUpdateBillNotes, CanUpdateAnyNote property evaluation.
Enforcement clsCaseNotesManager (IsInNoteView, CanUpdateBillNotes, CanUpdateAnyNote)
Outcome Note CanUpdate/CanUpdateText flags are set accordingly when notes are loaded/created.
Source SAIF.Application.Claim.Legal\LegalNet\clsCaseNotesManager.vb

BR-LGL-015 A hearing location cannot be deleted while in use

Field Value
Statement A hearing location can only be deleted if it is not currently in use (per business-layer check).
Trigger DeleteLocation() invoked.
Enforcement clsHearingLocationManager.DeleteLocation (delegates the "in-use" check to clsHearingLocation.CanDeleteLocation, a referenced-library method)
Outcome Deletion is blocked with "Error: this location is in use and cannot be deleted." when the check fails.
Source SAIF.Application.Claim.Legal\clsHearingLocationManager.vb

Field Value
Statement A legal person can only be deleted if not currently in use (per business-layer check).
Trigger DeletePerson() invoked.
Enforcement clsLegalPersonManager.DeletePerson (delegates to clsLegalPerson.CanDeleteLegalPerson, referenced library)
Outcome Deletion blocked with "Error: This person is in use, and cannot be deleted." when the check fails.
Source SAIF.Application.Claim.Legal\clsLegalPersonManager.vb

BR-LGL-017 A schedule row can only be deleted while Cancelled

Field Value
Statement A schedule row can only be deleted while in Cancelled status.
Trigger DeleteSchedule() invoked.
Enforcement clsScheduleManager.DeleteSchedule
Outcome Deletion blocked with "Error: Cancel the event and save, before deleting a schedule row" otherwise.
Source SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb

Inherited business rules

Rules in this section originate from clsBusinessBase (SAIF.Framework.Core), the framework base class every concrete manager inherits transitively (via AppManagerBase/ClaimAppManager), and from clsLegalData's direct clsBusinessBase inheritance. They are enforced by inherited framework behavior, not by code in this library. No direct evidence in this library's own source shows these inherited members being invoked; managers instead rely on LegalManagerBase's own parallel lifecycle contract*.

INH-001 Business rules are registered and enforced through clsRulesManager

Field Value
Statement A clsBusinessBase-derived object uses Rules.CheckRules("RuleName") to invoke registered rule handlers, which consuming classes register as delegates typically marked with a RuleData attribute providing the broken-rule message and rule type.†
Trigger A rule-evaluation call site (e.g., during Save()/edit-session processing) invokes Rules.CheckRules("RuleName") on the inherited Rules (clsRulesManager) property.†
Enforcement clsBusinessBase.Rules (clsRulesManager), inherited by every concrete manager and by clsLegalData.
Outcome Registered rule handlers run and broken-rule state is recorded on the owning object.†
Origin SAIF.Framework.Core — clsBusinessBase
Source Retrieved from indexed documentation via Legends CLI

INH-002 Broken rules are tracked when a registered rule fails

Field Value
Statement If a registered rule fails, the object records broken-rule state in its rules/broken-rule collection.†
Trigger A registered rule handler returns a failed/broken result during rule evaluation.†
Enforcement clsBusinessBase.Rules (clsRulesManager) broken-rule tracking, inherited by every concrete manager and by clsLegalData.
Outcome The broken-rule collection is updated to reflect the failed rule.†
Origin SAIF.Framework.Core — clsBusinessBase
Source Retrieved from indexed documentation via Legends CLI

INH-003 Broken rules are surfaced to data-bound UI via IDataErrorInfo

Field Value
Statement clsBusinessBase implements IDataErrorInfo, so broken rules recorded by the rules engine can be surfaced to data-bound UI controls via the inherited Error/Item members.†
Trigger A UI data-binding consumer reads the inherited Error property or Item(columnName) indexer on a manager instance or clsLegalData.†
Enforcement clsBusinessBase.Error / clsBusinessBase.Item(columnName) (IDataErrorInfo), inherited by every concrete manager and by clsLegalData.
Outcome The broken-rule message(s) for the object (or column) are returned to the caller/UI.†
Origin SAIF.Framework.Core — clsBusinessBase
Source Retrieved from indexed documentation via Legends CLI

Stored procedure business rules

The following rules are extracted from retrieved Oracle source for WCIS_DBA.Pk80001_Legalnet and apply to this library's package calls.

Rule ID Procedure
BR-LGL-018 insertLetterRequest
BR-LGL-019 get_atty_mngr_email
BR-LGL-020 getHeader inferred mapping
BR-LGL-021 getHeader inferred mapping
BR-LGL-022 getHeader inferred mapping

BR-LGL-018 Letter requests use a database sequence and server timestamp

Field Value
Statement Each insertLetterRequest call allocates LETTER_REQUEST_SEQ.NEXTVAL and stamps CREATE_DATE = SYSDATE when it writes the new LETTER_REQUEST row.
Trigger LegalManagerBase.insertLetterRequest is executed from the DEF-letter or recon-request flows.
Enforcement pk80001_legalnet.insertLetterRequest
Outcome The caller receives the generated request sequence in requestNum; the database row is created with Oracle server timestamping.
SQL SQL-001
Stored procedure cross-reference insertLetterRequest
Source Oracle retrieval C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json; SAIF.Application.Claim.Legal\LegalManagerBase.vb

BR-LGL-019 Manager email lookup falls back from assigned attorney to outside counsel

Field Value
Statement get_atty_mngr_email first resolves the manager email for the attorney assigned to the case's most recent hearing; if no row is found, it retries with the OUTSIDECNCL profile when an outside-firm assignment exists, and otherwise returns NONE.
Trigger clsScheduleManager.SendDEFEmail calls getAttyMngrEmail(CurrentCaseID).
Enforcement pk80001_legalnet.get_atty_mngr_email
Outcome The DEF reminder flow receives a resolved manager email address or the sentinel value NONE.
SQL SQL-020
Stored procedure cross-reference get_atty_mngr_email
Source Oracle retrieval C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json; SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb

BR-LGL-020 Header case number prefers WCB then DCBS OWCP OALJ and BRB

Field Value
Statement Header case-number selection prefers WCB_NUM, then DCBS_NUM, OWCP_NUM, OALJ_NUM, and finally BRB_NUM when earlier identifiers are null*
Trigger clsLegalData.New invokes pk80001_legalNet.getHeader; the retrieved package exposes the matching identifier-selection logic through get_case_num*
Enforcement pk80001_legalnet.get_case_num
Outcome The header display uses the first populated identifier in that precedence order*
SQL SQL-012
Stored procedure cross-reference getHeader inferred mapping
Source Oracle retrieval C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json; SAIF.Application.Claim.Legal\clsLegalData.vb

BR-LGL-021 Header attorney display prefers appeal attorney then hearing attorney then outside counsel

Field Value
Statement Header attorney display prefers the latest appeal attorney, then the most recent hearing's assigned attorney, and finally the outside counsel firm name*
Trigger clsLegalData.New invokes pk80001_legalNet.getHeader; the retrieved package exposes the matching attorney-selection logic through get_asgn_atty*
Enforcement pk80001_legalnet.get_asgn_atty
Outcome The header attorney value is populated from the first available source in that order*
SQL SQL-012
Stored procedure cross-reference getHeader inferred mapping
Source Oracle retrieval C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json; SAIF.Application.Claim.Legal\clsLegalData.vb

BR-LGL-022 Header hearing date uses the latest hearing and consolidation context

Field Value
Statement Header hearing-date selection uses the latest hearing schedule and can resolve through consolidated-case hearing associations when present*
Trigger clsLegalData.New invokes pk80001_legalNet.getHeader; the retrieved package exposes the matching hearing-date logic through get_hearing_date*
Enforcement pk80001_legalnet.get_hearing_date
Outcome The header hearing-date value is set from the latest applicable hearing date for the case or its consolidated primary-case context*
SQL SQL-012
Stored procedure cross-reference getHeader inferred mapping
Source Oracle retrieval C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json; SAIF.Application.Claim.Legal\clsLegalData.vb

Notes

  • BR-LGL-006 through BR-LGL-012 and BR-LGL-015/BR-LGL-016 ultimately delegate their underlying enforcement (batch-assignment algorithm, Guidewire matter/activity payload construction, consolidation validation, location/person in-use checks) to business-layer objects in SAIF.Business.Claim.Legal; the statements above describe only the Application-layer trigger/outcome contract observed in this library, not the business-layer implementation.
  • Three application-layer SQL statements (SQL-019, SQL-020, SQL-024) build query text via runtime string concatenation instead of Oracle bind variables; this is a data-access implementation detail, not a separate business rule, and is tracked in Dependencies.
  • Mark inferred statements with * and unknown statements with **. Do not use bold inline confidence labels.
  • Statements marked with † were retrieved from dependency library documentation via the Legends CLI RAG service.

Note: Statements marked with † are derived from dependency library documentation via the Legends CLI. Statements marked with * were inferred from code structure or contextual evidence.

Sources

  • Oracle source retrieval: C:\Users\chrfre\AppData\Local\Temp\oracle-sources\pk80001_legalnet.json
  • SAIF.Application.Claim.Legal\LegalManagerBase.vb
  • SAIF.Application.Claim.Legal\clsLegalData.vb
  • SAIF.Application.Claim.Legal\clsHearingLocationManager.vb
  • SAIF.Application.Claim.Legal\clsLegalPersonManager.vb
  • SAIF.Application.Claim.Legal\LegalNet\clsScheduleManager.vb
  • SAIF.Application.Claim.Legal\LegalNet\clsAssignmentManager.vb
  • SAIF.Application.Claim.Legal\LegalNet\clsRequestManager.vb
  • SAIF.Application.Claim.Legal\LegalNet\clsCaseNotesManager.vb