# MOA ZS - Changelog This document summarizes changes between MOA ZS Releases that were made in the MOA ZS codebase and in the app2mzs interfaces. For a non-normative summary of changes that were made in the ZUSE specifications (and therefore affect MOA ZS directly and a sender application indirectly), the reader is referred to [ZUSE Specification Changelog](zusespec-changelog.md). ## Changes MOA ZS 2.0.0 RC9 - Update [zusemsg] schema to version from 2020-02-26. ## Changes MOA ZS 2.0.0 RC8 - Fix: Improve exception handling on MOA ZS: Process exception correctly after backend service times out. Before: When the MOA ZS backend service times out while processing a delivery request, MOA ZS answers synchronously to the Sender app and forwards the result asynchronously at a later point. If an exception were to occur after the timeout, MOA ZS would swallow this exception without being properly processed. The fix: If an exception occurs, MOA ZS converts the exception into a response and hands it over to the sink hub for proper processing of the event. - Fix: Parser Error that occurs when MOA ZS mzs backend service times out. ## Changes MOA ZS 2.0.0 RC7 - MZS Schema Change: Add missing parameters to `ERVDeliveryConfirmed` (an element in `mzs:DeliveryNotification`). - Change Behavior of `msg/` Service: Acknowledge response if and only if backend succeeds. Return soap fault otherwise. - Bug Fix: Handle `InterruptedException` as discussed in . - Add curl examples for sending `msg:DeliveryNotifications` to MOA ZS. ## Changes MOA ZS 2.0.0 RC6 - Bug Fix: Finalize the removal of the "JAXB Class Not Found Exception" workaround from 2.0.0-RC3. - Bug Fix: Comply with zuse specifications when creating TNVZ / MSG / App Clients (e.g. disable "Store Binary Response" for TNVZ Client and App Client, Disable MTOM for TNVZ Client). - Refactor: Replace `createSoap1{1,2}` with `create{Tnvz,App,Msg}Client`. - Change Behavior: In case where MOA ZS receives a notification or request status with a unknown `AppDeliveryID`, MOA ZS issues a warning. Then, MOA ZS falls back to the default configuration for figuring out on how to handle the notification. Before, MOA ZS would cancel the process if the `AppDeliveryID` was unknown. - Bug Fix: Fix NullPointerException when `mzs:DeliveryRequest/Receiver` is identified via `p:IdentificationType`. - Add `msg:ClearingProfilID` in mzs2msg conversion. ## Changes MOA ZS 2.0.0 RC5 - Bug Fix; Problem: With `perform-query-person-request` activated, MOA ZS generated a `msg:DeliveryRequest` that did not comply with the [msg] schema. Solution: Make response compliant. ## Changes MOA ZS 2.0.0 RC4 - Bug Fix: Ensure that [tnvz] QueryPersonRequest/Sender marshalls correctly (to prevent error 400). ## Changes MOA ZS 2.0.0 RC3 - Remove Workaround that fixes JAXB Class Not Found Exception when running application in Tomcat. - Bump zusetnvz contracts from version 2.2.006 to 2.2.008. ## Changes MOA ZS 2.0.0 RC2 - Minor Fixes in Documentation and Readme. - Change MOA ZS Group ID from `at.gv.zustellung` to `at.gv.egiz`. - Bug Fix: Booleans in [application.yaml](../src/test/resources/config/application.yaml) are parsed correctly. - Bug Fix: [zusemsg] and [zusetnvz] clients use SOAP 1.2 to comply with the specification. - Bug Fix: Change `type` property key to `filetype` in [application.yaml](../src/test/resources/config/application.yaml) such that MOA ZS receives the property value. - Bug Fix: Validation error was assigned to TNVZ Client, but appeared in MSG Client. - Upgrade [zusemsg] schema files from 2.0.0 to 2.0.007 and apply changes to codebase. - Upgrade [zusetnvz] from 2.0.0 to 2.0.006 and apply changes to codebase. - Add licenses, license headers and NOTICE. - Add @author tags. ### app2mzs interface changes - Switch namespace of `AustrianAdressesOnly` from [tnvz] to [msg]. - Add new optional element `ClearingProfilID` to `mzs:DeliveryRequestType/Sender`; Reason: Element was added to [zusemsg] 2.2.007. - Add new choice in `mzs:DeliveryNotification` to forward new answer of type `msg:ERVConfirmedDelivery` to the app. - Move element `msg:RelayedViaERV` from `SuccessType` into `MessageType` (so that it's available to all types that derive from `MessageType`). - Change `mzs:MessageType/ZSDeliveryID` from mandatory to optional element. Reason: In certain cases the `ZSDeliveryID` does not exist. Example: Perform QueryPersonRequest, Request fails, no ZSDeliveryID because request was never sent to delivery service. - Change type of `mzs:Error/Code` from `xs:integer` to `xs:string`. Reason: `msg:Code` is also of type `xs:string`. ## Changes Between MOA ZS 1.5.3 and MOA ZS 2.0.0 RC1 For version 2.0.0, MOA ZS was rewritten from scratch. The following list summarizes the changes: - Add compatibility with [zusemsg]. - Add compatibility with [zusetnvz]. - Replace the database as persistent storage with an in-memory cache. - Update the app2mzs WSDL contract and its data types to fit the needs of [zusemsg] and [zusetnvz]. - Integrate signature verification with MOA SP-SS. - Drop support for message encryption and signature creation. - Target Platform Java 12. ### Changes between app2mzs 1.5.3 and app2mzs 2.0.0 This section describes how the app2mzs WSDL contract was changed and explains why these changes were applied. The changes in the app2mzs WSDL contract accommodate feature additions and feature removals in [zusemsg] 2.0.0 and [zusetnvz] 2.0.0. Not all changes are backward compatible and require adjustments in app2mzs-1.5.3-compatible clients. ### Changes in `mzs:DeliveryRequest` - The `Server` element was removed from the `DeliveryRequest` type. In MOA ZS 1.5.3, this element replaced the ZKOPF response. ZKOPF request and response do not exist anymore, which renders the `Server` response irrelevant. This change is *not backward compatible*. - The `ProfileID` option in the `DeliveryRequest/Sender` element was replaced by `msg:SenderProfile` because sender profiles are now registered at the delivery service and referred to via `DeliveryRequest/Sender/SenderProfile`. This change is *not backward compatible*. - The `SignatureKeyID` element was removed from `DeliveryRequest` because this element refers to the signing key. Since signature creation was dropped from MOA ZS, the element is not relevant. This change is *not backward compatible*. - The optional elements `msg:Logo` and `msg:AdditionalCriteria` were added to `DeliveryRequest/Sender` because they were also added as optional elements to [zusemsg]. This change is *backward compatible*. - The element `Person` in `DeliveryRequest/Sender` was replaced by the `p:CorporateBody` profile because that is the only sender that is allowed by [zusemsg]. This change is *not backward compatible*. - `DeliveryRequest/Sender/Address` was removed because the element was dropped in [zusemsg]. This change is *not backward compatible*. - An alternative choice to the `Person`-`Address` sequence in `DeliveryRequest/Receiver` was added. This choice allows to pass a `p:Identification` element instead of the `Person`-`Address` sequence. The choice was added to enable the optional feature in [zusemsg]. This change is *backward compatible*. - The optional element `tnvz:AustrianAddressesOnly` was added to `DeliveryRequest/Receiver` because this element was also added as an optional element to [zusetnvz]. This change is *backward compatible*. - The optional element `msg:AdditionalCriteria` and `msg:PreAdviceNote` were added to `DeliveryRequest/Receiver` because these element were also added as optional elements to [zusemsg]. This change is *backward compatible*. - The element `MetaData` in `DeliveryRequest` was replaced with the `msg:MetaData` element from [zusemsg]. The reason for replacing the `MetaData` element is that the `MetaData` from the app2mzs contract represents the same data that the delivery service expects. Furthermore, the amount of changes between MetaData from app2mzs 1.5.3 and [zusemsg] 2.0.0 prohibits a straight forward conversion between both elements. This change is *not backward compatible*. - The optional `Config` element was added to the `DeliveryRequest` element. This element allows overriding individual configuration parameters for the ongoing request. This change is *backward compatible*: You do not need to specify any parameters in the `Config`-element since you can also configure delivery requests in [application.yaml](../src/test/resources/config/application.yaml). See [Chapter Configuration](#configuration) for more details. - The element `XMLDocument` was replaced as this element was dropped from [zusemsg] in favor of the `msg:Payload` element. This change is *not backward compatible*. - The types `BinaryDocument` and `DocumentReference` in `DeliveryRequest/Payload` were merged to remove duplicated element. Merging these elements ensures that both payload types contain all of `msg:Attachment`s mandatory fields. This change is *not backward compatible*. - The element `MD5Checksum` in `DeliveryRequest/Payload/DocumentReference` was replaced with `msg:Checksum`, which was introduced by [zusemsg]. This change is *not backward compatible*. - The element `msg:Size` was added to `DeliveryRequest/Payload` because it was also added as a mandatory element in [zusemsg]. This change is not *backward compatible*. - The `sync` attribute was dropped in favor of the element `Config/ServiceTimeout`. This change is *not backward compatible*. ### Changes in `mzs:DeliveryResponse` - The option `DeliveryConfirmation` in `DeliveryResponse` was dropped because it was dropped in [zusemsg]. This change is *not backwards-compatible*. - Add `DeliverySystem`, `ZSDeliveryID` and `GZ` to `MessageType`, which is the base type of `DeliveryResponse/Success`, -`PartialSuccess`, and -`Error`. These mandatory elements were added to [zusemsg]. This change is *backwards-compatible*. - Add `SignedDeliveryRequestStatus` to` MessageType`. This optional element contains the original, unaltered response that was sent from the delivery service to MOA ZS. The app can use this response to verify the contained signature. This change is *backward compatible*. - Remove `MZSDeliveryID` because this ID does not exist anymore. This change is *not backward compatible*. - Add the optional `PreadviceNoteSent` element to `ErrorType` because it was added in [zusemsg]. This change is *backward compatible*. - Remove `DocumentReference` from `ErrorType` because it was removed from [zusemsg]. This change is *not backward compatible*. - Add the elements `msg:DeliveryTimestamp` and `msg:RelayedViaERV` to `SuccessType` because they were added in [zusemsg]. This change is *backward compatible*. ### Changes in `mzs:DeliveryNotification` - Remove `DeliveryConfirmation` and `DeliveryStatement` elements from `DeliveryNotification` as those element were dropped from [zusemsg]. This change is *not backward compatible*. - Add the elements `msg:SenderDetails`, `msg:ReceiverDetails`, `msg:User`, `AdditionalFormat` and `msg:NotificationsPerformed` to the `DeliveryNotification` because they were added to [zusemsg]. This change is *backward compatible*. ### Changes in `mzs_mypersondata` - The element `AbstractPersonType` was defined as `abstract`, since the equivalent type in [zusemsg] is abstract as well. This change is *not backward compatible*. - The elements `Name` and `DateOfBirth` in `PhysicalPersonType` were set from optional to mandatory because they are mandatory in [zusemsg]. This change is *not backward compatible*. - The optional element `Affix` was added to `PersonNameType` since this element was added to [zusemsg] as well. This change is *backward compatible*. - The `CorporateBodyType` was extended by the optional `Target` element that was added to [zusemsg]. This change is *backward compatible*. - The elements `FullName` and `Organization` in `CorporateBodyType` were set from optional to mandatory because they are compulsory in [zusemsg]. This change is *not backward compatible*. - The restriction from `CountryCode` was lifted. This change is *backward compatible*. - The optional attribute `type` was added to `PostalAddressType`. This change is *backward compatible*. - The optional attribute `MessengerService` was added to `TelephoneAddressType`. This change is *backward compatible*.