diff --git a/routes/project.ts b/routes/project.ts
index 52bcb4125d42b98286901cd71b13d53393bb65ae..d7e86a429ec9091088ff73b350266091693a4235 100644
--- a/routes/project.ts
+++ b/routes/project.ts
@@ -76,6 +76,7 @@ module.exports = function (app:any, lang:string) {
     let projectArr = []
     let isProject = true
     let firstId = 0
+    let orderKeyword = req.query.sort
 
     while (isProject == true) {
       let projects = await gitlab.getProjects(100, firstId)
@@ -100,12 +101,38 @@ module.exports = function (app:any, lang:string) {
             name: projectData[i].name,
             weburl: projectData[i].web_url,
             desc: projectData[i].description,
-            keywords: projectData[i].tag_list
+            keywords: projectData[i].tag_list,
+            createdAt: projectData[i].created_at,
+            lastUpdatedAt: projectData[i].last_activity_at
           }
           projectArr.push(project)
         }
         firstId = projectData[projectData.length-1].id
       }
+
+      // MLAB-576
+      if (orderKeyword == "created_at") {
+        projectArr.sort((a, b) => {
+          let aDate:any = new Date(a.createdAt)
+          let bDate:any = new Date(b.createdAt)
+          return bDate - aDate
+        });
+      } else if (orderKeyword == "updated_at") {
+        projectArr.sort((a, b) => {
+          let aDate:any = new Date(a.lastUpdatedAt)
+          let bDate:any = new Date(b.lastUpdatedAt)
+          return bDate - aDate
+        });
+      } else { // default, sorted by name
+        projectArr.sort((a, b) => {
+          let fa = a.name.toLowerCase(),
+              fb = b.name.toLowerCase();
+      
+          if (fa < fb) return -1;
+          if (fa > fb) return 1;
+          return 0;
+        });
+      }
     }
 
     res.render(lang+'/project/projectList', {
@@ -118,6 +145,7 @@ module.exports = function (app:any, lang:string) {
     let pagesArr = []
     let isProject = true
     let firstId = 0
+    let orderKeyword = req.query.sort
 
     while (isProject == true) {
       let projects = await gitlab.getProjects(100, firstId)
@@ -151,13 +179,40 @@ module.exports = function (app:any, lang:string) {
               name: pagesData[i].name,
               weburl: pagesData[i].web_url,
               desc: pagesData[i].description,
-              keywords: pagesData[i].tag_list
+              keywords: pagesData[i].tag_list,
+              createdAt: pagesData[i].created_at,
+              lastUpdatedAt: pagesData[i].last_activity_at
             }
             pagesArr.push(pages)
           }
         }
         firstId = pagesData[pagesData.length-1].id
       }
+
+      // MLAB-576
+      if (orderKeyword == "created_at") {
+        pagesArr.sort((a, b) => {
+          let aDate:any = new Date(a.createdAt)
+          let bDate:any = new Date(b.createdAt)
+          return bDate - aDate
+        });
+      } else if (orderKeyword == "updated_at") {
+        pagesArr.sort((a, b) => {
+          let aDate:any = new Date(a.lastUpdatedAt)
+          let bDate:any = new Date(b.lastUpdatedAt)
+          return bDate - aDate
+        });
+      } else { // default, sorted by name
+        pagesArr.sort((a, b) => {
+          let fa = a.name.toLowerCase(),
+              fb = b.name.toLowerCase();
+      
+          if (fa < fb) return -1;
+          if (fa > fb) return 1;
+          return 0;
+        });
+      }
+
     }
 
     res.render(lang+'/project/pagesList', {
diff --git a/views/DE/project/pagesList.pug b/views/DE/project/pagesList.pug
index c6158220f1d1ae9f9abec32b4662f371b2bb158c..710308d6429958f60c253d881a171604585f1fd6 100644
--- a/views/DE/project/pagesList.pug
+++ b/views/DE/project/pagesList.pug
@@ -38,11 +38,14 @@ html(lang="de")
         div(class="container")
             p#pagesCounter #{pages.length} Projektinformationen werden angezeigt
             div(class="pt-4 pb-4 form-row")
-                div(class="form-group col-md-12")
+                div(class="form-group col-md-10")
                     input(id="searchInput", class="form-control form-control-lg", type="text", placeholder="Suchen Sie hier nach Themen und Projekten", onkeyup="searchFunction()")
-                //div(class="form-group col-md-2")
-                    select(class="form-control")
-                        option uncategorized
+                div(class="form-group col-md-2")
+                    select#sortingSelect(class="form-control form-control-lg")
+                        option(value="" disabled) Sort by
+                        option(value="name") &nbsp;&nbsp; Name
+                        option(value="created_at") &nbsp;&nbsp; Last created
+                        option(value="updated_at") &nbsp;&nbsp; Last updated
             | <div class="row">
             for item in pages
                 div(class="card-deck py-4 col-sm")
@@ -97,4 +100,28 @@ html(lang="de")
             }
 
             document.getElementById("pagesCounter").innerHTML = counterBlock+" Projektinformationen werden angezeigt"
-        }
\ No newline at end of file
+        }
+
+        $("#sortingSelect").change(function() {
+            window.location.replace('/projektinformationen?sort='+$("#sortingSelect").val())
+        });
+        function getQueryStringParams(params, url) {
+            // first decode URL to get readable data
+            var href = decodeURIComponent(url || window.location.href);
+            // regular expression to get value
+            var regEx = new RegExp('[?&]' + params + '=([^&#]*)', 'i');
+            var value = regEx.exec(href);
+            // return the value if exist
+            return value ? value[1] : null;
+        }
+        function setSortSelect() {
+            let sortKeyword = getQueryStringParams('sort', window.location.href)
+            if (sortKeyword == "created_at") {
+                $("#sortingSelect").val("created_at")
+            } else if(sortKeyword == "updated_at") {
+                $("#sortingSelect").val("updated_at")
+            } else {
+                $("#sortingSelect").val("name")
+            }
+        }
+        setSortSelect()
\ No newline at end of file
diff --git a/views/DE/project/projectList.pug b/views/DE/project/projectList.pug
index d6fbe790a233ee03740e9d2d75f26d65ab0ee6f4..fe9323faa729760e580924b4a5bf5db7f6e5ca0f 100644
--- a/views/DE/project/projectList.pug
+++ b/views/DE/project/projectList.pug
@@ -38,11 +38,14 @@ html(lang="de")
         div(class="container")
             p#projectCounter #{project.length} Projektdaten werden angezeigt
             div(class="pt-4 pb-4 form-row")
