diff --git a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
index 40576cfe7d6fff636d5e54635247760854c6d60e..b6bec6df9217769f7c461b9131375082247e4259 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py
@@ -1,12 +1,16 @@
 # 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
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -68,7 +72,7 @@ class Migration(migrations.Migration):
                 ('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_options', 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)),
@@ -108,7 +112,7 @@ class Migration(migrations.Migration):
             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)),
+                ('data', 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)),
             ],
@@ -117,7 +121,7 @@ class Migration(migrations.Migration):
             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)),
+                ('data', 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/rosetta/core_app/migrations/0007_auto_20211103_1228.py b/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
index ad56e41ccfb7a4a48f4cc8e9c8c2c2393be88db8..be72fb048e3487994f944d54c309ee4de034ec1a 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0007_auto_20211103_1228.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-03 12:28
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -34,7 +39,7 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='task',
             name='computing_options',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Task computing options'),
+            field=JSONField(blank=True, null=True, verbose_name='Task computing options'),
         ),
         migrations.AlterField(
             model_name='task',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py b/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
index 70021dabd0d63c243ad20c708cd449c8a1fdd8ff..a879dc3b79c597a6425b64b3ce53b1b300ea4862 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0009_auto_20211103_2256.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-03 22:56
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -114,7 +119,7 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='task',
             name='computing_options',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Computing options'),
+            field=JSONField(blank=True, null=True, verbose_name='Computing options'),
         ),
         migrations.AlterField(
             model_name='task',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0011_storage.py b/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
index 78c16668fbc2cb049be2b54cd121cbad9aba55af..a29e6ed38db9c10c8dfe55a48ce4d1ecbcf48d5c 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0011_storage.py
@@ -1,11 +1,15 @@
 # Generated by Django 2.2.1 on 2021-11-08 14:45
 
 from django.conf import settings
-import django.contrib.postgres.fields.jsonb
 from django.db import migrations, models
 import django.db.models.deletion
 import uuid
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -26,7 +30,7 @@ class Migration(migrations.Migration):
                 ('base_path', models.CharField(max_length=4096, verbose_name='Base path')),
                 ('bind_path', models.CharField(max_length=4096, verbose_name='Bind path')),
                 ('access_through_computing', models.BooleanField(default=False, verbose_name='Access through linked computing resource?')),
-                ('config', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
+                ('config', JSONField(blank=True, null=True)),
                 ('computing', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='storages', to='core_app.Computing')),
                 ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
             ],
diff --git a/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py b/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
index 10d1fbb181ee8891a40f0e7faea4a6955196740a..3286556dda1df56beff13d511bcf27892e01266f 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0013_auto_20211108_1529.py
@@ -1,10 +1,15 @@
 # Generated by Django 2.2.1 on 2021-11-08 15:29
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations, models
 import django.db.models.deletion
 import uuid
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -17,7 +22,7 @@ class Migration(migrations.Migration):
             name='ComputingConf',
             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)),
+                ('data', JSONField(blank=True, null=True)),
             ],
         ),
         migrations.RemoveField(
diff --git a/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py b/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
index e2a20f7630972948900aba1e1379bf741e756221..b5219fec6141a48813d3308e3ba39753e427f986 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0015_auto_20211108_1639.py
@@ -1,10 +1,14 @@
 # Generated by Django 2.2.1 on 2021-11-08 16:39
 
 from django.conf import settings
-import django.contrib.postgres.fields.jsonb
 from django.db import migrations, models
 import django.db.models.deletion
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -30,7 +34,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='conf',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True),
+            field=JSONField(blank=True, null=True),
         ),
         migrations.AddField(
             model_name='computing',
diff --git a/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py b/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
index 0c6a1a9adecfd2c1cdc7aebe7bab215830e8f411..6aed2af93a86fcb4afc10c7f092c7d533ff5a05e 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0016_profile_extra_conf.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-08 17:53
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='profile',
             name='extra_conf',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True),
+            field=JSONField(blank=True, null=True),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py b/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
index dcde2e0c7b6059129e10bed3cd7d9c7de556481a..640a474392bef851c6074939e9f2a901c85374b8 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0023_auto_20211121_1342.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-21 13:42
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -18,7 +23,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='container_runtimes',
-            field=django.contrib.postgres.fields.jsonb.JSONField(default=['docker'], verbose_name='Container runtimes'),
+            field=JSONField(default=['docker'], verbose_name='Container runtimes'),
             preserve_default=False,
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py b/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
index 0add854a817e3e9de8d0bec98ffb379c5cd4af18..e913761cb9e3999983c0544adff76ddd33588535 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0024_computing_emulated_archs.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-21 13:42
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='emulated_archs',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Emulated architectures'),
+            field=JSONField(blank=True, null=True, verbose_name='Emulated architectures'),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py b/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
index cb6ee53a3d36f7ea3e8270d5c013d2e7d120bbb2..477bcd862c64bdbe748b0c86071457617f3ba03b 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0027_computing_supported_archs.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-11-24 00:25
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='computing',
             name='supported_archs',
-            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='Supported architectures'),
+            field=JSONField(blank=True, null=True, verbose_name='Supported architectures'),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py b/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
index 13b707a10c7288bb288bd1636ef61fbd0b7a9271..0612c91ace4505b0580f124486123d12876d152e 100644
--- a/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
+++ b/services/webapp/code/rosetta/core_app/migrations/0030_auto_20211218_2355.py
@@ -1,8 +1,13 @@
 # Generated by Django 2.2.1 on 2021-12-18 23:55
 
-import django.contrib.postgres.fields.jsonb
+from django.conf import settings
 from django.db import migrations
 
+# Load database-dependent JSON field
+if 'sqlite' in settings.DATABASES['default']['ENGINE']:
+    from rosetta.core_app.fields import JSONField
+else:
+    from django.contrib.postgres.fields import JSONField
 
 class Migration(migrations.Migration):
 
@@ -14,6 +19,6 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='computing',
             name='container_engines',
-            field=django.contrib.postgres.fields.jsonb.JSONField(verbose_name='Container engines/runtimes'),
+            field=JSONField(verbose_name='Container engines/runtimes'),
         ),
     ]
diff --git a/services/webapp/code/rosetta/core_app/tests/test_models.py b/services/webapp/code/rosetta/core_app/tests/test_models.py
index 508ff70901119a82f4766c29e1591b2f32b79801..5fc304ac6cc3b707728e8337274fcbe3d6579928 100644
--- a/services/webapp/code/rosetta/core_app/tests/test_models.py
+++ b/services/webapp/code/rosetta/core_app/tests/test_models.py
@@ -3,7 +3,7 @@ import json
 from django.contrib.auth.models import User
         
 from .common import BaseAPITestCase
-from ..models import Profile, Computing, ComputingConf
+from ..models import Profile, Computing
 
 class Modeltest(BaseAPITestCase):
 
@@ -22,8 +22,5 @@ class Modeltest(BaseAPITestCase):
          
         computing = Computing.objects.create(name='MyComp', type='remote')
         
-        computingSysConf = ComputingConf.objects.create(computing=computing, data={'myvar':42})
-        
-        self.assertEqual(ComputingConf.objects.all()[0].data, {'myvar':42})