<%= ff.label :subject, t('subject'), class: 'label' %>
diff --git a/app/views/submissions/show.html.erb b/app/views/submissions/show.html.erb
index fff9f56f..3256ad36 100644
--- a/app/views/submissions/show.html.erb
+++ b/app/views/submissions/show.html.erb
@@ -19,6 +19,11 @@
           <%= svg_icon('external_link', class: 'w-6 h-6') %>
           
         
+      <% else %>
+        <%= link_to submission_events_path(@submission), class: 'white-button', data: { turbo_frame: :modal } do %>
+          <%= svg_icon('logs', class: 'w-6 h-6') %>
+          
+        <% end %>
       <% end %>
       <% if last_submitter %>
         <% if is_all_completed || !is_combined_enabled %>
diff --git a/app/views/submit_form/_annotations.html.erb b/app/views/submit_form/_annotations.html.erb
new file mode 100644
index 00000000..f4fbaaff
--- /dev/null
+++ b/app/views/submit_form/_annotations.html.erb
@@ -0,0 +1 @@
+<%= render partial: 'submissions/annotation', collection: annots, as: :annot %>
diff --git a/app/views/submit_form/show.html.erb b/app/views/submit_form/show.html.erb
index 28f94fef..02967492 100644
--- a/app/views/submit_form/show.html.erb
+++ b/app/views/submit_form/show.html.erb
@@ -47,8 +47,8 @@
             
                
               
-                <% document_annots_index[index]&.each do |annot| %>
-                  <%= render 'submissions/annotation', annot: %>
+                <% if annots = document_annots_index[index] %>
+                  <%= render 'submit_form/annotations', annots: %>
                 <% end %>
                 <% fields_index.dig(document.uuid, index)&.each do |(area, field)| %>
                   <% value = values[field['uuid']].presence || (field['default_value'].present? ? Submitters::SubmitValues.template_default_value_for_submitter(field['default_value'], @submitter.submission.submitters.find { |e| e.uuid == field['submitter_uuid'] }, with_time: false) : nil) %>
diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml
index 924d46fd..e39a0ce4 100644
--- a/config/locales/i18n.yml
+++ b/config/locales/i18n.yml
@@ -695,6 +695,17 @@ en: &en
   overdue_payment: Overdue Payment
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Your Pro Plan has been suspended due to unpaid invoices. You can update your payment details to settle the invoice and continue using DocuSeal or cancel your subscription.
   manage_subscription: Manage Subscription
+  submission_created_by_email_html: 'Submission created by %{email}'
+  submission_created_by_email_via_source_html: 'Submission created by %{email} via %{source}'
+  submission_created_via_source_html: 'Submission created via %{source}'
+  pro_user_seats_used: Pro user seats used
+  manage_plan: Manage plan
+  submission_sources:
+    api: API
+    bulk: Bulk Send
+    embed: Embedding
+    invie: Invite
+    link: Link
   submission_event_names:
     send_email_to_html: 'Email sent to %{submitter_name}'
     send_reminder_email_to_html: 'Reminder email sent to %{submitter_name}'
@@ -1410,6 +1421,17 @@ es: &es
   overdue_payment: Pago Atrasado
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Tu plan Pro ha sido suspendido debido a facturas impagas. Puedes actualizar tus datos de pago para liquidar la factura y seguir usando DocuSeal o cancelar tu suscripción.
   manage_subscription: Gestionar Suscripción
+  submission_created_by_email_html: 'Envío creado por %{email}'
+  submission_created_by_email_via_source_html: 'Envío creado por %{email} a través de %{source}'
+  submission_created_via_source_html: 'Envío creado a través de %{source}'
+  pro_user_seats_used: Plazas de usuario Pro en uso
+  manage_plan: Gestionar plan
+  submission_sources:
+    api: API
+    bulk: Envío masivo
+    embed: Integración
+    invite: Invitación
+    link: Enlace
   submission_event_names:
     send_email_to_html: 'Correo electrónico enviado a %{submitter_name}'
     send_reminder_email_to_html: 'Correo de recordatorio enviado a %{submitter_name}'
