diff --git a/Entity/UploadedFile.php b/Entity/UploadedFile.php
index b024385c1f995bc897876148fb96897c0def09db..55038e651199f533658430013bec43846c542367 100644
--- a/Entity/UploadedFile.php
+++ b/Entity/UploadedFile.php
@@ -12,6 +12,7 @@ use Doctrine\ORM\Mapping as ORM;
 use Gaufrette\Filesystem;
 use Gaufrette\Stream;
 use Gaufrette\StreamMode;
+use InvalidArgumentException;
 use Rhumsaa\Uuid\Uuid;
 
 /**
@@ -20,6 +21,12 @@ use Rhumsaa\Uuid\Uuid;
  */
 class UploadedFile
 {
+    const ETAT_EN_COURS = 'en-cours';
+    const ETAT_ORPHELIN = 'orphelin';
+    const ETAT_NORMAL   = 'normal';
+    const ETAT_CORROMPU = 'corrompu';
+    const ETAT_MANQUANT = 'manquant';
+
     /**
      * @ORM\Id
      * @ORM\Column(type="guid")
@@ -59,10 +66,10 @@ class UploadedFile
     private $checksum;
 
     /**
-     * @ORM\Column(type="boolean", length=64)
-     * @var boolean
+     * @ORM\Column(type="string", length=10)
+     * @var string
      */
-    private $orphelin;
+    private $etat = self::ETAT_EN_COURS;
 
     /**
      * @ORM\Column(type="datetime")
@@ -87,7 +94,6 @@ class UploadedFile
     public function __construct()
     {
         $this->id = Uuid::uuid4()->toString();
-        $this->orphelin = true;
         $this->path = "orphan/".$this->id;
         $this->createdAt = new DateTime('now');
     }
@@ -218,26 +224,29 @@ class UploadedFile
     }
 
     /**
-     * Set orphelin
+     * Set etat
      *
-     * @param boolean $orphelin
+     * @param string $etat
      * @return UploadedFile
      */
-    public function setOrphelin($orphelin)
+    public function setEtat($etat)
     {
-        $this->orphelin = $orphelin;
+        if(!in_array($etat, [self::ETAT_CORROMPU, self::ETAT_EN_COURS, self::ETAT_MANQUANT, self::ETAT_NORMAL, self::ETAT_ORPHELIN])) {
+            throw new InvalidArgumentException(sprintf("Etat invalide: '%s'", (string)$etat));
+        }
+        $this->etat = $etat;
 
         return $this;
     }
 
     /**
-     * Get orphelin
+     * Get etat
      *
-     * @return boolean
+     * @return string
      */
-    public function isOrphelin()
+    public function getEtat()
     {
-        return $this->orphelin;
+        return $this->etat;
     }
 
     /**
@@ -301,17 +310,42 @@ class UploadedFile
         return $this;
     }
 
+    public function validate()
+    {
+        if (self::ETAT_EN_COURS !== $this->getEtat()) {
+            return;
+        }
+
+        $fs = $this->filesystem;
+        $path = $this->getPath();
+
+        if (!$fs->has($path)) {
+            $this->setEtat(self::ETAT_MANQUANT);
+            return;
+        }
+
+        if ($fs->size($path) !== $this->size || $fs->checksum($path) !== $this->checksum) {
+            $this->setEtat(self::ETAT_CORROMPU);
+            return;
+        }
+    }
+
     /**
+     *
      * @return boolean
      */
     public function isValid()
     {
-        $fs = $this->filesystem;
-        $path = $this->getPath();
-        return
-            $fs->has($path) &&
-            (null === $this->size || $fs->size($path) === $this->size) &&
-            (null === $this->checksum || $fs->checksum($path) === $this->checksum);
+        return $this->getEtat() === self::ETAT_ORPHELIN || $this->getEtat() === self::ETAT_NORMAL;
+    }
+
+    /**
+     *
+     * @return boolean
+     */
+    public function isOrphelin()
+    {
+        return $this->getEtat() === self::ETAT_ORPHELIN;
     }
 
     /**