This view contains identified evidence gaps.
Component cooperation
In this document
Which internal components cooperate, what are their responsibilities, and what passes between them?
This view separates request forwarding, notification processing, and document assembly. Published analyses report selected controller-to-mediator calls, handler-to-context operations, progress queries, and document-block invocation; they do not establish a complete runtime call graph. E0017 E0105 E0008 E0457
Read each relationship as a bounded call or exchange described in the supplied documents. In particular, the web forwarding path stops at the IWS API client: the supplied evidence does not establish its downstream dispatch into the modeled notification handlers. Project references and request declarations are not used to fill that gap. E0105 E0054
The model preserves two distinctions: requesting a save is not proof of atomic persistence and event delivery, and merging document blocks is not proof of successful rendering, storage, or transmission. These are published source analyses, not live verification. E0173 E0457
Diagram
Preparing diagram…
View Mermaid diagram source
flowchart LR
n105936c0b29f9ea68d21["Notification controllers #40;inferred#41;"]
ne2bc2203e4fca5d07ca7["ApiMediator"]
ncfd245c960552af24d7e["IWS API client"]
n567c5597c1bdb2e60ff4["Notification handlers #40;inferred#41;"]
n19a256f408c095f485a4["NotificationAssessment"]
n85e794e44822c37f7d6d["NotificationProgressService"]
n623130922591c0a9bbce["IwsContext"]
n74fbc6f9575624c0042c["MovementDocument"]
n07d66bd8dd95a2eed260["Document blocks #40;inferred#41;"]
n105936c0b29f9ea68d21 -.->|"Notification request objects, including submission and information-retrieval requests. #91;E0017#93; #40;inferred#41;"| ne2bc2203e4fca5d07ca7
ne2bc2203e4fca5d07ca7 -->|"Request object and user or client-credentials access token. #91;E0105#93;"| ncfd245c960552af24d7e
n567c5597c1bdb2e60ff4 -->|"Notification records, reason-for-export changes, and newly constructed assessment and guarantee-collection records. #91;E0008#93;"| n623130922591c0a9bbce
n567c5597c1bdb2e60ff4 -->|"Loaded assessment and a resubmission operation. #91;E0008#93;"| n19a256f408c095f485a4
n567c5597c1bdb2e60ff4 -->|"Notification progress request and calculated progress information. #91;E0008#93;"| n85e794e44822c37f7d6d
n85e794e44822c37f7d6d -->|"Notification identifier sent to the procedure#59; five expected result sets returned for progress calculation. #91;E0008#93;"| n623130922591c0a9bbce
n74fbc6f9575624c0042c -->|"Annex number passed to qualifying blocks#59; blocks populate document fields and annex tables. #91;E0457#93;"| n07d66bd8dd95a2eed260
Elements
Notification controllers
Kind: component Basis: inferred Description: A grouping of the reported notification MVC controllers. They coordinate form processing and navigation and send requests for notification information, edits, sharing, and submission through a mediator. Their visible checks do not establish all downstream authorization or persistence behavior. E0017 Evidence: E0017
ApiMediator
Kind: component Basis: reported Description: The web-side mediator forwards requests to IIwsClient with an access token. It first considers the HTTP user’s token and otherwise obtains a client-credentials token; ordinary requests have a visible unauthenticated-user rejection branch. Its non-generic forwarding overload is unimplemented. E0105 Evidence: E0105
IWS API client
Kind: component Basis: reported Description: IIwsClient is the request-forwarding dependency used by ApiMediator. Web configuration registers it with a request-scoped lifetime, but the supplied evidence does not establish its response handling or downstream dispatch behavior. E0105 E0510 Evidence: E0105 E0510
Notification handlers
Kind: component Basis: inferred Description: A grouping of the reported notification request and event handlers. Selected handlers retrieve and map notification data, request progress information, change the reason for export, resubmit assessments, and create assessment and guarantee-collection records in response to notification creation. E0008 Evidence: E0008
NotificationAssessment
Kind: component Basis: reported Description: The assessment domain implementation exposes lifecycle operations, including the Resubmit operation invoked by the reported handler. Supplied unit-test analysis describes submission, receipt, commencement, and later transitions, but those assertions are not production-conformance evidence. E0008 E0279 Evidence: E0008 E0279
NotificationProgressService
Kind: component Basis: reported Description: Retrieves notification progress through a database procedure, translates five expected result sets, and applies completion rules over notification parties, facilities, waste information, and customs-office selections. The procedure definition and result-set guarantees are not supplied. E0008 Evidence: E0008
IwsContext
Kind: component Basis: reported Description: Provides Entity Framework-backed notification access and persistence infrastructure. Its notification retrieval method checks owner, internal-user, or shared-user access. The shared ContextBase save implementation invokes identifier, relationship-cleanup, and audit hooks before persistence, then dispatches events after the base save returns. E0173 Evidence: E0173
MovementDocument
Kind: component Basis: reported Description: Coordinates document assembly by ordering blocks, invoking their merge operations, and conditionally requesting annex generation with an annex number. Final document saving and production rendering are outside the supplied evidence. E0457 Evidence: E0457
Document blocks
Kind: component Basis: inferred Description: A grouping of the reported specialized merge components, including CarrierBlock, FacilityBlock, and CustomsOfficeBlock. They populate main-document fields and annex structures; annex-bearing implementations deliberately defer some main-document work until annex generation. E0457 Evidence: E0457
Relationships
Submit notification requests
From: Notification controllers To: ApiMediator Relation: calls Basis: inferred Description: The controllers invoke IMediator, including sending SubmitNotification with the posted notification identifier. ApiMediator is the reported web forwarding implementation; attributing these interface calls to it relies on the documented composition rather than a verified runtime trace. E0017 E0105 E0510 Evidence: E0017 E0105 E0510 Information: Notification request objects, including submission and information-retrieval requests. E0017 Mechanism: IMediator asynchronous request invocation with web-side ApiMediator forwarding. E0017 E0105
Forward token-bearing requests
From: ApiMediator To: IWS API client Relation: calls Basis: reported Description: ApiMediator forwards the request and selected access token to IIwsClient. The handling of blank tokens for authenticated users and the client’s response semantics remain unresolved. E0105 Evidence: E0105 Information: Request object and user or client-credentials access token. E0105 Mechanism: IIwsClient delegation after token selection and the applicable unauthenticated-user check. E0105
Load and save notification records
From: Notification handlers To: IwsContext Relation: calls Basis: reported Description: Selected handlers load notification data through the context and request saves after changes. NotificationCreatedEventHandler adds a new assessment and financial-guarantee collection to the context and saves; SetReasonForExportHandler changes the notification’s reason and saves. These examples do not establish one universal transaction boundary. E0008 E0173 Evidence: E0008 E0173 Information: Notification records, reason-for-export changes, and newly constructed assessment and guarantee-collection records. E0008 Mechanism: Context retrieval, record addition, and save operations. E0008
Resubmit an assessment
From: Notification handlers To: NotificationAssessment Relation: calls Basis: reported Description: ResubmitNotificationHandler loads an assessment, invokes Resubmit, requests persistence, and returns true on the reported path. The dependency’s complete transition and failure policy is not established by that handler description. E0008 Evidence: E0008 Information: Loaded assessment and a resubmission operation. E0008 Mechanism: Domain-method invocation followed by a context save. E0008
Request progress information
From: Notification handlers To: NotificationProgressService Relation: calls Basis: reported Description: GetNotificationProgressInfoHandler synchronously invokes GetNotificationProgressInfo and wraps the result in a completed task. Its task-shaped response therefore does not make the underlying progress call asynchronous. E0008 Evidence: E0008 Information: Notification progress request and calculated progress information. E0008 Mechanism: Synchronous service call with a task-wrapped result. E0008
Query progress result sets
From: NotificationProgressService To: IwsContext Relation: exchanges Basis: reported Description: The service uses the context’s database connection to execute the notification progress procedure and translate five expected result sets: notification, producers, facilities, waste codes, and customs offices. It closes the connection in a finally block; complete command and reader disposal is not established. E0008 Evidence: E0008 Information: Notification identifier sent to the procedure; five expected result sets returned for progress calculation. E0008 Mechanism: Raw SQL through the context connection and Entity Framework ObjectContext translation. E0008
Merge blocks and generate annexes
From: MovementDocument To: Document blocks Relation: calls Basis: reported Description: MovementDocument invokes Merge in ordinal order and invokes GenerateAnnex only for annex-capable blocks whose HasAnnex value is true. Carrier, facility, and customs-office blocks divide responsibility between the main merge and annex phase rather than performing two independent complete merges. E0457 Evidence: E0457 Information: Annex number passed to qualifying blocks; blocks populate document fields and annex tables. E0457 Mechanism: Ordered block invocation with conditional annex dispatch. E0457
Gaps
- Forwarding-to-handler bridge: No relationship connects the IWS API client to Notification handlers because the supplied material does not establish that dispatch path. Follow-up requires client implementation, API dispatch code, and effective dependency registrations—not merely project references. E0105 E0054
- Persistence and event timing: Chapter descriptions are inconsistent: the capability chapter says event dispatch occurs before persistence, while the supplied ContextBase analysis places dispatch after the base save returns. The model follows that underlying evidence and retains the chapter discrepancy. Outbox, retry, rollback coordination, and atomic event delivery remain unestablished. C02 E0173
- Assessment scope: Export-assessment tests describe submission into Submitted; the import-assessment implementation analysis describes NotificationReceived to AwaitingPayment, with AwaitingPayment beneath Submitted. These must not be collapsed into a single concrete transition policy. E0279 E0508
- Progress contract: The consumer expects five result sets, but their database schemas and guaranteed availability are unknown. Inspect the procedure definition and failure-path tests before treating this exchange as a stable contract. E0008
- Document assembly: Factory selection, complete block inventory, ordinal collisions, template validity, and final storage or transmission are unresolved. Facility annex generation also mutates its internal list and requires exactly one actual site, so repeated invocation cannot be assumed safe. E0457
- Controls and runtime composition: Controller checks, request annotations, and selected context access checks do not establish end-to-end authorization for every modeled request. Effective registrations, callers, and negative integration tests are needed to resolve coverage and deployment boundaries. E0017 E0054 E0173
Recovery limitations
- The view includes explicitly marked inference.
Sources
- C02 — SHA256
5f0242dead31d39b1254a75032bb6e91eb76df06330b351c7542819e8ed170b4 - E0008 — SHA256
090f3006325dff37b2efc4e57bd7f71899a754f0f12a367d7231326c45846ad2 - E0017 — SHA256
d085853b1955cb12eb4ab9e6d7193b1ecca10fb74c074a1b98277f70d3bc8e36 - E0054 — SHA256
cf3ccd21dd34a999412e6942b02fe8627a71799c492186cbd7aea21eb1473159 - E0105 — SHA256
12b62da8b7e9a99fadf1119260cb9fac7f4c9573127847ceed2eda7b4fd93cbb - E0173 — SHA256
e52583c3a417dd5189ef0f3b9aeb1c84b0cfa29b659fa0f71d269f70f65f1630 - E0279 — SHA256
50c25a25ef0bf7c0c7cb77e8f6667f868754ece4a34ac1f6e7083a220f3e7f5a - E0457 — SHA256
98f2f7867c866205f57b8712e268ff3ff5704e1533ff236617e4e4717c0a52aa - E0508 — SHA256
159c8fcca453ac20608d565a3dceaa2d35a3c78b67f16c621a090393e2496cd2 - E0510 — SHA256
2664b03966f4bb1abf42bd2eda4e9ceba87b6c6bbc8a90acbeadf144ba34d0af
Contains public sector information licensed under the Open Government Licence v3.0. Original public repository. This independent Harten analysis was not commissioned, approved or endorsed by DEFRA or the Environment Agency.
Analysed source-archive hash is recorded; its exact upstream Git commit has not been established. The generated material does not establish complete requirements, operational security or functional equivalence.