diff --git a/services/capability/capability/views/capability_request.py b/services/capability/capability/views/capability_request.py
index eb52292a0722b331cd066af4b39f002077050ef0..bac44321971333f3a48aef57c377d1f1149a61ff 100644
--- a/services/capability/capability/views/capability_request.py
+++ b/services/capability/capability/views/capability_request.py
@@ -65,7 +65,7 @@ def create_capability_request(request: Request) -> Response:
         return HTTPPreconditionFailed(detail=does_not_exist_msg)
     else:
         # TODO: Implement future products
-        new_capability_request = request.capabilities.create_request(
+        new_capability_request = request.capability_service.create_request(
             capability_name, parameters=params["parameters"], products=None
         )
         return Response(json_body=new_capability_request.__json__())
@@ -77,6 +77,33 @@ def edit_capability_request(request: Request) -> Response:
     Pyramid view that accepts a request to edit a capability request
     URL: capability/{capability_name}/request/{request_id}/edit
 
+    :param request: POST request
+    :return Bad Request response, since it's not yet implemented
+
     TODO: Implement once CapabilityVersions are supported
     """
-    return HTTPBadRequest()
+    return HTTPBadRequest(detail="Editing capability requests is not yet implemented.")
+
+
+@view_config(route_name="submit_capability_request", renderer="json")
+def submit_capability_request(request: Request) -> Response:
+    """
+    Pyramid view that accepts a request to submit a capability request
+    URL: capability/{capability_name}/request/{request_id}/submit
+
+    :param request: POST request, expecting JSON parameters ["parameters", "versions"]
+    :return: Response with
+        or 412 response (HTTPPreconditionFailed) if capability request with given ID does not exist and thus cannot be
+        submitted
+    """
+    capability_name = request.matchdict["capability_name"]
+    request_id = request.matchdict["request_id"]
+    capability_request = request.capability_info.lookup_capability_request(request_id)
+
+    if not capability_request:
+        # Capability request not found
+        does_not_exist_msg = f"Capability request for {capability_name} with ID {request_id} does not exist. Cannot submit request."
+        return HTTPPreconditionFailed(detail=does_not_exist_msg)
+    else:
+        execution = request.capability_service.run_capability(capability_request)
+        return Response(body=execution.__json__())