diff --git a/.travis.yml b/.travis.yml
index 7dc55332..fb6a9c17 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,8 +23,6 @@ matrix:
         - codecov
     - python: 3.5
       env: TARGETS="PYTHON_VERSION=py35 test"
-  allow_failures:
-    - python: 3.5
 
 install:
     - docker exec ecomworker bash -c "
@@ -42,5 +40,7 @@ deploy:
   distributions: sdist bdist_wheel
   on:
     tags: true
+    python: 2.7
+    condition: "$TARGETS = quality"
   password:
     secure: iYAqXv3vygmnv0ns8jQv0ECclJ1NWj1mjlVYNJsTaEnGmdPifUodr7hTyh/vftYRUtQi1CCWJXF8BEcGuYhahhyWrhkW6R/awArnDooF3gcVzZ9Yn8Zt7zXXRZpgbzXX+1HRUr6WeYoO5S+mXKknORD6bClLYwxKP7sJ1XESmq6Q+WNexb1g3F+AHUXihTJmpGptvZ6rRXIQc+NeozooDKLAgLnyOISGhTyXO3f9DJ8KJmj9QstTDyDutcYsDUN0c6stXk7w0Xr5ErobGXsgUKyadIQ44OgwCsyojh8b454rQOc9C2R1FAaoUAdCsJMJ0ZX1u4d6Tn3/lh2BMWdbLia02mRkW8Y13dg0MvObHOClwG+ElN7/9oW6oK3dHXO1Qstd+z5P/i8rufXlB0fqgmfL5aYz5G2kcUVTg0nyV0Cpn0zelLyCQ2rKpbpMoZJEQGBDBc8MR8uP05pH48TXfqRVOK9x8luKX5PSDXME2u6TLAgBo1Kzcbotlj+YDKtBi6F4Vcl1BsYI4lTM+XelL30xcsmZLi66sxAvpaxAhzpqRrw+4qurUkw9Qd5QDZaP0nwM7V0Cg8MZmRpOSZf4bMB65ba0zmg/DfODoE/e/VXfkonKANbOWFYX5twAX7rsd0Hnyf5YuYF68B3V0OCx/lQCQIwJPRYk3FkPCyMubdM=
diff --git a/Makefile b/Makefile
index a8d43847..eeb91af8 100644
--- a/Makefile
+++ b/Makefile
@@ -48,7 +48,7 @@ upgrade: ## update the requirements/*.txt files with the latest packages satisfy
 	pip-compile --upgrade -o requirements/optional.txt requirements/optional.in
 	pip-compile --upgrade -o requirements/production.txt requirements/production.in
 	# Let tox control the Django version for tests
-	sed '/^[dD]jango==/d' requirements/test.txt > requirements/test.tmp
+	sed '/^[dD]jango==/d;/^edx-rest-api-client==/d' requirements/test.txt > requirements/test.tmp
 	mv requirements/test.tmp requirements/test.txt
 
 .PHONY: help requirements worker test html_coverage quality validate clean upgrade
diff --git a/requirements/base.in b/requirements/base.in
index 48091221..79a39778 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -1,7 +1,7 @@
 -c constraints.txt
 
 celery
-edx-rest-api-client>=1.5.0,<2.0.0
+edx-rest-api-client
 redis
 sailthru-client
 six
diff --git a/requirements/base.txt b/requirements/base.txt
index 85a7c35a..bb9f57ea 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -11,15 +11,20 @@ certifi==2020.6.20        # via requests
 chardet==3.0.4            # via requests
 configparser==4.0.2       # via importlib-metadata
 contextlib2==0.6.0.post1  # via importlib-metadata, zipp
-edx-rest-api-client==1.5.0  # via -c requirements/constraints.txt, -r requirements/base.in
+django-waffle==2.0.0      # via edx-django-utils
+django==1.11.29           # via -c requirements/constraints.txt, edx-django-utils
+edx-django-utils==2.0.4   # via -c requirements/constraints.txt, edx-rest-api-client
+edx-rest-api-client==3.0.2  # via -c requirements/constraints.txt, -r requirements/base.in
 idna==2.10                # via requests
 importlib-metadata==2.0.0  # via kombu
 kombu==4.6.11             # via celery
+newrelic==4.8.0.110       # via -c requirements/constraints.txt, edx-django-utils
 pathlib2==2.3.5           # via importlib-metadata
+psutil==1.2.1             # via edx-django-utils
 pyjwt==1.7.1              # via edx-rest-api-client
