gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [libeufin] branch master updated: Importing new JAXB classe


From: gnunet
Subject: [GNUnet-SVN] [libeufin] branch master updated: Importing new JAXB classes.
Date: Thu, 10 Oct 2019 22:14:59 +0200

This is an automated email from the git hooks/post-receive script.

marcello pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new f16d7d4  Importing new JAXB classes.
f16d7d4 is described below

commit f16d7d461978522bc82852961a024293489ff0b9
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Oct 10 22:13:56 2019 +0200

    Importing new JAXB classes.
    
    In particular, those new classes account for the "key request H004"
    types; a unit test is also provided.
---
 sandbox/src/main/bash/jaxb.sh                      |    3 +
 .../{ => ebics/hev}/HEVRequestDataType.java        |    2 +-
 .../{ => ebics/hev}/HEVResponseDataType.java       |    2 +-
 .../messages/{ => ebics/hev}/ObjectFactory.java    |    2 +-
 .../{ => ebics/hev}/SystemReturnCodeType.java      |    2 +-
 .../ebics/keyrequest/AccountHolderRoleType.java    |   84 +
 .../ebics/keyrequest/AccountNumberRoleType.java    |   84 +
 .../messages/ebics/keyrequest/AccountType.java     |  620 ++++++
 .../messages/ebics/keyrequest/AddressInfoType.java |  265 +++
 .../messages/ebics/keyrequest/AmountType.java      |  104 +
 .../ebics/keyrequest/AttributedAccountType.java    |  967 ++++++++++
 .../ebics/keyrequest/AuthOrderInfoType.java        |  262 +++
 .../AuthenticationCertificateInfoType.java         |   78 +
 .../keyrequest/AuthenticationPubKeyInfoType.java   |   78 +
 .../ebics/keyrequest/AuthorisationLevelType.java   |   70 +
 .../ebics/keyrequest/BankCodeRoleType.java         |   84 +
 .../keyrequest/BankInfoType.java}                  |   58 +-
 .../keyrequest/BankSignatureDataSigBookType.java   |  139 ++
 .../keyrequest/CanonicalizationMethodType.java     |  109 ++
 .../keyrequest/CertificateInfoType.java}           |   56 +-
 .../messages/ebics/keyrequest/CurrencyCode.java    | 1183 ++++++++++++
 .../messages/ebics/keyrequest/DSAKeyValueType.java |  227 +++
 .../messages/ebics/keyrequest/DataDigestType.java  |   99 +
 .../ebics/keyrequest/DataEncryptionInfoType.java   |  205 ++
 .../ebics/keyrequest/DataTransferRequestType.java  |  386 ++++
 .../ebics/keyrequest/DataTransferResponseType.java |  355 ++++
 .../keyrequest/DigestMethodType.java}              |  104 +-
 .../keyrequest/EbicsNoPubKeyDigestsRequest.java    |  335 ++++
 .../ebics/keyrequest/EbicsUnsecuredRequest.java    |  510 +++++
 .../ebics/keyrequest/EbicsUnsignedRequest.java     |  633 +++++++
 .../keyrequest/EmptyMutableHeaderType.java}        |   55 +-
 .../keyrequest/EncryptionCertificateInfoType.java  |   78 +
 .../ebics/keyrequest/EncryptionPubKeyInfoType.java |   78 +
 .../ebics/keyrequest/FDLOrderParamsType.java       |  232 +++
 .../ebics/keyrequest/FULOrderParamsType.java       |  106 ++
 .../messages/ebics/keyrequest/FileFormatType.java  |  102 +
 .../ebics/keyrequest/GenericOrderParamsType.java   |   78 +
 .../ebics/keyrequest/H3KRequestOrderDataType.java  |  190 ++
 .../ebics/keyrequest/HAAResponseOrderDataType.java |  114 ++
 .../ebics/keyrequest/HCARequestOrderDataType.java  |  200 ++
 .../ebics/keyrequest/HCSRequestOrderDataType.java  |  228 +++
 .../ebics/keyrequest/HIARequestOrderDataType.java  |  200 ++
 .../ebics/keyrequest/HKDResponseOrderDataType.java |  140 ++
 .../ebics/keyrequest/HPBResponseOrderDataType.java |  169 ++
 .../ebics/keyrequest/HPDAccessParamsType.java      |  274 +++
 .../ebics/keyrequest/HPDProtocolParamsType.java    |  713 +++++++
 .../ebics/keyrequest/HPDResponseOrderDataType.java |   99 +
 .../messages/ebics/keyrequest/HPDVersionType.java  |  234 +++
 .../ebics/keyrequest/HSARequestOrderDataType.java  |  200 ++
 .../ebics/keyrequest/HTDReponseOrderDataType.java  |  137 ++
 .../ebics/keyrequest/HVDOrderParamsType.java       |  199 ++
 .../ebics/keyrequest/HVDResponseOrderDataType.java |  240 +++
 .../ebics/keyrequest/HVEOrderParamsType.java       |  199 ++
 .../ebics/keyrequest/HVSOrderParamsType.java       |  199 ++
 .../keyrequest/HVSRequestOrderDataType.java}       |   50 +-
 .../ebics/keyrequest/HVTAccountInfoType.java       |   41 +
 .../ebics/keyrequest/HVTOrderFlagsType.java        |  155 ++
 .../ebics/keyrequest/HVTOrderInfoType.java         |  520 +++++
 .../ebics/keyrequest/HVTOrderParamsType.java       |  295 +++
 .../ebics/keyrequest/HVTResponseOrderData.java     |   39 +
 .../ebics/keyrequest/HVTResponseOrderDataType.java |  149 ++
 .../ebics/keyrequest/HVUOrderDetailsType.java      |  291 +++
 .../keyrequest/HVUOrderParamsType.java}            |   77 +-
 .../ebics/keyrequest/HVUOriginatorInfoType.java    |  203 ++
 .../ebics/keyrequest/HVUResponseOrderDataType.java |  114 ++
 .../ebics/keyrequest/HVUSigningInfoType.java       |  117 ++
 .../ebics/keyrequest/HVZOrderDetailsType.java      | 1190 ++++++++++++
 .../keyrequest/HVZOrderParamsType.java}            |   77 +-
 .../ebics/keyrequest/HVZResponseOrderDataType.java |  114 ++
 .../messages/ebics/keyrequest/KeyInfoType.java     |  142 ++
 .../messages/ebics/keyrequest/KeyValueType.java    |   92 +
 .../keyrequest/ManifestType.java}                  |  106 +-
 .../NoPubKeyDigestsReqOrderDetailsType.java        |   45 +
 .../NoPubKeyDigestsRequestStaticHeaderType.java    |   53 +
 .../messages/ebics/keyrequest/ObjectFactory.java   | 1999 ++++++++++++++++++++
 .../messages/ebics/keyrequest/ObjectType.java      |  171 ++
 .../ebics/keyrequest/OrderAttributeType.java       |   62 +
 .../ebics/keyrequest/OrderDetailsType.java         |  107 ++
 .../ebics/keyrequest/OrderSignatureDataType.java   |  190 ++
 .../messages/ebics/keyrequest/OrderTType.java      |  723 +++++++
 .../messages/ebics/keyrequest/PGPDataType.java     |  105 +
 .../messages/ebics/keyrequest/Parameter.java       |  196 ++
 .../messages/ebics/keyrequest/PartnerInfoType.java |  310 +++
 .../keyrequest/PreValidationAccountAuthType.java   |   73 +
 .../ebics/keyrequest/PreValidationRequestType.java |  147 ++
 .../ebics/keyrequest/ProductElementType.java       |  129 ++
 .../ebics/keyrequest/PubKeyDigestType.java         |  100 +
 .../PubKeyInfoTypeAtEbicsSignatures.java           |  143 ++
 .../keyrequest/PubKeyInfoTypeAtEbicsTypes.java     |  144 ++
 .../PubKeyValueTypeAtEbicsSignatures.java          |  140 ++
 .../keyrequest/PubKeyValueTypeAtEbicsTypes.java    |  140 ++
 .../messages/ebics/keyrequest/RSAKeyValueType.java |   93 +
 .../messages/ebics/keyrequest/ReferenceType.java   |  214 +++
 .../ebics/keyrequest/RetrievalMethodType.java      |  127 ++
 .../messages/ebics/keyrequest/SPKIDataType.java    |   83 +
 .../keyrequest/SignatureCertificateInfoType.java   |   78 +
 .../ebics/keyrequest/SignatureMethodType.java      |  115 ++
 .../ebics/keyrequest/SignaturePropertiesType.java  |  111 ++
 .../ebics/keyrequest/SignaturePropertyType.java    |  144 ++
 .../ebics/keyrequest/SignaturePubKeyInfoType.java  |   78 +
 .../keyrequest/SignaturePubKeyOrderDataType.java   |  172 ++
 .../messages/ebics/keyrequest/SignatureType.java   |  195 ++
 .../ebics/keyrequest/SignatureValueType.java       |   99 +
 .../messages/ebics/keyrequest/SignedInfoType.java  |  167 ++
 .../messages/ebics/keyrequest/SignerInfoType.java  |  319 ++++
 .../ebics/keyrequest/StandardOrderParamsType.java  |  169 ++
 .../ebics/keyrequest/StaticHeaderBaseType.java     |  357 ++++
 .../ebics/keyrequest/TransactionPhaseType.java     |   76 +
 .../keyrequest/TransferReceiptRequestType.java}    |   54 +-
 .../keyrequest/TransferReceiptResponseType.java}   |   71 +-
 .../messages/ebics/keyrequest/TransferType.java    |   68 +
 .../messages/ebics/keyrequest/TransformType.java   |  116 ++
 .../messages/ebics/keyrequest/TransformsType.java  |   76 +
 .../keyrequest/UnsecuredReqOrderDetailsType.java   |   45 +
 .../UnsecuredRequestStaticHeaderType.java          |   53 +
 .../keyrequest/UnsignedReqOrderDetailsType.java    |   45 +
 .../UnsignedRequestStaticHeaderType.java           |   53 +
 .../keyrequest/UserInfoType.java}                  |  147 +-
 .../ebics/keyrequest/UserPermissionType.java       |  258 +++
 .../keyrequest/UserSignatureDataSigBookType.java   |  211 +++
 .../messages/ebics/keyrequest/X509DataType.java    |  100 +
 .../ebics/keyrequest/X509IssuerSerialType.java     |   98 +
 .../messages/ebics/keyrequest/package-info.java    |    9 +
 sandbox/src/main/kotlin/HEVResponse.kt             |    6 +-
 sandbox/src/main/kotlin/Main.kt                    |    7 +-
 sandbox/src/main/kotlin/XML.kt                     |   29 +-
 sandbox/src/test/kotlin/DomToJaxbTest.kt           |   29 +
 .../test/resources/ebics_ini_request_sample.xml    |   14 +
 128 files changed, 24023 insertions(+), 382 deletions(-)

diff --git a/sandbox/src/main/bash/jaxb.sh b/sandbox/src/main/bash/jaxb.sh
new file mode 100755
index 0000000..f3ea41a
--- /dev/null
+++ b/sandbox/src/main/bash/jaxb.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+xjc -p $PACKAGE_NAME -d $DEST_DIR -b bindings.xjb $SCHEMA
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVRequestDataType.java
similarity index 98%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVRequestDataType.java
index 9d1e96f..b14770d 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVRequestDataType.java
@@ -1,5 +1,5 @@
 
-package tech.libeufin.messages;
+package tech.libeufin.messages.ebics.hev;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVResponseDataType.java
similarity index 99%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVResponseDataType.java
index 19e3b07..fcde6f9 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/HEVResponseDataType.java
@@ -1,5 +1,5 @@
 
-package tech.libeufin.messages;
+package tech.libeufin.messages.ebics.hev;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/sandbox/src/main/java/tech/libeufin/messages/ObjectFactory.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/ObjectFactory.java
similarity index 98%
rename from sandbox/src/main/java/tech/libeufin/messages/ObjectFactory.java
rename to 
sandbox/src/main/java/tech/libeufin/messages/ebics/hev/ObjectFactory.java
index fcc010c..9eb2b69 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/ObjectFactory.java
+++ b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/ObjectFactory.java
@@ -1,5 +1,5 @@
 
-package tech.libeufin.messages;
+package tech.libeufin.messages.ebics.hev;
 
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.annotation.XmlElementDecl;
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/SystemReturnCodeType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/SystemReturnCodeType.java
similarity index 98%
rename from 
sandbox/src/main/java/tech/libeufin/messages/SystemReturnCodeType.java
rename to 
sandbox/src/main/java/tech/libeufin/messages/ebics/hev/SystemReturnCodeType.java
index 09ec917..b29c949 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/SystemReturnCodeType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/hev/SystemReturnCodeType.java
@@ -1,5 +1,5 @@
 
-package tech.libeufin.messages;
+package tech.libeufin.messages.ebics.hev;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountHolderRoleType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountHolderRoleType.java
new file mode 100644
index 0000000..913166e
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountHolderRoleType.java
@@ -0,0 +1,84 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AccountHolderRoleType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AccountHolderRoleType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;enumeration value="Originator"/>
+ *     &lt;enumeration value="Recipient"/>
+ *     &lt;enumeration value="Presenter"/>
+ *     &lt;enumeration value="Other"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "AccountHolderRoleType")
+@XmlEnum
+public enum AccountHolderRoleType {
+
+
+    /**
+     * Auftraggeber
+     * 
+     */
+    @XmlEnumValue("Originator")
+    ORIGINATOR("Originator"),
+
+    /**
+     * Empfänger
+     * 
+     */
+    @XmlEnumValue("Recipient")
+    RECIPIENT("Recipient"),
+
+    /**
+     * Überbringer, Einreicher
+     * 
+     */
+    @XmlEnumValue("Presenter")
+    PRESENTER("Presenter"),
+
+    /**
+     * andere Rolle
+     * 
+     */
+    @XmlEnumValue("Other")
+    OTHER("Other");
+    private final String value;
+
+    AccountHolderRoleType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static AccountHolderRoleType fromValue(String v) {
+        for (AccountHolderRoleType c: AccountHolderRoleType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountNumberRoleType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountNumberRoleType.java
new file mode 100644
index 0000000..014faf9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountNumberRoleType.java
@@ -0,0 +1,84 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AccountNumberRoleType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AccountNumberRoleType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;enumeration value="Originator"/>
+ *     &lt;enumeration value="Recipient"/>
+ *     &lt;enumeration value="Charges"/>
+ *     &lt;enumeration value="Other"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "AccountNumberRoleType")
+@XmlEnum
+public enum AccountNumberRoleType {
+
+
+    /**
+     * Auftraggeberkonto
+     * 
+     */
+    @XmlEnumValue("Originator")
+    ORIGINATOR("Originator"),
+
+    /**
+     * Empfängerkonto
+     * 
+     */
+    @XmlEnumValue("Recipient")
+    RECIPIENT("Recipient"),
+
+    /**
+     * Gebührenkonto
+     * 
+     */
+    @XmlEnumValue("Charges")
+    CHARGES("Charges"),
+
+    /**
+     * andere Kontorolle
+     * 
+     */
+    @XmlEnumValue("Other")
+    OTHER("Other");
+    private final String value;
+
+    AccountNumberRoleType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static AccountNumberRoleType fromValue(String v) {
+        for (AccountNumberRoleType c: AccountNumberRoleType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountType.java
new file mode 100644
index 0000000..59123ba
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AccountType.java
@@ -0,0 +1,620 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für Kontoinformationen.
+ * 
+ * <p>Java class for AccountType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AccountType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;choice maxOccurs="2">
+ *           &lt;element name="AccountNumber">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>AccountNumberType">
+ *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="NationalAccountNumber">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+ *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/choice>
+ *         &lt;choice maxOccurs="2">
+ *           &lt;element name="BankCode">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension base="&lt;urn:org:ebics:H004>BankCodeType">
+ *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+ *                   &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="NationalBankCode">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+ *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/choice>
+ *         &lt;element name="AccountHolder" 
type="{urn:org:ebics:H004}AccountHolderType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Currency" 
type="{urn:org:ebics:H004}CurrencyBaseType" default="EUR" />
+ *       &lt;attribute name="Description" 
type="{urn:org:ebics:H004}AccountDescriptionType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AccountType", propOrder = {
+    "accountNumberOrNationalAccountNumber",
+    "bankCodeOrNationalBankCode",
+    "accountHolder"
+})
+@XmlSeeAlso({
+    tech.libeufin.messages.ebics.keyrequest.PartnerInfoType.AccountInfo.class,
+    PreValidationAccountAuthType.class
+})
+public class AccountType {
+
+    @XmlElements({
+        @XmlElement(name = "AccountNumber", type = 
AccountType.AccountNumber.class),
+        @XmlElement(name = "NationalAccountNumber", type = 
AccountType.NationalAccountNumber.class)
+    })
+    protected List<Object> accountNumberOrNationalAccountNumber;
+    @XmlElements({
+        @XmlElement(name = "BankCode", type = AccountType.BankCode.class),
+        @XmlElement(name = "NationalBankCode", type = 
AccountType.NationalBankCode.class)
+    })
+    protected List<Object> bankCodeOrNationalBankCode;
+    @XmlElement(name = "AccountHolder")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String accountHolder;
+    @XmlAttribute(name = "Currency")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String currency;
+    @XmlAttribute(name = "Description")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    protected String description;
+
+    /**
+     * Gets the value of the accountNumberOrNationalAccountNumber property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
accountNumberOrNationalAccountNumber property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccountNumberOrNationalAccountNumber().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AccountType.AccountNumber }
+     * {@link AccountType.NationalAccountNumber }
+     * 
+     * 
+     */
+    public List<Object> getAccountNumberOrNationalAccountNumber() {
+        if (accountNumberOrNationalAccountNumber == null) {
+            accountNumberOrNationalAccountNumber = new ArrayList<Object>();
+        }
+        return this.accountNumberOrNationalAccountNumber;
+    }
+
+    /**
+     * Gets the value of the bankCodeOrNationalBankCode property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
bankCodeOrNationalBankCode property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getBankCodeOrNationalBankCode().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AccountType.BankCode }
+     * {@link AccountType.NationalBankCode }
+     * 
+     * 
+     */
+    public List<Object> getBankCodeOrNationalBankCode() {
+        if (bankCodeOrNationalBankCode == null) {
+            bankCodeOrNationalBankCode = new ArrayList<Object>();
+        }
+        return this.bankCodeOrNationalBankCode;
+    }
+
+    /**
+     * Gets the value of the accountHolder property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAccountHolder() {
+        return accountHolder;
+    }
+
+    /**
+     * Sets the value of the accountHolder property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAccountHolder(String value) {
+        this.accountHolder = value;
+    }
+
+    /**
+     * Gets the value of the currency property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCurrency() {
+        if (currency == null) {
+            return "EUR";
+        } else {
+            return currency;
+        }
+    }
+
+    /**
+     * Sets the value of the currency property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCurrency(String value) {
+        this.currency = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>AccountNumberType">
+     *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class AccountNumber {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "international")
+        protected Boolean international;
+
+        /**
+         * Datentyp für eine Kontonummer (national/international).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the international property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isInternational() {
+            if (international == null) {
+                return false;
+            } else {
+                return international;
+            }
+        }
+
+        /**
+         * Sets the value of the international property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setInternational(Boolean value) {
+            this.international = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>BankCodeType">
+     *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *       &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class BankCode {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "international")
+        protected Boolean international;
+        @XmlAttribute(name = "Prefix")
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String prefix;
+
+        /**
+         * Datentyp für eine Bankleitzahl (national/international).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the international property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isInternational() {
+            if (international == null) {
+                return false;
+            } else {
+                return international;
+            }
+        }
+
+        /**
+         * Sets the value of the international property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setInternational(Boolean value) {
+            this.international = value;
+        }
+
+        /**
+         * Gets the value of the prefix property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getPrefix() {
+            return prefix;
+        }
+
+        /**
+         * Sets the value of the prefix property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setPrefix(String value) {
+            this.prefix = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+     *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class NationalAccountNumber {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "format", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlSchemaType(name = "token")
+        protected String format;
+
+        /**
+         * Datentyp für eine Kontonummer (freies Format).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the format property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFormat() {
+            return format;
+        }
+
+        /**
+         * Sets the value of the format property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFormat(String value) {
+            this.format = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+     *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class NationalBankCode {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "format", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlSchemaType(name = "token")
+        protected String format;
+
+        /**
+         * Datentyp für eine Bankleitzahl (freies Format).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the format property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFormat() {
+            return format;
+        }
+
+        /**
+         * Sets the value of the format property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFormat(String value) {
+            this.format = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AddressInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AddressInfoType.java
new file mode 100644
index 0000000..5f6187b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AddressInfoType.java
@@ -0,0 +1,265 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for address information with regard to distributed signature 
(order types HKD, HTD).
+ * 
+ * <p>Java class for AddressInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AddressInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="Name" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Street" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="PostCode" 
type="{http://www.w3.org/2001/XMLSchema}token"; minOccurs="0"/>
+ *         &lt;element name="City" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Region" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Country" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AddressInfoType", propOrder = {
+    "name",
+    "street",
+    "postCode",
+    "city",
+    "region",
+    "country",
+    "any"
+})
+public class AddressInfoType {
+
+    @XmlElement(name = "Name")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String name;
+    @XmlElement(name = "Street")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String street;
+    @XmlElement(name = "PostCode")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String postCode;
+    @XmlElement(name = "City")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String city;
+    @XmlElement(name = "Region")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String region;
+    @XmlElement(name = "Country")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String country;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the street property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStreet() {
+        return street;
+    }
+
+    /**
+     * Sets the value of the street property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStreet(String value) {
+        this.street = value;
+    }
+
+    /**
+     * Gets the value of the postCode property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPostCode() {
+        return postCode;
+    }
+
+    /**
+     * Sets the value of the postCode property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPostCode(String value) {
+        this.postCode = value;
+    }
+
+    /**
+     * Gets the value of the city property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCity() {
+        return city;
+    }
+
+    /**
+     * Sets the value of the city property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCity(String value) {
+        this.city = value;
+    }
+
+    /**
+     * Gets the value of the region property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRegion() {
+        return region;
+    }
+
+    /**
+     * Sets the value of the region property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRegion(String value) {
+        this.region = value;
+    }
+
+    /**
+     * Gets the value of the country property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCountry() {
+        return country;
+    }
+
+    /**
+     * Sets the value of the country property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCountry(String value) {
+        this.country = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AmountType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AmountType.java
new file mode 100644
index 0000000..3016371
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AmountType.java
@@ -0,0 +1,104 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigDecimal;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für einen Betrag inkl. Währungscode-Attribut (Default = "EUR").
+ * 
+ * <p>Java class for AmountType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AmountType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;urn:org:ebics:H004>AmountValueType">
+ *       &lt;attribute name="Currency" 
type="{urn:org:ebics:H004}CurrencyBaseType" default="EUR" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AmountType", propOrder = {
+    "value"
+})
+public class AmountType {
+
+    @XmlValue
+    protected BigDecimal value;
+    @XmlAttribute(name = "Currency")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String currency;
+
+    /**
+     * Datentyp für einen Betragswert (ohne Währung).
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigDecimal }
+     *     
+     */
+    public BigDecimal getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigDecimal }
+     *     
+     */
+    public void setValue(BigDecimal value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the currency property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCurrency() {
+        if (currency == null) {
+            return "EUR";
+        } else {
+            return currency;
+        }
+    }
+
+    /**
+     * Sets the value of the currency property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCurrency(String value) {
+        this.currency = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AttributedAccountType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AttributedAccountType.java
new file mode 100644
index 0000000..e72669e
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AttributedAccountType.java
@@ -0,0 +1,967 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für Kontoinformationen inkl. der Eigenschaftszuordnung innerhalb 
einer Zahlungstransaktion.
+ * 
+ * <p>Java class for AttributedAccountType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AttributedAccountType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;choice maxOccurs="2">
+ *           &lt;element name="AccountNumber">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>AccountNumberType">
+ *                   &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountNumberRoleType" />
+ *                   &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+ *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="NationalAccountNumber">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+ *                   &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountNumberRoleType" />
+ *                   &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+ *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/choice>
+ *         &lt;choice maxOccurs="2">
+ *           &lt;element name="BankCode">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension base="&lt;urn:org:ebics:H004>BankCodeType">
+ *                   &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}BankCodeRoleType" />
+ *                   &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+ *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+ *                   &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="NationalBankCode">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+ *                   &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}BankCodeRoleType" />
+ *                   &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+ *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/choice>
+ *         &lt;element name="AccountHolder" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;urn:org:ebics:H004>AccountHolderType">
+ *                 &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountHolderRoleType" />
+ *                 &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Currency" 
type="{urn:org:ebics:H004}CurrencyBaseType" default="EUR" />
+ *       &lt;attribute name="Description" 
type="{urn:org:ebics:H004}AccountDescriptionType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributedAccountType", propOrder = {
+    "accountNumberOrNationalAccountNumber",
+    "bankCodeOrNationalBankCode",
+    "accountHolder"
+})
+@XmlSeeAlso({
+    HVTAccountInfoType.class
+})
+public class AttributedAccountType {
+
+    @XmlElements({
+        @XmlElement(name = "AccountNumber", type = 
AttributedAccountType.AccountNumber.class),
+        @XmlElement(name = "NationalAccountNumber", type = 
AttributedAccountType.NationalAccountNumber.class)
+    })
+    protected List<Object> accountNumberOrNationalAccountNumber;
+    @XmlElements({
+        @XmlElement(name = "BankCode", type = 
AttributedAccountType.BankCode.class),
+        @XmlElement(name = "NationalBankCode", type = 
AttributedAccountType.NationalBankCode.class)
+    })
+    protected List<Object> bankCodeOrNationalBankCode;
+    @XmlElement(name = "AccountHolder")
+    protected AttributedAccountType.AccountHolder accountHolder;
+    @XmlAttribute(name = "Currency")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String currency;
+    @XmlAttribute(name = "Description")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    protected String description;
+
+    /**
+     * Gets the value of the accountNumberOrNationalAccountNumber property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
accountNumberOrNationalAccountNumber property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccountNumberOrNationalAccountNumber().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AttributedAccountType.AccountNumber }
+     * {@link AttributedAccountType.NationalAccountNumber }
+     * 
+     * 
+     */
+    public List<Object> getAccountNumberOrNationalAccountNumber() {
+        if (accountNumberOrNationalAccountNumber == null) {
+            accountNumberOrNationalAccountNumber = new ArrayList<Object>();
+        }
+        return this.accountNumberOrNationalAccountNumber;
+    }
+
+    /**
+     * Gets the value of the bankCodeOrNationalBankCode property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
bankCodeOrNationalBankCode property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getBankCodeOrNationalBankCode().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AttributedAccountType.BankCode }
+     * {@link AttributedAccountType.NationalBankCode }
+     * 
+     * 
+     */
+    public List<Object> getBankCodeOrNationalBankCode() {
+        if (bankCodeOrNationalBankCode == null) {
+            bankCodeOrNationalBankCode = new ArrayList<Object>();
+        }
+        return this.bankCodeOrNationalBankCode;
+    }
+
+    /**
+     * Gets the value of the accountHolder property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AttributedAccountType.AccountHolder }
+     *     
+     */
+    public AttributedAccountType.AccountHolder getAccountHolder() {
+        return accountHolder;
+    }
+
+    /**
+     * Sets the value of the accountHolder property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AttributedAccountType.AccountHolder }
+     *     
+     */
+    public void setAccountHolder(AttributedAccountType.AccountHolder value) {
+        this.accountHolder = value;
+    }
+
+    /**
+     * Gets the value of the currency property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCurrency() {
+        if (currency == null) {
+            return "EUR";
+        } else {
+            return currency;
+        }
+    }
+
+    /**
+     * Sets the value of the currency property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCurrency(String value) {
+        this.currency = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>AccountHolderType">
+     *       &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountHolderRoleType" />
+     *       &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class AccountHolder {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "Role", required = true)
+        protected AccountHolderRoleType role;
+        @XmlAttribute(name = "Description")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String description;
+
+        /**
+         * Datentyp für den Namen des Kontoinhabers.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the role property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link AccountHolderRoleType }
+         *     
+         */
+        public AccountHolderRoleType getRole() {
+            return role;
+        }
+
+        /**
+         * Sets the value of the role property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link AccountHolderRoleType }
+         *     
+         */
+        public void setRole(AccountHolderRoleType value) {
+            this.role = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>AccountNumberType">
+     *       &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountNumberRoleType" />
+     *       &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+     *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class AccountNumber {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "Role", required = true)
+        protected AccountNumberRoleType role;
+        @XmlAttribute(name = "Description")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String description;
+        @XmlAttribute(name = "international")
+        protected Boolean international;
+
+        /**
+         * Datentyp für eine Kontonummer (national/international).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the role property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link AccountNumberRoleType }
+         *     
+         */
+        public AccountNumberRoleType getRole() {
+            return role;
+        }
+
+        /**
+         * Sets the value of the role property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link AccountNumberRoleType }
+         *     
+         */
+        public void setRole(AccountNumberRoleType value) {
+            this.role = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+        /**
+         * Gets the value of the international property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isInternational() {
+            if (international == null) {
+                return false;
+            } else {
+                return international;
+            }
+        }
+
+        /**
+         * Sets the value of the international property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setInternational(Boolean value) {
+            this.international = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>BankCodeType">
+     *       &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}BankCodeRoleType" />
+     *       &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+     *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *       &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class BankCode {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "Role", required = true)
+        protected BankCodeRoleType role;
+        @XmlAttribute(name = "Description")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String description;
+        @XmlAttribute(name = "international")
+        protected Boolean international;
+        @XmlAttribute(name = "Prefix")
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String prefix;
+
+        /**
+         * Datentyp für eine Bankleitzahl (national/international).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the role property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BankCodeRoleType }
+         *     
+         */
+        public BankCodeRoleType getRole() {
+            return role;
+        }
+
+        /**
+         * Sets the value of the role property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BankCodeRoleType }
+         *     
+         */
+        public void setRole(BankCodeRoleType value) {
+            this.role = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+        /**
+         * Gets the value of the international property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isInternational() {
+            if (international == null) {
+                return false;
+            } else {
+                return international;
+            }
+        }
+
+        /**
+         * Sets the value of the international property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setInternational(Boolean value) {
+            this.international = value;
+        }
+
+        /**
+         * Gets the value of the prefix property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getPrefix() {
+            return prefix;
+        }
+
+        /**
+         * Sets the value of the prefix property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setPrefix(String value) {
+            this.prefix = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+     *       &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}AccountNumberRoleType" />
+     *       &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+     *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class NationalAccountNumber {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "Role", required = true)
+        protected AccountNumberRoleType role;
+        @XmlAttribute(name = "Description")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String description;
+        @XmlAttribute(name = "format", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlSchemaType(name = "token")
+        protected String format;
+
+        /**
+         * Datentyp für eine Kontonummer (freies Format).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the role property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link AccountNumberRoleType }
+         *     
+         */
+        public AccountNumberRoleType getRole() {
+            return role;
+        }
+
+        /**
+         * Sets the value of the role property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link AccountNumberRoleType }
+         *     
+         */
+        public void setRole(AccountNumberRoleType value) {
+            this.role = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+        /**
+         * Gets the value of the format property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFormat() {
+            return format;
+        }
+
+        /**
+         * Sets the value of the format property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFormat(String value) {
+            this.format = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+     *       &lt;attribute name="Role" use="required" 
type="{urn:org:ebics:H004}BankCodeRoleType" />
+     *       &lt;attribute name="Description" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; />
+     *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class NationalBankCode {
+
+        @XmlValue
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        protected String value;
+        @XmlAttribute(name = "Role", required = true)
+        protected BankCodeRoleType role;
+        @XmlAttribute(name = "Description")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String description;
+        @XmlAttribute(name = "format", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlSchemaType(name = "token")
+        protected String format;
+
+        /**
+         * Datentyp für eine Bankleitzahl (freies Format).
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the role property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BankCodeRoleType }
+         *     
+         */
+        public BankCodeRoleType getRole() {
+            return role;
+        }
+
+        /**
+         * Sets the value of the role property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BankCodeRoleType }
+         *     
+         */
+        public void setRole(BankCodeRoleType value) {
+            this.role = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+        /**
+         * Gets the value of the format property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFormat() {
+            return format;
+        }
+
+        /**
+         * Sets the value of the format property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFormat(String value) {
+            this.format = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthOrderInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthOrderInfoType.java
new file mode 100644
index 0000000..1b84a82
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthOrderInfoType.java
@@ -0,0 +1,262 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for user permissions with regard to distributed signatures (order 
types HKD, HTD).
+ * 
+ * <p>Java class for AuthOrderInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AuthOrderInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType" minOccurs="0"/>
+ *         &lt;element name="TransferType" 
type="{urn:org:ebics:H004}TransferType"/>
+ *         &lt;element name="OrderFormat" 
type="{urn:org:ebics:H004}OrderFormatType" minOccurs="0"/>
+ *         &lt;element name="Description" 
type="{urn:org:ebics:H004}OrderDescriptionType"/>
+ *         &lt;element name="NumSigRequired" 
type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"; minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthOrderInfoType", propOrder = {
+    "orderType",
+    "fileFormat",
+    "transferType",
+    "orderFormat",
+    "description",
+    "numSigRequired",
+    "any"
+})
+public class AuthOrderInfoType {
+
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "TransferType", required = true)
+    @XmlSchemaType(name = "token")
+    protected TransferType transferType;
+    @XmlElement(name = "OrderFormat")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderFormat;
+    @XmlElement(name = "Description", required = true)
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String description;
+    @XmlElement(name = "NumSigRequired", defaultValue = "0")
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected BigInteger numSigRequired;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the transferType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TransferType }
+     *     
+     */
+    public TransferType getTransferType() {
+        return transferType;
+    }
+
+    /**
+     * Sets the value of the transferType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TransferType }
+     *     
+     */
+    public void setTransferType(TransferType value) {
+        this.transferType = value;
+    }
+
+    /**
+     * Gets the value of the orderFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderFormat() {
+        return orderFormat;
+    }
+
+    /**
+     * Sets the value of the orderFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderFormat(String value) {
+        this.orderFormat = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the numSigRequired property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getNumSigRequired() {
+        return numSigRequired;
+    }
+
+    /**
+     * Sets the value of the numSigRequired property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setNumSigRequired(BigInteger value) {
+        this.numSigRequired = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationCertificateInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationCertificateInfoType.java
new file mode 100644
index 0000000..f49b0de
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationCertificateInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Data type for public for identification and authentication.
+ * 
+ * <p>Java class for AuthenticationCertificateInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AuthenticationCertificateInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}CertificateInfoType">
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationVersion" 
type="{urn:org:ebics:H004}AuthenticationVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthenticationCertificateInfoType", propOrder = {
+    "authenticationVersion"
+})
+public class AuthenticationCertificateInfoType
+    extends CertificateInfoType
+{
+
+    @XmlElement(name = "AuthenticationVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String authenticationVersion;
+
+    /**
+     * Gets the value of the authenticationVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAuthenticationVersion() {
+        return authenticationVersion;
+    }
+
+    /**
+     * Sets the value of the authenticationVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAuthenticationVersion(String value) {
+        this.authenticationVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationPubKeyInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationPubKeyInfoType.java
new file mode 100644
index 0000000..319b457
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthenticationPubKeyInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für öffentlichen Authentfikationsschlüssel.
+ * 
+ * <p>Java class for AuthenticationPubKeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="AuthenticationPubKeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}PubKeyInfoType">
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationVersion" 
type="{urn:org:ebics:H004}AuthenticationVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthenticationPubKeyInfoType", propOrder = {
+    "authenticationVersion"
+})
+public class AuthenticationPubKeyInfoType
+    extends PubKeyInfoTypeAtEbicsTypes
+{
+
+    @XmlElement(name = "AuthenticationVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String authenticationVersion;
+
+    /**
+     * Gets the value of the authenticationVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAuthenticationVersion() {
+        return authenticationVersion;
+    }
+
+    /**
+     * Sets the value of the authenticationVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAuthenticationVersion(String value) {
+        this.authenticationVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthorisationLevelType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthorisationLevelType.java
new file mode 100644
index 0000000..fad3af9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/AuthorisationLevelType.java
@@ -0,0 +1,70 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AuthorisationLevelType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AuthorisationLevelType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;length value="1"/>
+ *     &lt;enumeration value="E"/>
+ *     &lt;enumeration value="A"/>
+ *     &lt;enumeration value="B"/>
+ *     &lt;enumeration value="T"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "AuthorisationLevelType")
+@XmlEnum
+public enum AuthorisationLevelType {
+
+
+    /**
+     * Einzelunterschrift
+     * 
+     */
+    E,
+
+    /**
+     * Erstunterschrift
+     * 
+     */
+    A,
+
+    /**
+     * Zweitunterschrift
+     * 
+     */
+    B,
+
+    /**
+     * Transportunterschrift
+     * 
+     */
+    T;
+
+    public String value() {
+        return name();
+    }
+
+    public static AuthorisationLevelType fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankCodeRoleType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankCodeRoleType.java
new file mode 100644
index 0000000..9d538fc
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankCodeRoleType.java
@@ -0,0 +1,84 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BankCodeRoleType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="BankCodeRoleType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;enumeration value="Originator"/>
+ *     &lt;enumeration value="Recipient"/>
+ *     &lt;enumeration value="Correspondent"/>
+ *     &lt;enumeration value="Other"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "BankCodeRoleType")
+@XmlEnum
+public enum BankCodeRoleType {
+
+
+    /**
+     * Auftraggeberbank
+     * 
+     */
+    @XmlEnumValue("Originator")
+    ORIGINATOR("Originator"),
+
+    /**
+     * Empfängerbank
+     * 
+     */
+    @XmlEnumValue("Recipient")
+    RECIPIENT("Recipient"),
+
+    /**
+     * Korrespondenzbank
+     * 
+     */
+    @XmlEnumValue("Correspondent")
+    CORRESPONDENT("Correspondent"),
+
+    /**
+     * andere Bankrolle
+     * 
+     */
+    @XmlEnumValue("Other")
+    OTHER("Other");
+    private final String value;
+
+    BankCodeRoleType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static BankCodeRoleType fromValue(String v) {
+        for (BankCodeRoleType c: BankCodeRoleType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankInfoType.java
similarity index 58%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankInfoType.java
index 9d1e96f..4e872ff 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankInfoType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -15,18 +22,19 @@ import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für VEU-Kreditinstitutsinformationen (HKD, HTD).
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for BankInfoType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="BankInfoType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;element ref="{urn:org:ebics:H004}Parameter" 
maxOccurs="unbounded" minOccurs="0"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,16 +45,19 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
+@XmlType(name = "BankInfoType", propOrder = {
     "hostID",
+    "parameter",
     "any"
 })
-public class HEVRequestDataType {
+public class BankInfoType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
+    @XmlElement(name = "HostID", required = true)
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlSchemaType(name = "token")
     protected String hostID;
+    @XmlElement(name = "Parameter")
+    protected List<Parameter> parameter;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
@@ -74,6 +85,35 @@ public class HEVRequestDataType {
         this.hostID = value;
     }
 
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getParameter().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Parameter }
+     * 
+     * 
+     */
+    public List<Parameter> getParameter() {
+        if (parameter == null) {
+            parameter = new ArrayList<Parameter>();
+        }
+        return this.parameter;
+    }
+
     /**
      * Gets the value of the any property.
      * 
@@ -92,8 +132,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankSignatureDataSigBookType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankSignatureDataSigBookType.java
new file mode 100644
index 0000000..e7ec172
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/BankSignatureDataSigBookType.java
@@ -0,0 +1,139 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for digital signature data transferred using EBICS.
+ * 
+ * <p>Java class for BankSignatureDataSigBookType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BankSignatureDataSigBookType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderSignature" maxOccurs="0" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;urn:org:ebics:H004>SignatureType">
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BankSignatureDataSigBookType", propOrder = {
+    "any"
+})
+public class BankSignatureDataSigBookType {
+
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>SignatureType">
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class OrderSignature {
+
+        @XmlValue
+        protected byte[] value;
+
+        /**
+         * Datentyp für kryptographische Unterschriften.
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CanonicalizationMethodType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CanonicalizationMethodType.java
new file mode 100644
index 0000000..f820038
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CanonicalizationMethodType.java
@@ -0,0 +1,109 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CanonicalizationMethodType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CanonicalizationMethodType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;any maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Algorithm" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CanonicalizationMethodType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class CanonicalizationMethodType {
+
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Algorithm", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String algorithm;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * {@link String }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the algorithm property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Sets the value of the algorithm property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CertificateInfoType.java
similarity index 57%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CertificateInfoType.java
index 9d1e96f..1163755 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CertificateInfoType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -7,26 +14,24 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Data Type for Certificates for the bank-technical signature for 
authorisation (ES)
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for CertificateInfoType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="CertificateInfoType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +42,44 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "CertificateInfoType", propOrder = {
+    "x509Data",
     "any"
 })
-public class HEVRequestDataType {
+@XmlSeeAlso({
+    AuthenticationCertificateInfoType.class,
+    EncryptionCertificateInfoType.class,
+    SignatureCertificateInfoType.class
+})
+public class CertificateInfoType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlElement(name = "X509Data", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, required = true)
+    protected X509DataType x509Data;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the x509Data property.
      * 
      * @return
      *     possible object is
-     *     {@link String }
+     *     {@link X509DataType }
      *     
      */
-    public String getHostID() {
-        return hostID;
+    public X509DataType getX509Data() {
+        return x509Data;
     }
 
     /**
-     * Sets the value of the hostID property.
+     * Sets the value of the x509Data property.
      * 
      * @param value
      *     allowed object is
-     *     {@link String }
+     *     {@link X509DataType }
      *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public void setX509Data(X509DataType value) {
+        this.x509Data = value;
     }
 
     /**
@@ -92,8 +100,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CurrencyCode.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CurrencyCode.java
new file mode 100644
index 0000000..bbb7fe7
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/CurrencyCode.java
@@ -0,0 +1,1183 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CurrencyCode.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="CurrencyCode">
+ *   &lt;restriction base="{urn:org:ebics:H004}CurrencyBaseType">
+ *     &lt;length value="3"/>
+ *     &lt;enumeration value="AFN"/>
+ *     &lt;enumeration value="ALL"/>
+ *     &lt;enumeration value="AMD"/>
+ *     &lt;enumeration value="ANG"/>
+ *     &lt;enumeration value="AOA"/>
+ *     &lt;enumeration value="ARS"/>
+ *     &lt;enumeration value="AUD"/>
+ *     &lt;enumeration value="AWG"/>
+ *     &lt;enumeration value="AZM"/>
+ *     &lt;enumeration value="BAM"/>
+ *     &lt;enumeration value="BBD"/>
+ *     &lt;enumeration value="BDT"/>
+ *     &lt;enumeration value="BGN"/>
+ *     &lt;enumeration value="BHD"/>
+ *     &lt;enumeration value="BMD"/>
+ *     &lt;enumeration value="BND"/>
+ *     &lt;enumeration value="BOB"/>
+ *     &lt;enumeration value="BRL"/>
+ *     &lt;enumeration value="BSD"/>
+ *     &lt;enumeration value="BTN"/>
+ *     &lt;enumeration value="BWP"/>
+ *     &lt;enumeration value="BYR"/>
+ *     &lt;enumeration value="BZD"/>
+ *     &lt;enumeration value="CAD"/>
+ *     &lt;enumeration value="CDF"/>
+ *     &lt;enumeration value="CHF"/>
+ *     &lt;enumeration value="CLP"/>
+ *     &lt;enumeration value="CNY"/>
+ *     &lt;enumeration value="COP"/>
+ *     &lt;enumeration value="CRC"/>
+ *     &lt;enumeration value="CSD"/>
+ *     &lt;enumeration value="CUP"/>
+ *     &lt;enumeration value="CVE"/>
+ *     &lt;enumeration value="CYP"/>
+ *     &lt;enumeration value="CZK"/>
+ *     &lt;enumeration value="DJV"/>
+ *     &lt;enumeration value="DKK"/>
+ *     &lt;enumeration value="DOP"/>
+ *     &lt;enumeration value="DZD"/>
+ *     &lt;enumeration value="ECS"/>
+ *     &lt;enumeration value="EEK"/>
+ *     &lt;enumeration value="EGP"/>
+ *     &lt;enumeration value="ETB"/>
+ *     &lt;enumeration value="EUR"/>
+ *     &lt;enumeration value="FJD"/>
+ *     &lt;enumeration value="FKP"/>
+ *     &lt;enumeration value="GBP"/>
+ *     &lt;enumeration value="GEL"/>
+ *     &lt;enumeration value="GHC"/>
+ *     &lt;enumeration value="GIP"/>
+ *     &lt;enumeration value="GMD"/>
+ *     &lt;enumeration value="GNF"/>
+ *     &lt;enumeration value="GTQ"/>
+ *     &lt;enumeration value="GYD"/>
+ *     &lt;enumeration value="HKD"/>
+ *     &lt;enumeration value="HNL"/>
+ *     &lt;enumeration value="HRK"/>
+ *     &lt;enumeration value="HTG"/>
+ *     &lt;enumeration value="HUF"/>
+ *     &lt;enumeration value="IDR"/>
+ *     &lt;enumeration value="ILS"/>
+ *     &lt;enumeration value="INR"/>
+ *     &lt;enumeration value="IQD"/>
+ *     &lt;enumeration value="IRR"/>
+ *     &lt;enumeration value="ISK"/>
+ *     &lt;enumeration value="JMD"/>
+ *     &lt;enumeration value="JOD"/>
+ *     &lt;enumeration value="JPY"/>
+ *     &lt;enumeration value="KES"/>
+ *     &lt;enumeration value="KGS"/>
+ *     &lt;enumeration value="KHR"/>
+ *     &lt;enumeration value="KMF"/>
+ *     &lt;enumeration value="KPW"/>
+ *     &lt;enumeration value="KRW"/>
+ *     &lt;enumeration value="KWD"/>
+ *     &lt;enumeration value="KYD"/>
+ *     &lt;enumeration value="KZT"/>
+ *     &lt;enumeration value="LAK"/>
+ *     &lt;enumeration value="LBP"/>
+ *     &lt;enumeration value="LKR"/>
+ *     &lt;enumeration value="LRD"/>
+ *     &lt;enumeration value="LSL"/>
+ *     &lt;enumeration value="LTL"/>
+ *     &lt;enumeration value="LVL"/>
+ *     &lt;enumeration value="LYD"/>
+ *     &lt;enumeration value="MAD"/>
+ *     &lt;enumeration value="MDL"/>
+ *     &lt;enumeration value="MGF"/>
+ *     &lt;enumeration value="MKD"/>
+ *     &lt;enumeration value="MMK"/>
+ *     &lt;enumeration value="MNT"/>
+ *     &lt;enumeration value="MOP"/>
+ *     &lt;enumeration value="MRO"/>
+ *     &lt;enumeration value="MTL"/>
+ *     &lt;enumeration value="MUR"/>
+ *     &lt;enumeration value="MVR"/>
+ *     &lt;enumeration value="MWK"/>
+ *     &lt;enumeration value="MXN"/>
+ *     &lt;enumeration value="MYR"/>
+ *     &lt;enumeration value="MZM"/>
+ *     &lt;enumeration value="NAD"/>
+ *     &lt;enumeration value="NGN"/>
+ *     &lt;enumeration value="NIO"/>
+ *     &lt;enumeration value="NOK"/>
+ *     &lt;enumeration value="NPR"/>
+ *     &lt;enumeration value="NZD"/>
+ *     &lt;enumeration value="OMR"/>
+ *     &lt;enumeration value="PAB"/>
+ *     &lt;enumeration value="PEN"/>
+ *     &lt;enumeration value="PGK"/>
+ *     &lt;enumeration value="PHP"/>
+ *     &lt;enumeration value="PKR"/>
+ *     &lt;enumeration value="PLN"/>
+ *     &lt;enumeration value="PYG"/>
+ *     &lt;enumeration value="QAR"/>
+ *     &lt;enumeration value="ROL"/>
+ *     &lt;enumeration value="RUB"/>
+ *     &lt;enumeration value="RWF"/>
+ *     &lt;enumeration value="SAR"/>
+ *     &lt;enumeration value="SBD"/>
+ *     &lt;enumeration value="SCR"/>
+ *     &lt;enumeration value="SDD"/>
+ *     &lt;enumeration value="SEK"/>
+ *     &lt;enumeration value="SGD"/>
+ *     &lt;enumeration value="SHP"/>
+ *     &lt;enumeration value="SIT"/>
+ *     &lt;enumeration value="SKK"/>
+ *     &lt;enumeration value="SLL"/>
+ *     &lt;enumeration value="SOS"/>
+ *     &lt;enumeration value="SRD"/>
+ *     &lt;enumeration value="STD"/>
+ *     &lt;enumeration value="SVC"/>
+ *     &lt;enumeration value="SYP"/>
+ *     &lt;enumeration value="SZL"/>
+ *     &lt;enumeration value="THB"/>
+ *     &lt;enumeration value="TJS"/>
+ *     &lt;enumeration value="TMM"/>
+ *     &lt;enumeration value="TND"/>
+ *     &lt;enumeration value="TOP"/>
+ *     &lt;enumeration value="TRL"/>
+ *     &lt;enumeration value="TRY"/>
+ *     &lt;enumeration value="TTD"/>
+ *     &lt;enumeration value="TWD"/>
+ *     &lt;enumeration value="TZS"/>
+ *     &lt;enumeration value="UAH"/>
+ *     &lt;enumeration value="UGX"/>
+ *     &lt;enumeration value="USD"/>
+ *     &lt;enumeration value="UYU"/>
+ *     &lt;enumeration value="UZS"/>
+ *     &lt;enumeration value="VEB"/>
+ *     &lt;enumeration value="VND"/>
+ *     &lt;enumeration value="VUV"/>
+ *     &lt;enumeration value="WST"/>
+ *     &lt;enumeration value="XAF"/>
+ *     &lt;enumeration value="XCD"/>
+ *     &lt;enumeration value="XOF"/>
+ *     &lt;enumeration value="XPF"/>
+ *     &lt;enumeration value="XTS"/>
+ *     &lt;enumeration value="XXX"/>
+ *     &lt;enumeration value="YER"/>
+ *     &lt;enumeration value="ZAR"/>
+ *     &lt;enumeration value="ZMK"/>
+ *     &lt;enumeration value="ZWD"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "CurrencyCode")
+@XmlEnum
+public enum CurrencyCode {
+
+
+    /**
+     * Afghanistan: Afghani
+     * 
+     */
+    AFN,
+
+    /**
+     * Albanien: Lek
+     * 
+     */
+    ALL,
+
+    /**
+     * Armenien: Dram
+     * 
+     */
+    AMD,
+
+    /**
+     * Niederländische Antillen: Gulden
+     * 
+     */
+    ANG,
+
+    /**
+     * Angola: Kwanza
+     * 
+     */
+    AOA,
+
+    /**
+     * Argentinien: Peso
+     * 
+     */
+    ARS,
+
+    /**
+     * Australien: Dollar
+     * 
+     */
+    AUD,
+
+    /**
+     * Aruba: Florin
+     * 
+     */
+    AWG,
+
+    /**
+     * Aserbaidschan: Manat
+     * 
+     */
+    AZM,
+
+    /**
+     * Bosnien und Herzegowina: Konvertible Mark
+     * 
+     */
+    BAM,
+
+    /**
+     * Barbados: Dollar
+     * 
+     */
+    BBD,
+
+    /**
+     * Bangladesch: Taka
+     * 
+     */
+    BDT,
+
+    /**
+     * Bulgarien: Lew
+     * 
+     */
+    BGN,
+
+    /**
+     * Bahrain: Dinar
+     * 
+     */
+    BHD,
+
+    /**
+     * Bermuda: Dollar
+     * 
+     */
+    BMD,
+
+    /**
+     * Brunei: Dollar
+     * 
+     */
+    BND,
+
+    /**
+     * Bolivien: Boliviano
+     * 
+     */
+    BOB,
+
+    /**
+     * Brasilien: Real
+     * 
+     */
+    BRL,
+
+    /**
+     * Bahamas: Dollar
+     * 
+     */
+    BSD,
+
+    /**
+     * Bhutan: Ngultrum
+     * 
+     */
+    BTN,
+
+    /**
+     * Botswana: Pula
+     * 
+     */
+    BWP,
+
+    /**
+     * Weißrussland (Belarus): Rubel
+     * 
+     */
+    BYR,
+
+    /**
+     * Belize: Dollar
+     * 
+     */
+    BZD,
+
+    /**
+     * Kanada: Dollar
+     * 
+     */
+    CAD,
+
+    /**
+     * Demokratische Republik Kongo: Franc
+     * 
+     */
+    CDF,
+
+    /**
+     * Schweiz: Franken
+     * 
+     */
+    CHF,
+
+    /**
+     * Chile: Peso
+     * 
+     */
+    CLP,
+
+    /**
+     * China (Volksrepublik): Renminbi Yuan
+     * 
+     */
+    CNY,
+
+    /**
+     * Kolumbien: Peso
+     * 
+     */
+    COP,
+
+    /**
+     * Costa Rica: Colón
+     * 
+     */
+    CRC,
+
+    /**
+     * Serbien: Dinar
+     * 
+     */
+    CSD,
+
+    /**
+     * Kuba: Peso
+     * 
+     */
+    CUP,
+
+    /**
+     * Kap Verde: Escudo
+     * 
+     */
+    CVE,
+
+    /**
+     * Zypern (griechischer Teil): Pfund
+     * 
+     */
+    CYP,
+
+    /**
+     * Tschechien: Krone
+     * 
+     */
+    CZK,
+
+    /**
+     * Dschibuti: Franc
+     * 
+     */
+    DJV,
+
+    /**
+     * Dänemark: Krone
+     * 
+     */
+    DKK,
+
+    /**
+     * Dominikanische Republik: Peso
+     * 
+     */
+    DOP,
+
+    /**
+     * Algerien: Dinar
+     * 
+     */
+    DZD,
+
+    /**
+     * Ecuador (bis 2000): Sucre
+     * 
+     */
+    ECS,
+
+    /**
+     * Estland: Krone
+     * 
+     */
+    EEK,
+
+    /**
+     * Ägypten: Pfund
+     * 
+     */
+    EGP,
+
+    /**
+     * Äthiopien: Birr
+     * 
+     */
+    ETB,
+
+    /**
+     * Europäische Währungsunion: Euro
+     * 
+     */
+    EUR,
+
+    /**
+     * Fidschi: Dollar
+     * 
+     */
+    FJD,
+
+    /**
+     * Falklandinseln: Pfund
+     * 
+     */
+    FKP,
+
+    /**
+     * Vereinigtes Königreich: Pfund
+     * 
+     */
+    GBP,
+
+    /**
+     * Georgien: Lari
+     * 
+     */
+    GEL,
+
+    /**
+     * Ghana: Cedi
+     * 
+     */
+    GHC,
+
+    /**
+     * Gibraltar: Pfund
+     * 
+     */
+    GIP,
+
+    /**
+     * Gambia: Dalasi
+     * 
+     */
+    GMD,
+
+    /**
+     * Guinea: Franc
+     * 
+     */
+    GNF,
+
+    /**
+     * Guatemala: Quetzal
+     * 
+     */
+    GTQ,
+
+    /**
+     * Guyana: Dollar
+     * 
+     */
+    GYD,
+
+    /**
+     * Hongkong: Dollar
+     * 
+     */
+    HKD,
+
+    /**
+     * Honduras: Lempira
+     * 
+     */
+    HNL,
+
+    /**
+     * Kroatien: Kuna
+     * 
+     */
+    HRK,
+
+    /**
+     * Haiti: Gourde
+     * 
+     */
+    HTG,
+
+    /**
+     * Ungarn: Forint
+     * 
+     */
+    HUF,
+
+    /**
+     * Indonesien: Rupiah
+     * 
+     */
+    IDR,
+
+    /**
+     * Israel: Schekel
+     * 
+     */
+    ILS,
+
+    /**
+     * Indien: Rupie
+     * 
+     */
+    INR,
+
+    /**
+     * Irak: Dinar
+     * 
+     */
+    IQD,
+
+    /**
+     * Iran: Rial
+     * 
+     */
+    IRR,
+
+    /**
+     * Island: Krone
+     * 
+     */
+    ISK,
+
+    /**
+     * Jamaika: Dollar
+     * 
+     */
+    JMD,
+
+    /**
+     * Jordanien: Dinar
+     * 
+     */
+    JOD,
+
+    /**
+     * Japan: Yen
+     * 
+     */
+    JPY,
+
+    /**
+     * Kenia: Schilling
+     * 
+     */
+    KES,
+
+    /**
+     * Kirgisistan: Som
+     * 
+     */
+    KGS,
+
+    /**
+     * Kambodscha: Riel
+     * 
+     */
+    KHR,
+
+    /**
+     * Komoren: Franc
+     * 
+     */
+    KMF,
+
+    /**
+     * Nordkorea: Won
+     * 
+     */
+    KPW,
+
+    /**
+     * Südkorea: Won
+     * 
+     */
+    KRW,
+
+    /**
+     * Kuwait: Dinar
+     * 
+     */
+    KWD,
+
+    /**
+     * Kaimaninseln: Dollar
+     * 
+     */
+    KYD,
+
+    /**
+     * Kasachstan: Tenge
+     * 
+     */
+    KZT,
+
+    /**
+     * Laos: Kip
+     * 
+     */
+    LAK,
+
+    /**
+     * Libanon: Pfund
+     * 
+     */
+    LBP,
+
+    /**
+     * Sri Lanka: Rupie
+     * 
+     */
+    LKR,
+
+    /**
+     * Liberia: Dollar
+     * 
+     */
+    LRD,
+
+    /**
+     * Lesotho: Loti
+     * 
+     */
+    LSL,
+
+    /**
+     * Litauen: Litas
+     * 
+     */
+    LTL,
+
+    /**
+     * Lettland: Lats
+     * 
+     */
+    LVL,
+
+    /**
+     * Libyen: Dinar
+     * 
+     */
+    LYD,
+
+    /**
+     * Marokko: Dirham
+     * 
+     */
+    MAD,
+
+    /**
+     * Moldawien: Leu
+     * 
+     */
+    MDL,
+
+    /**
+     * Madagaskar: Franc
+     * 
+     */
+    MGF,
+
+    /**
+     * Mazedonien: Denar
+     * 
+     */
+    MKD,
+
+    /**
+     * Myanmar: Kyat
+     * 
+     */
+    MMK,
+
+    /**
+     * Mongolei: Tugrik
+     * 
+     */
+    MNT,
+
+    /**
+     * Macau: Pataca
+     * 
+     */
+    MOP,
+
+    /**
+     * Mauretanien: Ouguiya
+     * 
+     */
+    MRO,
+
+    /**
+     * Malta: Lira
+     * 
+     */
+    MTL,
+
+    /**
+     * Mauritius: Rupie
+     * 
+     */
+    MUR,
+
+    /**
+     * Malediven: Rufiyaa
+     * 
+     */
+    MVR,
+
+    /**
+     * Malawi: Kwacha
+     * 
+     */
+    MWK,
+
+    /**
+     * Mexiko: Peso
+     * 
+     */
+    MXN,
+
+    /**
+     * Malaysia: Ringgit
+     * 
+     */
+    MYR,
+
+    /**
+     * Mosambik: Metical
+     * 
+     */
+    MZM,
+
+    /**
+     * Namibia: Dollar
+     * 
+     */
+    NAD,
+
+    /**
+     * Nigeria: Naira
+     * 
+     */
+    NGN,
+
+    /**
+     * Nicaragua: Cordoba Oro
+     * 
+     */
+    NIO,
+
+    /**
+     * Norwegen: Krone
+     * 
+     */
+    NOK,
+
+    /**
+     * Nepal: Rupie
+     * 
+     */
+    NPR,
+
+    /**
+     * Neuseeland: Dollar
+     * 
+     */
+    NZD,
+
+    /**
+     * Oman: Rial
+     * 
+     */
+    OMR,
+
+    /**
+     * Panama: Balboa
+     * 
+     */
+    PAB,
+
+    /**
+     * Peru: Nuevo Sol
+     * 
+     */
+    PEN,
+
+    /**
+     * Papua-Neuguinea: Kina
+     * 
+     */
+    PGK,
+
+    /**
+     * Philippinen: Peso
+     * 
+     */
+    PHP,
+
+    /**
+     * Pakistan: Rupie
+     * 
+     */
+    PKR,
+
+    /**
+     * Polen: Zloty
+     * 
+     */
+    PLN,
+
+    /**
+     * Paraguay: Guaraní
+     * 
+     */
+    PYG,
+
+    /**
+     * Katar: Riyal
+     * 
+     */
+    QAR,
+
+    /**
+     * Rumänien: Leu
+     * 
+     */
+    ROL,
+
+    /**
+     * Russland: Rubel
+     * 
+     */
+    RUB,
+
+    /**
+     * Ruanda: Franc
+     * 
+     */
+    RWF,
+
+    /**
+     * Saudi-Arabien: Riyal
+     * 
+     */
+    SAR,
+
+    /**
+     * Salomonen: Dollar
+     * 
+     */
+    SBD,
+
+    /**
+     * Seychellen: Rupie
+     * 
+     */
+    SCR,
+
+    /**
+     * Sudan: Dinar
+     * 
+     */
+    SDD,
+
+    /**
+     * Schweden: Krone
+     * 
+     */
+    SEK,
+
+    /**
+     * Singapur: Dollar
+     * 
+     */
+    SGD,
+
+    /**
+     * St. Helena: Pfund
+     * 
+     */
+    SHP,
+
+    /**
+     * Slowenien: Tolar
+     * 
+     */
+    SIT,
+
+    /**
+     * Slowakei: Krone
+     * 
+     */
+    SKK,
+
+    /**
+     * Sierra Leone: Leone
+     * 
+     */
+    SLL,
+
+    /**
+     * Somalia: Schilling
+     * 
+     */
+    SOS,
+
+    /**
+     * Suriname: Dollar
+     * 
+     */
+    SRD,
+
+    /**
+     * São Tomé und Príncipe: Dobra
+     * 
+     */
+    STD,
+
+    /**
+     * El Salvador: Colón
+     * 
+     */
+    SVC,
+
+    /**
+     * Syrien: Pfund
+     * 
+     */
+    SYP,
+
+    /**
+     * Swasiland: Lilangeni
+     * 
+     */
+    SZL,
+
+    /**
+     * Thailand: Baht
+     * 
+     */
+    THB,
+
+    /**
+     * Tadschikistan: Somoni
+     * 
+     */
+    TJS,
+
+    /**
+     * Turkmenistan: Manat
+     * 
+     */
+    TMM,
+
+    /**
+     * Tunesien: Dinar
+     * 
+     */
+    TND,
+
+    /**
+     * Tonga: Pa'anga
+     * 
+     */
+    TOP,
+
+    /**
+     * Türkei: Lira
+     * 
+     */
+    TRL,
+
+    /**
+     * Türkei: Neue Lira (ab 2005)
+     * 
+     */
+    TRY,
+
+    /**
+     * Trinidad und Tobago: Dollar
+     * 
+     */
+    TTD,
+
+    /**
+     * Taiwan: Dollar
+     * 
+     */
+    TWD,
+
+    /**
+     * Tansania: Schilling
+     * 
+     */
+    TZS,
+
+    /**
+     * Ukraine: Hrywnja
+     * 
+     */
+    UAH,
+
+    /**
+     * Uganda: Shilling
+     * 
+     */
+    UGX,
+
+    /**
+     * USA: Dollar
+     * 
+     */
+    USD,
+
+    /**
+     * Uruguay: Peso
+     * 
+     */
+    UYU,
+
+    /**
+     * Usbekistan: Sum
+     * 
+     */
+    UZS,
+
+    /**
+     * Venezuela: Bolivar
+     * 
+     */
+    VEB,
+
+    /**
+     * Vietnam: Dong
+     * 
+     */
+    VND,
+
+    /**
+     * Vanuatu: Vatu
+     * 
+     */
+    VUV,
+
+    /**
+     * Samoa: Tala
+     * 
+     */
+    WST,
+
+    /**
+     * Zentralafrikanische Wirtschafts- und Währungsunion: CFA-Franc
+     * 
+     */
+    XAF,
+
+    /**
+     * Ostkaribische Währungsunion: Dollar
+     * 
+     */
+    XCD,
+
+    /**
+     * Westafrikanische Wirtschafts- und Währungsunion: CFA-Franc
+     * 
+     */
+    XOF,
+
+    /**
+     * Neukaledonien: CFP-Franc
+     * 
+     */
+    XPF,
+
+    /**
+     * Spezialcode für Testzwecke; keine existierende Währung
+     * 
+     */
+    XTS,
+
+    /**
+     * keine Währung
+     * 
+     */
+    XXX,
+
+    /**
+     * Jemen: Rial
+     * 
+     */
+    YER,
+
+    /**
+     * Südafrika: Rand
+     * 
+     */
+    ZAR,
+
+    /**
+     * Sambia: Kwacha
+     * 
+     */
+    ZMK,
+
+    /**
+     * Simbabwe: Dollar
+     * 
+     */
+    ZWD;
+
+    public String value() {
+        return name();
+    }
+
+    public static CurrencyCode fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DSAKeyValueType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DSAKeyValueType.java
new file mode 100644
index 0000000..9de982d
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DSAKeyValueType.java
@@ -0,0 +1,227 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DSAKeyValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DSAKeyValueType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;sequence minOccurs="0">
+ *           &lt;element name="P" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *           &lt;element name="Q" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *         &lt;/sequence>
+ *         &lt;element name="G" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"; minOccurs="0"/>
+ *         &lt;element name="Y" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *         &lt;element name="J" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"; minOccurs="0"/>
+ *         &lt;sequence minOccurs="0">
+ *           &lt;element name="Seed" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *           &lt;element name="PgenCounter" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *         &lt;/sequence>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DSAKeyValueType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "p",
+    "q",
+    "g",
+    "y",
+    "j",
+    "seed",
+    "pgenCounter"
+})
+public class DSAKeyValueType {
+
+    @XmlElement(name = "P")
+    protected byte[] p;
+    @XmlElement(name = "Q")
+    protected byte[] q;
+    @XmlElement(name = "G")
+    protected byte[] g;
+    @XmlElement(name = "Y", required = true)
+    protected byte[] y;
+    @XmlElement(name = "J")
+    protected byte[] j;
+    @XmlElement(name = "Seed")
+    protected byte[] seed;
+    @XmlElement(name = "PgenCounter")
+    protected byte[] pgenCounter;
+
+    /**
+     * Gets the value of the p property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getP() {
+        return p;
+    }
+
+    /**
+     * Sets the value of the p property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setP(byte[] value) {
+        this.p = value;
+    }
+
+    /**
+     * Gets the value of the q property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getQ() {
+        return q;
+    }
+
+    /**
+     * Sets the value of the q property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setQ(byte[] value) {
+        this.q = value;
+    }
+
+    /**
+     * Gets the value of the g property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getG() {
+        return g;
+    }
+
+    /**
+     * Sets the value of the g property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setG(byte[] value) {
+        this.g = value;
+    }
+
+    /**
+     * Gets the value of the y property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getY() {
+        return y;
+    }
+
+    /**
+     * Sets the value of the y property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setY(byte[] value) {
+        this.y = value;
+    }
+
+    /**
+     * Gets the value of the j property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getJ() {
+        return j;
+    }
+
+    /**
+     * Sets the value of the j property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setJ(byte[] value) {
+        this.j = value;
+    }
+
+    /**
+     * Gets the value of the seed property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getSeed() {
+        return seed;
+    }
+
+    /**
+     * Sets the value of the seed property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setSeed(byte[] value) {
+        this.seed = value;
+    }
+
+    /**
+     * Gets the value of the pgenCounter property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getPgenCounter() {
+        return pgenCounter;
+    }
+
+    /**
+     * Sets the value of the pgenCounter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setPgenCounter(byte[] value) {
+        this.pgenCounter = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataDigestType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataDigestType.java
new file mode 100644
index 0000000..7572129
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataDigestType.java
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for DataDigestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DataDigestType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;urn:org:ebics:H004>DigestType">
+ *       &lt;attribute name="SignatureVersion" 
type="{urn:org:ebics:H004}SignatureVersionType" default="A004" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataDigestType", propOrder = {
+    "value"
+})
+public class DataDigestType {
+
+    @XmlValue
+    protected byte[] value;
+    @XmlAttribute(name = "SignatureVersion")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String signatureVersion;
+
+    /**
+     * Datentyp für Hashwerte.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setValue(byte[] value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the signatureVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSignatureVersion() {
+        if (signatureVersion == null) {
+            return "A004";
+        } else {
+            return signatureVersion;
+        }
+    }
+
+    /**
+     * Sets the value of the signatureVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSignatureVersion(String value) {
+        this.signatureVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataEncryptionInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataEncryptionInfoType.java
new file mode 100644
index 0000000..bfdbe50
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataEncryptionInfoType.java
@@ -0,0 +1,205 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for the modelling of information regarding the encryption of 
signature and order data.
+ * 
+ * <p>Java class for DataEncryptionInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DataEncryptionInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="EncryptionPubKeyDigest">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;urn:org:ebics:H004>PubKeyDigestType">
+ *                 &lt;attribute name="Version" use="required" 
type="{urn:org:ebics:H004}EncryptionVersionType" />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="TransactionKey" 
type="{urn:org:ebics:H004}SymmetricKeyType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataEncryptionInfoType", propOrder = {
+    "encryptionPubKeyDigest",
+    "transactionKey",
+    "any"
+})
+@XmlSeeAlso({
+    
tech.libeufin.messages.ebics.keyrequest.DataTransferRequestType.DataEncryptionInfo.class,
+    
tech.libeufin.messages.ebics.keyrequest.DataTransferResponseType.DataEncryptionInfo.class
+})
+public class DataEncryptionInfoType {
+
+    @XmlElement(name = "EncryptionPubKeyDigest", required = true)
+    protected DataEncryptionInfoType.EncryptionPubKeyDigest 
encryptionPubKeyDigest;
+    @XmlElement(name = "TransactionKey", required = true)
+    protected byte[] transactionKey;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the encryptionPubKeyDigest property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataEncryptionInfoType.EncryptionPubKeyDigest }
+     *     
+     */
+    public DataEncryptionInfoType.EncryptionPubKeyDigest 
getEncryptionPubKeyDigest() {
+        return encryptionPubKeyDigest;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyDigest property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataEncryptionInfoType.EncryptionPubKeyDigest }
+     *     
+     */
+    public void 
setEncryptionPubKeyDigest(DataEncryptionInfoType.EncryptionPubKeyDigest value) {
+        this.encryptionPubKeyDigest = value;
+    }
+
+    /**
+     * Gets the value of the transactionKey property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getTransactionKey() {
+        return transactionKey;
+    }
+
+    /**
+     * Sets the value of the transactionKey property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setTransactionKey(byte[] value) {
+        this.transactionKey = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>PubKeyDigestType">
+     *       &lt;attribute name="Version" use="required" 
type="{urn:org:ebics:H004}EncryptionVersionType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class EncryptionPubKeyDigest
+        extends PubKeyDigestType
+    {
+
+        @XmlAttribute(name = "Version", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String version;
+
+        /**
+         * Gets the value of the version property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getVersion() {
+            return version;
+        }
+
+        /**
+         * Sets the value of the version property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setVersion(String value) {
+            this.version = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferRequestType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferRequestType.java
new file mode 100644
index 0000000..16a8ee9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferRequestType.java
@@ -0,0 +1,386 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für den Transfer von Auftragsdaten (Anfrage).
+ * 
+ * <p>Java class for DataTransferRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DataTransferRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;choice>
+ *           &lt;sequence>
+ *             &lt;element name="DataEncryptionInfo">
+ *               &lt;complexType>
+ *                 &lt;complexContent>
+ *                   &lt;extension 
base="{urn:org:ebics:H004}DataEncryptionInfoType">
+ *                     &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *                   &lt;/extension>
+ *                 &lt;/complexContent>
+ *               &lt;/complexType>
+ *             &lt;/element>
+ *             &lt;element name="SignatureData">
+ *               &lt;complexType>
+ *                 &lt;simpleContent>
+ *                   &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+ *                     &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *                   &lt;/extension>
+ *                 &lt;/simpleContent>
+ *               &lt;/complexType>
+ *             &lt;/element>
+ *           &lt;/sequence>
+ *           &lt;sequence>
+ *             &lt;element name="OrderData">
+ *               &lt;complexType>
+ *                 &lt;simpleContent>
+ *                   &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+ *                     &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+ *                   &lt;/extension>
+ *                 &lt;/simpleContent>
+ *               &lt;/complexType>
+ *             &lt;/element>
+ *           &lt;/sequence>
+ *         &lt;/choice>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataTransferRequestType", propOrder = {
+    "dataEncryptionInfo",
+    "signatureData",
+    "orderData",
+    "any"
+})
+public class DataTransferRequestType {
+
+    @XmlElement(name = "DataEncryptionInfo")
+    protected DataTransferRequestType.DataEncryptionInfo dataEncryptionInfo;
+    @XmlElement(name = "SignatureData")
+    protected DataTransferRequestType.SignatureData signatureData;
+    @XmlElement(name = "OrderData")
+    protected DataTransferRequestType.OrderData orderData;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the dataEncryptionInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataTransferRequestType.DataEncryptionInfo }
+     *     
+     */
+    public DataTransferRequestType.DataEncryptionInfo getDataEncryptionInfo() {
+        return dataEncryptionInfo;
+    }
+
+    /**
+     * Sets the value of the dataEncryptionInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataTransferRequestType.DataEncryptionInfo }
+     *     
+     */
+    public void 
setDataEncryptionInfo(DataTransferRequestType.DataEncryptionInfo value) {
+        this.dataEncryptionInfo = value;
+    }
+
+    /**
+     * Gets the value of the signatureData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataTransferRequestType.SignatureData }
+     *     
+     */
+    public DataTransferRequestType.SignatureData getSignatureData() {
+        return signatureData;
+    }
+
+    /**
+     * Sets the value of the signatureData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataTransferRequestType.SignatureData }
+     *     
+     */
+    public void setSignatureData(DataTransferRequestType.SignatureData value) {
+        this.signatureData = value;
+    }
+
+    /**
+     * Gets the value of the orderData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataTransferRequestType.OrderData }
+     *     
+     */
+    public DataTransferRequestType.OrderData getOrderData() {
+        return orderData;
+    }
+
+    /**
+     * Sets the value of the orderData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataTransferRequestType.OrderData }
+     *     
+     */
+    public void setOrderData(DataTransferRequestType.OrderData value) {
+        this.orderData = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;extension base="{urn:org:ebics:H004}DataEncryptionInfoType">
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/extension>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class DataEncryptionInfo
+        extends DataEncryptionInfoType
+    {
+
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+     *       &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class OrderData {
+
+        @XmlValue
+        protected byte[] value;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Datentyp für binäre Auftragsdaten (komprimiert, verschlüsselt und 
kodiert).
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>SignatureDataType">
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class SignatureData {
+
+        @XmlValue
+        protected byte[] value;
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Datentyp für binäre Signaturdaten (komprimiert, verschlüsselt und 
kodiert).
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferResponseType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferResponseType.java
new file mode 100644
index 0000000..bb4b186
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DataTransferResponseType.java
@@ -0,0 +1,355 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für den Transfer von Auftragsdaten (Antwort).
+ * 
+ * <p>Java class for DataTransferResponseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DataTransferResponseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;sequence minOccurs="0">
+ *           &lt;element name="DataEncryptionInfo">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;extension 
base="{urn:org:ebics:H004}DataEncryptionInfoType">
+ *                   &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *                 &lt;/extension>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="SignatureData" maxOccurs="0" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+ *                   &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/sequence>
+ *         &lt;element name="OrderData">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+ *                 &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataTransferResponseType", propOrder = {
+    "dataEncryptionInfo",
+    "orderData",
+    "any"
+})
+public class DataTransferResponseType {
+
+    @XmlElement(name = "DataEncryptionInfo")
+    protected DataTransferResponseType.DataEncryptionInfo dataEncryptionInfo;
+    @XmlElement(name = "OrderData", required = true)
+    protected DataTransferResponseType.OrderData orderData;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the dataEncryptionInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataTransferResponseType.DataEncryptionInfo }
+     *     
+     */
+    public DataTransferResponseType.DataEncryptionInfo getDataEncryptionInfo() 
{
+        return dataEncryptionInfo;
+    }
+
+    /**
+     * Sets the value of the dataEncryptionInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataTransferResponseType.DataEncryptionInfo }
+     *     
+     */
+    public void 
setDataEncryptionInfo(DataTransferResponseType.DataEncryptionInfo value) {
+        this.dataEncryptionInfo = value;
+    }
+
+    /**
+     * Gets the value of the orderData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataTransferResponseType.OrderData }
+     *     
+     */
+    public DataTransferResponseType.OrderData getOrderData() {
+        return orderData;
+    }
+
+    /**
+     * Sets the value of the orderData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataTransferResponseType.OrderData }
+     *     
+     */
+    public void setOrderData(DataTransferResponseType.OrderData value) {
+        this.orderData = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;extension base="{urn:org:ebics:H004}DataEncryptionInfoType">
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/extension>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class DataEncryptionInfo
+        extends DataEncryptionInfoType
+    {
+
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+     *       &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class OrderData {
+
+        @XmlValue
+        protected byte[] value;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Datentyp für binäre Auftragsdaten (komprimiert, verschlüsselt und 
kodiert).
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>SignatureDataType">
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class SignatureData {
+
+        @XmlValue
+        protected byte[] value;
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Datentyp für binäre Signaturdaten (komprimiert, verschlüsselt und 
kodiert).
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DigestMethodType.java
similarity index 52%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DigestMethodType.java
index 9d1e96f..1cd54c7 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/DigestMethodType.java
@@ -1,34 +1,38 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
-import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
- * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for DigestMethodType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="DigestMethodType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
+ *       &lt;attribute name="Algorithm" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
  *     &lt;/restriction>
  *   &lt;/complexContent>
  * &lt;/complexType>
@@ -37,71 +41,71 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
-    "any"
+@XmlType(name = "DigestMethodType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
 })
-public class HEVRequestDataType {
+public class DigestMethodType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlMixed
     @XmlAnyElement(lax = true)
-    protected List<Object> any;
-
-    /**
-     * Gets the value of the hostID property.
-     * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
-     */
-    public String getHostID() {
-        return hostID;
-    }
-
-    /**
-     * Sets the value of the hostID property.
-     * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
-     */
-    public void setHostID(String value) {
-        this.hostID = value;
-    }
+    protected List<Object> content;
+    @XmlAttribute(name = "Algorithm", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String algorithm;
 
     /**
-     * Gets the value of the any property.
+     * Gets the value of the content property.
      * 
      * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
      * <pre>
-     *    getAny().add(newItem);
+     *    getContent().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
+     * {@link String }
      * 
      * 
      */
-    public List<Object> getAny() {
-        if (any == null) {
-            any = new ArrayList<Object>();
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
         }
-        return this.any;
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the algorithm property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Sets the value of the algorithm property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
     }
 
 }
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsNoPubKeyDigestsRequest.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsNoPubKeyDigestsRequest.java
new file mode 100644
index 0000000..5eaf069
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsNoPubKeyDigestsRequest.java
@@ -0,0 +1,335 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="header">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="static" 
type="{urn:org:ebics:H004}NoPubKeyDigestsRequestStaticHeaderType"/>
+ *                   &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+ *                 &lt;/sequence>
+ *                 &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element ref="{urn:org:ebics:H004}AuthSignature"/>
+ *         &lt;element name="body">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"; maxOccurs="0" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{urn:org:ebics:H004}VersionAttrGroup"/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "authSignature",
+    "body"
+})
+@XmlRootElement(name = "ebicsNoPubKeyDigestsRequest")
+public class EbicsNoPubKeyDigestsRequest {
+
+    @XmlElement(required = true)
+    protected EbicsNoPubKeyDigestsRequest.Header header;
+    @XmlElement(name = "AuthSignature", required = true)
+    protected SignatureType authSignature;
+    @XmlElement(required = true)
+    protected EbicsNoPubKeyDigestsRequest.Body body;
+    @XmlAttribute(name = "Version", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String version;
+    @XmlAttribute(name = "Revision")
+    protected Integer revision;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsNoPubKeyDigestsRequest.Header }
+     *     
+     */
+    public EbicsNoPubKeyDigestsRequest.Header getHeader() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsNoPubKeyDigestsRequest.Header }
+     *     
+     */
+    public void setHeader(EbicsNoPubKeyDigestsRequest.Header value) {
+        this.header = value;
+    }
+
+    /**
+     * Authentifikationssignatur.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignatureType }
+     *     
+     */
+    public SignatureType getAuthSignature() {
+        return authSignature;
+    }
+
+    /**
+     * Sets the value of the authSignature property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignatureType }
+     *     
+     */
+    public void setAuthSignature(SignatureType value) {
+        this.authSignature = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsNoPubKeyDigestsRequest.Body }
+     *     
+     */
+    public EbicsNoPubKeyDigestsRequest.Body getBody() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsNoPubKeyDigestsRequest.Body }
+     *     
+     */
+    public void setBody(EbicsNoPubKeyDigestsRequest.Body value) {
+        this.body = value;
+    }
+
+    /**
+     * Gets the value of the version property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVersion(String value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the revision property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getRevision() {
+        return revision;
+    }
+
+    /**
+     * Sets the value of the revision property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setRevision(Integer value) {
+        this.revision = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"; 
maxOccurs="0" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Body {
+
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="static" 
type="{urn:org:ebics:H004}NoPubKeyDigestsRequestStaticHeaderType"/>
+     *         &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "_static",
+        "mutable"
+    })
+    public static class Header {
+
+        @XmlElement(name = "static", required = true)
+        protected NoPubKeyDigestsRequestStaticHeaderType _static;
+        @XmlElement(required = true)
+        protected EmptyMutableHeaderType mutable;
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Gets the value of the static property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link NoPubKeyDigestsRequestStaticHeaderType }
+         *     
+         */
+        public NoPubKeyDigestsRequestStaticHeaderType getStatic() {
+            return _static;
+        }
+
+        /**
+         * Sets the value of the static property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link NoPubKeyDigestsRequestStaticHeaderType }
+         *     
+         */
+        public void setStatic(NoPubKeyDigestsRequestStaticHeaderType value) {
+            this._static = value;
+        }
+
+        /**
+         * Gets the value of the mutable property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public EmptyMutableHeaderType getMutable() {
+            return mutable;
+        }
+
+        /**
+         * Sets the value of the mutable property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public void setMutable(EmptyMutableHeaderType value) {
+            this.mutable = value;
+        }
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsecuredRequest.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsecuredRequest.java
new file mode 100644
index 0000000..0762dfe
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsecuredRequest.java
@@ -0,0 +1,510 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="header">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="static" 
type="{urn:org:ebics:H004}UnsecuredRequestStaticHeaderType"/>
+ *                   &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+ *                 &lt;/sequence>
+ *                 &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="body">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="DataTransfer">
+ *                     &lt;complexType>
+ *                       &lt;complexContent>
+ *                         &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                           &lt;sequence>
+ *                             &lt;element name="OrderData">
+ *                               &lt;complexType>
+ *                                 &lt;simpleContent>
+ *                                   &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+ *                                     &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+ *                                   &lt;/extension>
+ *                                 &lt;/simpleContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                           &lt;/sequence>
+ *                         &lt;/restriction>
+ *                       &lt;/complexContent>
+ *                     &lt;/complexType>
+ *                   &lt;/element>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{urn:org:ebics:H004}VersionAttrGroup"/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "ebicsUnsecuredRequest")
+public class EbicsUnsecuredRequest {
+
+    @XmlElement(required = true)
+    protected EbicsUnsecuredRequest.Header header;
+    @XmlElement(required = true)
+    protected EbicsUnsecuredRequest.Body body;
+    @XmlAttribute(name = "Version", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String version;
+    @XmlAttribute(name = "Revision")
+    protected Integer revision;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsUnsecuredRequest.Header }
+     *     
+     */
+    public EbicsUnsecuredRequest.Header getHeader() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsUnsecuredRequest.Header }
+     *     
+     */
+    public void setHeader(EbicsUnsecuredRequest.Header value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsUnsecuredRequest.Body }
+     *     
+     */
+    public EbicsUnsecuredRequest.Body getBody() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsUnsecuredRequest.Body }
+     *     
+     */
+    public void setBody(EbicsUnsecuredRequest.Body value) {
+        this.body = value;
+    }
+
+    /**
+     * Gets the value of the version property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVersion(String value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the revision property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getRevision() {
+        return revision;
+    }
+
+    /**
+     * Sets the value of the revision property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setRevision(Integer value) {
+        this.revision = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="DataTransfer">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *                 &lt;sequence>
+     *                   &lt;element name="OrderData">
+     *                     &lt;complexType>
+     *                       &lt;simpleContent>
+     *                         &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+     *                           &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+     *                         &lt;/extension>
+     *                       &lt;/simpleContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/sequence>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "dataTransfer"
+    })
+    public static class Body {
+
+        @XmlElement(name = "DataTransfer", required = true)
+        protected EbicsUnsecuredRequest.Body.DataTransfer dataTransfer;
+
+        /**
+         * Gets the value of the dataTransfer property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EbicsUnsecuredRequest.Body.DataTransfer }
+         *     
+         */
+        public EbicsUnsecuredRequest.Body.DataTransfer getDataTransfer() {
+            return dataTransfer;
+        }
+
+        /**
+         * Sets the value of the dataTransfer property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EbicsUnsecuredRequest.Body.DataTransfer }
+         *     
+         */
+        public void setDataTransfer(EbicsUnsecuredRequest.Body.DataTransfer 
value) {
+            this.dataTransfer = value;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content 
contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+         *       &lt;sequence>
+         *         &lt;element name="OrderData">
+         *           &lt;complexType>
+         *             &lt;simpleContent>
+         *               &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+         *                 &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+         *               &lt;/extension>
+         *             &lt;/simpleContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/sequence>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "orderData"
+        })
+        public static class DataTransfer {
+
+            @XmlElement(name = "OrderData", required = true)
+            protected EbicsUnsecuredRequest.Body.DataTransfer.OrderData 
orderData;
+
+            /**
+             * Gets the value of the orderData property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link EbicsUnsecuredRequest.Body.DataTransfer.OrderData }
+             *     
+             */
+            public EbicsUnsecuredRequest.Body.DataTransfer.OrderData 
getOrderData() {
+                return orderData;
+            }
+
+            /**
+             * Sets the value of the orderData property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link EbicsUnsecuredRequest.Body.DataTransfer.OrderData }
+             *     
+             */
+            public void 
setOrderData(EbicsUnsecuredRequest.Body.DataTransfer.OrderData value) {
+                this.orderData = value;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+             *       &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class OrderData {
+
+                @XmlValue
+                protected byte[] value;
+                @XmlAnyAttribute
+                private Map<QName, String> otherAttributes = new 
HashMap<QName, String>();
+
+                /**
+                 * Datentyp für binäre Auftragsdaten (komprimiert, 
verschlüsselt und kodiert).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     byte[]
+                 */
+                public byte[] getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     byte[]
+                 */
+                public void setValue(byte[] value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets a map that contains attributes that aren't bound to 
any typed property on this class.
+                 * 
+                 * <p>
+                 * the map is keyed by the name of the attribute and 
+                 * the value is the string value of the attribute.
+                 * 
+                 * the map returned by this method is live, and you can add 
new attribute
+                 * by updating the map directly. Because of this design, 
there's no setter.
+                 * 
+                 * 
+                 * @return
+                 *     always non-null
+                 */
+                public Map<QName, String> getOtherAttributes() {
+                    return otherAttributes;
+                }
+
+            }
+
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="static" 
type="{urn:org:ebics:H004}UnsecuredRequestStaticHeaderType"/>
+     *         &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "_static",
+        "mutable"
+    })
+    public static class Header {
+
+        @XmlElement(name = "static", required = true)
+        protected UnsecuredRequestStaticHeaderType _static;
+        @XmlElement(required = true)
+        protected EmptyMutableHeaderType mutable;
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Gets the value of the static property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link UnsecuredRequestStaticHeaderType }
+         *     
+         */
+        public UnsecuredRequestStaticHeaderType getStatic() {
+            return _static;
+        }
+
+        /**
+         * Sets the value of the static property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link UnsecuredRequestStaticHeaderType }
+         *     
+         */
+        public void setStatic(UnsecuredRequestStaticHeaderType value) {
+            this._static = value;
+        }
+
+        /**
+         * Gets the value of the mutable property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public EmptyMutableHeaderType getMutable() {
+            return mutable;
+        }
+
+        /**
+         * Sets the value of the mutable property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public void setMutable(EmptyMutableHeaderType value) {
+            this.mutable = value;
+        }
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsignedRequest.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsignedRequest.java
new file mode 100644
index 0000000..4d358fb
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EbicsUnsignedRequest.java
@@ -0,0 +1,633 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="header">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="static" 
type="{urn:org:ebics:H004}UnsignedRequestStaticHeaderType"/>
+ *                   &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+ *                 &lt;/sequence>
+ *                 &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="body">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="DataTransfer">
+ *                     &lt;complexType>
+ *                       &lt;complexContent>
+ *                         &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                           &lt;sequence>
+ *                             &lt;element name="SignatureData">
+ *                               &lt;complexType>
+ *                                 &lt;simpleContent>
+ *                                   &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+ *                                     &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+ *                                   &lt;/extension>
+ *                                 &lt;/simpleContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                             &lt;element name="OrderData">
+ *                               &lt;complexType>
+ *                                 &lt;simpleContent>
+ *                                   &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+ *                                     &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+ *                                   &lt;/extension>
+ *                                 &lt;/simpleContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                           &lt;/sequence>
+ *                         &lt;/restriction>
+ *                       &lt;/complexContent>
+ *                     &lt;/complexType>
+ *                   &lt;/element>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attGroup ref="{urn:org:ebics:H004}VersionAttrGroup"/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "ebicsUnsignedRequest")
+public class EbicsUnsignedRequest {
+
+    @XmlElement(required = true)
+    protected EbicsUnsignedRequest.Header header;
+    @XmlElement(required = true)
+    protected EbicsUnsignedRequest.Body body;
+    @XmlAttribute(name = "Version", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String version;
+    @XmlAttribute(name = "Revision")
+    protected Integer revision;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsUnsignedRequest.Header }
+     *     
+     */
+    public EbicsUnsignedRequest.Header getHeader() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsUnsignedRequest.Header }
+     *     
+     */
+    public void setHeader(EbicsUnsignedRequest.Header value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EbicsUnsignedRequest.Body }
+     *     
+     */
+    public EbicsUnsignedRequest.Body getBody() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EbicsUnsignedRequest.Body }
+     *     
+     */
+    public void setBody(EbicsUnsignedRequest.Body value) {
+        this.body = value;
+    }
+
+    /**
+     * Gets the value of the version property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVersion(String value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the revision property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getRevision() {
+        return revision;
+    }
+
+    /**
+     * Sets the value of the revision property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setRevision(Integer value) {
+        this.revision = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="DataTransfer">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *                 &lt;sequence>
+     *                   &lt;element name="SignatureData">
+     *                     &lt;complexType>
+     *                       &lt;simpleContent>
+     *                         &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+     *                           &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *                         &lt;/extension>
+     *                       &lt;/simpleContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                   &lt;element name="OrderData">
+     *                     &lt;complexType>
+     *                       &lt;simpleContent>
+     *                         &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+     *                           &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+     *                         &lt;/extension>
+     *                       &lt;/simpleContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/sequence>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "dataTransfer"
+    })
+    public static class Body {
+
+        @XmlElement(name = "DataTransfer", required = true)
+        protected EbicsUnsignedRequest.Body.DataTransfer dataTransfer;
+
+        /**
+         * Gets the value of the dataTransfer property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EbicsUnsignedRequest.Body.DataTransfer }
+         *     
+         */
+        public EbicsUnsignedRequest.Body.DataTransfer getDataTransfer() {
+            return dataTransfer;
+        }
+
+        /**
+         * Sets the value of the dataTransfer property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EbicsUnsignedRequest.Body.DataTransfer }
+         *     
+         */
+        public void setDataTransfer(EbicsUnsignedRequest.Body.DataTransfer 
value) {
+            this.dataTransfer = value;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content 
contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+         *       &lt;sequence>
+         *         &lt;element name="SignatureData">
+         *           &lt;complexType>
+         *             &lt;simpleContent>
+         *               &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+         *                 &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+         *               &lt;/extension>
+         *             &lt;/simpleContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *         &lt;element name="OrderData">
+         *           &lt;complexType>
+         *             &lt;simpleContent>
+         *               &lt;extension 
base="&lt;urn:org:ebics:H004>OrderDataType">
+         *                 &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+         *               &lt;/extension>
+         *             &lt;/simpleContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/sequence>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "signatureData",
+            "orderData"
+        })
+        public static class DataTransfer {
+
+            @XmlElement(name = "SignatureData", required = true)
+            protected EbicsUnsignedRequest.Body.DataTransfer.SignatureData 
signatureData;
+            @XmlElement(name = "OrderData", required = true)
+            protected EbicsUnsignedRequest.Body.DataTransfer.OrderData 
orderData;
+
+            /**
+             * Gets the value of the signatureData property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link EbicsUnsignedRequest.Body.DataTransfer.SignatureData 
}
+             *     
+             */
+            public EbicsUnsignedRequest.Body.DataTransfer.SignatureData 
getSignatureData() {
+                return signatureData;
+            }
+
+            /**
+             * Sets the value of the signatureData property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link EbicsUnsignedRequest.Body.DataTransfer.SignatureData 
}
+             *     
+             */
+            public void 
setSignatureData(EbicsUnsignedRequest.Body.DataTransfer.SignatureData value) {
+                this.signatureData = value;
+            }
+
+            /**
+             * Gets the value of the orderData property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link EbicsUnsignedRequest.Body.DataTransfer.OrderData }
+             *     
+             */
+            public EbicsUnsignedRequest.Body.DataTransfer.OrderData 
getOrderData() {
+                return orderData;
+            }
+
+            /**
+             * Sets the value of the orderData property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link EbicsUnsignedRequest.Body.DataTransfer.OrderData }
+             *     
+             */
+            public void 
setOrderData(EbicsUnsignedRequest.Body.DataTransfer.OrderData value) {
+                this.orderData = value;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension base="&lt;urn:org:ebics:H004>OrderDataType">
+             *       &lt;anyAttribute processContents='lax' 
namespace='urn:org:ebics:H004'/>
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class OrderData {
+
+                @XmlValue
+                protected byte[] value;
+                @XmlAnyAttribute
+                private Map<QName, String> otherAttributes = new 
HashMap<QName, String>();
+
+                /**
+                 * Datentyp für binäre Auftragsdaten (komprimiert, 
verschlüsselt und kodiert).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     byte[]
+                 */
+                public byte[] getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     byte[]
+                 */
+                public void setValue(byte[] value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets a map that contains attributes that aren't bound to 
any typed property on this class.
+                 * 
+                 * <p>
+                 * the map is keyed by the name of the attribute and 
+                 * the value is the string value of the attribute.
+                 * 
+                 * the map returned by this method is live, and you can add 
new attribute
+                 * by updating the map directly. Because of this design, 
there's no setter.
+                 * 
+                 * 
+                 * @return
+                 *     always non-null
+                 */
+                public Map<QName, String> getOtherAttributes() {
+                    return otherAttributes;
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension 
base="&lt;urn:org:ebics:H004>SignatureDataType">
+             *       &lt;attGroup 
ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class SignatureData {
+
+                @XmlValue
+                protected byte[] value;
+                @XmlAttribute(name = "authenticate", required = true)
+                protected boolean authenticate;
+
+                /**
+                 * Datentyp für binäre Signaturdaten (komprimiert, 
verschlüsselt und kodiert).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     byte[]
+                 */
+                public byte[] getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     byte[]
+                 */
+                public void setValue(byte[] value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the authenticate property.
+                 * 
+                 */
+                public boolean isAuthenticate() {
+                    return authenticate;
+                }
+
+                /**
+                 * Sets the value of the authenticate property.
+                 * 
+                 */
+                public void setAuthenticate(boolean value) {
+                    this.authenticate = value;
+                }
+
+            }
+
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="static" 
type="{urn:org:ebics:H004}UnsignedRequestStaticHeaderType"/>
+     *         &lt;element name="mutable" 
type="{urn:org:ebics:H004}EmptyMutableHeaderType"/>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}AuthenticationMarker"/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "_static",
+        "mutable"
+    })
+    public static class Header {
+
+        @XmlElement(name = "static", required = true)
+        protected UnsignedRequestStaticHeaderType _static;
+        @XmlElement(required = true)
+        protected EmptyMutableHeaderType mutable;
+        @XmlAttribute(name = "authenticate", required = true)
+        protected boolean authenticate;
+
+        /**
+         * Gets the value of the static property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link UnsignedRequestStaticHeaderType }
+         *     
+         */
+        public UnsignedRequestStaticHeaderType getStatic() {
+            return _static;
+        }
+
+        /**
+         * Sets the value of the static property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link UnsignedRequestStaticHeaderType }
+         *     
+         */
+        public void setStatic(UnsignedRequestStaticHeaderType value) {
+            this._static = value;
+        }
+
+        /**
+         * Gets the value of the mutable property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public EmptyMutableHeaderType getMutable() {
+            return mutable;
+        }
+
+        /**
+         * Sets the value of the mutable property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EmptyMutableHeaderType }
+         *     
+         */
+        public void setMutable(EmptyMutableHeaderType value) {
+            this.mutable = value;
+        }
+
+        /**
+         * Gets the value of the authenticate property.
+         * 
+         */
+        public boolean isAuthenticate() {
+            return authenticate;
+        }
+
+        /**
+         * Sets the value of the authenticate property.
+         * 
+         */
+        public void setAuthenticate(boolean value) {
+            this.authenticate = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EmptyMutableHeaderType.java
similarity index 56%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EmptyMutableHeaderType.java
index 9d1e96f..3c9a893 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EmptyMutableHeaderType.java
@@ -1,32 +1,34 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für den leeren variablen EBICS-Header von Key Managemen Aufträgen.
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for EmptyMutableHeaderType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="EmptyMutableHeaderType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,43 +39,14 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "EmptyMutableHeaderType", propOrder = {
     "any"
 })
-public class HEVRequestDataType {
+public class EmptyMutableHeaderType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
-    /**
-     * Gets the value of the hostID property.
-     * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
-     */
-    public String getHostID() {
-        return hostID;
-    }
-
-    /**
-     * Sets the value of the hostID property.
-     * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
-     */
-    public void setHostID(String value) {
-        this.hostID = value;
-    }
-
     /**
      * Gets the value of the any property.
      * 
@@ -92,8 +65,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionCertificateInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionCertificateInfoType.java
new file mode 100644
index 0000000..2640127
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionCertificateInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Data type for encryption key.
+ * 
+ * <p>Java class for EncryptionCertificateInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="EncryptionCertificateInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}CertificateInfoType">
+ *       &lt;sequence>
+ *         &lt;element name="EncryptionVersion" 
type="{urn:org:ebics:H004}EncryptionVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptionCertificateInfoType", propOrder = {
+    "encryptionVersion"
+})
+public class EncryptionCertificateInfoType
+    extends CertificateInfoType
+{
+
+    @XmlElement(name = "EncryptionVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String encryptionVersion;
+
+    /**
+     * Gets the value of the encryptionVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncryptionVersion() {
+        return encryptionVersion;
+    }
+
+    /**
+     * Sets the value of the encryptionVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncryptionVersion(String value) {
+        this.encryptionVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionPubKeyInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionPubKeyInfoType.java
new file mode 100644
index 0000000..e4aeb0d
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/EncryptionPubKeyInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für öffentliche Verschlüsselungsschlüssel.
+ * 
+ * <p>Java class for EncryptionPubKeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="EncryptionPubKeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}PubKeyInfoType">
+ *       &lt;sequence>
+ *         &lt;element name="EncryptionVersion" 
type="{urn:org:ebics:H004}EncryptionVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptionPubKeyInfoType", propOrder = {
+    "encryptionVersion"
+})
+public class EncryptionPubKeyInfoType
+    extends PubKeyInfoTypeAtEbicsTypes
+{
+
+    @XmlElement(name = "EncryptionVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String encryptionVersion;
+
+    /**
+     * Gets the value of the encryptionVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncryptionVersion() {
+        return encryptionVersion;
+    }
+
+    /**
+     * Sets the value of the encryptionVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncryptionVersion(String value) {
+        this.encryptionVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FDLOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FDLOrderParamsType.java
new file mode 100644
index 0000000..1babb4e
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FDLOrderParamsType.java
@@ -0,0 +1,232 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart FDL.
+ * 
+ * <p>Java class for FDLOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FDLOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="DateRange" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="Start" 
type="{urn:org:ebics:H004}DateType"/>
+ *                   &lt;element name="End" 
type="{urn:org:ebics:H004}DateType"/>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element ref="{urn:org:ebics:H004}Parameter" 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FDLOrderParamsType", propOrder = {
+    "dateRange",
+    "parameter",
+    "fileFormat"
+})
+public class FDLOrderParamsType {
+
+    @XmlElement(name = "DateRange")
+    protected FDLOrderParamsType.DateRange dateRange;
+    @XmlElement(name = "Parameter")
+    protected List<Parameter> parameter;
+    @XmlElement(name = "FileFormat", required = true)
+    protected FileFormatType fileFormat;
+
+    /**
+     * Gets the value of the dateRange property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FDLOrderParamsType.DateRange }
+     *     
+     */
+    public FDLOrderParamsType.DateRange getDateRange() {
+        return dateRange;
+    }
+
+    /**
+     * Sets the value of the dateRange property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FDLOrderParamsType.DateRange }
+     *     
+     */
+    public void setDateRange(FDLOrderParamsType.DateRange value) {
+        this.dateRange = value;
+    }
+
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getParameter().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Parameter }
+     * 
+     * 
+     */
+    public List<Parameter> getParameter() {
+        if (parameter == null) {
+            parameter = new ArrayList<Parameter>();
+        }
+        return this.parameter;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="Start" type="{urn:org:ebics:H004}DateType"/>
+     *         &lt;element name="End" type="{urn:org:ebics:H004}DateType"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "start",
+        "end"
+    })
+    public static class DateRange {
+
+        @XmlElement(name = "Start", required = true)
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar start;
+        @XmlElement(name = "End", required = true)
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar end;
+
+        /**
+         * Gets the value of the start property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getStart() {
+            return start;
+        }
+
+        /**
+         * Sets the value of the start property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setStart(XMLGregorianCalendar value) {
+            this.start = value;
+        }
+
+        /**
+         * Gets the value of the end property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getEnd() {
+            return end;
+        }
+
+        /**
+         * Sets the value of the end property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setEnd(XMLGregorianCalendar value) {
+            this.end = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FULOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FULOrderParamsType.java
new file mode 100644
index 0000000..3efc905
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FULOrderParamsType.java
@@ -0,0 +1,106 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart FUL.
+ * 
+ * <p>Java class for FULOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FULOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{urn:org:ebics:H004}Parameter" 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FULOrderParamsType", propOrder = {
+    "parameter",
+    "fileFormat"
+})
+public class FULOrderParamsType {
+
+    @XmlElement(name = "Parameter")
+    protected List<Parameter> parameter;
+    @XmlElement(name = "FileFormat", required = true)
+    protected FileFormatType fileFormat;
+
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getParameter().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Parameter }
+     * 
+     * 
+     */
+    public List<Parameter> getParameter() {
+        if (parameter == null) {
+            parameter = new ArrayList<Parameter>();
+        }
+        return this.parameter;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FileFormatType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FileFormatType.java
new file mode 100644
index 0000000..845651b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/FileFormatType.java
@@ -0,0 +1,102 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für das Dateiformat.
+ * 
+ * <p>Java class for FileFormatType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FileFormatType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>token">
+ *       &lt;attribute name="CountryCode" 
type="{urn:org:ebics:H004}CountryCodeType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FileFormatType", propOrder = {
+    "value"
+})
+public class FileFormatType {
+
+    @XmlValue
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String value;
+    @XmlAttribute(name = "CountryCode")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String countryCode;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the countryCode property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCountryCode() {
+        return countryCode;
+    }
+
+    /**
+     * Sets the value of the countryCode property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCountryCode(String value) {
+        this.countryCode = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/GenericOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/GenericOrderParamsType.java
new file mode 100644
index 0000000..0c7be89
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/GenericOrderParamsType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für beliebige Auftragsarten.
+ * 
+ * <p>Java class for GenericOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="GenericOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{urn:org:ebics:H004}Parameter" 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GenericOrderParamsType", propOrder = {
+    "parameter"
+})
+public class GenericOrderParamsType {
+
+    @XmlElement(name = "Parameter")
+    protected List<Parameter> parameter;
+
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getParameter().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Parameter }
+     * 
+     * 
+     */
+    public List<Parameter> getParameter() {
+        if (parameter == null) {
+            parameter = new ArrayList<Parameter>();
+        }
+        return this.parameter;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/H3KRequestOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/H3KRequestOrderDataType.java
new file mode 100644
index 0000000..b7fb153
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/H3KRequestOrderDataType.java
@@ -0,0 +1,190 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Order type for order data H3K (request: initialise all three user's keys).
+ * 
+ * <p>Java class for H3KRequestOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="H3KRequestOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="SignatureCertificateInfo" 
type="{urn:org:ebics:H004}SignatureCertificateInfoType"/>
+ *         &lt;element name="AuthenticationCertificateInfo" 
type="{urn:org:ebics:H004}AuthenticationCertificateInfoType"/>
+ *         &lt;element name="EncryptionCertificateInfo" 
type="{urn:org:ebics:H004}EncryptionCertificateInfoType"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "H3KRequestOrderDataType", propOrder = {
+    "signatureCertificateInfo",
+    "authenticationCertificateInfo",
+    "encryptionCertificateInfo",
+    "partnerID",
+    "userID"
+})
+public class H3KRequestOrderDataType {
+
+    @XmlElement(name = "SignatureCertificateInfo", required = true)
+    protected SignatureCertificateInfoType signatureCertificateInfo;
+    @XmlElement(name = "AuthenticationCertificateInfo", required = true)
+    protected AuthenticationCertificateInfoType authenticationCertificateInfo;
+    @XmlElement(name = "EncryptionCertificateInfo", required = true)
+    protected EncryptionCertificateInfoType encryptionCertificateInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+
+    /**
+     * Gets the value of the signatureCertificateInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignatureCertificateInfoType }
+     *     
+     */
+    public SignatureCertificateInfoType getSignatureCertificateInfo() {
+        return signatureCertificateInfo;
+    }
+
+    /**
+     * Sets the value of the signatureCertificateInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignatureCertificateInfoType }
+     *     
+     */
+    public void setSignatureCertificateInfo(SignatureCertificateInfoType 
value) {
+        this.signatureCertificateInfo = value;
+    }
+
+    /**
+     * Gets the value of the authenticationCertificateInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationCertificateInfoType }
+     *     
+     */
+    public AuthenticationCertificateInfoType 
getAuthenticationCertificateInfo() {
+        return authenticationCertificateInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationCertificateInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationCertificateInfoType }
+     *     
+     */
+    public void 
setAuthenticationCertificateInfo(AuthenticationCertificateInfoType value) {
+        this.authenticationCertificateInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionCertificateInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionCertificateInfoType }
+     *     
+     */
+    public EncryptionCertificateInfoType getEncryptionCertificateInfo() {
+        return encryptionCertificateInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionCertificateInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionCertificateInfoType }
+     *     
+     */
+    public void setEncryptionCertificateInfo(EncryptionCertificateInfoType 
value) {
+        this.encryptionCertificateInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HAAResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HAAResponseOrderDataType.java
new file mode 100644
index 0000000..25522bb
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HAAResponseOrderDataType.java
@@ -0,0 +1,114 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HAA (Antwort: abrufbare 
Auftragsarten abholen).
+ * 
+ * <p>Java class for HAAResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HAAResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderTypes" 
type="{urn:org:ebics:H004}OrderTListType"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HAAResponseOrderDataType", propOrder = {
+    "orderTypes",
+    "any"
+})
+public class HAAResponseOrderDataType {
+
+    @XmlList
+    @XmlElement(name = "OrderTypes", required = true)
+    protected List<String> orderTypes;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderTypes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderTypes 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderTypes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getOrderTypes() {
+        if (orderTypes == null) {
+            orderTypes = new ArrayList<String>();
+        }
+        return this.orderTypes;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCARequestOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCARequestOrderDataType.java
new file mode 100644
index 0000000..d6fa57d
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCARequestOrderDataType.java
@@ -0,0 +1,200 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HCA (Anfrage: Änderung der 
Teilnehmerschlüssel für Authentifikation und Verschlüsselung).
+ * 
+ * <p>Java class for HCARequestOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HCARequestOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationPubKeyInfo" 
type="{urn:org:ebics:H004}AuthenticationPubKeyInfoType"/>
+ *         &lt;element name="EncryptionPubKeyInfo" 
type="{urn:org:ebics:H004}EncryptionPubKeyInfoType"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HCARequestOrderDataType", propOrder = {
+    "authenticationPubKeyInfo",
+    "encryptionPubKeyInfo",
+    "partnerID",
+    "userID",
+    "any"
+})
+public class HCARequestOrderDataType {
+
+    @XmlElement(name = "AuthenticationPubKeyInfo", required = true)
+    protected AuthenticationPubKeyInfoType authenticationPubKeyInfo;
+    @XmlElement(name = "EncryptionPubKeyInfo", required = true)
+    protected EncryptionPubKeyInfoType encryptionPubKeyInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the authenticationPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public AuthenticationPubKeyInfoType getAuthenticationPubKeyInfo() {
+        return authenticationPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public void setAuthenticationPubKeyInfo(AuthenticationPubKeyInfoType 
value) {
+        this.authenticationPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public EncryptionPubKeyInfoType getEncryptionPubKeyInfo() {
+        return encryptionPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public void setEncryptionPubKeyInfo(EncryptionPubKeyInfoType value) {
+        this.encryptionPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCSRequestOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCSRequestOrderDataType.java
new file mode 100644
index 0000000..bbbcb15
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HCSRequestOrderDataType.java
@@ -0,0 +1,228 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HCS (Anfrage: Schlüsselwechsel 
aller Schlüssel).
+ * 
+ * <p>Java class for HCSRequestOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HCSRequestOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationPubKeyInfo" 
type="{urn:org:ebics:H004}AuthenticationPubKeyInfoType"/>
+ *         &lt;element name="EncryptionPubKeyInfo" 
type="{urn:org:ebics:H004}EncryptionPubKeyInfoType"/>
+ *         &lt;element ref="{http://www.ebics.org/S001}SignaturePubKeyInfo"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HCSRequestOrderDataType", propOrder = {
+    "authenticationPubKeyInfo",
+    "encryptionPubKeyInfo",
+    "signaturePubKeyInfo",
+    "partnerID",
+    "userID",
+    "any"
+})
+public class HCSRequestOrderDataType {
+
+    @XmlElement(name = "AuthenticationPubKeyInfo", required = true)
+    protected AuthenticationPubKeyInfoType authenticationPubKeyInfo;
+    @XmlElement(name = "EncryptionPubKeyInfo", required = true)
+    protected EncryptionPubKeyInfoType encryptionPubKeyInfo;
+    @XmlElement(name = "SignaturePubKeyInfo", namespace = 
"http://www.ebics.org/S001";, required = true)
+    protected SignaturePubKeyInfoType signaturePubKeyInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the authenticationPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public AuthenticationPubKeyInfoType getAuthenticationPubKeyInfo() {
+        return authenticationPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public void setAuthenticationPubKeyInfo(AuthenticationPubKeyInfoType 
value) {
+        this.authenticationPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public EncryptionPubKeyInfoType getEncryptionPubKeyInfo() {
+        return encryptionPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public void setEncryptionPubKeyInfo(EncryptionPubKeyInfoType value) {
+        this.encryptionPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the signaturePubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignaturePubKeyInfoType }
+     *     
+     */
+    public SignaturePubKeyInfoType getSignaturePubKeyInfo() {
+        return signaturePubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the signaturePubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignaturePubKeyInfoType }
+     *     
+     */
+    public void setSignaturePubKeyInfo(SignaturePubKeyInfoType value) {
+        this.signaturePubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HIARequestOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HIARequestOrderDataType.java
new file mode 100644
index 0000000..c7adbae
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HIARequestOrderDataType.java
@@ -0,0 +1,200 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HIA (Anfrage: Initialisierung 
der Teilnehmerschlüssel für Authentifikation und Verschlüsselung).
+ * 
+ * <p>Java class for HIARequestOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HIARequestOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationPubKeyInfo" 
type="{urn:org:ebics:H004}AuthenticationPubKeyInfoType"/>
+ *         &lt;element name="EncryptionPubKeyInfo" 
type="{urn:org:ebics:H004}EncryptionPubKeyInfoType"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HIARequestOrderDataType", propOrder = {
+    "authenticationPubKeyInfo",
+    "encryptionPubKeyInfo",
+    "partnerID",
+    "userID",
+    "any"
+})
+public class HIARequestOrderDataType {
+
+    @XmlElement(name = "AuthenticationPubKeyInfo", required = true)
+    protected AuthenticationPubKeyInfoType authenticationPubKeyInfo;
+    @XmlElement(name = "EncryptionPubKeyInfo", required = true)
+    protected EncryptionPubKeyInfoType encryptionPubKeyInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the authenticationPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public AuthenticationPubKeyInfoType getAuthenticationPubKeyInfo() {
+        return authenticationPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public void setAuthenticationPubKeyInfo(AuthenticationPubKeyInfoType 
value) {
+        this.authenticationPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public EncryptionPubKeyInfoType getEncryptionPubKeyInfo() {
+        return encryptionPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public void setEncryptionPubKeyInfo(EncryptionPubKeyInfoType value) {
+        this.encryptionPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HKDResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HKDResponseOrderDataType.java
new file mode 100644
index 0000000..a577659
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HKDResponseOrderDataType.java
@@ -0,0 +1,140 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Order data for order type HKD (response: receive customer based information 
on the customer and the customer's user.
+ * 
+ * <p>Java class for HKDResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HKDResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="PartnerInfo" 
type="{urn:org:ebics:H004}PartnerInfoType"/>
+ *         &lt;element name="UserInfo" type="{urn:org:ebics:H004}UserInfoType" 
maxOccurs="unbounded"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HKDResponseOrderDataType", propOrder = {
+    "partnerInfo",
+    "userInfo",
+    "any"
+})
+public class HKDResponseOrderDataType {
+
+    @XmlElement(name = "PartnerInfo", required = true)
+    protected PartnerInfoType partnerInfo;
+    @XmlElement(name = "UserInfo", required = true)
+    protected List<UserInfoType> userInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PartnerInfoType }
+     *     
+     */
+    public PartnerInfoType getPartnerInfo() {
+        return partnerInfo;
+    }
+
+    /**
+     * Sets the value of the partnerInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PartnerInfoType }
+     *     
+     */
+    public void setPartnerInfo(PartnerInfoType value) {
+        this.partnerInfo = value;
+    }
+
+    /**
+     * Gets the value of the userInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the userInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getUserInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link UserInfoType }
+     * 
+     * 
+     */
+    public List<UserInfoType> getUserInfo() {
+        if (userInfo == null) {
+            userInfo = new ArrayList<UserInfoType>();
+        }
+        return this.userInfo;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPBResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPBResponseOrderDataType.java
new file mode 100644
index 0000000..109eed5
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPBResponseOrderDataType.java
@@ -0,0 +1,169 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HPB (Antwort: Transfer der 
Bankschlüssel).
+ * 
+ * <p>Java class for HPBResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HPBResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationPubKeyInfo" 
type="{urn:org:ebics:H004}AuthenticationPubKeyInfoType"/>
+ *         &lt;element name="EncryptionPubKeyInfo" 
type="{urn:org:ebics:H004}EncryptionPubKeyInfoType"/>
+ *         &lt;element ref="{http://www.ebics.org/S001}SignaturePubKeyInfo"; 
maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HPBResponseOrderDataType", propOrder = {
+    "authenticationPubKeyInfo",
+    "encryptionPubKeyInfo",
+    "hostID",
+    "any"
+})
+public class HPBResponseOrderDataType {
+
+    @XmlElement(name = "AuthenticationPubKeyInfo", required = true)
+    protected AuthenticationPubKeyInfoType authenticationPubKeyInfo;
+    @XmlElement(name = "EncryptionPubKeyInfo", required = true)
+    protected EncryptionPubKeyInfoType encryptionPubKeyInfo;
+    @XmlElement(name = "HostID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String hostID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the authenticationPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public AuthenticationPubKeyInfoType getAuthenticationPubKeyInfo() {
+        return authenticationPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public void setAuthenticationPubKeyInfo(AuthenticationPubKeyInfoType 
value) {
+        this.authenticationPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public EncryptionPubKeyInfoType getEncryptionPubKeyInfo() {
+        return encryptionPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public void setEncryptionPubKeyInfo(EncryptionPubKeyInfoType value) {
+        this.encryptionPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the hostID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getHostID() {
+        return hostID;
+    }
+
+    /**
+     * Sets the value of the hostID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setHostID(String value) {
+        this.hostID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDAccessParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDAccessParamsType.java
new file mode 100644
index 0000000..c2f2c01
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDAccessParamsType.java
@@ -0,0 +1,274 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für HPD-Zugangsparameter.
+ * 
+ * <p>Java class for HPDAccessParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HPDAccessParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="URL" maxOccurs="unbounded">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension 
base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+ *                 &lt;attribute name="valid_from" 
type="{urn:org:ebics:H004}TimestampType" />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="Institute">
+ *           &lt;simpleType>
+ *             &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}normalizedString";>
+ *               &lt;maxLength value="80"/>
+ *             &lt;/restriction>
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType" 
minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HPDAccessParamsType", propOrder = {
+    "url",
+    "institute",
+    "hostID",
+    "any"
+})
+public class HPDAccessParamsType {
+
+    @XmlElement(name = "URL", required = true)
+    protected List<HPDAccessParamsType.URL> url;
+    @XmlElement(name = "Institute", required = true)
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    protected String institute;
+    @XmlElement(name = "HostID")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String hostID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the url property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the url property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getURL().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HPDAccessParamsType.URL }
+     * 
+     * 
+     */
+    public List<HPDAccessParamsType.URL> getURL() {
+        if (url == null) {
+            url = new ArrayList<HPDAccessParamsType.URL>();
+        }
+        return this.url;
+    }
+
+    /**
+     * Gets the value of the institute property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInstitute() {
+        return institute;
+    }
+
+    /**
+     * Sets the value of the institute property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInstitute(String value) {
+        this.institute = value;
+    }
+
+    /**
+     * Gets the value of the hostID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getHostID() {
+        return hostID;
+    }
+
+    /**
+     * Sets the value of the hostID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setHostID(String value) {
+        this.hostID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+     *       &lt;attribute name="valid_from" 
type="{urn:org:ebics:H004}TimestampType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class URL {
+
+        @XmlValue
+        @XmlSchemaType(name = "anyURI")
+        protected String value;
+        @XmlAttribute(name = "valid_from")
+        protected XMLGregorianCalendar validFrom;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the validFrom property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getValidFrom() {
+            return validFrom;
+        }
+
+        /**
+         * Sets the value of the validFrom property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setValidFrom(XMLGregorianCalendar value) {
+            this.validFrom = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDProtocolParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDProtocolParamsType.java
new file mode 100644
index 0000000..da19d2c
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDProtocolParamsType.java
@@ -0,0 +1,713 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for HPD's parameters regarding the EBICS protocol.
+ * 
+ * <p>Java class for HPDProtocolParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HPDProtocolParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="Version" 
type="{urn:org:ebics:H004}HPDVersionType"/>
+ *         &lt;element name="Recovery" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="PreValidation" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="X509Data" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+ *                 &lt;attribute name="persistent" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="ClientDataDownload" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="DownloadableOrderData" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HPDProtocolParamsType", propOrder = {
+    "version",
+    "recovery",
+    "preValidation",
+    "x509Data",
+    "clientDataDownload",
+    "downloadableOrderData",
+    "any"
+})
+public class HPDProtocolParamsType {
+
+    @XmlElement(name = "Version", required = true)
+    protected HPDVersionType version;
+    @XmlElement(name = "Recovery")
+    protected HPDProtocolParamsType.Recovery recovery;
+    @XmlElement(name = "PreValidation")
+    protected HPDProtocolParamsType.PreValidation preValidation;
+    @XmlElement(name = "X509Data")
+    protected HPDProtocolParamsType.X509Data x509Data;
+    @XmlElement(name = "ClientDataDownload")
+    protected HPDProtocolParamsType.ClientDataDownload clientDataDownload;
+    @XmlElement(name = "DownloadableOrderData")
+    protected HPDProtocolParamsType.DownloadableOrderData 
downloadableOrderData;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the version property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDVersionType }
+     *     
+     */
+    public HPDVersionType getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDVersionType }
+     *     
+     */
+    public void setVersion(HPDVersionType value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the recovery property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType.Recovery }
+     *     
+     */
+    public HPDProtocolParamsType.Recovery getRecovery() {
+        return recovery;
+    }
+
+    /**
+     * Sets the value of the recovery property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType.Recovery }
+     *     
+     */
+    public void setRecovery(HPDProtocolParamsType.Recovery value) {
+        this.recovery = value;
+    }
+
+    /**
+     * Gets the value of the preValidation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType.PreValidation }
+     *     
+     */
+    public HPDProtocolParamsType.PreValidation getPreValidation() {
+        return preValidation;
+    }
+
+    /**
+     * Sets the value of the preValidation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType.PreValidation }
+     *     
+     */
+    public void setPreValidation(HPDProtocolParamsType.PreValidation value) {
+        this.preValidation = value;
+    }
+
+    /**
+     * Gets the value of the x509Data property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType.X509Data }
+     *     
+     */
+    public HPDProtocolParamsType.X509Data getX509Data() {
+        return x509Data;
+    }
+
+    /**
+     * Sets the value of the x509Data property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType.X509Data }
+     *     
+     */
+    public void setX509Data(HPDProtocolParamsType.X509Data value) {
+        this.x509Data = value;
+    }
+
+    /**
+     * Gets the value of the clientDataDownload property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType.ClientDataDownload }
+     *     
+     */
+    public HPDProtocolParamsType.ClientDataDownload getClientDataDownload() {
+        return clientDataDownload;
+    }
+
+    /**
+     * Sets the value of the clientDataDownload property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType.ClientDataDownload }
+     *     
+     */
+    public void setClientDataDownload(HPDProtocolParamsType.ClientDataDownload 
value) {
+        this.clientDataDownload = value;
+    }
+
+    /**
+     * Gets the value of the downloadableOrderData property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType.DownloadableOrderData }
+     *     
+     */
+    public HPDProtocolParamsType.DownloadableOrderData 
getDownloadableOrderData() {
+        return downloadableOrderData;
+    }
+
+    /**
+     * Sets the value of the downloadableOrderData property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType.DownloadableOrderData }
+     *     
+     */
+    public void 
setDownloadableOrderData(HPDProtocolParamsType.DownloadableOrderData value) {
+        this.downloadableOrderData = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ClientDataDownload {
+
+        @XmlAttribute(name = "supported")
+        protected Boolean supported;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the supported property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isSupported() {
+            if (supported == null) {
+                return true;
+            } else {
+                return supported;
+            }
+        }
+
+        /**
+         * Sets the value of the supported property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setSupported(Boolean value) {
+            this.supported = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class DownloadableOrderData {
+
+        @XmlAttribute(name = "supported")
+        protected Boolean supported;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the supported property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isSupported() {
+            if (supported == null) {
+                return true;
+            } else {
+                return supported;
+            }
+        }
+
+        /**
+         * Sets the value of the supported property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setSupported(Boolean value) {
+            this.supported = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * Optional support flag, default = true.
+     * 
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class PreValidation {
+
+        @XmlAttribute(name = "supported")
+        protected Boolean supported;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the supported property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isSupported() {
+            if (supported == null) {
+                return true;
+            } else {
+                return supported;
+            }
+        }
+
+        /**
+         * Sets the value of the supported property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setSupported(Boolean value) {
+            this.supported = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Recovery {
+
+        @XmlAttribute(name = "supported")
+        protected Boolean supported;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the supported property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isSupported() {
+            if (supported == null) {
+                return true;
+            } else {
+                return supported;
+            }
+        }
+
+        /**
+         * Sets the value of the supported property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setSupported(Boolean value) {
+            this.supported = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}OptSupportFlag"/>
+     *       &lt;attribute name="persistent" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class X509Data {
+
+        @XmlAttribute(name = "persistent")
+        protected Boolean persistent;
+        @XmlAttribute(name = "supported")
+        protected Boolean supported;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the persistent property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isPersistent() {
+            if (persistent == null) {
+                return false;
+            } else {
+                return persistent;
+            }
+        }
+
+        /**
+         * Sets the value of the persistent property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setPersistent(Boolean value) {
+            this.persistent = value;
+        }
+
+        /**
+         * Gets the value of the supported property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isSupported() {
+            if (supported == null) {
+                return true;
+            } else {
+                return supported;
+            }
+        }
+
+        /**
+         * Sets the value of the supported property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setSupported(Boolean value) {
+            this.supported = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDResponseOrderDataType.java
new file mode 100644
index 0000000..9b4e66f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDResponseOrderDataType.java
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HPD (Antwort: Bankparameter 
abholen).
+ * 
+ * <p>Java class for HPDResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HPDResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AccessParams" 
type="{urn:org:ebics:H004}HPDAccessParamsType"/>
+ *         &lt;element name="ProtocolParams" 
type="{urn:org:ebics:H004}HPDProtocolParamsType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HPDResponseOrderDataType", propOrder = {
+    "accessParams",
+    "protocolParams"
+})
+public class HPDResponseOrderDataType {
+
+    @XmlElement(name = "AccessParams", required = true)
+    protected HPDAccessParamsType accessParams;
+    @XmlElement(name = "ProtocolParams", required = true)
+    protected HPDProtocolParamsType protocolParams;
+
+    /**
+     * Gets the value of the accessParams property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDAccessParamsType }
+     *     
+     */
+    public HPDAccessParamsType getAccessParams() {
+        return accessParams;
+    }
+
+    /**
+     * Sets the value of the accessParams property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDAccessParamsType }
+     *     
+     */
+    public void setAccessParams(HPDAccessParamsType value) {
+        this.accessParams = value;
+    }
+
+    /**
+     * Gets the value of the protocolParams property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HPDProtocolParamsType }
+     *     
+     */
+    public HPDProtocolParamsType getProtocolParams() {
+        return protocolParams;
+    }
+
+    /**
+     * Sets the value of the protocolParams property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HPDProtocolParamsType }
+     *     
+     */
+    public void setProtocolParams(HPDProtocolParamsType value) {
+        this.protocolParams = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDVersionType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDVersionType.java
new file mode 100644
index 0000000..ecd8166
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HPDVersionType.java
@@ -0,0 +1,234 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für HPD-Versionsinformationen.
+ * 
+ * <p>Java class for HPDVersionType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HPDVersionType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="Protocol">
+ *           &lt;simpleType>
+ *             &lt;list itemType="{urn:org:ebics:H004}ProtocolVersionType" />
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="Authentication">
+ *           &lt;simpleType>
+ *             &lt;list 
itemType="{urn:org:ebics:H004}AuthenticationVersionType" />
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="Encryption">
+ *           &lt;simpleType>
+ *             &lt;list itemType="{urn:org:ebics:H004}EncryptionVersionType" />
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="Signature">
+ *           &lt;simpleType>
+ *             &lt;list 
itemType="{http://www.ebics.org/S001}SignatureVersionType"; />
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HPDVersionType", propOrder = {
+    "protocol",
+    "authentication",
+    "encryption",
+    "signature",
+    "any"
+})
+public class HPDVersionType {
+
+    @XmlList
+    @XmlElement(name = "Protocol", required = true)
+    protected List<String> protocol;
+    @XmlList
+    @XmlElement(name = "Authentication", required = true)
+    protected List<String> authentication;
+    @XmlList
+    @XmlElement(name = "Encryption", required = true)
+    protected List<String> encryption;
+    @XmlList
+    @XmlElement(name = "Signature", required = true)
+    protected List<String> signature;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the protocol property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the protocol 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProtocol().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getProtocol() {
+        if (protocol == null) {
+            protocol = new ArrayList<String>();
+        }
+        return this.protocol;
+    }
+
+    /**
+     * Gets the value of the authentication property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
authentication property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAuthentication().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getAuthentication() {
+        if (authentication == null) {
+            authentication = new ArrayList<String>();
+        }
+        return this.authentication;
+    }
+
+    /**
+     * Gets the value of the encryption property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the encryption 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEncryption().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getEncryption() {
+        if (encryption == null) {
+            encryption = new ArrayList<String>();
+        }
+        return this.encryption;
+    }
+
+    /**
+     * Gets the value of the signature property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the signature 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignature().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getSignature() {
+        if (signature == null) {
+            signature = new ArrayList<String>();
+        }
+        return this.signature;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HSARequestOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HSARequestOrderDataType.java
new file mode 100644
index 0000000..fb5af34
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HSARequestOrderDataType.java
@@ -0,0 +1,200 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HSA (Anfrage: Initialisierung 
der Teilnehmerschlüssel für Authentifikation und Verschlüsselung, bankfachlich 
signiert mit FTAM-Schlüssel).
+ * 
+ * <p>Java class for HSARequestOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HSARequestOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AuthenticationPubKeyInfo" 
type="{urn:org:ebics:H004}AuthenticationPubKeyInfoType"/>
+ *         &lt;element name="EncryptionPubKeyInfo" 
type="{urn:org:ebics:H004}EncryptionPubKeyInfoType"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HSARequestOrderDataType", propOrder = {
+    "authenticationPubKeyInfo",
+    "encryptionPubKeyInfo",
+    "partnerID",
+    "userID",
+    "any"
+})
+public class HSARequestOrderDataType {
+
+    @XmlElement(name = "AuthenticationPubKeyInfo", required = true)
+    protected AuthenticationPubKeyInfoType authenticationPubKeyInfo;
+    @XmlElement(name = "EncryptionPubKeyInfo", required = true)
+    protected EncryptionPubKeyInfoType encryptionPubKeyInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the authenticationPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public AuthenticationPubKeyInfoType getAuthenticationPubKeyInfo() {
+        return authenticationPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the authenticationPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthenticationPubKeyInfoType }
+     *     
+     */
+    public void setAuthenticationPubKeyInfo(AuthenticationPubKeyInfoType 
value) {
+        this.authenticationPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the encryptionPubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public EncryptionPubKeyInfoType getEncryptionPubKeyInfo() {
+        return encryptionPubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the encryptionPubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EncryptionPubKeyInfoType }
+     *     
+     */
+    public void setEncryptionPubKeyInfo(EncryptionPubKeyInfoType value) {
+        this.encryptionPubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HTDReponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HTDReponseOrderDataType.java
new file mode 100644
index 0000000..20f3eb9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HTDReponseOrderDataType.java
@@ -0,0 +1,137 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HTD (Antwort: Kunden- und 
Teilnehmerdaten des Teilnehmers abholen).
+ * 
+ * <p>Java class for HTDReponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HTDReponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="PartnerInfo" 
type="{urn:org:ebics:H004}PartnerInfoType"/>
+ *         &lt;element name="UserInfo" 
type="{urn:org:ebics:H004}UserInfoType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HTDReponseOrderDataType", propOrder = {
+    "partnerInfo",
+    "userInfo",
+    "any"
+})
+public class HTDReponseOrderDataType {
+
+    @XmlElement(name = "PartnerInfo", required = true)
+    protected PartnerInfoType partnerInfo;
+    @XmlElement(name = "UserInfo", required = true)
+    protected UserInfoType userInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PartnerInfoType }
+     *     
+     */
+    public PartnerInfoType getPartnerInfo() {
+        return partnerInfo;
+    }
+
+    /**
+     * Sets the value of the partnerInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PartnerInfoType }
+     *     
+     */
+    public void setPartnerInfo(PartnerInfoType value) {
+        this.partnerInfo = value;
+    }
+
+    /**
+     * Gets the value of the userInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link UserInfoType }
+     *     
+     */
+    public UserInfoType getUserInfo() {
+        return userInfo;
+    }
+
+    /**
+     * Sets the value of the userInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link UserInfoType }
+     *     
+     */
+    public void setUserInfo(UserInfoType value) {
+        this.userInfo = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDOrderParamsType.java
new file mode 100644
index 0000000..2cb8478
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDOrderParamsType.java
@@ -0,0 +1,199 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart HVD.
+ * 
+ * <p>Java class for HVDOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVDOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;group ref="{urn:org:ebics:H004}HVRequestStructure"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVDOrderParamsType", propOrder = {
+    "partnerID",
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "any"
+})
+public class HVDOrderParamsType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDResponseOrderDataType.java
new file mode 100644
index 0000000..5923c8b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVDResponseOrderDataType.java
@@ -0,0 +1,240 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HVD (Antwort: VEU-Status 
abrufen).
+ * 
+ * <p>Java class for HVDResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVDResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="DataDigest" 
type="{urn:org:ebics:H004}DataDigestType"/>
+ *         &lt;element name="DisplayFile" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *         &lt;element name="OrderDataAvailable" 
type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="OrderDataSize" 
type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ *         &lt;element name="OrderDetailsAvailable" 
type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="BankSignature" 
type="{urn:org:ebics:H004}SignatureType" maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="SignerInfo" 
type="{urn:org:ebics:H004}SignerInfoType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVDResponseOrderDataType", propOrder = {
+    "dataDigest",
+    "displayFile",
+    "orderDataAvailable",
+    "orderDataSize",
+    "orderDetailsAvailable",
+    "signerInfo",
+    "any"
+})
+public class HVDResponseOrderDataType {
+
+    @XmlElement(name = "DataDigest", required = true)
+    protected DataDigestType dataDigest;
+    @XmlElement(name = "DisplayFile", required = true)
+    protected byte[] displayFile;
+    @XmlElement(name = "OrderDataAvailable")
+    protected boolean orderDataAvailable;
+    @XmlElement(name = "OrderDataSize", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger orderDataSize;
+    @XmlElement(name = "OrderDetailsAvailable")
+    protected boolean orderDetailsAvailable;
+    @XmlElement(name = "SignerInfo")
+    protected List<SignerInfoType> signerInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the dataDigest property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataDigestType }
+     *     
+     */
+    public DataDigestType getDataDigest() {
+        return dataDigest;
+    }
+
+    /**
+     * Sets the value of the dataDigest property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataDigestType }
+     *     
+     */
+    public void setDataDigest(DataDigestType value) {
+        this.dataDigest = value;
+    }
+
+    /**
+     * Gets the value of the displayFile property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getDisplayFile() {
+        return displayFile;
+    }
+
+    /**
+     * Sets the value of the displayFile property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setDisplayFile(byte[] value) {
+        this.displayFile = value;
+    }
+
+    /**
+     * Gets the value of the orderDataAvailable property.
+     * 
+     */
+    public boolean isOrderDataAvailable() {
+        return orderDataAvailable;
+    }
+
+    /**
+     * Sets the value of the orderDataAvailable property.
+     * 
+     */
+    public void setOrderDataAvailable(boolean value) {
+        this.orderDataAvailable = value;
+    }
+
+    /**
+     * Gets the value of the orderDataSize property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getOrderDataSize() {
+        return orderDataSize;
+    }
+
+    /**
+     * Sets the value of the orderDataSize property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setOrderDataSize(BigInteger value) {
+        this.orderDataSize = value;
+    }
+
+    /**
+     * Gets the value of the orderDetailsAvailable property.
+     * 
+     */
+    public boolean isOrderDetailsAvailable() {
+        return orderDetailsAvailable;
+    }
+
+    /**
+     * Sets the value of the orderDetailsAvailable property.
+     * 
+     */
+    public void setOrderDetailsAvailable(boolean value) {
+        this.orderDetailsAvailable = value;
+    }
+
+    /**
+     * Gets the value of the signerInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the signerInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignerInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignerInfoType }
+     * 
+     * 
+     */
+    public List<SignerInfoType> getSignerInfo() {
+        if (signerInfo == null) {
+            signerInfo = new ArrayList<SignerInfoType>();
+        }
+        return this.signerInfo;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVEOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVEOrderParamsType.java
new file mode 100644
index 0000000..4ce217f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVEOrderParamsType.java
@@ -0,0 +1,199 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart HVE.
+ * 
+ * <p>Java class for HVEOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVEOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;group ref="{urn:org:ebics:H004}HVRequestStructure"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVEOrderParamsType", propOrder = {
+    "partnerID",
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "any"
+})
+public class HVEOrderParamsType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSOrderParamsType.java
new file mode 100644
index 0000000..6c4594a
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSOrderParamsType.java
@@ -0,0 +1,199 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart HVS.
+ * 
+ * <p>Java class for HVSOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVSOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;group ref="{urn:org:ebics:H004}HVRequestStructure"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVSOrderParamsType", propOrder = {
+    "partnerID",
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "any"
+})
+public class HVSOrderParamsType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSRequestOrderDataType.java
similarity index 58%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSRequestOrderDataType.java
index 9d1e96f..fddefef 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVSRequestOrderDataType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -7,26 +14,23 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für Auftragsdaten für Auftragsart HVS (Anfrage: VEU-Storno).
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for HVSRequestOrderDataType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="HVSRequestOrderDataType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="CancelledDataDigest" 
type="{urn:org:ebics:H004}DataDigestType"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +41,39 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "HVSRequestOrderDataType", propOrder = {
+    "cancelledDataDigest",
     "any"
 })
-public class HEVRequestDataType {
+public class HVSRequestOrderDataType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlElement(name = "CancelledDataDigest", required = true)
+    protected DataDigestType cancelledDataDigest;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the cancelledDataDigest property.
      * 
      * @return
      *     possible object is
-     *     {@link String }
+     *     {@link DataDigestType }
      *     
      */
-    public String getHostID() {
-        return hostID;
+    public DataDigestType getCancelledDataDigest() {
+        return cancelledDataDigest;
     }
 
     /**
-     * Sets the value of the hostID property.
+     * Sets the value of the cancelledDataDigest property.
      * 
      * @param value
      *     allowed object is
-     *     {@link String }
+     *     {@link DataDigestType }
      *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public void setCancelledDataDigest(DataDigestType value) {
+        this.cancelledDataDigest = value;
     }
 
     /**
@@ -92,8 +94,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTAccountInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTAccountInfoType.java
new file mode 100644
index 0000000..c65023a
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTAccountInfoType.java
@@ -0,0 +1,41 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Data type for account information regarding order type HVT.
+ * 
+ * <p>Java class for HVTAccountInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVTAccountInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}AttributedAccountType">
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVTAccountInfoType")
+public class HVTAccountInfoType
+    extends AttributedAccountType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderFlagsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderFlagsType.java
new file mode 100644
index 0000000..a85837f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderFlagsType.java
@@ -0,0 +1,155 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.HashMap;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+
+
+/**
+ * Datentyp für HVT-Auftragsflags.
+ * 
+ * <p>Java class for HVTOrderFlagsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVTOrderFlagsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;attribute name="completeOrderData" use="required" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; />
+ *       &lt;attribute name="fetchLimit" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger";>
+ *             &lt;totalDigits value="10"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *       &lt;attribute name="fetchOffset" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger";>
+ *             &lt;totalDigits value="10"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVTOrderFlagsType")
+@XmlSeeAlso({
+    tech.libeufin.messages.ebics.keyrequest.HVTOrderParamsType.OrderFlags.class
+})
+public class HVTOrderFlagsType {
+
+    @XmlAttribute(name = "completeOrderData", required = true)
+    protected boolean completeOrderData;
+    @XmlAttribute(name = "fetchLimit", required = true)
+    protected BigInteger fetchLimit;
+    @XmlAttribute(name = "fetchOffset", required = true)
+    protected BigInteger fetchOffset;
+    @XmlAnyAttribute
+    private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+    /**
+     * Gets the value of the completeOrderData property.
+     * 
+     */
+    public boolean isCompleteOrderData() {
+        return completeOrderData;
+    }
+
+    /**
+     * Sets the value of the completeOrderData property.
+     * 
+     */
+    public void setCompleteOrderData(boolean value) {
+        this.completeOrderData = value;
+    }
+
+    /**
+     * Gets the value of the fetchLimit property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getFetchLimit() {
+        return fetchLimit;
+    }
+
+    /**
+     * Sets the value of the fetchLimit property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setFetchLimit(BigInteger value) {
+        this.fetchLimit = value;
+    }
+
+    /**
+     * Gets the value of the fetchOffset property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getFetchOffset() {
+        return fetchOffset;
+    }
+
+    /**
+     * Sets the value of the fetchOffset property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setFetchOffset(BigInteger value) {
+        this.fetchOffset = value;
+    }
+
+    /**
+     * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+     * 
+     * <p>
+     * the map is keyed by the name of the attribute and 
+     * the value is the string value of the attribute.
+     * 
+     * the map returned by this method is live, and you can add new attribute
+     * by updating the map directly. Because of this design, there's no setter.
+     * 
+     * 
+     * @return
+     *     always non-null
+     */
+    public Map<QName, String> getOtherAttributes() {
+        return otherAttributes;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderInfoType.java
new file mode 100644
index 0000000..95e70d5
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderInfoType.java
@@ -0,0 +1,520 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für HVT-Auftragsinformationen.
+ * 
+ * <p>Java class for HVTOrderInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVTOrderInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderFormat" 
type="{urn:org:ebics:H004}OrderFormatType" minOccurs="0"/>
+ *         &lt;element name="AccountInfo" 
type="{urn:org:ebics:H004}HVTAccountInfoType" maxOccurs="3" minOccurs="2"/>
+ *         &lt;element name="ExecutionDate" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension 
base="&lt;http://www.w3.org/2001/XMLSchema>date">
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="Amount">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;urn:org:ebics:H004>AmountValueType">
+ *                 &lt;attribute name="isCredit" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; />
+ *                 &lt;attribute name="Currency" 
type="{urn:org:ebics:H004}CurrencyBaseType" />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="Description" maxOccurs="4" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension 
base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *                 &lt;attribute name="Type" use="required">
+ *                   &lt;simpleType>
+ *                     &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}token";>
+ *                       &lt;enumeration value="Purpose"/>
+ *                       &lt;enumeration value="Details"/>
+ *                       &lt;enumeration value="Comment"/>
+ *                     &lt;/restriction>
+ *                   &lt;/simpleType>
+ *                 &lt;/attribute>
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVTOrderInfoType", propOrder = {
+    "orderFormat",
+    "accountInfo",
+    "executionDate",
+    "amount",
+    "description",
+    "any"
+})
+public class HVTOrderInfoType {
+
+    @XmlElement(name = "OrderFormat")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderFormat;
+    @XmlElement(name = "AccountInfo", required = true)
+    protected List<HVTAccountInfoType> accountInfo;
+    @XmlElement(name = "ExecutionDate")
+    protected HVTOrderInfoType.ExecutionDate executionDate;
+    @XmlElement(name = "Amount", required = true)
+    protected HVTOrderInfoType.Amount amount;
+    @XmlElement(name = "Description")
+    protected List<HVTOrderInfoType.Description> description;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderFormat() {
+        return orderFormat;
+    }
+
+    /**
+     * Sets the value of the orderFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderFormat(String value) {
+        this.orderFormat = value;
+    }
+
+    /**
+     * Gets the value of the accountInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the accountInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccountInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HVTAccountInfoType }
+     * 
+     * 
+     */
+    public List<HVTAccountInfoType> getAccountInfo() {
+        if (accountInfo == null) {
+            accountInfo = new ArrayList<HVTAccountInfoType>();
+        }
+        return this.accountInfo;
+    }
+
+    /**
+     * Gets the value of the executionDate property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVTOrderInfoType.ExecutionDate }
+     *     
+     */
+    public HVTOrderInfoType.ExecutionDate getExecutionDate() {
+        return executionDate;
+    }
+
+    /**
+     * Sets the value of the executionDate property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVTOrderInfoType.ExecutionDate }
+     *     
+     */
+    public void setExecutionDate(HVTOrderInfoType.ExecutionDate value) {
+        this.executionDate = value;
+    }
+
+    /**
+     * Gets the value of the amount property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVTOrderInfoType.Amount }
+     *     
+     */
+    public HVTOrderInfoType.Amount getAmount() {
+        return amount;
+    }
+
+    /**
+     * Sets the value of the amount property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVTOrderInfoType.Amount }
+     *     
+     */
+    public void setAmount(HVTOrderInfoType.Amount value) {
+        this.amount = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the description 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDescription().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HVTOrderInfoType.Description }
+     * 
+     * 
+     */
+    public List<HVTOrderInfoType.Description> getDescription() {
+        if (description == null) {
+            description = new ArrayList<HVTOrderInfoType.Description>();
+        }
+        return this.description;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>AmountValueType">
+     *       &lt;attribute name="isCredit" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; />
+     *       &lt;attribute name="Currency" 
type="{urn:org:ebics:H004}CurrencyBaseType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Amount {
+
+        @XmlValue
+        protected BigDecimal value;
+        @XmlAttribute(name = "isCredit")
+        protected Boolean isCredit;
+        @XmlAttribute(name = "Currency")
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String currency;
+
+        /**
+         * Datentyp für einen Betragswert (ohne Währung).
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigDecimal }
+         *     
+         */
+        public BigDecimal getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigDecimal }
+         *     
+         */
+        public void setValue(BigDecimal value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the isCredit property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIsCredit() {
+            return isCredit;
+        }
+
+        /**
+         * Sets the value of the isCredit property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIsCredit(Boolean value) {
+            this.isCredit = value;
+        }
+
+        /**
+         * Gets the value of the currency property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getCurrency() {
+            return currency;
+        }
+
+        /**
+         * Sets the value of the currency property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setCurrency(String value) {
+            this.currency = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="Type" use="required">
+     *         &lt;simpleType>
+     *           &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}token";>
+     *             &lt;enumeration value="Purpose"/>
+     *             &lt;enumeration value="Details"/>
+     *             &lt;enumeration value="Comment"/>
+     *           &lt;/restriction>
+     *         &lt;/simpleType>
+     *       &lt;/attribute>
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Description {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "Type", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String type;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the type property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getType() {
+            return type;
+        }
+
+        /**
+         * Sets the value of the type property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setType(String value) {
+            this.type = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>date">
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class ExecutionDate {
+
+        @XmlValue
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setValue(XMLGregorianCalendar value) {
+            this.value = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderParamsType.java
new file mode 100644
index 0000000..66fa069
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTOrderParamsType.java
@@ -0,0 +1,295 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for additional order parameters for order type HVT.
+ * 
+ * <p>Java class for HVTOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVTOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;group ref="{urn:org:ebics:H004}HVRequestStructure"/>
+ *         &lt;element name="OrderFlags">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;extension base="{urn:org:ebics:H004}HVTOrderFlagsType">
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/extension>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element ref="{urn:org:ebics:H004}Parameter" 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVTOrderParamsType", propOrder = {
+    "partnerID",
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "orderFlags",
+    "parameter",
+    "any"
+})
+public class HVTOrderParamsType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlElement(name = "OrderFlags", required = true)
+    protected HVTOrderParamsType.OrderFlags orderFlags;
+    @XmlElement(name = "Parameter")
+    protected List<Parameter> parameter;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the orderFlags property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVTOrderParamsType.OrderFlags }
+     *     
+     */
+    public HVTOrderParamsType.OrderFlags getOrderFlags() {
+        return orderFlags;
+    }
+
+    /**
+     * Sets the value of the orderFlags property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVTOrderParamsType.OrderFlags }
+     *     
+     */
+    public void setOrderFlags(HVTOrderParamsType.OrderFlags value) {
+        this.orderFlags = value;
+    }
+
+    /**
+     * Generic key-value parameters Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getParameter().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Parameter }
+     * 
+     * 
+     */
+    public List<Parameter> getParameter() {
+        if (parameter == null) {
+            parameter = new ArrayList<Parameter>();
+        }
+        return this.parameter;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;extension base="{urn:org:ebics:H004}HVTOrderFlagsType">
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/extension>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class OrderFlags
+        extends HVTOrderFlagsType
+    {
+
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderData.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderData.java
new file mode 100644
index 0000000..a2312b3
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderData.java
@@ -0,0 +1,39 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}HVTResponseOrderDataType">
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class HVTResponseOrderData
+    extends HVTResponseOrderDataType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderDataType.java
new file mode 100644
index 0000000..9f8fe73
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVTResponseOrderDataType.java
@@ -0,0 +1,149 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Antwort mit Einzelauftraginfos für Auftragsart HVT (Antwort 
VEU-Transaktionsdetails abrufen mit completeOrderData="false").
+ * 
+ * <p>Java class for HVTResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVTResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="NumOrderInfos" 
type="{urn:org:ebics:H004}NumOrderInfosType"/>
+ *         &lt;element name="OrderInfo" 
type="{urn:org:ebics:H004}HVTOrderInfoType" maxOccurs="unbounded"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVTResponseOrderDataType", propOrder = {
+    "numOrderInfos",
+    "orderInfo",
+    "any"
+})
+@XmlSeeAlso({
+    HVTResponseOrderData.class
+})
+public class HVTResponseOrderDataType {
+
+    @XmlElement(name = "NumOrderInfos", required = true)
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected BigInteger numOrderInfos;
+    @XmlElement(name = "OrderInfo", required = true)
+    protected List<HVTOrderInfoType> orderInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the numOrderInfos property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getNumOrderInfos() {
+        return numOrderInfos;
+    }
+
+    /**
+     * Sets the value of the numOrderInfos property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setNumOrderInfos(BigInteger value) {
+        this.numOrderInfos = value;
+    }
+
+    /**
+     * Gets the value of the orderInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HVTOrderInfoType }
+     * 
+     * 
+     */
+    public List<HVTOrderInfoType> getOrderInfo() {
+        if (orderInfo == null) {
+            orderInfo = new ArrayList<HVTOrderInfoType>();
+        }
+        return this.orderInfo;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderDetailsType.java
new file mode 100644
index 0000000..09d08a4
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderDetailsType.java
@@ -0,0 +1,291 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für HVU-Auftragsdetails.
+ * 
+ * <p>Java class for HVUOrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVUOrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType" minOccurs="0"/>
+ *         &lt;element name="OrderID" type="{urn:org:ebics:H004}OrderIDType"/>
+ *         &lt;element name="OrderDataSize" 
type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ *         &lt;element name="SigningInfo" 
type="{urn:org:ebics:H004}HVUSigningInfoType"/>
+ *         &lt;element name="SignerInfo" 
type="{urn:org:ebics:H004}SignerInfoType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="OriginatorInfo" 
type="{urn:org:ebics:H004}HVUOriginatorInfoType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVUOrderDetailsType", propOrder = {
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "orderDataSize",
+    "signingInfo",
+    "signerInfo",
+    "originatorInfo",
+    "any"
+})
+public class HVUOrderDetailsType {
+
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlElement(name = "OrderDataSize", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger orderDataSize;
+    @XmlElement(name = "SigningInfo", required = true)
+    protected HVUSigningInfoType signingInfo;
+    @XmlElement(name = "SignerInfo")
+    protected List<SignerInfoType> signerInfo;
+    @XmlElement(name = "OriginatorInfo", required = true)
+    protected HVUOriginatorInfoType originatorInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the orderDataSize property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getOrderDataSize() {
+        return orderDataSize;
+    }
+
+    /**
+     * Sets the value of the orderDataSize property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setOrderDataSize(BigInteger value) {
+        this.orderDataSize = value;
+    }
+
+    /**
+     * Gets the value of the signingInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVUSigningInfoType }
+     *     
+     */
+    public HVUSigningInfoType getSigningInfo() {
+        return signingInfo;
+    }
+
+    /**
+     * Sets the value of the signingInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVUSigningInfoType }
+     *     
+     */
+    public void setSigningInfo(HVUSigningInfoType value) {
+        this.signingInfo = value;
+    }
+
+    /**
+     * Gets the value of the signerInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the signerInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignerInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignerInfoType }
+     * 
+     * 
+     */
+    public List<SignerInfoType> getSignerInfo() {
+        if (signerInfo == null) {
+            signerInfo = new ArrayList<SignerInfoType>();
+        }
+        return this.signerInfo;
+    }
+
+    /**
+     * Gets the value of the originatorInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVUOriginatorInfoType }
+     *     
+     */
+    public HVUOriginatorInfoType getOriginatorInfo() {
+        return originatorInfo;
+    }
+
+    /**
+     * Sets the value of the originatorInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVUOriginatorInfoType }
+     *     
+     */
+    public void setOriginatorInfo(HVUOriginatorInfoType value) {
+        this.originatorInfo = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderParamsType.java
similarity index 50%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderParamsType.java
index 9d1e96f..5cca88a 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOrderParamsType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -7,26 +14,24 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlList;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart HVU.
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for HVUOrderParamsType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="HVUOrderParamsType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="OrderTypes" 
type="{urn:org:ebics:H004}OrderTListType" minOccurs="0"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +42,45 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "HVUOrderParamsType", propOrder = {
+    "orderTypes",
     "any"
 })
-public class HEVRequestDataType {
+public class HVUOrderParamsType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlList
+    @XmlElement(name = "OrderTypes")
+    protected List<String> orderTypes;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the orderTypes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderTypes 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderTypes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
      * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
-     */
-    public String getHostID() {
-        return hostID;
-    }
-
-    /**
-     * Sets the value of the hostID property.
      * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public List<String> getOrderTypes() {
+        if (orderTypes == null) {
+            orderTypes = new ArrayList<String>();
+        }
+        return this.orderTypes;
     }
 
     /**
@@ -92,8 +101,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOriginatorInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOriginatorInfoType.java
new file mode 100644
index 0000000..bdea099
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUOriginatorInfoType.java
@@ -0,0 +1,203 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * Datentyp für Informationen zum Ersteller eines HVU-Auftrags.
+ * 
+ * <p>Java class for HVUOriginatorInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVUOriginatorInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="Name" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType"/>
+ *         &lt;any namespace='urn:org:ebics:H004' maxOccurs="unbounded" 
minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVUOriginatorInfoType", propOrder = {
+    "partnerID",
+    "userID",
+    "name",
+    "timestamp",
+    "any"
+})
+public class HVUOriginatorInfoType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlElement(name = "Name")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String name;
+    @XmlElement(name = "Timestamp", required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timestamp;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the timestamp property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimestamp() {
+        return timestamp;
+    }
+
+    /**
+     * Sets the value of the timestamp property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimestamp(XMLGregorianCalendar value) {
+        this.timestamp = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUResponseOrderDataType.java
new file mode 100644
index 0000000..a02818f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUResponseOrderDataType.java
@@ -0,0 +1,114 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Auftragsdaten für Auftragsart HVU (Antwort: VEU-Übersicht 
abholen).
+ * 
+ * <p>Java class for HVUResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVUResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}HVUOrderDetailsType" maxOccurs="unbounded"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVUResponseOrderDataType", propOrder = {
+    "orderDetails",
+    "any"
+})
+public class HVUResponseOrderDataType {
+
+    @XmlElement(name = "OrderDetails", required = true)
+    protected List<HVUOrderDetailsType> orderDetails;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderDetails property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderDetails 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderDetails().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HVUOrderDetailsType }
+     * 
+     * 
+     */
+    public List<HVUOrderDetailsType> getOrderDetails() {
+        if (orderDetails == null) {
+            orderDetails = new ArrayList<HVUOrderDetailsType>();
+        }
+        return this.orderDetails;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUSigningInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUSigningInfoType.java
new file mode 100644
index 0000000..171dabb
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVUSigningInfoType.java
@@ -0,0 +1,117 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für Informationen zu den HVU-Unterschriftsmodalitäten.
+ * 
+ * <p>Java class for HVUSigningInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVUSigningInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;attribute name="readyToBeSigned" use="required" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; />
+ *       &lt;attribute name="NumSigRequired" use="required" 
type="{http://www.w3.org/2001/XMLSchema}positiveInteger"; />
+ *       &lt;attribute name="NumSigDone" use="required" 
type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVUSigningInfoType")
+public class HVUSigningInfoType {
+
+    @XmlAttribute(name = "readyToBeSigned", required = true)
+    protected boolean readyToBeSigned;
+    @XmlAttribute(name = "NumSigRequired", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger numSigRequired;
+    @XmlAttribute(name = "NumSigDone", required = true)
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected BigInteger numSigDone;
+
+    /**
+     * Gets the value of the readyToBeSigned property.
+     * 
+     */
+    public boolean isReadyToBeSigned() {
+        return readyToBeSigned;
+    }
+
+    /**
+     * Sets the value of the readyToBeSigned property.
+     * 
+     */
+    public void setReadyToBeSigned(boolean value) {
+        this.readyToBeSigned = value;
+    }
+
+    /**
+     * Gets the value of the numSigRequired property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getNumSigRequired() {
+        return numSigRequired;
+    }
+
+    /**
+     * Sets the value of the numSigRequired property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setNumSigRequired(BigInteger value) {
+        this.numSigRequired = value;
+    }
+
+    /**
+     * Gets the value of the numSigDone property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getNumSigDone() {
+        return numSigDone;
+    }
+
+    /**
+     * Sets the value of the numSigDone property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setNumSigDone(BigInteger value) {
+        this.numSigDone = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderDetailsType.java
new file mode 100644
index 0000000..f055352
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderDetailsType.java
@@ -0,0 +1,1190 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für HVZ-Auftragsdetails.
+ * 
+ * <p>Java class for HVZOrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVZOrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType" minOccurs="0"/>
+ *         &lt;element name="OrderID" type="{urn:org:ebics:H004}OrderIDType"/>
+ *         &lt;element name="DataDigest" 
type="{urn:org:ebics:H004}DataDigestType"/>
+ *         &lt;element name="OrderDataAvailable" 
type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="OrderDataSize" 
type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ *         &lt;element name="OrderDetailsAvailable" 
type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;group ref="{urn:org:ebics:H004}HVZPaymentOrderDetailsStructure" 
minOccurs="0"/>
+ *         &lt;element name="SigningInfo" 
type="{urn:org:ebics:H004}HVUSigningInfoType"/>
+ *         &lt;element name="SignerInfo" 
type="{urn:org:ebics:H004}SignerInfoType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="OriginatorInfo" 
type="{urn:org:ebics:H004}HVUOriginatorInfoType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVZOrderDetailsType", propOrder = {
+    "orderType",
+    "fileFormat",
+    "orderID",
+    "dataDigest",
+    "orderDataAvailable",
+    "orderDataSize",
+    "orderDetailsAvailable",
+    "totalOrders",
+    "totalAmount",
+    "currency",
+    "firstOrderInfo",
+    "signingInfo",
+    "signerInfo",
+    "originatorInfo",
+    "any"
+})
+public class HVZOrderDetailsType {
+
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "OrderID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderID;
+    @XmlElement(name = "DataDigest", required = true)
+    protected DataDigestType dataDigest;
+    @XmlElement(name = "OrderDataAvailable")
+    protected boolean orderDataAvailable;
+    @XmlElement(name = "OrderDataSize", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger orderDataSize;
+    @XmlElement(name = "OrderDetailsAvailable")
+    protected boolean orderDetailsAvailable;
+    @XmlElement(name = "TotalOrders")
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected BigInteger totalOrders;
+    @XmlElement(name = "TotalAmount")
+    protected HVZOrderDetailsType.TotalAmount totalAmount;
+    @XmlElement(name = "Currency")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String currency;
+    @XmlElement(name = "FirstOrderInfo")
+    protected HVZOrderDetailsType.FirstOrderInfo firstOrderInfo;
+    @XmlElement(name = "SigningInfo", required = true)
+    protected HVUSigningInfoType signingInfo;
+    @XmlElement(name = "SignerInfo")
+    protected List<SignerInfoType> signerInfo;
+    @XmlElement(name = "OriginatorInfo", required = true)
+    protected HVUOriginatorInfoType originatorInfo;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the orderID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderID() {
+        return orderID;
+    }
+
+    /**
+     * Sets the value of the orderID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderID(String value) {
+        this.orderID = value;
+    }
+
+    /**
+     * Gets the value of the dataDigest property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DataDigestType }
+     *     
+     */
+    public DataDigestType getDataDigest() {
+        return dataDigest;
+    }
+
+    /**
+     * Sets the value of the dataDigest property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DataDigestType }
+     *     
+     */
+    public void setDataDigest(DataDigestType value) {
+        this.dataDigest = value;
+    }
+
+    /**
+     * Gets the value of the orderDataAvailable property.
+     * 
+     */
+    public boolean isOrderDataAvailable() {
+        return orderDataAvailable;
+    }
+
+    /**
+     * Sets the value of the orderDataAvailable property.
+     * 
+     */
+    public void setOrderDataAvailable(boolean value) {
+        this.orderDataAvailable = value;
+    }
+
+    /**
+     * Gets the value of the orderDataSize property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getOrderDataSize() {
+        return orderDataSize;
+    }
+
+    /**
+     * Sets the value of the orderDataSize property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setOrderDataSize(BigInteger value) {
+        this.orderDataSize = value;
+    }
+
+    /**
+     * Gets the value of the orderDetailsAvailable property.
+     * 
+     */
+    public boolean isOrderDetailsAvailable() {
+        return orderDetailsAvailable;
+    }
+
+    /**
+     * Sets the value of the orderDetailsAvailable property.
+     * 
+     */
+    public void setOrderDetailsAvailable(boolean value) {
+        this.orderDetailsAvailable = value;
+    }
+
+    /**
+     * Gets the value of the totalOrders property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getTotalOrders() {
+        return totalOrders;
+    }
+
+    /**
+     * Sets the value of the totalOrders property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setTotalOrders(BigInteger value) {
+        this.totalOrders = value;
+    }
+
+    /**
+     * Gets the value of the totalAmount property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVZOrderDetailsType.TotalAmount }
+     *     
+     */
+    public HVZOrderDetailsType.TotalAmount getTotalAmount() {
+        return totalAmount;
+    }
+
+    /**
+     * Sets the value of the totalAmount property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVZOrderDetailsType.TotalAmount }
+     *     
+     */
+    public void setTotalAmount(HVZOrderDetailsType.TotalAmount value) {
+        this.totalAmount = value;
+    }
+
+    /**
+     * Gets the value of the currency property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCurrency() {
+        return currency;
+    }
+
+    /**
+     * Sets the value of the currency property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCurrency(String value) {
+        this.currency = value;
+    }
+
+    /**
+     * Gets the value of the firstOrderInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVZOrderDetailsType.FirstOrderInfo }
+     *     
+     */
+    public HVZOrderDetailsType.FirstOrderInfo getFirstOrderInfo() {
+        return firstOrderInfo;
+    }
+
+    /**
+     * Sets the value of the firstOrderInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVZOrderDetailsType.FirstOrderInfo }
+     *     
+     */
+    public void setFirstOrderInfo(HVZOrderDetailsType.FirstOrderInfo value) {
+        this.firstOrderInfo = value;
+    }
+
+    /**
+     * Gets the value of the signingInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVUSigningInfoType }
+     *     
+     */
+    public HVUSigningInfoType getSigningInfo() {
+        return signingInfo;
+    }
+
+    /**
+     * Sets the value of the signingInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVUSigningInfoType }
+     *     
+     */
+    public void setSigningInfo(HVUSigningInfoType value) {
+        this.signingInfo = value;
+    }
+
+    /**
+     * Gets the value of the signerInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the signerInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignerInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignerInfoType }
+     * 
+     * 
+     */
+    public List<SignerInfoType> getSignerInfo() {
+        if (signerInfo == null) {
+            signerInfo = new ArrayList<SignerInfoType>();
+        }
+        return this.signerInfo;
+    }
+
+    /**
+     * Gets the value of the originatorInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HVUOriginatorInfoType }
+     *     
+     */
+    public HVUOriginatorInfoType getOriginatorInfo() {
+        return originatorInfo;
+    }
+
+    /**
+     * Sets the value of the originatorInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HVUOriginatorInfoType }
+     *     
+     */
+    public void setOriginatorInfo(HVUOriginatorInfoType value) {
+        this.originatorInfo = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="OrderPartyInfo" 
type="{http://www.w3.org/2001/XMLSchema}normalizedString"; minOccurs="0"/>
+     *         &lt;element name="AccountInfo" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *                 &lt;sequence>
+     *                   &lt;choice maxOccurs="2">
+     *                     &lt;element name="AccountNumber">
+     *                       &lt;complexType>
+     *                         &lt;simpleContent>
+     *                           &lt;extension 
base="&lt;urn:org:ebics:H004>AccountNumberType">
+     *                             &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *                           &lt;/extension>
+     *                         &lt;/simpleContent>
+     *                       &lt;/complexType>
+     *                     &lt;/element>
+     *                     &lt;element name="NationalAccountNumber">
+     *                       &lt;complexType>
+     *                         &lt;simpleContent>
+     *                           &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+     *                             &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *                           &lt;/extension>
+     *                         &lt;/simpleContent>
+     *                       &lt;/complexType>
+     *                     &lt;/element>
+     *                   &lt;/choice>
+     *                   &lt;choice maxOccurs="2">
+     *                     &lt;element name="BankCode">
+     *                       &lt;complexType>
+     *                         &lt;simpleContent>
+     *                           &lt;extension 
base="&lt;urn:org:ebics:H004>BankCodeType">
+     *                             &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+     *                             &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+     *                           &lt;/extension>
+     *                         &lt;/simpleContent>
+     *                       &lt;/complexType>
+     *                     &lt;/element>
+     *                     &lt;element name="NationalBankCode">
+     *                       &lt;complexType>
+     *                         &lt;simpleContent>
+     *                           &lt;extension 
base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+     *                             &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+     *                           &lt;/extension>
+     *                         &lt;/simpleContent>
+     *                       &lt;/complexType>
+     *                     &lt;/element>
+     *                   &lt;/choice>
+     *                 &lt;/sequence>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "orderPartyInfo",
+        "accountInfo"
+    })
+    public static class FirstOrderInfo {
+
+        @XmlElement(name = "OrderPartyInfo")
+        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+        @XmlSchemaType(name = "normalizedString")
+        protected String orderPartyInfo;
+        @XmlElement(name = "AccountInfo")
+        protected HVZOrderDetailsType.FirstOrderInfo.AccountInfo accountInfo;
+
+        /**
+         * Gets the value of the orderPartyInfo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getOrderPartyInfo() {
+            return orderPartyInfo;
+        }
+
+        /**
+         * Sets the value of the orderPartyInfo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setOrderPartyInfo(String value) {
+            this.orderPartyInfo = value;
+        }
+
+        /**
+         * Gets the value of the accountInfo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link HVZOrderDetailsType.FirstOrderInfo.AccountInfo }
+         *     
+         */
+        public HVZOrderDetailsType.FirstOrderInfo.AccountInfo getAccountInfo() 
{
+            return accountInfo;
+        }
+
+        /**
+         * Sets the value of the accountInfo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link HVZOrderDetailsType.FirstOrderInfo.AccountInfo }
+         *     
+         */
+        public void 
setAccountInfo(HVZOrderDetailsType.FirstOrderInfo.AccountInfo value) {
+            this.accountInfo = value;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content 
contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+         *       &lt;sequence>
+         *         &lt;choice maxOccurs="2">
+         *           &lt;element name="AccountNumber">
+         *             &lt;complexType>
+         *               &lt;simpleContent>
+         *                 &lt;extension 
base="&lt;urn:org:ebics:H004>AccountNumberType">
+         *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+         *                 &lt;/extension>
+         *               &lt;/simpleContent>
+         *             &lt;/complexType>
+         *           &lt;/element>
+         *           &lt;element name="NationalAccountNumber">
+         *             &lt;complexType>
+         *               &lt;simpleContent>
+         *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+         *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+         *                 &lt;/extension>
+         *               &lt;/simpleContent>
+         *             &lt;/complexType>
+         *           &lt;/element>
+         *         &lt;/choice>
+         *         &lt;choice maxOccurs="2">
+         *           &lt;element name="BankCode">
+         *             &lt;complexType>
+         *               &lt;simpleContent>
+         *                 &lt;extension 
base="&lt;urn:org:ebics:H004>BankCodeType">
+         *                   &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+         *                   &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+         *                 &lt;/extension>
+         *               &lt;/simpleContent>
+         *             &lt;/complexType>
+         *           &lt;/element>
+         *           &lt;element name="NationalBankCode">
+         *             &lt;complexType>
+         *               &lt;simpleContent>
+         *                 &lt;extension 
base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+         *                   &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+         *                 &lt;/extension>
+         *               &lt;/simpleContent>
+         *             &lt;/complexType>
+         *           &lt;/element>
+         *         &lt;/choice>
+         *       &lt;/sequence>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "accountNumberOrNationalAccountNumber",
+            "bankCodeOrNationalBankCode"
+        })
+        public static class AccountInfo {
+
+            @XmlElements({
+                @XmlElement(name = "AccountNumber", type = 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.AccountNumber.class),
+                @XmlElement(name = "NationalAccountNumber", type = 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalAccountNumber.class)
+            })
+            protected List<Object> accountNumberOrNationalAccountNumber;
+            @XmlElements({
+                @XmlElement(name = "BankCode", type = 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.BankCode.class),
+                @XmlElement(name = "NationalBankCode", type = 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalBankCode.class)
+            })
+            protected List<Object> bankCodeOrNationalBankCode;
+
+            /**
+             * Gets the value of the accountNumberOrNationalAccountNumber 
property.
+             * 
+             * <p>
+             * This accessor method returns a reference to the live list,
+             * not a snapshot. Therefore any modification you make to the
+             * returned list will be present inside the JAXB object.
+             * This is why there is not a <CODE>set</CODE> method for the 
accountNumberOrNationalAccountNumber property.
+             * 
+             * <p>
+             * For example, to add a new item, do as follows:
+             * <pre>
+             *    getAccountNumberOrNationalAccountNumber().add(newItem);
+             * </pre>
+             * 
+             * 
+             * <p>
+             * Objects of the following type(s) are allowed in the list
+             * {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.AccountNumber }
+             * {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalAccountNumber }
+             * 
+             * 
+             */
+            public List<Object> getAccountNumberOrNationalAccountNumber() {
+                if (accountNumberOrNationalAccountNumber == null) {
+                    accountNumberOrNationalAccountNumber = new 
ArrayList<Object>();
+                }
+                return this.accountNumberOrNationalAccountNumber;
+            }
+
+            /**
+             * Gets the value of the bankCodeOrNationalBankCode property.
+             * 
+             * <p>
+             * This accessor method returns a reference to the live list,
+             * not a snapshot. Therefore any modification you make to the
+             * returned list will be present inside the JAXB object.
+             * This is why there is not a <CODE>set</CODE> method for the 
bankCodeOrNationalBankCode property.
+             * 
+             * <p>
+             * For example, to add a new item, do as follows:
+             * <pre>
+             *    getBankCodeOrNationalBankCode().add(newItem);
+             * </pre>
+             * 
+             * 
+             * <p>
+             * Objects of the following type(s) are allowed in the list
+             * {@link HVZOrderDetailsType.FirstOrderInfo.AccountInfo.BankCode }
+             * {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalBankCode }
+             * 
+             * 
+             */
+            public List<Object> getBankCodeOrNationalBankCode() {
+                if (bankCodeOrNationalBankCode == null) {
+                    bankCodeOrNationalBankCode = new ArrayList<Object>();
+                }
+                return this.bankCodeOrNationalBankCode;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension 
base="&lt;urn:org:ebics:H004>AccountNumberType">
+             *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class AccountNumber {
+
+                @XmlValue
+                @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+                protected String value;
+                @XmlAttribute(name = "international")
+                protected Boolean international;
+
+                /**
+                 * Datentyp für eine Kontonummer (national/international).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the international property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public boolean isInternational() {
+                    if (international == null) {
+                        return false;
+                    } else {
+                        return international;
+                    }
+                }
+
+                /**
+                 * Sets the value of the international property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setInternational(Boolean value) {
+                    this.international = value;
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension base="&lt;urn:org:ebics:H004>BankCodeType">
+             *       &lt;attribute name="international" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; default="false" />
+             *       &lt;attribute name="Prefix" 
type="{urn:org:ebics:H004}BankCodePrefixType" />
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class BankCode {
+
+                @XmlValue
+                @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+                protected String value;
+                @XmlAttribute(name = "international")
+                protected Boolean international;
+                @XmlAttribute(name = "Prefix")
+                @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+                protected String prefix;
+
+                /**
+                 * Datentyp für eine Bankleitzahl (national/international).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the international property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public boolean isInternational() {
+                    if (international == null) {
+                        return false;
+                    } else {
+                        return international;
+                    }
+                }
+
+                /**
+                 * Sets the value of the international property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setInternational(Boolean value) {
+                    this.international = value;
+                }
+
+                /**
+                 * Gets the value of the prefix property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getPrefix() {
+                    return prefix;
+                }
+
+                /**
+                 * Sets the value of the prefix property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setPrefix(String value) {
+                    this.prefix = value;
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension 
base="&lt;urn:org:ebics:H004>NationalAccountNumberType">
+             *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class NationalAccountNumber {
+
+                @XmlValue
+                @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+                protected String value;
+                @XmlAttribute(name = "format", required = true)
+                @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+                @XmlSchemaType(name = "token")
+                protected String format;
+
+                /**
+                 * Datentyp für eine Kontonummer (freies Format).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the format property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getFormat() {
+                    return format;
+                }
+
+                /**
+                 * Sets the value of the format property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setFormat(String value) {
+                    this.format = value;
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content 
contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension 
base="&lt;urn:org:ebics:H004>NationalBankCodeType">
+             *       &lt;attribute name="format" use="required" 
type="{http://www.w3.org/2001/XMLSchema}token"; />
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class NationalBankCode {
+
+                @XmlValue
+                @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+                protected String value;
+                @XmlAttribute(name = "format", required = true)
+                @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+                @XmlSchemaType(name = "token")
+                protected String format;
+
+                /**
+                 * Datentyp für eine Bankleitzahl (freies Format).
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the format property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getFormat() {
+                    return format;
+                }
+
+                /**
+                 * Sets the value of the format property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setFormat(String value) {
+                    this.format = value;
+                }
+
+            }
+
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;urn:org:ebics:H004>AmountValueType">
+     *       &lt;attribute name="isCredit" 
type="{http://www.w3.org/2001/XMLSchema}boolean"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class TotalAmount {
+
+        @XmlValue
+        protected BigDecimal value;
+        @XmlAttribute(name = "isCredit")
+        protected Boolean isCredit;
+
+        /**
+         * Datentyp für einen Betragswert (ohne Währung).
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigDecimal }
+         *     
+         */
+        public BigDecimal getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigDecimal }
+         *     
+         */
+        public void setValue(BigDecimal value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the isCredit property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIsCredit() {
+            return isCredit;
+        }
+
+        /**
+         * Sets the value of the isCredit property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIsCredit(Boolean value) {
+            this.isCredit = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderParamsType.java
similarity index 50%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderParamsType.java
index 9d1e96f..aa30b29 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZOrderParamsType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -7,26 +14,24 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlList;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für zusätzliche Auftragsparameter für Auftragsart HVZ.
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for HVZOrderParamsType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="HVZOrderParamsType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="OrderTypes" 
type="{urn:org:ebics:H004}OrderTListType" minOccurs="0"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +42,45 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "HVZOrderParamsType", propOrder = {
+    "orderTypes",
     "any"
 })
-public class HEVRequestDataType {
+public class HVZOrderParamsType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlList
+    @XmlElement(name = "OrderTypes")
+    protected List<String> orderTypes;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the orderTypes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderTypes 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderTypes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
      * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
-     */
-    public String getHostID() {
-        return hostID;
-    }
-
-    /**
-     * Sets the value of the hostID property.
      * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public List<String> getOrderTypes() {
+        if (orderTypes == null) {
+            orderTypes = new ArrayList<String>();
+        }
+        return this.orderTypes;
     }
 
     /**
@@ -92,8 +101,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZResponseOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZResponseOrderDataType.java
new file mode 100644
index 0000000..d95ba64
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/HVZResponseOrderDataType.java
@@ -0,0 +1,114 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Order data for order type HVZ (response: receive summary of orders 
currently stored in the distributed signature processing unit with additional 
informations).
+ * 
+ * <p>Java class for HVZResponseOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HVZResponseOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}HVZOrderDetailsType" maxOccurs="unbounded"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HVZResponseOrderDataType", propOrder = {
+    "orderDetails",
+    "any"
+})
+public class HVZResponseOrderDataType {
+
+    @XmlElement(name = "OrderDetails", required = true)
+    protected List<HVZOrderDetailsType> orderDetails;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderDetails property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderDetails 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderDetails().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link HVZOrderDetailsType }
+     * 
+     * 
+     */
+    public List<HVZOrderDetailsType> getOrderDetails() {
+        if (orderDetails == null) {
+            orderDetails = new ArrayList<HVZOrderDetailsType>();
+        }
+        return this.orderDetails;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyInfoType.java
new file mode 100644
index 0000000..9ec05a0
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyInfoType.java
@@ -0,0 +1,142 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="KeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;choice maxOccurs="unbounded">
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyName"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyValue"/>
+ *         &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}RetrievalMethod"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}PGPData"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SPKIData"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}MgmtData"/>
+ *         &lt;any processContents='lax' namespace='##other'/>
+ *       &lt;/choice>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyInfoType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class KeyInfoType {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "RetrievalMethod", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "MgmtData", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "KeyName", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "KeyValue", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "X509Data", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "SPKIData", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "PGPData", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    })
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link Element }
+     * {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}
+     * {@link JAXBElement }{@code <}{@link X509DataType }{@code >}
+     * {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
+     * {@link String }
+     * {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyValueType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyValueType.java
new file mode 100644
index 0000000..f12aa1f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/KeyValueType.java
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="KeyValueType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;choice>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DSAKeyValue"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RSAKeyValue"/>
+ *         &lt;any processContents='lax' namespace='##other'/>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyValueType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class KeyValueType {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "RSAKeyValue", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "DSAKeyValue", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    })
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
+     * {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ManifestType.java
similarity index 50%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ManifestType.java
index 9d1e96f..c5547d0 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ManifestType.java
@@ -1,34 +1,39 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
- * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for ManifestType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="ManifestType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
- *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference"; 
maxOccurs="unbounded"/>
  *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
  *     &lt;/restriction>
  *   &lt;/complexContent>
  * &lt;/complexType>
@@ -37,71 +42,70 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
-    "any"
+@XmlType(name = "ManifestType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "reference"
 })
-public class HEVRequestDataType {
+public class ManifestType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
+    @XmlElement(name = "Reference", required = true)
+    protected List<ReferenceType> reference;
+    @XmlAttribute(name = "Id")
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
-    @XmlAnyElement(lax = true)
-    protected List<Object> any;
-
-    /**
-     * Gets the value of the hostID property.
-     * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
-     */
-    public String getHostID() {
-        return hostID;
-    }
-
-    /**
-     * Sets the value of the hostID property.
-     * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
-     */
-    public void setHostID(String value) {
-        this.hostID = value;
-    }
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
 
     /**
-     * Gets the value of the any property.
+     * Gets the value of the reference property.
      * 
      * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * This is why there is not a <CODE>set</CODE> method for the reference 
property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
      * <pre>
-     *    getAny().add(newItem);
+     *    getReference().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
-     * {@link Element }
+     * {@link ReferenceType }
      * 
      * 
      */
-    public List<Object> getAny() {
-        if (any == null) {
-            any = new ArrayList<Object>();
+    public List<ReferenceType> getReference() {
+        if (reference == null) {
+            reference = new ArrayList<ReferenceType>();
         }
-        return this.any;
+        return this.reference;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
     }
 
 }
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsReqOrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsReqOrderDetailsType.java
new file mode 100644
index 0000000..e7024ca
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsReqOrderDetailsType.java
@@ -0,0 +1,45 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für OrderDetails im statischen EBICS-Header von 
ebicsNoPubKeyDigestsRequest.
+ * 
+ * <p>Java class for NoPubKeyDigestsReqOrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="NoPubKeyDigestsReqOrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}OrderDetailsType">
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="OrderAttribute" 
type="{urn:org:ebics:H004}OrderAttributeBaseType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NoPubKeyDigestsReqOrderDetailsType")
+public class NoPubKeyDigestsReqOrderDetailsType
+    extends OrderDetailsType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsRequestStaticHeaderType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsRequestStaticHeaderType.java
new file mode 100644
index 0000000..51711cc
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/NoPubKeyDigestsRequestStaticHeaderType.java
@@ -0,0 +1,53 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für den statischen EBICS-Header bei Aufträgen ohne Übertragung der 
Digests der Bankschlüssel (Auftrag HBP): keine Digests der öffentlichen 
Bankschlüssel, keine EU-Datei, keine Nutzdaten, OrderId optional!, Nonce, 
Timestamp, X001 Authentifizierung, Auftragsattribut DZHNN
+ * 
+ * <p>Java class for NoPubKeyDigestsRequestStaticHeaderType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="NoPubKeyDigestsRequestStaticHeaderType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}StaticHeaderBaseType">
+ *       &lt;sequence>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;element name="Nonce" type="{urn:org:ebics:H004}NonceType"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="SystemID" type="{urn:org:ebics:H004}UserIDType" 
minOccurs="0"/>
+ *         &lt;element name="Product" 
type="{urn:org:ebics:H004}ProductElementType" minOccurs="0"/>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}NoPubKeyDigestsReqOrderDetailsType"/>
+ *         &lt;element name="SecurityMedium" 
type="{urn:org:ebics:H004}SecurityMediumType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NoPubKeyDigestsRequestStaticHeaderType")
+public class NoPubKeyDigestsRequestStaticHeaderType
+    extends StaticHeaderBaseType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectFactory.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectFactory.java
new file mode 100644
index 0000000..d29569f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectFactory.java
@@ -0,0 +1,1999 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the tech.libeufin.messages.ebics.keyrequest package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _HVTResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HVTResponseOrderData");
+    private final static QName _KeyInfo_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "KeyInfo");
+    private final static QName _HPBResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HPBResponseOrderData");
+    private final static QName _GenericOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "GenericOrderParams");
+    private final static QName _HSARequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HSARequestOrderData");
+    private final static QName _ebicsSignatureDataAtEbicsOrders_QNAME = new 
QName("urn:org:ebics:H004", "EBICSSignatureData");
+    private final static QName _HVDResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HVDResponseOrderData");
+    private final static QName _HCARequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HCARequestOrderData");
+    private final static QName _SignatureProperty_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SignatureProperty");
+    private final static QName _HVEOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVEOrderParams");
+    private final static QName _EBICSOrderData_QNAME = new 
QName("urn:org:ebics:H004", "EBICSOrderData");
+    private final static QName _RSAKeyValue_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "RSAKeyValue");
+    private final static QName _HCSRequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HCSRequestOrderData");
+    private final static QName _HVSOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVSOrderParams");
+    private final static QName _SignatureMethod_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SignatureMethod");
+    private final static QName _Object_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Object");
+    private final static QName _BankSignatureData_QNAME = new 
QName("urn:org:ebics:H004", "BankSignatureData");
+    private final static QName _FDLOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "FDLOrderParams");
+    private final static QName _PGPData_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "PGPData");
+    private final static QName _RetrievalMethod_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "RetrievalMethod");
+    private final static QName _SignaturePubKeyOrderData_QNAME = new 
QName("http://www.ebics.org/S001";, "SignaturePubKeyOrderData");
+    private final static QName _DSAKeyValue_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "DSAKeyValue");
+    private final static QName _HVSRequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HVSRequestOrderData");
+    private final static QName _OrderSignatureData_QNAME = new 
QName("http://www.ebics.org/S001";, "OrderSignatureData");
+    private final static QName _H3KRequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "H3KRequestOrderData");
+    private final static QName _HTDResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HTDResponseOrderData");
+    private final static QName _SPKIData_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SPKIData");
+    private final static QName _HIARequestOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HIARequestOrderData");
+    private final static QName _HVZResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HVZResponseOrderData");
+    private final static QName _SignatureValue_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SignatureValue");
+    private final static QName _UserSignatureData_QNAME = new 
QName("http://www.ebics.org/S001";, "UserSignatureData");
+    private final static QName _OrderParams_QNAME = new 
QName("urn:org:ebics:H004", "OrderParams");
+    private final static QName _KeyValue_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "KeyValue");
+    private final static QName _Transforms_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Transforms");
+    private final static QName _HVUResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HVUResponseOrderData");
+    private final static QName _SignaturePubKeyInfo_QNAME = new 
QName("http://www.ebics.org/S001";, "SignaturePubKeyInfo");
+    private final static QName _HVUOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVUOrderParams");
+    private final static QName _DigestMethod_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "DigestMethod");
+    private final static QName _X509Data_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509Data");
+    private final static QName _AuthSignature_QNAME = new 
QName("urn:org:ebics:H004", "AuthSignature");
+    private final static QName _KeyName_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "KeyName");
+    private final static QName _Signature_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Signature");
+    private final static QName _MgmtData_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "MgmtData");
+    private final static QName _HAAResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HAAResponseOrderData");
+    private final static QName _HVZOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVZOrderParams");
+    private final static QName _SignatureProperties_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SignatureProperties");
+    private final static QName _HPDResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HPDResponseOrderData");
+    private final static QName _FULOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "FULOrderParams");
+    private final static QName _Transform_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Transform");
+    private final static QName _HKDResponseOrderData_QNAME = new 
QName("urn:org:ebics:H004", "HKDResponseOrderData");
+    private final static QName _HVDOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVDOrderParams");
+    private final static QName _StandardOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "StandardOrderParams");
+    private final static QName _Reference_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Reference");
+    private final static QName _DigestValue_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "DigestValue");
+    private final static QName _HVTOrderParams_QNAME = new 
QName("urn:org:ebics:H004", "HVTOrderParams");
+    private final static QName _CanonicalizationMethod_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "CanonicalizationMethod");
+    private final static QName _SignedInfo_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SignedInfo");
+    private final static QName _ebicsSignatureDataAtEbicsSignatures_QNAME = 
new QName("http://www.ebics.org/S001";, "EBICSSignatureData");
+    private final static QName _Manifest_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "Manifest");
+    private final static QName _X509DataTypeX509IssuerSerial_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509IssuerSerial");
+    private final static QName _X509DataTypeX509CRL_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509CRL");
+    private final static QName _X509DataTypeX509SubjectName_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509SubjectName");
+    private final static QName _X509DataTypeX509SKI_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509SKI");
+    private final static QName _X509DataTypeX509Certificate_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "X509Certificate");
+    private final static QName _SPKIDataTypeSPKISexp_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "SPKISexp");
+    private final static QName _PGPDataTypePGPKeyID_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "PGPKeyID");
+    private final static QName _PGPDataTypePGPKeyPacket_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "PGPKeyPacket");
+    private final static QName _StaticHeaderBaseTypeProduct_QNAME = new 
QName("urn:org:ebics:H004", "Product");
+    private final static QName _SignatureMethodTypeHMACOutputLength_QNAME = 
new QName("http://www.w3.org/2000/09/xmldsig#";, "HMACOutputLength");
+    private final static QName _TransformTypeXPath_QNAME = new 
QName("http://www.w3.org/2000/09/xmldsig#";, "XPath");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of 
schema derived classes for package: tech.libeufin.messages.ebics.keyrequest
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsecuredRequest }
+     * 
+     */
+    public EbicsUnsecuredRequest createEbicsUnsecuredRequest() {
+        return new EbicsUnsecuredRequest();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsignedRequest }
+     * 
+     */
+    public EbicsUnsignedRequest createEbicsUnsignedRequest() {
+        return new EbicsUnsignedRequest();
+    }
+
+    /**
+     * Create an instance of {@link EbicsNoPubKeyDigestsRequest }
+     * 
+     */
+    public EbicsNoPubKeyDigestsRequest createEbicsNoPubKeyDigestsRequest() {
+        return new EbicsNoPubKeyDigestsRequest();
+    }
+
+    /**
+     * Create an instance of {@link Parameter }
+     * 
+     */
+    public Parameter createParameter() {
+        return new Parameter();
+    }
+
+    /**
+     * Create an instance of {@link UserSignatureDataSigBookType }
+     * 
+     */
+    public UserSignatureDataSigBookType createUserSignatureDataSigBookType() {
+        return new UserSignatureDataSigBookType();
+    }
+
+    /**
+     * Create an instance of {@link AccountType }
+     * 
+     */
+    public AccountType createAccountType() {
+        return new AccountType();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferResponseType }
+     * 
+     */
+    public DataTransferResponseType createDataTransferResponseType() {
+        return new DataTransferResponseType();
+    }
+
+    /**
+     * Create an instance of {@link DataEncryptionInfoType }
+     * 
+     */
+    public DataEncryptionInfoType createDataEncryptionInfoType() {
+        return new DataEncryptionInfoType();
+    }
+
+    /**
+     * Create an instance of {@link AttributedAccountType }
+     * 
+     */
+    public AttributedAccountType createAttributedAccountType() {
+        return new AttributedAccountType();
+    }
+
+    /**
+     * Create an instance of {@link UserInfoType }
+     * 
+     */
+    public UserInfoType createUserInfoType() {
+        return new UserInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HPDAccessParamsType }
+     * 
+     */
+    public HPDAccessParamsType createHPDAccessParamsType() {
+        return new HPDAccessParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HVZOrderDetailsType }
+     * 
+     */
+    public HVZOrderDetailsType createHVZOrderDetailsType() {
+        return new HVZOrderDetailsType();
+    }
+
+    /**
+     * Create an instance of {@link HVZOrderDetailsType.FirstOrderInfo }
+     * 
+     */
+    public HVZOrderDetailsType.FirstOrderInfo 
createHVZOrderDetailsTypeFirstOrderInfo() {
+        return new HVZOrderDetailsType.FirstOrderInfo();
+    }
+
+    /**
+     * Create an instance of {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo }
+     * 
+     */
+    public HVZOrderDetailsType.FirstOrderInfo.AccountInfo 
createHVZOrderDetailsTypeFirstOrderInfoAccountInfo() {
+        return new HVZOrderDetailsType.FirstOrderInfo.AccountInfo();
+    }
+
+    /**
+     * Create an instance of {@link PartnerInfoType }
+     * 
+     */
+    public PartnerInfoType createPartnerInfoType() {
+        return new PartnerInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderInfoType }
+     * 
+     */
+    public HVTOrderInfoType createHVTOrderInfoType() {
+        return new HVTOrderInfoType();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferRequestType }
+     * 
+     */
+    public DataTransferRequestType createDataTransferRequestType() {
+        return new DataTransferRequestType();
+    }
+
+    /**
+     * Create an instance of {@link SignerInfoType }
+     * 
+     */
+    public SignerInfoType createSignerInfoType() {
+        return new SignerInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HPDProtocolParamsType }
+     * 
+     */
+    public HPDProtocolParamsType createHPDProtocolParamsType() {
+        return new HPDProtocolParamsType();
+    }
+
+    /**
+     * Create an instance of {@link BankSignatureDataSigBookType }
+     * 
+     */
+    public BankSignatureDataSigBookType createBankSignatureDataSigBookType() {
+        return new BankSignatureDataSigBookType();
+    }
+
+    /**
+     * Create an instance of {@link StandardOrderParamsType }
+     * 
+     */
+    public StandardOrderParamsType createStandardOrderParamsType() {
+        return new StandardOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link FDLOrderParamsType }
+     * 
+     */
+    public FDLOrderParamsType createFDLOrderParamsType() {
+        return new FDLOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsignedRequest.Body }
+     * 
+     */
+    public EbicsUnsignedRequest.Body createEbicsUnsignedRequestBody() {
+        return new EbicsUnsignedRequest.Body();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsignedRequest.Body.DataTransfer }
+     * 
+     */
+    public EbicsUnsignedRequest.Body.DataTransfer 
createEbicsUnsignedRequestBodyDataTransfer() {
+        return new EbicsUnsignedRequest.Body.DataTransfer();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderParamsType }
+     * 
+     */
+    public HVTOrderParamsType createHVTOrderParamsType() {
+        return new HVTOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsecuredRequest.Body }
+     * 
+     */
+    public EbicsUnsecuredRequest.Body createEbicsUnsecuredRequestBody() {
+        return new EbicsUnsecuredRequest.Body();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsecuredRequest.Body.DataTransfer }
+     * 
+     */
+    public EbicsUnsecuredRequest.Body.DataTransfer 
createEbicsUnsecuredRequestBodyDataTransfer() {
+        return new EbicsUnsecuredRequest.Body.DataTransfer();
+    }
+
+    /**
+     * Create an instance of {@link HVZOrderParamsType }
+     * 
+     */
+    public HVZOrderParamsType createHVZOrderParamsType() {
+        return new HVZOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HAAResponseOrderDataType }
+     * 
+     */
+    public HAAResponseOrderDataType createHAAResponseOrderDataType() {
+        return new HAAResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVSOrderParamsType }
+     * 
+     */
+    public HVSOrderParamsType createHVSOrderParamsType() {
+        return new HVSOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HPDResponseOrderDataType }
+     * 
+     */
+    public HPDResponseOrderDataType createHPDResponseOrderDataType() {
+        return new HPDResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link FULOrderParamsType }
+     * 
+     */
+    public FULOrderParamsType createFULOrderParamsType() {
+        return new FULOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link SignatureType }
+     * 
+     */
+    public SignatureType createSignatureType() {
+        return new SignatureType();
+    }
+
+    /**
+     * Create an instance of {@link HVEOrderParamsType }
+     * 
+     */
+    public HVEOrderParamsType createHVEOrderParamsType() {
+        return new HVEOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsecuredRequest.Header }
+     * 
+     */
+    public EbicsUnsecuredRequest.Header createEbicsUnsecuredRequestHeader() {
+        return new EbicsUnsecuredRequest.Header();
+    }
+
+    /**
+     * Create an instance of {@link HCSRequestOrderDataType }
+     * 
+     */
+    public HCSRequestOrderDataType createHCSRequestOrderDataType() {
+        return new HCSRequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVSRequestOrderDataType }
+     * 
+     */
+    public HVSRequestOrderDataType createHVSRequestOrderDataType() {
+        return new HVSRequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link EbicsUnsignedRequest.Header }
+     * 
+     */
+    public EbicsUnsignedRequest.Header createEbicsUnsignedRequestHeader() {
+        return new EbicsUnsignedRequest.Header();
+    }
+
+    /**
+     * Create an instance of {@link H3KRequestOrderDataType }
+     * 
+     */
+    public H3KRequestOrderDataType createH3KRequestOrderDataType() {
+        return new H3KRequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HTDReponseOrderDataType }
+     * 
+     */
+    public HTDReponseOrderDataType createHTDReponseOrderDataType() {
+        return new HTDReponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HKDResponseOrderDataType }
+     * 
+     */
+    public HKDResponseOrderDataType createHKDResponseOrderDataType() {
+        return new HKDResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVDOrderParamsType }
+     * 
+     */
+    public HVDOrderParamsType createHVDOrderParamsType() {
+        return new HVDOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HPBResponseOrderDataType }
+     * 
+     */
+    public HPBResponseOrderDataType createHPBResponseOrderDataType() {
+        return new HPBResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link GenericOrderParamsType }
+     * 
+     */
+    public GenericOrderParamsType createGenericOrderParamsType() {
+        return new GenericOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HSARequestOrderDataType }
+     * 
+     */
+    public HSARequestOrderDataType createHSARequestOrderDataType() {
+        return new HSARequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HIARequestOrderDataType }
+     * 
+     */
+    public HIARequestOrderDataType createHIARequestOrderDataType() {
+        return new HIARequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVZResponseOrderDataType }
+     * 
+     */
+    public HVZResponseOrderDataType createHVZResponseOrderDataType() {
+        return new HVZResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVTResponseOrderData }
+     * 
+     */
+    public HVTResponseOrderData createHVTResponseOrderData() {
+        return new HVTResponseOrderData();
+    }
+
+    /**
+     * Create an instance of {@link HCARequestOrderDataType }
+     * 
+     */
+    public HCARequestOrderDataType createHCARequestOrderDataType() {
+        return new HCARequestOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link EbicsNoPubKeyDigestsRequest.Header }
+     * 
+     */
+    public EbicsNoPubKeyDigestsRequest.Header 
createEbicsNoPubKeyDigestsRequestHeader() {
+        return new EbicsNoPubKeyDigestsRequest.Header();
+    }
+
+    /**
+     * Create an instance of {@link EbicsNoPubKeyDigestsRequest.Body }
+     * 
+     */
+    public EbicsNoPubKeyDigestsRequest.Body 
createEbicsNoPubKeyDigestsRequestBody() {
+        return new EbicsNoPubKeyDigestsRequest.Body();
+    }
+
+    /**
+     * Create an instance of {@link Parameter.Value }
+     * 
+     */
+    public Parameter.Value createParameterValue() {
+        return new Parameter.Value();
+    }
+
+    /**
+     * Create an instance of {@link HVUOrderParamsType }
+     * 
+     */
+    public HVUOrderParamsType createHVUOrderParamsType() {
+        return new HVUOrderParamsType();
+    }
+
+    /**
+     * Create an instance of {@link HVUResponseOrderDataType }
+     * 
+     */
+    public HVUResponseOrderDataType createHVUResponseOrderDataType() {
+        return new HVUResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link HVDResponseOrderDataType }
+     * 
+     */
+    public HVDResponseOrderDataType createHVDResponseOrderDataType() {
+        return new HVDResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link NoPubKeyDigestsReqOrderDetailsType }
+     * 
+     */
+    public NoPubKeyDigestsReqOrderDetailsType 
createNoPubKeyDigestsReqOrderDetailsType() {
+        return new NoPubKeyDigestsReqOrderDetailsType();
+    }
+
+    /**
+     * Create an instance of {@link PubKeyDigestType }
+     * 
+     */
+    public PubKeyDigestType createPubKeyDigestType() {
+        return new PubKeyDigestType();
+    }
+
+    /**
+     * Create an instance of {@link FileFormatType }
+     * 
+     */
+    public FileFormatType createFileFormatType() {
+        return new FileFormatType();
+    }
+
+    /**
+     * Create an instance of {@link EncryptionPubKeyInfoType }
+     * 
+     */
+    public EncryptionPubKeyInfoType createEncryptionPubKeyInfoType() {
+        return new EncryptionPubKeyInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HVTResponseOrderDataType }
+     * 
+     */
+    public HVTResponseOrderDataType createHVTResponseOrderDataType() {
+        return new HVTResponseOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link NoPubKeyDigestsRequestStaticHeaderType }
+     * 
+     */
+    public NoPubKeyDigestsRequestStaticHeaderType 
createNoPubKeyDigestsRequestStaticHeaderType() {
+        return new NoPubKeyDigestsRequestStaticHeaderType();
+    }
+
+    /**
+     * Create an instance of {@link HVUSigningInfoType }
+     * 
+     */
+    public HVUSigningInfoType createHVUSigningInfoType() {
+        return new HVUSigningInfoType();
+    }
+
+    /**
+     * Create an instance of {@link AuthenticationCertificateInfoType }
+     * 
+     */
+    public AuthenticationCertificateInfoType 
createAuthenticationCertificateInfoType() {
+        return new AuthenticationCertificateInfoType();
+    }
+
+    /**
+     * Create an instance of {@link AmountType }
+     * 
+     */
+    public AmountType createAmountType() {
+        return new AmountType();
+    }
+
+    /**
+     * Create an instance of {@link ProductElementType }
+     * 
+     */
+    public ProductElementType createProductElementType() {
+        return new ProductElementType();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderFlagsType }
+     * 
+     */
+    public HVTOrderFlagsType createHVTOrderFlagsType() {
+        return new HVTOrderFlagsType();
+    }
+
+    /**
+     * Create an instance of {@link UnsecuredReqOrderDetailsType }
+     * 
+     */
+    public UnsecuredReqOrderDetailsType createUnsecuredReqOrderDetailsType() {
+        return new UnsecuredReqOrderDetailsType();
+    }
+
+    /**
+     * Create an instance of {@link HVUOrderDetailsType }
+     * 
+     */
+    public HVUOrderDetailsType createHVUOrderDetailsType() {
+        return new HVUOrderDetailsType();
+    }
+
+    /**
+     * Create an instance of {@link EncryptionCertificateInfoType }
+     * 
+     */
+    public EncryptionCertificateInfoType createEncryptionCertificateInfoType() 
{
+        return new EncryptionCertificateInfoType();
+    }
+
+    /**
+     * Create an instance of {@link SignatureCertificateInfoType }
+     * 
+     */
+    public SignatureCertificateInfoType createSignatureCertificateInfoType() {
+        return new SignatureCertificateInfoType();
+    }
+
+    /**
+     * Create an instance of {@link CertificateInfoType }
+     * 
+     */
+    public CertificateInfoType createCertificateInfoType() {
+        return new CertificateInfoType();
+    }
+
+    /**
+     * Create an instance of {@link PreValidationRequestType }
+     * 
+     */
+    public PreValidationRequestType createPreValidationRequestType() {
+        return new PreValidationRequestType();
+    }
+
+    /**
+     * Create an instance of {@link PubKeyInfoTypeAtEbicsTypes }
+     * 
+     */
+    public PubKeyInfoTypeAtEbicsTypes createPubKeyInfoTypeAtEbicsTypes() {
+        return new PubKeyInfoTypeAtEbicsTypes();
+    }
+
+    /**
+     * Create an instance of {@link TransferReceiptRequestType }
+     * 
+     */
+    public TransferReceiptRequestType createTransferReceiptRequestType() {
+        return new TransferReceiptRequestType();
+    }
+
+    /**
+     * Create an instance of {@link AuthOrderInfoType }
+     * 
+     */
+    public AuthOrderInfoType createAuthOrderInfoType() {
+        return new AuthOrderInfoType();
+    }
+
+    /**
+     * Create an instance of {@link BankInfoType }
+     * 
+     */
+    public BankInfoType createBankInfoType() {
+        return new BankInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HPDVersionType }
+     * 
+     */
+    public HPDVersionType createHPDVersionType() {
+        return new HPDVersionType();
+    }
+
+    /**
+     * Create an instance of {@link HVUOriginatorInfoType }
+     * 
+     */
+    public HVUOriginatorInfoType createHVUOriginatorInfoType() {
+        return new HVUOriginatorInfoType();
+    }
+
+    /**
+     * Create an instance of {@link HVTAccountInfoType }
+     * 
+     */
+    public HVTAccountInfoType createHVTAccountInfoType() {
+        return new HVTAccountInfoType();
+    }
+
+    /**
+     * Create an instance of {@link TransferReceiptResponseType }
+     * 
+     */
+    public TransferReceiptResponseType createTransferReceiptResponseType() {
+        return new TransferReceiptResponseType();
+    }
+
+    /**
+     * Create an instance of {@link PubKeyValueTypeAtEbicsTypes }
+     * 
+     */
+    public PubKeyValueTypeAtEbicsTypes createPubKeyValueTypeAtEbicsTypes() {
+        return new PubKeyValueTypeAtEbicsTypes();
+    }
+
+    /**
+     * Create an instance of {@link EmptyMutableHeaderType }
+     * 
+     */
+    public EmptyMutableHeaderType createEmptyMutableHeaderType() {
+        return new EmptyMutableHeaderType();
+    }
+
+    /**
+     * Create an instance of {@link AuthenticationPubKeyInfoType }
+     * 
+     */
+    public AuthenticationPubKeyInfoType createAuthenticationPubKeyInfoType() {
+        return new AuthenticationPubKeyInfoType();
+    }
+
+    /**
+     * Create an instance of {@link UnsignedRequestStaticHeaderType }
+     * 
+     */
+    public UnsignedRequestStaticHeaderType 
createUnsignedRequestStaticHeaderType() {
+        return new UnsignedRequestStaticHeaderType();
+    }
+
+    /**
+     * Create an instance of {@link UnsignedReqOrderDetailsType }
+     * 
+     */
+    public UnsignedReqOrderDetailsType createUnsignedReqOrderDetailsType() {
+        return new UnsignedReqOrderDetailsType();
+    }
+
+    /**
+     * Create an instance of {@link AddressInfoType }
+     * 
+     */
+    public AddressInfoType createAddressInfoType() {
+        return new AddressInfoType();
+    }
+
+    /**
+     * Create an instance of {@link DataDigestType }
+     * 
+     */
+    public DataDigestType createDataDigestType() {
+        return new DataDigestType();
+    }
+
+    /**
+     * Create an instance of {@link UserPermissionType }
+     * 
+     */
+    public UserPermissionType createUserPermissionType() {
+        return new UserPermissionType();
+    }
+
+    /**
+     * Create an instance of {@link PreValidationAccountAuthType }
+     * 
+     */
+    public PreValidationAccountAuthType createPreValidationAccountAuthType() {
+        return new PreValidationAccountAuthType();
+    }
+
+    /**
+     * Create an instance of {@link UnsecuredRequestStaticHeaderType }
+     * 
+     */
+    public UnsecuredRequestStaticHeaderType 
createUnsecuredRequestStaticHeaderType() {
+        return new UnsecuredRequestStaticHeaderType();
+    }
+
+    /**
+     * Create an instance of {@link PGPDataType }
+     * 
+     */
+    public PGPDataType createPGPDataType() {
+        return new PGPDataType();
+    }
+
+    /**
+     * Create an instance of {@link KeyValueType }
+     * 
+     */
+    public KeyValueType createKeyValueType() {
+        return new KeyValueType();
+    }
+
+    /**
+     * Create an instance of {@link DSAKeyValueType }
+     * 
+     */
+    public DSAKeyValueType createDSAKeyValueType() {
+        return new DSAKeyValueType();
+    }
+
+    /**
+     * Create an instance of {@link ReferenceType }
+     * 
+     */
+    public ReferenceType createReferenceType() {
+        return new ReferenceType();
+    }
+
+    /**
+     * Create an instance of {@link RetrievalMethodType }
+     * 
+     */
+    public RetrievalMethodType createRetrievalMethodType() {
+        return new RetrievalMethodType();
+    }
+
+    /**
+     * Create an instance of {@link TransformsType }
+     * 
+     */
+    public TransformsType createTransformsType() {
+        return new TransformsType();
+    }
+
+    /**
+     * Create an instance of {@link CanonicalizationMethodType }
+     * 
+     */
+    public CanonicalizationMethodType createCanonicalizationMethodType() {
+        return new CanonicalizationMethodType();
+    }
+
+    /**
+     * Create an instance of {@link DigestMethodType }
+     * 
+     */
+    public DigestMethodType createDigestMethodType() {
+        return new DigestMethodType();
+    }
+
+    /**
+     * Create an instance of {@link ManifestType }
+     * 
+     */
+    public ManifestType createManifestType() {
+        return new ManifestType();
+    }
+
+    /**
+     * Create an instance of {@link SignaturePropertyType }
+     * 
+     */
+    public SignaturePropertyType createSignaturePropertyType() {
+        return new SignaturePropertyType();
+    }
+
+    /**
+     * Create an instance of {@link X509DataType }
+     * 
+     */
+    public X509DataType createX509DataType() {
+        return new X509DataType();
+    }
+
+    /**
+     * Create an instance of {@link SignedInfoType }
+     * 
+     */
+    public SignedInfoType createSignedInfoType() {
+        return new SignedInfoType();
+    }
+
+    /**
+     * Create an instance of {@link RSAKeyValueType }
+     * 
+     */
+    public RSAKeyValueType createRSAKeyValueType() {
+        return new RSAKeyValueType();
+    }
+
+    /**
+     * Create an instance of {@link SPKIDataType }
+     * 
+     */
+    public SPKIDataType createSPKIDataType() {
+        return new SPKIDataType();
+    }
+
+    /**
+     * Create an instance of {@link SignatureValueType }
+     * 
+     */
+    public SignatureValueType createSignatureValueType() {
+        return new SignatureValueType();
+    }
+
+    /**
+     * Create an instance of {@link KeyInfoType }
+     * 
+     */
+    public KeyInfoType createKeyInfoType() {
+        return new KeyInfoType();
+    }
+
+    /**
+     * Create an instance of {@link SignaturePropertiesType }
+     * 
+     */
+    public SignaturePropertiesType createSignaturePropertiesType() {
+        return new SignaturePropertiesType();
+    }
+
+    /**
+     * Create an instance of {@link SignatureMethodType }
+     * 
+     */
+    public SignatureMethodType createSignatureMethodType() {
+        return new SignatureMethodType();
+    }
+
+    /**
+     * Create an instance of {@link ObjectType }
+     * 
+     */
+    public ObjectType createObjectType() {
+        return new ObjectType();
+    }
+
+    /**
+     * Create an instance of {@link TransformType }
+     * 
+     */
+    public TransformType createTransformType() {
+        return new TransformType();
+    }
+
+    /**
+     * Create an instance of {@link X509IssuerSerialType }
+     * 
+     */
+    public X509IssuerSerialType createX509IssuerSerialType() {
+        return new X509IssuerSerialType();
+    }
+
+    /**
+     * Create an instance of {@link SignaturePubKeyInfoType }
+     * 
+     */
+    public SignaturePubKeyInfoType createSignaturePubKeyInfoType() {
+        return new SignaturePubKeyInfoType();
+    }
+
+    /**
+     * Create an instance of {@link SignaturePubKeyOrderDataType }
+     * 
+     */
+    public SignaturePubKeyOrderDataType createSignaturePubKeyOrderDataType() {
+        return new SignaturePubKeyOrderDataType();
+    }
+
+    /**
+     * Create an instance of {@link OrderSignatureDataType }
+     * 
+     */
+    public OrderSignatureDataType createOrderSignatureDataType() {
+        return new OrderSignatureDataType();
+    }
+
+    /**
+     * Create an instance of {@link PubKeyInfoTypeAtEbicsSignatures }
+     * 
+     */
+    public PubKeyInfoTypeAtEbicsSignatures 
createPubKeyInfoTypeAtEbicsSignatures() {
+        return new PubKeyInfoTypeAtEbicsSignatures();
+    }
+
+    /**
+     * Create an instance of {@link PubKeyValueTypeAtEbicsSignatures }
+     * 
+     */
+    public PubKeyValueTypeAtEbicsSignatures 
createPubKeyValueTypeAtEbicsSignatures() {
+        return new PubKeyValueTypeAtEbicsSignatures();
+    }
+
+    /**
+     * Create an instance of {@link 
UserSignatureDataSigBookType.OrderSignature }
+     * 
+     */
+    public UserSignatureDataSigBookType.OrderSignature 
createUserSignatureDataSigBookTypeOrderSignature() {
+        return new UserSignatureDataSigBookType.OrderSignature();
+    }
+
+    /**
+     * Create an instance of {@link AccountType.AccountNumber }
+     * 
+     */
+    public AccountType.AccountNumber createAccountTypeAccountNumber() {
+        return new AccountType.AccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link AccountType.NationalAccountNumber }
+     * 
+     */
+    public AccountType.NationalAccountNumber 
createAccountTypeNationalAccountNumber() {
+        return new AccountType.NationalAccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link AccountType.BankCode }
+     * 
+     */
+    public AccountType.BankCode createAccountTypeBankCode() {
+        return new AccountType.BankCode();
+    }
+
+    /**
+     * Create an instance of {@link AccountType.NationalBankCode }
+     * 
+     */
+    public AccountType.NationalBankCode createAccountTypeNationalBankCode() {
+        return new AccountType.NationalBankCode();
+    }
+
+    /**
+     * Create an instance of {@link 
DataTransferResponseType.DataEncryptionInfo }
+     * 
+     */
+    public DataTransferResponseType.DataEncryptionInfo 
createDataTransferResponseTypeDataEncryptionInfo() {
+        return new DataTransferResponseType.DataEncryptionInfo();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferResponseType.SignatureData }
+     * 
+     */
+    public DataTransferResponseType.SignatureData 
createDataTransferResponseTypeSignatureData() {
+        return new DataTransferResponseType.SignatureData();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferResponseType.OrderData }
+     * 
+     */
+    public DataTransferResponseType.OrderData 
createDataTransferResponseTypeOrderData() {
+        return new DataTransferResponseType.OrderData();
+    }
+
+    /**
+     * Create an instance of {@link 
DataEncryptionInfoType.EncryptionPubKeyDigest }
+     * 
+     */
+    public DataEncryptionInfoType.EncryptionPubKeyDigest 
createDataEncryptionInfoTypeEncryptionPubKeyDigest() {
+        return new DataEncryptionInfoType.EncryptionPubKeyDigest();
+    }
+
+    /**
+     * Create an instance of {@link AttributedAccountType.AccountNumber }
+     * 
+     */
+    public AttributedAccountType.AccountNumber 
createAttributedAccountTypeAccountNumber() {
+        return new AttributedAccountType.AccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link 
AttributedAccountType.NationalAccountNumber }
+     * 
+     */
+    public AttributedAccountType.NationalAccountNumber 
createAttributedAccountTypeNationalAccountNumber() {
+        return new AttributedAccountType.NationalAccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link AttributedAccountType.BankCode }
+     * 
+     */
+    public AttributedAccountType.BankCode 
createAttributedAccountTypeBankCode() {
+        return new AttributedAccountType.BankCode();
+    }
+
+    /**
+     * Create an instance of {@link AttributedAccountType.NationalBankCode }
+     * 
+     */
+    public AttributedAccountType.NationalBankCode 
createAttributedAccountTypeNationalBankCode() {
+        return new AttributedAccountType.NationalBankCode();
+    }
+
+    /**
+     * Create an instance of {@link AttributedAccountType.AccountHolder }
+     * 
+     */
+    public AttributedAccountType.AccountHolder 
createAttributedAccountTypeAccountHolder() {
+        return new AttributedAccountType.AccountHolder();
+    }
+
+    /**
+     * Create an instance of {@link UserInfoType.UserID }
+     * 
+     */
+    public UserInfoType.UserID createUserInfoTypeUserID() {
+        return new UserInfoType.UserID();
+    }
+
+    /**
+     * Create an instance of {@link HPDAccessParamsType.URL }
+     * 
+     */
+    public HPDAccessParamsType.URL createHPDAccessParamsTypeURL() {
+        return new HPDAccessParamsType.URL();
+    }
+
+    /**
+     * Create an instance of {@link HVZOrderDetailsType.TotalAmount }
+     * 
+     */
+    public HVZOrderDetailsType.TotalAmount 
createHVZOrderDetailsTypeTotalAmount() {
+        return new HVZOrderDetailsType.TotalAmount();
+    }
+
+    /**
+     * Create an instance of {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.AccountNumber }
+     * 
+     */
+    public HVZOrderDetailsType.FirstOrderInfo.AccountInfo.AccountNumber 
createHVZOrderDetailsTypeFirstOrderInfoAccountInfoAccountNumber() {
+        return new 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.AccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalAccountNumber }
+     * 
+     */
+    public 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalAccountNumber 
createHVZOrderDetailsTypeFirstOrderInfoAccountInfoNationalAccountNumber() {
+        return new 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalAccountNumber();
+    }
+
+    /**
+     * Create an instance of {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.BankCode }
+     * 
+     */
+    public HVZOrderDetailsType.FirstOrderInfo.AccountInfo.BankCode 
createHVZOrderDetailsTypeFirstOrderInfoAccountInfoBankCode() {
+        return new HVZOrderDetailsType.FirstOrderInfo.AccountInfo.BankCode();
+    }
+
+    /**
+     * Create an instance of {@link 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalBankCode }
+     * 
+     */
+    public HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalBankCode 
createHVZOrderDetailsTypeFirstOrderInfoAccountInfoNationalBankCode() {
+        return new 
HVZOrderDetailsType.FirstOrderInfo.AccountInfo.NationalBankCode();
+    }
+
+    /**
+     * Create an instance of {@link PartnerInfoType.AccountInfo }
+     * 
+     */
+    public PartnerInfoType.AccountInfo createPartnerInfoTypeAccountInfo() {
+        return new PartnerInfoType.AccountInfo();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderInfoType.ExecutionDate }
+     * 
+     */
+    public HVTOrderInfoType.ExecutionDate 
createHVTOrderInfoTypeExecutionDate() {
+        return new HVTOrderInfoType.ExecutionDate();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderInfoType.Amount }
+     * 
+     */
+    public HVTOrderInfoType.Amount createHVTOrderInfoTypeAmount() {
+        return new HVTOrderInfoType.Amount();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderInfoType.Description }
+     * 
+     */
+    public HVTOrderInfoType.Description createHVTOrderInfoTypeDescription() {
+        return new HVTOrderInfoType.Description();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferRequestType.DataEncryptionInfo 
}
+     * 
+     */
+    public DataTransferRequestType.DataEncryptionInfo 
createDataTransferRequestTypeDataEncryptionInfo() {
+        return new DataTransferRequestType.DataEncryptionInfo();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferRequestType.SignatureData }
+     * 
+     */
+    public DataTransferRequestType.SignatureData 
createDataTransferRequestTypeSignatureData() {
+        return new DataTransferRequestType.SignatureData();
+    }
+
+    /**
+     * Create an instance of {@link DataTransferRequestType.OrderData }
+     * 
+     */
+    public DataTransferRequestType.OrderData 
createDataTransferRequestTypeOrderData() {
+        return new DataTransferRequestType.OrderData();
+    }
+
+    /**
+     * Create an instance of {@link SignerInfoType.Permission }
+     * 
+     */
+    public SignerInfoType.Permission createSignerInfoTypePermission() {
+        return new SignerInfoType.Permission();
+    }
+
+    /**
+     * Create an instance of {@link HPDProtocolParamsType.Recovery }
+     * 
+     */
+    public HPDProtocolParamsType.Recovery 
createHPDProtocolParamsTypeRecovery() {
+        return new HPDProtocolParamsType.Recovery();
+    }
+
+    /**
+     * Create an instance of {@link HPDProtocolParamsType.PreValidation }
+     * 
+     */
+    public HPDProtocolParamsType.PreValidation 
createHPDProtocolParamsTypePreValidation() {
+        return new HPDProtocolParamsType.PreValidation();
+    }
+
+    /**
+     * Create an instance of {@link HPDProtocolParamsType.X509Data }
+     * 
+     */
+    public HPDProtocolParamsType.X509Data 
createHPDProtocolParamsTypeX509Data() {
+        return new HPDProtocolParamsType.X509Data();
+    }
+
+    /**
+     * Create an instance of {@link HPDProtocolParamsType.ClientDataDownload }
+     * 
+     */
+    public HPDProtocolParamsType.ClientDataDownload 
createHPDProtocolParamsTypeClientDataDownload() {
+        return new HPDProtocolParamsType.ClientDataDownload();
+    }
+
+    /**
+     * Create an instance of {@link 
HPDProtocolParamsType.DownloadableOrderData }
+     * 
+     */
+    public HPDProtocolParamsType.DownloadableOrderData 
createHPDProtocolParamsTypeDownloadableOrderData() {
+        return new HPDProtocolParamsType.DownloadableOrderData();
+    }
+
+    /**
+     * Create an instance of {@link 
BankSignatureDataSigBookType.OrderSignature }
+     * 
+     */
+    public BankSignatureDataSigBookType.OrderSignature 
createBankSignatureDataSigBookTypeOrderSignature() {
+        return new BankSignatureDataSigBookType.OrderSignature();
+    }
+
+    /**
+     * Create an instance of {@link StandardOrderParamsType.DateRange }
+     * 
+     */
+    public StandardOrderParamsType.DateRange 
createStandardOrderParamsTypeDateRange() {
+        return new StandardOrderParamsType.DateRange();
+    }
+
+    /**
+     * Create an instance of {@link FDLOrderParamsType.DateRange }
+     * 
+     */
+    public FDLOrderParamsType.DateRange createFDLOrderParamsTypeDateRange() {
+        return new FDLOrderParamsType.DateRange();
+    }
+
+    /**
+     * Create an instance of {@link 
EbicsUnsignedRequest.Body.DataTransfer.SignatureData }
+     * 
+     */
+    public EbicsUnsignedRequest.Body.DataTransfer.SignatureData 
createEbicsUnsignedRequestBodyDataTransferSignatureData() {
+        return new EbicsUnsignedRequest.Body.DataTransfer.SignatureData();
+    }
+
+    /**
+     * Create an instance of {@link 
EbicsUnsignedRequest.Body.DataTransfer.OrderData }
+     * 
+     */
+    public EbicsUnsignedRequest.Body.DataTransfer.OrderData 
createEbicsUnsignedRequestBodyDataTransferOrderData() {
+        return new EbicsUnsignedRequest.Body.DataTransfer.OrderData();
+    }
+
+    /**
+     * Create an instance of {@link HVTOrderParamsType.OrderFlags }
+     * 
+     */
+    public HVTOrderParamsType.OrderFlags createHVTOrderParamsTypeOrderFlags() {
+        return new HVTOrderParamsType.OrderFlags();
+    }
+
+    /**
+     * Create an instance of {@link 
EbicsUnsecuredRequest.Body.DataTransfer.OrderData }
+     * 
+     */
+    public EbicsUnsecuredRequest.Body.DataTransfer.OrderData 
createEbicsUnsecuredRequestBodyDataTransferOrderData() {
+        return new EbicsUnsecuredRequest.Body.DataTransfer.OrderData();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVTResponseOrderData }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HVTResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HVTResponseOrderData> 
createHVTResponseOrderData(HVTResponseOrderData value) {
+        return new 
JAXBElement<HVTResponseOrderData>(_HVTResponseOrderData_QNAME, 
HVTResponseOrderData.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"KeyInfo")
+    public JAXBElement<KeyInfoType> createKeyInfo(KeyInfoType value) {
+        return new JAXBElement<KeyInfoType>(_KeyInfo_QNAME, KeyInfoType.class, 
null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HPBResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HPBResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HPBResponseOrderDataType> 
createHPBResponseOrderData(HPBResponseOrderDataType value) {
+        return new 
JAXBElement<HPBResponseOrderDataType>(_HPBResponseOrderData_QNAME, 
HPBResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
GenericOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"GenericOrderParams", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "OrderParams")
+    public JAXBElement<GenericOrderParamsType> 
createGenericOrderParams(GenericOrderParamsType value) {
+        return new 
JAXBElement<GenericOrderParamsType>(_GenericOrderParams_QNAME, 
GenericOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HSARequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HSARequestOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HSARequestOrderDataType> 
createHSARequestOrderData(HSARequestOrderDataType value) {
+        return new 
JAXBElement<HSARequestOrderDataType>(_HSARequestOrderData_QNAME, 
HSARequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Object 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"EBICSSignatureData")
+    public JAXBElement<Object> createebicsSignatureDataAtEbicsOrders(Object 
value) {
+        return new JAXBElement<Object>(_ebicsSignatureDataAtEbicsOrders_QNAME, 
Object.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVDResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HVDResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HVDResponseOrderDataType> 
createHVDResponseOrderData(HVDResponseOrderDataType value) {
+        return new 
JAXBElement<HVDResponseOrderDataType>(_HVDResponseOrderData_QNAME, 
HVDResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HCARequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HCARequestOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HCARequestOrderDataType> 
createHCARequestOrderData(HCARequestOrderDataType value) {
+        return new 
JAXBElement<HCARequestOrderDataType>(_HCARequestOrderData_QNAME, 
HCARequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignaturePropertyType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SignatureProperty")
+    public JAXBElement<SignaturePropertyType> 
createSignatureProperty(SignaturePropertyType value) {
+        return new 
JAXBElement<SignaturePropertyType>(_SignatureProperty_QNAME, 
SignaturePropertyType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVEOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVEOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVEOrderParamsType> 
createHVEOrderParams(HVEOrderParamsType value) {
+        return new JAXBElement<HVEOrderParamsType>(_HVEOrderParams_QNAME, 
HVEOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Object 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "EBICSOrderData")
+    public JAXBElement<Object> createEBICSOrderData(Object value) {
+        return new JAXBElement<Object>(_EBICSOrderData_QNAME, Object.class, 
null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
RSAKeyValueType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"RSAKeyValue")
+    public JAXBElement<RSAKeyValueType> createRSAKeyValue(RSAKeyValueType 
value) {
+        return new JAXBElement<RSAKeyValueType>(_RSAKeyValue_QNAME, 
RSAKeyValueType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HCSRequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HCSRequestOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HCSRequestOrderDataType> 
createHCSRequestOrderData(HCSRequestOrderDataType value) {
+        return new 
JAXBElement<HCSRequestOrderDataType>(_HCSRequestOrderData_QNAME, 
HCSRequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVSOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVSOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVSOrderParamsType> 
createHVSOrderParams(HVSOrderParamsType value) {
+        return new JAXBElement<HVSOrderParamsType>(_HVSOrderParams_QNAME, 
HVSOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignatureMethodType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SignatureMethod")
+    public JAXBElement<SignatureMethodType> 
createSignatureMethod(SignatureMethodType value) {
+        return new JAXBElement<SignatureMethodType>(_SignatureMethod_QNAME, 
SignatureMethodType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link ObjectType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Object")
+    public JAXBElement<ObjectType> createObject(ObjectType value) {
+        return new JAXBElement<ObjectType>(_Object_QNAME, ObjectType.class, 
null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
BankSignatureDataSigBookType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"BankSignatureData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSSignatureData")
+    public JAXBElement<BankSignatureDataSigBookType> 
createBankSignatureData(BankSignatureDataSigBookType value) {
+        return new 
JAXBElement<BankSignatureDataSigBookType>(_BankSignatureData_QNAME, 
BankSignatureDataSigBookType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
FDLOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "FDLOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<FDLOrderParamsType> 
createFDLOrderParams(FDLOrderParamsType value) {
+        return new JAXBElement<FDLOrderParamsType>(_FDLOrderParams_QNAME, 
FDLOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link PGPDataType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"PGPData")
+    public JAXBElement<PGPDataType> createPGPData(PGPDataType value) {
+        return new JAXBElement<PGPDataType>(_PGPData_QNAME, PGPDataType.class, 
null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
RetrievalMethodType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"RetrievalMethod")
+    public JAXBElement<RetrievalMethodType> 
createRetrievalMethod(RetrievalMethodType value) {
+        return new JAXBElement<RetrievalMethodType>(_RetrievalMethod_QNAME, 
RetrievalMethodType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignaturePubKeyOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.ebics.org/S001";, name = 
"SignaturePubKeyOrderData")
+    public JAXBElement<SignaturePubKeyOrderDataType> 
createSignaturePubKeyOrderData(SignaturePubKeyOrderDataType value) {
+        return new 
JAXBElement<SignaturePubKeyOrderDataType>(_SignaturePubKeyOrderData_QNAME, 
SignaturePubKeyOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
DSAKeyValueType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"DSAKeyValue")
+    public JAXBElement<DSAKeyValueType> createDSAKeyValue(DSAKeyValueType 
value) {
+        return new JAXBElement<DSAKeyValueType>(_DSAKeyValue_QNAME, 
DSAKeyValueType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVSRequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HVSRequestOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HVSRequestOrderDataType> 
createHVSRequestOrderData(HVSRequestOrderDataType value) {
+        return new 
JAXBElement<HVSRequestOrderDataType>(_HVSRequestOrderData_QNAME, 
HVSRequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
OrderSignatureDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.ebics.org/S001";, name = 
"OrderSignatureData")
+    public JAXBElement<OrderSignatureDataType> 
createOrderSignatureData(OrderSignatureDataType value) {
+        return new 
JAXBElement<OrderSignatureDataType>(_OrderSignatureData_QNAME, 
OrderSignatureDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
H3KRequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"H3KRequestOrderData")
+    public JAXBElement<H3KRequestOrderDataType> 
createH3KRequestOrderData(H3KRequestOrderDataType value) {
+        return new 
JAXBElement<H3KRequestOrderDataType>(_H3KRequestOrderData_QNAME, 
H3KRequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HTDReponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HTDResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HTDReponseOrderDataType> 
createHTDResponseOrderData(HTDReponseOrderDataType value) {
+        return new 
JAXBElement<HTDReponseOrderDataType>(_HTDResponseOrderData_QNAME, 
HTDReponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link SPKIDataType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SPKIData")
+    public JAXBElement<SPKIDataType> createSPKIData(SPKIDataType value) {
+        return new JAXBElement<SPKIDataType>(_SPKIData_QNAME, 
SPKIDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HIARequestOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HIARequestOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HIARequestOrderDataType> 
createHIARequestOrderData(HIARequestOrderDataType value) {
+        return new 
JAXBElement<HIARequestOrderDataType>(_HIARequestOrderData_QNAME, 
HIARequestOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVZResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HVZResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HVZResponseOrderDataType> 
createHVZResponseOrderData(HVZResponseOrderDataType value) {
+        return new 
JAXBElement<HVZResponseOrderDataType>(_HVZResponseOrderData_QNAME, 
HVZResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignatureValueType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SignatureValue")
+    public JAXBElement<SignatureValueType> 
createSignatureValue(SignatureValueType value) {
+        return new JAXBElement<SignatureValueType>(_SignatureValue_QNAME, 
SignatureValueType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
UserSignatureDataSigBookType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.ebics.org/S001";, name = 
"UserSignatureData", substitutionHeadNamespace = "http://www.ebics.org/S001";, 
substitutionHeadName = "EBICSSignatureData")
+    public JAXBElement<UserSignatureDataSigBookType> 
createUserSignatureData(UserSignatureDataSigBookType value) {
+        return new 
JAXBElement<UserSignatureDataSigBookType>(_UserSignatureData_QNAME, 
UserSignatureDataSigBookType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Object 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "OrderParams")
+    public JAXBElement<Object> createOrderParams(Object value) {
+        return new JAXBElement<Object>(_OrderParams_QNAME, Object.class, null, 
value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link KeyValueType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"KeyValue")
+    public JAXBElement<KeyValueType> createKeyValue(KeyValueType value) {
+        return new JAXBElement<KeyValueType>(_KeyValue_QNAME, 
KeyValueType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
TransformsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Transforms")
+    public JAXBElement<TransformsType> createTransforms(TransformsType value) {
+        return new JAXBElement<TransformsType>(_Transforms_QNAME, 
TransformsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVUResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HVUResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HVUResponseOrderDataType> 
createHVUResponseOrderData(HVUResponseOrderDataType value) {
+        return new 
JAXBElement<HVUResponseOrderDataType>(_HVUResponseOrderData_QNAME, 
HVUResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignaturePubKeyInfoType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.ebics.org/S001";, name = 
"SignaturePubKeyInfo")
+    public JAXBElement<SignaturePubKeyInfoType> 
createSignaturePubKeyInfo(SignaturePubKeyInfoType value) {
+        return new 
JAXBElement<SignaturePubKeyInfoType>(_SignaturePubKeyInfo_QNAME, 
SignaturePubKeyInfoType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVUOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVUOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVUOrderParamsType> 
createHVUOrderParams(HVUOrderParamsType value) {
+        return new JAXBElement<HVUOrderParamsType>(_HVUOrderParams_QNAME, 
HVUOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
DigestMethodType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"DigestMethod")
+    public JAXBElement<DigestMethodType> createDigestMethod(DigestMethodType 
value) {
+        return new JAXBElement<DigestMethodType>(_DigestMethod_QNAME, 
DigestMethodType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link X509DataType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509Data")
+    public JAXBElement<X509DataType> createX509Data(X509DataType value) {
+        return new JAXBElement<X509DataType>(_X509Data_QNAME, 
X509DataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link SignatureType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "AuthSignature")
+    public JAXBElement<SignatureType> createAuthSignature(SignatureType value) 
{
+        return new JAXBElement<SignatureType>(_AuthSignature_QNAME, 
SignatureType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"KeyName")
+    public JAXBElement<String> createKeyName(String value) {
+        return new JAXBElement<String>(_KeyName_QNAME, String.class, null, 
value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link SignatureType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Signature")
+    public JAXBElement<SignatureType> createSignature(SignatureType value) {
+        return new JAXBElement<SignatureType>(_Signature_QNAME, 
SignatureType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"MgmtData")
+    public JAXBElement<String> createMgmtData(String value) {
+        return new JAXBElement<String>(_MgmtData_QNAME, String.class, null, 
value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HAAResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HAAResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HAAResponseOrderDataType> 
createHAAResponseOrderData(HAAResponseOrderDataType value) {
+        return new 
JAXBElement<HAAResponseOrderDataType>(_HAAResponseOrderData_QNAME, 
HAAResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVZOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVZOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVZOrderParamsType> 
createHVZOrderParams(HVZOrderParamsType value) {
+        return new JAXBElement<HVZOrderParamsType>(_HVZOrderParams_QNAME, 
HVZOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignaturePropertiesType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SignatureProperties")
+    public JAXBElement<SignaturePropertiesType> 
createSignatureProperties(SignaturePropertiesType value) {
+        return new 
JAXBElement<SignaturePropertiesType>(_SignatureProperties_QNAME, 
SignaturePropertiesType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HPDResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HPDResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HPDResponseOrderDataType> 
createHPDResponseOrderData(HPDResponseOrderDataType value) {
+        return new 
JAXBElement<HPDResponseOrderDataType>(_HPDResponseOrderData_QNAME, 
HPDResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
FULOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "FULOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<FULOrderParamsType> 
createFULOrderParams(FULOrderParamsType value) {
+        return new JAXBElement<FULOrderParamsType>(_FULOrderParams_QNAME, 
FULOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link TransformType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Transform")
+    public JAXBElement<TransformType> createTransform(TransformType value) {
+        return new JAXBElement<TransformType>(_Transform_QNAME, 
TransformType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HKDResponseOrderDataType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"HKDResponseOrderData", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "EBICSOrderData")
+    public JAXBElement<HKDResponseOrderDataType> 
createHKDResponseOrderData(HKDResponseOrderDataType value) {
+        return new 
JAXBElement<HKDResponseOrderDataType>(_HKDResponseOrderData_QNAME, 
HKDResponseOrderDataType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVDOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVDOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVDOrderParamsType> 
createHVDOrderParams(HVDOrderParamsType value) {
+        return new JAXBElement<HVDOrderParamsType>(_HVDOrderParams_QNAME, 
HVDOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
StandardOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = 
"StandardOrderParams", substitutionHeadNamespace = "urn:org:ebics:H004", 
substitutionHeadName = "OrderParams")
+    public JAXBElement<StandardOrderParamsType> 
createStandardOrderParams(StandardOrderParamsType value) {
+        return new 
JAXBElement<StandardOrderParamsType>(_StandardOrderParams_QNAME, 
StandardOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link ReferenceType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Reference")
+    public JAXBElement<ReferenceType> createReference(ReferenceType value) {
+        return new JAXBElement<ReferenceType>(_Reference_QNAME, 
ReferenceType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"DigestValue")
+    public JAXBElement<byte[]> createDigestValue(byte[] value) {
+        return new JAXBElement<byte[]>(_DigestValue_QNAME, byte[].class, null, 
((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
HVTOrderParamsType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "HVTOrderParams", 
substitutionHeadNamespace = "urn:org:ebics:H004", substitutionHeadName = 
"OrderParams")
+    public JAXBElement<HVTOrderParamsType> 
createHVTOrderParams(HVTOrderParamsType value) {
+        return new JAXBElement<HVTOrderParamsType>(_HVTOrderParams_QNAME, 
HVTOrderParamsType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
CanonicalizationMethodType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"CanonicalizationMethod")
+    public JAXBElement<CanonicalizationMethodType> 
createCanonicalizationMethod(CanonicalizationMethodType value) {
+        return new 
JAXBElement<CanonicalizationMethodType>(_CanonicalizationMethod_QNAME, 
CanonicalizationMethodType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
SignedInfoType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SignedInfo")
+    public JAXBElement<SignedInfoType> createSignedInfo(SignedInfoType value) {
+        return new JAXBElement<SignedInfoType>(_SignedInfo_QNAME, 
SignedInfoType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Object 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.ebics.org/S001";, name = 
"EBICSSignatureData")
+    public JAXBElement<Object> 
createebicsSignatureDataAtEbicsSignatures(Object value) {
+        return new 
JAXBElement<Object>(_ebicsSignatureDataAtEbicsSignatures_QNAME, Object.class, 
null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link ManifestType 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"Manifest")
+    public JAXBElement<ManifestType> createManifest(ManifestType value) {
+        return new JAXBElement<ManifestType>(_Manifest_QNAME, 
ManifestType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
X509IssuerSerialType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509IssuerSerial", scope = X509DataType.class)
+    public JAXBElement<X509IssuerSerialType> 
createX509DataTypeX509IssuerSerial(X509IssuerSerialType value) {
+        return new 
JAXBElement<X509IssuerSerialType>(_X509DataTypeX509IssuerSerial_QNAME, 
X509IssuerSerialType.class, X509DataType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509CRL", scope = X509DataType.class)
+    public JAXBElement<byte[]> createX509DataTypeX509CRL(byte[] value) {
+        return new JAXBElement<byte[]>(_X509DataTypeX509CRL_QNAME, 
byte[].class, X509DataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509SubjectName", scope = X509DataType.class)
+    public JAXBElement<String> createX509DataTypeX509SubjectName(String value) 
{
+        return new JAXBElement<String>(_X509DataTypeX509SubjectName_QNAME, 
String.class, X509DataType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509SKI", scope = X509DataType.class)
+    public JAXBElement<byte[]> createX509DataTypeX509SKI(byte[] value) {
+        return new JAXBElement<byte[]>(_X509DataTypeX509SKI_QNAME, 
byte[].class, X509DataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"X509Certificate", scope = X509DataType.class)
+    public JAXBElement<byte[]> createX509DataTypeX509Certificate(byte[] value) 
{
+        return new JAXBElement<byte[]>(_X509DataTypeX509Certificate_QNAME, 
byte[].class, X509DataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"SPKISexp", scope = SPKIDataType.class)
+    public JAXBElement<byte[]> createSPKIDataTypeSPKISexp(byte[] value) {
+        return new JAXBElement<byte[]>(_SPKIDataTypeSPKISexp_QNAME, 
byte[].class, SPKIDataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"PGPKeyID", scope = PGPDataType.class)
+    public JAXBElement<byte[]> createPGPDataTypePGPKeyID(byte[] value) {
+        return new JAXBElement<byte[]>(_PGPDataTypePGPKeyID_QNAME, 
byte[].class, PGPDataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code 
>}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"PGPKeyPacket", scope = PGPDataType.class)
+    public JAXBElement<byte[]> createPGPDataTypePGPKeyPacket(byte[] value) {
+        return new JAXBElement<byte[]>(_PGPDataTypePGPKeyPacket_QNAME, 
byte[].class, PGPDataType.class, ((byte[]) value));
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link 
ProductElementType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:org:ebics:H004", name = "Product", scope 
= StaticHeaderBaseType.class)
+    public JAXBElement<ProductElementType> 
createStaticHeaderBaseTypeProduct(ProductElementType value) {
+        return new 
JAXBElement<ProductElementType>(_StaticHeaderBaseTypeProduct_QNAME, 
ProductElementType.class, StaticHeaderBaseType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"HMACOutputLength", scope = SignatureMethodType.class)
+    public JAXBElement<BigInteger> 
createSignatureMethodTypeHMACOutputLength(BigInteger value) {
+        return new 
JAXBElement<BigInteger>(_SignatureMethodTypeHMACOutputLength_QNAME, 
BigInteger.class, SignatureMethodType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String 
}{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#";, name = 
"XPath", scope = TransformType.class)
+    public JAXBElement<String> createTransformTypeXPath(String value) {
+        return new JAXBElement<String>(_TransformTypeXPath_QNAME, 
String.class, TransformType.class, value);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectType.java
new file mode 100644
index 0000000..a29e2ac
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ObjectType.java
@@ -0,0 +1,171 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for ObjectType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ObjectType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *         &lt;any processContents='lax'/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *       &lt;attribute name="MimeType" 
type="{http://www.w3.org/2001/XMLSchema}string"; />
+ *       &lt;attribute name="Encoding" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ObjectType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class ObjectType {
+
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+    @XmlAttribute(name = "MimeType")
+    protected String mimeType;
+    @XmlAttribute(name = "Encoding")
+    @XmlSchemaType(name = "anyURI")
+    protected String encoding;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * {@link String }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the mimeType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMimeType() {
+        return mimeType;
+    }
+
+    /**
+     * Sets the value of the mimeType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMimeType(String value) {
+        this.mimeType = value;
+    }
+
+    /**
+     * Gets the value of the encoding property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncoding() {
+        return encoding;
+    }
+
+    /**
+     * Sets the value of the encoding property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncoding(String value) {
+        this.encoding = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderAttributeType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderAttributeType.java
new file mode 100644
index 0000000..94dcdf9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderAttributeType.java
@@ -0,0 +1,62 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OrderAttributeType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="OrderAttributeType">
+ *   &lt;restriction base="{urn:org:ebics:H004}OrderAttributeBaseType">
+ *     &lt;enumeration value="OZHNN"/>
+ *     &lt;enumeration value="UZHNN"/>
+ *     &lt;enumeration value="DZHNN"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "OrderAttributeType")
+@XmlEnum
+public enum OrderAttributeType {
+
+
+    /**
+     * Auftragsdaten mit Unterschrift, ZIP-komprimiert, hybrid verschlüsselt
+     * 
+     */
+    OZHNN,
+
+    /**
+     * Unterschrift, ZIP-komprimiert, hybrid verschlüsselt
+     * 
+     */
+    UZHNN,
+
+    /**
+     * Auftragsdaten ohne Unterschrift, ZIP-komprimiert, hybrid verschlüsselt
+     * 
+     */
+    DZHNN;
+
+    public String value() {
+        return name();
+    }
+
+    public static OrderAttributeType fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderDetailsType.java
new file mode 100644
index 0000000..95ec4f0
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderDetailsType.java
@@ -0,0 +1,107 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.*;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für OrderDetails im statischen EBICS-Header (allgemein).
+ * 
+ * <p>Java class for OrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="OrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="OrderAttribute" 
type="{urn:org:ebics:H004}OrderAttributeBaseType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OrderDetailsType", propOrder = {
+    "orderType",
+    "orderAttribute"
+})
+@XmlSeeAlso({
+    NoPubKeyDigestsReqOrderDetailsType.class,
+    UnsecuredReqOrderDetailsType.class,
+    UnsignedReqOrderDetailsType.class
+})
+public abstract class OrderDetailsType {
+
+    @XmlElement(name = "OrderType", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderType;
+    @XmlElement(name = "OrderAttribute", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String orderAttribute;
+
+    /**
+     * Gets the value of the orderType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderType() {
+        return orderType;
+    }
+
+    /**
+     * Sets the value of the orderType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderType(String value) {
+        this.orderType = value;
+    }
+
+    /**
+     * Gets the value of the orderAttribute property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOrderAttribute() {
+        return orderAttribute;
+    }
+
+    /**
+     * Sets the value of the orderAttribute property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOrderAttribute(String value) {
+        this.orderAttribute = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderSignatureDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderSignatureDataType.java
new file mode 100644
index 0000000..38bc78f
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderSignatureDataType.java
@@ -0,0 +1,190 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Data type according for a digital signature (either autorising an order or 
applied for transportation), structured format.
+ * 
+ * <p>Java class for OrderSignatureDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="OrderSignatureDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="SignatureVersion" 
type="{http://www.ebics.org/S001}SignatureVersionType"/>
+ *         &lt;element name="SignatureValue" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *         &lt;element name="PartnerID" 
type="{http://www.ebics.org/S001}PartnerIDType"/>
+ *         &lt;element name="UserID" 
type="{http://www.ebics.org/S001}UserIDType"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"; 
minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OrderSignatureDataType", namespace = 
"http://www.ebics.org/S001";, propOrder = {
+    "signatureVersion",
+    "signatureValue",
+    "partnerID",
+    "userID",
+    "x509Data"
+})
+public class OrderSignatureDataType {
+
+    @XmlElement(name = "SignatureVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String signatureVersion;
+    @XmlElement(name = "SignatureValue", required = true)
+    protected byte[] signatureValue;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlElement(name = "X509Data", namespace = 
"http://www.w3.org/2000/09/xmldsig#";)
+    protected X509DataType x509Data;
+
+    /**
+     * Gets the value of the signatureVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSignatureVersion() {
+        return signatureVersion;
+    }
+
+    /**
+     * Sets the value of the signatureVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSignatureVersion(String value) {
+        this.signatureVersion = value;
+    }
+
+    /**
+     * Gets the value of the signatureValue property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getSignatureValue() {
+        return signatureValue;
+    }
+
+    /**
+     * Sets the value of the signatureValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setSignatureValue(byte[] value) {
+        this.signatureValue = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Parameter for X509Data
+     * 
+     * @return
+     *     possible object is
+     *     {@link X509DataType }
+     *     
+     */
+    public X509DataType getX509Data() {
+        return x509Data;
+    }
+
+    /**
+     * Sets the value of the x509Data property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link X509DataType }
+     *     
+     */
+    public void setX509Data(X509DataType value) {
+        this.x509Data = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderTType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderTType.java
new file mode 100644
index 0000000..69dff61
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/OrderTType.java
@@ -0,0 +1,723 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OrderTType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="OrderTType">
+ *   &lt;restriction base="{urn:org:ebics:H004}OrderTBaseType">
+ *     &lt;length value="3"/>
+ *     &lt;enumeration value="HSA"/>
+ *     &lt;enumeration value="HIA"/>
+ *     &lt;enumeration value="HPB"/>
+ *     &lt;enumeration value="HCA"/>
+ *     &lt;enumeration value="HPD"/>
+ *     &lt;enumeration value="HVU"/>
+ *     &lt;enumeration value="HVD"/>
+ *     &lt;enumeration value="HVT"/>
+ *     &lt;enumeration value="HVE"/>
+ *     &lt;enumeration value="HVS"/>
+ *     &lt;enumeration value="HKD"/>
+ *     &lt;enumeration value="HAA"/>
+ *     &lt;enumeration value="HVU"/>
+ *     &lt;enumeration value="HVD"/>
+ *     &lt;enumeration value="HVT"/>
+ *     &lt;enumeration value="HVE"/>
+ *     &lt;enumeration value="HVS"/>
+ *     &lt;enumeration value="AAE"/>
+ *     &lt;enumeration value="AEA"/>
+ *     &lt;enumeration value="AIA"/>
+ *     &lt;enumeration value="AKA"/>
+ *     &lt;enumeration value="AWV"/>
+ *     &lt;enumeration value="AZM"/>
+ *     &lt;enumeration value="AZV"/>
+ *     &lt;enumeration value="AZ2"/>
+ *     &lt;enumeration value="AZ4"/>
+ *     &lt;enumeration value="DDG"/>
+ *     &lt;enumeration value="DHB"/>
+ *     &lt;enumeration value="DTE"/>
+ *     &lt;enumeration value="DTI"/>
+ *     &lt;enumeration value="DTM"/>
+ *     &lt;enumeration value="DTV"/>
+ *     &lt;enumeration value="DT2"/>
+ *     &lt;enumeration value="DT4"/>
+ *     &lt;enumeration value="EAB"/>
+ *     &lt;enumeration value="ECS"/>
+ *     &lt;enumeration value="EDC"/>
+ *     &lt;enumeration value="EEA"/>
+ *     &lt;enumeration value="EEZ"/>
+ *     &lt;enumeration value="EIB"/>
+ *     &lt;enumeration value="EIK"/>
+ *     &lt;enumeration value="ESA"/>
+ *     &lt;enumeration value="ESM"/>
+ *     &lt;enumeration value="ESR"/>
+ *     &lt;enumeration value="ESZ"/>
+ *     &lt;enumeration value="ESU"/>
+ *     &lt;enumeration value="EUE"/>
+ *     &lt;enumeration value="GAB"/>
+ *     &lt;enumeration value="GAK"/>
+ *     &lt;enumeration value="GKT"/>
+ *     &lt;enumeration value="IDD"/>
+ *     &lt;enumeration value="IIB"/>
+ *     &lt;enumeration value="IIK"/>
+ *     &lt;enumeration value="INT"/>
+ *     &lt;enumeration value="IZG"/>
+ *     &lt;enumeration value="IZL"/>
+ *     &lt;enumeration value="IZV"/>
+ *     &lt;enumeration value="MAO"/>
+ *     &lt;enumeration value="MCV"/>
+ *     &lt;enumeration value="MC2"/>
+ *     &lt;enumeration value="MC4"/>
+ *     &lt;enumeration value="POZ"/>
+ *     &lt;enumeration value="RDT"/>
+ *     &lt;enumeration value="RFT"/>
+ *     &lt;enumeration value="STA"/>
+ *     &lt;enumeration value="VMK"/>
+ *     &lt;enumeration value="WPA"/>
+ *     &lt;enumeration value="WPB"/>
+ *     &lt;enumeration value="WPC"/>
+ *     &lt;enumeration value="WPD"/>
+ *     &lt;enumeration value="INI"/>
+ *     &lt;enumeration value="PTK"/>
+ *     &lt;enumeration value="PUB"/>
+ *     &lt;enumeration value="HCA"/>
+ *     &lt;enumeration value="SPR"/>
+ *     &lt;enumeration value="VPB"/>
+ *     &lt;enumeration value="FIN"/>
+ *     &lt;enumeration value="IZS"/>
+ *     &lt;enumeration value="SSP"/>
+ *     &lt;enumeration value="ATA"/>
+ *     &lt;enumeration value="BKA"/>
+ *     &lt;enumeration value="BZK"/>
+ *     &lt;enumeration value="DKI"/>
+ *     &lt;enumeration value="DMI"/>
+ *     &lt;enumeration value="DSW"/>
+ *     &lt;enumeration value="ESG"/>
+ *     &lt;enumeration value="ESP"/>
+ *     &lt;enumeration value="FTB"/>
+ *     &lt;enumeration value="FTD"/>
+ *     &lt;enumeration value="IBK"/>
+ *     &lt;enumeration value="IBW"/>
+ *     &lt;enumeration value="IBU"/>
+ *     &lt;enumeration value="IKK"/>
+ *     &lt;enumeration value="IKU"/>
+ *     &lt;enumeration value="IKW"/>
+ *     &lt;enumeration value="KTH"/>
+ *     &lt;enumeration value="KTR"/>
+ *     &lt;enumeration value="KKZ"/>
+ *     &lt;enumeration value="TST"/>
+ *     &lt;enumeration value="UPD"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "OrderTType")
+@XmlEnum
+public enum OrderTType {
+
+
+    /**
+     * Senden der Public Keys für Authentifikation und Verschlüsselung, 
bankfachlich signiert mit FTAM-Signaturschlüssel
+     * 
+     */
+    HSA("HSA"),
+
+    /**
+     * Senden der Public Keys zur Authentifikation und zur Verschlüsselung
+     * 
+     */
+    HIA("HIA"),
+
+    /**
+     * Abholen der Public Keys der Bank
+     * 
+     */
+    HPB("HPB"),
+
+    /**
+     * Ändern der Public Keys zur Authentifikation und zur Verschlüsselung
+     * 
+     */
+    HCA("HCA"),
+
+    /**
+     * Abholen Bankparameter für internetbasierten Standard
+     * 
+     */
+    HPD("HPD"),
+
+    /**
+     * Abholen VEU Übersicht
+     * 
+     */
+    HVU("HVU"),
+
+    /**
+     * Abholen VEU Auftragsdaten (Daten-trägerbegleitzettel)
+     * 
+     */
+    HVD("HVD"),
+
+    /**
+     * Abholen VEU Auftragsdaten ( Transakti-onsdetails gemäß Parametervorgabe)
+     * 
+     */
+    HVT("HVT"),
+
+    /**
+     * Senden EU zu bestehendem VEU-Auftrag
+     * 
+     */
+    HVE("HVE"),
+
+    /**
+     * Senden Stornierung für bestehenden VEU-Auftrag
+     * 
+     */
+    HVS("HVS"),
+
+    /**
+     * Abholen Konfigurationsdaten des Teilnehmers
+     * 
+     */
+    HKD("HKD"),
+
+    /**
+     * Abholen Übersicht zu abrufbaren Aufträgen
+     * 
+     */
+    HAA("HAA"),
+
+    /**
+     * Senden Importakkreditiv Änderung
+     * 
+     */
+    AAE("AAE"),
+
+    /**
+     * Senden Exportakkreditive
+     * 
+     */
+    AEA("AEA"),
+
+    /**
+     * Senden Import-Akkreditive Avisierung
+     * 
+     */
+    AIA("AIA"),
+
+    /**
+     * Abholen Import-Akkreditive
+     * 
+     */
+    AKA("AKA"),
+
+    /**
+     * AWV-Meldung senden
+     * 
+     */
+    AWV("AWV"),
+
+    /**
+     * AZV im Magnetbandformat senden (Satzlänge variabel)
+     * 
+     */
+    AZM("AZM"),
+
+    /**
+     * AZV im Diskettenformat senden
+     * 
+     */
+    AZV("AZV"),
+
+    /**
+     * AZV im Magnetbandformat senden (Satzlängenfeld 2 Bytes)
+     * 
+     */
+    @XmlEnumValue("AZ2")
+    AZ_2("AZ2"),
+
+    /**
+     * AZV im Magnetbandformat senden (Satzlängenfeld 4 Bytes)
+     * 
+     */
+    @XmlEnumValue("AZ4")
+    AZ_4("AZ4"),
+
+    /**
+     * Abholen Devisenhandelsbestätigung
+     * 
+     */
+    DDG("DDG"),
+
+    /**
+     * Senden Devisenhandelsbestätigung
+     * 
+     */
+    DHB("DHB"),
+
+    /**
+     * Eilauftrag (IZV im DTAUS0-Format) senden
+     * 
+     */
+    DTE("DTE"),
+
+    /**
+     * IZV-Datei abholen
+     * 
+     */
+    DTI("DTI"),
+
+    /**
+     * MCV-Datei abholen (Format analog MCV)
+     * 
+     */
+    DTM("DTM"),
+
+    /**
+     * Zahlungsverkehrsdateien von Service-Rechenzentren senden
+     * 
+     */
+    DTV("DTV"),
+
+    /**
+     * MC2-Datei abholen (Format analog MC2)
+     * 
+     */
+    @XmlEnumValue("DT2")
+    DT_2("DT2"),
+
+    /**
+     * MC4-Datei abholen (Format analog MC4)
+     * 
+     */
+    @XmlEnumValue("DT4")
+    DT_4("DT4"),
+
+    /**
+     * Exportakkreditive abholen
+     * 
+     */
+    EAB("EAB"),
+
+    /**
+     * Senden electronic-cash Lastschriftdatei
+     * 
+     */
+    ECS("ECS"),
+
+    /**
+     * Senden Maestro-Lastschriftdatei
+     * 
+     */
+    EDC("EDC"),
+
+    /**
+     * EDIFACT abholen ASCII
+     * 
+     */
+    EEA("EEA"),
+
+    /**
+     * EDIFACT abholen EBCDIC
+     * 
+     */
+    EEZ("EEZ"),
+
+    /**
+     * Ausführungsanzeige (Exportinkasso) Bank an Kunde abholen
+     * 
+     */
+    EIB("EIB"),
+
+    /**
+     * Senden Exportinkassi
+     * 
+     */
+    EIK("EIK"),
+
+    /**
+     * EDIFACT senden ASCII
+     * 
+     */
+    ESA("ESA"),
+
+    /**
+     * EU-Standardüberweisung (Zahlungsart 13) im Magnetbandformat 
(Satzlängenfeld 4 Bytes)
+     * 
+     */
+    ESM("ESM"),
+
+    /**
+     * Einreichung von EDIFACT-Lastschriften
+     * 
+     */
+    ESR("ESR"),
+
+    /**
+     * EDIFACT senden EBCDIC
+     * 
+     */
+    ESZ("ESZ"),
+
+    /**
+     * EU-Standardüberweisung (Zahlungsart 13)
+     * 
+     */
+    ESU("ESU"),
+
+    /**
+     * Taggleiche grenzüberschreitende Euro-Eilzahlung
+     * 
+     */
+    EUE("EUE"),
+
+    /**
+     * Abholen Garantien
+     * 
+     */
+    GAB("GAB"),
+
+    /**
+     * Senden Garantien
+     * 
+     */
+    GAK("GAK"),
+
+    /**
+     * GeldKarte-Umsatz senden (Datenaufbau gemäß GeldKarte-Spezifikation)
+     * 
+     */
+    GKT("GKT"),
+
+    /**
+     * Internationale Lastschriften
+     * 
+     */
+    IDD("IDD"),
+
+    /**
+     * Abholen Importinkassi
+     * 
+     */
+    IIB("IIB"),
+
+    /**
+     * Senden Importinkassi
+     * 
+     */
+    IIK("IIK"),
+
+    /**
+     * Internationaler Zahlungsverkehr
+     * 
+     */
+    INT("INT"),
+
+    /**
+     * Inlandszahlungsverkehrsauftrag senden (nur Gutschriften)
+     * 
+     */
+    IZG("IZG"),
+
+    /**
+     * Inlandszahlungsverkehrsauftrag senden (nur Lastschriften)
+     * 
+     */
+    IZL("IZL"),
+
+    /**
+     * Inlandszahlungsverkehrsauftrag senden
+     * 
+     */
+    IZV("IZV"),
+
+    /**
+     * Abholen Magnetband-Datei aus optischer Beleglesung
+     * 
+     */
+    MAO("MAO"),
+
+    /**
+     * Senden IZV-Magnetbandformat (Satzlängenfeld 4 Bytes)
+     * 
+     */
+    MCV("MCV"),
+
+    /**
+     * Senden IZV-Magnetbandformat (Satzlängenfeld 2 Bytes)
+     * 
+     */
+    @XmlEnumValue("MC2")
+    MC_2("MC2"),
+
+    /**
+     * Senden IZV-Magnetbandformat (Satzlänge variabel)
+     * 
+     */
+    @XmlEnumValue("MC4")
+    MC_4("MC4"),
+
+    /**
+     * Senden POZ-Datei
+     * 
+     */
+    POZ("POZ"),
+
+    /**
+     * Rücklastschrift an Kunde
+     * 
+     */
+    RDT("RDT"),
+
+    /**
+     * Request for Transfer
+     * 
+     */
+    RFT("RFT"),
+
+    /**
+     * Abholen Swift-Tagesauszüge
+     * 
+     */
+    STA("STA"),
+
+    /**
+     * Abholen kurzfristige Vormerkposten
+     * 
+     */
+    VMK("VMK"),
+
+    /**
+     * Abholen Wertpapierabrechnung
+     * 
+     */
+    WPA("WPA"),
+
+    /**
+     * Abholen Wertpapierausführungsanzeige
+     * 
+     */
+    WPB("WPB"),
+
+    /**
+     * Abholen Depotaufstellung
+     * 
+     */
+    WPC("WPC"),
+
+    /**
+     * Abholen sonstige WP-Umsätze
+     * 
+     */
+    WPD("WPD"),
+
+    /**
+     * Initialisierung der bankfachlichen EU des Teilnehmers.
+     * 
+     */
+    INI("INI"),
+
+    /**
+     * Abholen Kundenprotokoll
+     * 
+     */
+    PTK("PTK"),
+
+    /**
+     * Senden Public Key zur Unterschriftenverifizierung
+     * 
+     */
+    PUB("PUB"),
+
+    /**
+     * Sperren der Zugangsberechtigung
+     * 
+     */
+    SPR("SPR"),
+
+    /**
+     * Abholen Public Key der Bank zur Verschlüsselung
+     * 
+     */
+    VPB("VPB"),
+
+    /**
+     * EDIFACT-FINPAY senden
+     * 
+     */
+    FIN("FIN"),
+
+    /**
+     * Informationen von Zentralstellen
+     * 
+     */
+    IZS("IZS"),
+
+    /**
+     * ec-Karten-Sperrdatei
+     * 
+     */
+    SSP("SSP"),
+
+    /**
+     * Teilausnutzung Importakkreditiv (Kreditinstitut an Kunde)
+     * 
+     */
+    ATA("ATA"),
+
+    /**
+     * Auftragsart für elektronische Kontoauszüge
+     * 
+     */
+    BKA("BKA"),
+
+    /**
+     * Barzahlungskarte
+     * 
+     */
+    BZK("BZK"),
+
+    /**
+     * Devisenkursinformationen abholen (Euro)
+     * 
+     */
+    DKI("DKI"),
+
+    /**
+     * Abholen Devisenmarktinformationen
+     * 
+     */
+    DMI("DMI"),
+
+    /**
+     * Abholen Devisenswapinformationen
+     * 
+     */
+    DSW("DSW"),
+
+    /**
+     * ESG-Datei für Elektronische Zweitunterschrift abholen
+     * 
+     */
+    ESG("ESG"),
+
+    /**
+     * ESP-Datei für Elektronische Zweitunterschrift senden
+     * 
+     */
+    ESP("ESP"),
+
+    /**
+     * Abholen/Senden beliebige Datei
+     * 
+     */
+    FTB("FTB"),
+
+    /**
+     * Freie Textdatei senden/abholen
+     * 
+     */
+    FTD("FTD"),
+
+    /**
+     * Abholen Institutsbestätigungsdatei (Komplettbestand)
+     * 
+     */
+    IBK("IBK"),
+
+    /**
+     * Abholen Institutsbestätigungsdatei (Komplettbestand weitere Datei)
+     * 
+     */
+    IBW("IBW"),
+
+    /**
+     * Abholen Institutsbestätigungsdatei (tägliches Update)
+     * 
+     */
+    IBU("IBU"),
+
+    /**
+     * Senden Institutskonten (Komplettbestand begrenzt auf 170 MB)
+     * 
+     */
+    IKK("IKK"),
+
+    /**
+     * Senden Institutskonten (tägliches Update)
+     * 
+     */
+    IKU("IKU"),
+
+    /**
+     * Senden Institutskonten (Komplettbestand weitere Datei)
+     * 
+     */
+    IKW("IKW"),
+
+    /**
+     * KTOHIN: Automatisiertes Verfahren für die Änderung von Kontonummern und 
Bankleitzahlen
+     * 
+     */
+    KTH("KTH"),
+
+    /**
+     * KTORUECK: Automatisiertes Verfahren für die Änderung von Kontonummern 
und Bankleitzahlen 
+     * 
+     */
+    KTR("KTR"),
+
+    /**
+     * Kontenkonzentration und Saldenausgleich
+     * 
+     */
+    KKZ("KKZ"),
+
+    /**
+     * Senden/Abholen Testdatei (ASCII)
+     * 
+     */
+    TST("TST"),
+
+    /**
+     * Updates abholen
+     * 
+     */
+    UPD("UPD");
+    private final String value;
+
+    OrderTType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static OrderTType fromValue(String v) {
+        for (OrderTType c: OrderTType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PGPDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PGPDataType.java
new file mode 100644
index 0000000..9dead3d
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PGPDataType.java
@@ -0,0 +1,105 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for PGPDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PGPDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;choice>
+ *         &lt;sequence>
+ *           &lt;element name="PGPKeyID" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *           &lt;element name="PGPKeyPacket" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"; minOccurs="0"/>
+ *           &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;/sequence>
+ *         &lt;sequence>
+ *           &lt;element name="PGPKeyPacket" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *           &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;/sequence>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PGPDataType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class PGPDataType {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "PGPKeyID", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "PGPKeyPacket", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    })
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+
+    /**
+     * Gets the rest of the content model. 
+     * 
+     * <p>
+     * You are getting this "catch-all" property because of the following 
reason: 
+     * The field name "PGPKeyPacket" is used by two different parts of a 
schema. See: 
+     * line 218 of 
file:/home/marcello/prog/libeufin/libeufin/sandbox/src/main/resources/xmldsig-core-schema.xsd
+     * line 213 of 
file:/home/marcello/prog/libeufin/libeufin/sandbox/src/main/resources/xmldsig-core-schema.xsd
+     * <p>
+     * To get rid of this property, apply a property customization to one 
+     * of both of the following declarations to change their names: 
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link Element }
+     * {@link Object }
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/Parameter.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/Parameter.java
new file mode 100644
index 0000000..1879ea7
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/Parameter.java
@@ -0,0 +1,196 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="Name" 
type="{http://www.w3.org/2001/XMLSchema}token"/>
+ *         &lt;element name="Value">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension 
base="&lt;http://www.w3.org/2001/XMLSchema>anySimpleType">
+ *                 &lt;attribute name="Type" use="required" 
type="{http://www.w3.org/2001/XMLSchema}NCName"; />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "name",
+    "value"
+})
+@XmlRootElement(name = "Parameter")
+public class Parameter {
+
+    @XmlElement(name = "Name", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String name;
+    @XmlElement(name = "Value", required = true)
+    protected Parameter.Value value;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Parameter.Value }
+     *     
+     */
+    public Parameter.Value getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Parameter.Value }
+     *     
+     */
+    public void setValue(Parameter.Value value) {
+        this.value = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension 
base="&lt;http://www.w3.org/2001/XMLSchema>anySimpleType">
+     *       &lt;attribute name="Type" use="required" 
type="{http://www.w3.org/2001/XMLSchema}NCName"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Value {
+
+        @XmlValue
+        @XmlSchemaType(name = "anySimpleType")
+        protected Object value;
+        @XmlAttribute(name = "Type", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlSchemaType(name = "NCName")
+        protected String type;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Object }
+         *     
+         */
+        public Object getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Object }
+         *     
+         */
+        public void setValue(Object value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the type property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getType() {
+            return type;
+        }
+
+        /**
+         * Sets the value of the type property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setType(String value) {
+            this.type = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PartnerInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PartnerInfoType.java
new file mode 100644
index 0000000..af7d8c2
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PartnerInfoType.java
@@ -0,0 +1,310 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for customer data with regard to distributed signatures (order 
types HKD, HTD).
+ * 
+ * <p>Java class for PartnerInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PartnerInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="AddressInfo" 
type="{urn:org:ebics:H004}AddressInfoType"/>
+ *         &lt;element name="BankInfo" 
type="{urn:org:ebics:H004}BankInfoType"/>
+ *         &lt;element name="AccountInfo" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;extension base="{urn:org:ebics:H004}AccountType">
+ *                 &lt;sequence>
+ *                   &lt;element name="UsageOrderTypes" 
type="{urn:org:ebics:H004}OrderTListType" minOccurs="0"/>
+ *                   &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="ID" use="required" 
type="{urn:org:ebics:H004}AccountIDType" />
+ *               &lt;/extension>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="OrderInfo" 
type="{urn:org:ebics:H004}AuthOrderInfoType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PartnerInfoType", propOrder = {
+    "addressInfo",
+    "bankInfo",
+    "accountInfo",
+    "orderInfo"
+})
+public class PartnerInfoType {
+
+    @XmlElement(name = "AddressInfo", required = true)
+    protected AddressInfoType addressInfo;
+    @XmlElement(name = "BankInfo", required = true)
+    protected BankInfoType bankInfo;
+    @XmlElement(name = "AccountInfo")
+    protected List<PartnerInfoType.AccountInfo> accountInfo;
+    @XmlElement(name = "OrderInfo", required = true)
+    protected List<AuthOrderInfoType> orderInfo;
+
+    /**
+     * Gets the value of the addressInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AddressInfoType }
+     *     
+     */
+    public AddressInfoType getAddressInfo() {
+        return addressInfo;
+    }
+
+    /**
+     * Sets the value of the addressInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AddressInfoType }
+     *     
+     */
+    public void setAddressInfo(AddressInfoType value) {
+        this.addressInfo = value;
+    }
+
+    /**
+     * Gets the value of the bankInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BankInfoType }
+     *     
+     */
+    public BankInfoType getBankInfo() {
+        return bankInfo;
+    }
+
+    /**
+     * Sets the value of the bankInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BankInfoType }
+     *     
+     */
+    public void setBankInfo(BankInfoType value) {
+        this.bankInfo = value;
+    }
+
+    /**
+     * Gets the value of the accountInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the accountInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccountInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PartnerInfoType.AccountInfo }
+     * 
+     * 
+     */
+    public List<PartnerInfoType.AccountInfo> getAccountInfo() {
+        if (accountInfo == null) {
+            accountInfo = new ArrayList<PartnerInfoType.AccountInfo>();
+        }
+        return this.accountInfo;
+    }
+
+    /**
+     * Gets the value of the orderInfo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderInfo 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderInfo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AuthOrderInfoType }
+     * 
+     * 
+     */
+    public List<AuthOrderInfoType> getOrderInfo() {
+        if (orderInfo == null) {
+            orderInfo = new ArrayList<AuthOrderInfoType>();
+        }
+        return this.orderInfo;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;extension base="{urn:org:ebics:H004}AccountType">
+     *       &lt;sequence>
+     *         &lt;element name="UsageOrderTypes" 
type="{urn:org:ebics:H004}OrderTListType" minOccurs="0"/>
+     *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="ID" use="required" 
type="{urn:org:ebics:H004}AccountIDType" />
+     *     &lt;/extension>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "usageOrderTypes",
+        "any"
+    })
+    public static class AccountInfo
+        extends AccountType
+    {
+
+        @XmlList
+        @XmlElement(name = "UsageOrderTypes")
+        protected List<String> usageOrderTypes;
+        @XmlAnyElement(lax = true)
+        protected List<Object> any;
+        @XmlAttribute(name = "ID", required = true)
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        protected String id;
+
+        /**
+         * Gets the value of the usageOrderTypes property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the 
usageOrderTypes property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getUsageOrderTypes().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getUsageOrderTypes() {
+            if (usageOrderTypes == null) {
+                usageOrderTypes = new ArrayList<String>();
+            }
+            return this.usageOrderTypes;
+        }
+
+        /**
+         * Gets the value of the any property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the any 
property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAny().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Element }
+         * {@link Object }
+         * 
+         * 
+         */
+        public List<Object> getAny() {
+            if (any == null) {
+                any = new ArrayList<Object>();
+            }
+            return this.any;
+        }
+
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getID() {
+            return id;
+        }
+
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setID(String value) {
+            this.id = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationAccountAuthType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationAccountAuthType.java
new file mode 100644
index 0000000..a90eacb
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationAccountAuthType.java
@@ -0,0 +1,73 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für Kontenberechtigungsdaten zur Vorabprüfung.
+ * 
+ * <p>Java class for PreValidationAccountAuthType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PreValidationAccountAuthType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}AccountType">
+ *       &lt;sequence>
+ *         &lt;element name="Amount" type="{urn:org:ebics:H004}AmountType" 
minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PreValidationAccountAuthType", propOrder = {
+    "amount"
+})
+public class PreValidationAccountAuthType
+    extends AccountType
+{
+
+    @XmlElement(name = "Amount")
+    protected AmountType amount;
+
+    /**
+     * Gets the value of the amount property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AmountType }
+     *     
+     */
+    public AmountType getAmount() {
+        return amount;
+    }
+
+    /**
+     * Sets the value of the amount property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AmountType }
+     *     
+     */
+    public void setAmount(AmountType value) {
+        this.amount = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationRequestType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationRequestType.java
new file mode 100644
index 0000000..d309895
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PreValidationRequestType.java
@@ -0,0 +1,147 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for pre-validation (request).
+ * 
+ * <p>Java class for PreValidationRequestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PreValidationRequestType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="DataDigest" 
type="{urn:org:ebics:H004}DataDigestType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="AccountAuthorisation" 
type="{urn:org:ebics:H004}PreValidationAccountAuthType" maxOccurs="unbounded" 
minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PreValidationRequestType", propOrder = {
+    "dataDigest",
+    "accountAuthorisation",
+    "any"
+})
+public class PreValidationRequestType {
+
+    @XmlElement(name = "DataDigest")
+    protected List<DataDigestType> dataDigest;
+    @XmlElement(name = "AccountAuthorisation")
+    protected List<PreValidationAccountAuthType> accountAuthorisation;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the dataDigest property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dataDigest 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDataDigest().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DataDigestType }
+     * 
+     * 
+     */
+    public List<DataDigestType> getDataDigest() {
+        if (dataDigest == null) {
+            dataDigest = new ArrayList<DataDigestType>();
+        }
+        return this.dataDigest;
+    }
+
+    /**
+     * Gets the value of the accountAuthorisation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
accountAuthorisation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccountAuthorisation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PreValidationAccountAuthType }
+     * 
+     * 
+     */
+    public List<PreValidationAccountAuthType> getAccountAuthorisation() {
+        if (accountAuthorisation == null) {
+            accountAuthorisation = new 
ArrayList<PreValidationAccountAuthType>();
+        }
+        return this.accountAuthorisation;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ProductElementType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ProductElementType.java
new file mode 100644
index 0000000..7e75371
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ProductElementType.java
@@ -0,0 +1,129 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für Element mit Kennung des Kundenprodukts bzw. Herstellerkennung 
oder Name.
+ * 
+ * <p>Java class for ProductElementType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ProductElementType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;urn:org:ebics:H004>ProductType">
+ *       &lt;attribute name="Language" use="required" 
type="{urn:org:ebics:H004}LanguageType" />
+ *       &lt;attribute name="InstituteID" 
type="{urn:org:ebics:H004}InstituteIDType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ProductElementType", propOrder = {
+    "value"
+})
+public class ProductElementType {
+
+    @XmlValue
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    protected String value;
+    @XmlAttribute(name = "Language", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    protected String language;
+    @XmlAttribute(name = "InstituteID")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    protected String instituteID;
+
+    /**
+     * Datentyp für die Kundenprodukt-ID.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the language property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLanguage() {
+        return language;
+    }
+
+    /**
+     * Sets the value of the language property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLanguage(String value) {
+        this.language = value;
+    }
+
+    /**
+     * Gets the value of the instituteID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInstituteID() {
+        return instituteID;
+    }
+
+    /**
+     * Sets the value of the instituteID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInstituteID(String value) {
+        this.instituteID = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyDigestType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyDigestType.java
new file mode 100644
index 0000000..b00d8bf
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyDigestType.java
@@ -0,0 +1,100 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * Datentyp für Hashwerte und Attribute von öffentlichen Schlüsseln.
+ * 
+ * <p>Java class for PubKeyDigestType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PubKeyDigestType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;urn:org:ebics:H004>DigestType">
+ *       &lt;attribute name="Algorithm" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PubKeyDigestType", propOrder = {
+    "value"
+})
+@XmlSeeAlso({
+    
tech.libeufin.messages.ebics.keyrequest.DataEncryptionInfoType.EncryptionPubKeyDigest.class
+})
+public class PubKeyDigestType {
+
+    @XmlValue
+    protected byte[] value;
+    @XmlAttribute(name = "Algorithm", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String algorithm;
+
+    /**
+     * Datentyp für Hashwerte.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setValue(byte[] value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the algorithm property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Sets the value of the algorithm property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsSignatures.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsSignatures.java
new file mode 100644
index 0000000..318fdf3
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsSignatures.java
@@ -0,0 +1,143 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für die Darstellung eines öffentlichen RSA-Schlüssels als 
Exponent-Modulus-Kombination oder als X509-Zertifikat.
+ * 
+ * <p>Java class for PubKeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PubKeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;sequence>
+ *           &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"; 
minOccurs="0"/>
+ *           &lt;element name="PubKeyValue" 
type="{http://www.ebics.org/S001}PubKeyValueType"/>
+ *         &lt;/sequence>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PubKeyInfoType", namespace = "http://www.ebics.org/S001";, 
propOrder = {
+    "x509Data",
+    "pubKeyValue",
+    "any"
+})
+@XmlSeeAlso({
+    SignaturePubKeyInfoType.class
+})
+public class PubKeyInfoTypeAtEbicsSignatures {
+
+    @XmlElement(name = "X509Data", namespace = 
"http://www.w3.org/2000/09/xmldsig#";)
+    protected X509DataType x509Data;
+    @XmlElement(name = "PubKeyValue", required = true)
+    protected PubKeyValueTypeAtEbicsSignatures pubKeyValue;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the x509Data property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link X509DataType }
+     *     
+     */
+    public X509DataType getX509Data() {
+        return x509Data;
+    }
+
+    /**
+     * Sets the value of the x509Data property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link X509DataType }
+     *     
+     */
+    public void setX509Data(X509DataType value) {
+        this.x509Data = value;
+    }
+
+    /**
+     * Gets the value of the pubKeyValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PubKeyValueTypeAtEbicsSignatures }
+     *     
+     */
+    public PubKeyValueTypeAtEbicsSignatures getPubKeyValue() {
+        return pubKeyValue;
+    }
+
+    /**
+     * Sets the value of the pubKeyValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PubKeyValueTypeAtEbicsSignatures }
+     *     
+     */
+    public void setPubKeyValue(PubKeyValueTypeAtEbicsSignatures value) {
+        this.pubKeyValue = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsTypes.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsTypes.java
new file mode 100644
index 0000000..e2719b9
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyInfoTypeAtEbicsTypes.java
@@ -0,0 +1,144 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für die Darstellung eines öffentlichen RSA-Schlüssels als 
Exponent-Modulus-Kombination oder als X509-Zertifikat.
+ * 
+ * <p>Java class for PubKeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PubKeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;sequence>
+ *           &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"; 
minOccurs="0"/>
+ *           &lt;element name="PubKeyValue" 
type="{urn:org:ebics:H004}PubKeyValueType"/>
+ *         &lt;/sequence>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PubKeyInfoType", propOrder = {
+    "x509Data",
+    "pubKeyValue",
+    "any"
+})
+@XmlSeeAlso({
+    EncryptionPubKeyInfoType.class,
+    AuthenticationPubKeyInfoType.class
+})
+public class PubKeyInfoTypeAtEbicsTypes {
+
+    @XmlElement(name = "X509Data", namespace = 
"http://www.w3.org/2000/09/xmldsig#";)
+    protected X509DataType x509Data;
+    @XmlElement(name = "PubKeyValue", required = true)
+    protected PubKeyValueTypeAtEbicsTypes pubKeyValue;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the x509Data property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link X509DataType }
+     *     
+     */
+    public X509DataType getX509Data() {
+        return x509Data;
+    }
+
+    /**
+     * Sets the value of the x509Data property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link X509DataType }
+     *     
+     */
+    public void setX509Data(X509DataType value) {
+        this.x509Data = value;
+    }
+
+    /**
+     * Gets the value of the pubKeyValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PubKeyValueTypeAtEbicsTypes }
+     *     
+     */
+    public PubKeyValueTypeAtEbicsTypes getPubKeyValue() {
+        return pubKeyValue;
+    }
+
+    /**
+     * Sets the value of the pubKeyValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PubKeyValueTypeAtEbicsTypes }
+     *     
+     */
+    public void setPubKeyValue(PubKeyValueTypeAtEbicsTypes value) {
+        this.pubKeyValue = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsSignatures.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsSignatures.java
new file mode 100644
index 0000000..cd40c27
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsSignatures.java
@@ -0,0 +1,140 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für die Exponent-Modulus-Darstellung eines öffentlichen 
RSA-Schlüssels.
+ * 
+ * <p>Java class for PubKeyValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PubKeyValueType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RSAKeyValue"/>
+ *         &lt;element name="TimeStamp" 
type="{http://www.ebics.org/S001}TimestampType"; minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PubKeyValueType", namespace = "http://www.ebics.org/S001";, 
propOrder = {
+    "rsaKeyValue",
+    "timeStamp",
+    "any"
+})
+public class PubKeyValueTypeAtEbicsSignatures {
+
+    @XmlElement(name = "RSAKeyValue", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, required = true)
+    protected RSAKeyValueType rsaKeyValue;
+    @XmlElement(name = "TimeStamp")
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timeStamp;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the rsaKeyValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RSAKeyValueType }
+     *     
+     */
+    public RSAKeyValueType getRSAKeyValue() {
+        return rsaKeyValue;
+    }
+
+    /**
+     * Sets the value of the rsaKeyValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RSAKeyValueType }
+     *     
+     */
+    public void setRSAKeyValue(RSAKeyValueType value) {
+        this.rsaKeyValue = value;
+    }
+
+    /**
+     * Gets the value of the timeStamp property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimeStamp() {
+        return timeStamp;
+    }
+
+    /**
+     * Sets the value of the timeStamp property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimeStamp(XMLGregorianCalendar value) {
+        this.timeStamp = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsTypes.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsTypes.java
new file mode 100644
index 0000000..c01ea6a
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/PubKeyValueTypeAtEbicsTypes.java
@@ -0,0 +1,140 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für die Exponent-Modulus-Darstellung eines öffentlichen 
RSA-Schlüssels.
+ * 
+ * <p>Java class for PubKeyValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PubKeyValueType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RSAKeyValue"/>
+ *         &lt;element name="TimeStamp" 
type="{urn:org:ebics:H004}TimestampType" minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PubKeyValueType", propOrder = {
+    "rsaKeyValue",
+    "timeStamp",
+    "any"
+})
+public class PubKeyValueTypeAtEbicsTypes {
+
+    @XmlElement(name = "RSAKeyValue", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, required = true)
+    protected RSAKeyValueType rsaKeyValue;
+    @XmlElement(name = "TimeStamp")
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timeStamp;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the rsaKeyValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RSAKeyValueType }
+     *     
+     */
+    public RSAKeyValueType getRSAKeyValue() {
+        return rsaKeyValue;
+    }
+
+    /**
+     * Sets the value of the rsaKeyValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RSAKeyValueType }
+     *     
+     */
+    public void setRSAKeyValue(RSAKeyValueType value) {
+        this.rsaKeyValue = value;
+    }
+
+    /**
+     * Gets the value of the timeStamp property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimeStamp() {
+        return timeStamp;
+    }
+
+    /**
+     * Sets the value of the timeStamp property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimeStamp(XMLGregorianCalendar value) {
+        this.timeStamp = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RSAKeyValueType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RSAKeyValueType.java
new file mode 100644
index 0000000..da95156
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RSAKeyValueType.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RSAKeyValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RSAKeyValueType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="Modulus" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *         &lt;element name="Exponent" 
type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RSAKeyValueType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "modulus",
+    "exponent"
+})
+public class RSAKeyValueType {
+
+    @XmlElement(name = "Modulus", required = true)
+    protected byte[] modulus;
+    @XmlElement(name = "Exponent", required = true)
+    protected byte[] exponent;
+
+    /**
+     * Gets the value of the modulus property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getModulus() {
+        return modulus;
+    }
+
+    /**
+     * Sets the value of the modulus property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setModulus(byte[] value) {
+        this.modulus = value;
+    }
+
+    /**
+     * Gets the value of the exponent property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getExponent() {
+        return exponent;
+    }
+
+    /**
+     * Sets the value of the exponent property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setExponent(byte[] value) {
+        this.exponent = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ReferenceType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ReferenceType.java
new file mode 100644
index 0000000..605cb43
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/ReferenceType.java
@@ -0,0 +1,214 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ReferenceType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ReferenceType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms"; 
minOccurs="0"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *       &lt;attribute name="URI" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *       &lt;attribute name="Type" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferenceType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "transforms",
+    "digestMethod",
+    "digestValue"
+})
+public class ReferenceType {
+
+    @XmlElement(name = "Transforms")
+    protected TransformsType transforms;
+    @XmlElement(name = "DigestMethod", required = true)
+    protected DigestMethodType digestMethod;
+    @XmlElement(name = "DigestValue", required = true)
+    protected byte[] digestValue;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+    @XmlAttribute(name = "URI")
+    @XmlSchemaType(name = "anyURI")
+    protected String uri;
+    @XmlAttribute(name = "Type")
+    @XmlSchemaType(name = "anyURI")
+    protected String type;
+
+    /**
+     * Gets the value of the transforms property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TransformsType }
+     *     
+     */
+    public TransformsType getTransforms() {
+        return transforms;
+    }
+
+    /**
+     * Sets the value of the transforms property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TransformsType }
+     *     
+     */
+    public void setTransforms(TransformsType value) {
+        this.transforms = value;
+    }
+
+    /**
+     * Gets the value of the digestMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DigestMethodType }
+     *     
+     */
+    public DigestMethodType getDigestMethod() {
+        return digestMethod;
+    }
+
+    /**
+     * Sets the value of the digestMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DigestMethodType }
+     *     
+     */
+    public void setDigestMethod(DigestMethodType value) {
+        this.digestMethod = value;
+    }
+
+    /**
+     * Gets the value of the digestValue property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getDigestValue() {
+        return digestValue;
+    }
+
+    /**
+     * Sets the value of the digestValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setDigestValue(byte[] value) {
+        this.digestValue = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the uri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getURI() {
+        return uri;
+    }
+
+    /**
+     * Sets the value of the uri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setURI(String value) {
+        this.uri = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RetrievalMethodType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RetrievalMethodType.java
new file mode 100644
index 0000000..c5aae4c
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/RetrievalMethodType.java
@@ -0,0 +1,127 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RetrievalMethodType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RetrievalMethodType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms"; 
minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="URI" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *       &lt;attribute name="Type" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RetrievalMethodType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "transforms"
+})
+public class RetrievalMethodType {
+
+    @XmlElement(name = "Transforms")
+    protected TransformsType transforms;
+    @XmlAttribute(name = "URI")
+    @XmlSchemaType(name = "anyURI")
+    protected String uri;
+    @XmlAttribute(name = "Type")
+    @XmlSchemaType(name = "anyURI")
+    protected String type;
+
+    /**
+     * Gets the value of the transforms property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TransformsType }
+     *     
+     */
+    public TransformsType getTransforms() {
+        return transforms;
+    }
+
+    /**
+     * Sets the value of the transforms property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TransformsType }
+     *     
+     */
+    public void setTransforms(TransformsType value) {
+        this.transforms = value;
+    }
+
+    /**
+     * Gets the value of the uri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getURI() {
+        return uri;
+    }
+
+    /**
+     * Sets the value of the uri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setURI(String value) {
+        this.uri = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SPKIDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SPKIDataType.java
new file mode 100644
index 0000000..bbe7721
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SPKIDataType.java
@@ -0,0 +1,83 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SPKIDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SPKIDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence maxOccurs="unbounded">
+ *         &lt;element name="SPKISexp" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *         &lt;any processContents='lax' namespace='##other' minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SPKIDataType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "spkiSexpAndAny"
+})
+public class SPKIDataType {
+
+    @XmlElementRef(name = "SPKISexp", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class)
+    @XmlAnyElement(lax = true)
+    protected List<Object> spkiSexpAndAny;
+
+    /**
+     * Gets the value of the spkiSexpAndAny property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
spkiSexpAndAny property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSPKISexpAndAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getSPKISexpAndAny() {
+        if (spkiSexpAndAny == null) {
+            spkiSexpAndAny = new ArrayList<Object>();
+        }
+        return this.spkiSexpAndAny;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureCertificateInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureCertificateInfoType.java
new file mode 100644
index 0000000..4fc8caa
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureCertificateInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Data type for public authorisation (ES) key.
+ * 
+ * <p>Java class for SignatureCertificateInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignatureCertificateInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{urn:org:ebics:H004}CertificateInfoType">
+ *       &lt;sequence>
+ *         &lt;element name="SignatureVersion" 
type="{urn:org:ebics:H004}SignatureVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureCertificateInfoType", propOrder = {
+    "signatureVersion"
+})
+public class SignatureCertificateInfoType
+    extends CertificateInfoType
+{
+
+    @XmlElement(name = "SignatureVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String signatureVersion;
+
+    /**
+     * Gets the value of the signatureVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSignatureVersion() {
+        return signatureVersion;
+    }
+
+    /**
+     * Sets the value of the signatureVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSignatureVersion(String value) {
+        this.signatureVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureMethodType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureMethodType.java
new file mode 100644
index 0000000..a5b64d2
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureMethodType.java
@@ -0,0 +1,115 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureMethodType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignatureMethodType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="HMACOutputLength" 
type="{http://www.w3.org/2000/09/xmldsig#}HMACOutputLengthType"; minOccurs="0"/>
+ *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Algorithm" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureMethodType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class SignatureMethodType {
+
+    @XmlElementRef(name = "HMACOutputLength", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Algorithm", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String algorithm;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+     * {@link Object }
+     * {@link String }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the algorithm property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Sets the value of the algorithm property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertiesType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertiesType.java
new file mode 100644
index 0000000..fe4252e
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertiesType.java
@@ -0,0 +1,111 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignaturePropertiesType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignaturePropertiesType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}SignatureProperty"; 
maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertiesType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "signatureProperty"
+})
+public class SignaturePropertiesType {
+
+    @XmlElement(name = "SignatureProperty", required = true)
+    protected List<SignaturePropertyType> signatureProperty;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the signatureProperty property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
signatureProperty property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSignatureProperty().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SignaturePropertyType }
+     * 
+     * 
+     */
+    public List<SignaturePropertyType> getSignatureProperty() {
+        if (signatureProperty == null) {
+            signatureProperty = new ArrayList<SignaturePropertyType>();
+        }
+        return this.signatureProperty;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertyType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertyType.java
new file mode 100644
index 0000000..e8376bf
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePropertyType.java
@@ -0,0 +1,144 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SignaturePropertyType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignaturePropertyType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;choice maxOccurs="unbounded">
+ *         &lt;any processContents='lax' namespace='##other'/>
+ *       &lt;/choice>
+ *       &lt;attribute name="Target" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertyType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class SignaturePropertyType {
+
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Target", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String target;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * {@link String }
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the target property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTarget() {
+        return target;
+    }
+
+    /**
+     * Sets the value of the target property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTarget(String value) {
+        this.target = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyInfoType.java
new file mode 100644
index 0000000..4343d5b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyInfoType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Datentyp für öffentliche bankfachliche Schlüssel.
+ * 
+ * <p>Java class for SignaturePubKeyInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignaturePubKeyInfoType">
+ *   &lt;complexContent>
+ *     &lt;extension base="{http://www.ebics.org/S001}PubKeyInfoType";>
+ *       &lt;sequence>
+ *         &lt;element name="SignatureVersion" 
type="{http://www.ebics.org/S001}SignatureVersionType"/>
+ *       &lt;/sequence>
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePubKeyInfoType", namespace = 
"http://www.ebics.org/S001";, propOrder = {
+    "signatureVersion"
+})
+public class SignaturePubKeyInfoType
+    extends PubKeyInfoTypeAtEbicsSignatures
+{
+
+    @XmlElement(name = "SignatureVersion", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String signatureVersion;
+
+    /**
+     * Gets the value of the signatureVersion property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSignatureVersion() {
+        return signatureVersion;
+    }
+
+    /**
+     * Sets the value of the signatureVersion property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSignatureVersion(String value) {
+        this.signatureVersion = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyOrderDataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyOrderDataType.java
new file mode 100644
index 0000000..bc22238
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignaturePubKeyOrderDataType.java
@@ -0,0 +1,172 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Public Key Dateien unabhängig von der Auftragsart / 
Geschäftsvorfall.
+ * 
+ * <p>Java class for SignaturePubKeyOrderDataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignaturePubKeyOrderDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="SignaturePubKeyInfo" 
type="{http://www.ebics.org/S001}SignaturePubKeyInfoType"/>
+ *         &lt;element name="PartnerID" 
type="{http://www.ebics.org/S001}PartnerIDType"/>
+ *         &lt;element name="UserID" 
type="{http://www.ebics.org/S001}UserIDType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePubKeyOrderDataType", namespace = 
"http://www.ebics.org/S001";, propOrder = {
+    "signaturePubKeyInfo",
+    "partnerID",
+    "userID",
+    "any"
+})
+public class SignaturePubKeyOrderDataType {
+
+    @XmlElement(name = "SignaturePubKeyInfo", required = true)
+    protected SignaturePubKeyInfoType signaturePubKeyInfo;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the signaturePubKeyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignaturePubKeyInfoType }
+     *     
+     */
+    public SignaturePubKeyInfoType getSignaturePubKeyInfo() {
+        return signaturePubKeyInfo;
+    }
+
+    /**
+     * Sets the value of the signaturePubKeyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignaturePubKeyInfoType }
+     *     
+     */
+    public void setSignaturePubKeyInfo(SignaturePubKeyInfoType value) {
+        this.signaturePubKeyInfo = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureType.java
new file mode 100644
index 0000000..7b3ce88
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureType.java
@@ -0,0 +1,195 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignatureType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignedInfo"/>
+ *         &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}SignatureValue"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyInfo"; 
minOccurs="0"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Object"; 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "signedInfo",
+    "signatureValue",
+    "keyInfo",
+    "object"
+})
+public class SignatureType {
+
+    @XmlElement(name = "SignedInfo", required = true)
+    protected SignedInfoType signedInfo;
+    @XmlElement(name = "SignatureValue", required = true)
+    protected SignatureValueType signatureValue;
+    @XmlElement(name = "KeyInfo")
+    protected KeyInfoType keyInfo;
+    @XmlElement(name = "Object")
+    protected List<ObjectType> object;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the signedInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignedInfoType }
+     *     
+     */
+    public SignedInfoType getSignedInfo() {
+        return signedInfo;
+    }
+
+    /**
+     * Sets the value of the signedInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignedInfoType }
+     *     
+     */
+    public void setSignedInfo(SignedInfoType value) {
+        this.signedInfo = value;
+    }
+
+    /**
+     * Gets the value of the signatureValue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignatureValueType }
+     *     
+     */
+    public SignatureValueType getSignatureValue() {
+        return signatureValue;
+    }
+
+    /**
+     * Sets the value of the signatureValue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignatureValueType }
+     *     
+     */
+    public void setSignatureValue(SignatureValueType value) {
+        this.signatureValue = value;
+    }
+
+    /**
+     * Gets the value of the keyInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link KeyInfoType }
+     *     
+     */
+    public KeyInfoType getKeyInfo() {
+        return keyInfo;
+    }
+
+    /**
+     * Sets the value of the keyInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link KeyInfoType }
+     *     
+     */
+    public void setKeyInfo(KeyInfoType value) {
+        this.keyInfo = value;
+    }
+
+    /**
+     * Gets the value of the object property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the object 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getObject().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link ObjectType }
+     * 
+     * 
+     */
+    public List<ObjectType> getObject() {
+        if (object == null) {
+            object = new ArrayList<ObjectType>();
+        }
+        return this.object;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureValueType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureValueType.java
new file mode 100644
index 0000000..1e12d65
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignatureValueType.java
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureValueType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignatureValueType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureValueType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "value"
+})
+public class SignatureValueType {
+
+    @XmlValue
+    protected byte[] value;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     byte[]
+     */
+    public byte[] getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     byte[]
+     */
+    public void setValue(byte[] value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignedInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignedInfoType.java
new file mode 100644
index 0000000..7395323
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignedInfoType.java
@@ -0,0 +1,167 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignedInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignedInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod"/>
+ *         &lt;element 
ref="{http://www.w3.org/2000/09/xmldsig#}SignatureMethod"/>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference"; 
maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedInfoType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "canonicalizationMethod",
+    "signatureMethod",
+    "reference"
+})
+public class SignedInfoType {
+
+    @XmlElement(name = "CanonicalizationMethod", required = true)
+    protected CanonicalizationMethodType canonicalizationMethod;
+    @XmlElement(name = "SignatureMethod", required = true)
+    protected SignatureMethodType signatureMethod;
+    @XmlElement(name = "Reference", required = true)
+    protected List<ReferenceType> reference;
+    @XmlAttribute(name = "Id")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    /**
+     * Gets the value of the canonicalizationMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CanonicalizationMethodType }
+     *     
+     */
+    public CanonicalizationMethodType getCanonicalizationMethod() {
+        return canonicalizationMethod;
+    }
+
+    /**
+     * Sets the value of the canonicalizationMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CanonicalizationMethodType }
+     *     
+     */
+    public void setCanonicalizationMethod(CanonicalizationMethodType value) {
+        this.canonicalizationMethod = value;
+    }
+
+    /**
+     * Gets the value of the signatureMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignatureMethodType }
+     *     
+     */
+    public SignatureMethodType getSignatureMethod() {
+        return signatureMethod;
+    }
+
+    /**
+     * Sets the value of the signatureMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignatureMethodType }
+     *     
+     */
+    public void setSignatureMethod(SignatureMethodType value) {
+        this.signatureMethod = value;
+    }
+
+    /**
+     * Gets the value of the reference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the reference 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link ReferenceType }
+     * 
+     * 
+     */
+    public List<ReferenceType> getReference() {
+        if (reference == null) {
+            reference = new ArrayList<ReferenceType>();
+        }
+        return this.reference;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignerInfoType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignerInfoType.java
new file mode 100644
index 0000000..b07491b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/SignerInfoType.java
@@ -0,0 +1,319 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für Informationen zu einem Unterzeichner eines VEU-Auftrags (HVU, 
HVD).
+ * 
+ * <p>Java class for SignerInfoType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SignerInfoType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="Name" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType"/>
+ *         &lt;element name="Permission">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;attGroup ref="{urn:org:ebics:H004}SignerPermission"/>
+ *                 &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignerInfoType", propOrder = {
+    "partnerID",
+    "userID",
+    "name",
+    "timestamp",
+    "permission",
+    "any"
+})
+public class SignerInfoType {
+
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlElement(name = "Name")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String name;
+    @XmlElement(name = "Timestamp", required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timestamp;
+    @XmlElement(name = "Permission", required = true)
+    protected SignerInfoType.Permission permission;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the timestamp property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimestamp() {
+        return timestamp;
+    }
+
+    /**
+     * Sets the value of the timestamp property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimestamp(XMLGregorianCalendar value) {
+        this.timestamp = value;
+    }
+
+    /**
+     * Gets the value of the permission property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SignerInfoType.Permission }
+     *     
+     */
+    public SignerInfoType.Permission getPermission() {
+        return permission;
+    }
+
+    /**
+     * Sets the value of the permission property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SignerInfoType.Permission }
+     *     
+     */
+    public void setPermission(SignerInfoType.Permission value) {
+        this.permission = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;attGroup ref="{urn:org:ebics:H004}SignerPermission"/>
+     *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Permission {
+
+        @XmlAttribute(name = "AuthorisationLevel", required = true)
+        protected AuthorisationLevelType authorisationLevel;
+        @XmlAnyAttribute
+        private Map<QName, String> otherAttributes = new HashMap<QName, 
String>();
+
+        /**
+         * Gets the value of the authorisationLevel property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link AuthorisationLevelType }
+         *     
+         */
+        public AuthorisationLevelType getAuthorisationLevel() {
+            return authorisationLevel;
+        }
+
+        /**
+         * Sets the value of the authorisationLevel property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link AuthorisationLevelType }
+         *     
+         */
+        public void setAuthorisationLevel(AuthorisationLevelType value) {
+            this.authorisationLevel = value;
+        }
+
+        /**
+         * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+         * 
+         * <p>
+         * the map is keyed by the name of the attribute and 
+         * the value is the string value of the attribute.
+         * 
+         * the map returned by this method is live, and you can add new 
attribute
+         * by updating the map directly. Because of this design, there's no 
setter.
+         * 
+         * 
+         * @return
+         *     always non-null
+         */
+        public Map<QName, String> getOtherAttributes() {
+            return otherAttributes;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StandardOrderParamsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StandardOrderParamsType.java
new file mode 100644
index 0000000..0ddf1bc
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StandardOrderParamsType.java
@@ -0,0 +1,169 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * Datentyp für zusätzliche Auftragsparameter bei Standard-Auftragsarten.
+ * 
+ * <p>Java class for StandardOrderParamsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="StandardOrderParamsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="DateRange" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction 
base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *                 &lt;sequence>
+ *                   &lt;element name="Start" 
type="{urn:org:ebics:H004}DateType"/>
+ *                   &lt;element name="End" 
type="{urn:org:ebics:H004}DateType"/>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StandardOrderParamsType", propOrder = {
+    "dateRange"
+})
+public class StandardOrderParamsType {
+
+    @XmlElement(name = "DateRange")
+    protected StandardOrderParamsType.DateRange dateRange;
+
+    /**
+     * Gets the value of the dateRange property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link StandardOrderParamsType.DateRange }
+     *     
+     */
+    public StandardOrderParamsType.DateRange getDateRange() {
+        return dateRange;
+    }
+
+    /**
+     * Sets the value of the dateRange property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link StandardOrderParamsType.DateRange }
+     *     
+     */
+    public void setDateRange(StandardOrderParamsType.DateRange value) {
+        this.dateRange = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;sequence>
+     *         &lt;element name="Start" type="{urn:org:ebics:H004}DateType"/>
+     *         &lt;element name="End" type="{urn:org:ebics:H004}DateType"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "start",
+        "end"
+    })
+    public static class DateRange {
+
+        @XmlElement(name = "Start", required = true)
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar start;
+        @XmlElement(name = "End", required = true)
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar end;
+
+        /**
+         * Gets the value of the start property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getStart() {
+            return start;
+        }
+
+        /**
+         * Sets the value of the start property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setStart(XMLGregorianCalendar value) {
+            this.start = value;
+        }
+
+        /**
+         * Gets the value of the end property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getEnd() {
+            return end;
+        }
+
+        /**
+         * Sets the value of the end property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setEnd(XMLGregorianCalendar value) {
+            this.end = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StaticHeaderBaseType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StaticHeaderBaseType.java
new file mode 100644
index 0000000..7e166aa
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/StaticHeaderBaseType.java
@@ -0,0 +1,357 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für den statischen EBICS-Header (allgemein).
+ * 
+ * <p>Java class for StaticHeaderBaseType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="StaticHeaderBaseType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;element name="Nonce" type="{urn:org:ebics:H004}NonceType" 
minOccurs="0"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType" minOccurs="0"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="SystemID" type="{urn:org:ebics:H004}UserIDType" 
minOccurs="0"/>
+ *         &lt;element name="Product" 
type="{urn:org:ebics:H004}ProductElementType" minOccurs="0"/>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}OrderDetailsType"/>
+ *         &lt;element name="SecurityMedium" 
type="{urn:org:ebics:H004}SecurityMediumType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StaticHeaderBaseType", propOrder = {
+    "hostID",
+    "nonce",
+    "timestamp",
+    "partnerID",
+    "userID",
+    "systemID",
+    "product",
+    "orderDetails",
+    "securityMedium",
+    "any"
+})
+@XmlSeeAlso({
+    NoPubKeyDigestsRequestStaticHeaderType.class,
+    UnsignedRequestStaticHeaderType.class,
+    UnsecuredRequestStaticHeaderType.class
+})
+public abstract class StaticHeaderBaseType {
+
+    @XmlElement(name = "HostID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String hostID;
+    @XmlElement(name = "Nonce", type = String.class)
+    @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+    @XmlSchemaType(name = "hexBinary")
+    protected byte[] nonce;
+    @XmlElement(name = "Timestamp")
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timestamp;
+    @XmlElement(name = "PartnerID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String partnerID;
+    @XmlElement(name = "UserID", required = true)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String userID;
+    @XmlElement(name = "SystemID")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String systemID;
+    @XmlElementRef(name = "Product", namespace = "urn:org:ebics:H004", type = 
JAXBElement.class, required = false)
+    protected JAXBElement<ProductElementType> product;
+    @XmlElement(name = "OrderDetails", required = true)
+    protected OrderDetailsType orderDetails;
+    @XmlElement(name = "SecurityMedium", required = true)
+    protected String securityMedium;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the hostID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getHostID() {
+        return hostID;
+    }
+
+    /**
+     * Sets the value of the hostID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setHostID(String value) {
+        this.hostID = value;
+    }
+
+    /**
+     * Gets the value of the nonce property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public byte[] getNonce() {
+        return nonce;
+    }
+
+    /**
+     * Sets the value of the nonce property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNonce(byte[] value) {
+        this.nonce = value;
+    }
+
+    /**
+     * Gets the value of the timestamp property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimestamp() {
+        return timestamp;
+    }
+
+    /**
+     * Sets the value of the timestamp property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimestamp(XMLGregorianCalendar value) {
+        this.timestamp = value;
+    }
+
+    /**
+     * Gets the value of the partnerID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPartnerID() {
+        return partnerID;
+    }
+
+    /**
+     * Sets the value of the partnerID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPartnerID(String value) {
+        this.partnerID = value;
+    }
+
+    /**
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserID(String value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the systemID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSystemID() {
+        return systemID;
+    }
+
+    /**
+     * Sets the value of the systemID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSystemID(String value) {
+        this.systemID = value;
+    }
+
+    /**
+     * Gets the value of the product property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link JAXBElement }{@code <}{@link ProductElementType }{@code >}
+     *     
+     */
+    public JAXBElement<ProductElementType> getProduct() {
+        return product;
+    }
+
+    /**
+     * Sets the value of the product property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link JAXBElement }{@code <}{@link ProductElementType }{@code >}
+     *     
+     */
+    public void setProduct(JAXBElement<ProductElementType> value) {
+        this.product = value;
+    }
+
+    /**
+     * Gets the value of the orderDetails property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link OrderDetailsType }
+     *     
+     */
+    public OrderDetailsType getOrderDetails() {
+        return orderDetails;
+    }
+
+    /**
+     * Sets the value of the orderDetails property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link OrderDetailsType }
+     *     
+     */
+    public void setOrderDetails(OrderDetailsType value) {
+        this.orderDetails = value;
+    }
+
+    /**
+     * Gets the value of the securityMedium property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSecurityMedium() {
+        return securityMedium;
+    }
+
+    /**
+     * Sets the value of the securityMedium property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSecurityMedium(String value) {
+        this.securityMedium = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransactionPhaseType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransactionPhaseType.java
new file mode 100644
index 0000000..5aec19b
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransactionPhaseType.java
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransactionPhaseType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="TransactionPhaseType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;enumeration value="Initialisation"/>
+ *     &lt;enumeration value="Transfer"/>
+ *     &lt;enumeration value="Receipt"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "TransactionPhaseType")
+@XmlEnum
+public enum TransactionPhaseType {
+
+
+    /**
+     * Transaktionsinitialisierung
+     * 
+     */
+    @XmlEnumValue("Initialisation")
+    INITIALISATION("Initialisation"),
+
+    /**
+     * Auftragsdatentransfer
+     * 
+     */
+    @XmlEnumValue("Transfer")
+    TRANSFER("Transfer"),
+
+    /**
+     * Quittungstransfer
+     * 
+     */
+    @XmlEnumValue("Receipt")
+    RECEIPT("Receipt");
+    private final String value;
+
+    TransactionPhaseType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static TransactionPhaseType fromValue(String v) {
+        for (TransactionPhaseType c: TransactionPhaseType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptRequestType.java
similarity index 61%
copy from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
copy to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptRequestType.java
index 9d1e96f..5b388f9 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptRequestType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -9,24 +16,22 @@ import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für den Transfer von Transferquittungen.
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for TransferReceiptRequestType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="TransferReceiptRequestType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="ReceiptCode" 
type="{urn:org:ebics:H004}ReceiptCodeType"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +42,32 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "TransferReceiptRequestType", propOrder = {
+    "receiptCode",
     "any"
 })
-public class HEVRequestDataType {
+public class TransferReceiptRequestType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlSchemaType(name = "token")
-    protected String hostID;
+    @XmlElement(name = "ReceiptCode")
+    @XmlSchemaType(name = "nonNegativeInteger")
+    protected int receiptCode;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the receiptCode property.
      * 
-     * @return
-     *     possible object is
-     *     {@link String }
-     *     
      */
-    public String getHostID() {
-        return hostID;
+    public int getReceiptCode() {
+        return receiptCode;
     }
 
     /**
-     * Sets the value of the hostID property.
+     * Sets the value of the receiptCode property.
      * 
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public void setReceiptCode(int value) {
+        this.receiptCode = value;
     }
 
     /**
@@ -92,8 +88,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptResponseType.java
similarity index 50%
rename from sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
rename to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptResponseType.java
index 9d1e96f..806037d 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVRequestDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferReceiptResponseType.java
@@ -1,5 +1,12 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -11,22 +18,24 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für den Transfer von Antwortcodes.
  * 
- * <p>Java class for HEVRequestDataType complex type.
+ * <p>Java class for TransferReceiptResponseType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVRequestDataType">
+ * &lt;complexType name="TransferReceiptResponseType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="HostID" 
type="{http://www.ebics.org/H000}HostIDType"/>
+ *         &lt;element name="ReturnCodeReceipt" 
type="{urn:org:ebics:H004}ReturnCodeType"/>
+ *         &lt;element name="TimestampBankParameter" 
type="{urn:org:ebics:H004}TimestampType" minOccurs="0"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -37,41 +46,69 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVRequestDataType", namespace = "http://www.ebics.org/H000";, 
propOrder = {
-    "hostID",
+@XmlType(name = "TransferReceiptResponseType", propOrder = {
+    "returnCodeReceipt",
+    "timestampBankParameter",
     "any"
 })
-public class HEVRequestDataType {
+public class TransferReceiptResponseType {
 
-    @XmlElement(name = "HostID", namespace = "http://www.ebics.org/H000";, 
required = true)
+    @XmlElement(name = "ReturnCodeReceipt", required = true)
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlSchemaType(name = "token")
-    protected String hostID;
+    protected String returnCodeReceipt;
+    @XmlElement(name = "TimestampBankParameter")
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar timestampBankParameter;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the hostID property.
+     * Gets the value of the returnCodeReceipt property.
      * 
      * @return
      *     possible object is
      *     {@link String }
      *     
      */
-    public String getHostID() {
-        return hostID;
+    public String getReturnCodeReceipt() {
+        return returnCodeReceipt;
     }
 
     /**
-     * Sets the value of the hostID property.
+     * Sets the value of the returnCodeReceipt property.
      * 
      * @param value
      *     allowed object is
      *     {@link String }
      *     
      */
-    public void setHostID(String value) {
-        this.hostID = value;
+    public void setReturnCodeReceipt(String value) {
+        this.returnCodeReceipt = value;
+    }
+
+    /**
+     * Gets the value of the timestampBankParameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getTimestampBankParameter() {
+        return timestampBankParameter;
+    }
+
+    /**
+     * Sets the value of the timestampBankParameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setTimestampBankParameter(XMLGregorianCalendar value) {
+        this.timestampBankParameter = value;
     }
 
     /**
@@ -92,8 +129,8 @@ public class HEVRequestDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferType.java
new file mode 100644
index 0000000..094f387
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransferType.java
@@ -0,0 +1,68 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransferType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="TransferType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token";>
+ *     &lt;enumeration value="Upload"/>
+ *     &lt;enumeration value="Download"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "TransferType")
+@XmlEnum
+public enum TransferType {
+
+
+    /**
+     * Auftragsdaten werden bei der Anfrage transferiert.
+     * 
+     */
+    @XmlEnumValue("Upload")
+    UPLOAD("Upload"),
+
+    /**
+     * Auftragsdaten werden bei der Antwort transferiert.
+     * 
+     */
+    @XmlEnumValue("Download")
+    DOWNLOAD("Download");
+    private final String value;
+
+    TransferType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static TransferType fromValue(String v) {
+        for (TransferType c: TransferType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformType.java
new file mode 100644
index 0000000..cce9692
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformType.java
@@ -0,0 +1,116 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for TransformType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="TransformType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;choice maxOccurs="unbounded" minOccurs="0">
+ *         &lt;any processContents='lax' namespace='##other'/>
+ *         &lt;element name="XPath" 
type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/choice>
+ *       &lt;attribute name="Algorithm" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anyURI"; />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "content"
+})
+public class TransformType {
+
+    @XmlElementRef(name = "XPath", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    @XmlMixed
+    @XmlAnyElement(lax = true)
+    protected List<Object> content;
+    @XmlAttribute(name = "Algorithm", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected String algorithm;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * {@link Element }
+     * {@link Object }
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * 
+     * 
+     */
+    public List<Object> getContent() {
+        if (content == null) {
+            content = new ArrayList<Object>();
+        }
+        return this.content;
+    }
+
+    /**
+     * Gets the value of the algorithm property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Sets the value of the algorithm property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformsType.java
new file mode 100644
index 0000000..59c5c13
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/TransformsType.java
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransformsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="TransformsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transform"; 
maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "transform"
+})
+public class TransformsType {
+
+    @XmlElement(name = "Transform", required = true)
+    protected List<TransformType> transform;
+
+    /**
+     * Gets the value of the transform property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the transform 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getTransform().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link TransformType }
+     * 
+     * 
+     */
+    public List<TransformType> getTransform() {
+        if (transform == null) {
+            transform = new ArrayList<TransformType>();
+        }
+        return this.transform;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredReqOrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredReqOrderDetailsType.java
new file mode 100644
index 0000000..cbd39e8
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredReqOrderDetailsType.java
@@ -0,0 +1,45 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für OrderDetails im statischen EBICS-Header von 
ebicsUnsecuredRequest.
+ * 
+ * <p>Java class for UnsecuredReqOrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UnsecuredReqOrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}OrderDetailsType">
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="OrderAttribute" 
type="{urn:org:ebics:H004}OrderAttributeBaseType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsecuredReqOrderDetailsType")
+public class UnsecuredReqOrderDetailsType
+    extends OrderDetailsType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredRequestStaticHeaderType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredRequestStaticHeaderType.java
new file mode 100644
index 0000000..f3c1a6a
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsecuredRequestStaticHeaderType.java
@@ -0,0 +1,53 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für den statischen EBICS-Header bei ungesicherten 
Sendeauftragsarten (Aufträge HIA und INI): kein Nonce, kein Timestamp, keine 
EU-Datei, keine X001 Authentifizierung, keine Verschlüsselung, keine Digests 
der öffentlichen Bankschlüssel, Nutzdaten komprimiert, Auftragsattribut DZNNN
+ * 
+ * <p>Java class for UnsecuredRequestStaticHeaderType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UnsecuredRequestStaticHeaderType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}StaticHeaderBaseType">
+ *       &lt;sequence>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;element name="Nonce" type="{urn:org:ebics:H004}NonceType" 
maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType" maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="SystemID" type="{urn:org:ebics:H004}UserIDType" 
minOccurs="0"/>
+ *         &lt;element name="Product" 
type="{urn:org:ebics:H004}ProductElementType" minOccurs="0"/>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}UnsecuredReqOrderDetailsType"/>
+ *         &lt;element name="SecurityMedium" 
type="{urn:org:ebics:H004}SecurityMediumType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsecuredRequestStaticHeaderType")
+public class UnsecuredRequestStaticHeaderType
+    extends StaticHeaderBaseType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedReqOrderDetailsType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedReqOrderDetailsType.java
new file mode 100644
index 0000000..a1bbfce
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedReqOrderDetailsType.java
@@ -0,0 +1,45 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für OrderDetails im statischen EBICS-Header von 
ebicsUnsignedRequest.
+ * 
+ * <p>Java class for UnsignedReqOrderDetailsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UnsignedReqOrderDetailsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}OrderDetailsType">
+ *       &lt;sequence>
+ *         &lt;element name="OrderType" 
type="{urn:org:ebics:H004}OrderTBaseType"/>
+ *         &lt;element name="OrderAttribute" 
type="{urn:org:ebics:H004}OrderAttributeBaseType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsignedReqOrderDetailsType")
+public class UnsignedReqOrderDetailsType
+    extends OrderDetailsType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedRequestStaticHeaderType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedRequestStaticHeaderType.java
new file mode 100644
index 0000000..466bc83
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UnsignedRequestStaticHeaderType.java
@@ -0,0 +1,53 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Datentyp für den statischen EBICS-Header für ebicsUnsignedRequest.Datentyp 
für den statischen EBICS-Header bei Aufträgen ohne Authentifizierungssignatur 
(Auftrag HSA): keine X001 Authentifizierung, keine Digests der öffentlichen 
Bankschlüssel, EU-Datei, Nutzdaten, Nonce, Timestamp, OrderId, Auftragsattribut 
OZNNN
+ * 
+ * <p>Java class for UnsignedRequestStaticHeaderType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UnsignedRequestStaticHeaderType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{urn:org:ebics:H004}StaticHeaderBaseType">
+ *       &lt;sequence>
+ *         &lt;element name="HostID" type="{urn:org:ebics:H004}HostIDType"/>
+ *         &lt;element name="Nonce" type="{urn:org:ebics:H004}NonceType" 
maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="Timestamp" 
type="{urn:org:ebics:H004}TimestampType" maxOccurs="0" minOccurs="0"/>
+ *         &lt;element name="PartnerID" 
type="{urn:org:ebics:H004}PartnerIDType"/>
+ *         &lt;element name="UserID" type="{urn:org:ebics:H004}UserIDType"/>
+ *         &lt;element name="SystemID" type="{urn:org:ebics:H004}UserIDType" 
minOccurs="0"/>
+ *         &lt;element name="Product" 
type="{urn:org:ebics:H004}ProductElementType" minOccurs="0"/>
+ *         &lt;element name="OrderDetails" 
type="{urn:org:ebics:H004}UnsignedReqOrderDetailsType"/>
+ *         &lt;element name="SecurityMedium" 
type="{urn:org:ebics:H004}SecurityMediumType"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsignedRequestStaticHeaderType")
+public class UnsignedRequestStaticHeaderType
+    extends StaticHeaderBaseType
+{
+
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserInfoType.java
similarity index 50%
rename from 
sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java
rename to 
sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserInfoType.java
index 19e3b07..3333da4 100644
--- a/sandbox/src/main/java/tech/libeufin/messages/HEVResponseDataType.java
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserInfoType.java
@@ -1,36 +1,52 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
 
-package tech.libeufin.messages;
+
+package tech.libeufin.messages.ebics.keyrequest;
 
 import java.util.ArrayList;
 import java.util.List;
-import javax.xml.bind.annotation.*;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
 import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.w3c.dom.Element;
 
 
 /**
- * Data type for Request data
+ * Datentyp für VEU-Teilnehmerinformationen (HKD, HTD).
  * 
- * <p>Java class for HEVResponseDataType complex type.
+ * <p>Java class for UserInfoType complex type.
  * 
  * <p>The following schema fragment specifies the expected content contained 
within this class.
  * 
  * <pre>
- * &lt;complexType name="HEVResponseDataType">
+ * &lt;complexType name="UserInfoType">
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
  *       &lt;sequence>
- *         &lt;element name="SystemReturnCode" 
type="{http://www.ebics.org/H000}SystemReturnCodeType"/>
- *         &lt;element name="VersionNumber" maxOccurs="unbounded" 
minOccurs="0">
+ *         &lt;element name="UserID">
  *           &lt;complexType>
  *             &lt;simpleContent>
- *               &lt;extension 
base="&lt;http://www.ebics.org/H000>VersionNumberType">
- *                 &lt;attribute name="ProtocolVersion" use="required" 
type="{http://www.ebics.org/H000}ProtocolVersionType"; />
+ *               &lt;extension base="&lt;urn:org:ebics:H004>UserIDType">
+ *                 &lt;attribute name="Status" use="required" 
type="{urn:org:ebics:H004}UserStatusType" />
  *               &lt;/extension>
  *             &lt;/simpleContent>
  *           &lt;/complexType>
  *         &lt;/element>
+ *         &lt;element name="Name" type="{urn:org:ebics:H004}NameType" 
minOccurs="0"/>
+ *         &lt;element name="Permission" 
type="{urn:org:ebics:H004}UserPermissionType" maxOccurs="unbounded"/>
  *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
@@ -41,72 +57,100 @@ import org.w3c.dom.Element;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "HEVResponseDataType", namespace = 
"http://www.ebics.org/H000";, propOrder = {
-    "systemReturnCode",
-    "versionNumber",
+@XmlType(name = "UserInfoType", propOrder = {
+    "userID",
+    "name",
+    "permission",
     "any"
 })
-@XmlRootElement(name = "ebicsHEVResponse")
-public class HEVResponseDataType {
+public class UserInfoType {
 
-    @XmlElement(name = "SystemReturnCode", namespace = 
"http://www.ebics.org/H000";, required = true)
-    protected SystemReturnCodeType systemReturnCode;
-    @XmlElement(name = "VersionNumber", namespace = 
"http://www.ebics.org/H000";)
-    protected List<HEVResponseDataType.VersionNumber> versionNumber;
+    @XmlElement(name = "UserID", required = true)
+    protected UserInfoType.UserID userID;
+    @XmlElement(name = "Name")
+    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
+    @XmlSchemaType(name = "normalizedString")
+    protected String name;
+    @XmlElement(name = "Permission", required = true)
+    protected List<UserPermissionType> permission;
     @XmlAnyElement(lax = true)
     protected List<Object> any;
 
     /**
-     * Gets the value of the systemReturnCode property.
+     * Gets the value of the userID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link UserInfoType.UserID }
+     *     
+     */
+    public UserInfoType.UserID getUserID() {
+        return userID;
+    }
+
+    /**
+     * Sets the value of the userID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link UserInfoType.UserID }
+     *     
+     */
+    public void setUserID(UserInfoType.UserID value) {
+        this.userID = value;
+    }
+
+    /**
+     * Gets the value of the name property.
      * 
      * @return
      *     possible object is
-     *     {@link SystemReturnCodeType }
+     *     {@link String }
      *     
      */
-    public SystemReturnCodeType getSystemReturnCode() {
-        return systemReturnCode;
+    public String getName() {
+        return name;
     }
 
     /**
-     * Sets the value of the systemReturnCode property.
+     * Sets the value of the name property.
      * 
      * @param value
      *     allowed object is
-     *     {@link SystemReturnCodeType }
+     *     {@link String }
      *     
      */
-    public void setSystemReturnCode(SystemReturnCodeType value) {
-        this.systemReturnCode = value;
+    public void setName(String value) {
+        this.name = value;
     }
 
     /**
-     * Gets the value of the versionNumber property.
+     * Gets the value of the permission property.
      * 
      * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the 
versionNumber property.
+     * This is why there is not a <CODE>set</CODE> method for the permission 
property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
      * <pre>
-     *    getVersionNumber().add(newItem);
+     *    getPermission().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link HEVResponseDataType.VersionNumber }
+     * {@link UserPermissionType }
      * 
      * 
      */
-    public List<HEVResponseDataType.VersionNumber> getVersionNumber() {
-        if (versionNumber == null) {
-            versionNumber = new ArrayList<HEVResponseDataType.VersionNumber>();
+    public List<UserPermissionType> getPermission() {
+        if (permission == null) {
+            permission = new ArrayList<UserPermissionType>();
         }
-        return this.versionNumber;
+        return this.permission;
     }
 
     /**
@@ -127,8 +171,8 @@ public class HEVResponseDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
@@ -148,8 +192,8 @@ public class HEVResponseDataType {
      * <pre>
      * &lt;complexType>
      *   &lt;simpleContent>
-     *     &lt;extension 
base="&lt;http://www.ebics.org/H000>VersionNumberType">
-     *       &lt;attribute name="ProtocolVersion" use="required" 
type="{http://www.ebics.org/H000}ProtocolVersionType"; />
+     *     &lt;extension base="&lt;urn:org:ebics:H004>UserIDType">
+     *       &lt;attribute name="Status" use="required" 
type="{urn:org:ebics:H004}UserStatusType" />
      *     &lt;/extension>
      *   &lt;/simpleContent>
      * &lt;/complexType>
@@ -161,17 +205,16 @@ public class HEVResponseDataType {
     @XmlType(name = "", propOrder = {
         "value"
     })
-    public static class VersionNumber {
+    public static class UserID {
 
         @XmlValue
         @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
         protected String value;
-        @XmlAttribute(name = "ProtocolVersion", required = true)
-        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-        protected String protocolVersion;
+        @XmlAttribute(name = "Status", required = true)
+        protected int status;
 
         /**
-         * Datatype for a release number 
+         * Datentyp für eine Teilnehmer-ID.
          * 
          * @return
          *     possible object is
@@ -195,27 +238,19 @@ public class HEVResponseDataType {
         }
 
         /**
-         * Gets the value of the protocolVersion property.
+         * Gets the value of the status property.
          * 
-         * @return
-         *     possible object is
-         *     {@link String }
-         *     
          */
-        public String getProtocolVersion() {
-            return protocolVersion;
+        public int getStatus() {
+            return status;
         }
 
         /**
-         * Sets the value of the protocolVersion property.
+         * Sets the value of the status property.
          * 
-         * @param value
-         *     allowed object is
-         *     {@link String }
-         *     
          */
-        public void setProtocolVersion(String value) {
-            this.protocolVersion = value;
+        public void setStatus(int value) {
+            this.status = value;
         }
 
     }
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserPermissionType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserPermissionType.java
new file mode 100644
index 0000000..9c4f3c2
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserPermissionType.java
@@ -0,0 +1,258 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * Datentyp für VEU-Berechtigungsinformationen des Teilnehmers (HKD, HTD).
+ * 
+ * <p>Java class for UserPermissionType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UserPermissionType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="OrderTypes" 
type="{urn:org:ebics:H004}OrderTListType"/>
+ *         &lt;element name="FileFormat" 
type="{urn:org:ebics:H004}FileFormatType" minOccurs="0"/>
+ *         &lt;element name="AccountID" 
type="{urn:org:ebics:H004}AccountIDType" minOccurs="0"/>
+ *         &lt;element name="MaxAmount" type="{urn:org:ebics:H004}AmountType" 
minOccurs="0"/>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="AuthorisationLevel" 
type="{urn:org:ebics:H004}AuthorisationLevelType" />
+ *       &lt;anyAttribute namespace='urn:org:ebics:H004'/>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UserPermissionType", propOrder = {
+    "orderTypes",
+    "fileFormat",
+    "accountID",
+    "maxAmount",
+    "any"
+})
+public class UserPermissionType {
+
+    @XmlList
+    @XmlElement(name = "OrderTypes", required = true)
+    protected List<String> orderTypes;
+    @XmlElement(name = "FileFormat")
+    protected FileFormatType fileFormat;
+    @XmlElement(name = "AccountID")
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlSchemaType(name = "token")
+    protected String accountID;
+    @XmlElement(name = "MaxAmount")
+    protected AmountType maxAmount;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+    @XmlAttribute(name = "AuthorisationLevel")
+    protected AuthorisationLevelType authorisationLevel;
+    @XmlAnyAttribute
+    private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+    /**
+     * Gets the value of the orderTypes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orderTypes 
property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderTypes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getOrderTypes() {
+        if (orderTypes == null) {
+            orderTypes = new ArrayList<String>();
+        }
+        return this.orderTypes;
+    }
+
+    /**
+     * Gets the value of the fileFormat property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public FileFormatType getFileFormat() {
+        return fileFormat;
+    }
+
+    /**
+     * Sets the value of the fileFormat property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FileFormatType }
+     *     
+     */
+    public void setFileFormat(FileFormatType value) {
+        this.fileFormat = value;
+    }
+
+    /**
+     * Gets the value of the accountID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAccountID() {
+        return accountID;
+    }
+
+    /**
+     * Sets the value of the accountID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAccountID(String value) {
+        this.accountID = value;
+    }
+
+    /**
+     * Gets the value of the maxAmount property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AmountType }
+     *     
+     */
+    public AmountType getMaxAmount() {
+        return maxAmount;
+    }
+
+    /**
+     * Sets the value of the maxAmount property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AmountType }
+     *     
+     */
+    public void setMaxAmount(AmountType value) {
+        this.maxAmount = value;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+    /**
+     * Gets the value of the authorisationLevel property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthorisationLevelType }
+     *     
+     */
+    public AuthorisationLevelType getAuthorisationLevel() {
+        return authorisationLevel;
+    }
+
+    /**
+     * Sets the value of the authorisationLevel property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthorisationLevelType }
+     *     
+     */
+    public void setAuthorisationLevel(AuthorisationLevelType value) {
+        this.authorisationLevel = value;
+    }
+
+    /**
+     * Gets a map that contains attributes that aren't bound to any typed 
property on this class.
+     * 
+     * <p>
+     * the map is keyed by the name of the attribute and 
+     * the value is the string value of the attribute.
+     * 
+     * the map returned by this method is live, and you can add new attribute
+     * by updating the map directly. Because of this design, there's no setter.
+     * 
+     * 
+     * @return
+     *     always non-null
+     */
+    public Map<QName, String> getOtherAttributes() {
+        return otherAttributes;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserSignatureDataSigBookType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserSignatureDataSigBookType.java
new file mode 100644
index 0000000..9e640db
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/UserSignatureDataSigBookType.java
@@ -0,0 +1,211 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.w3c.dom.Element;
+
+
+/**
+ * Data type for digital signature data transferred using EBICS.
+ * 
+ * <p>Java class for UserSignatureDataSigBookType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="UserSignatureDataSigBookType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;choice maxOccurs="unbounded">
+ *           &lt;element name="OrderSignature">
+ *             &lt;complexType>
+ *               &lt;simpleContent>
+ *                 &lt;extension 
base="&lt;http://www.ebics.org/S001>OrderSignatureType">
+ *                   &lt;attribute name="PartnerID" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anySimpleType"; />
+ *                 &lt;/extension>
+ *               &lt;/simpleContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="OrderSignatureData" 
type="{http://www.ebics.org/S001}OrderSignatureDataType"/>
+ *         &lt;/choice>
+ *         &lt;any processContents='lax' namespace='##other' 
maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UserSignatureDataSigBookType", namespace = 
"http://www.ebics.org/S001";, propOrder = {
+    "orderSignatureOrOrderSignatureData",
+    "any"
+})
+public class UserSignatureDataSigBookType {
+
+    @XmlElements({
+        @XmlElement(name = "OrderSignature", type = 
UserSignatureDataSigBookType.OrderSignature.class),
+        @XmlElement(name = "OrderSignatureData", type = 
OrderSignatureDataType.class)
+    })
+    protected List<Object> orderSignatureOrOrderSignatureData;
+    @XmlAnyElement(lax = true)
+    protected List<Object> any;
+
+    /**
+     * Gets the value of the orderSignatureOrOrderSignatureData property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
orderSignatureOrOrderSignatureData property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrderSignatureOrOrderSignatureData().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link UserSignatureDataSigBookType.OrderSignature }
+     * {@link OrderSignatureDataType }
+     * 
+     * 
+     */
+    public List<Object> getOrderSignatureOrOrderSignatureData() {
+        if (orderSignatureOrOrderSignatureData == null) {
+            orderSignatureOrOrderSignatureData = new ArrayList<Object>();
+        }
+        return this.orderSignatureOrOrderSignatureData;
+    }
+
+    /**
+     * Gets the value of the any property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the any property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAny().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Element }
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getAny() {
+        if (any == null) {
+            any = new ArrayList<Object>();
+        }
+        return this.any;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension 
base="&lt;http://www.ebics.org/S001>OrderSignatureType">
+     *       &lt;attribute name="PartnerID" use="required" 
type="{http://www.w3.org/2001/XMLSchema}anySimpleType"; />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class OrderSignature {
+
+        @XmlValue
+        protected byte[] value;
+        @XmlAttribute(name = "PartnerID", required = true)
+        @XmlSchemaType(name = "anySimpleType")
+        protected String partnerID;
+
+        /**
+         * Datentyp für kryptographische Unterschriften.
+         * 
+         * @return
+         *     possible object is
+         *     byte[]
+         */
+        public byte[] getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     byte[]
+         */
+        public void setValue(byte[] value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the partnerID property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getPartnerID() {
+            return partnerID;
+        }
+
+        /**
+         * Sets the value of the partnerID property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setPartnerID(String value) {
+            this.partnerID = value;
+        }
+
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509DataType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509DataType.java
new file mode 100644
index 0000000..8121653
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509DataType.java
@@ -0,0 +1,100 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for X509DataType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="X509DataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence maxOccurs="unbounded">
+ *         &lt;choice>
+ *           &lt;element name="X509IssuerSerial" 
type="{http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType"/>
+ *           &lt;element name="X509SKI" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *           &lt;element name="X509SubjectName" 
type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *           &lt;element name="X509Certificate" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *           &lt;element name="X509CRL" 
type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ *           &lt;any processContents='lax' namespace='##other'/>
+ *         &lt;/choice>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509DataType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "x509IssuerSerialOrX509SKIOrX509SubjectName"
+})
+public class X509DataType {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "X509IssuerSerial", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "X509SKI", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "X509CRL", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "X509Certificate", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false),
+        @XmlElementRef(name = "X509SubjectName", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, type = JAXBElement.class, required = 
false)
+    })
+    @XmlAnyElement(lax = true)
+    protected List<Object> x509IssuerSerialOrX509SKIOrX509SubjectName;
+
+    /**
+     * Gets the value of the x509IssuerSerialOrX509SKIOrX509SubjectName 
property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the 
x509IssuerSerialOrX509SKIOrX509SubjectName property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getX509IssuerSerialOrX509SKIOrX509SubjectName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link Element }
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link Object }
+     * 
+     * 
+     */
+    public List<Object> getX509IssuerSerialOrX509SKIOrX509SubjectName() {
+        if (x509IssuerSerialOrX509SKIOrX509SubjectName == null) {
+            x509IssuerSerialOrX509SKIOrX509SubjectName = new 
ArrayList<Object>();
+        }
+        return this.x509IssuerSerialOrX509SKIOrX509SubjectName;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509IssuerSerialType.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509IssuerSerialType.java
new file mode 100644
index 0000000..6f25275
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/X509IssuerSerialType.java
@@ -0,0 +1,98 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+
+package tech.libeufin.messages.ebics.keyrequest;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for X509IssuerSerialType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="X509IssuerSerialType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;sequence>
+ *         &lt;element name="X509IssuerName" 
type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="X509SerialNumber" 
type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509IssuerSerialType", namespace = 
"http://www.w3.org/2000/09/xmldsig#";, propOrder = {
+    "x509IssuerName",
+    "x509SerialNumber"
+})
+public class X509IssuerSerialType {
+
+    @XmlElement(name = "X509IssuerName", required = true)
+    protected String x509IssuerName;
+    @XmlElement(name = "X509SerialNumber", required = true)
+    protected BigInteger x509SerialNumber;
+
+    /**
+     * Gets the value of the x509IssuerName property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getX509IssuerName() {
+        return x509IssuerName;
+    }
+
+    /**
+     * Sets the value of the x509IssuerName property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setX509IssuerName(String value) {
+        this.x509IssuerName = value;
+    }
+
+    /**
+     * Gets the value of the x509SerialNumber property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getX509SerialNumber() {
+        return x509SerialNumber;
+    }
+
+    /**
+     * Sets the value of the x509SerialNumber property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setX509SerialNumber(BigInteger value) {
+        this.x509SerialNumber = value;
+    }
+
+}
diff --git 
a/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/package-info.java
 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/package-info.java
new file mode 100644
index 0000000..07adc98
--- /dev/null
+++ 
b/sandbox/src/main/java/tech/libeufin/messages/ebics/keyrequest/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) 
Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb";>http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the 
source schema. 
+// Generated on: 2019.10.10 at 06:36:01 PM CEST 
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "urn:org:ebics:H004", 
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package tech.libeufin.messages.ebics.keyrequest;
diff --git a/sandbox/src/main/kotlin/HEVResponse.kt 
b/sandbox/src/main/kotlin/HEVResponse.kt
index 4610cb3..363cec2 100644
--- a/sandbox/src/main/kotlin/HEVResponse.kt
+++ b/sandbox/src/main/kotlin/HEVResponse.kt
@@ -1,8 +1,8 @@
 package tech.libeufin.sandbox
 
-import tech.libeufin.messages.HEVResponseDataType
-import tech.libeufin.messages.ObjectFactory
-import tech.libeufin.messages.SystemReturnCodeType
+import tech.libeufin.messages.ebics.hev.HEVResponseDataType
+import tech.libeufin.messages.ebics.hev.ObjectFactory
+import tech.libeufin.messages.ebics.hev.SystemReturnCodeType
 import javax.xml.bind.JAXBElement
 
 /**
diff --git a/sandbox/src/main/kotlin/Main.kt b/sandbox/src/main/kotlin/Main.kt
index 021c6c4..1903d5d 100644
--- a/sandbox/src/main/kotlin/Main.kt
+++ b/sandbox/src/main/kotlin/Main.kt
@@ -39,7 +39,7 @@ import io.ktor.server.netty.Netty
 import org.jetbrains.exposed.sql.transactions.transaction
 import org.slf4j.LoggerFactory
 import org.w3c.dom.Document
-import tech.libeufin.messages.HEVResponseDataType
+import tech.libeufin.messages.ebics.hev.HEVResponseDataType
 import java.text.DateFormat
 import javax.xml.bind.JAXBElement
 
@@ -188,7 +188,10 @@ private suspend fun ApplicationCall.ebicsweb() {
             )
 
             val jaxbHEV: JAXBElement<HEVResponseDataType> = 
hevResponse.makeHEVResponse()
-            val responseText: String? = xmlProcess.getStringFromJaxb(jaxbHEV)
+            val responseText: String? = xmlProcess.getStringFromJaxb(
+                "tech.libeufin.messages.ebics.hev",
+                jaxbHEV
+            )
 
             respondText(
                 contentType = ContentType.Application.Xml,
diff --git a/sandbox/src/main/kotlin/XML.kt b/sandbox/src/main/kotlin/XML.kt
index f7cc319..6567450 100644
--- a/sandbox/src/main/kotlin/XML.kt
+++ b/sandbox/src/main/kotlin/XML.kt
@@ -168,18 +168,37 @@ class XML {
         return this.validate(xmlSource)
     }
 
+    /**
+     * Convert a DOM document - of a XML document - to the JAXB representation.
+     *
+     * @param packageName the package containing the ObjectFactory used to
+     *        instantiate the wanted object.
+     * @param document the document to convert into JAXB.
+     * @return the JAXB object reflecting the original XML document.
+     */
+    fun convertDomToJaxb(packageName: String, document: Document): Any {
+
+        val jc = JAXBContext.newInstance(packageName)
+
+        /* Marshalling the object into the document.  */
+        val m = jc.createUnmarshaller()
+        return m.unmarshal(document) // document "went" into Jaxb
+    }
+
     /**
      * Return the DOM representation of the Java object, using the JAXB
      * interface.  FIXME: narrow input type to JAXB type!
      *
+     * @param packageName the package containing the ObjectFactory used to
+     *        instantiate the wanted object.
      * @param object to be transformed into DOM.  Typically, the object
      *               has already got its setters called.
      * @return the DOM Document, or null (if errors occur).
      */
-    fun convertJaxbToDom(obj: JAXBElement<Unit>): Document? {
+    fun convertJaxbToDom(packageName: String, obj: JAXBElement<Unit>): 
Document? {
 
         try {
-            val jc = JAXBContext.newInstance("tech.libeufin.messages")
+            val jc = JAXBContext.newInstance(packageName)
 
             /* Make the target document.  */
             val dbf = DocumentBuilderFactory.newInstance()
@@ -232,14 +251,16 @@ class XML {
     /**
      * Extract String from JAXB.
      *
+     * @param packageName the package containing the ObjectFactory used to
+     *        instantiate the wanted object.
      * @param obj the JAXB instance
      * @return String representation of @a object, or null if errors occur
      */
-    fun <T> getStringFromJaxb(obj: JAXBElement<T>): String? {
+    fun <T> getStringFromJaxb(packageName: String, obj: JAXBElement<T>): 
String? {
         val sw = StringWriter()
 
         try {
-            val jc = JAXBContext.newInstance("tech.libeufin.messages")
+            val jc = JAXBContext.newInstance(packageName)
             /* Getting the string.  */
             val m = jc.createMarshaller()
             m.marshal(obj, sw)
diff --git a/sandbox/src/test/kotlin/DomToJaxbTest.kt 
b/sandbox/src/test/kotlin/DomToJaxbTest.kt
new file mode 100644
index 0000000..0ebe3f6
--- /dev/null
+++ b/sandbox/src/test/kotlin/DomToJaxbTest.kt
@@ -0,0 +1,29 @@
+package tech.libeufin.sandbox
+
+import org.junit.Test
+import org.w3c.dom.Element
+import tech.libeufin.messages.ebics.keyrequest.OrderDetailsType
+import tech.libeufin.messages.ebics.keyrequest.UnsecuredReqOrderDetailsType
+
+class DomToJaxbTest {
+
+    @Test
+    fun domToJaxb() {
+
+        val processor = XML()
+        val classLoader = ClassLoader.getSystemClassLoader()
+        val ini = classLoader.getResource("ebics_ini_request_sample.xml")
+        val iniDom = processor.parseStringIntoDom(ini.readText())
+        val x: Element = iniDom?.getElementsByTagName("OrderDetails")?.item(0) 
as Element
+
+        x.setAttributeNS(
+            "http://www.w3.org/2001/XMLSchema-instance";,
+            "type",
+            "UnsecuredReqOrderDetailsType"
+        )
+
+        processor.convertDomToJaxb(
+            "tech.libeufin.messages.ebics.keyrequest",
+            iniDom)
+    }
+}
\ No newline at end of file
diff --git a/sandbox/src/test/resources/ebics_ini_request_sample.xml 
b/sandbox/src/test/resources/ebics_ini_request_sample.xml
index 6529b6c..d269151 100644
--- a/sandbox/src/test/resources/ebics_ini_request_sample.xml
+++ b/sandbox/src/test/resources/ebics_ini_request_sample.xml
@@ -5,6 +5,20 @@
       <HostID>foo</HostID>
       <PartnerID>flokid</PartnerID>
       <UserID>flouid</UserID>
+      <!--
+
+      Such a not allowed renaming like this fixes the import of DOM into JAXB.
+
+      <UnsecuredReqOrderDetails>
+        <OrderType>INI</OrderType>
+        <OrderAttribute>DZNNN</OrderAttribute>
+      </UnsecuredReqOrderDetails
+
+      Also putting the following attribute on OrderDetails fixes it.
+
+       xsi:type="UnsecuredReqOrderDetailsType"
+
+      -->
       <OrderDetails>
         <OrderType>INI</OrderType>
         <OrderAttribute>DZNNN</OrderAttribute>

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]