diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
index a94411bd739e531c9137362ed43278b1eb43bb4d..4a6c53d324b180046821c4a074b0f534834dfa07 100644
--- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
+++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
@@ -523,7 +523,18 @@ public abstract class AbstractSynchroAction extends AbstractService implements S
                 }
 
                 // Check version
-                Number existingVersion = ((Number) existingFields.get(versionFieldName));
+                Number existingVersion = null;
+                Object versionObj = existingFields.get(versionFieldName);
+                if (versionObj != null) {
+                    if (versionObj instanceof String) {
+                        existingVersion = Long.parseLong((String) versionObj);
+                    } else if (versionObj instanceof Number) {
+                        existingVersion = ((Number) versionObj);
+                    } else {
+                        throw new InvalidFormatException(String.format("Invalid document: '%s' should be a long, but found: %s", versionFieldName, versionObj));
+                    }
+                }
+
                 boolean doUpdate = (existingVersion == null || version > existingVersion.longValue());
 
                 if (doUpdate) {