diff --git a/docs/swagger-schema.yaml b/docs/swagger-schema.yaml
index 16343c6637639060d1b5015db64d980189d165f1..3cbb6f1d62d860bbb77ebc23a53fee7f80980a79 100644
--- a/docs/swagger-schema.yaml
+++ b/docs/swagger-schema.yaml
@@ -1522,7 +1522,7 @@ parameters:
     type: "array"
     items:
       type: "string"
-    required: true
+    required: false
   casa-telescope:
     name: "telescope"
     in: query
diff --git a/services/capability/capability/views/capability.py b/services/capability/capability/views/capability.py
index 866747c399b7e2c217f705d0a2cc35a6b9b98a1e..9bd8df64438970b1910451871660b9965cee3d1f 100644
--- a/services/capability/capability/views/capability.py
+++ b/services/capability/capability/views/capability.py
@@ -360,10 +360,10 @@ def add_casa_version(request: Request) -> Response:
     """
     added = request.casa_matrix_service.add_version(
         version=request.params["version"],
-        capabilities=request.params["capabilities"],
-        is_cluster_compatible=request.params["is_cluster_compatible"]
-        if "is_cluster_compatible" in request.params
-        else True,
+        capabilities=request.params["capabilities"].split(',') if "capabilities" in request.params else [],
+        is_cluster_compatible=False if "is_cluster_compatible" in request.params
+                                       and request.params["is_cluster_compatible"].lower() in ["0", "false"]
+                                       else True,
     )
 
     if added:
@@ -383,10 +383,10 @@ def update_casa_version(request: Request) -> Response:
     """
     updated = request.casa_matrix_service.update_version(
         version=request.params["version"],
-        capabilities=request.params["capabilities"],
-        is_cluster_compatible=request.params["is_cluster_compatible"]
-        if "is_cluster_compatible" in request.params
-        else True,
+        capabilities=request.params["capabilities"].split(',') if "capabilities" in request.params else [],
+        is_cluster_compatible=False if "is_cluster_compatible" in request.params
+                                       and request.params["is_cluster_compatible"].lower() in ["0", "false"]
+                                       else True,
     )
 
     if updated:
diff --git a/shared/workspaces/workspaces/system/services/casa_matrix_service.py b/shared/workspaces/workspaces/system/services/casa_matrix_service.py
index 7c37372267d2a38b044b7d888442cc899266ee2c..5941b93ef1112f72204dfa6ce7c6020f2b737a39 100644
--- a/shared/workspaces/workspaces/system/services/casa_matrix_service.py
+++ b/shared/workspaces/workspaces/system/services/casa_matrix_service.py
@@ -21,7 +21,7 @@ import re
 import shutil
 
 from pycapo import CapoConfig
-from sqlalchemy import exc
+from sqlalchemy.exc import SQLAlchemyError
 from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import Session
 
@@ -161,7 +161,7 @@ class CasaMatrixService(CasaMatrixServiceIF):
 
         result = self.session.query(CasaMatrixCasaVersion).filter_by(is_cluster_compatible=True).all()
         for v in result:
-            if capability in v.capabilities:
+            if capability in [c.name for c in v.capabilities]:
                 versions.append(v.casa_version)
 
         if not versions:
@@ -229,7 +229,6 @@ class CasaMatrixService(CasaMatrixServiceIF):
         default_version = self.get_default_version(capability, telescope)
 
         if not version:
-            logger.info(f"No CASA version specified, returning default version for {capability}")
             return default_version
 
         # Installed versions are a flat list of dicts containing version names and paths
@@ -240,12 +239,11 @@ class CasaMatrixService(CasaMatrixServiceIF):
         if not installed_version:
             logger.info(f"CASA version {version} is not installed, returning default version for {capability}")
             return default_version
-        # Keep in mind the table stores the installed CASA version name, not necessarily what we're given here
+        # Keep in mind the table stores the installed CASA version name, not what we're given here
         elif not self.is_allowed(os.path.basename(installed_version["path"]), capability):
             logger.info(f"CASA version {version} is not allowed, returning default version for {capability}")
             return default_version
         else:
-            logger.info(f"CASA version {installed_version} is allowed and installed")
             return installed_version
 
     def get_versions(self, capability: str | None = DEFAULT_CAPABILITY) -> list[dict[str, str]]:
@@ -268,7 +266,7 @@ class CasaMatrixService(CasaMatrixServiceIF):
             if installed_version:
                 versions.append(installed_version)
 
-        logger.debug(f"Found CASA versions for {capability}: {versions}")
+        logger.info(f"Found CASA versions for {capability}: {versions}")
 
         return versions
 
@@ -314,7 +312,7 @@ class CasaMatrixService(CasaMatrixServiceIF):
         self.session.add(entity)
         self.session.flush()
 
-    def add_version(self, version: str, capabilities: list[str], is_cluster_compatible: bool = True) -> bool:
+    def add_version(self, version: str, capabilities: list[str] = None, is_cluster_compatible: bool = True) -> bool:
         """
         Adds a new CASA version to the matrix using the provided version string and capability name list.
         By default, the new version will be flagged as being cluster compatible.
@@ -324,33 +322,35 @@ class CasaMatrixService(CasaMatrixServiceIF):
         matrix_version = CasaMatrixCasaVersion(
             casa_version=version,
             is_cluster_compatible=is_cluster_compatible,
-            capabilities=capabilities,
+            capabilities=capabilities if capabilities else [],
         )
 
         try:
             self.save_entity(matrix_version)
             return True
-        except exc.SQLAlchemyError:
-            logger.debug(f"Unable to add CASA version {version}")
+        except SQLAlchemyError as e:
+            logger.critical(f"Unable to add CASA version {version}: %s", e)
             return False
 
-    def update_version(self, version: str, capabilities: list[str], is_cluster_compatible: bool = True) -> bool:
+    def update_version(self, version: str, capabilities: list[str] = None, is_cluster_compatible: bool = True) -> bool:
         """
         Updates a CASA version in the matrix.
 
         :return: True if updated successfully
         """
-        matrix_version = CasaMatrixCasaVersion(
-            casa_version=version,
-            is_cluster_compatible=is_cluster_compatible,
-            capabilities=capabilities,
-        )
-
+        logger.info(f"Full list = {capabilities}")
+        for thing in capabilities:
+            logger.info(f"Thing = {thing}")
         try:
-            self.save_entity(matrix_version)
+            self.session.query(CasaMatrixCasaVersion).filter_by(casa_version=version).update({
+                'casa_version': version,
+                'is_cluster_compatible': is_cluster_compatible,
+                'capabilities': capabilities if capabilities else [],
+            })
+            self.session.flush()
             return True
-        except exc.SQLAlchemyError:
-            logger.debug(f"Unable to update CASA version {version}")
+        except SQLAlchemyError as e:
+            logger.critical(f"Unable to update CASA version {version} %s", e)
             return False
 
     def delete_version(self, version: str) -> bool:
@@ -363,8 +363,8 @@ class CasaMatrixService(CasaMatrixServiceIF):
             self.session.query(CasaMatrixCasaVersion).filter_by(casa_version=version).delete()
             self.session.flush()
             return True
-        except exc.SQLAlchemyError:
-            logger.debug(f"Unable to delete CASA version {version}")
+        except SQLAlchemyError as e:
+            logger.critical(f"Unable to delete CASA version {version} %s", e)
             return False
 
     def make_links(self, dry_run: bool = False) -> dict[str, list[str]]:
diff --git a/shared/workspaces/workspaces/system/services/interfaces.py b/shared/workspaces/workspaces/system/services/interfaces.py
index 80a360960fe2ff2a298567af3c31081fe1295bd2..60e98b48727cc1d1bc29ebdd2d7b74b2edf0c347 100644
--- a/shared/workspaces/workspaces/system/services/interfaces.py
+++ b/shared/workspaces/workspaces/system/services/interfaces.py
@@ -77,11 +77,11 @@ class CasaMatrixServiceIF(ABC):
         raise NotImplementedError
 
     @abstractmethod
-    def add_version(self, version: str, capabilities: list[str], is_cluster_compatible: bool = True) -> bool:
+    def add_version(self, version: str, capabilities: list[str] | None, is_cluster_compatible: bool = True) -> bool:
         raise NotImplementedError
 
     @abstractmethod
-    def update_version(self, version: str, capabilities: list[str], is_cluster_compatible: bool = True) -> bool:
+    def update_version(self, version: str, capabilities: list[str] | None, is_cluster_compatible: bool = True) -> bool:
         raise NotImplementedError
 
     @abstractmethod