diff --git a/shared/workspaces/src/workspaces/capability_interfaces.py b/shared/workspaces/src/workspaces/capability_interfaces.py
index 7ebf3fbbc8f7b1bc64f4f7dd2abc1a4b1cead631..b525dc790368486ac46073b319053f03c5c9f7d2 100644
--- a/shared/workspaces/src/workspaces/capability_interfaces.py
+++ b/shared/workspaces/src/workspaces/capability_interfaces.py
@@ -4,7 +4,7 @@ Interfaces used by the Workspaces' capabilities system.
 
 import inspect
 from abc import ABC, abstractmethod
-from typing import List, Union, Optional
+from typing import List, Union, Optional, Any
 
 from .product_interfaces import ProductIF, FutureProductIF
 
@@ -30,6 +30,9 @@ class CapabilityRequestIF:
     future_products: str
     versions: List["CapabilityVersionIF"]
 
+    def __json__(self, request: Any) -> dict:
+        raise NotImplementedError
+
 
 class CapabilityVersionIF:
     capability_request: CapabilityRequestIF
@@ -42,6 +45,9 @@ class CapabilityExecutionIF:
     state: str
     current_step: int
 
+    def __json__(self, request: Any) -> dict:
+        raise NotImplementedError
+
 """
 
 Capability System / Services
diff --git a/shared/workspaces/src/workspaces/schema.py b/shared/workspaces/src/workspaces/schema.py
index 5c818d36e97e767b29efc7d215f3f4d4a58c135d..9cdd83c97b542bba33c4ef69e5533e7e56a1bafb 100644
--- a/shared/workspaces/src/workspaces/schema.py
+++ b/shared/workspaces/src/workspaces/schema.py
@@ -5,7 +5,7 @@ import abc
 import enum
 import json
 from pathlib import Path
-from typing import Dict, List, Tuple
+from typing import Dict, List, Tuple, Any
 
 import sqlalchemy as sa
 from pycapo import CapoConfig
@@ -265,6 +265,10 @@ class CapabilityRequest(Base, CapabilityRequestIF):
     def __str__(self):
         return f"CapabilityRequest object: {self.__dict__}"
 
+    def __json__(self, request) -> dict:
+        return dict(id=self.id, capability_id=self.capability_id,
+                    state=self.state, parameters=self.parameters)
+
 
 class CapabilityVersion(Base, CapabilityVersionIF):
     """
@@ -289,12 +293,13 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
     """
     Schema representation of a capability request's execution record
     """
+    __tablename__ = "capability_executions"
 
     __tablename__ = "capability_executions"
 
     id = sa.Column("execution_id", sa.Integer, primary_key=True)
     state = sa.Column("state", sa.String)
-    capability_request = sa.Column(
+    capability_request_id = sa.Column(
         "capability_request_id",
         sa.Integer,
         sa.ForeignKey("capability_requests.capability_request_id"),
@@ -306,11 +311,15 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
 
     __table_args__ = (
         sa.ForeignKeyConstraint(
-            [capability_request, version_number],
+            [capability_request_id, version_number],
             [CapabilityVersion.capability_request_id, CapabilityVersion.version_number],
         ),
     )
 
+    def __json__(self, request: Any) -> dict:
+        return dict(id=self.id, state=self.state, capability_request_id=self.capability_request_id,
+                    version_number=self.version_number, current_step=self.current_step)
+
 
 class Workflow(Base):
     """
diff --git a/shared/workspaces/src/workspaces/services.py b/shared/workspaces/src/workspaces/services.py
index a67799a3e94d61edbf0ecc6632647a87f8e90fad..fa1e830f6b45e7825ab79532e1b9ee4c3969e72c 100644
--- a/shared/workspaces/src/workspaces/services.py
+++ b/shared/workspaces/src/workspaces/services.py
@@ -64,7 +64,7 @@ class CapabilityService(CapabilityServiceIF):
         parameters: List[ParameterIF] = None,
         products: List[FutureProductIF] = None,
     ) -> CapabilityRequest:
-        self.capability_info.create_capability_request(
+        return self.capability_info.create_capability_request(
             capability_name, parameters, products
         )
 
@@ -163,7 +163,8 @@ class CapabilityInfo(CapabilityInfoIF):
             capability=capability,
             parameters=str(parameters)
         )
-        return self.save_entity(request)
+        self.save_entity(request)
+        return request
 
     def create_execution_record(self, request_id: int) -> int:
         """
@@ -173,10 +174,11 @@ class CapabilityInfo(CapabilityInfoIF):
         """
         record = CapabilityExecution(
             state=ExecutionState.Ready.name,
-            capability_request=request_id,
-            current_step=0,
+            capability_request_id=request_id,
+            current_step=0
         )
-        return self.save_entity(record)
+        self.save_entity(record)
+        return record
 
     def lookup_entity(
         self,
@@ -191,7 +193,7 @@ class CapabilityInfo(CapabilityInfoIF):
         :param entity_schema: Database schema of the entity
         :return: Object representation of entity if found, else None
         """
-        return self.session.query(entity_schema).filter(entity_schema.id == entity_id)
+        return self.session.query(entity_schema).filter(entity_schema.id == entity_id).one()
 
     def save_entity(
         self, entity: Union[Capability, CapabilityRequest, CapabilityExecution]