diff --git a/src/Checker/Checker.py b/src/Checker/Checker.py
index 4591bedad16897f86f2b15762cc96393bfaed9b7..328c3588a84ee239c19b574b03f6343011a62b25 100644
--- a/src/Checker/Checker.py
+++ b/src/Checker/Checker.py
@@ -57,6 +57,7 @@ class AbstractModelChecker(object):
     def __init__(self):
         self._name = ""
         self._description = ""
+        self._solver = "study"
         self._modules = Modules.NONE
 
         self._status = STATUS.UNKNOWN
diff --git a/src/Checker/Mage.py b/src/Checker/Mage.py
index 260431a563bf6ac830b5ee85ca52e75ef3e98971..e7f8352b6d16ec8b2e003f4040b6ce8e6ca6fca6 100644
--- a/src/Checker/Mage.py
+++ b/src/Checker/Mage.py
@@ -23,6 +23,8 @@ from tools import flatten, timer
 
 from PyQt5.QtCore import QCoreApplication
 
+from Modules import Modules
+
 from Checker.Checker import AbstractModelChecker, STATUS
 from Checker.Study import StudyGeometryChecker
 
@@ -30,7 +32,7 @@ _translate = QCoreApplication.translate
 
 
 class MageNetworkGraphChecker(AbstractModelChecker):
-    def __init__(self, connectivity=True):
+    def __init__(self, connectivity=True, version="mage8"):
         super(MageNetworkGraphChecker, self).__init__()
 
         self._mode_conn = connectivity
@@ -44,6 +46,7 @@ class MageNetworkGraphChecker(AbstractModelChecker):
             "Checker", f"Mage network graph {mode} checker")
         self._description = _translate(
             "Checker", "Check if the network graph is valid")
+        self._solver = version
         self._modules = Modules.NETWORK
 
     @timer
@@ -200,7 +203,7 @@ class MageNetworkGraphChecker(AbstractModelChecker):
 
 
 class MageGeometryGuideLineChecker(StudyGeometryChecker):
-    def __init__(self):
+    def __init__(self, version="mage8"):
         super(MageGeometryGuideLineChecker, self).__init__()
 
         self._name = _translate("Checker", "Mage geometry guide line checker")
@@ -209,6 +212,7 @@ class MageGeometryGuideLineChecker(StudyGeometryChecker):
             "Check if exists geometry guide line is correctly defined \
 for each reaches of the study"
         )
+        self._solver = version
         self._modules = Modules.GEOMETRY
 
         self._reachs = []
diff --git a/src/Checker/Study.py b/src/Checker/Study.py
index 01dbc309801a0e08116ac9172c15e966e9294111..a9562aa25210555e07658c1d1e6e018dc5ba8cd0 100644
--- a/src/Checker/Study.py
+++ b/src/Checker/Study.py
@@ -20,6 +20,7 @@ import time
 
 from PyQt5.QtCore import QCoreApplication
 
+from Modules import Modules
 from Checker.Checker import AbstractModelChecker, STATUS
 
 _translate = QCoreApplication.translate
diff --git a/src/Modules.py b/src/Modules.py
index d7107c377ab8663ad9f4dd694e88af0fde607b56..6f7b1d765003cae3d701a6b507d0a5ae87504b41 100644
--- a/src/Modules.py
+++ b/src/Modules.py
@@ -36,7 +36,9 @@ class Modules(Flag):
     HYDRAULIC_STRUCTURES = auto()
     RESERVOIR = auto()
     SEDIMENT_LAYER = auto()
-    RESULT = auto()
+
+    # Results
+    RESULTS = auto()
 
     # Display
     WINDOW_LIST = auto()
@@ -44,3 +46,31 @@ class Modules(Flag):
     @classmethod
     def all(cls):
         return ~cls.NONE
+
+    @classmethod
+    def modelling(cls):
+        return (
+            cls.NETWORK
+            | cls.GEOMETRY
+            | cls.BOUNDARY_CONDITION
+            | cls.LATERAL_CONTRIBUTION
+            | cls.FRICTION
+            | cls.INITIAL_CONDITION
+            | cls.HYDRAULIC_STRUCTURES
+            | cls.RESERVOIR
+            | cls.SEDIMENT_LAYER
+        )
+
+    @classmethod
+    def modelling_list(cls):
+        return [
+            cls.NETWORK,
+            cls.GEOMETRY,
+            cls.BOUNDARY_CONDITION,
+            cls.LATERAL_CONTRIBUTION,
+            cls.FRICTION,
+            cls.INITIAL_CONDITION,
+            cls.HYDRAULIC_STRUCTURES,
+            cls.RESERVOIR,
+            cls.SEDIMENT_LAYER,
+        ]
diff --git a/src/View/CheckList/Table.py b/src/View/CheckList/Table.py
index 3d2dc66b8ac5b1015ec7462e35e07f03cedbcecd..5d210b93a4dd72cd862f2ec4526bb92229ad6c36 100644
--- a/src/View/CheckList/Table.py
+++ b/src/View/CheckList/Table.py
@@ -16,6 +16,9 @@
 
 # -*- coding: utf-8 -*-
 
