Table of Contents

Class NotificationDocumentHandler

Namespace
Zedal.Sdk.DocumentHandler
Assembly
Zedal.Sdk.dll

Stateful Handler für die Unternehmens-/Notifier-Seite einer DIWASS-Notifizierung gemäß VO (EU) 2024/1157. Deckt ausschließlich Aktionen ab, die ein Notifier/Arranger anstößt — Behördenaktionen (Acknowledgement, Decision, Signal …) liegen in AuthorityNotificationDocumentHandler.

public class NotificationDocumentHandler : DiwassDocumentHandlerBase
Inheritance
NotificationDocumentHandler
Inherited Members

Constructors

NotificationDocumentHandler(ICompanyDocumentApi, IAuthorityDocumentApi, ICoreApi)

Properties

Notification

Aktueller zewass-Notification-Stand (mit ZEDAL-Ergänzungen). Wird nach jedem Set/Submit/Create/Refresh aktualisiert.

SaveTarget

Zielbereich für SaveToZedal(FileId). Standard: freier Transportpapierbereich (Transportpapiere).

UnansweredRequestInformation

Behördliche Nachforderungen ("Request for Information"), für die der Server noch keine ReplyRequestInformationId zurückgemeldet hat — also alles, was wirklich noch auf eine Antwort durch den Notifier wartet. Im Mehr-CA-Fall (Dispatch- und Empfänger-Behörde können parallel nachfordern) sind hier ggf. mehrere Einträge.

Methods

AppendOperatorLookup(OperatorPullService, IEnumerable<long>)

Schickt einen getOperator-SOAP-Request für die gegebenen Operator-IDs an DIWASS und hängt die rohe SOAP-Antwort als BxA-Block an das aktuelle DocXml an. Aktualisiert anschließend den Handler-Zustand (DocXml, Notification, FollowupIntents, ValidationErrors).

Temporäre Lösung — langfristig soll das der ZEDAL-Server beim Notification-Push selbst machen. Bis dahin liegt der SOAP-Body-Bau im OperatorPullService und der Aufrufer reicht den Service hier rein.

CreateSubmission(SubmissionDocumentType)

Erstellt eine neue Notifizierung (erste Einreichung, kein DocXml erforderlich).

LoadFromZedalByNotificationId(string)

Lädt das ZEDAL-Doc, das zu einer fachlichen DIWASS-NotificationId (z.B. DE0126005589i) gehört. Pro NotificationId existiert genau ein ZEDAL-Doc; sämtliche Lifecycle-Phasen (Submission, Update, Acknowledgement, Decision …) leben als BxA-Blocks darin.

Refresh()

Lädt den aktuellen Dokumentstatus neu von der BXA API, ohne das XML zu verändern. Subklassen rufen den passenden typisierten GetNotification/GetAnnex7/GetMovement-Endpoint auf, pflegen ihre typisierte Property und delegieren die Common-Felder an UpdateCommonState(DiwassOperationResult).

SetFacilityCompletionUnderArticle15(FacilityCompletionUnderArticle15Type)

Reicht die Abschluss-Bescheinigung der Anlage für Verbringungen zu vorab zugelassenen Anlagen ein (Art. 15 i.V.m. Art. 27 Abs. 1 lit. a xii VO (EU) 2024/1157).

SetReplyToRequestInformation(RequestInformationDocumentType)

Reicht die Antwort des Notifiers auf eine behördliche Informationsanforderung ein. Validiert vor dem BxA-Push, dass reply.RequestInformationId gesetzt ist und auf einen Eintrag in UnansweredRequestInformation zeigt — andernfalls würde DIWASS den Push ohnehin ablehnen, der Guard fängt den Fehlerpfad nur früher und mit klarer Meldung ab.

SetRequestForChangeAfterConsent(RequestForChangeAfterConsentDocumentType)

Stellt einen Antrag auf Änderung nach erteilter Zustimmung (Art. 9 VO (EU) 2024/1157).

SetSubmission(SubmissionDocumentType)

Aktualisiert oder korrigiert die Notifizierungs-Daten einer bestehenden Einreichung. Der Server ermittelt automatisch ob es sich um eine Erst-Einreichung oder Korrektur handelt.

SubmitNotificationSignal(NotificationSignalDocumentType)

Übermittelt ein Notifier-seitiges Signal auf Notifizierungsebene — typischerweise NotificationWithdrawn (Rücknahme) oder NotificationCancelled durch den Notifier (Art. 27 Abs. 1 VO (EU) 2024/1157). Das Signal wird ohne UserCompetentAuthorityDomainId gebaut, da der Notifier keine CA ist; DIWASS ordnet es anhand der WSSE-Credentials zu. Übergangslösung: Der darunterliegende BxA-Endpoint SubmitNotificationSignal existiert aktuell nur auf der IAuthorityDocumentApi. Bis die Company-API ein eigenes Gegenstück bekommt (siehe Ticket zedal-grpc-apis), delegieren wir hier auf denselben Endpoint.