@@ -2124,6 +2146,17 @@ it: &it
   overdue_payment: Pagamento Scaduto
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Il tuo piano Pro è stato sospeso a causa di fatture non pagate. Puoi aggiornare i tuoi dati di pagamento per saldare la fattura e continuare a utilizzare DocuSeal o annullare l'abbonamento.
   manage_subscription: Gestisci Abbonamento
+  submission_created_by_email_html: 'Invio creato da %{email}'
+  submission_created_by_email_via_source_html: 'Invio creato da %{email} tramite %{source}'
+  submission_created_via_source_html: 'Invio creato tramite %{source}'
+  pro_user_seats_used: Posti utente Pro in uso
+  manage_plan: Gestisci piano
+  submission_sources:
+    api: API
+    bulk: Invio massivo
+    embed: Incorporamento
+    invite: Invito
+    link: Link
   submission_event_names:
     send_email_to_html: 'E-mail inviato a %{submitter_name}'
     send_reminder_email_to_html: 'E-mail di promemoria inviato a %{submitter_name}'
@@ -2840,6 +2873,17 @@ fr: &fr
   overdue_payment: Paiement En Retard
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Votre plan Pro a été suspendu en raison de factures impayées. Vous pouvez mettre à jour vos informations de paiement pour régler la facture et continuer à utiliser DocuSeal ou annuler votre abonnement.
   manage_subscription: Gérer l'Abonnement
+  submission_created_by_email_html: 'Soumission créée par %{email}'
+  submission_created_by_email_via_source_html: 'Soumission créée par %{email} via %{source}'
+  submission_created_via_source_html: 'Soumission créée via %{source}'
+  pro_user_seats_used: Places utilisateur Pro en cours d'utilisation
+  manage_plan: Gérer le plan
+  submission_sources:
+    api: API
+    bulk: Envoi en masse
+    embed: Intégration
+    invite: Invitation
+    link: Lien
   submission_event_names:
     send_email_to_html: 'E-mail envoyé à %{submitter_name}'
     send_reminder_email_to_html: 'E-mail de rappel envoyé à %{submitter_name}'
@@ -3555,6 +3599,17 @@ pt: &pt
   overdue_payment: Pagamento Atrasado
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Seu plano Pro foi suspenso devido a faturas não pagas. Você pode atualizar seus dados de pagamento para quitar a fatura e continuar usando o DocuSeal ou cancelar sua assinatura.
   manage_subscription: Gerenciar Assinatura
+  submission_created_by_email_html: 'Envio criado por %{email}'
+  submission_created_by_email_via_source_html: 'Envio criado por %{email} via %{source}'
+  submission_created_via_source_html: 'Envio criado via %{source}'
+  pro_user_seats_used: Lugares de usuário Pro em uso
+  manage_plan: Gerenciar plano
+  submission_sources:
+    api: API
+    bulk: Envio em massa
+    embed: Incorporação
+    invite: Convite
+    link: Link
   submission_event_names:
     send_email_to_html: 'E-mail enviado para %{submitter_name}'
     send_reminder_email_to_html: 'E-mail de lembrete enviado para %{submitter_name}'
@@ -4270,6 +4325,17 @@ de: &de
   overdue_payment: Überfällige Zahlung
   your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Ihr Pro-Plan wurde aufgrund unbezahlter Rechnungen ausgesetzt. Sie können Ihre Zahlungsdaten aktualisieren, um die Rechnung zu begleichen und DocuSeal weiterhin zu nutzen, oder Ihr Abonnement kündigen.
   manage_subscription: Abonnement Verwalten
