diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java
index 018e4736fa..6220776cec 100644
--- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java
+++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumService.java
@@ -27,5 +27,5 @@ public interface ProjectForumService {
 
     boolean hasUnreadThreads(Project project, User user);
 
-    int getUnreadThreadsCount(Project project, User user);
+    long getUnreadThreadsCount(Project project, User user);
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java
index 2743d0cc3d..467b092b70 100644
--- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectForumServiceImpl.java
@@ -107,7 +107,9 @@ public class ProjectForumServiceImpl implements ProjectForumService {
     }
 
     @Override
-    public int getUnreadThreadsCount(Project project, User user) {
+    public long getUnreadThreadsCount(Project project, User user) {
+        return projectThreadRepository.getUnreadThreadsCount(project, user);
+        /*
         List<ProjectThread> threads = getThreads(project);
         int count = 0;
         for (ProjectThread thread : threads) {
@@ -116,6 +118,8 @@ public class ProjectForumServiceImpl implements ProjectForumService {
             }
         }
         return count;
+
+         */
     }
 
     @Override
diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepository.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepository.java
index cbe28506a1..189ffed09b 100644
--- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepository.java
+++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepository.java
@@ -5,6 +5,7 @@ import se.su.dsv.scipro.system.JpaRepository;
 import se.su.dsv.scipro.system.QueryDslPredicateExecutor;
 import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
 import se.su.dsv.scipro.project.Project;
+import se.su.dsv.scipro.system.User;
 
 import java.util.List;
 
@@ -13,4 +14,6 @@ public interface ProjectThreadRepository extends JpaRepository<ProjectThread, Lo
 
     List<ProjectThread> findByProject(Project project);
 
+    long getUnreadThreadsCount(Project project, User user);
+
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepositoryImpl.java b/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepositoryImpl.java
index b278d1d214..26286262e6 100644
--- a/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepositoryImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/forum/ProjectThreadRepositoryImpl.java
@@ -1,5 +1,6 @@
 package se.su.dsv.scipro.forum;
 
+import jakarta.persistence.Query;
 import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
 import se.su.dsv.scipro.forum.dataobjects.QProjectThread;
 import se.su.dsv.scipro.project.Project;
@@ -8,6 +9,8 @@ import se.su.dsv.scipro.system.GenericRepo;
 import jakarta.inject.Inject;
 import jakarta.inject.Provider;
 import jakarta.persistence.EntityManager;
+import se.su.dsv.scipro.system.User;
+
 import java.util.List;
 
 public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long> implements ProjectThreadRepository {
@@ -21,4 +24,25 @@ public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long
         return findAll(QProjectThread.projectThread.project.eq(project));
     }
 
+    @Override
+    public long getUnreadThreadsCount(Project project, User user) {
+        StringBuilder sql = new StringBuilder()
+                .append("select count(distinct(thread_id)) result ")
+                .append("  from (select fp.thread_id as thread_id, fp.id as post_id, ")
+                .append("               exists (select `read` ")
+                .append("                         from forum_post_read_state fprs ")
+                .append("                        where fprs.forum_post_id = fp.id and ")
+                .append("                              fprs.user_id = :uid and ")
+                .append("                              fprs.read = 1) as post_read ")
+                .append("          from project_thread pt, forum_post fp ")
+                .append("         where pt.thread_id = fp.thread_id and ")
+                .append("               pt.project_id = :pid) tbl_ex ")
+                .append(" where post_read = 0");
+        Query query = em().createNativeQuery(sql.toString());
+        query.setParameter("uid", user.getId())
+             .setParameter("pid", project.getId());
+
+        return (Long)query.getSingleResult();
+    }
+
 }
diff --git a/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java b/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java
index 932b62f302..115aad83f2 100644
--- a/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/forum/panels/NumberOfMessagesPanel.java
@@ -20,12 +20,12 @@ public abstract class NumberOfMessagesPanel extends Panel {
     protected void onComponentTag(ComponentTag tag) {
         super.onComponentTag(tag);
 
-        int count = getMessageCount();
+        long count = getMessageCount();
 
         if (count > 0) {
             model.setObject("(" + count + ")");
         }
     }
 
-    public abstract int getMessageCount();
+    public abstract long getMessageCount();
 }
diff --git a/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java b/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java
index 53ff74a577..3ac0eb01e8 100755
--- a/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMyProjectsPanel.java
@@ -226,7 +226,7 @@ public class SupervisorMyProjectsPanel extends Panel {
             //item.add(container);
 
             //boolean hasUnreadThreads = projectForumService.hasUnreadThreads(projectModel.getObject(), SciProSession.get().getUser());
-            int msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser());
+            long msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser());
 
             // todo: reconsider name of this id, needs to be improved.
             Fragment fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this);
@@ -246,7 +246,7 @@ public class SupervisorMyProjectsPanel extends Panel {
 
             fragment.add(new NumberOfMessagesPanel("counter") {
                 @Override
-                public int getMessageCount() {
+                public long getMessageCount() {
                     return msgCount;
                 }
             });