diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 12f05e65b0c19016d3a8bf06cc5a8f12aa39ac9d..aa268c60fda8433db6521b7eb737484773a06b42 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -450,7 +450,7 @@ test-dashboard-service-init:
   script:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
-    - cd ./dbrepo-dashboard-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py && coverage html && coverage xml && coverage report > ./coverage.txt
+    - cd ./dbrepo-dashboard-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_integration_dashboard.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
diff --git a/dbrepo-dashboard-service/init/app.py b/dbrepo-dashboard-service/init/app.py
index b2600c5604d066800d71a29cddfd20e2d038f7c3..84b91da6efa049721563900a9998cb9e5fa77211 100644
--- a/dbrepo-dashboard-service/init/app.py
+++ b/dbrepo-dashboard-service/init/app.py
@@ -53,7 +53,7 @@ def save_dashboards(databases: List[Database]) -> None:
         if db is not None:
             logging.debug(f"dashboard already exists for database with id: {database.id}")
             continue
-        dashboard.create(database.internal_name, database.owner.username, database.dashboard_uid)
+        dashboard.create(database.internal_name, database.dashboard_uid)
         dashboard.update(database)
 
 
diff --git a/dbrepo-dashboard-service/init/panel.py b/dbrepo-dashboard-service/init/panel.py
index 896ecf797b13def3fea8df58214cf9064abb6880..684ed815c4a2a07589f8d954fe01e6467bd206fa 100644
--- a/dbrepo-dashboard-service/init/panel.py
+++ b/dbrepo-dashboard-service/init/panel.py
@@ -16,7 +16,7 @@ number_types = [ColumnType.SERIAL, ColumnType.BIT, ColumnType.SMALLINT, ColumnTy
 
 time_types = [ColumnType.DATE, ColumnType.TIME, ColumnType.TIMESTAMP, ColumnType.YEAR]
 
-bool_types = [ColumnType.TINYINT]
+bool_types = [ColumnType.TINYINT, ColumnType.BOOL]
 
 section_height = 3 * 8
 
diff --git a/dbrepo-dashboard-service/init/tests/test_integration_dashboard.py b/dbrepo-dashboard-service/init/tests/test_integration_dashboard.py
index 9208049f2acf832f355a4133fd5b374ab9a8a161..41f757aef981a15627955da51597ee28f719a347 100644
--- a/dbrepo-dashboard-service/init/tests/test_integration_dashboard.py
+++ b/dbrepo-dashboard-service/init/tests/test_integration_dashboard.py
@@ -1,19 +1,113 @@
 import unittest
 
+from dbrepo.api.dto import Database, ColumnType, UserBrief, ContainerBrief, ImageBrief, View, ViewColumn, ColumnEnum
 from grafana_client.client import GrafanaClientError
 
 import dashboard
 from clients.grafana_client import GrafanaClient
 
+DASHBOARD_UID = 'covdb1'
+
+req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
+               name="Test",
+               internal_name="test_tuw1",
+               owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
+               contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
+               exchange_name="dbrepo",
+               is_public=True,
+               is_schema_public=True,
+               is_dashboard_enabled=True,
+               dashboard_uid=DASHBOARD_UID,
+               container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5",
+                                        name="MariaDB",
+                                        internal_name="mariadb",
+                                        image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549",
+                                                         name="mariadb",
+                                                         version="11.1.3",
+                                                         default=True)),
+               views=[View(id='16f59403-4f3a-4c35-aa25-44dc72f97a3e',
+                           name='Some View',
+                           internal_name='some_view',
+                           query='SELECT `id`, `name`, `created_at`, `yob`, `lap_pr`, `is_verified` FROM `some_table` WHERE `age` > 21',
+                           query_hash='0b95f9c3f1a639c4bf5460207991f7925b685c4600c902e62f63f575f9975700',
+                           database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                           owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
+                           is_public=True,
+                           is_schema_public=True,
+                           initial_view=False,
+                           columns=[ViewColumn(id='822a64b9-0ad4-4b00-960e-8c3c98366c99',
+                                               name='id',
+                                               internal_name='id',
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               ord=0,
+                                               type=ColumnType.BIGINT,
+                                               is_null_allowed=False),
+                                    ViewColumn(id='45b99683-be27-4e14-9a0d-76e47a8400f2',
+                                               name='name',
+                                               internal_name='name',
+                                               ord=1,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.VARCHAR,
+                                               size=255,
+                                               is_null_allowed=False),
+                                    ViewColumn(id='a26c19ad-682b-4c3a-9064-74c1c5c98a60',
+                                               name='created_at',
+                                               internal_name='created_at',
+                                               ord=2,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.TIMESTAMP,
+                                               is_null_allowed=False),
+                                    ViewColumn(id='2cb8c249-4c09-4651-b987-e85b2d27cea0',
+                                               name='yob',
+                                               internal_name='yob',
+                                               ord=3,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.YEAR,
+                                               is_null_allowed=True),
+                                    ViewColumn(id='4649ed3f-db4d-44f3-a622-d9f57326805e',
+                                               name='lap_pr',
+                                               internal_name='lap_pr',
+                                               ord=4,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.TIME,
+                                               is_null_allowed=True),
+                                    ViewColumn(id='cc2b02cf-bac4-4ac7-b5e9-711ae3dc1ffe',
+                                               name='is_verified',
+                                               internal_name='is_verified',
+                                               ord=5,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.BOOL,
+                                               is_null_allowed=False),
+                                    ViewColumn(id='f8982e7e-7e6f-433a-8a08-0f4da6ee8b68',
+                                               name='gender',
+                                               internal_name='gender',
+                                               ord=6,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.ENUM,
+                                               enums=[ColumnEnum(id='d30908e7-17e1-4c95-874a-1e5d126a1f4a',
+                                                                 value='male'),
+                                                      ColumnEnum(id='d225ba99-4169-470d-b497-3423b5574d0a',
+                                                                 value='female')],
+                                               is_null_allowed=False),
+                                    ViewColumn(id='82647def-bc83-4756-9b9d-d25d51b08b7f',
+                                               name='tags',
+                                               internal_name='tags',
+                                               ord=6,
+                                               database_id='209acf92-5c9b-4633-ad99-113c86f6e948',
+                                               type=ColumnType.SET,
+                                               enums=[ColumnEnum(id='f39fcef1-a6c0-4877-9cc2-908fa1e4a44e',
+                                                                 value='vip')],
+                                               is_null_allowed=False)],
+                           identifiers=[])])
+
 
 class DashboardIntegrationTest(unittest.TestCase):
