gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] 02/02: gana forms are now defined in code


From: gnunet
Subject: [taler-wallet-core] 02/02: gana forms are now defined in code
Date: Sun, 05 Jan 2025 19:53:44 +0100

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

sebasjm pushed a commit to branch master
in repository wallet-core.

commit d19de01aab70596c6944c4f0a6be2059e10d80a6
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Sun Jan 5 15:53:04 2025 -0300

    gana forms are now defined in code
---
 packages/kyc-ui/src/forms/VQF_902_1.ts             |  498 ++++++
 packages/kyc-ui/src/forms/VQF_902_11.ts            |  141 ++
 packages/kyc-ui/src/forms/VQF_902_12.ts            |  386 +++++
 packages/kyc-ui/src/forms/VQF_902_13.ts            |  385 +++++
 packages/kyc-ui/src/forms/VQF_902_14.ts            |  139 ++
 packages/kyc-ui/src/forms/VQF_902_15.ts            |  130 ++
 packages/kyc-ui/src/forms/VQF_902_4.ts             |  283 ++++
 packages/kyc-ui/src/forms/VQF_902_5.ts             |  194 +++
 packages/kyc-ui/src/forms/VQF_902_9.ts             |  129 ++
 packages/kyc-ui/src/forms/accept-tos.ts            |   58 +-
 packages/kyc-ui/src/forms/ganaForms.ts             |  288 ----
 packages/kyc-ui/src/forms/index.ts                 |   69 +-
 .../kyc-ui/src/forms/taler_aml_attributes.json     | 1661 --------------------
 packages/kyc-ui/src/forms/taler_aml_attributes.ts  |  745 +++++----
 packages/kyc-ui/src/hooks/form.ts                  |   33 +-
 packages/kyc-ui/src/pages/FillForm.tsx             |   18 +-
 packages/kyc-ui/src/pages/Start.tsx                |   29 +-
 packages/kyc-ui/src/pages/TriggerKyc.tsx           |   56 +-
 18 files changed, 2917 insertions(+), 2325 deletions(-)