+  submission_created_by_email_html: 'Übermittlung erstellt von %{email}'
+  submission_created_by_email_via_source_html: 'Übermittlung erstellt durch %{email} über %{source}'
+  submission_created_via_source_html: 'Übermittlung erstellt über %{source}'
+  pro_user_seats_used: Verwendete Pro-Benutzerplätze
+  manage_plan: Plan verwalten
+  submission_sources:
+    api: API
+    bulk: Massenversand
+    embed: Einbettung
+    invite: Einladung
+    link: Link
   submission_event_names:
     send_email_to_html: 'E-Mail gesendet an %{submitter_name}'
     send_reminder_email_to_html: 'Erinnerungs-E-Mail gesendet an %{submitter_name}'
diff --git a/config/routes.rb b/config/routes.rb
index d4d792c6..7e24097b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -72,6 +72,7 @@ Rails.application.routes.draw do
   resources :submissions, only: %i[index], controller: 'submissions_dashboard'
   resources :submissions, only: %i[show destroy] do
     resources :unarchive, only: %i[create], controller: 'submissions_unarchive'
+    resources :events, only: %i[index], controller: 'submission_events'
   end
   resources :submitters, only: %i[edit update]
   resources :console_redirect, only: %i[index]
diff --git a/lib/submissions/generate_combined_attachment.rb b/lib/submissions/generate_combined_attachment.rb
index e5dfc892..4e996634 100644
--- a/lib/submissions/generate_combined_attachment.rb
+++ b/lib/submissions/generate_combined_attachment.rb
@@ -23,9 +23,15 @@ module Submissions
           **Submissions::GenerateResultAttachments.build_signing_params(submitter, pkcs, tsa_url)
         }
 
-        pdf.sign(io, **sign_params)
+        begin
+          pdf.sign(io, **sign_params)
+        rescue HexaPDF::MalformedPDFError => e
+          Rollbar.error(e) if defined?(Rollbar)
+
+          pdf.sign(io, write_options: { incremental: false }, **sign_params)
+        end
       else
-        pdf.write(io)
+        pdf.write(io, incremental: true, validate: false)
       end
 
       Submissions::GenerateResultAttachments.maybe_enable_ltv(io, sign_params)
diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb
index a5941863..3039ac19 100644
--- a/lib/submissions/generate_result_attachments.rb
+++ b/lib/submissions/generate_result_attachments.rb
@@ -23,6 +23,7 @@ module Submissions
     A4_SIZE = [595, 842].freeze
 
     TESTING_FOOTER = 'Testing Document - NOT LEGALLY BINDING'
