diff --git a/services/webapp/code/migrations_vanilla/README.txt b/services/webapp/code/migrations_vanilla/README.txt
deleted file mode 100644
index dd641869d4ab930e2c8585f5a412fa96d618a5bf..0000000000000000000000000000000000000000
--- a/services/webapp/code/migrations_vanilla/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-This is a folder with just an __init__.py file, used to initialize the migrations.
-
diff --git a/services/webapp/code/rosetta/core_app/migrations b/services/webapp/code/rosetta/core_app/migrations
deleted file mode 120000
index e459246b9e3834654044c9c27866c8bdb23e48ca..0000000000000000000000000000000000000000
--- a/services/webapp/code/rosetta/core_app/migrations
+++ /dev/null
@@ -1 +0,0 @@
-/data/migrations/core_app
\ No newline at end of file
diff --git a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..40576cfe7d6fff636d5e54635247760854c6d60e
--- /dev/null
+++ b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
@@ -0,0 +1,124 @@
+# Generated by Django 2.2.1 on 2020-05-28 15:12
+
+from django.conf import settings
+import django.contrib.postgres.fields.jsonb
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import uuid
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Computing',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('name', models.CharField(max_length=255, verbose_name='Computing Name')),
+                ('type', models.CharField(max_length=255, verbose_name='Computing Type')),
+                ('requires_sys_conf', models.BooleanField(default=False)),
+                ('requires_user_conf', models.BooleanField(default=False)),
+                ('requires_user_keys', models.BooleanField(default=False)),
+                ('supports_docker', models.BooleanField(default=False)),
+                ('supports_singularity', models.BooleanField(default=False)),
+                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['name'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Container',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('name', models.CharField(max_length=255, verbose_name='Container Name')),
+                ('image', models.CharField(max_length=255, verbose_name='Container image')),
+                ('type', models.CharField(max_length=36, verbose_name='Container type')),
+                ('registry', models.CharField(max_length=255, verbose_name='Container registry')),
+                ('ports', models.CharField(blank=True, max_length=36, null=True, verbose_name='Container ports')),
+                ('supports_dynamic_ports', models.BooleanField(default=False)),
+                ('supports_user_auth', models.BooleanField(default=False)),
+                ('supports_pass_auth', models.BooleanField(default=False)),
+                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['name'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Task',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('tid', models.CharField(blank=True, max_length=64, null=True, verbose_name='Task ID')),
+                ('name', models.CharField(max_length=36, verbose_name='Task name')),
+                ('status', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task status')),
+                ('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Created on')),
+                ('pid', models.IntegerField(blank=True, null=True, verbose_name='Task pid')),
+                ('port', models.IntegerField(blank=True, null=True, verbose_name='Task port')),
+                ('ip', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task ip address')),
+                ('tunnel_port', models.IntegerField(blank=True, null=True, verbose_name='Task tunnel port')),
+                ('extra_binds', models.CharField(blank=True, max_length=4096, null=True, verbose_name='Extra binds')),
+                ('auth_user', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth user')),
+                ('auth_pass', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth pass')),
+                ('access_method', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task access method')),
+                ('computing_options', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
+                ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Container')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['-created'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Profile',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('timezone', models.CharField(default='UTC', max_length=36, verbose_name='User Timezone')),
+                ('authtoken', models.CharField(blank=True, max_length=36, null=True, verbose_name='User auth token')),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='LoginToken',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('token', models.CharField(max_length=36, verbose_name='Login token')),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='KeyPair',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('private_key_file', models.CharField(max_length=4096, verbose_name='Private key file')),
+                ('public_key_file', models.CharField(max_length=4096, verbose_name='Public key file')),
+                ('default', models.BooleanField(default=False, verbose_name='Default keys?')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='ComputingUserConf',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
+                ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='ComputingSysConf',
+            fields=[
+                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+                ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')),
+            ],
+        ),
+    ]
diff --git a/services/webapp/code/migrations_vanilla/__init__.py b/services/webapp/code/rosetta/core_app/migrations/__init__.py
similarity index 100%
rename from services/webapp/code/migrations_vanilla/__init__.py
rename to services/webapp/code/rosetta/core_app/migrations/__init__.py
diff --git a/services/webapp/prestartup_webapp.sh b/services/webapp/prestartup_webapp.sh
index 0339f0cd765a9cfb5e074c5f217c825b2d05081b..f48c532b0d48b9d9b525f23729efe14409c09fea 100644
--- a/services/webapp/prestartup_webapp.sh
+++ b/services/webapp/prestartup_webapp.sh
@@ -8,46 +8,3 @@ chown rosetta:rosetta /var/log/webapp
 mkdir -p /data/resources 
 chown rosetta:rosetta /data/resources
 
-
-#-----------------------------
-# Set migrations data folder
-#-----------------------------
-
-if [[ "xDJANGO_DB_NAME" == "x:memory:" ]] ; then
-    # Use the /tmp directory via links to use ephemeral data
-    mkdir -p /tmp/migrations
-    $MIGRATIONS_DATA_FOLDER=/tmp/migrations
-    echo "Using temporary migrations in $MIGRATIONS_DATA_FOLDER"
-else
-    # Use the /data directory via links to use data persistency
-    MIGRATIONS_DATA_FOLDER="/data/migrations"
-    # Also if the migrations folder in /data does not exist, create it now
-    mkdir -p /data/migrations
-	echo "Persisting migrations in $MIGRATIONS_DATA_FOLDER"
-fi
-
-
-#-----------------------------
-# Handle Base App migrations
-#-----------------------------
-	
-# Remove potential leftovers
-rm -f /opt/webapp_code/rosetta/core_app/migrations
-
-# If migrations were not already initialized, do it now
-if [ ! -d "$MIGRATIONS_DATA_FOLDER/core_app" ] ; then
-    echo "Initializing migrations for core_app"...
-    mkdir $MIGRATIONS_DATA_FOLDER/core_app && chown rosetta:rosetta $MIGRATIONS_DATA_FOLDER/core_app
-    touch $MIGRATIONS_DATA_FOLDER/core_app/__init__.py && chown rosetta:rosetta $MIGRATIONS_DATA_FOLDER/core_app/__init__.py
-fi
-
-# Use the right migrations folder
-ln -s $MIGRATIONS_DATA_FOLDER/core_app /opt/webapp_code/rosetta/core_app/migrations
-
-
-
-
-
-
-
-