diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py
index 70ac69f12ab2702c1343ed26c542d4a644c7c3ed..0e41549469a72781ded8b68c1e4170c5fa0e62d7 100644
--- a/atdb/taskdatabase/services/algorithms.py
+++ b/atdb/taskdatabase/services/algorithms.py
@@ -9,7 +9,6 @@ from django.db.models import Q, Sum
 import logging
 from .common import timeit
 from django.urls import reverse
-from django.utils.http import urlencode
 from ..models import Task, LogEntry, Workflow, Configuration
 from django.conf import settings
 
@@ -252,7 +251,7 @@ def construct_link_to_monitor_history(request, title, name, hostname):
     try:
 
         if settings.DEV == True:
-            url = request.build_absolute_uri(reverse('monitor')) + urlencode('?' + query)
+            url = request.build_absolute_uri(reverse('monitor')) + '?' + query
         else:
             # Unclear why 'build_absolute_uri' doesn't return 'https' in production.
             # Probably because the https is handled fully outside the container by Traefik
@@ -450,13 +449,13 @@ def construct_link_to_tasks_api(request, status, workflow_id, count):
                 query = "?workflow__id=" + str(workflow_id)
 
         if settings.DEV == True:
-            url = request.build_absolute_uri(reverse('tasks')) + urlencode(query)
+            url = request.build_absolute_uri(reverse('tasks')) + query
         else:
             # Unclear why 'build_absolute_uri' doesn't return 'https' in production.
             # Probably because the https is handled fully outside the container by Traefik
             # and ATDB is not aware of that.
 
-            url = "https://" + request.get_host() + reverse('tasks') + urlencode(query)
+            url = "https://" + request.get_host() + reverse('tasks') + query
         link = '<a href="' + url + '" target="_blank">' + str(count) + "</a>"
     except:
         pass
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 31c1859be3cb4e5104c54dc451ee20d1ebac8fa9..79441ae858d2b7b5e31ba1e5b9f61dbd6c11ce55 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -20,7 +20,6 @@ from django_tables2.views import SingleTableMixin
 from django_tables2 import SingleTableView
 
 from django.shortcuts import render, redirect
-from django.utils.http import urlencode
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 from rest_framework.request import Request
 
@@ -539,7 +538,7 @@ def AnnotateQuality(request, id=0, page=0, new_remark=""):
                 task.remarks['quality'] = request.POST.get("annotation","")
 
             task.save()
-            return redirect('validation') + urlencode('?page='+request.POST.get("return_to_page", 1))
+            return redirect('validation') + '?page='+request.POST.get("return_to_page", 1)
 
     else:
         # a GET means that the form should be presented to be filled in
@@ -877,7 +876,7 @@ def Hold(request, pk, hold_it, page=0):
         return redirect('query')
     else:
         # redirect to tasks list
-        return redirect('index') + urlencode('?page=' + page)
+        return redirect('index') + '?page=' + page
 
 
 def HoldQuery(request, pk, hold_it, query_params):
@@ -887,7 +886,7 @@ def HoldQuery(request, pk, hold_it, query_params):
     task.save()
 
     current_query_params = convert_query_params_to_url(query_params)
-    return redirect('query') + '?' + urlencode(current_query_params)
+    return redirect('query') + '?' + current_query_params
 
 
 @login_required
@@ -916,7 +915,7 @@ def TaskSetStatus(request, pk, new_status, page=0):
         return redirect('task-details')
     else:
         # redirect to tasks list
-        return redirect('index') + urlencode('?page=' + page)
+        return redirect('index') + '?page=' + page
 
 
 @login_required
@@ -933,7 +932,7 @@ def TaskValidate(request, pk, quality, new_status, page=0):
         return redirect('validation')
     else:
         # redirect to tasks list
-        return redirect('validation') + urlencode('?page=' + page)
+        return redirect('validation') + '?page=' + page
 
 
 @login_required
@@ -948,7 +947,7 @@ def TaskRetry(request, pk, new_status, page=0):
         return redirect('task-details')
     else:
         # redirect to tasks list
-        return redirect('failures') + urlencode('?page=' + page)
+        return redirect('failures') + '?page=' + page
 
 
 # set a filter value in the session, used later by the 'get_searched_tasks' mechanism
@@ -962,7 +961,7 @@ def TaskSetFilter(request, filter, redirect_to_page):
     if redirect_to_page == 'quality':
         return redirect('quality')
 
-    return redirect('index') + urlencode('?page=1')
+    return redirect('index') + '?page=1'
 
 
 # set the defined list of ACTIVE_STATUSSES on the session, used later by the 'get_searched_tasks' mechanism
@@ -972,7 +971,7 @@ def TaskSetActiveFilter(request, redirect_to_page):
 
     if redirect_to_page == 'quality':
         return redirect('quality')
-    return redirect('index') + urlencode('?page=1')
+    return redirect('index') + '?page=1'
 
 
 def TaskSetOnHoldFilter(request, onhold, redirect_to_page):
@@ -980,7 +979,7 @@ def TaskSetOnHoldFilter(request, onhold, redirect_to_page):
 
     if redirect_to_page == 'quality':
         return redirect('quality')
-    return redirect('index') + urlencode('?page=1')
+    return redirect('index') + '?page=1'
 
 
 def TaskClearFilter(request, redirect_to_page):
@@ -994,7 +993,7 @@ def TaskClearFilter(request, redirect_to_page):
         return redirect('quality')
     if redirect_to_page == 'query':
         return redirect('query')
-    return redirect('index') + urlencode('?page=1')
+    return redirect('index') + '?page=1'
 
 
 @login_required
@@ -1014,7 +1013,7 @@ def ChangePriority(request, pk, priority_change, page=0):
         return redirect('task-details')
     else:
         # redirect to tasks list
-        return redirect('index') + urlencode('?page=' + page)
+        return redirect('index') + '?page=' + page
 
 
 def SortTasks(request, sort, redirect_to_page):
@@ -1059,7 +1058,7 @@ def TaskSetStatusTables2(request, pk, new_status, query_params):
 
     current_query_params = convert_query_params_to_url(query_params)
     # current_query_params = "id=&id__gte=&id__lte=&workflow__id=&filter=%09test&filter__icontains=&priority=&priority__gte=&priority__lte=&status__icontains=&status__in=&project=&project__icontains=&sas_id=&sas_id__icontains=&resume=unknown"
-    return redirect('query') + urlencode('?' + current_query_params)
+    return redirect('query') + '?' + current_query_params
 
 
 @login_required
@@ -1076,7 +1075,7 @@ def TaskMultiStatus(request, new_status, query_params):
             task.save()
 
         current_query_params = request.session['current_query_params']
-        return redirect('query') + urlencode('?' + current_query_params)
+        return redirect('query') + '?' + current_query_params
 
     # add the current query parameters to the session so that they survive
     # the request/response to the confirmation page (which has other query parameters)
@@ -1100,7 +1099,7 @@ def TaskMultiHold(request, onhold, query_params):
             task.save()
 
         current_query_params = request.session['current_query_params']
-        return redirect('query') + urlencode('?' + current_query_params)
+        return redirect('query') + '?' + current_query_params
 
     # add the current query parameters to the session so that they survive
     # the request/response to the confirmation page (which has other query parameters)