diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php
index 14d362d8322fe85d2e3147c874cbe749d42ee8e6..eb7f60bcf22ea210b8f825ab1c522111f61d7ae9 100644
--- a/Entity/Repository/UploadedFileRepository.php
+++ b/Entity/Repository/UploadedFileRepository.php
@@ -58,9 +58,9 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte
         $this->eventDispatcher = $eventDispatcher;
     }
 
-    public function create($filename, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null)
+    public function create($filename, $size, $mimeType, $lastModified = null)
     {
-        $file = new UploadedFile($createdBy, $createdFrom);
+        $file = new UploadedFile();
 
         $file
             ->setFilesystem($this->filesystem)
diff --git a/Entity/UploadedFile.php b/Entity/UploadedFile.php
index 9fbc398ecc05ed307a0e40b6a113ed296c71bf9b..23ce3ec269ebbcdd5eb99aa536fae1cec0d8752a 100644
--- a/Entity/UploadedFile.php
+++ b/Entity/UploadedFile.php
@@ -19,7 +19,10 @@ use Rhumsaa\Uuid\Uuid;
 
 /**
  * @ORM\Entity(repositoryClass="Irstea\FileUploadBundle\Entity\Repository\UploadedFileRepository")
- * @ORM\EntityListeners({"Irstea\FileUploadBundle\Listener\UploadedFileListener"})
+ * @ORM\EntityListeners({
+ *  "Irstea\FileUploadBundle\Listener\UploadedFileListener",
+ *  "Irstea\FileUploadBundle\Listener\CreationDataListener"
+ * })
  */
 class UploadedFile implements UploadedFileInterface
 {
@@ -114,19 +117,13 @@ class UploadedFile implements UploadedFileInterface
     private $localTempPath = null;
 
     /** Crée un UploadedFile.
-     *
-     * @param string $createdBy Nom du créateur.
-     * @param string $createdFrom Adresse UP du créateur.
      *
      * @internal
      */
-    public function __construct($createdBy = null, $createdFrom = null)
+    public function __construct()
     {
         $this->id = Uuid::uuid4()->toString();
         $this->path = self::ORPHAN_PREFIX.$this->id;
-        $this->createdAt = new DateTime('now');
-        $this->createdBy = $createdBy;
-        $this->createdFrom = $createdFrom;
     }
 
     /**
@@ -604,6 +601,33 @@ class UploadedFile implements UploadedFileInterface
         return $this->createdFrom;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function setCreatedAt(DateTime $createdAt)
+    {
+        $this->createdAt = $createdAt;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCreatedBy($createdBy)
+    {
+        $this->createdBy = $createdBy;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCreatedFrom($createdFrom)
+    {
+        $this->createdFrom = $createdFrom;
+        return $this;
+    }
+
     /**
      * {@inheritdoc}
      */
diff --git a/Listener/CreationDataListener.php b/Listener/CreationDataListener.php
new file mode 100644
index 0000000000000000000000000000000000000000..cae9accbfd0f74e61ddbe3bfa95007c3578dde3c
--- /dev/null
+++ b/Listener/CreationDataListener.php
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * Copyright (C) 2015 IRSTEA
+ * All rights reserved.
+ */
+
+namespace Irstea\FileUploadBundle\Listener;
+
+use DateTime;
+use Doctrine\ORM\Event\LifecycleEventArgs;
+use Gaufrette\Exception\FileNotFound;
+use Gaufrette\Filesystem;
+use Irstea\FileUploadBundle\Model\UploadedFileInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
+
+/**
+ * Ajoute les informations sur la date, l'utilisateur connecté et l'adresse IP du client dans le fichier.
+ *
+ * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
+ */
+class CreationDataListener
+{
+    /**
+     * @var TokenStorageInterface
+     */
+    private $tokenStorage;
+
+    /**
+     * @var RequestStack
+     */
+    private $requestStack;
+
+    public function __construct(TokenStorageInterface $tokenStorage, RequestStack $requestStack)
+    {
+        $this->tokenStorage = $tokenStorage;
+        $this->requestStack = $requestStack;
+    }
+
+    /**
+     * @param LifecycleEventArgs $event
+     */
+    public function prePersist(UploadedFileInterface $file, LifecycleEventArgs $event)
+    {
+        $file->setCreatedAt(new DateTime("now"));
+
+        if ($request = $this->requestStack->getCurrentRequest()) {
+            $file->setCreatedFrom($request->getClientIp());
+        }
+
+        if ($token = $this->tokenStorage->getToken()) {
+            $file->setCreatedBy($token->getUsername());
+        }
+    }
+}
diff --git a/Model/FileManagerInterface.php b/Model/FileManagerInterface.php
index 0a0865e3445eb9360231696da0b5a7a9d67bf238..4616577b0072b8f7f3a04b5257a3084aba697af3 100644
--- a/Model/FileManagerInterface.php
+++ b/Model/FileManagerInterface.php
@@ -39,7 +39,7 @@ interface FileManagerInterface
      *
      * @api
      */
-    public function create($name, $size, $mimeType, $lastModified = null, $createdBy = null, $createdFrom = null);
+    public function create($name, $size, $mimeType, $lastModified = null);
 
     /** Supprime un fichier uploadé.
      *
diff --git a/Model/UploadedFileInterface.php b/Model/UploadedFileInterface.php
index a3eb621b9f461e3be706a167a490319eb826260d..324b97082f5f21221f54c23e7fef4d6b1dda5103 100644
--- a/Model/UploadedFileInterface.php
+++ b/Model/UploadedFileInterface.php
@@ -208,6 +208,33 @@ interface UploadedFileInterface
      */
     public function getEtat();
 
+    /** Définit la date de création du fichier.
+     *
+     * @param DateTime $time
+     * @return self
+     *
+     * @api
+     */
+    public function setCreatedAt(\DateTime $time);
+
+    /** Définit le nom de l'utilisateur ayant uploadé le fichier.
+     *
+     * @param string $username
+     * @return self
+     *
+     * @api
+     */
+    public function setCreatedBy($username);
+
+    /** Retourne l'adresse IP du client ayant uploadé le fichier.
+     *
+     * @param string $ipAddress
+     * @return self
+     *
+     * @api
+     */
+    public function setCreatedFrom($ipAddress);
+
     /** Retourne la date de création du fichier.
      *
      * @return DateTime
diff --git a/Resources/config/services.yml b/Resources/config/services.yml
index 869289a32f80228a125ba9e0551a9c5a37a5a957..13c6b1cd87ecb42a1ad5f9c537c98298b66c0b72 100644
--- a/Resources/config/services.yml
+++ b/Resources/config/services.yml
@@ -3,6 +3,7 @@ parameters:
 
     irstea_file_upload.upload_controller.class: Irstea\FileUploadBundle\Controller\UploadController
     irstea_file_upload.entity_listener.class: Irstea\FileUploadBundle\Listener\UploadedFileListener
+    irstea_file_upload.creation_data_listener.class: Irstea\FileUploadBundle\Listener\CreationDataListener
     irstea_file_upload.field_type.class: Irstea\FileUploadBundle\Form\Type\FileUploadType
 
     irstea_file_upload.filesystem.name: irstea_file_upload
@@ -44,7 +45,7 @@ services:
         tags:
             - { name: form.type, alias: file_upload }
 
-    # Le listener
+    # Le listener de mise à jour du filesystem
     irstea_file_upload.entity_listener:
         class: %irstea_file_upload.entity_listener.class%
         arguments:
@@ -52,6 +53,15 @@ services:
         tags:
             - { name: doctrine.orm.entity_listener }
 
+    # Le listener pour les informations de création
+    irstea_file_upload.creation_data_listener:
+        class: %irstea_file_upload.creation_data_listener.class%
+        arguments:
+            - @security.token_storage
+            - @request_stack
+        tags:
+            - { name: doctrine.orm.entity_listener }
+
     # Le backend de stockage des fichiers
     irstea_file_upload.filesystem:
         class: Gaufrette\Filesystem