diff --git a/app/main.py b/app/main.py
index 5ea359c4c30c97a41a4596eed1896f6542237d07..eb0373923f5de43669808e101473739f8ebacbbb 100644
--- a/app/main.py
+++ b/app/main.py
@@ -44,10 +44,13 @@ def get_db():
         db.close()
 
 
-def cocal_task(db, state, cocal_session):
+def cocal_task(db: Session = Depends(get_db), hash = hash):
+
+    # get session handle
+    cocal_session = crud.get_cocal_session_by_hash(db, hash)
+
     # flag state
-    state.general_state = "ongoing"
-    db.commit()
+    crud.set_status(db, name="general", state="ongoing")
 
     # prepare cocal related methods
     cocal = cocal_methods.CocalMethods(cocal_session)
@@ -56,7 +59,7 @@ def cocal_task(db, state, cocal_session):
     #cocal.record_and_save_reference()
 
     # wait for user upload to finish
-    upload_is_ready = cocal.wait_for_user_upload(timeout=10)
+    upload_is_ready = cocal.wait_for_user_upload(timeout=20)
 
     # continue 
     if upload_is_ready:
@@ -70,7 +73,7 @@ def cocal_task(db, state, cocal_session):
         cocal.generate_dcc()
 
         # release state
-        state.general_state = "ready"
+        crud.set_status(db, name="general", state="ready")
 
         # set result status
         cocal_session.result_state = "ready"
@@ -79,7 +82,7 @@ def cocal_task(db, state, cocal_session):
     # log timeout error if no upload available
     else:
         # release state
-        state.general_state = "ready"
+        crud.set_status(db, name="general", state="ready")
 
         # set result status
         cocal_session.result_state = "cancelled due to timeout"