diff --git a/services/capability/src/capability/capability_launcher.py b/services/capability/src/capability/capability_launcher.py
index 54c8494c0260d6530a7aa570c0ceb78946280206..54a47082a2617596ef2b2357bdca4b05693855ac 100644
--- a/services/capability/src/capability/capability_launcher.py
+++ b/services/capability/src/capability/capability_launcher.py
@@ -61,6 +61,7 @@ def main():
     # an execution ID
     request_id = r.json()['id']
     r = requests.post(f'{settings.serviceUrl}/capability/request/{request_id}/submit')
+    print(r.content)
     execution_id = r.json()['id']
 
     # at this point we can start listening for events from rabbitmq concerning
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 a061380d672d0d2976c7fda0cd4190703a1993f2..570e604232b31305cecc0aaba2f82895e7fe910c 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
@@ -244,6 +244,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):
     """
@@ -269,7 +273,7 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
 
     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')
@@ -278,10 +282,14 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
     current_step = sa.Column('current_step', sa.Integer)
     capability_version = relationship(CapabilityVersion, back_populates="executions")
 
-    __table_args__ = (sa.ForeignKeyConstraint([capability_request, version_number],
+    __table_args__ = (sa.ForeignKeyConstraint([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 ba36214f1662e63ea3de1232a030e1b850c2a9e8..c549b4434c116de65dec42b209e6b133147cdea1 100644
--- a/shared/workspaces/src/workspaces/services.py
+++ b/shared/workspaces/src/workspaces/services.py
@@ -37,7 +37,7 @@ class CapabilityService(CapabilityServiceIF):
                        capability_name: str,
                        parameters: List[ParameterIF]=None,
                        products: List[FutureProductIF]=None) -> "CapabilityRequestIF":
-        self.capability_info.create_capability_request(capability_name, parameters, products)
+        return self.capability_info.create_capability_request(capability_name, parameters, products)
 
     def run_capability(self, request: CapabilityRequest) -> CapabilityExecution:
         """
@@ -136,7 +136,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:
         """
@@ -145,9 +146,10 @@ class CapabilityInfo(CapabilityInfoIF):
         :return: Integer identifier for the record
         """
         record = CapabilityExecution(
-            state=ExecutionState.Ready.name, capability_request=request_id, current_step=0
+            state=ExecutionState.Ready.name, capability_request_id=request_id, current_step=0
         )
-        return self.save_entity(record)
+        self.save_entity(record)
+        return record
 
     def lookup_entity(
             self,
@@ -160,7 +162,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]) -> int:
         """