+    DEFAULT_FONTS = %w[Times Helvetica Courier].freeze
 
     MISSING_GLYPH_REPLACE = {
       '▪' => '-',
@@ -190,7 +191,8 @@ module Submissions
 
           fill_color = field.dig('preferences', 'color').presence
 
-          font_name = field.dig('preferences', 'font').presence || FONT_NAME
+          font_name = field.dig('preferences', 'font')
+          font_name = FONT_NAME unless font_name.in?(DEFAULT_FONTS)
           font = pdf.fonts.add(font_name)
 
           value = submitter.values[field['uuid']]
diff --git a/lib/templates/clone.rb b/lib/templates/clone.rb
index cd1118a3..6210354d 100644
--- a/lib/templates/clone.rb
+++ b/lib/templates/clone.rb
@@ -32,6 +32,7 @@ module Templates
       template
     end
 
+    # rubocop:disable Metrics, Style/CombinableLoops
     def update_submitters_and_fields_and_schema(cloned_submitters, cloned_fields, cloned_schema)
       submitter_uuids_replacements = {}
       field_uuids_replacements = {}
@@ -43,6 +44,20 @@ module Templates
         submitter['uuid'] = new_submitter_uuid
       end
 
+      cloned_submitters.each do |submitter|
+        if submitter['optional_invite_by_uuid'].present?
+          submitter['optional_invite_by_uuid'] = submitter_uuids_replacements[submitter['optional_invite_by_uuid']]
+        end
+
+        if submitter['invite_by_uuid'].present?
+          submitter['invite_by_uuid'] = submitter_uuids_replacements[submitter['invite_by_uuid']]
+        end
+
+        if submitter['linked_to_uuid'].present?
+          submitter['linked_to_uuid'] = submitter_uuids_replacements[submitter['linked_to_uuid']]
+        end
+      end
+
       cloned_fields.each do |field|
         new_field_uuid = SecureRandom.uuid
 
@@ -75,5 +90,6 @@ module Templates
 
       [cloned_submitters, cloned_fields, cloned_schema]
     end
+    # rubocop:enable Metrics, Style/CombinableLoops
   end
 end
diff --git a/spec/factories/templates.rb b/spec/factories/templates.rb
index 0f737512..8f619353 100644
--- a/spec/factories/templates.rb
+++ b/spec/factories/templates.rb
@@ -9,6 +9,7 @@ FactoryBot.define do
 
     transient do
       submitter_count { 1 }
+      attachment_count { 1 }
       only_field_types do
         %w[text date checkbox radio signature number multiple select initials image file stamp cells phone payment]
       end
@@ -16,20 +17,6 @@ FactoryBot.define do
     end
 
     after(:create) do |template, ev|
-      blob = ActiveStorage::Blob.create_and_upload!(
-        io: Rails.root.join('spec/fixtures/sample-document.pdf').open,
-        filename: 'sample-document.pdf',
-        content_type: 'application/pdf'
-      )
-      attachment = ActiveStorage::Attachment.create!(
-        blob:,
-        name: :documents,
-        record: template
-      )
-
-      Templates::ProcessDocument.call(attachment, attachment.download)
-
-      template.schema = [{ attachment_uuid: attachment.uuid, name: 'sample-document' }]
       number_words = %w[first second third fourth fifth sixth seventh eighth ninth tenth]
 
       template.submitters = Array.new(ev.submitter_count) do |i|
@@ -39,296 +26,319 @@ FactoryBot.define do
         }
       end
 
