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
imagingapiurlis maintained is unknown.** - The scheduler's argument values and frequency are unknown.**
- Whether the placeholder payload is intentional is unknown.**
Related documentation¶
| 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.csProcessOB3PRetention/Services/OnBaseService.csProcessOB3PRetention/Services/ImagingApiClient.csProcessOB3PRetention/ArgContainer.csProcessOB3PRetention/Program.csProcessOB3PRetention/App.configProcessOB3PRetention/ProcessOB3PRetention.csproj