diff --git a/biscuit/core/apps.py b/biscuit/core/apps.py
index b40f987a4274c49df092a8535ce425bd848ca55f..2d4ad83fa8db3bf16fed67d53b482dd46a257528 100644
--- a/biscuit/core/apps.py
+++ b/biscuit/core/apps.py
@@ -1,7 +1,7 @@
 from glob import glob
 import os
 
-from django.apps import AppConfig
+from django.apps import AppConfig, apps
 from django.conf import settings
 
 
@@ -17,5 +17,12 @@ class CoreConfig(AppConfig):
                 # Ignore because old is better than nothing
                 pass  # noqa
 
+    def setup_data(self) -> None:
+        if 'otp_yubikey' in settings.INSTALLED_APPS:
+            apps.get_model('otp_yubikey', 'ValidationService').objects.update_or_create(
+                name='default', defaults={'use_ssl': True, 'param_sl': '', 'param_timeout': ''}
+            )
+
     def ready(self) -> None:
         self.clean_scss()
+        self.setup_data()
diff --git a/biscuit/core/migrations/0004_otp_yubikey.py b/biscuit/core/migrations/0004_otp_yubikey.py
deleted file mode 100644
index 616cea9fb14a3e253d96f0b7ded22f17747fbc3a..0000000000000000000000000000000000000000
--- a/biscuit/core/migrations/0004_otp_yubikey.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.db import migrations
-
-from otp_yubikey.models import ValidationService
-
-def create_validation_service(apps, schema_editor):
-    ValidationService.objects.create(
-        name='default', use_ssl=True, param_sl='', param_timeout=''
-    )
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('core', '0003_school_logo'),
-    ]
-
-    operations = [
-        migrations.RunPython(create_validation_service),
-    ]