Skip to content

Example: application dependencies

Doc gen writes docs/application/dependencies.md once per web front end to record every library, package, service call, and cross-application hop the application depends on. Reviewers cross-check it against the project file and Web.config, because a wrong Reference Type value changes how the portal links applications and libraries together.

What reviewers should check

  • Reference Type is exactly one of Project Reference, NuGet Package, or NuGet Package (same-repo). Values like "Internal library", "Shared", or "Assembly reference" are wrong even when the surrounding description is accurate.
  • Internal dependencies link to the referenced library's overview.md page under ../libraries/; an internal project with no documentation set appears as plain text instead of a broken link.
  • Sections appear in template order — Internal, External, Transitive, API, External web application navigations, Cross-application integrations, Dependency risks and notes, Related documentation, Sources — and conditional sections are omitted entirely rather than left empty or filled with "None".
  • Every dependency table ends with a Usage column that says how the dependency is actually used in this application, not what the package does in general.
  • Internal and external tables carry a Consuming libraries column naming the application libraries that actually reference the dependency, so a package used by only one screen is not attributed to the whole application.
  • Transitive rows exclude BCL, System.*, and Microsoft.Extensions.* packages, name the source framework by its canonical dotted library name rather than a folder slug, and carry †.
  • API dependency rows state a direction of inbound or outbound and name the library or screen the call is made from, and external navigation rows name the triggering user action and the query string parameters passed.
  • The External dependencies table lists concrete versions matching the project or packages file, and ## Sources closes the page.

Example

The document below is a complete, correct dependencies.md for a fictional web front end.

View rendered example — the same document as a real page, so you can compare rendering as well as source.

---
title: Application dependencies
summary: Internal libraries, external packages, APIs, external web apps, and cross-application integrations.
status: draft
owner: Claims Systems Team
last_reviewed: 2026-08-14
---

# Application dependencies

`SAIF.Claims.Intake` is an ASP.NET Web Forms application on .NET Framework 4.8
whose dependency surface splits cleanly in three. Six internal libraries carry
the intake capabilities themselves, four of which live in this repository and
two of which arrive as NuGet packages built elsewhere in the SAIF estate. The
external surface is small and old: Infragistics for the grid and date controls
used on every screen, log4net for logging, and the .NET Framework web service
stack. The application holds no direct database connection — all claim and
claimant data is read and written through the claims web service — so a
schema change reaches this application only through a service contract change.

## Internal dependencies

| Dependency | Reference Type | Consuming libraries | Usage |
| --- | --- | --- | --- |
| [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md) | Project Reference | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Builds search criteria from the Claim Search screen, calls the claims web service, and applies the 250-row result cap before binding the grid. |
| [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md) | Project Reference | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Assembles a first report of injury from the New Claim screen and submits it to the claims web service. |
| [SAIF.Claims.Intake.Claimants](../libraries/saif-claims-intake-claimants/overview.md) | Project Reference | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Reads and updates claimant name, address, and employment records shared across claims. |
| [SAIF.Claims.Intake.Triage](../libraries/saif-claims-intake-triage/overview.md) | Project Reference | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Evaluates injury type, severity, and employer service team to select the destination adjuster queue. |
| [SAIF.Claims.Intake.ServiceProxy](../libraries/saif-claims-intake-serviceproxy/overview.md) | NuGet Package (same-repo) | [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md), [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md), [SAIF.Claims.Intake.Claimants](../libraries/saif-claims-intake-claimants/overview.md) | Wraps the generated claims web service proxy and applies Windows credentials, the 90-second timeout, and retry handling. |
| [SAIF.Framework.Validation](../libraries/saif-framework-validation/overview.md) | NuGet Package | [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md), [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md), [SAIF.Claims.Intake.Claimants](../libraries/saif-claims-intake-claimants/overview.md) | Validates claim numbers, policy numbers, date-of-injury ranges, and required-field combinations before any service call is made. |
| SAIF.Claims.Intake.Web.Controls | Project Reference | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Shared user controls (claim header banner, claimant picker, jurisdiction dropdown) used across the nine intake screens. No documentation set was generated for this project. |