-pytz==2020.1              # via celery
+pytz==2020.1              # via celery, django
 redis==3.5.3              # via -r requirements/base.in
-requests==2.24.0          # via sailthru-client, slumber
+requests==2.24.0          # via edx-rest-api-client, sailthru-client, slumber
 sailthru-client==2.2.3    # via -c requirements/constraints.txt, -r requirements/base.in
 scandir==1.10.0           # via pathlib2
 simplejson==3.17.2        # via sailthru-client
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index e7cce11a..aad710d7 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -10,6 +10,10 @@
 
 # These were previously pinned in ecommerce-worker, and will stay that way
 # until we go through the process of relaxing them gradually.
+
+# Already present in Python 3 standard library
+futures; python_version == "2.7"
+
 astroid==1.4.9
 coverage==4.4.0
 ddt==1.0.1
@@ -28,7 +32,6 @@ sailthru-client==2.2.3
 testfixtures==4.13.3
 tox==3.15.2
 more-itertools==5.0.0
-edx-rest-api-client==1.5.0
 six==1.15.0
 tox==3.15.2
 
@@ -36,3 +39,12 @@ tox==3.15.2
 httpretty==0.8.10
 tox-battery < 0.6
 celery < 5.0
+
+# edx-rest-api-client version 4.0.0 dropped support to python 2.7
+edx-rest-api-client<4.0.0
+
+# version 3.0.0 dropped python 2.7 support
+edx-django-utils<3.0.0
+
+# edx-utils is bringing latest django=2.2 so adding pin
+django<2.0
\ No newline at end of file
diff --git a/requirements/production.txt b/requirements/production.txt
index 379feebe..731f22cd 100644
--- a/requirements/production.txt
+++ b/requirements/production.txt
@@ -11,16 +11,21 @@ certifi==2020.6.20        # via -r requirements/base.txt, requests
 chardet==3.0.4            # via -r requirements/base.txt, requests
 configparser==4.0.2       # via -r requirements/base.txt, importlib-metadata
 contextlib2==0.6.0.post1  # via -r requirements/base.txt, importlib-metadata, zipp
-edx-rest-api-client==1.5.0  # via -c requirements/constraints.txt, -r requirements/base.txt
+django-waffle==2.0.0      # via -r requirements/base.txt, edx-django-utils
+django==1.11.29           # via -c requirements/constraints.txt, -r requirements/base.txt, edx-django-utils
+edx-django-utils==2.0.4   # via -c requirements/constraints.txt, -r requirements/base.txt, edx-rest-api-client
+edx-rest-api-client==3.0.2  # via -c requirements/constraints.txt, -r requirements/base.txt
 idna==2.10                # via -r requirements/base.txt, requests
 importlib-metadata==2.0.0  # via -r requirements/base.txt, kombu
 kombu==4.6.11             # via -r requirements/base.txt, celery
+newrelic==4.8.0.110       # via -c requirements/constraints.txt, -r requirements/base.txt, edx-django-utils
 pathlib2==2.3.5           # via -r requirements/base.txt, importlib-metadata
+psutil==1.2.1             # via -r requirements/base.txt, edx-django-utils
 pyjwt==1.7.1              # via -r requirements/base.txt, edx-rest-api-client
-pytz==2020.1              # via -r requirements/base.txt, celery
+pytz==2020.1              # via -r requirements/base.txt, celery, django
 pyyaml==5.1               # via -c requirements/constraints.txt, -r requirements/production.in
 redis==3.5.3              # via -r requirements/base.txt
-requests==2.24.0          # via -r requirements/base.txt, sailthru-client, slumber
+requests==2.24.0          # via -r requirements/base.txt, edx-rest-api-client, sailthru-client, slumber
 sailthru-client==2.2.3    # via -c requirements/constraints.txt, -r requirements/base.txt
 scandir==1.10.0           # via -r requirements/base.txt, pathlib2
 simplejson==3.17.2        # via -r requirements/base.txt, sailthru-client
diff --git a/requirements/test.txt b/requirements/test.txt
index bd3be849..4f1e1a41 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -18,10 +18,11 @@ contextlib2==0.6.0.post1  # via -r requirements/base.txt, importlib-metadata, zi
 cookies==2.2.1            # via responses
 coverage==4.4             # via -c requirements/constraints.txt, -r requirements/test.in, pytest-cov
 ddt==1.0.1                # via -c requirements/constraints.txt, -r requirements/test.in