diff --git a/packages/kyc-ui/src/forms/VQF_902_1.ts 
b/packages/kyc-ui/src/forms/VQF_902_1.ts
new file mode 100644
index 000000000..a99852d62
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_1.ts
@@ -0,0 +1,498 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+  SelectUiChoice,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+
+export function countryList(i18n: InternationalizationAPI): SelectUiChoice[] {
+  return [
+    { label: i18n.str`AR`, value: "AR" },
+    { label: i18n.str`DE`, value: "DE" },
+  ];
+}
+
+export function VQF_902_1(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_1 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Information on customer`,
+        description: i18n.str`The customer is the person with whom the member 
concludes the contract with regard to the financial service provided (civil 
law). Does the member act as director of a domiciliary company, this 
domiciliary company is the customer.`,
+        fields: [
+          {
+            id: "CUSTOMER_NATURAL_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_RESIDENTIAL" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Residential address`,
+            // gana_type: "ResidentialAddress",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_PHONE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Telephone`,
+            // gana_type: "Phone",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_NATURAL_EMAIL" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`E-mail`,
+            // gana_type: "Email",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_NATURAL_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Date of birth`,
+            // gana_type: "AbsoluteDate",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy",
+            pattern: "dd/MM/yyyy",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Nationality`,
+            // gana_type: "CountryCode",
+            type: "selectOne",
+            choices: countryList(i18n),
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_NATIONAL_ID" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Identification document`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_NATIONAL_ID_COPY" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Picture of identification document`,
+            // gana_type: "File",
+            type: "file",
+            accept: "application/pdf",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_NATURAL_COMPANY_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Company name`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_NATURAL_REGISTERED_OFFICE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Registered office`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_NATURAL_COMPANY_ID" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Company identification document`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_NATURAL_COMPANY_ID_COPY" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Picture of company identification document`,
+            // gana_type: "File",
+            type: "file",
+            accept: "application/pdf",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_ENTITY_COMPANY_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Company name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_ENTITY_ADDRESS" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Domicile`,
+            // gana_type: "BusinessAddress",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_ENTITY_CONTACT_PERSON_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Contact person`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_ENTITY_PHONE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Telephone`,
+            // gana_type: "Phone",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_ENTITY_EMAIL" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`E-mail`,
+            // gana_type: "Email",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "CUSTOMER_ENTITY_ID" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Identification document`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "CUSTOMER_ENTITY_ID_COPY" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Picutre of identification document`,
+            // gana_type: "File",
+            type: "file",
+            accept: "application/pdf",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Information on the natural persons who establish the 
business relationship for legal entities and partnerships`,
+        description: i18n.str`For legal entities and partnerships the identity 
of the natural persons who establish the business relationship must be 
verified.`,
+        fields: [
+          {
+            id: "FOUNDER_LIST" satisfies keyof TalerAmlAttributes.VQF_902_1 as 
UIHandlerId,
+            label: i18n.str`Founders`,
+            // gana_type: "Form<VQF_902_1_founder>[]",
+            type: "array",
+            labelFieldId:
+              "FOUNDER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+            fields: [
+              {
+                id: "FOUNDER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Full name`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDER_RESIDENTIAL_ADDRESS" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Residential address`,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+              {
+                id: "FOUNDER_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Date of birth`,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDER_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Nationality`,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "FOUNDER_AUTHORIZATION_TYPE" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Type of authorization`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDER_NATIONAL_ID" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Identification document`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDER_NATIONAL_COPY" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Picutre of identification document`,
+                // gana_type: "File",
+                type: "file",
+                accept: "application/pdf",
+
+                required: true,
+              },
+              {
+                id: "FOUNDER_POWER_OF_ATTORNEY" satisfies keyof 
TalerAmlAttributes.VQF_902_1_founder as UIHandlerId,
+                label: i18n.str`Power of attorney arrangements`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Acceptance of business relationship`,
+        fields: [
+          {
+            id: "ACCEPTANCE_DATE" satisfies keyof TalerAmlAttributes.VQF_902_1 
as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDate",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy",
+            pattern: "dd/MM/yyyy",
+            required: false,
+          },
+          {
+            id: "ACCEPTANCE_METHOD" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Accepted by`,
+            // gana_type: "String",
+            type: "choiceStacked",
+            choices: [
+              {
+                value:
+                  "FACE_TO_FACE" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_METHOD"],
+                label: i18n.str`Face to face`,
+              },
+              {
+                value:
+                  "AUTHENTICATED_COPY" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_METHOD"],
+                label: i18n.str`Authenticated copy`,
+              },
+              {
+                value:
+                  "RESIDENTIAL_ADDRESS_VALIDATED" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_METHOD"],
+                label: i18n.str`Residentail address validated`,
+              },
+            ],
+            required: false,
+          },
+          {
+            id: "ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Type of correspondence service`,
+            // gana_type: "String",
+            type: "choiceStacked",
+            choices: [
+              {
+                value:
+                  "HOLD_AT_BANK" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE"],
+                label: i18n.str`Hold at a bank`,
+              },
+              {
+                value:
+                  "TO_A_THIRD_PARTY" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE"],
+                label: i18n.str`To a third party`,
+              },
+              {
+                value:
+                  "TO_THE_CUSTOMER" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE"],
+                label: i18n.str`To the customer`,
+              },
+              {
+                value:
+                  "TO_THE_MEMBER" satisfies 
TalerAmlAttributes.VQF_902_1["ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE"],
+                label: i18n.str`To the member`,
+              },
+            ],
+            allowFreeForm: true,
+            required: false,
+          },
+          {
+            id: "ACCEPTANCE_LANGUAGE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Language`,
+            // gana_type: "LangCode",
+            type: "selectOne",
+            choices: [
+              {
+                value: "AR",
+                label: "ARG",
+              },
+              {
+                value: "DE",
+                label: "German",
+              },
+            ],
+            required: false,
+          },
+          {
+            id: "ACCEPTANCE_FURTHER_INFO" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Further information`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Information on the beneficial owner of the assets 
and/or controlling person`,
+        description: i18n.str`Establishment of the beneficial owner of the 
assets and/or controlling person`,
+        fields: [
+          {
+            id: "CUSTOMER_TYPE" satisfies keyof TalerAmlAttributes.VQF_902_1 
as UIHandlerId,
+            label: i18n.str`Customer type`,
+            // gana_type: "String",
+            type: "choiceStacked",
+            choices: [
+              {
+                value:
+                  "FOUNDATION" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Foundation`,
+              },
+              {
+                value:
+                  "LEGAL_ENTITY" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Legal entity`,
+              },
+              {
+                value:
+                  "LIFE_INSURANCE" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Life insurance`,
+              },
+              {
+                value:
+                  "NATURAL" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Natural person`,
+              },
+              {
+                value:
+                  "OTHER" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Other`,
+              },
+              {
+                value:
+                  "TRUST" satisfies 
TalerAmlAttributes.VQF_902_1["CUSTOMER_TYPE"],
+                label: i18n.str`Trust`,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Evaluation with regard to embargo procedures/terrorism 
lists on establishing the business relationship`,
+        description: i18n.str`Verification whether the customer, beneficial 
owners of the assets, controlling persons, authorized representatives or other 
involved persons are listed on an embargo/terrorism list (date of 
verification/result)`,
+        fields: [
+          {
+            id: "EMBARGO_TERRORISM_INFO" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Embargo information`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Relationship`,
+        fields: [
+          {
+            id: "RELATIONSHIP_TYPE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Type of business relationship`,
+            // gana_type: "'MONEY_EXCHANGE' | 'MONEY_ASSET_TRANSFER' | String",
+            type: "choiceStacked",
+            choices: [
+              {
+                value:
+                  "MONEY_EXCHANGE" satisfies 
TalerAmlAttributes.VQF_902_1["RELATIONSHIP_TYPE"],
+                label: i18n.str`Money exchange`,
+              },
+              {
+                value:
+                  "MONEY_ASSET_TRANSFER" satisfies 
TalerAmlAttributes.VQF_902_1["RELATIONSHIP_TYPE"],
+                label: i18n.str`Money asset transfer`,
+              },
+            ],
+            allowFreeForm: true,
+            required: false,
+          },
+          {
+            id: "RELATIONSHIP_PURPOSE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Purpose of the business relationship`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Enclosures`,
+        fields: [
+          {
+            id: "ENCLOSURE_CUSTOMER_DOCUMENTS" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Customer identification documents`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: false,
+          },
+          {
+            id: "ENCLOSURE_IDENTIFICATION_DOCUMENTS" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Customer identification documents`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: false,
+          },
+          {
+            id: "ENCLOSURE_BENEFICIAL_OWNER" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Customer identification documents`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: false,
+          },
+          {
+            id: "ENCLOSURE_CUSTOMER_PROFILE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Customer identification documents`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: false,
+          },
+          {
+            id: "ENCLOSURE_RISK_PROFILE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Customer identification documents`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: false,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_11.ts 
b/packages/kyc-ui/src/forms/VQF_902_11.ts
new file mode 100644
index 000000000..2bf5b705d
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_11.ts
@@ -0,0 +1,141 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+
+export function VQF_902_11(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_11 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Contracting partner`,
+        fields: [
+          {
+            id: "CONTROLLING_ENTITY_CONTRACTING_PARTNER" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str`Contracting partner`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`The contracting partner hereby declares that:`,
+        fields: [
+          {
+            id: "CONTROLLING_ENTITY_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "'25_MORE_RIGHTS' | 'OTHER_WAY' | 'DIRECTOR'",
+            type: "choiceStacked",
+            choices: [
+              {
+                value:
+                  "25_MORE_RIGHTS" satisfies 
TalerAmlAttributes.VQF_902_11["CONTROLLING_ENTITY_LEVEL"],
+                label: i18n.str`Holding 25% or more`,
+                description: i18n.str`the person listed below is holding 25% 
or more of the contracting partner's share (capital shares or voting rights)`,
+              },
+              {
+                value:
+                  "OTHER_WAY" satisfies 
TalerAmlAttributes.VQF_902_11["CONTROLLING_ENTITY_LEVEL"],
+                label: i18n.str`Other way`,
+                description: i18n.str`the contracting partner hereby declares 
that the person listed below is contrlling the contracting partner in other 
ways`,
+              },
+              {
+                value:
+                  "DIRECTOR" satisfies 
TalerAmlAttributes.VQF_902_11["CONTROLLING_ENTITY_LEVEL"],
+                label: i18n.str`Managing director`,
+                description: i18n.str`the contracting partner hereby declares 
that the person listed below is the managin director`,
+              },
+            ],
+            required: true,
+          },
+          {
+            id: "CONTROLLING_ENTITY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "CONTROLLING_ENTITY_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "ResidentialAddress",
+            type: "textArea",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Fiduciary holding assets`,
+        fields: [
+          {
+            id: "CONTROLLING_ENTITY_THIRD_PERSON" satisfies keyof 
TalerAmlAttributes.VQF_902_11 as UIHandlerId,
+            label: i18n.str`Is fiduciary?`,
+            help: i18n.str`Is a third person the beneficial owner of the 
assets held in the account/securities account?`,
+            // gana_type: "Boolean",
+            type: "toggle",
+            threeState: true,
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`The contracting partner hereby undertakes to inform 
automatically of any changes to the information contained herein.`,
+        description: i18n.str`It is a criminal offence to deliberately provide 
false information on this form (article 251 of the Swiss Criminal Code, 
documents forgery)`,
+        fields: [
+          {
+            id: "SIGNATURE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Signature`,
+            // gana_type: "AbsoluteDateTime",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "SIGN_DATE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "String",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_12.ts 
b/packages/kyc-ui/src/forms/VQF_902_12.ts
new file mode 100644
index 000000000..4fd9d2d4e
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_12.ts
@@ -0,0 +1,386 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+import { countryList } from "./VQF_902_1.js";
+
+export function VQF_902_12(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_12 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Contracing partner`,
+        fields: [
+          {
+            id: "FOUNDATION_CONTRACTING_PARTNER" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Contracting partner`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "FOUNDATION_KNOWN_AS" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`The foundation known as`,
+            // gana_type: "String",
+            type: "text",
+            // help:""
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Name and information pertaining to the foundation`,
+        fields: [
+          {
+            id: "FOUNDATION_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "FOUNDATION_DISCRETIONARY" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Type of foundation`,
+            // gana_type: "Boolean",
+            type: "choiceStacked",
+            choices: [
+              { label: i18n.str`Discretionary foundation`, value: "true" },
+              { label: i18n.str`Non-discretionary foundation`, value: "false" 
},
+            ],
+            required: true,
+          },
+          {
+            id: "FOUNDATION_REVOCABLE" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Revocability`,
+            // gana_type: "Boolean",
+            type: "choiceStacked",
+            choices: [
+              { label: i18n.str`Revolcable foundation`, value: "true" },
+              { label: i18n.str`Irrevocable foundation`, value: "false" },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Founders`,
+        description: i18n.str`Information pertaining to the (ultimate 
economic, not fiduciary) founder (individual or entity)`,
+        fields: [
+          {
+            id: "FOUNDATION_FOUNDER_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Founders`,
+            help: i18n.str``,
+            // gana_type: "Form<VQF_902_12_founder>[]",
+            type: "array",
+            labelFieldId:
+              "FOUNDATION_FOUNDER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+            fields: [
+              {
+                id: "FOUNDATION_FOUNDER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str`Full name`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_FOUNDER_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str`Domicile`,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_FOUNDER_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str`Birthdate`,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_FOUNDER_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str`Nationality`,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "FOUNDATION_FOUNDER_DEATHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_FOUNDER_RIGHT_TO_REVOKE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_founder as UIHandlerId,
+                label: i18n.str`Right to revoke`,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: true,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Pre-existing foundation`,
+        description: i18n.str`If the foundation results from the restructuring 
of pre-existing foundation (re-settlement) or the merger of pre-existing 
foundations, the following information pertaining to the (actual) founders of 
the pre-existing foundations has to be given`,
+        fields: [
+          {
+            id: "FOUNDATION_PRE_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_12_pre>[]",
+            type: "array",
+            labelFieldId:
+              "FOUNDATION_PRE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+            fields: [
+              {
+                id: "FOUNDATION_PRE_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_PRE_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str`Country`,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "FOUNDATION_PRE_DEATHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_PRE_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_PRE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str`Full name`,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_PRE_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_pre as UIHandlerId,
+                label: i18n.str`Nationality`,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Beneficiaries`,
+        description: i18n.str``,
+        fields: [
+          {
+            id: "FOUNDATION_BENEFICIARY_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Beneficiaries`,
+            // gana_type: "Form<VQF_902_12_beneficiary>[]",
+            type: "array",
+            labelFieldId:
+              "FOUNDATION_BENEFICIARY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+            fields: [
+              {
+                id: "FOUNDATION_BENEFICIARY_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: false,
+              },
+              {
+                id: "FOUNDATION_BENEFICIARY_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: false,
+              },
+              {
+                id: "FOUNDATION_BENEFICIARY_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: false,
+              },
+              {
+                id: "FOUNDATION_BENEFICIARY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: false,
+              },
+              {
+                id: "FOUNDATION_BENEFICIARY_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: false,
+              },
+              {
+                id: "FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM" satisfies keyof 
TalerAmlAttributes.VQF_902_12_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: false,
+              },
+            ],
+            required: true,
+          },
+          {
+            id: "FOUNDATION_BENEFICIARY_ADDITION" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Addition`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Further information`,
+        description: i18n.str`Information pertaining to (a) further persons 
having the right to determine or nominate representatives (e.g.) member of the 
foundation board), if these representatives may dispose over the assets or have 
the right to change the distribution of the assets or the nominaton of 
beneficiaries`,
+        fields: [
+          {
+            id: "FOUNDATION_REPRESENTATIVE_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_12 as UIHandlerId,
+            label: i18n.str`Representatives`,
+            // gana_type: "Form<VQF_902_12_representative>[]",
+            type: "array",
+            labelFieldId:
+              "FOUNDATION_REPRESENTATIVE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+            fields: [
+              {
+                id: "FOUNDATION_REPRESENTATIVE_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_REPRESENTATIVE_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str`Country`,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "FOUNDATION_REPRESENTATIVE_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_REPRESENTATIVE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "FOUNDATION_REPRESENTATIVE_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE" satisfies 
keyof TalerAmlAttributes.VQF_902_12_representative as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: true,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`The contracting partner hereby undertakes to inform 
automatically of any changes to the information contained herein.`,
+        description: i18n.str`It is a criminal offence to deliberately provide 
false information on this form (article 251 of the Swiss Criminal Code, 
documents forgery)`,
+        fields: [
+          {
+            id: "SIGNATURE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Signature`,
+            // gana_type: "AbsoluteDateTime",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "SIGN_DATE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "String",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_13.ts 
b/packages/kyc-ui/src/forms/VQF_902_13.ts
new file mode 100644
index 000000000..6189b1094
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_13.ts
@@ -0,0 +1,385 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+import { countryList } from "./VQF_902_1.js";
+
+export function VQF_902_13(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_13 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Contracing partner`,
+        fields: [
+          {
+            id: "TRUST_CONTRACTING_PARTNER" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "TRUST_KNOWN_AS" satisfies keyof TalerAmlAttributes.VQF_902_13 
as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Name and information pertaining to the trust`,
+        fields: [
+          {
+            id: "TRUST_DISCRETIONARY" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+          {
+            id: "TRUST_NAME" satisfies keyof TalerAmlAttributes.VQF_902_13 as 
UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "TRUST_REVOCABLE" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Settlor`,
+        description: i18n.str`Information pertaining to the (ultimate 
economic, not fiduciary) settlor of the trust (individual or entity)`,
+        fields: [
+          {
+            id: "TRUST_SETTLOR_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_13_settlor>[]",
+            type: "array",
+            labelFieldId:
+              "TRUST_SETTLOR_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+            fields: [
+              {
+                id: "TRUST_SETTLOR_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "TRUST_SETTLOR_DEATHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "TRUST_SETTLOR_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+              {
+                id: "TRUST_SETTLOR_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+
+                required: true,
+              },
+              {
+                id: "TRUST_SETTLOR_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: true,
+              },
+              {
+                id: "TRUST_SETTLOR_RIGHT_TO_REVOKE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_settlor as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: true,
+              },
+            ],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Pre-existing trust`,
+        description: i18n.str`If the trust results from the restructuring of 
pre-existing trust (re-settlement) or the merger of pre-existing trusts, the 
following information pertaining to the (actual) settlor of the pre-existing 
trusts has to be given`,
+        fields: [
+          {
+            id: "TRUST_PRE_LIST" satisfies keyof TalerAmlAttributes.VQF_902_13 
as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_13_pre>[]",
+            type: "array",
+            labelFieldId:
+              "TRUST_PRE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+            fields: [
+              {
+                id: "TRUST_PRE_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: false,
+              },
+              {
+                id: "TRUST_PRE_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+              {
+                id: "TRUST_PRE_DEATHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+
+                required: false,
+              },
+              {
+                id: "TRUST_PRE_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: false,
+              },
+              {
+                id: "TRUST_PRE_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: false,
+              },
+              {
+                id: "TRUST_PRE_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_pre as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+            ],
+
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Beneficiaries`,
+        description: i18n.str``,
+        fields: [
+          {
+            id: "TRUST_BENEFICIARY_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_13_beneficiary>[]",
+            type: "array",
+            labelFieldId:
+              "TRUST_BENEFICIARY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+            fields: [
+              {
+                id: "TRUST_BENEFICIARY_ADDITION" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Paragraph",
+                type: "textArea",
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+              {
+                id: "TRUST_BENEFICIARY_RIGHT_TO_CLAIM" satisfies keyof 
TalerAmlAttributes.VQF_902_13_beneficiary as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: false,
+              },
+            ],
+
+            required: true,
+          },
+          {
+            id: "TRUST_PROTECTOR_LIST" satisfies keyof 
TalerAmlAttributes.VQF_902_13 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_13_protector>[]",
+            type: "array",
+            labelFieldId:
+              "TRUST_PROTECTOR_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+            fields: [
+              {
+                id: "TRUST_PROTECTOR_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+
+                required: false,
+              },
+              {
+                id: "TRUST_PROTECTOR_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+              {
+                id: "TRUST_PROTECTOR_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: false,
+              },
+              {
+                id: "TRUST_PROTECTOR_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: false,
+              },
+              {
+                id: "TRUST_PROTECTOR_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+
+                required: false,
+              },
+              {
+                id: "TRUST_PROTECTOR_RIGHT_TO_REVOKE" satisfies keyof 
TalerAmlAttributes.VQF_902_13_protector as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "Boolean",
+                type: "toggle",
+                required: false,
+              },
+            ],
+
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`The contracting partner hereby undertakes to inform 
automatically of any changes to the information contained herein.`,
+        description: i18n.str`It is a criminal offence to deliberately provide 
false information on this form (article 251 of the Swiss Criminal Code, 
documents forgery)`,
+        fields: [
+          {
+            id: "SIGNATURE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Signature`,
+            // gana_type: "AbsoluteDateTime",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "SIGN_DATE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "String",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_14.ts 
b/packages/kyc-ui/src/forms/VQF_902_14.ts
new file mode 100644
index 000000000..c328f3641
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_14.ts
@@ -0,0 +1,139 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+
+export function VQF_902_14(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_14 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_14 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_14 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Reason for special clarifications`,
+        fields: [
+          {
+            id: "INCRISK_REASON" satisfies keyof TalerAmlAttributes.VQF_902_14 
as UIHandlerId,
+            label: i18n.str`Reason`,
+            help: i18n.str`Description of the circumstances/transactions, 
which triggered the special clarifications`,
+            // gana_type: "String",
+            type: "textArea",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Used means of clarification`,
+        fields: [
+          {
+            id: "INCRISK_MEANS" satisfies keyof TalerAmlAttributes.VQF_902_14 
as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "'GATHERING' | 'CONSULTATION' | 'ENQUIRIES' | 
String",
+            type: "choiceStacked",
+            choices: [
+              {
+                label: i18n.str`Gathering`,
+                value: "GATHERING",
+                description: i18n.str`Gathering of information from the 
customer, beneficial owner of the assets, controlling person`,
+              },
+              {
+                label: i18n.str`Gathering`,
+                value: "CONSULTATION",
+                description: i18n.str`Consultation of generally accessible 
sources and databases`,
+              },
+              {
+                label: i18n.str`Enquiries`,
+                value: "ENQUIRIES",
+                description: i18n.str`Enquiries with trustworthy persons`,
+              },
+            ],
+            allowFreeForm: true,
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Summary and plausbility check of the gathered 
information`,
+        description: i18n.str`The results of the clarifications have to be 
documented and their plausability has to be checked.`,
+        fields: [
+          {
+            id: "INCRISK_SUMMARY" satisfies keyof 
TalerAmlAttributes.VQF_902_14 as UIHandlerId,
+            label: i18n.str`Summary`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "INCRISK_DOCUMENTS" satisfies keyof 
TalerAmlAttributes.VQF_902_14 as UIHandlerId,
+            label: i18n.str`Gathered documentes`,
+            // gana_type: "File[]",
+            type: "array",
+            labelFieldId: "asd" as UIHandlerId,
+            fields: [],
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Result of the special clarification`,
+        fields: [
+          {
+            id: "INCRISK_RESULT" satisfies keyof TalerAmlAttributes.VQF_902_14 
as UIHandlerId,
+            label: i18n.str`Result`,
+            type: "choiceStacked",
+            choices: [
+              {
+                label: i18n.str`No suspicion`,
+                value: "NO_SUSPICION",
+                description: i18n.str`The plausibility of the circumstances 
could be checked, no reasonable suspicion pursuant to Art. 9 AMLA (possibly 
update of customer profile and/or risk profile)`,
+              },
+              {
+                label: i18n.str`Reasonable suspicion`,
+                value: "REASONABLE_SUSPICION",
+                description: i18n.str`Reasonable suspicion pursuant to Art. 9 
AMLA, duty to file a report with MROS`,
+              },
+              {
+                label: i18n.str`Simple suspicion`,
+                value: "SIMPLE_SUSPICION",
+                description: i18n.str`Simple suspicion pursuant to Art. 305 
Para. 2 StGB, right to notify MROS`,
+              },
+            ],
+            allowFreeForm: true,
+            required: true,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_15.ts 
b/packages/kyc-ui/src/forms/VQF_902_15.ts
new file mode 100644
index 000000000..731f5c0cf
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_15.ts
@@ -0,0 +1,130 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+import { countryList } from "./VQF_902_1.js";
+
+export function VQF_902_15(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_15 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Contracting partner`,
+        fields: [
+          {
+            id: "INSURANCE_CONTRACTING_PARTNER" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Contracting partner`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Relationship`,
+        description: i18n.str`Information about the contractua relationship 
between the contracting party and the financial intermediary`,
+        fields: [
+          {
+            id: "INSURANCE_RELATIONSHIP_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            id: "INSURANCE_RELATIONSHIP_POLICY" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Insurance policy`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+          },
+          {
+            type: "caption",
+            label: i18n.str`The contracting partner confirms in accordance 
with the Art. 41a SRO Regulations that it is a licensed and state-surpervised 
insurance company and that it has entered into the above-mentioned contractal 
relationship the assets connected to the life insurance policy also mentioned 
above.`,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Policy holder`,
+        fields: [
+          {
+            id: "INSURANCE_HOLDER_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str`Birthdate`,
+            // gana_type: "AbsoluteDate",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy",
+            pattern: "dd/MM/yyyy",
+            required: true,
+          },
+          {
+            id: "INSURANCE_HOLDER_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "ResidentialAddress",
+            type: "textArea",
+            required: true,
+          },
+          {
+            id: "INSURANCE_HOLDER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "INSURANCE_HOLDER_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_15 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "CountryCode",
+            type: "selectOne",
+            choices: countryList(i18n),
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Nature and purpose of the business relationship`,
+        fields: [],
+      },
+      {
+        title: i18n.str`Relationship with third parties`,
+        fields: [],
+      },
+      {
+        title: i18n.str`Further information`,
+        fields: [],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_4.ts 
b/packages/kyc-ui/src/forms/VQF_902_4.ts
new file mode 100644
index 000000000..daaa78e16
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_4.ts
@@ -0,0 +1,283 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+
+export function VQF_902_4(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_1 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_1 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Evaluation of politically exposed persons (PEP-Check)`,
+        description: i18n.str`This evaluation has to be completed by all 
members for every business relationship.`,
+        fields: [
+          {
+            id: "PEP_ACCEPTANCE_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: false,
+          },
+          {
+            id: "PEP_DOMESTIC" satisfies keyof TalerAmlAttributes.VQF_902_4 as 
UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+          {
+            id: "PEP_FOREIGN" satisfies keyof TalerAmlAttributes.VQF_902_4 as 
UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+          {
+            id: "PEP_INTERNATIONAL_ORGANIZATION" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Evaluation "high risk" or non-cooperative country`,
+        description: i18n.str`This evaluation has to be completed by all 
members for every business relationship.`,
+        fields: [
+          {
+            id: "HIGH_RISK_ACCEPTANCE_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: false,
+          },
+          {
+            id: "HIGH_RISK_COUNTRY" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Boolean",
+            type: "toggle",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Evaluation of business relationship risk`,
+        description: i18n.str`This evaluation has to be completed by all 
members who have in total more than 20 customers for every business 
relationship. At least two risk categories have to be chosen and assessed.`,
+        fields: [
+          {
+            id: "CONTACT_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Contact risk level`,
+            // gana_type: "'LOW' | 'MEDIUM' | 'HIGH'",
+            choices: [
+              { label: i18n.str`Low`, value: "LOW" },
+              { label: i18n.str`Medium`, value: "MEDIUM" },
+              { label: i18n.str`High`, value: "HIGH" },
+            ],
+            type: "choiceHorizontal",
+            required: false,
+          },
+          {
+            id: "COUNTRY_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Country risk level`,
+            // gana_type: "'LOW' | 'MEDIUM' | 'HIGH'",
+            choices: [
+              { label: i18n.str`Low`, value: "LOW" },
+              { label: i18n.str`Medium`, value: "MEDIUM" },
+              { label: i18n.str`High`, value: "HIGH" },
+            ],
+            type: "choiceHorizontal",
+            required: false,
+          },
+          {
+            id: "COUNTRY_RISK_TYPE" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Country risk type`,
+            // gana_type:
+            //   "'NATIONALITY_CUSTOMER' | 'NATIONALITY_OWNER' | 
'DOMICILE_CUSTOMER' | 'DOMICILE_OWNER' | 'DOMICILE_CONTROLLING' | 
'BUSINESS_ACTIVITY' | 'PAYMENTS'",
+            choices: [
+              {
+                label: i18n.str`Nationality customer`,
+                value: "NATIONALITY_CUSTOMER",
+              },
+              {
+                label: i18n.str`Nationality owner`,
+                value: "NATIONALITY_OWNER",
+              },
+              {
+                label: i18n.str`Domicile cusomter`,
+                value: "DOMICILE_CUSTOMER",
+              },
+              { label: i18n.str`Domicile owner`, value: "DOMICILE_OWNER" },
+              {
+                label: i18n.str`Domicile controlling`,
+                value: "DOMICILE_CONTROLLING",
+              },
+              {
+                label: i18n.str`Business activity`,
+                value: "BUSINESS_ACTIVITY",
+              },
+              { label: i18n.str`Payments`, value: "PAYMENTS" },
+            ],
+            type: "choiceStacked",
+            required: false,
+          },
+          {
+            id: "EXTRA_CRITERA_1_RISK_DEFINITION" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`1. Extra criteria risk`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+          {
+            id: "EXTRA_CRITERA_1_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`1. Extra criteria level`,
+            // gana_type: "'LOW' | 'MEDIUM' | 'HIGH'",
+            choices: [
+              { label: i18n.str`Low`, value: "LOW" },
+              { label: i18n.str`Medium`, value: "MEDIUM" },
+              { label: i18n.str`High`, value: "HIGH" },
+            ],
+            type: "choiceHorizontal",
+            required: false,
+          },
+          {
+            id: "EXTRA_CRITERA_2_RISK_DEFINITION" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`2. Extra criteria risk`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+          {
+            id: "EXTRA_CRITERA_2_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`2. Extra criteria level`,
+            // gana_type: "'LOW' | 'MEDIUM' | 'HIGH'",
+            choices: [
+              { label: i18n.str`Low`, value: "LOW" },
+              { label: i18n.str`Medium`, value: "MEDIUM" },
+              { label: i18n.str`High`, value: "HIGH" },
+            ],
+            type: "choiceHorizontal",
+            required: false,
+          },
+          {
+            id: "INDUSTRY_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Industry risk level`,
+            // gana_type:
+            //   "'TRANSPARENT' | 'HIGH_CASH_TRANSACTION' | 'NOT_WELL_KNOWN' | 
'HIGH_RISK_TRADE' | 'UNKNOWN_INDUSTRY'",
+            type: "selectOne",
+            choices: [
+              { label: i18n.str`Transparent`, value: "TRANSPARENT" },
+              {
+                label: i18n.str`High cash transaction`,
+                value: "HIGH_CASH_TRANSACTION",
+              },
+              { label: i18n.str`Not well known`, value: "NOT_WELL_KNOWN" },
+              { label: i18n.str`High risk trade`, value: "HIGH_RISK_TRADE" },
+              { label: i18n.str`Unkown industry`, value: "UNKNOWN_INDUSTRY" },
+            ],
+            required: false,
+          },
+          {
+            id: "INDUSTRY_RISK_TYPE" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Industry risk type`,
+            // gana_type: "'CUSTOMER' | 'OWNER'",
+            type: "choiceHorizontal",
+            choices: [
+              { label: i18n.str`Owner`, value: "OWNER" },
+              { label: i18n.str`Customer`, value: "CUSTOMER" },
+            ],
+            required: false,
+          },
+          {
+            id: "PRODUCT_RISK_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str`Product risk level`,
+            // gana_type:
+            // "'EASY' | 'SOPHISTICATED' | 'OFFSHORE' | 'COMPLEX_STRUCTURE' | 
'LARGE_NUMBER_OF_ACCOUNTS' | 'COMPLEX_SERVICE' | 'FREQ_TRANS_WITH_HIGH_RISK'",
+            type: "selectOne",
+            choices: [
+              { label: i18n.str`Easy`, value: "EASY" },
+              { label: i18n.str`Sophisticated`, value: "SOPHISTICATED" },
+              { label: i18n.str`Offshore`, value: "OFFSHORE" },
+              {
+                label: i18n.str`Complex structure`,
+                value: "COMPLEX_STRUCTURE",
+              },
+              {
+                label: i18n.str`Large number of accounts`,
+                value: "LARGE_NUMBER_OF_ACCOUNTS",
+              },
+              { label: i18n.str`Complex service`, value: "COMPLEX_SERVICE" },
+              {
+                label: i18n.str`Frequent transactions with high risk`,
+                value: "FREQ_TRANS_WITH_HIGH_RISK",
+              },
+            ],
+            required: false,
+          },
+          {
+            id: "RISK_CLASIFICATION_ACCEPTANCE_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: false,
+          },
+          {
+            id: "RISK_CLASIFICATION_LEVEL" satisfies keyof 
TalerAmlAttributes.VQF_902_4 as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "'WITH' | 'WITHOUT'",
+            choices: [
+              { label: i18n.str`WITH`, value: "WITH" },
+              { label: i18n.str`WITHOUT`, value: "WITHOUT" },
+            ],
+            type: "choiceHorizontal",
+            required: false,
+          },
+        ],
+      },
+      // This fields seeems to be related to legitimization rules.
+      // {
+      //   title: i18n.str`Criteria for identification of increased risk 
transactions (transaction monitoring)`,
+      //   fields: fieldsBySections["4"],
+      // },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_5.ts 
b/packages/kyc-ui/src/forms/VQF_902_5.ts
new file mode 100644
index 000000000..b79f39b06
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_5.ts
@@ -0,0 +1,194 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+
+export function VQF_902_5(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_5 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Business activity`,
+        fields: [
+          {
+            id: "BIZREL_PROFESSION" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Profession, business activities, etc. (former, 
current, potentially planned)`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Financial circumstances`,
+        fields: [
+          {
+            id: "BIZREL_INCOME" satisfies keyof TalerAmlAttributes.VQF_902_5 
as UIHandlerId,
+            label: i18n.str`Income and assets, liabilities (estimated)`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Origin of the deposited assets involved`,
+        fields: [
+          {
+            id: "BIZREL_ORIGIN_AMOUNT" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Amount`,
+            // gana_type: "Amount",
+            type: "amount",
+            currency: "CHF",
+            required: true,
+          },
+          {
+            id: "BIZREL_ORIGIN_CATEGORY" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Category`,
+            // gana_type: "'SAVINGS' | 'OWN_BUSINESS' | 'INHERITANCE' | 
'OTHER'",
+            type: "choiceStacked",
+            choices: [
+              { label: i18n.str`Savings`, value: "SAVINGS" },
+              {
+                label: i18n.str`Own business operations`,
+                value: "OWN_BUSINESS",
+              },
+              { label: i18n.str`Inheritance`, value: "INHERITANCE" },
+              { label: i18n.str`Other`, value: "OTHER" },
+            ],
+            allowFreeForm: true,
+            required: true,
+          },
+          {
+            id: "BIZREL_ORIGIN_DETAIL" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Detail description of the origings/economical 
background of the assets involved in the business relationship`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Nature and purpose of the business relationship`,
+        fields: [
+          {
+            id: "BIZREL_PURPOSE" satisfies keyof TalerAmlAttributes.VQF_902_5 
as UIHandlerId,
+            label: i18n.str`Purpose of the business relationship`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "BIZREL_DEVELOPMENT" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Information on the planned development of the 
business relationship and the assets`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Address`,
+            help: i18n.str`Information of the beneficiary`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Bank account`,
+            help: i18n.str`Information of the beneficiary`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Full name`,
+            help: i18n.str`Information of the beneficiary`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+          {
+            id: "BIZREL_FINANCIAL_VOLUME" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Detail on usual business volume`,
+            // gana_type: "String",
+            type: "text",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Relationship with third parties`,
+        fields: [
+          {
+            id: "BIZREL_THIRDPARTY_RELATIONSHIP" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Relation of the customer to the benefical owner`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+          {
+            id: "BIZREL_THIRDPARTY_REFERENCES" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Introducer / agents / references`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+          {
+            id: "BIZREL_THIRDPARTY_AMLA_FILES" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Relation to other AMLA-Files`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Further information`,
+        fields: [
+          {
+            id: "BIZREL_FURTHER_INFO" satisfies keyof 
TalerAmlAttributes.VQF_902_5 as UIHandlerId,
+            label: i18n.str`Other relevant information`,
+            // gana_type: "String",
+            type: "textArea",
+            required: false,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/VQF_902_9.ts 
b/packages/kyc-ui/src/forms/VQF_902_9.ts
new file mode 100644
index 000000000..20d78064a
--- /dev/null
+++ b/packages/kyc-ui/src/forms/VQF_902_9.ts
@@ -0,0 +1,129 @@
+import {
+  InternationalizationAPI,
+  DoubleColumnForm,
+  UIHandlerId,
+} from "@gnu-taler/web-util/browser";
+import { TalerAmlAttributes } from "./taler_aml_attributes.js";
+import { countryList } from "./VQF_902_1.js";
+
+export function VQF_902_9(i18n: InternationalizationAPI): DoubleColumnForm {
+  return {
+    type: "double-column",
+    design: [
+      {
+        title: i18n.str`This form was completed by`,
+        fields: [
+          {
+            id: "OFFICER_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_9 as UIHandlerId,
+            label: i18n.str`Full name`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "FORM_FILLING_DATE" satisfies keyof 
TalerAmlAttributes.VQF_902_9 as UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "AbsoluteDateTime",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "CUSTOMER_ID" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Customer`,
+            // gana_type: "String",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Contracting partner`,
+        fields: [
+          {
+            id: "IDENTITY_CONTRACTING_PARTNER" satisfies keyof 
TalerAmlAttributes.VQF_902_9 as UIHandlerId,
+            label: i18n.str`Contracting partner`,
+            // gana_type: "Paragraph",
+            type: "textArea",
+            required: true,
+          },
+        ],
+      },
+      {
+        title: i18n.str`Persons`,
+        description: i18n.str`The contracting partner hereby declares that the 
persons(s) listed below is/are the beneficial owner(s) of the assets involved 
in the business relationship. If the contracting prtner is also the sole 
beneficial owner of the assets, the contracting partner's detail must be set 
out below.`,
+        fields: [
+          {
+            id: "IDENTITY_LIST" satisfies keyof TalerAmlAttributes.VQF_902_9 
as UIHandlerId,
+            label: i18n.str``,
+            // gana_type: "Form<VQF_902_9_identity>[]",
+            type: "array",
+            labelFieldId: "" as UIHandlerId,
+            fields: [
+              {
+                id: "IDENTITY_FULL_NAME" satisfies keyof 
TalerAmlAttributes.VQF_902_9_identity as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "String",
+                type: "text",
+                required: true,
+              },
+              {
+                id: "IDENTITY_BIRTHDATE" satisfies keyof 
TalerAmlAttributes.VQF_902_9_identity as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "AbsoluteDate",
+                type: "absoluteTimeText",
+                placeholder: "dd/MM/yyyy",
+                pattern: "dd/MM/yyyy",
+                required: true,
+              },
+              {
+                id: "IDENTITY_NATIONALITY" satisfies keyof 
TalerAmlAttributes.VQF_902_9_identity as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "CountryCode",
+                type: "selectOne",
+                choices: countryList(i18n),
+                required: true,
+              },
+              {
+                id: "IDENTITY_DOMICILE" satisfies keyof 
TalerAmlAttributes.VQF_902_9_identity as UIHandlerId,
+                label: i18n.str``,
+                // gana_type: "ResidentialAddress",
+                type: "textArea",
+                required: true,
+              },
+            ],
+            required: false,
+          },
+        ],
+      },
+      {
+        title: i18n.str`The contracting partner hereby undertakes to inform 
automatically of any changes to the information contained herein.`,
+        description: i18n.str`It is a criminal offence to deliberately provide 
false information on this form (article 251 of the Swiss Criminal Code, 
documents forgery)`,
+        fields: [
+          {
+            id: "SIGNATURE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Signature`,
+            // gana_type: "AbsoluteDateTime",
+            type: "text",
+            required: true,
+            disabled: true,
+          },
+          {
+            id: "SIGN_DATE" satisfies keyof TalerAmlAttributes.VQF_902_9 as 
UIHandlerId,
+            label: i18n.str`Date`,
+            // gana_type: "String",
+            type: "absoluteTimeText",
+            placeholder: "dd/MM/yyyy HH:mm:ss",
+            pattern: "dd/MM/yyyy HH:mm:ss",
+            required: true,
+            disabled: true,
+          },
+        ],
+      },
+    ],
+  };
+}
diff --git a/packages/kyc-ui/src/forms/accept-tos.ts 
b/packages/kyc-ui/src/forms/accept-tos.ts
index 0e05aa996..c95689603 100644
--- a/packages/kyc-ui/src/forms/accept-tos.ts
+++ b/packages/kyc-ui/src/forms/accept-tos.ts
@@ -17,6 +17,8 @@
 import type {
   DoubleColumnForm,
   InternationalizationAPI,
+  SingleColumnForm,
+  UIFormElementConfig,
   UIHandlerId,
 } from "@gnu-taler/web-util/browser";
 
@@ -27,27 +29,41 @@ function filterUndefined<T>(ar: Array<T | undefined>): 
Array<T> {
 export const acceptTos = (
   i18n: InternationalizationAPI,
   context?: any,
-): DoubleColumnForm => ({
-  type: "double-column" as const,
-  design: [
+): SingleColumnForm => ({
+  type: "single-column" as const,
+  fields: filterUndefined<UIFormElementConfig>([
     {
-      title: i18n.str`Accept Terms of Service`,
-      fields: filterUndefined([
-        context?.tos_url
-          ? {
-              type: "htmlIframe",
-              label: context?.provider_name ?? `Link`,
-              url: context.tos_url,
-            }
-          : undefined,
-        {
-          type: "toggle",
-          id: "ACCEPTED_TERMS_OF_SERVICE" as UIHandlerId,
-          required: true,
-          threeState: true,
-          label: i18n.str`Do you accept terms of service`,
-        },
-      ]),
+      type: "toggle",
+      id: "ACCEPTED_TERMS_OF_SERVICE" as UIHandlerId,
+      required: true,
+      threeState: true,
+      label: i18n.str`Do you accept terms of service`,
     },
-  ],
+    context?.tos_url
+      ? {
+          type: "htmlIframe",
+          label: context?.provider_name ?? `Link`,
+          url: context.tos_url,
+        }
+      : undefined,
+    {
+      type: "toggle",
+      id: "ACCEPTED_TERMS_OF_SERVICE" as UIHandlerId,
+      required: true,
+      threeState: true,
+      label: i18n.str`Do you accept terms of service`,
+    },
+    {
+      type: "download-link",
+      url: context.tos_url,
+      label: "Download text version",
+      media: "text/plain",
+    },
+    {
+      type: "download-link",
+      url: context.tos_url,
+      label: "Download PDF version",
+      media: "application/pdf",
+    },
+  ]),
 });
diff --git a/packages/kyc-ui/src/forms/ganaForms.ts 
b/packages/kyc-ui/src/forms/ganaForms.ts
deleted file mode 100644
index aec6012fc..000000000
--- a/packages/kyc-ui/src/forms/ganaForms.ts
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2022-2024 Taler Systems S.A.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
- */
-import {
-  DoubleColumnForm,
-  InternationalizationAPI,
-  UIFormElementConfig,
-  UIFormFieldBaseConfig,
-  UIHandlerId,
-} from "@gnu-taler/web-util/browser";
-
-import ganaForms from "./taler_aml_attributes.json";
-
-type GanaField = {
-  required: boolean;
-  section: string;
-  type: string;
-  label: string;
-  order?: number;
-  enumeration: string[];
-};
-
-type GanaForm = { [fieldName: string]: GanaField | string };
-
-type FieldsBySection = {
-  [section: string]: (UIFormElementConfig & { order?: number })[];
-};
-
-export function VQF_902_1(i18n: InternationalizationAPI): DoubleColumnForm {
-  const fieldsBySections = convertGanaJsonToDoubleColumnFormSection(
-    ganaForms.VQF_902_1,
-    converGanaField,
-  );
-
-  return {
-    type: "double-column",
-    design: [
-      {
-        title: i18n.str`This form was completed by`,
-        fields: fieldsBySections["header"].map((f) => {
-          (f as UIFormFieldBaseConfig).disabled = true;
-          return f;
-        }),
-      },
-      {
-        title: i18n.str`Information`,
-        description: i18n.str`The customer is the person with whom the member 
concludes the contract with regard to the financial service provided (civil 
law). Does the member act as director of a domiciliary company, this 
domiciliary company is the customer.`,
-        fields: fieldsBySections["1"],
-      },
-      {
-        title: i18n.str`Information on the natural persons who establish the 
business relationship for legal entities and partnerships`,
-        description: i18n.str`For legal entities and partnerships the identity 
of the natural persons who establish the business relationship must be 
verified.`,
-        fields: fieldsBySections["2"],
-      },
-      {
-        title: i18n.str`Acceptance of business relationship`,
-        fields: fieldsBySections["3"],
-      },
-      {
-        title: i18n.str`Information on the beneficial owner of the assets 
and/or controlling person`,
-        description: i18n.str`Establishment of the beneficial owner of the 
assets and/or controlling person`,
-        fields: fieldsBySections["4"],
-      },
-      {
-        title: i18n.str`Evaluation with regard to embargo procedures/terrorism 
lists on establishing the business relationship`,
-        description: i18n.str`Verification whether the customer, beneficial 
owners of the assets, controlling persons, authorized representatives or other 
involved persons are listed on an embargo/terrorism list (date of 
verification/result)`,
-        fields: fieldsBySections["5"],
-      },
-    ],
-  };
-}
-
-function isArrayType(type: string): keyof typeof ganaForms | undefined {
-  if (!type.endsWith("[]")) return undefined;
-  return type.substring(0, type.length - 2) as keyof typeof ganaForms;
-}
-
-function isFormType(type: string): keyof typeof ganaForms | undefined {
-  const start = type.indexOf("<");
-  const end = type.indexOf(">");
-
-  if (start === -1 || end === -1) return undefined;
-  return type.substring(start + 1, end) as keyof typeof ganaForms;
-}
-
-function converGanaField(
-  fieldName: string,
-  fieldInfo: GanaField,
-): UIFormElementConfig {
-  const arrayType = isArrayType(fieldInfo.type);
-  if (arrayType) {
-    const ft = isFormType(arrayType);
-    const containedType = !ft ? arrayType : ft;
-    const fields = mergeAllSections(
-      convertGanaJsonToDoubleColumnFormSection(
-        ganaForms[containedType],
-        converGanaField,
-      ),
-    );
-    const f = fields.find((f) => "id" in f); //?.id;
-    const labelFieldId = f && "id" in f ? f.id : ("!!" as UIHandlerId);
-    return {
-      id: fieldName as UIHandlerId,
-      label: !fieldInfo.label ? fieldName : fieldInfo.label,
-      type: "array",
-      fields,
-      labelFieldId,
-    };
-  }
-  const formType = isFormType(fieldInfo.type);
-  if (formType) {
-    return {
-      label: !fieldInfo.label ? fieldName : fieldInfo.label,
-      type: "group",
-      fields: mergeAllSections(
-        convertGanaJsonToDoubleColumnFormSection(
-          ganaForms[formType] as GanaForm,
-          converGanaField,
-        ),
-      ),
-    };
-  }
-
-  switch (fieldInfo.type) {
-    case "Boolean": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "toggle",
-        required: fieldInfo.required,
-        threeState: false,
-      };
-    }
-    case "File": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "file",
-        required: fieldInfo.required,
-      };
-    }
-    case "String": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "Email": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "Phone": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "Paragraph": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "textArea",
-        required: fieldInfo.required,
-      };
-    }
-    case "ResidentialAddress": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label + "!!!",
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "BusinessAddress": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label + "!!!",
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "CountryCode": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "selectOne",
-        choices: [
-          { label: "AR", value: "AR" },
-          { label: "DE", value: "DE" },
-        ],
-        required: fieldInfo.required,
-      };
-    }
-    case "LangCode": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "text",
-        required: fieldInfo.required,
-      };
-    }
-    case "AbsoluteDateTime": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "absoluteTimeText",
-        required: fieldInfo.required,
-        placeholder: "dd/MM/yyyy HH:mm:ss",
-        pattern: "dd/MM/yyyy HH:mm:ss",
-      };
-    }
-    case "AbsoluteDate": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "absoluteTimeText",
-        required: fieldInfo.required,
-        placeholder: "dd/MM/yyyy",
-        pattern: "dd/MM/yyyy",
-      };
-    }
-    case "Amount": {
-      return {
-        id: fieldName as UIHandlerId,
-        label: !fieldInfo.label ? fieldName : fieldInfo.label,
-        type: "amount",
-        currency: "asd",
-        required: fieldInfo.required,
-      };
-    }
-    default: {
-      return {
-        type: "caption",
-        label: `unkown field type ${fieldInfo.type} for id ${fieldName}`,
-      };
-    }
-  }
-}
-
-function convertGanaJsonToDoubleColumnFormSection(
-  form: GanaForm,
-  convert: (name: string, info: GanaField) => UIFormElementConfig,
-): FieldsBySection {
-  const list = Object.entries(form);
-  const sections = list.reduce((prev, [key, value]) => {
-    if (typeof value === "string") {
-      return prev;
-    }
-    if (!prev[value.section]) {
-      prev[value.section] = [];
-    }
-    const d: UIFormElementConfig & { order?: number } = convert(key, value);
-    d.order = value.order;
-    prev[value.section].push(d);
-    return prev;
-  }, {} as FieldsBySection);
-
-  Object.values(sections).forEach((sec) => {
-    sec.sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
-  });
-  return sections;
-}
-
-function mergeAllSections(fields: FieldsBySection): UIFormElementConfig[] {
-  const list = Object.values(fields).flatMap((d) => d);
-  list.sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
-  return list;
-}
diff --git a/packages/kyc-ui/src/forms/index.ts 
b/packages/kyc-ui/src/forms/index.ts
index 7301b0426..cc6dfe110 100644
--- a/packages/kyc-ui/src/forms/index.ts
+++ b/packages/kyc-ui/src/forms/index.ts
@@ -1,6 +1,6 @@
 /*
  This file is part of GNU Taler
- (C) 2022-2024 Taler Systems S.A.
+ (C) 2022-2025 Taler Systems S.A.
 
  GNU Taler is free software; you can redistribute it and/or modify it under the
  terms of the GNU General Public License as published by the Free Software
@@ -21,7 +21,15 @@ import { simplest } from "./simplest.js";
 import { acceptTos } from "./accept-tos.js";
 import { nameAndDob } from "./nameAndBirthdate.js";
 import { personalInfo } from "./personal-info.js";
-import { VQF_902_1 } from "./ganaForms.js";
+import { VQF_902_15 } from "./VQF_902_15.js";
+import { VQF_902_14 } from "./VQF_902_14.js";
+import { VQF_902_13 } from "./VQF_902_13.js";
+import { VQF_902_12 } from "./VQF_902_12.js";
+import { VQF_902_11 } from "./VQF_902_11.js";
+import { VQF_902_9 } from "./VQF_902_9.js";
+import { VQF_902_5 } from "./VQF_902_5.js";
+import { VQF_902_4 } from "./VQF_902_4.js";
+import { VQF_902_1 } from "./VQF_902_1.js";
 
 export const preloadedForms: (
   i18n: InternationalizationAPI,
@@ -40,17 +48,70 @@ export const preloadedForms: (
     config: personalInfo(i18n),
   },
   {
-    label: i18n.str`Accept Terms of Service`,
+    label: i18n.str`Terms of Service`,
     id: "accept-tos",
     version: 1,
     config: acceptTos(i18n, context),
   },
   {
-    label: i18n.str`Identification form`,
+    label: i18n.str`Identification Form`,
+    description: i18n.str`The customer has to be identified on entering into a 
permanent business relationship or on concluding a cash transaction, which 
meets the according threshold.`,
     id: "vqf-902-1",
     version: 1,
     config: VQF_902_1(i18n),
   },
+  {
+    label: i18n.str`Risk Profile AMLA`,
+    id: "vqf-902-4",
+    version: 1,
+    config: VQF_902_4(i18n),
+  },
+  {
+    label: i18n.str`Customer Profile`,
+    description: i18n.str`The information below has to refer to the persons 
from whom the assets originate ultimately (e.g. beneficial owner of the assets, 
founder/creator of a trust or foundation). Is the customer an operational legal 
entity or partnership the information may refer to the entity itself (not to 
the controlling person), unless the entity holds the assets in trust for a 
third party.`,
+    id: "vqf-902-5",
+    version: 1,
+    config: VQF_902_5(i18n),
+  },
+  {
+    label: i18n.str`Declaration of identity of the beneficial owner (A)`,
+    id: "vqf-902-9",
+    version: 1,
+    config: VQF_902_9(i18n),
+  },
+  {
+    label: i18n.str`Establishing of the controlling person of operating legal 
entities and partnerships both not quoted on the stock exchange (K)`,
+    description: i18n.str`for operating legal entities and partnerships that 
are contracting partner as well as analogously for operating legal entities and 
partnership that are beneficial owners`,
+    id: "vqf-902-11",
+    version: 1,
+    config: VQF_902_11(i18n),
+  },
+  {
+    label: i18n.str`Foundations (as well as similar constructs) (S)`,
+    id: "vqf-902-12",
+    version: 1,
+    config: VQF_902_12(i18n),
+  },
+  {
+    label: i18n.str`Declaration for trusts (T)`,
+    id: "vqf-902-13",
+    version: 1,
+    config: VQF_902_13(i18n),
+  },
+  {
+    label: i18n.str`Special Clarifications`,
+    description: i18n.str`When a business relationship or transaction is 
associated with increased risk, appears unusual or evidence exists that the 
assets are the proceeds of a felony or a qualified tax offence, the member has 
to perform additional clarifications.`,
+    id: "vqf-902-14",
+    version: 1,
+    config: VQF_902_14(i18n),
+  },
+  {
+    label: i18n.str`Insurance policies (I)`,
+    description: i18n.str`Information of life insurance policies with 
separately managed accounts/securities accounts (so-called insurance wrappers)`,
+    id: "vqf-902-15",
+    version: 1,
+    config: VQF_902_15(i18n),
+  },
   {
     label: i18n.str`Name and birthdate`,
     id: "name_and_dob",
diff --git a/packages/kyc-ui/src/forms/taler_aml_attributes.json 
b/packages/kyc-ui/src/forms/taler_aml_attributes.json
deleted file mode 100644
index d980edf0a..000000000
--- a/packages/kyc-ui/src/forms/taler_aml_attributes.json
+++ /dev/null
@@ -1,1661 +0,0 @@
-{
-  "VQF_902_1": {
-    "ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Type of correspondence service",
-      "order": 3,
-      "enumeration": 
["TO_THE_CUSTOMER","HOLD_AT_BANK","TO_THE_MEMBER","TO_A_THIRD_PARTY"],
-      "section": "3"
-    },
-    "ACCEPTANCE_DATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "Date",
-      "order": 1,
-      "enumeration": [],
-      "section": "3"
-    },
-    "ACCEPTANCE_FURTHER_INFO": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Further information",
-      "order": 5,
-      "enumeration": [],
-      "section": "3"
-    },
-    "ACCEPTANCE_LANGUAGE": {
-      "required": false,
-      "closed": false,
-      "type": "LangCode",
-      "label": "Language",
-      "order": 4,
-      "enumeration": [],
-      "section": "3"
-    },
-    "ACCEPTANCE_METHOD": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "Accepted by",
-      "order": 2,
-      "enumeration": 
["FACE_TO_FACE","AUTHENTICATED_COPY","RESIDENTIAL_ADDRESS_VALIDATED"],
-      "section": "3"
-    },
-    "CUSTOMER_ENTITY_ADDRESS": {
-      "required": true,
-      "closed": false,
-      "type": "BusinessAddress",
-      "label": "Domicile",
-      "order": 14,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_COMPANY_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Company name",
-      "order": 13,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_CONTACT_PERSON_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Contact person",
-      "order": 15,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_EMAIL": {
-      "required": false,
-      "closed": false,
-      "type": "Email",
-      "label": "E-mail",
-      "order": 18,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Identification document",
-      "order": 19,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_ID_COPY": {
-      "required": true,
-      "closed": false,
-      "type": "File",
-      "label": "Picutre of identification document",
-      "order": 20,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ENTITY_PHONE": {
-      "required": false,
-      "closed": false,
-      "type": "Phone",
-      "label": "Telephone",
-      "order": 17,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "CUSTOMER_NATURAL_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "Date of birth",
-      "order": 5,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_COMPANY_ID": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Company identification document",
-      "order": 11,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_COMPANY_ID_COPY": {
-      "required": false,
-      "closed": false,
-      "type": "File",
-      "label": "Picture of company identification document",
-      "order": 12,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_COMPANY_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Company name",
-      "order": 9,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_EMAIL": {
-      "required": false,
-      "closed": false,
-      "type": "Email",
-      "label": "E-mail",
-      "order": 4,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "Nationality",
-      "order": 6,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_NATIONAL_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Identification document",
-      "order": 7,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_NATIONAL_ID_COPY": {
-      "required": true,
-      "closed": false,
-      "type": "File",
-      "label": "Picture of identification document",
-      "order": 8,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_PHONE": {
-      "required": false,
-      "closed": false,
-      "type": "Phone",
-      "label": "Telephone",
-      "order": 3,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_REGISTERED_OFFICE": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Registered office",
-      "order": 10,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_NATURAL_RESIDENTIAL": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "Residential address",
-      "order": 2,
-      "enumeration": [],
-      "section": "1"
-    },
-    "CUSTOMER_TYPE": {
-      "required": true,
-      "closed": true,
-      "type": "String",
-      "label": "Customer type",
-      "order": 1,
-      "enumeration": 
["NATURAL","LEGAL_ENTITY","FOUNDATION","TRUST","LIFE_INSURANCE","OTHER"],
-      "section": "4"
-    },
-    "EMBARGO_TERRORISM_INFO": {
-      "required": false,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "Embargo information",
-      "order": 2,
-      "enumeration": [],
-      "section": "5"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FOUNDER_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_1_founder>[]",
-      "label": "Founders",
-      "order": 1,
-      "enumeration": [],
-      "section": "2"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "RELATIONSHIP_PURPOSE": {
-      "required": false,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "Purpose of the business relationship",
-      "order": 3,
-      "enumeration": [],
-      "section": "6"
-    },
-    "RELATIONSHIP_TYPE": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "Type of business relationship",
-      "order": 1,
-      "enumeration": ["MONEY_EXCHANGE","MONEY_ASSET_TRANSFER"],
-      "section": "6"
-    },
-"":""},
-  "VQF_902_11": {
-    "CONTROLLING_ENTITY_CONTRACTING_PARTNER": {
-      "required": true,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "CONTROLLING_ENTITY_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "CONTROLLING_ENTITY_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "CONTROLLING_ENTITY_LEVEL": {
-      "required": true,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["25_MORE_RIGHTS","OTHER_WAY","DIRECTOR"],
-      "section": "2"
-    },
-    "CONTROLLING_ENTITY_THIRD_PERSON": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "SIGNATURE": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 2,
-      "enumeration": [],
-      "section": "footer"
-    },
-    "SIGN_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "order": 1,
-      "enumeration": [],
-      "section": "footer"
-    },
-"":""},
-  "VQF_902_12": {
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FOUNDATION_BENEFICIARY_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_12_beneficiary>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "FOUNDATION_CONTRACTING_PARTNER": {
-      "required": true,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "0"
-    },
-    "FOUNDATION_DISCRETIONARY": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "FOUNDATION_FOUNDER_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_12_founder>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-    "FOUNDATION_KNOWN_AS": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "0"
-    },
-    "FOUNDATION_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "FOUNDATION_PRE_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_12_pre>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "FOUNDATION_REPRESENTATIVE_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_12_representative>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "FOUNDATION_REVOCABLE": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "SIGNATURE": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 2,
-      "enumeration": [],
-      "section": "footer"
-    },
-    "SIGN_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "order": 1,
-      "enumeration": [],
-      "section": "footer"
-    },
-"":""},
-  "VQF_902_12_beneficiary": {
-    "FOUNDATION_BENEFICIARY_ADDITION": {
-      "required": false,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_BIRTHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_COUNTRY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_DOMICILE": {
-      "required": false,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_NATIONALITY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM": {
-      "required": false,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_12_founder": {
-    "FOUNDATION_FOUNDER_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_FOUNDER_DEATHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_FOUNDER_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_FOUNDER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_FOUNDER_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_FOUNDER_RIGHT_TO_REVOKE": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_12_pre": {
-    "FOUNDATION_PRE_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_PRE_COUNTRY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_PRE_DEATHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_PRE_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_PRE_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_PRE_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_12_representative": {
-    "FOUNDATION_REPRESENTATIVE_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_REPRESENTATIVE_COUNTRY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_REPRESENTATIVE_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_REPRESENTATIVE_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_REPRESENTATIVE_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_13": {
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "SIGNATURE": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 2,
-      "enumeration": [],
-      "section": "footer"
-    },
-    "SIGN_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "order": 1,
-      "enumeration": [],
-      "section": "footer"
-    },
-    "TRUST_BENEFICIARY_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_13_beneficiary>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "TRUST_CONTRACTING_PARTNER": {
-      "required": true,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "0"
-    },
-    "TRUST_DISCRETIONARY": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "TRUST_KNOWN_AS": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "0"
-    },
-    "TRUST_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "TRUST_PRE_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_13_pre>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "TRUST_PROTECTOR_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_13_protector>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "TRUST_REVOCABLE": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "TRUST_SETTLOR_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_13_settlor>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-"":""},
-  "VQF_902_13_beneficiary": {
-    "TRUST_BENEFICIARY_ADDITION": {
-      "required": false,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_BIRTHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_COUNTRY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_DOMICILE": {
-      "required": false,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_NATIONALITY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_BENEFICIARY_RIGHT_TO_CLAIM": {
-      "required": false,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_13_further": {
-    "TRUST_FURTHER_BIRTHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_FURTHER_COUNTRY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_FURTHER_DOMICILE": {
-      "required": false,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_FURTHER_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_FURTHER_LIST": {
-      "required": true,
-      "closed": false,
-      "type": "Form<VQF_902_13_further>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "TRUST_FURTHER_NATIONALITY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_FURTHER_RIGHT_TO_REVOKE": {
-      "required": false,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_13_pre": {
-    "TRUST_PRE_BIRTHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PRE_COUNTRY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PRE_DEATHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PRE_DOMICILE": {
-      "required": false,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PRE_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PRE_NATIONALITY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_13_protector": {
-    "TRUST_PROTECTOR_BIRTHDATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PROTECTOR_COUNTRY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PROTECTOR_DOMICILE": {
-      "required": false,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PROTECTOR_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PROTECTOR_NATIONALITY": {
-      "required": false,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_PROTECTOR_RIGHT_TO_REVOKE": {
-      "required": false,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_13_settlor": {
-    "TRUST_SETTLOR_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_SETTLOR_DEATHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_SETTLOR_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_SETTLOR_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_SETTLOR_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "TRUST_SETTLOR_RIGHT_TO_REVOKE": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_14": {
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "INCRISK_DOCUMENTS": {
-      "required": true,
-      "closed": false,
-      "type": "File[]",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "INCRISK_MEANS": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": ["GATHERING","CONSULTATION","ENQUIRIES"],
-      "section": "2"
-    },
-    "INCRISK_REASON": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "INCRISK_RESULT": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": 
["NO_SUSPICION","REASONABLE_SUSPICION","SIMPLE_SUSPICION"],
-      "section": "4"
-    },
-    "INCRISK_SUMMARY": {
-      "required": true,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-"":""},
-  "VQF_902_1_founder": {
-    "FOUNDER_AUTHORIZATION_TYPE": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Type of authorization",
-      "order": 4,
-      "enumeration": [],
-      "section": "2"
-    },
-    "FOUNDER_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "Date of birth",
-      "order": 2,
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDER_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "Nationality",
-      "order": 3,
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDER_NATIONAL_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Identification document",
-      "order": 5,
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDER_NATIONAL__COPY": {
-      "required": true,
-      "closed": false,
-      "type": "File",
-      "label": "Picutre of identification document",
-      "order": 6,
-      "enumeration": [],
-      "section": ""
-    },
-    "FOUNDER_POWER_OF_ATTORNEY": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Power of attorney arrangements",
-      "order": 7,
-      "enumeration": ["CR","MANDATE","OTHER"],
-      "section": ""
-    },
-    "FOUNDER_RESIDENTIAL_ADDRESS": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "Residential address",
-      "order": 1,
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-  "VQF_902_4": {
-    "CONTACT_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["LOW","MEDIUM","HIGH"],
-      "section": "3"
-    },
-    "COUNTRY_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["LOW","MEDIUM","HIGH"],
-      "section": "3"
-    },
-    "COUNTRY_RISK_TYPE": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": 
["NATIONALITY_CUSTOMER","NATIONALITY_OWNER","DOMICILE_CUSTOMER","DOMICILE_OWNER","DOMICILE_CONTROLLING","BUSINESS_ACTIVITY","PAYMENTS"],
-      "section": "3"
-    },
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "EXTRA_CRITERA_1_RISK_DEFINITION": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "EXTRA_CRITERA_1_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["LOW","MEDIUM","HIGH"],
-      "section": "3"
-    },
-    "EXTRA_CRITERA_2_RISK_DEFINITION": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "EXTRA_CRITERA_2_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["LOW","MEDIUM","HIGH"],
-      "section": "3"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "HIGH_RISK_COUNTRY": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-    "HIGH_RISK__ACCEPTANCE_DATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-    "INDUSTRY_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": 
["TRANSPARENT","HIGH_CASH_TRANSACTION","NOT_WELL_KNOWN","HIGH_RISK_TRADE","UNKNOWN_INDUSTRY"],
-      "section": "3"
-    },
-    "INDUSTRY_RISK_TYPE": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["CUSTOMER","OWNER"],
-      "section": "3"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "PEP_ACCEPTANCE_DATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "PEP_DOMESTIC": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "PEP_FOREIGN": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "PEP_INTERNATIONAL_ORGANIZATION": {
-      "required": true,
-      "closed": false,
-      "type": "Boolean",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "PRODUCT_RISK_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": 
["EASY","SOPHISTICATED","OFFSHORE,","COMPLEX_STRUCTURE","LARGE_NUMBER_OF_ACCOUNTS","COMPLEX_SERVICE","FREQ_TRANS_WITH_HIGH_RISK"],
-      "section": "3"
-    },
-    "RISK_CLASIFICATION_ACCEPTANCE_DATE": {
-      "required": false,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "RISK_CLASIFICATION_LEVEL": {
-      "required": false,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["WITH","WITHOUT"],
-      "section": "3"
-    },
-"":""},
-  "VQF_902_5": {
-    "BIZREL_DEVELOPMENT": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS": {
-      "required": false,
-      "closed": false,
-      "type": "BusinessAddress",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_FINANCIAL_VOLUME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_FURTHER_INFO": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "6"
-    },
-    "BIZREL_INCOME": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-    "BIZREL_ORIGIN_AMOUNT": {
-      "required": true,
-      "closed": false,
-      "type": "Amount",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "BIZREL_ORIGIN_CATEGORY": {
-      "required": true,
-      "closed": true,
-      "type": "String",
-      "label": "",
-      "enumeration": ["SAVINGS","OWN_BUSINESS","INHERITANCE","OTHER"],
-      "section": "3"
-    },
-    "BIZREL_ORIGIN_CATEGORY_OTHER": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "BIZREL_ORIGIN_DETAIL": {
-      "required": false,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "3"
-    },
-    "BIZREL_PROFESSION": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "BIZREL_PURPOSE": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "4"
-    },
-    "BIZREL_THIRDPARTY_AMLA_FILES": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "BIZREL_THIRDPARTY_REFERENCES": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "BIZREL_THIRDPARTY_RELATIONSHIP": {
-      "required": false,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": "5"
-    },
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-"":""},
-  "VQF_902_9": {
-    "CUSTOMER_ID": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 3,
-      "enumeration": [],
-      "section": "header"
-    },
-    "FORM_FILLING_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "Date",
-      "order": 2,
-      "enumeration": [],
-      "section": "header"
-    },
-    "IDENTITY_CONTRACTING_PARTNER": {
-      "required": true,
-      "closed": false,
-      "type": "Paragraph",
-      "label": "",
-      "enumeration": [],
-      "section": "1"
-    },
-    "IDENTITY_LIST": {
-      "required": false,
-      "closed": false,
-      "type": "Form<VQF_902_9_identity>[]",
-      "label": "",
-      "enumeration": [],
-      "section": "2"
-    },
-    "OFFICER_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "Full name",
-      "order": 1,
-      "enumeration": [],
-      "section": "header"
-    },
-    "SIGNATURE": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "order": 2,
-      "enumeration": [],
-      "section": "footer"
-    },
-    "SIGN_DATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDateTime",
-      "label": "",
-      "order": 1,
-      "enumeration": [],
-      "section": "footer"
-    },
-"":""},
-  "VQF_902_9_identity": {
-    "IDENTITY_BIRTHDATE": {
-      "required": true,
-      "closed": false,
-      "type": "AbsoluteDate",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "IDENTITY_DOMICILE": {
-      "required": true,
-      "closed": false,
-      "type": "ResidentialAddress",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "IDENTITY_FULL_NAME": {
-      "required": true,
-      "closed": false,
-      "type": "String",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-    "IDENTITY_NATIONALITY": {
-      "required": true,
-      "closed": false,
-      "type": "CountryCode",
-      "label": "",
-      "enumeration": [],
-      "section": ""
-    },
-"":""},
-"":""}
\ No newline at end of file
diff --git a/packages/kyc-ui/src/forms/taler_aml_attributes.ts 
b/packages/kyc-ui/src/forms/taler_aml_attributes.ts
index 5747a0a8a..322cac855 100644
--- a/packages/kyc-ui/src/forms/taler_aml_attributes.ts
+++ b/packages/kyc-ui/src/forms/taler_aml_attributes.ts
@@ -36,1012 +36,1157 @@ type Form<T> = T;
 export namespace TalerAmlAttributes {
   export interface VQF_902_1 {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE: String;
+    ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE:
+      | "TO_THE_CUSTOMER"
+      | "HOLD_AT_BANK"
+      | "TO_THE_MEMBER"
+      | "TO_A_THIRD_PARTY"
+      | String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     ACCEPTANCE_DATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     ACCEPTANCE_FURTHER_INFO: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     ACCEPTANCE_LANGUAGE: LangCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    ACCEPTANCE_METHOD: String;
+    ACCEPTANCE_METHOD:
+      | "FACE_TO_FACE"
+      | "AUTHENTICATED_COPY"
+      | "RESIDENTIAL_ADDRESS_VALIDATED";
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ENTITY_ADDRESS: BusinessAddress;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ENTITY_COMPANY_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_ENTITY_CONTACT_PERSON_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_ENTITY_EMAIL: Email;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ENTITY_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ENTITY_ID_COPY: File;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_ENTITY_PHONE: Phone;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_COMPANY_ID: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_COMPANY_ID_COPY: File;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_COMPANY_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_EMAIL: Email;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_NATIONALITY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_NATIONAL_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_NATIONAL_ID_COPY: File;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_PHONE: Phone;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     CUSTOMER_NATURAL_REGISTERED_OFFICE: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_NATURAL_RESIDENTIAL: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
-    CUSTOMER_TYPE: String;
+    CUSTOMER_TYPE:
+      | "NATURAL"
+      | "LEGAL_ENTITY"
+      | "FOUNDATION"
+      | "TRUST"
+      | "LIFE_INSURANCE"
+      | "OTHER";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     EMBARGO_TERRORISM_INFO: Paragraph;
     /**
-     * 
+     *
+     * Required:
+     */
+    ENCLOSURE_BENEFICIAL_OWNER: Boolean;
+    /**
+     *
+     * Required:
+     */
+    ENCLOSURE_CUSTOMER_DOCUMENTS: Boolean;
+    /**
+     *
+     * Required:
+     */
+    ENCLOSURE_CUSTOMER_PROFILE: Boolean;
+    /**
+     *
+     * Required:
+     */
+    ENCLOSURE_IDENTIFICATION_DOCUMENTS: Boolean;
+    /**
+     *
+     * Required:
+     */
+    ENCLOSURE_RISK_PROFILE: Boolean;
+    /**
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_LIST: Form<VQF_902_1_founder>[];
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     RELATIONSHIP_PURPOSE: Paragraph;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    RELATIONSHIP_TYPE: String;
+    RELATIONSHIP_TYPE: "MONEY_EXCHANGE" | "MONEY_ASSET_TRANSFER" | String;
   }
   export interface VQF_902_11 {
     /**
-     * 
+     *
      * Required: true
      */
     CONTROLLING_ENTITY_CONTRACTING_PARTNER: Paragraph;
     /**
-     * 
+     *
      * Required: true
      */
     CONTROLLING_ENTITY_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     CONTROLLING_ENTITY_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
-    CONTROLLING_ENTITY_LEVEL: String;
+    CONTROLLING_ENTITY_LEVEL: "25_MORE_RIGHTS" | "OTHER_WAY" | "DIRECTOR";
     /**
-     * 
+     *
      * Required: true
      */
     CONTROLLING_ENTITY_THIRD_PERSON: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGNATURE: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGN_DATE: AbsoluteDateTime;
   }
   export interface VQF_902_12 {
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
+     * Required:
+     */
+    FOUNDATION_BENEFICIARY_ADDITION: Paragraph;
+    /**
+     *
      * Required: true
      */
     FOUNDATION_BENEFICIARY_LIST: Form<VQF_902_12_beneficiary>[];
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_CONTRACTING_PARTNER: Paragraph;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_DISCRETIONARY: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_LIST: Form<VQF_902_12_founder>[];
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_KNOWN_AS: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_LIST: Form<VQF_902_12_pre>[];
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_LIST: Form<VQF_902_12_representative>[];
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REVOCABLE: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGNATURE: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGN_DATE: AbsoluteDateTime;
   }
   export interface VQF_902_12_beneficiary {
     /**
-     * 
-     * Required: 
-     */
-    FOUNDATION_BENEFICIARY_ADDITION: Paragraph;
-    /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_COUNTRY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_DOMICILE: ResidentialAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_NATIONALITY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM: Boolean;
   }
   export interface VQF_902_12_founder {
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_DEATHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_NATIONALITY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_FOUNDER_RIGHT_TO_REVOKE: Boolean;
   }
   export interface VQF_902_12_pre {
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_COUNTRY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_DEATHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_PRE_NATIONALITY: CountryCode;
   }
   export interface VQF_902_12_representative {
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_COUNTRY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_NATIONALITY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE: Boolean;
   }
   export interface VQF_902_13 {
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGNATURE: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGN_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_BENEFICIARY_LIST: Form<VQF_902_13_beneficiary>[];
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_CONTRACTING_PARTNER: Paragraph;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_DISCRETIONARY: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_KNOWN_AS: String;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_PRE_LIST: Form<VQF_902_13_pre>[];
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_PROTECTOR_LIST: Form<VQF_902_13_protector>[];
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_REVOCABLE: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_LIST: Form<VQF_902_13_settlor>[];
   }
   export interface VQF_902_13_beneficiary {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_ADDITION: Paragraph;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_COUNTRY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_DOMICILE: ResidentialAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_NATIONALITY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_BENEFICIARY_RIGHT_TO_CLAIM: Boolean;
   }
   export interface VQF_902_13_further {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_COUNTRY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_DOMICILE: ResidentialAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_FURTHER_LIST: Form<VQF_902_13_further>[];
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_NATIONALITY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_FURTHER_RIGHT_TO_REVOKE: Boolean;
   }
   export interface VQF_902_13_pre {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_COUNTRY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_DEATHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_DOMICILE: ResidentialAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PRE_NATIONALITY: CountryCode;
   }
   export interface VQF_902_13_protector {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_BIRTHDATE: AbsoluteDate;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_COUNTRY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_DOMICILE: ResidentialAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_NATIONALITY: CountryCode;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     TRUST_PROTECTOR_RIGHT_TO_REVOKE: Boolean;
   }
   export interface VQF_902_13_settlor {
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_DEATHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_NATIONALITY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
     TRUST_SETTLOR_RIGHT_TO_REVOKE: Boolean;
   }
   export interface VQF_902_14 {
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     INCRISK_DOCUMENTS: File[];
     /**
-     * 
+     *
      * Required: true
      */
-    INCRISK_MEANS: String;
+    INCRISK_MEANS: "GATHERING" | "CONSULTATION" | "ENQUIRIES" | String;
     /**
-     * 
+     *
      * Required: true
      */
     INCRISK_REASON: String;
     /**
-     * 
+     *
      * Required: true
      */
-    INCRISK_RESULT: String;
+    INCRISK_RESULT:
+      | "NO_SUSPICION"
+      | "REASONABLE_SUSPICION"
+      | "SIMPLE_SUSPICION";
     /**
-     * 
+     *
      * Required: true
      */
     INCRISK_SUMMARY: Paragraph;
     /**
-     * 
+     *
+     * Required: true
+     */
+    OFFICER_FULL_NAME: String;
+  }
+  export interface VQF_902_15 {
+    /**
+     *
+     * Required: true
+     */
+    CUSTOMER_ID: String;
+    /**
+     *
+     * Required: true
+     */
+    FORM_FILLING_DATE: AbsoluteDateTime;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_CONTRACTING_PARTNER: Paragraph;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_HOLDER_BIRTHDATE: AbsoluteDate;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_HOLDER_DOMICILE: ResidentialAddress;
+    /**
+     *
+     * Required:
+     */
+    INSURANCE_HOLDER_FULL_NAME: String;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_HOLDER_NATIONALITY: CountryCode;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_PAYER_BIRTHDATE: AbsoluteDate;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_PAYER_DOMICILE: ResidentialAddress;
+    /**
+     *
+     * Required:
+     */
+    INSURANCE_PAYER_FULL_NAME: String;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_PAYER_NATIONALITY: CountryCode;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_RELATIONSHIP_NAME: String;
+    /**
+     *
+     * Required: true
+     */
+    INSURANCE_RELATIONSHIP_POLICY: String;
+    /**
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
+    /**
+     *
+     * Required: true
+     */
+    SIGNATURE: String;
+    /**
+     *
+     * Required: true
+     */
+    SIGN_DATE: AbsoluteDateTime;
   }
   export interface VQF_902_1_founder {
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_AUTHORIZATION_TYPE: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_NATIONALITY: CountryCode;
     /**
-     * 
+     *
      * Required: true
      */
-    FOUNDER_NATIONAL_ID: String;
+    FOUNDER_NATIONAL_COPY: File;
     /**
-     * 
+     *
      * Required: true
      */
-    FOUNDER_NATIONAL__COPY: File;
+    FOUNDER_NATIONAL_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
-    FOUNDER_POWER_OF_ATTORNEY: String;
+    FOUNDER_POWER_OF_ATTORNEY: "CR" | "MANDATE" | "OTHER" | String;
     /**
-     * 
+     *
      * Required: true
      */
     FOUNDER_RESIDENTIAL_ADDRESS: ResidentialAddress;
   }
   export interface VQF_902_4 {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    CONTACT_RISK_LEVEL: String;
+    CONTACT_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    COUNTRY_RISK_LEVEL: String;
+    COUNTRY_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    COUNTRY_RISK_TYPE: String;
+    COUNTRY_RISK_TYPE:
+      | "NATIONALITY_CUSTOMER"
+      | "NATIONALITY_OWNER"
+      | "DOMICILE_CUSTOMER"
+      | "DOMICILE_OWNER"
+      | "DOMICILE_CONTROLLING"
+      | "BUSINESS_ACTIVITY"
+      | "PAYMENTS";
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     EXTRA_CRITERA_1_RISK_DEFINITION: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    EXTRA_CRITERA_1_RISK_LEVEL: String;
+    EXTRA_CRITERA_1_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     EXTRA_CRITERA_2_RISK_DEFINITION: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    EXTRA_CRITERA_2_RISK_LEVEL: String;
+    EXTRA_CRITERA_2_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH";
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
-     * Required: true
+     *
+     * Required:
      */
-    HIGH_RISK_COUNTRY: Boolean;
+    HIGH_RISK_ACCEPTANCE_DATE: AbsoluteDateTime;
     /**
-     * 
-     * Required: 
+     *
+     * Required: true
      */
-    HIGH_RISK__ACCEPTANCE_DATE: AbsoluteDateTime;
+    HIGH_RISK_COUNTRY: Boolean;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    INDUSTRY_RISK_LEVEL: String;
+    INDUSTRY_RISK_LEVEL:
+      | "TRANSPARENT"
+      | "HIGH_CASH_TRANSACTION"
+      | "NOT_WELL_KNOWN"
+      | "HIGH_RISK_TRADE"
+      | "UNKNOWN_INDUSTRY";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    INDUSTRY_RISK_TYPE: String;
+    INDUSTRY_RISK_TYPE: "CUSTOMER" | "OWNER";
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     PEP_ACCEPTANCE_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     PEP_DOMESTIC: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     PEP_FOREIGN: Boolean;
     /**
-     * 
+     *
      * Required: true
      */
     PEP_INTERNATIONAL_ORGANIZATION: Boolean;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    PRODUCT_RISK_LEVEL: String;
+    PRODUCT_RISK_LEVEL:
+      | "EASY"
+      | "SOPHISTICATED"
+      | "OFFSHORE"
+      | "COMPLEX_STRUCTURE"
+      | "LARGE_NUMBER_OF_ACCOUNTS"
+      | "COMPLEX_SERVICE"
+      | "FREQ_TRANS_WITH_HIGH_RISK";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     RISK_CLASIFICATION_ACCEPTANCE_DATE: AbsoluteDateTime;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
-    RISK_CLASIFICATION_LEVEL: String;
+    RISK_CLASIFICATION_LEVEL: "WITH" | "WITHOUT";
   }
   export interface VQF_902_5 {
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_DEVELOPMENT: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS: BusinessAddress;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_FINANCIAL_VOLUME: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_FURTHER_INFO: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_INCOME: String;
     /**
-     * 
+     *
      * Required: true
      */
     BIZREL_ORIGIN_AMOUNT: Amount;
     /**
-     * 
+     *
      * Required: true
      */
-    BIZREL_ORIGIN_CATEGORY: String;
+    BIZREL_ORIGIN_CATEGORY:
+      | "SAVINGS"
+      | "OWN_BUSINESS"
+      | "INHERITANCE"
+      | "OTHER";
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_ORIGIN_CATEGORY_OTHER: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_ORIGIN_DETAIL: Paragraph;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_PROFESSION: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_PURPOSE: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_THIRDPARTY_AMLA_FILES: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_THIRDPARTY_REFERENCES: String;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     BIZREL_THIRDPARTY_RELATIONSHIP: String;
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
   }
   export interface VQF_902_9 {
     /**
-     * 
+     *
      * Required: true
      */
     CUSTOMER_ID: String;
     /**
-     * 
+     *
      * Required: true
      */
     FORM_FILLING_DATE: AbsoluteDateTime;
     /**
-     * 
+     *
      * Required: true
      */
     IDENTITY_CONTRACTING_PARTNER: Paragraph;
     /**
-     * 
-     * Required: 
+     *
+     * Required:
      */
     IDENTITY_LIST: Form<VQF_902_9_identity>[];
     /**
-     * 
+     *
      * Required: true
      */
     OFFICER_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGNATURE: String;
     /**
-     * 
+     *
      * Required: true
      */
     SIGN_DATE: AbsoluteDateTime;
   }
   export interface VQF_902_9_identity {
     /**
-     * 
+     *
      * Required: true
      */
     IDENTITY_BIRTHDATE: AbsoluteDate;
     /**
-     * 
+     *
      * Required: true
      */
     IDENTITY_DOMICILE: ResidentialAddress;
     /**
-     * 
+     *
      * Required: true
      */
     IDENTITY_FULL_NAME: String;
     /**
-     * 
+     *
      * Required: true
      */
     IDENTITY_NATIONALITY: CountryCode;
   }
-
-
 }
diff --git a/packages/kyc-ui/src/hooks/form.ts 
b/packages/kyc-ui/src/hooks/form.ts
index 3e6b936f9..9a3be1fdf 100644
--- a/packages/kyc-ui/src/hooks/form.ts
+++ b/packages/kyc-ui/src/hooks/form.ts
@@ -163,7 +163,10 @@ export function setValueDeeper(object: any, names: 
string[], value: any): any {
   if (object === undefined) {
     return undefinedIfEmpty({ [head]: setValueDeeper({}, rest, value) });
   }
-  return undefinedIfEmpty({ ...object, [head]: setValueDeeper(object[head] ?? 
{}, rest, value) });
+  return undefinedIfEmpty({
+    ...object,
+    [head]: setValueDeeper(object[head] ?? {}, rest, value),
+  });
 }
 
 export function getShapeFromFields(
@@ -174,15 +177,12 @@ export function getShapeFromFields(
     if ("id" in field) {
       // FIXME: this should be a validation when loading the form
       // consistency check
-      if (shape.indexOf(field.id) !== -1) {
-        throw Error(`already present: ${field.id}`);
-      }
+      // if (shape.indexOf(field.id) !== -1) {
+      //   throw Error(`already present: ${field.id}`);
+      // }
       shape.push(field.id);
     } else if (field.type === "group") {
-      Array.prototype.push.apply(
-        shape,
-        getShapeFromFields(field.fields),
-      );
+      Array.prototype.push.apply(shape, getShapeFromFields(field.fields));
     }
   });
   return shape;
@@ -196,18 +196,15 @@ export function getRequiredFields(
     if ("id" in field) {
       // FIXME: this should be a validation when loading the form
       // consistency check
-      if (shape.indexOf(field.id) !== -1) {
-        throw Error(`already present: ${field.id}`);
-      }
+      // if (shape.indexOf(field.id) !== -1) {
+      //   throw Error(`already present: ${field.id}`);
+      // }
       if (!field.required) {
         return;
       }
       shape.push(field.id);
     } else if (field.type === "group") {
-      Array.prototype.push.apply(
-        shape,
-        getRequiredFields(field.fields),
-      );
+      Array.prototype.push.apply(shape, getRequiredFields(field.fields));
     }
   });
   return shape;
@@ -221,7 +218,11 @@ export function validateRequiredFields<FormType>(
   fields.forEach((f) => {
     const path = f.split(".");
     const v = getValueDeeper(form as any, path);
-    result = setValueDeeper(result, path, v === undefined ? "required" : 
undefined);
+    result = setValueDeeper(
+      result,
+      path,
+      v === undefined ? "required" : undefined,
+    );
   });
   return result;
 }
diff --git a/packages/kyc-ui/src/pages/FillForm.tsx 
b/packages/kyc-ui/src/pages/FillForm.tsx
index 68d18e7d0..58b059144 100644
--- a/packages/kyc-ui/src/pages/FillForm.tsx
+++ b/packages/kyc-ui/src/pages/FillForm.tsx
@@ -282,12 +282,14 @@ export function FillForm({
 
       {preferences.showDebugInfo ? (
         <div class="m-4">
-          <p class="text-sm font-semibold leading-6 text-gray-900">
+          <p class="text-sm font-semibold leading-6 text-gray-300">
             <i18n.Translate>
               Debug information about the values in the form
             </i18n.Translate>
           </p>
-          <pre>{JSON.stringify(state.result, undefined, 2)}</pre>
+          <pre class="text-sm text-gray-300">
+            {JSON.stringify(state.result, undefined, 2)}
+          </pre>
         </div>
       ) : (
         <Fragment />
@@ -318,9 +320,9 @@ function getRequiredFields(fields: UIFormElementConfig[]): 
Array<UIHandlerId> {
     if ("id" in field) {
       // FIXME: this should be a validation when loading the form
       // consistency check
-      if (shape.indexOf(field.id) !== -1) {
-        throw Error(`already present: ${field.id}`);
-      }
+      // if (shape.indexOf(field.id) !== -1) {
+      //   throw Error(`already present: ${field.id}`);
+      // }
       if (!field.required) {
         return;
       }
@@ -340,9 +342,9 @@ function getShapeFromFields(
     if ("id" in field) {
       // FIXME: this should be a validation when loading the form
       // consistency check
-      if (shape.indexOf(field.id) !== -1) {
-        throw Error(`already present: ${field.id}`);
-      }
+      // if (shape.indexOf(field.id) !== -1) {
+      //   throw Error(`already present: ${field.id}`);
+      // }
       shape.push(field.id);
     } else if (field.type === "group") {
       Array.prototype.push.apply(
diff --git a/packages/kyc-ui/src/pages/Start.tsx 
b/packages/kyc-ui/src/pages/Start.tsx
index 527124ccb..d1ca99f5e 100644
--- a/packages/kyc-ui/src/pages/Start.tsx
+++ b/packages/kyc-ui/src/pages/Start.tsx
@@ -174,9 +174,15 @@ export function ShowReqList({
       <div class="isolate bg-white px-6 py-12">
         <div class="mx-auto max-w-2xl text-center">
           <h2 class="text-3xl font-bold tracking-tight text-gray-900 
sm:text-4xl">
-            <i18n.Translate>
-              Complete any of the following requirements
-            </i18n.Translate>
+            {requirements.length === 1 ? (
+              <i18n.Translate>
+                Please, complete the following requirement:
+              </i18n.Translate>
+            ) : (
+              <i18n.Translate>
+                Please, complete any of the following requirements:
+              </i18n.Translate>
+            )}
           </h2>
         </div>
 
@@ -273,11 +279,13 @@ function RequirementRow({
             <div class="min-w-0 flex-auto">
               <p class="text-sm font-semibold leading-6 text-gray-900">
                 <span class="absolute inset-x-0 -top-px bottom-0"></span>
-                <i18n.Translate>Information</i18n.Translate>
-              </p>
-              <p class="mt-1 flex text-xs leading-5 text-gray-500">
-                {req.description}
+                <i18n.Translate context="KYC_REQUIREMENT_INFO_DESCRIPTION">
+                  {req.description}
+                </i18n.Translate>
               </p>
+              {/* <p class="mt-1 flex text-xs leading-5 text-gray-500">
+                
+              </p> */}
             </div>
           </div>
         </Fragment>
@@ -307,12 +315,11 @@ function RequirementRow({
               <p class="text-sm font-semibold leading-6 text-gray-900">
                 <Button type="submit" handler={startHandler}>
                   <span class="absolute inset-x-0 -top-px bottom-0"></span>
-                  <i18n.Translate>Begin KYC process</i18n.Translate>
+                  <i18n.Translate context="KYC_REQUIREMENT_LINK_DESCRIPTION">
+                    {req.description}
+                  </i18n.Translate>
                 </Button>
               </p>
-              <p class="mt-1 flex text-xs leading-5 text-gray-500">
-                {req.description}
-              </p>
             </div>
           </div>
           <div class="flex shrink-0 items-center gap-x-4">
diff --git a/packages/kyc-ui/src/pages/TriggerKyc.tsx 
b/packages/kyc-ui/src/pages/TriggerKyc.tsx
index 9195ed56c..c2a132138 100644
--- a/packages/kyc-ui/src/pages/TriggerKyc.tsx
+++ b/packages/kyc-ui/src/pages/TriggerKyc.tsx
@@ -322,7 +322,7 @@ export function TriggerKyc({ onKycStarted }: Props): VNode {
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000070`),
+              Amounts.parseOrThrow(`${config.currency}:1000000`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@@ -334,7 +334,7 @@ export function TriggerKyc({ onKycStarted }: Props): VNode {
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000080`),
+              Amounts.parseOrThrow(`${config.currency}:1000010`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
@@ -346,84 +346,84 @@ export function TriggerKyc({ onKycStarted }: Props): 
VNode {
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000000`),
+              Amounts.parseOrThrow(`${config.currency}:1000020`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF Start</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.1</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000010`),
+              Amounts.parseOrThrow(`${config.currency}:1000030`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF Natural</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.4</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000020`),
+              Amounts.parseOrThrow(`${config.currency}:1000040`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF operational</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.5</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000030`),
+              Amounts.parseOrThrow(`${config.currency}:1000050`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF foundation</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.9</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000040`),
+              Amounts.parseOrThrow(`${config.currency}:1000060`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF insurance</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.11</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000050`),
+              Amounts.parseOrThrow(`${config.currency}:1000070`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF trust</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.12</i18n.Translate>
           </Button>
         </div>
         <div>
           <Button
             type="submit"
             handler={triggerAmount(
-              Amounts.parseOrThrow(`${config.currency}:1000060`),
+              Amounts.parseOrThrow(`${config.currency}:1000080`),
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
-            <i18n.Translate>Trigger VQF other</i18n.Translate>
+            <i18n.Translate>Trigger VQF 902.13</i18n.Translate>
           </Button>
         </div>
         <div>
@@ -434,6 +434,30 @@ export function TriggerKyc({ onKycStarted }: Props): VNode 
{
             )}
             // disabled={!submitHandler}
             class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+          >
+            <i18n.Translate>Trigger VQF 902.14</i18n.Translate>
+          </Button>
+        </div>
+        <div>
+          <Button
+            type="submit"
+            handler={triggerAmount(
+              Amounts.parseOrThrow(`${config.currency}:1000100`),
+            )}
+            // disabled={!submitHandler}
+            class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+          >
+            <i18n.Translate>Trigger VQF 902.15</i18n.Translate>
+          </Button>
+        </div>
+        <div>
+          <Button
+            type="submit"
+            handler={triggerAmount(
+              Amounts.parseOrThrow(`${config.currency}:1000110`),
+            )}
+            // disabled={!submitHandler}
+            class="disabled:opacity-50 disabled:cursor-default rounded-md 
bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm 
hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 
focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
           >
             <i18n.Translate>Challenger test</i18n.Translate>
           </Button>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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