+import logging
+
+from functools import reduce
 from tools import trace, timer
 
 from PyQt5.QtCore import (
@@ -35,9 +38,11 @@ from PyQt5.QtWidgets import (
     QComboBox,
 )
 
+from Modules import Modules
+from Checker.Checker import STATUS
 from View.Tools.PamhyrTable import PamhyrTableModel
 
-_translate = QCoreApplication.translate
+logger = logging.getLogger()
 
 
 class TableModel(PamhyrTableModel):
@@ -68,3 +73,68 @@ class TableModel(PamhyrTableModel):
             return self._data[row].summary
 
         return QVariant()
+
+class TabTableModel(PamhyrTableModel):
+    def compute_status(self, row, column):
+        module = self._opt_data[row]
+        solver = self._headers[column]
+
+        checkers = filter(
+            lambda checker: checker._modules is module,
+            filter(
+                lambda checker: checker._solver is solver,
+                self._data
+            )
+        )
+        checkers_status = list(
+            map(
+                lambda c: c._status,
+                checkers
+            )
+        )
+
+        status = STATUS.UNKNOWN
+        if len(checkers_status) > 0:
+            status = reduce(lambda acc, c: acc | c, checkers_status)
+
+        logger.debug(f"Checkers: {row}, {column}: {checkers_status} {status}")
+
+        return status, checkers_status
+
+    def data(self, index, role):
+        row = index.row()
+        column = index.column()
+
+        if role == Qt.ForegroundRole:
+            if self._headers[column] == "type":
+                return QVariant()
+
+            color = Qt.gray
+            status, _ = self.compute_status(row, column)
+
+            if status is STATUS.OK:
+                color = Qt.green
+            elif status is STATUS.WARNING:
+                color = Qt.yellow
+            elif status is STATUS.ERROR:
+                color = Qt.red
+
+            return QBrush(color)
+
+        if role == Qt.ItemDataRole.DisplayRole:
+            if self._headers[column] == "type":
+                return str(self._opt_data[row])
+
+            value = "UNKNOWN"
+            status, _ = self.compute_status(row, column)
+
+            if status is STATUS.OK:
+                value = "OK"
+            elif status is STATUS.WARNING:
+                value = "WARNING"
+            elif status is STATUS.ERROR:
+                value = "ERROR"
+
+            return value
+
+        return QVariant()
diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index f98811d22b4ca3705a0e3436dade89e7166605ab..81d2520fce22e91c5102b675a4a6d897eb5ef186 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -193,7 +193,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         tab_widget = self.findChild(QTabWidget, "tabWidget")
 
         self._tab_widget_checker = WidgetChecker(
-            study=self._study, parent=self
+            study=self._study, config=self.conf, parent=self
         )
 
         tab_widget.addTab(
diff --git a/src/View/MainWindowTabChecker.py b/src/View/MainWindowTabChecker.py
index d3118d61b6059a9034e6658ca2951aac7c7657d9..1bbe8492d20e93bfbb35b4bf4a358bd643f4b68f 100644
--- a/src/View/MainWindowTabChecker.py
+++ b/src/View/MainWindowTabChecker.py
@@ -18,9 +18,18 @@
 
 import logging
 
-from tools import timer, trace
+from tools import timer, trace, flatten
+
+from PyQt5.QtWidgets import (
+    QTableView,
+)
+
+from Modules import Modules
+from Model.Study import Study
+from Solver.Solvers import solver_type_list, solver_long_name
 
 from View.Tools.PamhyrWidget import PamhyrWidget
+from View.CheckList.Table import TabTableModel
 
 logger = logging.getLogger()
 
@@ -28,20 +37,45 @@ logger = logging.getLogger()
 class WidgetChecker(PamhyrWidget):
     _pamhyr_ui = "MainWindowTabCheckers"
 
-    def __init__(self, study=None, parent=None):
+    def __init__(self, study=None, config=None, parent=None):
         self._study = study
+        self._config = config
 
         super(WidgetChecker, self).__init__(
             parent=parent
         )
 
-        self._checkers = set()
-
+        self.setup_solver_list()
+        self.setup_checker_list()
         self.setup_table()
         self.setup_list()
 
+    def setup_solver_list(self):
+        self._solvers = list(
+            map(
+                lambda solver: solver_type_list[solver],
+                solver_type_list
+            )
+        )
+
+    def setup_checker_list(self):
+        self._checkers = flatten(
+            map(
+                lambda solver: solver.checkers(),
+                self._solvers + [Study]
+            )
+        )
+
     def setup_table(self):
-        return
+        header = {'type': "Type", **solver_long_name}
+
+        table = self.find(QTableView, f"tableView_checker")
+        self._table = TabTableModel(
+            table_view=table,
+            table_headers=header,
+            data=self._checkers,
+            opt_data=Modules.modelling_list()
+        )
 
     def setup_list(self):
         return