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.
Related documentation¶
- Index
- Overview
- Dependencies
- Configuration
- Operations and processes
- Business rules
- Security and authorization
- Data model
- Tech debt
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
- LegalMaintenance web application (LegalMaintenance/*.aspx.vb)
- SAIF.Application
- SAIF.Application.Claim.Legal
- SAIF.Business.Claim
- SAIF.Business.Claim.Legal
- SAIF.Business.View.Policy
- SAIF.Business.View.Provider
- SAIF.Services.Printing
- SAIF.Services.Appworx
- SAIF.Services.Imaging.Import