SAIF.Business.Claim.Legal architecture¶
SAIF.Business.Claim.Legal is the component-tier business/domain class library for legal-case administration in the SAIF Business Object Framework (BOF) stack, sitting below the LegalMaintenance ASP.NET WebForms presentation layer and above the Oracle database, and consuming sibling business/view libraries for claim and policy data. It comprises 85 public classes, 52 nested Friend Class Criteria types, 1 public module (mdlCodeTables), and 5 public enums across three functional folders — LegalNet\ (legal-case lifecycle), TableMaint\ (administrative reference data), and Print\ (letter generation) — plus root-level cached code tables.
Responsibilities¶
- Legal-case intake, scheduling/hearings, appeals and brief deadlines, outcomes, notes, costs, consolidation, file creation and acknowledgement (
LegalNet\:clsLegalCase,clsLegalSchedule,clsAppeal,clsCaseOutcome,clsOutcomeIssue,clsOutcomeStaff,clsCaseNote,clsCaseCost,clsCaseSearchCriteria,clsCaseSearchResult,clsLegalCaseEvaluation,clsLegalFileLocation,clsConsolidations,clsAcknowledge,clsMailDate,clsCreateFile,clsFindCase,clsOtherLegalParty). - Attorney assignment processing and result tracking, including Outlook/Exchange calendar synchronization (
clsAssignmentProcess,clsAssignmentResult,clsAttorneyMessages). - CRUD over administrative reference data that drives attorney availability and assignment: attorney profiles/schedules/conflicts, policy and worker assignments, hearing locations, other firms, legal persons, out-of-town rotation (
TableMaint\:clsAttorneyProfile,clsAttorneySchedule,clsAttorneyConflict,clsAttorneyPolicyAssignment,clsAttorneyWorkerAssignment,clsHearingLocation/clsHearingLocationInfo,clsOtherFirm,clsLegalPerson,clsLegalPersonType,clsOutOFTownRotationAssgn). - Letter request retrieval, recipient resolution, and XML payload generation for the Xpressions document platform (
Print\:clsLetterRequest,clsLetterRequestCollection). - Cached code-table lookups shared across the library (
mdlCodeTables, 31 documented code-table classes inheritingCTB.CodeTable(Of T)orCTB.ExtendedCodeMap).
Component boundaries¶
LegalNet\(root namespace): transactional legal-case lifecycle business objects and their nestedFriend Class Criteriatypes.TableMaint\(root namespace): administrative/reference-data business objects supporting attorney availability and assignment.Print\(root namespace): letter-request generation and Xpressions XML payload construction.SAIF.Business.Claim.Legal.CodeTablesnamespace: the only explicitNamespace CodeTablesdeclaration (mdlCodeTables.vb), housing cached code-table lookups.- Database boundary: Oracle only, reached through Criteria-supplied
CreateSQL/RetrieveSQL/InsertSQL/UpdateSQL/DeleteSQLstring properties (stored-procedure calls against packagespk80001_legalnet,pk80005_assignment,pk82289_legalnet_letters) and supplemented by application-layer inline SQL viaSqlHelper.ScalarQuery/ResultSetQuery/NonQuery. - External-service boundary: Microsoft Exchange/Outlook calendars via
SAIF.Services.Exchange(clsAssignmentProcess,clsLegalSchedule,clsAttorneySchedule), email notification via the BOF mail framework, and the file system for Xpressions output documents (xpressionsoutputdocumentspath). - No public interfaces are introduced by this library; all abstractions (
IBusinessCriteria,clsRetrieveOnlyBusinessCriteria) come fromSAIF.BOF.Framework.*. - No authorization boundary is implemented here; access control is applied upstream in the web application / framework*.
Interaction model¶
- Every business entity follows the SAIF BOF business-object contract: public read/write properties backed by a nested
Friend Class Criteria(implementingIBusinessCriteriadirectly — 42 classes — or inheritingclsRetrieveOnlyBusinessCriteria— 17 classes, 59 total), plusCreate()/GetXxx()shared factory methods,Save(), and overriddenAddBusinessRules(),Before*/After*data hooks. - Persistence is predominantly Oracle stored-procedure calls resolved by the Criteria SQL properties; unsupported CRUD operations throw
New ApplicationException(clsConstants.Messages.InvalidSQLProperty). - Validation is declared through the BOF rules engine (
<RuleData>attributes registered inAddBusinessRules()), so it is enforced inside the business layer regardless of caller. - The library consumes
SAIF.Business.Claim(clsClaimData.GetData) andSAIF.Business.View.Policy(clsPolicyData.GetPolicyData) for claim and policy data respectively, and declares (but does not use in source) aProjectReferencetoSAIF.Services.Appworx*. - Attorney assignment (
clsAssignmentProcess) and schedule/conflict checking (clsLegalSchedule,clsAttorneySchedule) call out to Exchange/Outlook viaSAIF.Services.Exchangeto synchronize calendar entries alongside Oracle persistence. - Letter generation (
clsLetterRequest) resolves recipients, builds an XML payload, and writes it to a configured output path for downstream pickup by the Xpressions document platform.
Architecture diagram¶
The following diagram shows high-level component interactions for SAIF.Business.Claim.Legal.
flowchart TD
A[LegalMaintenance WebForms] --> B[SAIF.Business.Claim.Legal]
B --> C[LegalNet<br>legal case lifecycle]
B --> D[TableMaint<br>reference data CRUD]
B --> E[Print<br>letter requests]
B --> F[mdlCodeTables<br>cached code tables]
C --> G[BOF DataPortal / SqlHelper]
D --> G
E --> G
F --> G
G --> H[(Oracle database<br>pk80001_legalnet, pk80005_assignment,<br>pk82289_legalnet_letters)]
C --> I[SAIF.Services.Exchange<br>Outlook/Exchange calendars]
B --> J[SAIF.Business.Claim<br>clsClaimData.GetData]
B --> K[SAIF.Business.View.Policy<br>clsPolicyData.GetPolicyData]
E --> L[Xpressions document platform<br>file system output]
Sequence diagram¶
The following diagram shows the primary attorney assignment batch sequence.
sequenceDiagram
participant Caller
participant AssignmentProcess as clsAssignmentProcess
participant Exchange as SAIF.Services.Exchange
participant DataPortal as BOF DataPortal / SqlHelper
Caller->>AssignmentProcess: run assignment batch
AssignmentProcess->>DataPortal: pk80005_assignment.run_assignment / get_assign_results
DataPortal-->>AssignmentProcess: assignment result rows
AssignmentProcess->>Exchange: getOutlookFields / calendar_review
Exchange-->>AssignmentProcess: calendar conflict/availability data
AssignmentProcess->>DataPortal: persist assignment results
DataPortal-->>AssignmentProcess: RowsAffected
AssignmentProcess-->>Caller: assignment results + notifications
Design constraints¶
- Oracle-only persistence; SQL properties use
:BindVariablesyntax,SYSDATE,NVL/DECODE, and<SEQ>.NEXTVAL FROM DUAL/GetNextSeqNumconventions across 22 distinct sequences. - Unsupported CRUD paths on Criteria classes throw
ApplicationException(clsConstants.Messages.InvalidSQLProperty)rather than silently no-op, per the SQL property counts (CreateSQL13/29,RetrieveSQL25/17,InsertSQL25/17,UpdateSQL28/14,DeleteSQL22/20 populated/not-supported). - No authorization enforcement exists in this library; the only security-related import (
SAIF.Framework.Security, 3 files) is used solely for user-identity attribution on notes/audits/Outlook updates, not access decisions*. - Non-production environments redirect mailbox/calendar operations via
GetApplicationEnvironment() <> ApplicationEnvironment.Prodchecks inclsConsolidations,clsLegalSchedule, andclsAttorneySchedule. clsProperties.XMLPath(Exchange configuration XML path), consumed byclsAssignmentProcess, is defined outside this repository and its configuration source could not be verified**.- The
SAIF.Services.AppworxProjectReferencehas no code usage found in this library and may be a stale reference retained only for build ordering*. - The database schema, portal/connection identifiers, and Oracle instance targeted at runtime cannot be determined from source**.
Related documentation¶
- Index
- Overview
- Dependencies
- Configuration
- Operations and processes
- Business rules
- Database tables
- SQL catalog
- Procedures
- API reference
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.Claim.Legal\SAIF.Business.Claim.Legal.vbprojSAIF.Business.Claim.Legal/mdlCodeTables.vbSAIF.Business.Claim.Legal/LegalNet/clsLegalCase.vbSAIF.Business.Claim.Legal/LegalNet/clsLegalSchedule.vbSAIF.Business.Claim.Legal/LegalNet/clsAssignmentProcess.vbSAIF.Business.Claim.Legal/LegalNet/clsCaseSearchCriteria.vbSAIF.Business.Claim.Legal/app.configSAIF.Business.Claim.Legal/Web.configSAIF.Business.Claim.Legal/My Project/Settings.Designer.vbLegalMaintenance/Web.config