diff --git a/ticdesk_events/forms.py b/ticdesk_events/forms.py
index 14e5c34af5fc6fee44a53820cdf4ac30a810d59c..6789cf08acc5fbf711713343e7dbdf933cfba412 100644
--- a/ticdesk_events/forms.py
+++ b/ticdesk_events/forms.py
@@ -6,7 +6,7 @@ from localflavor.generic.forms import IBANFormField
 from localflavor.generic.countries.sepa import IBAN_SEPA_COUNTRIES
 import phonenumbers
 
-from .models import Voucher
+from .models import RegistrationField, Voucher
 
 CHANNEL_CHOICES = [
     ('none', _('Keine Angabe')),
@@ -129,16 +129,24 @@ class EventRegisterForm(forms.Form):
     clean_mobile = clean_phonenumber('mobile')
     clean_guardian_mobile = clean_phonenumber('guardian_mobile')
 
-    def __init__(self, project, *args, **kwargs):
+    def __init__(self, project, person, *args, **kwargs):
         super(EventRegisterForm, self).__init__(*args, **kwargs)
+        self._project = project
+        self._person = person
 
         self.fields['voucher_code'].validators.append(is_valid_voucher_for(project.cn))
 
-        EventAdditionSurveyForm.__init__(self, project, *args, **kwargs)
+        EventAdditionSurveyForm.__init__(self, project, person, *args, **kwargs)
+
+    def save(self):
+        super(EventRegisterForm, self).save()
+        EventAdditionSurveyForm.save(self)
 
 class EventAdditionalSurveyForm(forms.Form):
-    def __init__(self, project, *args, **kwargs):
+    def __init__(self, project, person, *args, **kwargs):
         super(EventAdditionalSurveyForm, self).__init__(*args, **kwargs)
+        self._project = project
+        self._person = person
 
         for field in project.registration_fields:
             label, help_text, *choices = field.split('|')
@@ -152,6 +160,19 @@ class EventAdditionalSurveyForm(forms.Form):
 
             self.fields[var] = field_attr
 
+    def save(self):
+        for field in self._project.registration_fields:
+            label, help_text, *choices = field.split('|')
+            var = re.sub(r'\W|^(?=\d)', '_', label)
+
+            try:
+                field = RegistrationField.objects.get(project_cn = self._project.cn, person_uid=self._person.uid, title=label)
+            except RegistrationField.DoesNotExist:
+                field = RegistrationFeild.objects.create(project_cn = self._project.cn, person_uid=self._person.uid, title=label)
+
+            field.content = self.cleaned_data[var]
+            field.save()
+
 class EventFeedbackForm(forms.Form):
     comment_private = forms.CharField(required=False, label=_('Kommentar für das Team'),
         help_text=_('Dieser Kommentar ist nur für das Team. Du kannst hier alles aufschreiben, was du uns noch als Feedback mitteilen möchtest.'),
@@ -177,6 +198,7 @@ class EventFeedbackForm(forms.Form):
 
     def __init__(self, project, *args, **kwargs):
         super(EventFeedbackForm, self).__init__(*args, **kwargs)
+        self._project = project
 
         for aspect in project.feedback_aspects:
             var = re.sub(r'\W|^(?=\d)', '_', aspect)
diff --git a/ticdesk_events/views.py b/ticdesk_events/views.py
index 173dc6379fda7716ba9b4c3fc581e66f68804d90..98370b588b9307baf20aacb271198b19ac53a0c3 100644
--- a/ticdesk_events/views.py
+++ b/ticdesk_events/views.py
@@ -57,7 +57,7 @@ def register_event(request, cn):
         'school_class': current_person.ou,
         'channel': 'none'
     }
-    register_form = EventRegisterForm(event, initial=initial)
+    register_form = EventRegisterForm(event, current_person, initial=initial)
 
     # Produce error if registration is not possible
     if not event.can_register(request):
@@ -70,7 +70,7 @@ def register_event(request, cn):
         return render(request, 'ticdesk_events/register_event.html', context)
 
     if request.method == 'POST':
-        register_form = EventRegisterForm(event, request.POST, initial=initial)
+        register_form = EventRegisterForm(event, current_person, request.POST, initial=initial)
         if register_form.is_valid():
             # Add the current person to the event
             event.add_member(current_person)