diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
index ef53e39d2a..eba03afc2d 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
@@ -1,6 +1,8 @@
 package se.su.dsv.scipro.admin.panels.match;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -60,7 +62,7 @@ public class AdminSupervisorKeywordPanel extends Panel {
 if(!supervisorName.toString().isEmpty()) {
     String addToSearch = "true";
 }
-        if (sortDirection.toString().isEmpty() || sortDirection.toString().equals("ASC")) {
+        if ((sortDirection.toString().isEmpty() && !orderBy.equals("keywords.all.size")) || sortDirection.toString().equals("ASC")) {
             sortDirection.delete(0, sortDirection.length());
             sortDirection.append("DESC");
         } else {
@@ -84,6 +86,38 @@ if(!supervisorName.toString().isEmpty()) {
         return employeeList;
     }
 
+
+    private List<Employee> sortEmployeeList(final StringBuffer sortDirection, final StringBuffer orderBy, List<Employee> employeeList) {
+        if(sortDirection.toString().equals("ASC")) {
+            Collections.sort(employeeList, new Comparator<Employee>() {
+                @Override
+                public int compare(Employee o1, Employee o2) {
+                    if (o1.getKeywords().getAll().size() > o2.getKeywords().getAll().size()) {
+                        return -1;
+                    } else if (o2.getKeywords().getAll().size() > o1.getKeywords().getAll().size()) {
+                        return 1;
+                    } else {
+                        return 0;
+                    }
+                }
+            });
+        } else if (orderBy.toString().equals("keywords.all.size") && sortDirection.toString().equals("DESC")) {
+            Collections.sort(employeeList, new Comparator<Employee>() {
+                @Override
+                public int compare(Employee o1, Employee o2) {
+                    if (o1.getKeywords().getAll().size() > o2.getKeywords().getAll().size()) {
+                        return 1;
+                    } else if (o2.getKeywords().getAll().size() > o1.getKeywords().getAll().size()) {
+                        return -1;
+                    } else {
+                        return 0;
+                    }
+                }
+            });
+        }
+        return employeeList;
+    }
+
 	private void setUpTable(final Dialog dialog, final WebMarkupContainer tableContainer, final StringBuffer supervisorName) {
         final StringBuffer sortDirection = new StringBuffer();
         final StringBuffer orderBy = new StringBuffer();
@@ -97,12 +131,16 @@ if(!supervisorName.toString().isEmpty()) {
                 if (sortDirection.toString().isEmpty()) {
                     sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName");
                 } else if (sortDirection.toString().equals("ASC")) {
-                    sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, orderBy.toString());
+                    sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName");
                 } else {
-                    sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, orderBy.toString());
+                    sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, "user.lastName");
                 }
                 List<Employee> employeeList = new ArrayList<Employee>();
                 employeeList.addAll(supervisorService.findAllEmployees(sorter));
+
+                if(orderBy.toString().equals("keywords.all.size")) {
+                    employeeList = sortEmployeeList(sortDirection, orderBy, employeeList);
+                }
                 if(supervisorName.toString().isEmpty()) {
                     return employeeList;
                 }
@@ -157,7 +195,7 @@ if(!supervisorName.toString().isEmpty()) {
 
             @Override
             public void onClick(AjaxRequestTarget target) {
-                getSortOrder(sortDirection, orderBy, "keywords.all.size()", supervisorName);
+                getSortOrder(sortDirection, orderBy, "keywords.all.size", supervisorName);
                 target.addComponent(tableContainer);
             }
         };