+django-waffle==2.0.0      # via -r requirements/base.txt, edx-django-utils
+edx-django-utils==2.0.4   # via -c requirements/constraints.txt, -r requirements/base.txt, edx-rest-api-client
 edx-lint==0.5.2           # via -c requirements/constraints.txt, -r requirements/test.in
-edx-rest-api-client==1.5.0  # via -c requirements/constraints.txt, -r requirements/base.txt
 funcsigs==1.0.2           # via mock, pytest
-futures==3.3.0            # via isort
+futures==3.3.0 ; python_version == "2.7"  # via -c requirements/constraints.txt, isort
 idna==2.10                # via -r requirements/base.txt, requests
 importlib-metadata==2.0.0  # via -r requirements/base.txt, kombu, pluggy, pytest
 isort==4.3.21             # via -c requirements/constraints.txt, pylint
@@ -30,11 +31,13 @@ lazy-object-proxy==1.5.1  # via astroid
 mccabe==0.6.1             # via pylint
 mock==1.3.0               # via -c requirements/constraints.txt, -r requirements/test.in, responses
 more-itertools==5.0.0     # via -c requirements/constraints.txt, pytest
+newrelic==4.8.0.110       # via -c requirements/constraints.txt, -r requirements/base.txt, edx-django-utils
 packaging==20.4           # via pytest
 pathlib2==2.3.5           # via -r requirements/base.txt, importlib-metadata, pytest
 pbr==5.5.0                # via mock
 pep8==1.7.0               # via -c requirements/constraints.txt, -r requirements/test.in
 pluggy==0.13.1            # via pytest
+psutil==1.2.1             # via -r requirements/base.txt, edx-django-utils
 py==1.9.0                 # via pytest
 pyjwt==1.7.1              # via -r requirements/base.txt, edx-rest-api-client
 pylint-celery==0.3        # via edx-lint
@@ -44,9 +47,9 @@ pylint==1.6.4             # via -c requirements/constraints.txt, -r requirements
 pyparsing==2.4.7          # via packaging
 pytest-cov==2.10.0        # via -c requirements/constraints.txt, -r requirements/test.in
 pytest==4.6.11            # via -c requirements/constraints.txt, -r requirements/test.in, pytest-cov
-pytz==2020.1              # via -r requirements/base.txt, celery
+pytz==2020.1              # via -r requirements/base.txt, celery, django
 redis==3.5.3              # via -r requirements/base.txt
-requests==2.24.0          # via -r requirements/base.txt, responses, sailthru-client, slumber
+requests==2.24.0          # via -r requirements/base.txt, edx-rest-api-client, responses, sailthru-client, slumber
 responses==0.12.0         # via -r requirements/test.in
 sailthru-client==2.2.3    # via -c requirements/constraints.txt, -r requirements/base.txt
 scandir==1.10.0           # via -r requirements/base.txt, pathlib2
diff --git a/requirements/tox.txt b/requirements/tox.txt
index caf0f4bf..c1702f47 100644
--- a/requirements/tox.txt
+++ b/requirements/tox.txt
@@ -23,5 +23,5 @@ toml==0.10.1              # via tox
 tox-battery==0.5.2        # via -c requirements/constraints.txt, -r requirements/tox.in
 tox==3.15.2               # via -c requirements/constraints.txt, -r requirements/tox.in, tox-battery
 typing==3.7.4.3           # via importlib-resources
-virtualenv==20.0.31       # via tox
+virtualenv==20.0.33       # via tox
 zipp==1.2.0               # via importlib-metadata, importlib-resources
diff --git a/setup.py b/setup.py
index cf5b3957..7064ef5c 100644
--- a/setup.py
+++ b/setup.py
@@ -37,7 +37,7 @@ def is_requirement(line):
 
 setup(
     name='edx-ecommerce-worker',
-    version='0.8.7',
+    version='0.8.8',
     description='Celery tasks supporting the operations of edX\'s ecommerce service',
     long_description=long_description,
     classifiers=[
diff --git a/tox.ini b/tox.ini
index c709f263..0016e643 100644
--- a/tox.ini
+++ b/tox.ini
@@ -17,6 +17,9 @@ setenv =
     WORKER_CONFIGURATION_MODULE = ecommerce_worker.configuration.test
 deps =
     -r{toxinidir}/requirements/test.txt
+    py27: edx-rest-api-client<4.0.0
+    py35: edx-rest-api-client==5.2.1
+    quality: edx-rest-api-client<4.0.0
 commands =
     pytest ecommerce_worker --cov-branch --cov-report=html:build/coverage/html/html/ \
        --cov-report term --cov-report=xml:build/coverage/coverage.xml \