-                div(class="form-group col-md-12")
+                div(class="form-group col-md-10")
                     input(id="searchInput", class="form-control form-control-lg", type="text", placeholder="Suchen Sie hier nach Themen und Projekten", onkeyup="searchFunction()")
-                //div(class="form-group col-md-2")
-                    select(class="form-control")
-                        option uncategorized
+                div(class="form-group col-md-2")
+                    select#sortingSelect(class="form-control form-control-lg")
+                        option(value="" disabled) Sort by
+                        option(value="name") &nbsp;&nbsp; Name
+                        option(value="created_at") &nbsp;&nbsp; Last created
+                        option(value="updated_at") &nbsp;&nbsp; Last updated
             | <div class="row">
             for item in project
                 div(class="card-deck py-4 col-sm")
@@ -97,4 +100,28 @@ html(lang="de")
             }
 
             document.getElementById("projectCounter").innerHTML = counterBlock+" Projektdaten werden angezeigt"
-        }
\ No newline at end of file
+        }
+
+        $("#sortingSelect").change(function() {
+            window.location.replace('/projektdaten?sort='+$("#sortingSelect").val())
+        });
+        function getQueryStringParams(params, url) {
+            // first decode URL to get readable data
+            var href = decodeURIComponent(url || window.location.href);
+            // regular expression to get value
+            var regEx = new RegExp('[?&]' + params + '=([^&#]*)', 'i');
+            var value = regEx.exec(href);
+            // return the value if exist
+            return value ? value[1] : null;
+        }
+        function setSortSelect() {
+            let sortKeyword = getQueryStringParams('sort', window.location.href)
+            if (sortKeyword == "created_at") {
+                $("#sortingSelect").val("created_at")
+            } else if(sortKeyword == "updated_at") {
+                $("#sortingSelect").val("updated_at")
+            } else {
+                $("#sortingSelect").val("name")
+            }
+        }
+        setSortSelect()
\ No newline at end of file