diff --git a/.idea/dictionaries/adrien.xml b/.idea/dictionaries/abricchi.xml
similarity index 89%
rename from .idea/dictionaries/adrien.xml
rename to .idea/dictionaries/abricchi.xml
index 16dd0ee89c636e5131b6c73cb7ce6ba13d9cd407..f822eae5c7590d7ec60ca8e27457c292243a6ddd 100644
--- a/.idea/dictionaries/adrien.xml
+++ b/.idea/dictionaries/abricchi.xml
@@ -1,12 +1,14 @@
 <component name="ProjectDictionaryState">
-  <dictionary name="adrien">
+  <dictionary name="abricchi">
     <words>
       <w>admin's</w>
       <w>affero</w>
       <w>apiv</w>
+      <w>backchannel</w>
       <w>baos</w>
       <w>bpmn</w>
       <w>canonicalized</w>
+      <w>compose's</w>
       <w>compta</w>
       <w>crontab</w>
       <w>exclusivegateway</w>
@@ -14,6 +16,7 @@
       <w>filedata</w>
       <w>flowable</w>
       <w>franzbecker</w>
+      <w>gemnasium</w>
       <w>identitylink</w>
       <w>idsite</w>
       <w>intelli</w>
@@ -38,10 +41,12 @@
       <w>projectlombok</w>
       <w>psql</w>
       <w>qrtz</w>
+      <w>resourceserver</w>
       <w>resteasy</w>
       <w>sameorigin</w>
       <w>scop</w>
       <w>securit</w>
+      <w>semgrep</w>
       <w>simpl</w>
       <w>sonarqube</w>
       <w>springfox</w>
diff --git a/src/main/java/coop/libriciel/ipcore/services/database/PostgresService.java b/src/main/java/coop/libriciel/ipcore/services/database/PostgresService.java
index 19f306261766b82d8f008e1288bd2f07185db840..d1c3f2f0efa246664b0710a7283af6ea9a4a9841 100644
--- a/src/main/java/coop/libriciel/ipcore/services/database/PostgresService.java
+++ b/src/main/java/coop/libriciel/ipcore/services/database/PostgresService.java
@@ -913,16 +913,15 @@ public class PostgresService implements DatabaseServiceInterface {
                         field(tableRuExecutionRootAlias + ".tenant_id_", String.class).eq(tenantId)
                 ))
 
+                .innerJoin(table(tableHistProcInst).as("task_start_proc"))
+                .on(field("task_start_proc" + ".business_key_", String.class).equal(field("act_ru_exec_root" + ".business_key_", String.class)))
+
                 .innerJoin(table(tableHistTaskInst).as(taskStartAlias))
                 .on(and(
+                        field("task_start_proc" + ".ID_", String.class).equal(field(taskStartAlias + ".PROC_INST_ID_", String.class)),
                         field(taskStartAlias + ".name_", String.class).equal(val("main_start", String.class)),
                         field(taskStartAlias + ".tenant_id_", String.class).eq(tenantId)
                 ))
