diff --git a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java
index eb4d64b5a8..80e609f010 100644
--- a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java
+++ b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java
@@ -1,8 +1,10 @@
 package se.su.dsv.scipro.match.dao.interfaces;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.Set;
 
+import se.su.dsv.scipro.data.dao.interfaces.Dao;
 import se.su.dsv.scipro.data.dao.interfaces.LazyDeleteDao;
 import se.su.dsv.scipro.match.dataobject.Keyword;
 import se.su.dsv.scipro.match.dataobject.KeywordType;
@@ -10,6 +12,7 @@ import se.su.dsv.scipro.match.dataobject.KeywordType;
 public interface KeywordDao extends LazyDeleteDao<Keyword>{
 
     Set<Keyword> getKeywords(KeywordType type, boolean includeDeleted);
+    List<Keyword> getKeywordList(Params params);
     
     public List<Keyword> findAllFromType(KeywordType kt, boolean includeDeleted);
     
@@ -17,4 +20,41 @@ public interface KeywordDao extends LazyDeleteDao<Keyword>{
     Keyword getKeywordByNameAndType(String keywordName, KeywordType type);
 
 
+    public static class Params extends Dao.SortableParams implements Serializable {
+
+		private static final long serialVersionUID = 5317030582030781723L;
+		
+		private String keyword;
+		private KeywordType type;
+		private boolean includeDeleted = false;
+
+		public Params() {
+			//Sort keywords on their name in ascending order as default when using Params
+			setSortOn("keyword", Sort.ASCENDING);
+		}
+		
+		public void setKeyword(String keyword) {
+			this.keyword = keyword;
+		}
+
+		public String getKeyword() {
+			return keyword;
+		}
+
+		public void setType(KeywordType type) {
+			this.type = type;
+		}
+
+		public KeywordType getType() {
+			return type;
+		}
+
+		public void setIncludeDeleted(boolean includeDeleted) {
+			this.includeDeleted = includeDeleted;
+		}
+
+		public boolean isIncludeDeleted() {
+			return includeDeleted;
+		}
+    }
 }
diff --git a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
index f1b466f4a7..9b4860b570 100644
--- a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
+++ b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
@@ -14,6 +14,7 @@ import org.springframework.orm.jpa.JpaCallback;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import se.su.dsv.scipro.data.dao.jpa.AbstractQuerySet;
 import se.su.dsv.scipro.data.dao.jpa.AbstractSortableQuerySet;
 import se.su.dsv.scipro.data.dao.jpa.LazyDeleteAbstractDaoJPAImp;
 import se.su.dsv.scipro.data.dao.jpa.Query;
@@ -41,6 +42,18 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple
         }
     }
 
+    @Override
+    public List<Keyword> getKeywordList(Params params) {
+    	return getJpaTemplate().execute(createQuerySet(params).fetchCallback());
+    }
+    
+    private AbstractQuerySet<Keyword> createQuerySet(Params params) {
+        return new QuerySet()
+        	.type(params.getType())
+        	.includeDeleted(params.isIncludeDeleted())
+        	.sort(params);
+    }
+    
     private static class QuerySet extends AbstractSortableQuerySet<Keyword> {
         public QuerySet() {
             super(Keyword.class);
@@ -55,6 +68,14 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple
             return this;
         }
         
+        public QuerySet includeDeleted(boolean includeDeleted) {
+        	if(!includeDeleted) {
+        		getQuery().combine(
+        				new Query().where("k.deleted = false"));
+        	}
+        	return this;
+        }
+        
         public QuerySet noDeleted() {
         	getQuery().combine(
         		new Query().where("k.deleted = false"));