diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index dc0d5dfe5262c8dcc7c988b203fc5cfa26e34bfc..7034599455b8bc118527cef5d26fb570c4435517 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,17 +9,9 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
-Deprecated
-~~~~~~~~~~
-
-* Numeric object IDs (primary keys) will be removed and replaced by UUIDs in
-  AlekSIS-Core 4.0. All apps must update their URLs, foriegn keys and the
-  like.
-
 Added
 ~~~~~
 
-* Introduce a UUID for every object
 * Introduce GraphQL API
 
 `2.10`_ - 2022-06-25
diff --git a/aleksis/core/migrations/0042_add_uuid_field.py b/aleksis/core/migrations/0042_add_uuid_field.py
deleted file mode 100644
index 6f8437c69f049de3ba15f6faad129e64036ca132..0000000000000000000000000000000000000000
--- a/aleksis/core/migrations/0042_add_uuid_field.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Generated by Django 3.2.14 on 2022-07-16 12:49
-
-import aleksis.core.mixins
-from django.db import migrations, models
-import django.utils.timezone
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('core', '0041_update_gender_choices'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='activity',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='additionalfield',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='announcement',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='announcementrecipient',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='custommenu',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='custommenuitem',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='dashboardwidgetorder',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='datacheckresult',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='group',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='grouptype',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='notification',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='pdffile',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='person',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='persongroupthrough',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='schoolterm',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-        migrations.AddField(
-            model_name='taskuserassignment',
-            name='uuid',
-            field=models.UUIDField(default=aleksis.core.mixins._generate_object_uuid, editable=False, unique=True),
-        ),
-    ]
diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py
index d81c736973aaa27efba672461fd68a67379d5eee..c6cee9a8c6bbefed3439eef156b685f5484e4a13 100644
--- a/aleksis/core/mixins.py
+++ b/aleksis/core/mixins.py
@@ -1,7 +1,6 @@
 # flake8: noqa: DJ12
 
 import os
-import uuid
 from datetime import datetime
 from typing import Any, Callable, List, Optional, Union
 
@@ -83,10 +82,6 @@ def _generate_one_to_one_proxy_property(field, subfield):
     return property(getter, setter)
 
 
-def _generate_object_uuid():
-    return uuid.uuid5(uuid.NAMESPACE_URL, settings.BASE_URL)
-
-
 class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase):
     """Base model for all objects in AlekSIS apps.
 
@@ -131,8 +126,6 @@ class ExtensibleModel(models.Model, metaclass=_ExtensibleModelBase):
         - Dominik George <dominik.george@teckids.org>
     """
 
-    uuid = models.UUIDField(unique=True, default=_generate_object_uuid, editable=False)
-
     # Defines a material design icon associated with this type of model
     icon_ = "radio_button_unchecked"