-                .innerJoin(table(tableHistProcInst).as("task_start_proc"))
-                .on(and(
-                        field("task_start_proc" + ".ID_", String.class).equal(field(taskStartAlias + ".PROC_INST_ID_", String.class)),
-                        field("task_start_proc" + ".business_key_", String.class).equal(field("act_ru_exec_root" + ".business_key_", String.class))
-                ))
 
                 .innerJoin(table(tableHiIdentityLink).as("start_identity"))
                 .on(and(
@@ -1366,16 +1365,20 @@ public class PostgresService implements DatabaseServiceInterface {
 
         try (Connection connection = dataSource.getConnection()) {
 
+            SelectForUpdateStep<? extends Record> request = buildColumnedTaskListRequest(
+                    tenantId,
+                    groupIds,
+                    delegations,
+                    currentUserId,
+                    columnedTaskListRequest,
+                    includedMetadata,
+                    pageable
+            );
+
+            log.trace("buildColumnedTaskListRequest:\n{}", () -> request.getSQL(INLINED));
+
             return DSL.using(connection, PSQL_RENDER_SETTINGS)
-                    .fetch(buildColumnedTaskListRequest(
-                            tenantId,
-                            groupIds,
-                            delegations,
-                            currentUserId,
-                            columnedTaskListRequest,
-                            includedMetadata,
-                            pageable
-                    ))
+                    .fetch(request)
                     .stream()
                     .map(IpWorkflowTask::new)
                     .map(IpWorkflowInstance::new)
@@ -1398,15 +1401,19 @@ public class PostgresService implements DatabaseServiceInterface {
 
         try (Connection connection = dataSource.getConnection()) {
 
+            SelectForUpdateStep<Record1<Integer>> request = buildColumnedTaskCountRequest(
+                    tenantId,
+                    groupIds,
+                    delegations,
+                    currentUserId,
+                    columnedTaskListRequest,
+                    includedMetadata
+            );
+
+            log.trace("buildColumnedTaskCountRequest:\n{}", () -> request.getSQL(INLINED));
+
             return DSL.using(connection, PSQL_RENDER_SETTINGS)
-                    .fetchOptional(buildColumnedTaskCountRequest(
-                            tenantId,
-                            groupIds,
-                            delegations,
-                            currentUserId,
-                            columnedTaskListRequest,
-                            includedMetadata
-                    ))
+                    .fetchOptional(request)
                     .map(r -> r.get(0, Integer.class))
                     .orElse(-1);
 
diff --git a/src/test/java/coop/libriciel/ipcore/services/database/PostgresServiceTest.java b/src/test/java/coop/libriciel/ipcore/services/database/PostgresServiceTest.java
index 0dc003f0afc2e0b968bff60941d533ea67ab55c4..c3a15f426d248ae1f478b705881444228325bd6e 100644
--- a/src/test/java/coop/libriciel/ipcore/services/database/PostgresServiceTest.java
+++ b/src/test/java/coop/libriciel/ipcore/services/database/PostgresServiceTest.java
@@ -533,15 +533,13 @@ class PostgresServiceTest {
                         act_ru_exec_root.ID_ = act_ru_execution.ROOT_PROC_INST_ID_
                         AND act_ru_exec_root.tenant_id_ = '6c53cbb2-37f5-452a-8620-d771ad05297d'
                       )
-                    JOIN act_hi_taskinst AS task_start
-                      ON (
-                        task_start.name_ = 'main_start'
-                        AND task_start.tenant_id_ = '6c53cbb2-37f5-452a-8620-d771ad05297d'
-                      )
                     JOIN act_hi_procinst AS task_start_proc
+                      ON task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                    JOIN act_hi_taskinst AS task_start
                       ON (
                         task_start_proc.ID_ = task_start.PROC_INST_ID_
-                        AND task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                        AND task_start.name_ = 'main_start'
+                        AND task_start.tenant_id_ = '6c53cbb2-37f5-452a-8620-d771ad05297d'
                       )
                     JOIN act_hi_identitylink AS start_identity
                       ON (
@@ -704,15 +702,13 @@ class PostgresServiceTest {
                       act_ru_exec_root.ID_ = act_ru_execution.ROOT_PROC_INST_ID_
                       AND act_ru_exec_root.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
-                    JOIN act_hi_taskinst AS task_start
-                    ON (
-                      task_start.name_ = 'main_start'
-                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
-                    )
                     JOIN act_hi_procinst AS task_start_proc
+                    ON task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                    JOIN act_hi_taskinst AS task_start
                     ON (
                       task_start_proc.ID_ = task_start.PROC_INST_ID_
-                      AND task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                      AND task_start.name_ = 'main_start'
+                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
                     JOIN act_hi_identitylink AS start_identity
                     ON (
@@ -856,15 +852,13 @@ class PostgresServiceTest {
                       act_ru_exec_root.ID_ = act_ru_execution.ROOT_PROC_INST_ID_
                       AND act_ru_exec_root.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
-                    JOIN act_hi_taskinst AS task_start
-                    ON (
-                      task_start.name_ = 'main_start'
-                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
-                    )
                     JOIN act_hi_procinst AS task_start_proc
+                    ON task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                    JOIN act_hi_taskinst AS task_start
                     ON (
                       task_start_proc.ID_ = task_start.PROC_INST_ID_
-                      AND task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                      AND task_start.name_ = 'main_start'
+                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
                     JOIN act_hi_identitylink AS start_identity
                     ON (
@@ -1022,15 +1016,13 @@ class PostgresServiceTest {
                       act_ru_exec_root.ID_ = act_ru_execution.ROOT_PROC_INST_ID_
                       AND act_ru_exec_root.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
-                    JOIN act_hi_taskinst AS task_start
-                    ON (
-                      task_start.name_ = 'main_start'
-                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
-                    )
                     JOIN act_hi_procinst AS task_start_proc
+                    ON task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                    JOIN act_hi_taskinst AS task_start
                     ON (
                       task_start_proc.ID_ = task_start.PROC_INST_ID_
-                      AND task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                      AND task_start.name_ = 'main_start'
+                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
                     JOIN act_hi_identitylink AS start_identity
                     ON (
@@ -1205,15 +1197,13 @@ class PostgresServiceTest {
                       act_ru_exec_root.ID_ = act_ru_execution.ROOT_PROC_INST_ID_
                       AND act_ru_exec_root.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
-                    JOIN act_hi_taskinst AS task_start
-                    ON (
-                      task_start.name_ = 'main_start'
-                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
-                    )
                     JOIN act_hi_procinst AS task_start_proc
+                    ON task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                    JOIN act_hi_taskinst AS task_start
                     ON (
                       task_start_proc.ID_ = task_start.PROC_INST_ID_
-                      AND task_start_proc.business_key_ = act_ru_exec_root.business_key_
+                      AND task_start.name_ = 'main_start'
+                      AND task_start.tenant_id_ = '29f9b247-431d-42aa-b00b-7df7507e83f7'
                     )
                     JOIN act_hi_identitylink AS start_identity
                     ON (