## External dependencies

| Dependency | Version | Consuming libraries | Usage |
| --- | --- | --- | --- |
| Infragistics.Web.UI.GridControls | 20.1.20201.288 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md), [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md) | `WebDataGrid` bound to search results on `ClaimSearch.aspx`, providing sorting, paging, and row selection. |
| Infragistics.Web.UI.EditorControls | 20.1.20201.288 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | `WebDatePicker` and `WebMaskEditor` used for date-of-injury, policy number, and SSN entry on the intake screens. |
| Infragistics.Web.UI.LayoutControls | 20.1.20201.288 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | `WebSplitter` and tab layout on the New Claim screen that separates claimant, employer, and injury panels. |
| log4net | 2.0.15 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md), [SAIF.Claims.Intake.ServiceProxy](../libraries/saif-claims-intake-serviceproxy/overview.md) | Writes unhandled exceptions from `Global.asax.vb` and service call failures and timings to the shared application log. |
| System.Web.Services | 4.0.0.0 | [SAIF.Claims.Intake.ServiceProxy](../libraries/saif-claims-intake-serviceproxy/overview.md) | Hosts the generated ASMX proxy classes for the claims and policy web services. |
| System.Web.Extensions | 4.0.0.0 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | `ScriptManager` and partial-page update support behind the Infragistics controls. |
| System.Runtime.Caching | 4.0.0.0 | [SAIF.Claims.Intake.Triage](../libraries/saif-claims-intake-triage/overview.md) | Caches the adjuster queue and service team lookup lists for 30 minutes to avoid a service call on every triage decision. |
| Newtonsoft.Json | 13.0.3 | [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md) | Serializes the saved-search criteria stored in the user preference cookie. |
| AjaxControlToolkit | 19.1.0 | [SAIF.Claims.Intake](../libraries/saif-claims-intake/overview.md) | Supplies the modal confirmation popup used when an intake specialist abandons an unsaved claim report. |

## Transitive dependencies

Dependencies in this section are inherited from dependency framework libraries. They are not directly referenced by the application but are required at runtime through framework packages.

| Dependency | Source framework | Type | Usage |
| --- | --- | --- | --- |
| SAIF.Framework.Core | `SAIF.Framework.Validation` | Transitive | Supplies `ValidationComponentBase`, framework tracing, and the initialization guard that the validation engine inherits.† |
| SAIF.Framework.Policy.Types | `SAIF.Framework.Validation` | Transitive | Provides the `PolicyPeriod` and `JurisdictionCode` value types the policy number and date-range rules evaluate.† |
| SAIF.Framework.Environment | `SAIF.Framework.Core` | Transitive | Resolves the environment key that selects the claims web service endpoint at application start.† |
| SAIF.Framework.Diagnostics | `SAIF.Framework.Core` | Transitive | Provides the trace listener that framework component trace entries are routed to.† |

## API dependencies

| Endpoint | Method | Called from | Direction | Usage |
| --- | --- | --- | --- | --- |
| /ClaimsService/ClaimSearch.asmx | POST | [SAIF.Claims.Intake.Search](../libraries/saif-claims-intake-search/overview.md) | outbound | Executes the claim search from `ClaimSearch.aspx.vb` and returns up to 250 matching claim summaries. |
| /ClaimsService/ClaimMaintenance.asmx | POST | [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md) | outbound | Submits a first report of injury and returns the assigned claim number. |
| /ClaimsService/ClaimantMaintenance.asmx | POST | [SAIF.Claims.Intake.Claimants](../libraries/saif-claims-intake-claimants/overview.md) | outbound | Reads and updates claimant demographic and employment records. |
| /PolicyService/PolicyLookup.asmx | POST | [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md) | outbound | Verifies that the entered policy number is in force on the date of injury and returns the employer service team. |
| /ClaimsService/TriageQueue.asmx | POST | [SAIF.Claims.Intake.Triage](../libraries/saif-claims-intake-triage/overview.md) | outbound | Assigns a recorded claim to an adjuster queue and returns the queue name for confirmation. |

