diff --git a/lti_consumer/migrations/0011_update_jsonfield.py b/lti_consumer/migrations/0011_update_jsonfield.py
deleted file mode 100644
index 345a957474c8b20369e4292d50ef9112bce5be64..0000000000000000000000000000000000000000
--- a/lti_consumer/migrations/0011_update_jsonfield.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Generated by Django 2.2.19 on 2021-03-01 14:52
-
-from django.db import migrations
-import jsonfield.fields
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('lti_consumer', '0010_backfill-empty-string-lti-config'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='lticonfiguration',
-            name='lti_config',
-            field=jsonfield.fields.JSONField(blank=True, default=dict, help_text='LTI configuration data.'),
-        ),
-        migrations.AlterField(
-            model_name='ltidlcontentitem',
-            name='attributes',
-            field=jsonfield.fields.JSONField(),
-        ),
-    ]
diff --git a/requirements/base.in b/requirements/base.in
index c5d31b848e68c699123e734f907315ec0c065b84..bd89e7b262d3e25038c0367a71bd4d18e723bea0 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -13,4 +13,4 @@ pycryptodomex
 pyjwkest
 edx-opaque-keys[django]
 django-filter
-jsonfield
+jsonfield2
diff --git a/requirements/base.txt b/requirements/base.txt
index 4bcfcf524e18c12cfb7ff839eacac326925d37b9..bb213825f51e82da59b4d93acde2ca1ed45c6755 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -20,7 +20,7 @@ django==2.2.19
     #   -r requirements/base.in
     #   django-filter
     #   edx-opaque-keys
-    #   jsonfield
+    #   jsonfield2
 edx-opaque-keys[django]==2.2.0
     # via -r requirements/base.in
 fs==2.4.12
@@ -29,8 +29,10 @@ future==0.18.2
     # via pyjwkest
 idna==2.10
     # via requests
-jsonfield==3.1.0
-    # via -r requirements/base.in
+jsonfield2==3.0.3
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/base.in
 lazy==1.4
     # via -r requirements/base.in
 lxml==4.6.2
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index faf74b867b493425faad92c5f35c44f6e82111c1..769dc5b05eb81958f349b218250027388db92acb 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -24,3 +24,6 @@ stevedore<=1.32.0
 
 # Same as in edx-platform
 djangorestframework==3.9.4
+
+# jsonfield2 3.1.0 drops support for python 3.5
+jsonfield2<3.1.0
diff --git a/requirements/dev.txt b/requirements/dev.txt
index e182def6cfd0296468b130f3848bb0a86219edbd..e136e8b1d029f1af017a8ff30f2321034480597c 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -26,7 +26,7 @@ django==2.2.19
     #   django-filter
     #   edx-i18n-tools
     #   edx-opaque-keys
-    #   jsonfield
+    #   jsonfield2
 edx-i18n-tools==0.5.0
     # via -r requirements/dev.in
 edx-opaque-keys[django]==2.2.0
@@ -43,7 +43,7 @@ idna==2.10
     # via
     #   -r requirements/base.txt
     #   requests
-jsonfield==3.1.0
+jsonfield2==3.0.3
     # via -r requirements/base.txt
 lazy==1.4
     # via -r requirements/base.txt
diff --git a/requirements/test.txt b/requirements/test.txt
index 70209f17168db09f374001b1210fa2cef47d86a1..b9ad8cab4627562af71ce8147418b8df36efe0c6 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -55,7 +55,7 @@ django-pyfs==3.0
     #   django-pyfs
     #   edx-lint
     #   edx-opaque-keys
-    #   jsonfield
+    #   jsonfield2
     #   xblock-sdk
 djangorestframework==3.9.4
     # via
@@ -91,8 +91,10 @@ jmespath==0.10.0
     # via
     #   boto3
     #   botocore
-jsonfield==3.1.0
-    # via -r requirements/base.txt
+jsonfield2==3.0.3
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/base.txt
 lazy-object-proxy==1.5.2
     # via astroid
 lazy==1.4
diff --git a/requirements/travis.txt b/requirements/travis.txt
index 62a635a2d9d3ebb98fbb7d1439587eb21daf0dcb..bb2949b4be644aae4c6919798a9b66626ac1b8ff 100644
--- a/requirements/travis.txt
+++ b/requirements/travis.txt
@@ -73,7 +73,7 @@ django==2.2.19
     #   django-pyfs
     #   edx-lint
     #   edx-opaque-keys
-    #   jsonfield
+    #   jsonfield2
     #   xblock-sdk
 djangorestframework==3.9.4
     # via
@@ -123,8 +123,10 @@ jmespath==0.10.0
     #   -r requirements/test.txt
     #   boto3
     #   botocore
-jsonfield==3.1.0
-    # via -r requirements/test.txt
+jsonfield2==3.0.3
+    # via
+    #   -c requirements/constraints.txt
+    #   -r requirements/test.txt
 lazy-object-proxy==1.5.2
     # via
     #   -r requirements/test.txt
diff --git a/setup.py b/setup.py
index 22058cec27f477178e0ad85cc6a19e9cfaf7628e..c4702f05cda268e55b1b9e1c1972550640f52084 100644
--- a/setup.py
+++ b/setup.py
@@ -49,7 +49,7 @@ with open('README.rst') as _f:
 
 setup(
     name='lti-consumer-xblock',
-    version='2.7.3',
+    version='2.7.4',
     description='This XBlock implements the consumer side of the LTI specification.',
     long_description=long_description,
     long_description_content_type='text/x-rst',