Skip to content

Dependencies

SAIF.PremiumAudit.Batch is a .NET Framework 4.8 console application with a deliberately narrow dependency surface: it runs unattended at 02:00 under Windows Task Scheduler, so anything that prompts, caches per-user state, or requires an interactive desktop is excluded by design. It takes two internal NuGet packages — the SAIF batch framework that supplies the run lifecycle and the shared validation library — plus one same-repo project reference for data access. Externally it depends on the SQL Server client, log4net, and Newtonsoft.Json. It makes no HTTP calls, and all data access is against a single SQL Server database in the dbo schema.

Internal dependencies

Dependency Reference Type Project path Usage
SAIF.Framework.Batch NuGet Package packages/SAIF.Framework.Batch.4.2.1 Supplies clsBatchBase, the Execute lifecycle that drives ValidateCommandLine, PreProcess, RunAppLogic, and finalization, and the File0/File1/File2 stream writers.
SAIF.Framework.Validation NuGet Package packages/SAIF.Framework.Validation.2.6.0 Validates payroll amounts, class code format, and policy effective date ranges for each audit before any premium is recalculated (BR-001, BR-002).
SAIF.PremiumAudit.Batch.DataAccess Project Reference src/SAIF.PremiumAudit.Batch.DataAccess/SAIF.PremiumAudit.Batch.DataAccess.vbproj Wraps dbo.usp_GetPendingAudits and the PremiumTransaction insert, and owns the per-audit SqlTransaction that AuditProcessor commits or rolls back.
SAIF.Framework.Notification NuGet Package packages/SAIF.Framework.Notification.3.1.4 Sends the on-call notification email when the per-audit failure count exceeds ErrorThreshold.
SAIF.PremiumAudit.Batch.Reports Project Reference src/SAIF.PremiumAudit.Batch.Reports/SAIF.PremiumAudit.Batch.Reports.vbproj Formats the File1 success detail and File2 error detail lines. No documentation set was generated for this project.

External dependencies

Dependency Version Usage
System.Data.SqlClient 4.8.5 Opens the policy administration connection in PreProcess and executes dbo.usp_GetPendingAudits and the PremiumTransaction insert through the data access layer.
log4net 2.0.15 Writes run start and end entries, checkpoint lines, and unhandled exceptions to the shared batch log alongside the File0 stream.
Newtonsoft.Json 13.0.3 Deserializes the ValidationResult payloads returned by SAIF.Framework.Validation when writing rejection detail to the File2 report.
System.Configuration 4.0.0.0 Reads the environment connection strings, ErrorThreshold, log directory, and NotificationRecipients values from App.config.
System.Net.Mail 4.0.0.0 Provides the SMTP client that SAIF.Framework.Notification uses to deliver the threshold-exceeded email.
System.Transactions 4.0.0.0 Supplies the transaction scope semantics the data access layer relies on for the per-audit commit and rollback.

Transitive dependencies

Dependencies in this section are inherited from dependency framework libraries — including SAIF batch framework components such as clsBatchBase. They are not directly referenced by this application but are required at runtime through framework packages.

Dependency Source framework Type Usage
clsBatchBase SAIF.Framework.Batch Transitive Batch lifecycle framework: owns Execute, the return code enumeration, and the File0/File1/File2 stream contract the job writes through.†
SAIF.Framework.Core SAIF.Framework.Validation Transitive Supplies ValidationComponentBase, framework tracing, and the initialization guard the validation engine inherits.†
SAIF.Framework.Policy.Types SAIF.Framework.Validation Transitive Provides the PolicyPeriod and JurisdictionCode value types used by the effective-date and state-scoped payroll rules.†
SAIF.Framework.Environment SAIF.Framework.Core Transitive Resolves the environment key passed as argument 1 to the connection string and mail profile selected during PreProcess.†
SAIF.Framework.Diagnostics SAIF.Framework.Core Transitive Provides the trace listener that framework component trace entries are routed to during the processing loop.†

Database connections

Database Schema/User Access method Usage
PolicyAdmin dbo ADO.NET SqlConnection via SAIF.PremiumAudit.Batch.DataAccess Reads pending audits through dbo.usp_GetPendingAudits, reads dbo.PolicyAuditDetail and dbo.PayrollClassCode, inserts dbo.PremiumTransaction and dbo.PolicyAuditReject rows, and updates dbo.PolicyAudit.Status inside the per-audit transaction.
PolicyAdmin dbo ADO.NET SqlConnection via SAIF.Framework.Validation Reads dbo.ClassCodeValidation once during PreProcess for the valid class code ranges and payroll limits used by BR-001 and BR-002.

Dependency risks and notes

  • SAIF.Framework.Batch 4.2.1 is consumed as a NuGet package, so a change to the lifecycle or the return code enumeration reaches this job only when the package version is bumped and the job is redeployed. The return codes the operational runbook documents come from this package, not from Program.vb.
  • SAIF.Framework.Validation 2.6.0 is shared with SAIF.Claims.Intake. The two applications can run different versions, so a rule change must be verified in both before the package is rolled forward across the estate.
  • log4net 2.0.15 is the version pinned across the SAIF .NET Framework 4.8 estate. Upgrading it for this job alone would produce assembly binding redirect conflicts with the framework packages.
  • System.Data.SqlClient 4.8.5 is in maintenance only; new SQL Server client features ship in Microsoft.Data.SqlClient. A move would touch every command in the data access project and is coupled to the .NET Framework 4.8 target.
  • The job holds a single connection open for the whole run rather than opening one per audit. A network interruption after the loop starts fails the remaining audits, which is why the restart checkpoint written to File0 every 100 audits matters operationally.
  • SAIF.PremiumAudit.Batch.Reports has no documentation set, so the exact File1 and File2 line layouts that operations parses are undocumented. It is a project reference in the same repository and should be added to the documentation scope.
  • The job makes no outbound HTTP calls. Adding one would introduce a network timeout path into a loop that currently only has database and file failure modes, and the operational runbook would need a matching failure mode.

Sources

  • src/SAIF.PremiumAudit.Batch/SAIF.PremiumAudit.Batch.vbproj
  • src/SAIF.PremiumAudit.Batch/packages.config
  • src/SAIF.PremiumAudit.Batch/App.config
  • src/SAIF.PremiumAudit.Batch/Program.vb
  • src/SAIF.PremiumAudit.Batch/AuditProcessor.vb
  • src/SAIF.PremiumAudit.Batch.DataAccess/AuditRepository.vb