## External web application navigations

| Target application | URL pattern | Trigger | Parameters | Screens involved |
| --- | --- | --- | --- | --- |
| SAIF.Claims.Adjuster | /Adjuster/ClaimDetail.aspx?claimNo=25-0148392 | Intake specialist clicks the claim number link in a search result row | `claimNo` | [Claim Search](../screens/claim-search.md) |
| SAIF.Policy.Inquiry | /PolicyInquiry/PolicyDetail.aspx?policyNo=WC0034871&asOf=2026-07-22 | Intake specialist clicks "View policy" beside the verified policy number | `policyNo`, `asOf` | [New Claim](../screens/claim-new.md) |
| SAIF.DocumentImaging | /Imaging/Search.aspx?claimNo=25-0148392&source=INTAKE | Supervisor opens the imaged first report from the claim confirmation panel | `claimNo`, `source` | [Claim Confirmation](../screens/claim-confirmation.md) |

## Cross-application integrations

| Integration | Protocol | Data exchanged | Libraries involved | Usage |
| --- | --- | --- | --- | --- |
| Overnight intake extract | SMB file drop | Pipe-delimited file of claims recorded since the previous run | [SAIF.Claims.Intake.Capture](../libraries/saif-claims-intake-capture/overview.md) | Written to the shared extract share each evening and consumed by the state reporting job that files first reports with the Oregon Workers' Compensation Division. |
| Adjuster queue notification | SMTP | Queue name, claim number, and severity indicator | [SAIF.Claims.Intake.Triage](../libraries/saif-claims-intake-triage/overview.md) | Sends a notification to the receiving adjuster team distribution list when a claim is triaged as urgent. |

## Dependency risks and notes
- The Infragistics 20.1 control suite is out of support and is the single
  largest upgrade blocker for this application. Every screen binds at least one
  Infragistics control, so a version change is an application-wide regression
  test, not a per-screen one.
- `log4net` 2.0.15 is the version pinned across the SAIF .NET Framework 4.8
  estate. Upgrading it here alone would produce assembly binding redirect
  conflicts with `SAIF.Framework.Validation`.
- `SAIF.Framework.Validation` is consumed as a NuGet package, so a rule change
  reaches the intake screens only when the package version is bumped in the
  project file and the application is redeployed. The batch consumers of the
  same library can be running a different version.
- `SAIF.Claims.Intake.ServiceProxy` is consumed as a same-repo NuGet package
  rather than a project reference. Building the solution does not rebuild the
  proxy, so a service contract change requires an explicit package rebuild and
  version bump.
- `SAIF.Claims.Intake.Web.Controls` has no documentation set, so the shared user
  controls used on every screen are undocumented. It is a project reference in
  the same repository and should be added to the documentation scope.
- All five service endpoints are ASMX and are called synchronously on the
  request thread with a 90-second timeout. A slow claims service therefore ties
  up ASP.NET worker threads rather than failing fast.
- `AjaxControlToolkit` 19.1.0 is used for a single confirmation popup. Replacing
  it with a plain client-side confirmation would remove a dependency from the
  application entirely.

## Related documentation
- [Application index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Data model](data-model.md)
- [Tech debt](tech-debt.md)

## Sources
- src/SAIF.Claims.Intake/SAIF.Claims.Intake.vbproj
- src/SAIF.Claims.Intake/packages.config
- src/SAIF.Claims.Intake/Web.config
- src/SAIF.Claims.Intake/Global.asax.vb
- src/SAIF.Claims.Intake/Claims/ClaimSearch.aspx.vb
- src/SAIF.Claims.Intake/Claims/ClaimNew.aspx.vb
- src/SAIF.Claims.Intake.ServiceProxy/SAIF.Claims.Intake.ServiceProxy.vbproj
- src/SAIF.Claims.Intake.Triage/TriageRouter.vb