diff --git a/src/UnicaenZimbra/Processus/BoiteGenerique.php b/src/UnicaenZimbra/Processus/BoiteGenerique.php
index 405eff93a62b887dff6cbb486de757d8bdfbe05a..e05bb6e822077bead728e0d3209b3c40f2b978a4 100644
--- a/src/UnicaenZimbra/Processus/BoiteGenerique.php
+++ b/src/UnicaenZimbra/Processus/BoiteGenerique.php
@@ -121,6 +121,57 @@ class BoiteGenerique extends Processus
 	
         return $this;
     }
+    
+    /**
+     * Renomme une adresse fonctionnelle
+     * 
+     * @param string $mail Adresse mail de la boite générique
+     * @param string $adresseFonctionnelle adresse mail de l'adresse fonctionnelle
+     * @param string $newName nouveau nom
+     * @return self
+     */
+    public function renameAdresseFonctionnelle($mail, $adresseFonctionnelle, $newName)
+    {
+	$afName	    = $this->getMailName($adresseFonctionnelle);
+	$afNewName  = $this->getMailName($newName); 
+	
+	// récupération des services
+        $accountService = $this->getServiceManager()->get('zimbraServiceAccount');
+	$distribListService = $this->getServiceManager()->get('zimbraServiceDistributionList');
+        $folderService = $this->getServiceManager()->get('zimbraServiceFolder');
+        $filterService = $this->getServiceManager()->get('zimbraServiceFilter');
+	
+	// Travail sur la boite générique
+        $bg = $accountService->get($mail);
+        $folderService->setAccount($bg);
+        $filterService->setAccount($bg);
+	
+	// Liste de distribution
+	// la suppression de la liste de distribution permet de supprimer les droits (ACE) sur celle-ci
+	$distribListService->delete($distribListService->get($adresseFonctionnelle));
+	$distribList = $distribListService->create($newName);
+	$distribListService->addMembers($distribList, $mail);
+	
+	// Répertoires
+	$folderService->rename($folderService->get($afName.' | Réception'), $afNewName.' | Réception');
+        $folderService->rename($folderService->get($afName.' | Envoi'),	    $afNewName.' | Envoi');
+	
+	// Filtre entrant
+	$filter = $filterService->getInput()[$afName.' | Réception'];
+	$filter->setName($afNewName.' | Réception');
+	$test1 = new FilterTestAddress();
+        $test1->setHeader('to,cc')->setStringComparison('contains')->setPart('all')
+	      ->setValue($newName);
+	$test2 = new FilterTestHeader();
+	$test2->setHeader('X-Zimbra-DL')->setStringComparison('contains')
+	      ->setValue($newName);
+        $filter->setTests(array($test1, $test2));
+	
+	$filterService->deleteInput($afName.' | Réception');
+	$filterService->createInput($filter);
+	
+	return $this;
+    }
 
     /**
      * Supprime une adresse fonctionnelle par rapport à la boite générique (paramètre $mail)
@@ -223,7 +274,7 @@ class BoiteGenerique extends Processus
         $identity->setName($afName);
         $identity->zimbraPrefFromAddress = $adresseFonctionnelle;
         $identity->zimbraPrefFromAddressType = 'sendAs';
-        $identity->zimbraPrefFromDisplay = $adresseFonctionnelle;
+        $identity->zimbraPrefFromDisplay = $afName;
         $identity->zimbraPrefWhenInFolderIds = $folderService->get($afName.' | Réception')->getId();
         $identity->zimbraPrefWhenInFoldersEnabled = true;
         $identity->zimbraPrefReplyToAddress = $adresseFonctionnelle;
@@ -250,6 +301,7 @@ class BoiteGenerique extends Processus
         $accountService	    = $this->getServiceManager()->get('zimbraServiceAccount');
         $folderService	    = $this->getServiceManager()->get('zimbraServiceFolder');
         $filterService	    = $this->getServiceManager()->get('zimbraServiceFilter');
+	$rightService	    = $this->getServiceManager()->get('zimbraServiceRight');
         $identityService    = $this->getServiceManager()->get('zimbraServiceIdentity');
 
 	// Travail sur la boite générique
@@ -270,11 +322,83 @@ class BoiteGenerique extends Processus
 
         // Filtres
         $filterService->deleteOutput($afName.' | Envoi');
+	
+	// ACE
+	$ace = new Right;
+	$ace->setTarget($distribListService->get($adresseFonctionnelle))
+	    ->setGrantee($userAccount)
+	    ->setRightByRightName('sendAsDistList');
+	$rightService->revokeRight($ace);
 
         // Avatar
         $identityService->delete( $identityService->get($afName) );
         return $this;
     }
+    
+    /**
+     * 
+     * @param string $adresseFonctionnelle adresse mail de l'adresse fonctionnelle
+     * @param type $userMail adresse mail de l'utilisateur
+     * @param type $newName nouveau nom
+     * @return self
+     */
+    public function renameAdresseFonctionnelleToUser($adresseFonctionnelle, $userMail, $newName)
+    {
+	$afName	    = $this->getMailName($adresseFonctionnelle);
+	$afNewName  = $this->getMailName($newName);
+	
+	$distribListService = $this->getServiceManager()->get('zimbraServiceDistributionList'); 
+	$accountService	    = $this->getServiceManager()->get('zimbraServiceAccount');
+        $folderService	    = $this->getServiceManager()->get('zimbraServiceFolder');
+        $filterService	    = $this->getServiceManager()->get('zimbraServiceFilter');
+	$rightService	    = $this->getServiceManager()->get('zimbraServiceRight');
+        $identityService    = $this->getServiceManager()->get('zimbraServiceIdentity');
+	
+	// Travail sur la boite utilisateur
+	$userAccount = $accountService->get($userMail);
+	$folderService->setAccount($userAccount);
+        $filterService->setAccount($userAccount);
+        $identityService->setAccount($userAccount);
+	
+	// Répertoires
+	$folderService->rename($folderService->get($afName.' | Réception'), $afNewName.' | Réception');
+        $folderService->rename($folderService->get($afName.' | Envoi'),	    $afNewName.' | Envoi');
+	
+	// Filtre sortant
+	$filter = $filterService->getOutput()[$afName.' | Envoi'];
+	$filter->setName($afNewName.' | Envoi');
+	$test = new FilterTestAddress();
+	$test->setHeader('from')->setStringComparison('contains')->setPart('all')
+	     ->setValue($newName);
+        $filter->setTests(array($test));
+	
+	$filterService->deleteOutput($afName.' | Envoi');
+	$filterService->createOutput($filter);
+	
+	// ACE
+	$newAce = new Right();
+	$newAce->setTarget($distribListService->get($newName))
+	       ->setGrantee($userAccount)
+	       ->setRightByRightName('sendAsDistList');
+	$rightService->grantRight($newAce);
+	
+	// Avatar
+	$identityService->delete($identityService->get($afName)); // suppression ancienne identité
+	$identity = new Identity();
+        $identity->setName($afNewName);
+        $identity->zimbraPrefFromAddress = $newName;
+	$identity->zimbraPrefFromAddressType = 'sendAs';
+        $identity->zimbraPrefFromDisplay = $afNewName;
+        $identity->zimbraPrefWhenInFolderIds = $folderService->get($afNewName.' | Réception')->getId();
+	$identity->zimbraPrefWhenInFoldersEnabled = true;
+        $identity->zimbraPrefReplyToAddress = $newName;
+	$identity->zimbraPrefReplyToEnabled = true;
+        $identity->zimbraPrefWhenSentToAddresses = $newName;
+	$identity->zimbraPrefWhenSentToEnabled = true;
+        $identityService->create($identity);
+	
+	return $this;
+    }
 
     /**
      * Retourne la partie locale d'une adresse mail (tout ce qu'il y a avant le dernier @)
diff --git a/src/UnicaenZimbra/Service/Right.php b/src/UnicaenZimbra/Service/Right.php
index 88503b6a199b19225506733142efbaaea49c4a9c..4074aaf0779503ff0560a4c326f5f1ff3a5f17d0 100644
--- a/src/UnicaenZimbra/Service/Right.php
+++ b/src/UnicaenZimbra/Service/Right.php
@@ -28,6 +28,12 @@ class Right extends Service
         return true;
     }
 	
+    /**
+     * Revoke a right on a target to an individual or group grantee.
+     * 
+     * @param \UnicaenZimbra\Entity\Right $right
+     * @return boolean
+     */
     public function revokeRight(RightEntity $right)
     {
 	$params = $right->getConvertedToXml();