diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 7db3bc26175e0810fc3d4f4f709705025f946c7c..f15346c859d52eb74a9d96508b21182b1c0894ef 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -13,6 +13,9 @@
 # (although it is advertised in the changelog as 3.1.26.)
 celery>=3.1.25,<4.0.0
 
+# Stay on the latest LTS release of Django
+Django<2.3
+
 # The CORS_ORIGIN_WHITELIST changes in a backwards incompatible way in 3.0.0, needs matching configuration repo changes
 django-cors-headers<3.0.0
 
@@ -22,9 +25,6 @@ django-countries==5.5
 # Version 4.0.0 dropped support for Django < 2.0.1
 django-model-utils<4.0.0
 
-# Version 1.2.0 dropped support for Django 1.11
-django-oauth-toolkit<1.2.0
-
 # django-storages version 1.9 drops support for boto storage backend.
 django-storages<1.9
 
diff --git a/requirements/edx/base.in b/requirements/edx/base.in
index 8cc6ae1b8b488b19d8e50e9dabb18db5d98acaee..f11888d0d8c52d7e4fab6a0b3d139ec04e87c59f 100644
--- a/requirements/edx/base.in
+++ b/requirements/edx/base.in
@@ -36,7 +36,7 @@ botocore==1.8.17                    # via boto3, s3transfer
 celery                              # Asynchronous task execution library
 contextlib2                         # We need contextlib2.ExitStack so we can stop using contextlib.nested which doesn't exist in python 3
 defusedxml
-Django<1.12                         # Web application framework
+Django                              # Web application framework
 django-celery                       # Only used for the CacheBackend for celery results
 django-config-models>=1.0.0         # Configuration models for Django allowing config management with auditing
 django-cors-headers                 # Used to allow to configure CORS headers for cross-domain requests
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 09656d57255ed7405e78698985eecbdcde378000..91611a56b852aad051a8057477b4cf7d4f98d8bf 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -69,7 +69,7 @@ django-model-utils==3.2.0  # via -c requirements/edx/../constraints.txt, -r requ
 django-mptt==0.11.0       # via -r requirements/edx/base.in, django-wiki
 django-multi-email-field==0.6.1  # via edx-enterprise
 django-mysql==3.3.0       # via -r requirements/edx/base.in
-django-oauth-toolkit==1.1.3  # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in
+django-oauth-toolkit==1.3.2  # via -r requirements/edx/base.in
 django-object-actions==2.0.0  # via edx-enterprise
 django-pipeline==1.7.0    # via -r requirements/edx/base.in
 django-pyfs==2.1          # via -r requirements/edx/base.in
@@ -84,7 +84,7 @@ django-storages==1.8      # via -c requirements/edx/../constraints.txt, -r requi
 django-user-tasks==1.0.0  # via -r requirements/edx/base.in
 django-waffle==0.18.0     # via -r requirements/edx/base.in, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-proctoring
 django-webpack-loader==0.7.0  # via -r requirements/edx/base.in, edx-proctoring
-django==1.11.29           # via -r requirements/edx/base.in, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
+django==2.2.12            # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
 djangorestframework-xml==1.4.0  # via edx-enterprise
 djangorestframework==3.9.4  # via -r requirements/edx/base.in, django-config-models, django-user-tasks, drf-jwt, drf-yasg, edx-api-doc-tools, edx-completion, edx-drf-extensions, edx-enterprise, edx-organizations, edx-proctoring, edx-submissions, ora2, rest-condition, super-csv
 docopt==0.6.2             # via xmodule
@@ -106,14 +106,14 @@ edx-enterprise==3.0.13    # via -r requirements/edx/base.in
 edx-i18n-tools==0.5.0     # via ora2
 edx-milestones==0.2.6     # via -r requirements/edx/base.in
 edx-opaque-keys[django]==2.0.2  # via -r requirements/edx/paver.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
-edx-organizations==5.0.0  # via -r requirements/edx/base.in
+edx-organizations==5.1.0  # via -r requirements/edx/base.in
 edx-proctoring-proctortrack==1.0.5  # via -r requirements/edx/base.in
 edx-proctoring==2.3.3     # via -r requirements/edx/base.in, edx-proctoring-proctortrack
 edx-rbac==1.1.2           # via edx-enterprise
 edx-rest-api-client==5.1.0  # via -r requirements/edx/base.in, edx-enterprise, edx-proctoring
 edx-search==1.3.4         # via -r requirements/edx/base.in
 edx-sga==0.10.0           # via -r requirements/edx/base.in
-edx-submissions==3.0.6    # via -r requirements/edx/base.in, ora2
+edx-submissions==3.0.7    # via -r requirements/edx/base.in, ora2
 edx-tincan-py35==0.0.5    # via edx-enterprise
 edx-user-state-client==1.1.2  # via -r requirements/edx/base.in
 edx-when==1.2.0           # via -r requirements/edx/base.in, edx-proctoring
