diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 05295b980023c6e7849729905d2185d69abf339b..dc0d35b4dad2ea77f95944cd2832ed35a7566e76 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,12 @@
+workflow:
+   rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: never
+    - when: always
+
+
+
+
 stages:
   - delete-release
   - build
diff --git a/backend/analysis/api.py b/backend/analysis/api.py
index a69b2e46ed02ce6a936ebd15c660923f8f3faf1f..aa965b5c54019e6f0b1a36d633cdf2217ee9bc65 100644
--- a/backend/analysis/api.py
+++ b/backend/analysis/api.py
@@ -28,6 +28,15 @@ def csrf(request):
     return JsonResponse({"token": token})
 
 
+@router.get("init-session")
+def init_session(request):
+    if not request.session.session_key:
+        request.session.create()
+        request.session.set_expiry(60000)
+    
+    return JsonResponse({"session": "ok"})
+
+
 @router.post("add", response=AnalysisOutSchema)
 def add(
     request,
@@ -42,14 +51,17 @@ def add(
     if request.session.session_key:
         session_key = request.session.session_key
     else:
+        print("should not create a token !!!!!")
         request.session.create()
         request.session.set_expiry(60000)
         session_key = request.session.session_key
+    print(session_key)
     session = Session.objects.get(session_key=session_key)
 
     aw = AnalysisWorkflow.objects.get(pk=1)
     input_files = [
         genome_path,
+
     ]
     params = {}
     analysis = aw.invoke(session, input_files, params, f"{genomefile.name}")
@@ -57,6 +69,7 @@ def add(
     return analysis
 
 
+
 @router.get("/", response=list[AnalysisOutSchema])
 def list(request):
     session_key = request.session.session_key
diff --git a/backend/analysis/models.py b/backend/analysis/models.py
index cb9e57b97d98f27b5eab0a690c91efb264340fc5..13410884d57dc6941dbffd543b853ba5b1905411 100644
--- a/backend/analysis/models.py
+++ b/backend/analysis/models.py
@@ -65,21 +65,27 @@ class AnalysisWorkflow(Workflow):
         galaxy_inv = self.galaxy_workflow.invoke(
             datamap, history=history.galaxy_history, params=params
         )
-        analysis = Analysis(
-            name=history_name,
-            galaxy_id=galaxy_inv.id,
-            galaxy_state=galaxy_inv.state,
-            analysis_workflow=self,
-            workflow=self,
-            history=history,
-            analysis_history=history,
-            params=params,
-            datamap=datamap,
-            create_time=load_galaxy_invocation_time_to_datetime(galaxy_inv),
-        )
-        analysis.save()
-        analysis.create_output_files()
-        return analysis
+
+        try: 
+            analysis = Analysis(
+                name=history_name,
+                galaxy_id=galaxy_inv.id,
+                galaxy_state=galaxy_inv.state,
+                analysis_workflow=self,
+                workflow=self,
+                history=history,
+                analysis_history=history,
+                params=params,
+                datamap=datamap,
+                create_time=load_galaxy_invocation_time_to_datetime(galaxy_inv),
+            )
+        except ZeroDivisionError as e:
+            print(e)
+        finally:
+            analysis.save()
+            analysis.create_output_files(max_retry=20)
+            return analysis
+            
 
     def prepare_invocation(
         self,
diff --git a/frontend/components/Main.vue b/frontend/components/Main.vue
index 3f5c835b72719a0f88ef7b6b6b8c23db88d4e064..0b27e01aeb83a3afcc3c06042679c0401d20754c 100644
--- a/frontend/components/Main.vue
+++ b/frontend/components/Main.vue
@@ -6,12 +6,16 @@ export interface Props {
 const props = withDefaults(defineProps<Props>(), {
   fluid: true
 });
-useCsrfToken()
+const { csrfToken } = await useCsrfToken()
+// init session
+if (csrfToken.value) {
+  const { data, pending, error } = useFetch("/api/analysis/init-session", {
+    headers: [["X-CSRFToken", csrfToken.value]]
+  })
+}
 const scrollThreshold = ref(200)
 const density = ref<'compact' | 'prominent'>("prominent")
 
-// Hanle CSRF token
-
 function onScroll() {
   if (window.scrollY > scrollThreshold.value) {
     density.value = "compact"