diff --git a/Controller/UploadController.php b/Controller/UploadController.php
index 8f5908354cad2edbd1110759d6677790259334fa..de23d7b9e3d16ef52dbe3efa8da9a3dd4f22bdeb 100644
--- a/Controller/UploadController.php
+++ b/Controller/UploadController.php
@@ -24,7 +24,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
 use Symfony\Component\HttpKernel\Exception\HttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\Routing\RouterInterface;
-use Exception;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
 
 /**
  * @Route("/files", service="irstea_file_upload.upload_controller")
@@ -50,14 +50,20 @@ class UploadController extends Controller
      */
     protected $csrfProvider;
 
+    /**
+     * @var TokenStorageInterface
+     */
+    protected $tokenStorage;
+
     /**
      *
      */
-    public function __construct(FileManagerInterface $fileManager, RouterInterface $router, CsrfProviderInterface $csrfProvider)
+    public function __construct(FileManagerInterface $fileManager, RouterInterface $router, CsrfProviderInterface $csrfProvider, TokenStorageInterface $tokenStorage)
     {
         $this->fileManager = $fileManager;
         $this->router = $router;
         $this->csrfProvider = $csrfProvider;
+        $this->tokenStorage = $tokenStorage;
     }
 
     /**
@@ -70,11 +76,15 @@ class UploadController extends Controller
         try {
             $data = $request->request->get('file');
 
+            $token = $this->tokenStorage->getToken();
+
             $file = $this->fileManager->create(
                 $data['name'],
                 $data['size'],
                 $data['type'],
-                isset($data['lastModified']) ? $data['lastModified'] : null
+                isset($data['lastModified']) ? $data['lastModified'] : null,
+                null !== $token ? $token->getUsername() : null,
+                $request->getClientIp()
             );
 
             $parameters = ['id' => $file->getId()];
diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php
index fd55f6d599d297b5bc237e795e509bb7f3418b9b..b49e2891c078ccedb0bc426cf6b6d2eb166fd4d3 100644
--- a/Entity/Repository/UploadedFileRepository.php
+++ b/Entity/Repository/UploadedFileRepository.php
@@ -56,16 +56,16 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte
         $this->eventDispatcher = $eventDispatcher;
     }
 
-    public function create($filename, $size, $mimeType, $lastModified)
+    public function create($filename, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null)
     {
-        $file = new UploadedFile();
+        $file = new UploadedFile($createdBy, $createdFrom);
 
         $file
             ->setFilesystem($this->filesystem)
             ->setDisplayName($filename)
             ->setMetadata(
                 [
-                    'original' => [
+                    'client' => [
                         'filename'     => $filename,
                         'size'         => $size,
                         'mimeType'     => $mimeType,
diff --git a/Entity/UploadedFile.php b/Entity/UploadedFile.php
index 27dfa2d8400660f9d117812dab2c36125ad7b49b..53b083d524191b071604f0079fbb58c958401563 100644
--- a/Entity/UploadedFile.php
+++ b/Entity/UploadedFile.php
@@ -75,6 +75,18 @@ class UploadedFile implements UploadedFileInterface
      */
     private $createdAt;
 
+    /**
+     * @ORM\Column(type="string", nullable=true)
+     * @var string
+     */
+    private $createdBy;
+
+    /**
+     * @ORM\Column(type="string", nullable=true)
+     * @var string
+     */
+    private $createdFrom;
+
     /**
      * @ORM\Column(type="json_array", nullable=true)
      * @var array
@@ -100,12 +112,16 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      *
+     * @param string $createdBy
+     * @param string $createdFrom
      */
-    public function __construct()
+    public function __construct($createdBy = null, $createdFrom = null)
     {
         $this->id = Uuid::uuid4()->toString();
         $this->path = "orphan/".$this->id;
         $this->createdAt = new DateTime('now');
+        $this->createdBy = $createdBy;
+        $this->createdFrom = $createdFrom;
     }
 
     /**
@@ -589,6 +605,26 @@ class UploadedFile implements UploadedFileInterface
         ];
     }
 
+    /**
+     * Get createdBy
+     *
+     * @return string
+     */
+    public function getCreatedBy()
+    {
+        return $this->createdBy;
+    }
+
+    /**
+     * Get createdFrom
+     *
+     * @return string
+     */
+    public function getCreatedFrom()
+    {
+        return $this->createdFrom;
+    }
+
     public function getLocalPath()
     {
         if(null !== $this->localTempPath) {
diff --git a/Model/FileManagerInterface.php b/Model/FileManagerInterface.php
index bba54a897d64aeec280f15d80c08a4921d2bfa6c..84a4b524fc5e91f05e43537a2885211a7b5d2f39 100644
--- a/Model/FileManagerInterface.php
+++ b/Model/FileManagerInterface.php
@@ -26,7 +26,7 @@ interface FileManagerInterface
      * @param int $lastModified
      * @return UploadedFileInterface
      */
-    public function create($name, $size, $mimeType, $lastModified);
+    public function create($name, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null);
 
     /**
      * @param UploadedFileInterface $file
diff --git a/Model/UploadedFileInterface.php b/Model/UploadedFileInterface.php
index 7b46d603995fdab527b4b01f073685b53a2412ca..6bc261890dd6f334e308053168b7b6812aee4dd8 100644
--- a/Model/UploadedFileInterface.php
+++ b/Model/UploadedFileInterface.php
@@ -144,6 +144,20 @@ interface UploadedFileInterface
      */
     public function getCreatedAt();
 
+  /**
+     * Get createdBy
+     *
+     * @return string
+     */
+    public function getCreatedBy();
+
+    /**
+     * Get createdFrom
+     *
+     * @return string
+     */
+    public function getCreatedFrom();
+
     /**
      * Set metadata
      *
diff --git a/Resources/config/services.yml b/Resources/config/services.yml
index 38b58f0b0ee33cf1aaa716584b9637a61d2c862a..fcd95e88ec1b564bacc40cfe09392fabcecb39dd 100644
--- a/Resources/config/services.yml
+++ b/Resources/config/services.yml
@@ -31,6 +31,7 @@ services:
             - @irstea_file_upload.file_manager
             - @router
             - @form.csrf_provider
+            - @security.token_storage
 
     # Type de champ
     irstea_file_upload.field_type: