Skip to content

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 inheriting CTB.CodeTable(Of T) or CTB.ExtendedCodeMap).

Component boundaries

  • LegalNet\ (root namespace): transactional legal-case lifecycle business objects and their nested Friend Class Criteria types.
  • 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.CodeTables namespace: the only explicit Namespace CodeTables declaration (mdlCodeTables.vb), housing cached code-table lookups.
  • Database boundary: Oracle only, reached through Criteria-supplied CreateSQL/RetrieveSQL/InsertSQL/UpdateSQL/DeleteSQL string properties (stored-procedure calls against packages pk80001_legalnet, pk80005_assignment, pk82289_legalnet_letters) and supplemented by application-layer inline SQL via SqlHelper.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 from SAIF.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 (implementing IBusinessCriteria directly — 42 classes — or inheriting clsRetrieveOnlyBusinessCriteria — 17 classes, 59 total), plus Create()/GetXxx() shared factory methods, Save(), and overridden AddBusinessRules(), 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 in AddBusinessRules()), so it is enforced inside the business layer regardless of caller.
  • The library consumes SAIF.Business.Claim (clsClaimData.GetData) and SAIF.Business.View.Policy (clsPolicyData.GetPolicyData) for claim and policy data respectively, and declares (but does not use in source) a ProjectReference to SAIF.Services.Appworx*.
  • Attorney assignment (clsAssignmentProcess) and schedule/conflict checking (clsLegalSchedule, clsAttorneySchedule) call out to Exchange/Outlook via SAIF.Services.Exchange to 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 :BindVariable syntax, SYSDATE, NVL/DECODE, and <SEQ>.NEXTVAL FROM DUAL/GetNextSeqNum conventions 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 (CreateSQL 13/29, RetrieveSQL 25/17, InsertSQL 25/17, UpdateSQL 28/14, DeleteSQL 22/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.Prod checks in clsConsolidations, clsLegalSchedule, and clsAttorneySchedule.
  • clsProperties.XMLPath (Exchange configuration XML path), consumed by clsAssignmentProcess, is defined outside this repository and its configuration source could not be verified**.
  • The SAIF.Services.Appworx ProjectReference has 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**.

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.vbproj
  • SAIF.Business.Claim.Legal/mdlCodeTables.vb
  • SAIF.Business.Claim.Legal/LegalNet/clsLegalCase.vb
  • SAIF.Business.Claim.Legal/LegalNet/clsLegalSchedule.vb
  • SAIF.Business.Claim.Legal/LegalNet/clsAssignmentProcess.vb
  • SAIF.Business.Claim.Legal/LegalNet/clsCaseSearchCriteria.vb
  • SAIF.Business.Claim.Legal/app.config
  • SAIF.Business.Claim.Legal/Web.config
  • SAIF.Business.Claim.Legal/My Project/Settings.Designer.vb
  • LegalMaintenance/Web.config