diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py
index 0a24683b1a136fd672bd76a4ff86703123a807f6..86583af0d63e6f84dcbc18a90469ee3f0e6ff3ce 100644
--- a/aleksis/apps/paweljong/forms.py
+++ b/aleksis/apps/paweljong/forms.py
@@ -489,3 +489,25 @@ class RegistrationStatesForm(forms.ModelForm):
     class Meta:
         model = RegistrationState
         exclude = []
+
+
+class PersonGroupFormGroup(forms.Form):
+
+    layout = Layout("group")
+
+    group = forms.ModelChoiceField(
+        label=_("Group"),
+        queryset=Group.objects.all(),
+        required=True,
+        widget=ModelSelect2Widget(
+            search_fields=["name__icontains"],
+            attrs={"data-minimum-input-length": 0, "class": "browser-default"},
+        ),
+    )
+
+
+class PersonGroupFormPerson(forms.Form):
+
+    layout = Layout("username")
+
+    username = forms.CharField(required=True, label=_("Person"))
diff --git a/aleksis/apps/paweljong/templates/paweljong/person_group_wizard.html b/aleksis/apps/paweljong/templates/paweljong/person_group_wizard.html
new file mode 100644
index 0000000000000000000000000000000000000000..08d4672291186dd3b9f9e4e2de09c9f0e18cfa09
--- /dev/null
+++ b/aleksis/apps/paweljong/templates/paweljong/person_group_wizard.html
@@ -0,0 +1,36 @@
+{% extends "core/base.html" %}
+{% load material_form i18n %}
+
+{% block browser_title %}{% trans "Add person to group" %}{% endblock %}
+{% block page_title %}{% trans "Add person to group" %}{% endblock %}
+
+{% block content %}
+
+ <form method="post">
+     {% csrf_token %}
+     {{ wizard.form.media }}
+     {{ wizard.management_form }}
+     {% if wizard.form.forms %}
+         {{ wizard.form.management_form }}
+         {% for form in wizard.form.forms %}
+             {% form form=form %}{% endform %}
+         {% endfor %}
+     {% else %}
+         {% form form=wizard.form %}{% endform %}
+     {% endif %}
+ 
+     {% if wizard.steps.prev %}
+         <button type="submit" value="{{ wizard.steps.first }}" class="btn waves-effect waves-light color-primary" name="wizard_goto_step">
+             <i class="material-icons left">first_page</i>
+             {% trans "first step" %}
+         </button>
+         <button type="submit" value="{{ wizard.steps.prev }}" class="btn waves-effect waves-light color-secondary" name="wizard_goto_step">
+             <i class="material-icons left">arrow_back_ios</i>
+             {% trans "previous step" %}
+         </button>
+     {% endif %}
+     {% trans "Next" as caption %}
+     {% include "core/partials/save_button.html" with caption=caption icon="navigate_next" %}
+ </form>
+
+{% endblock %}
diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py
index 647f564fbd05b84904dd99f2e28cce1fef3f47ef..0fa603da28ae3ce2a6cd046788f5abdb55b6ae87 100644
--- a/aleksis/apps/paweljong/urls.py
+++ b/aleksis/apps/paweljong/urls.py
@@ -4,6 +4,8 @@ from aleksis.apps.postbuero.forms import MailAddForm
 
 from . import views
 from .forms import (
+    PersonGroupFormGroup,
+    PersonGroupFormPerson,
     RegisterEventAccount,
     RegisterEventAdditional,
     RegisterEventConsent,
@@ -35,6 +37,11 @@ account_conditions = {
     "email": views.is_email_needed,
 }
 
+add_persons_to_group_forms = [
+    ("group", PersonGroupFormGroup),
+    ("person", PersonGroupFormPerson),
+]
+
 urlpatterns = [
     path("event/<slug:slug>/edit", views.EditEventView.as_view(), name="edit_event_by_slug"),
     path(
@@ -42,6 +49,11 @@ urlpatterns = [
         views.RegisterEventWizardView.as_view(register_forms, condition_dict=condition_dict),
         name="register_event_by_slug",
     ),
+    path(
+        "group_persons/add",
+        views.PersonGroupWizardView.as_view(add_persons_to_group_forms),
+        name="add_persons_to_group",
+    ),
     path("event/<slug:slug>", views.EventFullView.as_view(), name="event_by_name"),
     path("event/<slug:slug>/detail", views.EventDetailView.as_view(), name="event_detail_by_name"),
     path(
diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py
index 74abc60305afb9e4c168e4b0b6960bbf8b9f9ffe..fb9f3e19899b8879daa9dd52432511219bfdfd8d 100644
--- a/aleksis/apps/paweljong/views.py
+++ b/aleksis/apps/paweljong/views.py
@@ -24,8 +24,8 @@ from templated_email import send_templated_mail
 
 from aleksis.apps.postbuero.models import MailAddress
 from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
-from aleksis.core.models import Activity, Person
 from aleksis.core.tables import AdditionalFieldsTable, GroupsTable
+from aleksis.core.models import Activity, Person, Group
 from aleksis.core.util import messages
 from aleksis.core.util.core_helpers import get_site_preferences, objectgetter_optional
 
@@ -914,3 +914,36 @@ class EventDetailView(PermissionRequiredMixin, DetailView):
         context["additional_fields_table"] = additional_fields_table
 
         return context
+
+
+class PersonGroupWizardView(SessionWizardView):
+    template_name = "paweljong/person_group_wizard.html"
+    file_storage = settings.DEFAULT_FILE_STORAGE
+
+    def get_form_initial(self, step):
+
+        initial = self.initial_dict.get(step, {})
+
+        if step == "group":
+            if self.request.session["person_group_group"]:
+                group = Group.objects.get(id=self.request.session["person_group_group"])
+                initial.update(
+                    {
+                        "group": group,
+                    }
+                )
+
+        return self.initial_dict.get(step, initial)
+
+    def done(self, form_list, **kwargs):
+
+        cleaned_data_group = self.get_cleaned_data_for_step("group")
+        cleaned_data_person = self.get_cleaned_data_for_step("person")
+
+        # Add person to group
+        group = cleaned_data_group["group"]
+        self.request.session["person_group_group"] = group.id
+        person = Person.objects.get(user__username=cleaned_data_person["username"])
+        group.members.add(person)
+
+        return redirect("add_persons_to_group")