diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java
index 5e9d4a3ad79e4e4f7d8b37e63fd8b47aef0e4b10..fc9eeadf2cf8afab4d028239aa44d5f699376b2d 100755
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java
@@ -98,6 +98,9 @@ public class UserController extends HttpServlet {
                 if(user.isSuperUser())
                 {
                     users = userBean.getAllUsers();
+                    List<Organization> organizations = userBean.getOrganizations();
+                    request.setAttribute("organizations", organizations);
+                    request.setAttribute("vipsLogicRoles", em.createNamedQuery("VipsLogicRole.findAll").getResultList());
                 }
                 else
                 {
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
index cfff66476042e9d1180477161823fe21b4489a7d..3b7c538dafe48032f4ab467b2efd9597b4be7e96 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties
@@ -1038,3 +1038,5 @@ dd_upper=Day degree upper cutoffs
 observedPhase=Observed phase at biofix date
 YSTEMBTEMP=Yellow Stemborer Temperature Model
 addIllustration=Add illustration
+allRoles=All roles
+allStatuses=All statuses
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties
index 1afc139bfe76d5367aa934e00a138b4af2fb573c..bb9653e045f85d43e06250948804dd95c770a56b 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties
@@ -1031,3 +1031,5 @@ dd_upper=Day degree upper cutoffs
 observedPhase=Observed phase at biofix date
 YSTEMBTEMP=Yellow Stemborer Temperature Model
 addIllustration=Add illustration
+allRoles=All roles
+allStatuses=All statuses
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties
index 44987729cc137364253d4baed14b90d6d168d499..076d4b6059dbde4cd8627443542ddba64d430e4e 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties
@@ -1030,3 +1030,5 @@ dd_upper=Day degree upper cutoffs
 observedPhase=Observed phase at biofix date
 YSTEMBTEMP=Yellow Stemborer Temperature Model
 addIllustration=Add illustration
+allRoles=All roles
+allStatuses=All statuses
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
index 9066a82ec8fc7476518cdfd69438631be26424bc..55c9412dcefcf209f51d7be54786b09dd4931d1d 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties
@@ -1039,3 +1039,5 @@ dd_upper=Maksimumstemperaturer d\u00f8gngradberegning
 observedPhase=Observert utviklingsstadium ved biofix-dato
 YSTEMBTEMP=Yellow Stemborer temperaturmodell
 addIllustration=Legg til illustrasjon
+allRoles=Alle roller
+allStatuses=Alle statuser
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties
index fee3ba47efc49f20df1bf08dcabec1f8d873f8ce..4bd388a6d593250d1d8a469c0e306eb98145647d 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties
@@ -1032,3 +1032,5 @@ dd_upper=Day degree upper cutoffs
 observedPhase=Observed phase at biofix date
 YSTEMBTEMP=Yellow Stemborer Temperature Model
 addIllustration=Add illustration
+allRoles=All roles
+allStatuses=All statuses
diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties
index 778dbb652dbcaf8d46e4f39f05385da8d57ed831..21a6db363439269f7656e3725adeb3ff8d744919 100755
--- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties
+++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties
@@ -1025,3 +1025,5 @@ dd_upper=Day degree upper cutoffs
 observedPhase=Observed phase at biofix date
 YSTEMBTEMP=Yellow Stemborer Temperature Model
 addIllustration=Add illustration
+allRoles=All roles
+allStatuses=All statuses
diff --git a/src/main/webapp/templates/userList.ftl b/src/main/webapp/templates/userList.ftl
index 8d0ab98310df1df27eae7f4f0eb5a07139ca3fc2..b5a0d5ba96d48a5451368b3d0ae189f68a9cc421 100755
--- a/src/main/webapp/templates/userList.ftl
+++ b/src/main/webapp/templates/userList.ftl
@@ -18,39 +18,182 @@
 <#macro page_head>
         <title>${i18nBundle.users}</title>
 </#macro>
+<#macro custom_css>
+    <style type="text/css">
+        ul {
+        padding-inline-start: 1px;
+        }
+    </style>
+
+</#macro>
+<#macro custom_js>
+    <script type="text/javascript">
+        
+        const statusPlace = 2;
+        const orgPlace = 3;
+        const table = document.getElementById("userList");
+        const tr = table.getElementsByTagName("tr");
+
+        function sortAll() {
+
+            var organID = document.getElementById("selectOrg").value;
+            var roleTypeId = document.getElementById("selectUserRole").value;
+            var statusId = document.getElementById("selectStatus").value;
+          
+            for (i = 1; i < tr.length; i++) {
+                var organization = tr[i].getElementsByTagName("td")[orgPlace].id;
+                var role = tr[i].getElementsByTagName('li');
+                var status = tr[i].getElementsByTagName("td")[statusPlace].id;
+                var displayStatus = true;
+                var displayOrg = true;
+                var displayRole = false;
+
+                if (organID != '-1' && organization != organID) {
+                    displayOrg = false;
+                }
+
+                if (statusId != '-1' && status != statusId) {
+                    displayStatus = false;
+                }
+
+                if(roleTypeId == -1){
+                    displayRole = true;
+                } else {
+                    if(role != null){
+                        for(j = 0; j<role.length ; j++){
+                            if(displayRole != true){
+                                var userType = role[j].id;
+
+                                if(userType == roleTypeId){
+                                    displayRole = true;
+                                }
+                            }
+                        }
+                    }
+                }
+                if (displayRole && displayOrg && displayStatus) {
+                    tr[i].style.display = "";
+                } else {
+                    tr[i].style.display = "none";
+                }
+            }
+        }
+
+        function sortByUserRole() {
+            var roleTypeId = document.getElementById("selectUserRole").value;
+
+            for (i = 1; i < tr.length; i++) {
+                var isDisplay = false;
+                var role = tr[i].getElementsByTagName('li');
+
+                if(roleTypeId == -1){
+                    isDisplay = true;
+                } else {
+                    if(role != null){
+                        for(j = 0; j<role.length ; j++){
+                            if(isDisplay != true){
+                                var userType = role[j].id;
+
+                                if(userType == roleTypeId){
+                                    isDisplay = true;
+                                }
+                            }
+                        }
+                    }
+                }
+                if (isDisplay) {
+                    tr[i].style.display = "";
+                } else {
+                    tr[i].style.display = "none";
+                }
+            }
+        }
+
+    </script>
+</#macro>
 <#macro page_contents>
 <div class="singleBlockContainer">
         <h1>${i18nBundle.users}</h1>
-		<p>
-		<a href="/user?action=newUser" class="btn btn-default" role="button">${i18nBundle.addNew}</a>
+        <p>
+            <a href="/user?action=newUser" class="btn btn-default" role="button">${i18nBundle.addNew}</a>
 	</p>
         <#if messageKey?has_content>
 		<div class="alert alert-success">${i18nBundle(messageKey)}</div>
-	</#if>
+	</#if> 
+        <tr>
+            <td>
+            <div class="row">
+            <div class="col-sm-4">
+                <#if user.isSuperUser() || user.isOrganizationAdmin() >
+                    <select onchange="<#if user.isSuperUser()>sortAll();<#else>sortByUserRole();</#if>" id="selectUserRole" class="form-control">
+                        <option value="-1">${i18nBundle.allRoles}</option>
+                        <#list vipsLogicRoles as role>
+                            <option value="${role.vipsLogicRoleId}">${i18nBundle["vipsLogicRole_" + role.vipsLogicRoleId]}</option>
+                        </#list>
+                    </select>
+                </#if>
+            </div>
+            <div class="col-sm-4">
+                <#if user.isSuperUser() >
+                    <select onchange="sortAll();" id="selectOrg" class="form-control">
+                        <option value="-1">${i18nBundle.allOrganizations}</option>
+                        <#list organizations as org>
+                            <option value=${org.organizationId}>${org.organizationName}</option>
+                        </#list>  
+                    </select>
+                </#if>
+            </div>
+            <div class="col-sm-4">
+                <#if user.isSuperUser() || user.isOrganizationAdmin()>
+                    <select id="selectStatus" onchange="sortAll();" class="form-control">
+                        <option value="-1">${i18nBundle.allStatuses}</option>
+                        <option value="1">${i18nBundle["userStatus_" + 1]}</option>
+                        <option value="2">${i18nBundle["userStatus_" + 2]}</option>
+                        <option value="3">${i18nBundle["userStatus_" + 3]}</option>
+                        <option value="4">${i18nBundle["userStatus_" + 4]}</option>
+                        <option value="5">${i18nBundle["userStatus_" + 5]}</option>
+                    </select>
+                </#if>
+            </div>
+        </div>
+            </td>
+        </tr>
+    <br>
         <div class="table-responsive">
-	<table class="table table-striped">
+            <table class="table table-striped" id="userList">
 		<thead>
 			<th>${i18nBundle.lastName}</th>
                         <th>${i18nBundle.firstName}</th>
 			<th>${i18nBundle.status}</th>
+                        <th>${i18nBundle.organizationId}</th>
+                        <th>${i18nBundle.vipsLogicRoles}</th>
 		</thead>
 		<tbody>
                 <!-- The ones that need treatment first -->
-                <#assign userStatusOrdering = [2,4,3,1,5]>
+                <#assign userStatusOrdering = [2,1,3,4,5]>
                 <#list userStatusOrdering as currentUserStatusId>
                     <#list users?sort_by("lastName") as user>
                         <#if user.userStatusId == currentUserStatusId>
-                        <tr>
-                            <td><a href="/user?action=viewUser&userId=${user.userId}">${user.lastName}</a></td>
-                            <td><a href="/user?action=viewUser&userId=${user.userId}">${user.firstName}</a></td>
-                            <td>${i18nBundle["userStatus_" + user.userStatusId]}</td>
-                        </tr>
+                            <tr>
+                                <td><a href="/user?action=viewUser&userId=${user.userId}">${user.lastName}</a></td>
+                                <td><a href="/user?action=viewUser&userId=${user.userId}">${user.firstName}</a></td>
+                                <td id=${user.userStatusId}>${i18nBundle["userStatus_" + user.userStatusId]}</td>
+                                <td id=${user.organizationId.organizationId}>${user.organizationId.organizationName}</td>
+                                <td>
+                                    <#list user.vipsLogicRoles as role>
+                                        <ul>
+                                            <li id=${role.vipsLogicRoleId} style="list-style-type:none">${i18nBundle["vipsLogicRole_" + role.vipsLogicRoleId]}</li>
+                                        </ul>
+                                    </#list>
+                                </td>
+                            </tr>
                         </#if>
                     </#list>
                 </#list>
 		</tbody>
-        </table>
+            </table>
         </div>
 </div>
+
 </#macro>
 <@page_html/>