@@ -226,7 +226,7 @@ social-auth-core==3.3.3   # via -r requirements/edx/base.in, social-auth-app-dja
 git+https://github.com/jazzband/sorl-thumbnail.git@13bedfb7d2970809eda597e3ef79318a6fa80ac2#egg=sorl-thumbnail  # via -r requirements/edx/github.in
 sortedcontainers==2.1.0   # via -r requirements/edx/base.in, pdfminer.six
 soupsieve==2.0            # via beautifulsoup4
-sqlparse==0.3.1           # via -r requirements/edx/base.in
+sqlparse==0.3.1           # via -r requirements/edx/base.in, django
 staff-graded-xblock==0.7  # via -r requirements/edx/base.in
 stevedore==1.32.0         # via -r requirements/edx/base.in, -r requirements/edx/paver.txt, code-annotations, edx-ace, edx-enterprise, edx-opaque-keys
 super-csv==0.9.7          # via -r requirements/edx/base.in, edx-bulk-grades
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 124930612e163c1d2392d48b0ac0b3f54770d619..7152927358b879622450e0be2328004d882dce37 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -81,7 +81,7 @@ django-model-utils==3.2.0  # via -c requirements/edx/../constraints.txt, -r requ
 django-mptt==0.11.0       # via -r requirements/edx/testing.txt, django-wiki
 django-multi-email-field==0.6.1  # via -r requirements/edx/testing.txt, edx-enterprise
 django-mysql==3.3.0       # via -r requirements/edx/testing.txt
-django-oauth-toolkit==1.1.3  # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
+django-oauth-toolkit==1.3.2  # via -r requirements/edx/testing.txt
 django-object-actions==2.0.0  # via -r requirements/edx/testing.txt, edx-enterprise
 django-pipeline==1.7.0    # via -r requirements/edx/testing.txt
 django-pyfs==2.1          # via -r requirements/edx/testing.txt
@@ -96,7 +96,7 @@ django-storages==1.8      # via -c requirements/edx/../constraints.txt, -r requi
 django-user-tasks==1.0.0  # via -r requirements/edx/testing.txt
 django-waffle==0.18.0     # via -r requirements/edx/testing.txt, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-proctoring
 django-webpack-loader==0.7.0  # via -r requirements/edx/testing.txt, edx-proctoring
-django==1.11.29           # via -r requirements/edx/testing.txt, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-debug-toolbar, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
+django==2.2.12            # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-debug-toolbar, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
 djangorestframework-xml==1.4.0  # via -r requirements/edx/testing.txt, edx-enterprise
 djangorestframework==3.9.4  # via -r requirements/edx/testing.txt, django-config-models, django-user-tasks, drf-jwt, drf-yasg, edx-api-doc-tools, edx-completion, edx-drf-extensions, edx-enterprise, edx-organizations, edx-proctoring, edx-submissions, ora2, rest-condition, super-csv
 docopt==0.6.2             # via -r requirements/edx/testing.txt, xmodule
@@ -119,7 +119,7 @@ edx-i18n-tools==0.5.0     # via -r requirements/edx/testing.txt, ora2
 edx-lint==1.4.1           # via -r requirements/edx/testing.txt
 edx-milestones==0.2.6     # via -r requirements/edx/testing.txt
 edx-opaque-keys[django]==2.0.2  # via -r requirements/edx/testing.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
-edx-organizations==5.0.0  # via -r requirements/edx/testing.txt
+edx-organizations==5.1.0  # via -r requirements/edx/testing.txt
 edx-proctoring-proctortrack==1.0.5  # via -r requirements/edx/testing.txt
 edx-proctoring==2.3.3     # via -r requirements/edx/testing.txt, edx-proctoring-proctortrack
 edx-rbac==1.1.2           # via -r requirements/edx/testing.txt, edx-enterprise
@@ -127,7 +127,7 @@ edx-rest-api-client==5.1.0  # via -r requirements/edx/testing.txt, edx-enterpris
 edx-search==1.3.4         # via -r requirements/edx/testing.txt
 edx-sga==0.10.0           # via -r requirements/edx/testing.txt
 edx-sphinx-theme==1.5.0   # via -r requirements/edx/development.in
-edx-submissions==3.0.6    # via -r requirements/edx/testing.txt, ora2
+edx-submissions==3.0.7    # via -r requirements/edx/testing.txt, ora2
 edx-tincan-py35==0.0.5    # via -r requirements/edx/testing.txt, edx-enterprise
 edx-user-state-client==1.1.2  # via -r requirements/edx/testing.txt
 edx-when==1.2.0           # via -r requirements/edx/testing.txt, edx-proctoring
@@ -296,7 +296,7 @@ sphinxcontrib-jsmath==1.0.1  # via sphinx
 sphinxcontrib-openapi[markdown]==0.6.0  # via -r requirements/edx/development.in
 sphinxcontrib-qthelp==1.0.3  # via sphinx
 sphinxcontrib-serializinghtml==1.1.4  # via sphinx
-sqlparse==0.3.1           # via -r requirements/edx/testing.txt, django-debug-toolbar
+sqlparse==0.3.1           # via -r requirements/edx/testing.txt, django, django-debug-toolbar
 staff-graded-xblock==0.7  # via -r requirements/edx/testing.txt
 stevedore==1.32.0         # via -r requirements/edx/testing.txt, code-annotations, edx-ace, edx-enterprise, edx-opaque-keys
 super-csv==0.9.7          # via -r requirements/edx/testing.txt, edx-bulk-grades
