diff --git a/services/capability/capability/server.py b/services/capability/capability/server.py
index 2df97798e1e7e3dcc0d022180644c3d594d70b19..25c02e3f3c0eeb35aed7aa83f531785fea35bb47 100644
--- a/services/capability/capability/server.py
+++ b/services/capability/capability/server.py
@@ -4,8 +4,8 @@ from pyramid.events import NewRequest
 from pyramid.renderers import JSONP
 from pyramid.request import Request
 from pyramid.response import Response
-from pyramid.view import view_config, view_defaults
-from pyramid_beaker import session_factory_from_settings
+from pyramid_beaker import BeakerSessionFactoryConfig, session_factory_from_settings
+from transaction import TransactionManager
 
 from workspaces.capability.services.capability_info import CapabilityInfo
 from workspaces.capability.services.capability_service import CapabilityService
@@ -51,29 +51,39 @@ def add_cors_headers_response_callback(event: NewRequest):
 # ---------------------------------------------------------
 
 
-def lookup_request(request):
-    return request.capability_info.lookup_capability_request(request.matchdict["request_id"])
-
-
-@view_defaults(route_name="capability_request", renderer="json")
-class CapabilityRestService:
-    def __init__(self, request: Request):
-        self.request = request
+def add_services(config: Configurator, session_factory: BeakerSessionFactoryConfig) -> Configurator:
+    """
+    Add capability info, capability service, and workflow service to Pyramid request configuration
 
-    @view_config(request_method="POST", renderer="json")
-    def create(self):
-        # create a capability request for this ... request
-        req = self.request.json_body
-        request = self.request.capabilities.create_request(req["capability"], req["args"])
-        return request
+    :param config: Pyramid Configurator object
+    :param session_factory: Pyramid Beaker session factory
+    :return: Updated Configurator
+    """
+    # make capability_info available for use in Pyramid
+    config.add_request_method(
+        # r.tm is the transaction manager used by pyramid_tm
+        lambda request: CapabilityInfo(get_tm_session(session_factory, request.tm)),
+        "capability_info",
+        reify=True,
+    )
+    # make workflow_info available for use in Pyramid
+    config.add_request_method(
+        # r.tm is the transaction manager used by pyramid_tm
+        lambda request: WorkflowServiceRESTClient(),
+        "workflow_service",
+        reify=True,
+    )
+    # make capability_service available for use in Pyramid
+    config.add_request_method(
+        lambda request: CapabilityService(request.capability_info, request.workflow_service),
+        "capability_service",
+        reify=True,
+    )
+    return config
 
-    @view_config(request_method="POST", route_name="submit_capability_request", renderer="json")
-    def submit(self):
-        # 1. Submit the request to the service
-        execution = self.request.capabilities.run_capability(self.request.context)
 
-        # 2. Return something we can listen for
-        return execution
+def lookup_request(request):
+    return request.capability_info.lookup_capability_request(request.matchdict["request_id"])
 
 
 # ---------------------------------------------------------
@@ -83,7 +93,9 @@ class CapabilityRestService:
 # ---------------------------------------------------------
 
 
-def get_tm_session(session_factory, transaction_manager):
+def get_tm_session(
+    session_factory: BeakerSessionFactoryConfig, transaction_manager: TransactionManager
+):
     """
     Enable Zope's transaction manager on our session
     :param session_factory:
@@ -122,34 +134,8 @@ def main(global_config, **settings):
         session_factory = get_session_factory(get_engine())
         config.registry["dbsession_factory"] = session_factory
 
-        # make capability_info available for use in Pyramid
-        config.add_request_method(
-            # r.tm is the transaction manager used by pyramid_tm
-            lambda request: CapabilityInfo(get_tm_session(session_factory, request.tm)),
-            "capability_info",
-            reify=True,
-        )
-        # make workflow_info available for use in Pyramid
-        config.add_request_method(
-            # r.tm is the transaction manager used by pyramid_tm
-            lambda request: WorkflowServiceRESTClient(),
-            "workflow_service",
-            reify=True,
-        )
-        # make capability_service available for use in Pyramid
-        config.add_request_method(
-            lambda r: CapabilityService(r.capability_info, r.workflow_service),
-            "capabilities",
-            reify=True,
-        )
-
-        # add some routes
-        config.add_route("capability_request", "/capability/request")
-        config.add_route(
-            "submit_capability_request",
-            "/capability/request/{request_id}/submit",
-            factory=lookup_request,
-        )
+        # Add services to config
+        config = add_services(config, session_factory)
 
         config.include("pyramid_beaker")
         # Include routes from routes file
diff --git a/shared/workspaces/setup.py b/shared/workspaces/setup.py
index 2e566c8eabfcf5fe11d75d01248d07f4d044eb3c..f052090f99e8e6fdb19dc944e9cb292b9fa4f34d 100644
--- a/shared/workspaces/setup.py
+++ b/shared/workspaces/setup.py
@@ -16,6 +16,7 @@ requires = [
     "cx-Oracle",
     "chevron",
     "requests",
+    "transaction",
 ]
 
 setup(