Skip to content

Application architecture

LegalMaintenance follows a layered legacy WebForms + BOF (Business Object Framework) architecture, in which menu-driven UI screens drive cls*Manager objects that flow through a template-method lifecycle down to shared business/domain libraries and external service gateways.

Layer diagram

The following diagram shows the layered composition of LegalMaintenance from the WebForms UI down to shared business/service libraries and external systems.

flowchart TD
    UI["LegalMaintenance WebForms<br>(frmAttorneyProfile, frmAttorneyAssignment,<br>frmLegalPerson, frmOtherFirms,<br>frmHearingLocation, frmRotation,<br>frmPrintPreview, DataHelper.aspx)"]
    APPLEGAL["SAIF.Application.Claim.Legal<br>(LegalManagerBase, attorney/legal-person/<br>hearing-location managers, LegalNet managers)"]
    APPCLAIM["SAIF.Application.Claim<br>(ClaimAppManager, ClaimSecurity)"]
    APPBASE["SAIF.Application<br>(AppManagerBase, UserAccess, data portals)"]
    BIZLEGAL["SAIF.Business.Claim.Legal<br>(legal case/schedule/appeal/cost/notes)"]
    BIZCLAIM["SAIF.Business.Claim<br>(benefit/award/PPD/transfer)"]
    BIZTASKS["SAIF.Business.Tasks /<br>SAIF.Business.Tasks.Claim"]
    BIZPOLICY["SAIF.Business.Policy /<br>SAIF.Business.View.Policy"]
    BIZPROVIDER["SAIF.Business.View.Provider"]
    BIZUTIL["SAIF.Business.Utilities"]
    SVCPRINT["SAIF.Services.Printing"]
    SVCIMG["SAIF.Services.Imaging.Import"]
    SVCAPPWORX["SAIF.Services.Appworx"]
    AD[("Active Directory")]
    ORA[("Oracle database")]
    SQLSVR[("SQL Server / BDS")]
    EWS[("Exchange Web Services")]
    XP[("xPression / MSMQ / SSRS")]
    APPWORXQ[("Appworx job queue")]

    UI --> APPLEGAL
    APPLEGAL --> APPCLAIM
    APPCLAIM --> APPBASE
    APPLEGAL --> BIZLEGAL
    BIZLEGAL --> BIZCLAIM
    BIZLEGAL --> BIZPOLICY
    APPLEGAL --> BIZTASKS
    APPCLAIM --> BIZTASKS
    APPLEGAL --> BIZPROVIDER
    BIZPOLICY --> BIZUTIL
    UI --> SVCPRINT
    APPLEGAL --> SVCAPPWORX
    SVCPRINT --> SVCIMG
    APPBASE --> AD
    APPBASE --> ORA
    BIZPOLICY --> SQLSVR
    BIZPROVIDER --> SQLSVR
    BIZLEGAL --> EWS
    SVCPRINT --> XP
    SVCAPPWORX --> APPWORXQ

Layer descriptions

Layer Libraries Responsibility
UI/front-end LegalMaintenance (frmAttorneyProfile, frmAttorneyAssignment, frmLegalPerson, frmOtherFirms, frmHearingLocation, frmRotation, frmPrintPreview, DataHelper.aspx, SessionPing.aspx) Menu-driven WebForms screens, shared master page, and common page ancestor (AppViewPageBase/clsLegalMaintenanceAncestor); each screen instantiates and drives one or more cls*Manager objects
Application SAIF.Application.Claim.Legal, SAIF.Application.Claim, SAIF.Application Legal-domain managers (attorney tables, legal person, hearing locations, profile maintenance, 17 LegalNet managers), claim context/security, and base manager lifecycle/AD access cache/data-portal provisioning
Business/domain SAIF.Business.Claim.Legal, SAIF.Business.Claim, SAIF.Business.Tasks, SAIF.Business.Tasks.Claim, SAIF.Business.Policy, SAIF.Business.View.Policy, SAIF.Business.View.Provider, SAIF.Business.Utilities Classic BOF business objects with nested Criteria classes and mostly Oracle-only data access; task lifecycle invoked as an assignment side effect; policy/provider lookups; shared formatting helpers
Service/gateway SAIF.Services.Printing, SAIF.Services.Imaging.Import, SAIF.Services.Appworx xPression SOAP/MSMQ distribution and SSRS rendering; imaging DTO contract consumed by printing; Appworx batch-job submission façade

Key patterns

  • Template-method manager lifecycle: Initialize → OnCreateDataLayer → OnCheckSecurity → OnRetrieve/OnWrite.
  • BOF Criteria-driven data portals, primarily Oracle, with SQL Server/BDS used for select policy/provider paths.
  • AD-group-based authorization checks performed in the application layer rather than the UI.
  • Menu-driven navigation with no screen-level deep authorization (no deep-linking).
  • Service gateways for print/imaging/batch invoked as terminal steps of business workflows.

Integration points

Integration Type Direction Libraries involved
Active Directory group membership (LNView, LNAdmin, LNCaseUpdate, LNConflict, LNExposure, etc.) Directory service outbound SAIF.Application, SAIF.Application.Claim.Legal
Oracle database (primary store) DB outbound SAIF.Application, SAIF.Business.Claim.Legal, SAIF.Business.Claim
SQL Server / BDS (policy/provider secondary store) DB outbound SAIF.Business.Policy, SAIF.Business.View.Provider
Exchange Web Services (attorney calendar sync) API outbound SAIF.Business.Claim.Legal
xPression SOAP service and MSMQ (document distribution) API/Message queue outbound SAIF.Services.Printing
SSRS report rendering API outbound SAIF.Services.Printing
Appworx batch scheduler DB stored procedure outbound SAIF.Services.Appworx
Claim imaging/API client (ImagingAPI.Client) API outbound SAIF.Application.Claim

Design constraints

  • Authentication is IIS/Windows-integrated (NTLM); the application has no authentication code of its own.
  • Authorization resolves through AD group membership checks evaluated mostly in lower-layer managers rather than at the web tier, so screen-level enforcement is inconsistent.*
  • Screens are menu-driven with no deep-linking, so navigation-level access control depends on menu visibility rather than URL-level checks.
  • Print/document distribution depends on a shared wire-format contract (clsImageImport.ToString()) that all upstream libraries must produce correctly.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

Sources