Skip to content

ProcessOB3PRetention tech debt

The Stage 1 analysis lists observations without severity labels; the severities below are the documentation writer's judgment. No reliance on the framework Flush() method was found in application code, so there is no NotImplementedException risk of that kind.

Findings

ID Severity Component Finding Impact
TD-OB3P-001 HIGH ThirdPartyRetentionProcessor No transaction or compensation across the OnBase call and the Imaging PUT A failure between them leaves a batch archived but unmarked, so it may be resubmitted*
TD-OB3P-002 HIGH JsonHttpClient (inherited) Response parse errors are swallowed, so an unparseable body appears as an empty result† A broken Imaging API response ends in "No claims eligible" with exit code 0, a silent failure
TD-OB3P-003 HIGH OnBaseService Hardcoded placeholder payload (test doc) is sent for every batch Real purpose of the submission is unclear; may be unfinished work*
TD-OB3P-004 MEDIUM OnBaseService WCF client is never closed or aborted Possible connection leak per run
TD-OB3P-005 MEDIUM ThirdPartyRetentionProcessor throw ex; resets the stack trace and duplicates stderr output Harder diagnosis
TD-OB3P-006 MEDIUM ArgContainer No range validation on Day, Month, Year Invalid dates reach the Imaging API
TD-OB3P-007 MEDIUM Packages Resolved: the six SAIF framework packages are declared as stable versions in ProcessOB3PRetention.csproj, and the stale packages.config that still listed prerelease versions was removed None remaining
TD-OB3P-008 LOW App.config Resolved: the unused ProcessOB3PRetention.ProcessBatchSize setting was removed from App.config; the batch size comes from the Environment API None remaining
TD-OB3P-009 LOW Packages Resolved: RestSharp is declared once, at 106.12.0, in ProcessOB3PRetention.csproj; the removal of packages.config also removed its earlier 105.2.3 pin None remaining
TD-OB3P-010 LOW Packages SAIF.HashUtil and SAIF.Framework.Data.NHibernate referenced but unused Unneeded dependencies
TD-OB3P-011 LOW ImagingApiClient Inconsistent leading slash in API paths Fragile URL construction
TD-OB3P-012 LOW ImagingApiClient Audit user ProcessOB3PRetention is hardcoded No per-run attribution
TD-OB3P-013 LOW Program Console.ReadLine() after an argument failure may block an unattended run** Possible hung job
TD-OB3P-014 LOW ThirdPartyRetentionProcessor Unused using SAIF.Common.Extensions and abstract TApp generic Minor cleanliness
TD-OB3P-015 LOW Platform .NET Framework 4.8 with no migration plan in source Long-term support risk
TD-OB3P-016 LOW OnBaseService No client credentials configured for the SOAP transport* Authentication method unclear

Open questions

  • Whether OnBase deletes documents after a submission is unknown.**
  • Where imagingapiurl is maintained is unknown.**
  • The scheduler's argument values and frequency are unknown.**
  • Whether the placeholder payload is intentional is unknown.**
Documentation Description
Index Documentation entry point
Overview Purpose and capabilities
Architecture Components and composition root
Run lifecycle Execution flow and exit codes
Arguments Argument contract
Configuration Settings and environment variables
Dependencies Packages and API dependencies
Operations and processes Operation catalog
Business rules Rules enforced during processing
Operational runbook Run and recovery procedures

Note: Statements marked with † are derived from dependency library documentation via the Legends CLI. Statements marked with * were inferred from code structure or contextual evidence. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • ProcessOB3PRetention/ThirdPartyRetentionProcessor.cs
  • ProcessOB3PRetention/Services/OnBaseService.cs
  • ProcessOB3PRetention/Services/ImagingApiClient.cs
  • ProcessOB3PRetention/ArgContainer.cs
  • ProcessOB3PRetention/Program.cs
  • ProcessOB3PRetention/App.config
  • ProcessOB3PRetention/ProcessOB3PRetention.csproj