-    DASHBOARD_UID = 'covdb1'
 
     def test_find_succeeds(self):
         # mock
         GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
                                                                   overwrite=False,
-                                                                  dashboard=dict(uid=self.DASHBOARD_UID,
+                                                                  dashboard=dict(uid=DASHBOARD_UID,
                                                                                  title=f'Mock',
                                                                                  tags=['managed'],
                                                                                  timezone='browser',
@@ -21,8 +115,8 @@ class DashboardIntegrationTest(unittest.TestCase):
                                                                                  preload=True,
                                                                                  panels=[])))
         # test
-        response = dashboard.find(self.DASHBOARD_UID)
-        self.assertEqual(self.DASHBOARD_UID, response['dashboard']['uid'])
+        response = dashboard.find(DASHBOARD_UID)
+        self.assertEqual(DASHBOARD_UID, response['dashboard']['uid'])
 
     def test_find_not_found_fails(self):
         # test
@@ -37,14 +131,14 @@ class DashboardIntegrationTest(unittest.TestCase):
 
     def test_create_with_uid_succeeds(self):
         # test
-        response = dashboard.create('some_database', self.DASHBOARD_UID)
-        self.assertEqual(self.DASHBOARD_UID, response['uid'])
+        response = dashboard.create('some_database', DASHBOARD_UID)
+        self.assertEqual(DASHBOARD_UID, response['uid'])
 
     def test_create_uid_exists_fails(self):
         # mock
         GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
                                                                   overwrite=False,
-                                                                  dashboard=dict(uid=self.DASHBOARD_UID,
+                                                                  dashboard=dict(uid=DASHBOARD_UID,
                                                                                  title=f'Mock',
                                                                                  tags=['managed'],
                                                                                  timezone='browser',
@@ -53,7 +147,7 @@ class DashboardIntegrationTest(unittest.TestCase):
                                                                                  panels=[])))
         # test
         try:
-            dashboard.create('some_database', self.DASHBOARD_UID)
+            dashboard.create('some_database', DASHBOARD_UID)
         except GrafanaClientError:
             pass
 
@@ -61,7 +155,7 @@ class DashboardIntegrationTest(unittest.TestCase):
         # mock
         GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
                                                                   overwrite=False,
-                                                                  dashboard=dict(uid=self.DASHBOARD_UID,
+                                                                  dashboard=dict(uid=DASHBOARD_UID,
                                                                                  title=f'Mock',
                                                                                  tags=['managed'],
                                                                                  timezone='browser',
@@ -69,7 +163,7 @@ class DashboardIntegrationTest(unittest.TestCase):
                                                                                  preload=True,
                                                                                  panels=[])))
         # test
-        dashboard.delete(self.DASHBOARD_UID)
+        dashboard.delete(DASHBOARD_UID)
 
     def test_delete_not_exists_fails(self):
         # test
@@ -82,7 +176,7 @@ class DashboardIntegrationTest(unittest.TestCase):
         # mock
         GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
                                                                   overwrite=False,
-                                                                  dashboard=dict(uid=self.DASHBOARD_UID,
+                                                                  dashboard=dict(uid=DASHBOARD_UID,
                                                                                  title=f'Mock',
                                                                                  tags=['managed'],
                                                                                  timezone='browser',
@@ -90,4 +184,11 @@ class DashboardIntegrationTest(unittest.TestCase):
                                                                                  preload=True,
                                                                                  panels=[])))
         # test
-        dashboard.delete(self.DASHBOARD_UID)
+        dashboard.update(req)
+
+    def test_update_not_exists_fails(self):
+        # test
+        try:
+            dashboard.update(req)
+        except GrafanaClientError:
+            pass