diff --git a/requirements/edx/django.txt b/requirements/edx/django.txt
index 8756d5ca3e4f1527bac7900d325d24b83be16f80..7ed065eef7b48270387940bc4b515fac73bd0125 100644
--- a/requirements/edx/django.txt
+++ b/requirements/edx/django.txt
@@ -1,2 +1,2 @@
-django-oauth-toolkit==1.1.3  # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in
-django==1.11.29           # via -r requirements/edx/base.in, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
+django-oauth-toolkit==1.3.2  # via -r requirements/edx/base.in
+django==2.2.12            # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-babel, django-babel-underscore, django-celery, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-when, edxval, event-tracking, help-tokens, jsonfield2, ora2, rest-condition, super-csv, xss-utils
diff --git a/requirements/edx/django111.txt b/requirements/edx/django111.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5fd3c860e55f758c9c4310c8612766ae40038734
--- /dev/null
+++ b/requirements/edx/django111.txt
@@ -0,0 +1,2 @@
+Django>=1.11,<1.12
+django-oauth-toolkit==1.1.3
diff --git a/requirements/edx/django22.txt b/requirements/edx/django22.txt
deleted file mode 100644
index 4cd4c00f58fe64d59ef79a188218aaeb151e5125..0000000000000000000000000000000000000000
--- a/requirements/edx/django22.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Django>=2.2,<3.0
-django-oauth-toolkit==1.3.2
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index b1e2e46b004a1e36ec7f043316d1c7482b697452..021d8e552647ccc07c09bfee5882d6b2a0b7ed48 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -115,14 +115,14 @@ edx-i18n-tools==0.5.0     # via -r requirements/edx/base.txt, -r requirements/ed
 edx-lint==1.4.1           # via -r requirements/edx/testing.in
 edx-milestones==0.2.6     # via -r requirements/edx/base.txt
 edx-opaque-keys[django]==2.0.2  # via -r requirements/edx/base.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
-edx-organizations==5.0.0  # via -r requirements/edx/base.txt
+edx-organizations==5.1.0  # via -r requirements/edx/base.txt
 edx-proctoring-proctortrack==1.0.5  # via -r requirements/edx/base.txt
 edx-proctoring==2.3.3     # via -r requirements/edx/base.txt, edx-proctoring-proctortrack
 edx-rbac==1.1.2           # via -r requirements/edx/base.txt, edx-enterprise
 edx-rest-api-client==5.1.0  # via -r requirements/edx/base.txt, edx-enterprise, edx-proctoring
 edx-search==1.3.4         # via -r requirements/edx/base.txt
 edx-sga==0.10.0           # via -r requirements/edx/base.txt
-edx-submissions==3.0.6    # via -r requirements/edx/base.txt, ora2
+edx-submissions==3.0.7    # via -r requirements/edx/base.txt, ora2
 edx-tincan-py35==0.0.5    # via -r requirements/edx/base.txt, edx-enterprise
 edx-user-state-client==1.1.2  # via -r requirements/edx/base.txt
 edx-when==1.2.0           # via -r requirements/edx/base.txt, edx-proctoring
@@ -274,7 +274,7 @@ social-auth-core==3.3.3   # via -r requirements/edx/base.txt, social-auth-app-dj
 git+https://github.com/jazzband/sorl-thumbnail.git@13bedfb7d2970809eda597e3ef79318a6fa80ac2#egg=sorl-thumbnail  # via -r requirements/edx/base.txt
 sortedcontainers==2.1.0   # via -r requirements/edx/base.txt, pdfminer.six
 soupsieve==2.0            # via -r requirements/edx/base.txt, beautifulsoup4
-sqlparse==0.3.1           # via -r requirements/edx/base.txt
+sqlparse==0.3.1           # via -r requirements/edx/base.txt, django
 staff-graded-xblock==0.7  # via -r requirements/edx/base.txt
 stevedore==1.32.0         # via -r requirements/edx/base.txt, code-annotations, edx-ace, edx-enterprise, edx-opaque-keys
 super-csv==0.9.7          # via -r requirements/edx/base.txt, edx-bulk-grades
diff --git a/tox.ini b/tox.ini
index 2b2fb86d457979673ae6e3a3a9a178e0e3cef72b..c9fb47e6fcdb361eb997b1451dcd72176ef68412 100644
--- a/tox.ini
+++ b/tox.ini
@@ -68,10 +68,10 @@ passenv =
     XDIST_WORKER_SUBNET
 
 deps =
-    django111: -r requirements/edx/django.txt
+    django111: -r requirements/edx/django111.txt
     django20: -r requirements/edx/django20.txt
     django21: -r requirements/edx/django21.txt
-    django22: -r requirements/edx/django22.txt
+    django22: -r requirements/edx/django.txt
     -r requirements/edx/testing.txt
 whitelist_externals =
     /bin/bash