-      template.fields = template.submitters.reduce([]) do |fields, submitter|
-        fields += [
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'First Name',
-            'type' => 'text',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.09273546006944444,
-                'y' => 0.1099851117387033,
-                'w' => 0.2701497395833333,
-                'h' => 0.0372705365913556,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Birthday',
-            'type' => 'date',
-            'required' => true,
-            'preferences' => { 'format' => 'DD/MM/YYYY' },
-            'areas' => [
-              {
-                'x' => 0.09166666666666666,
-                'y' => 0.1762778204144282,
-                'w' => 0.2763888888888889,
-                'h' => 0.0359029261474578,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Do you agree?',
-            'type' => 'checkbox',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.09051106770833334,
-                'y' => 0.227587027259332,
-                'w' => 0.2784450954861111,
-                'h' => 0.04113074042239687,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'First child',
-            'type' => 'radio',
-            'required' => true,
-            'preferences' => {},
-            'options' => [
-              { 'value' => 'Girl', 'uuid' => SecureRandom.uuid },
-              { 'value' => 'Boy', 'uuid' => SecureRandom.uuid }
-            ],
-            'areas' => [
-              {
-                'x' => 0.09027777777777778,
-                'y' => 0.3020184190330008,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Signature',
-            'type' => 'signature',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.08611111111111111,
-                'y' => 0.3487183422870299,
-                'w' => 0.2,
-                'h' => 0.0707269155206287,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'House number',
-            'type' => 'number',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.08333333333333333,
-                'y' => 0.4582041442824252,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Colors',
-            'type' => 'multiple',
-            'required' => true,
-            'preferences' => {},
-            'options' => [
-              { 'value' => 'Red', 'uuid' => SecureRandom.uuid },
-              { 'value' => 'Green', 'uuid' => SecureRandom.uuid },
-              { 'value' => 'Blue', 'uuid' => SecureRandom.uuid }
-            ],
-            'areas' => [
-              {
-                'x' => 0.45,
-                'y' => 0.1133998465080583,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Gender',
-            'type' => 'select',
-            'required' => true,
-            'preferences' => {},
-            'options' => [
-              { 'value' => 'Male', 'uuid' => SecureRandom.uuid },
-              { 'value' => 'Female', 'uuid' => SecureRandom.uuid }
-            ],
-            'areas' => [
-              {
-                'x' => 0.4513888888888889,
-                'y' => 0.1752954719877206,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Initials',
-            'type' => 'initials',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.4486111111111111,
-                'y' => 0.2273599386032233,
-                'w' => 0.1,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Avatar',
-            'type' => 'image',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.7180555555555556,
-                'y' => 0.1129547198772064,
-                'w' => 0.2,
-                'h' => 0.1414538310412574,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Attachment',
-            'type' => 'file',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.7166666666666667,
-                'y' => 0.3020107444359171,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Stamp',
-            'type' => 'stamp',
-            'required' => true,
-            'readonly' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.7166666666666667,
-                'y' => 0.3771910974673829,
-                'w' => 0.2,
-                'h' => 0.0707269155206287,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Cell code',
-            'type' => 'cells',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.4472222222222222,
-                'y' => 0.3530851880276286,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'cell_w' => 0.04,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Payment',
-            'type' => 'payment',
-            'required' => true,
-            'preferences' => { 'currency' => 'EUR', 'price' => 1000 },
-            'areas' => [
-              {
-                'x' => 0.4486111111111111,
-                'y' => 0.43168073676132,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          },
-          {
-            'uuid' => SecureRandom.uuid,
-            'submitter_uuid' => submitter['uuid'],
-            'name' => 'Mobile Phone',
-            'type' => 'phone',
-            'required' => true,
-            'preferences' => {},
-            'areas' => [
-              {
-                'x' => 0.44443359375,
-                'y' => 0.3010283960092095,
-                'w' => 0.2,
-                'h' => 0.02857142857142857,
-                'attachment_uuid' => attachment.uuid,
-                'page' => 0
-              }
-            ]
-          }
-        ].select { |f| ev.only_field_types.include?(f['type']) && ev.except_field_types.exclude?(f['type']) }
+      ev.attachment_count.times do |i|
+        attachment_index = i + 1 if i > 0
+        field_index = "(#{attachment_index})" if attachment_index
+
+        blob = ActiveStorage::Blob.create_and_upload!(
+          io: Rails.root.join('spec/fixtures/sample-document.pdf').open,
+          filename: 'sample-document.pdf',
+          content_type: 'application/pdf'
+        )
+        attachment = ActiveStorage::Attachment.create!(
+          blob:,
+          name: :documents,
+          record: template
+        )
+
+        Templates::ProcessDocument.call(attachment, attachment.download)
+
+        template.schema << {
+          attachment_uuid: attachment.uuid,
+          name: ['sample-document', attachment_index].compact.join('-')
+        }
+
+        template.fields += template.submitters.reduce([]) do |fields, submitter|
+          fields += [
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['First Name', field_index].compact.join(' '),
+              'type' => 'text',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.09273546006944444,
+                  'y' => 0.1099851117387033,
+                  'w' => 0.2701497395833333,
+                  'h' => 0.0372705365913556,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Birthday', field_index].compact.join(' '),
+              'type' => 'date',
+              'required' => true,
+              'preferences' => { 'format' => 'DD/MM/YYYY' },
+              'areas' => [
+                {
+                  'x' => 0.09166666666666666,
+                  'y' => 0.1762778204144282,
+                  'w' => 0.2763888888888889,
+                  'h' => 0.0359029261474578,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Do you agree?', field_index].compact.join(' '),
+              'type' => 'checkbox',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.09051106770833334,
+                  'y' => 0.227587027259332,
+                  'w' => 0.2784450954861111,
+                  'h' => 0.04113074042239687,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['First child', field_index].compact.join(' '),
+              'type' => 'radio',
+              'required' => true,
+              'preferences' => {},
+              'options' => [
+                { 'value' => 'Girl', 'uuid' => SecureRandom.uuid },
+                { 'value' => 'Boy', 'uuid' => SecureRandom.uuid }
+              ],
+              'areas' => [
+                {
+                  'x' => 0.09027777777777778,
+                  'y' => 0.3020184190330008,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Signature', field_index].compact.join(' '),
+              'type' => 'signature',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.08611111111111111,
+                  'y' => 0.3487183422870299,
+                  'w' => 0.2,
+                  'h' => 0.0707269155206287,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['House number', field_index].compact.join(' '),
+              'type' => 'number',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.08333333333333333,
+                  'y' => 0.4582041442824252,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Colors', field_index].compact.join(' '),
+              'type' => 'multiple',
+              'required' => true,
+              'preferences' => {},
+              'options' => [
+                { 'value' => 'Red', 'uuid' => SecureRandom.uuid },
+                { 'value' => 'Green', 'uuid' => SecureRandom.uuid },
+                { 'value' => 'Blue', 'uuid' => SecureRandom.uuid }
+              ],
+              'areas' => [
+                {
+                  'x' => 0.45,
+                  'y' => 0.1133998465080583,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Gender', field_index].compact.join(' '),
+              'type' => 'select',
+              'required' => true,
+              'preferences' => {},
+              'options' => [
+                { 'value' => 'Male', 'uuid' => SecureRandom.uuid },
+                { 'value' => 'Female', 'uuid' => SecureRandom.uuid }
+              ],
+              'areas' => [
+                {
+                  'x' => 0.4513888888888889,
+                  'y' => 0.1752954719877206,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Initials', field_index].compact.join(' '),
+              'type' => 'initials',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.4486111111111111,
+                  'y' => 0.2273599386032233,
+                  'w' => 0.1,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Avatar', field_index].compact.join(' '),
+              'type' => 'image',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.7180555555555556,
+                  'y' => 0.1129547198772064,
+                  'w' => 0.2,
+                  'h' => 0.1414538310412574,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Attachment', field_index].compact.join(' '),
+              'type' => 'file',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.7166666666666667,
+                  'y' => 0.3020107444359171,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Stamp', field_index].compact.join(' '),
+              'type' => 'stamp',
+              'required' => true,
+              'readonly' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.7166666666666667,
+                  'y' => 0.3771910974673829,
+                  'w' => 0.2,
+                  'h' => 0.0707269155206287,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Cell code', field_index].compact.join(' '),
+              'type' => 'cells',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.4472222222222222,
+                  'y' => 0.3530851880276286,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'cell_w' => 0.04,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Payment', field_index].compact.join(' '),
+              'type' => 'payment',
+              'required' => true,
+              'preferences' => { 'currency' => 'EUR', 'price' => 1000 },
+              'areas' => [
+                {
+                  'x' => 0.4486111111111111,
+                  'y' => 0.43168073676132,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            },
+            {
+              'uuid' => SecureRandom.uuid,
+              'submitter_uuid' => submitter['uuid'],
+              'name' => ['Mobile Phone', field_index].compact.join(' '),
+              'type' => 'phone',
+              'required' => true,
+              'preferences' => {},
+              'areas' => [
+                {
+                  'x' => 0.44443359375,
+                  'y' => 0.3010283960092095,
+                  'w' => 0.2,
+                  'h' => 0.02857142857142857,
+                  'attachment_uuid' => attachment.uuid,
+                  'page' => 0
+                }
+              ]
+            }
+          ].select { |f| ev.only_field_types.include?(f['type']) && ev.except_field_types.exclude?(f['type']) }
 
-        fields
+          fields
+        end
       end
 
       template.save!