diff --git a/src/main/java/coop/libriciel/ipcore/services/redis/RedisMessageListenerService.java b/src/main/java/coop/libriciel/ipcore/services/redis/RedisMessageListenerService.java
index e935de6ae38739c07c81d7a1ae9109489ada6d33..6e108ed781ba76b2baad6e47797f03014091816c 100644
--- a/src/main/java/coop/libriciel/ipcore/services/redis/RedisMessageListenerService.java
+++ b/src/main/java/coop/libriciel/ipcore/services/redis/RedisMessageListenerService.java
@@ -130,8 +130,16 @@ public class RedisMessageListenerService implements MessageListener {
 
         log.debug("Message received folder:{}", folder);
 
+        String subtypeId;
+        if (folder.getSubtype() != null) {
+            subtypeId = folder.getSubtype().getId();
+        } else {
+            Folder folderUpdated = workflowService.getFolder(folder.getId(), task.getMetadata().get("tenantId"), false);
+            subtypeId = folderUpdated.getSubtype().getId();
+        }
+
         Subtype subtype = subtypeRepository
-                .findById(folder.getSubtype().getId())
+                .findById(subtypeId)
                 .orElseThrow(() -> new LocalizedStatusException(NOT_FOUND, "message.unknown_subtype_id"));
 
         Tenant tenant = subtype.getTenant();