diff --git a/Controller/UploadController.php b/Controller/UploadController.php
index be782a5951ef761a4467ba2611b761e41ceb083d..0ed88ce5526a476b2168260c1b3e91956627211e 100644
--- a/Controller/UploadController.php
+++ b/Controller/UploadController.php
@@ -96,7 +96,9 @@ class UploadController extends Controller
         $stream->write($request->getContent());
         $stream->close();
 
-        return $this->createResponse();
+        $this->fileManager->completed($file);
+        return $this->createResponse(
+        );
     }
 
     /**
diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php
index f96168c9b6d9ac0365a5268f0e1d73d91cd1dae9..635d877233d9ef84d7b5050d8ecc899a060f9977 100644
--- a/Entity/Repository/UploadedFileRepository.php
+++ b/Entity/Repository/UploadedFileRepository.php
@@ -10,6 +10,8 @@ namespace Irstea\FileUploadBundle\Entity\Repository;
 use Doctrine\ORM\EntityRepository;
 use Gaufrette\Filesystem;
 use Irstea\FileUploadBundle\Entity\UploadedFile;
+use Irstea\FileUploadBundle\Event\FileUploadCompleteEvent;
+use Irstea\FileUploadBundle\FileUploadEvents;
 use Irstea\FileUploadBundle\Service\FileManagerInterface;
 use Psr\Log\LogLevel;
 use Symfony\Component\EventDispatcher\EventDispatcher;
@@ -91,6 +93,25 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte
         return $this->findById($id);
     }
 
+    public function completed(UploadedFile $file)
+    {
+        $path = $file->getPath();
+        $fs = $this->filesystem;
+
+        $file
+            ->setChecksum($fs->checksum($path))
+            ->setSize($fs->size($path))
+            ->setMimeType($fs->mimeType($path))
+            ->setEtat(UploadedFile::ETAT_ORPHELIN);
+
+        $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file));
+
+        $this->_em->persist($file);
+        $this->_em->flush();
+
+        $this->log(LogLevel::INFO, 'File completed', ['file' => $file]);
+    }
+
     /**
      *
      * @param string $level
diff --git a/Event/FileUploadCompleteEvent.php b/Event/FileUploadCompleteEvent.php
new file mode 100644
index 0000000000000000000000000000000000000000..f1ed986b02256b8e768b51dbc719e525b77a5059
--- /dev/null
+++ b/Event/FileUploadCompleteEvent.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * Copyright (C) 2015 IRSTEA
+ * All rights reserved.
+ */
+
+namespace Irstea\FileUploadBundle\Event;
+
+use Irstea\FileUploadBundle\Entity\UploadedFile;
+use Symfony\Component\EventDispatcher\Event;
+
+/**
+ * Description of FileUploadCompleteEvent
+ *
+ * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
+ */
+class FileUploadCompleteEvent extends Event
+{
+    /**
+     *
+     * @var UploadedFile
+     */
+    private $uploadedFile;
+
+    /**
+     *
+     * @param UploadedFile $uploadedFile
+     */
+    public function __construct(UploadedFile $uploadedFile)
+    {
+        $this->uploadedFile = $uploadedFile;
+    }
+
+    /**
+     *
+     * @return UploadedFile $uploadedFile
+     */
+    public function getUploadedFile()
+    {
+        return $this->uploadedFile;
+    }
+}
diff --git a/FileUploadEvents.php b/FileUploadEvents.php
new file mode 100644
index 0000000000000000000000000000000000000000..96c71a860cbf7388738c7037f17ab4f3206edeeb
--- /dev/null
+++ b/FileUploadEvents.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * Copyright (C) 2015 IRSTEA
+ * All rights reserved.
+ */
+
+namespace Irstea\FileUploadBundle;
+
+/**
+ * Description of FileUploadEvents
+ *
+ * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
+ */
+final class FileUploadEvents
+{
+    const UPLOAD_COMPLETE = 'file_upload.complete';
+}
diff --git a/Service/FileManagerInterface.php b/Service/FileManagerInterface.php
index 0706e7ca524a1ea7963baef4cbb9f63d085761c6..b73817d63ca2ce0e8794dfa81e605c0162de9ab9 100644
--- a/Service/FileManagerInterface.php
+++ b/Service/FileManagerInterface.php
@@ -7,8 +7,8 @@
 
 namespace Irstea\FileUploadBundle\Service;
 
-use Gaufrette\Stream;
 use Irstea\FileUploadBundle\Entity\UploadedFile;
+use Symfony\Component\HttpFoundation\Response;
 
 /**
  * Description of FileManager
@@ -35,4 +35,9 @@ interface FileManagerInterface
      * @param UploadedFile $file
      */
     public function delete(UploadedFile $file);
+
+    /**
+     * @param UploadedFile $file
+     */
+    public function completed(UploadedFile $file);
 }