diff --git a/config/unicaen-zimbra.global.php.dist b/config/unicaen-zimbra.global.php.dist
index c3a4322531f3c60fe88d8e7e20554c703ddfb41c..2bb9dac0d0ab84b71e76baad69a56f6b782aaf17 100644
--- a/config/unicaen-zimbra.global.php.dist
+++ b/config/unicaen-zimbra.global.php.dist
@@ -1,11 +1,11 @@
 <?php
 
 $settings = array(
-    'server'    => 'zimbra-pp.unicaen.fr',
+    'server'    => 'wzstore01.unicaen.fr',
     'port'      => 7071,
-    'email'     => 'david.surville@pp.unicaen.fr',
-    'password'  => 'Zimbra14',
-    'domain'    => 'pp.unicaen.fr',
+    'email'     => 'adminsoap@unicaen.fr',
+    'password'  => 'ZsIoMaBpRa',
+    'domain'    => 'unicaen.fr',
 );
 
 return array(
diff --git a/src/UnicaenZimbra/Processus/BoiteGenerique.php b/src/UnicaenZimbra/Processus/BoiteGenerique.php
new file mode 100644
index 0000000000000000000000000000000000000000..d79f74086de579fb33e112b8fa79e312e18dcf1b
--- /dev/null
+++ b/src/UnicaenZimbra/Processus/BoiteGenerique.php
@@ -0,0 +1,240 @@
+<?php
+
+/**
+ * Processus de gestion des boites génériques
+ *
+ * @author Laurent LECLUSE <laurent.lecluse at unicaen.fr>
+ */
+
+namespace UnicaenZimbra\Processus;
+
+use UnicaenZimbra\Entity\Account;
+use UnicaenZimbra\Entity\Identity;
+use UnicaenZimbra\Entity\Grant;
+use UnicaenZimbra\Entity\Filter\Filter;
+use UnicaenZimbra\Entity\Filter\Test\Address as FilterTestAddress;
+use UnicaenZimbra\Entity\Filter\Test\Header as FilterTestHeader;
+use UnicaenZimbra\Entity\Filter\Action\FileInto as FilterActionFileInto;
+use UnicaenZimbra\Entity\Filter\Action\Stop as FilterActionStop;
+use UnicaenZimbra\Service\Folder as FolderService;
+
+class BoiteGenerique extends Processus
+{
+
+    /**
+     * Création d'une boite générique
+     *
+     * @todo Ajouter la COS...
+     * @param string $name Nom de la boite
+     * @param string $password Mot de passe de la boite
+     * @param string $mail Adresse mail de la boite générique
+     * @param string $description Description
+     */
+    public function create( $mail, $password, $name, $description )
+    {
+        $accountService = $this->getZimbra()->getAccountService();
+        $cosService = $this->getZimbra()->getCosService();
+
+        $account = new Account;
+        $account->name = $mail;        
+        $account->description = $description;
+        $account->zimbraCOSId = $cosService->get('default')->getId();
+        $accountService->create( $account, $password );
+        $accountService->addAlias($account, $name.substr($mail, strpos($mail,'@')));
+    }
+
+    /**
+     * Destruction de la boite générique
+     *
+     * @param string $mail
+     */
+    public function delete( $mail )
+    {
+        $accountService = $this->getZimbra()->getAccountService();
+        $accountService->delete($accountService->get($mail));
+    }
+
+    /**
+     * Crée une adresse fonctionnelle par rapport à la boite générique (paramètre $mail)
+     *
+     * @param string $mail
+     * @param string $adresseFonctionnelle
+     */
+    public function createAdresseFonctionnelle( $mail, $adresseFonctionnelle )
+    {
+        $afName = $this->getMailName( $adresseFonctionnelle );
+
+        $accountService = $this->getZimbra()->getAccountService();
+        $folderService = $this->getZimbra()->getFolderService();
+        $filterService = $this->getZimbra()->getFilterService();
+
+        /****** Travail sur la boite générique ******/
+        $bg = $accountService->get( $mail );
+        $folderService->setAccount($bg );
+        $filterService->setAccount($bg );
+
+        /* Alias */
+        $accountService->addAlias( $bg, $adresseFonctionnelle );
+
+        /* Répertoires */
+        $inputFolder = $folderService->create($afName.' | Réception');
+        $sentFolder  = $folderService->create($afName.' | Envoi');
+
+        /* Filtre de réception */
+        $filter = new Filter;
+        $filter->setName($afName.' | Réception');
+        $test = new FilterTestAddress;
+        $test->setHeader('to,cc');
+        $test->setStringComparison('is');
+        $test->setPart('all');
+        $test->setValue($adresseFonctionnelle);
+        $filter->addTest($test);
+
+        $action = new FilterActionFileInto;
+        $action->setFolderPath( $inputFolder->absFolderPath );
+        $filter->addAction($action);
+        $filter->addAction( new FilterActionStop );
+        $filterService->createInput($filter);
+    }
+
+    /**
+     * Supprime une adresse fonctionnelle par rapport à la boite générique (paramètre $mail)
+     *
+     * @param string $mail
+     * @param string $adresseFonctionnelle
+     */
+    public function deleteAdresseFonctionnelle( $mail, $adresseFonctionnelle )
+    {
+        $afName = $this->getMailName( $adresseFonctionnelle );
+
+        $accountService = $this->getZimbra()->getAccountService();
+        $folderService = $this->getZimbra()->getFolderService();
+        $filterService = $this->getZimbra()->getFilterService();
+        
+        /****** Travail sur la boite générique ******/
+        $bg = $accountService->get( $mail );
+        $folderService->setAccount( $bg );
+        $filterService->setAccount( $bg );
+
+        /* Alias */
+        $accountService->removeAlias( $bg, $adresseFonctionnelle );
+
+        /* Répertoires */
+        $folderService->delete( $folderService->get($afName.' | Réception') );
+        $folderService->delete( $folderService->get($afName.' | Envoi') );
+
+        /* Filtres */
+        $filterService->deleteInput($afName.' | Réception');
+    }
+
+    public function grantUserToAdresseFonctionnelle( $adresseFonctionnelle, $userMail )
+    {
+        $afName = $this->getMailName( $adresseFonctionnelle );
+
+        $aliasService = $this->getZimbra()->getAliasService();
+        $accountService = $this->getZimbra()->getAccountService();
+        $folderService = $this->getZimbra()->getFolderService();
+        $filterService = $this->getZimbra()->getFilterService();
+        $identityService = $this->getZimbra()->getIdentityService();
+
+        $alias = $aliasService->get( $adresseFonctionnelle );
+
+        /****** Travail sur la boite générique ******/
+        $bgAccount = $accountService->get($alias->zimbraAliasTargetId, 'id');
+        $userAccount = $accountService->get( $userMail );
+        $folderService->setAccount($bgAccount);
+
+        /* Ajout des partages */
+        $grant = new Grant;
+        $grant->setGrantee($userAccount);
+        $grant->perm = Grant::PERM_MANAGE;
+
+        $inputFolder = $folderService->get($afName.' | Réception');
+        $sentFolder = $folderService->get($afName.' | Envoi');
+
+        $folderService->addGrant( $inputFolder, $grant, FolderService::GRANT_ACTION_NONE )
+                      ->createMountPoint($inputFolder, $userAccount, $inputFolder->absFolderPath)
+                      ->addGrant( $sentFolder, $grant, FolderService::GRANT_ACTION_NONE )
+                      ->createMountPoint($sentFolder, $userAccount, $sentFolder->absFolderPath);
+
+        /****** Travail sur la boite utilisateur ******/
+        $filterService->setAccount($userAccount);
+        $identityService->setAccount($userAccount);
+        $folderService->setAccount($userAccount);
+
+        /* Filtres */
+        $filter = new Filter;
+        $filter->setName($afName.' | Envoi');
+        $test = new FilterTestHeader;
+        $test->setHeader('Reply-to');
+        $test->setStringComparison('is');
+        $test->setValue($adresseFonctionnelle);
+        $filter->addTest($test);
+
+        $action = new FilterActionFileInto;
+        $action->setFolderPath( $afName.' | Envoi' );
+        $filter->addAction($action);
+        $filter->addAction( new FilterActionStop );
+        $filterService->createOutput($filter);
+
+        /* Avatar */
+        $identity = new Identity;
+        $identity->setName($afName);
+        $identity->zimbraPrefFromAddress = $userMail;
+        $identity->zimbraPrefFromAddressType = 'sendAs';
+        $identity->zimbraPrefFromDisplay = $adresseFonctionnelle;
+        $identity->zimbraPrefWhenInFolderIds = $folderService->get($afName.' | Réception')->getId();
+        $identity->zimbraPrefWhenInFoldersEnabled = true;
+        $identity->zimbraPrefReplyToAddress = $adresseFonctionnelle;
+        $identity->zimbraPrefReplyToEnabled = true;
+        $identity->zimbraPrefWhenSentToAddresses = $adresseFonctionnelle;
+        $identity->zimbraPrefWhenSentToEnabled = true;
+        $identityService->create($identity);
+    }
+
+    public function revokeUserFromAdresseFonctionnelle( $adresseFonctionnelle, $userMail )
+    {
+        $afName = $this->getMailName( $adresseFonctionnelle );
+
+        $aliasService = $this->getZimbra()->getAliasService();
+        $accountService = $this->getZimbra()->getAccountService();
+        $folderService = $this->getZimbra()->getFolderService();
+        $filterService = $this->getZimbra()->getFilterService();
+        $identityService = $this->getZimbra()->getIdentityService();
+
+        $alias = $aliasService->get( $adresseFonctionnelle );
+
+        /****** Travail sur la boite générique ******/
+        $bgAccount = $accountService->get($alias->zimbraAliasTargetId, 'id');
+        $userAccount = $accountService->get( $userMail );
+        $folderService->setAccount($bgAccount);
+
+        /* Suppression des partages */
+        $inputFolder = $folderService->get($afName.' | Réception');
+        $sentFolder = $folderService->get($afName.' | Envoi');
+
+        $folderService->revokeGrant( $inputFolder, $userAccount )
+                      ->revokeGrant( $sentFolder, $userAccount );
+
+        /****** Travail sur la boite utilisateur ******/
+        $filterService->setAccount($userAccount);
+        $identityService->setAccount($userAccount);
+
+        /* Filtres */
+        $filterService->deleteOutput($afName.' | Envoi');
+
+        /* Avatar */
+        $identityService->delete( $identityService->get($afName) );
+    }
+
+    /**
+     * Retourne la partie locale d'une adresse mail (tout ce qu'il y a avant le dernier @)
+     *
+     * @param string $mail
+     * @return string
+     */
+    private function getMailName( $mail )
+    {
+        return substr( $mail, 0, strrpos($mail,'@'));
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenZimbra/Processus/Processus.php b/src/UnicaenZimbra/Processus/Processus.php
new file mode 100644
index 0000000000000000000000000000000000000000..86903cb7781c24e24d682cefd5572de8f94b529c
--- /dev/null
+++ b/src/UnicaenZimbra/Processus/Processus.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Processus de gestion des boites génériques
+ *
+ * @author Laurent LECLUSE <laurent.lecluse at unicaen.fr>
+ */
+
+namespace UnicaenZimbra\Processus;
+
+use UnicaenZimbra\Zimbra;
+
+abstract class Processus{
+
+    /**
+     *
+     * @param Zimbra $zimbra
+     */
+    protected $zimbra;
+
+
+
+
+
+    /**
+     *
+     * @param Zimbra $zimbra
+     */
+    public function setZimbra( Zimbra $zimbra )
+    {
+        $this->zimbra = $zimbra;
+    }
+
+    /**
+     *
+     * @return Zimbra
+     */
+    public function getZimbra()
+    {
+        return $this->zimbra;
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenZimbra/Service/Account.php b/src/UnicaenZimbra/Service/Account.php
index cc446b51dc076f92781b2c04d71d11e26a38b428..9a5168b9d7b91a8d688de684d18f7959bdb5e4aa 100644
--- a/src/UnicaenZimbra/Service/Account.php
+++ b/src/UnicaenZimbra/Service/Account.php
@@ -295,12 +295,12 @@ class Account extends Service {
             $account = null;
         }
 
-        $params = array(
+        $attributes = array(
             'id'    => $id,
             'alias' => $alias
         );
 
-        $this->zimbra->request('RemoveAccountAliasRequest', array(), $params);
+        $this->zimbra->request('RemoveAccountAliasRequest', $attributes, array());
 
        if (! empty($account)){
             $lastAlias = $account->getAlias();
diff --git a/src/UnicaenZimbra/Service/Alias.php b/src/UnicaenZimbra/Service/Alias.php
index 79005df81a0ffd859b4935f23aaea903d28c2715..e43e90299eda7d07ad16e9c29bdb6dec93170e40 100644
--- a/src/UnicaenZimbra/Service/Alias.php
+++ b/src/UnicaenZimbra/Service/Alias.php
@@ -38,6 +38,29 @@ class Alias extends Service {
         return $results;
     }
 
+    /**
+     * Retourne un objet alias en fonction de son adresse mail
+     * 
+     * @param string $name
+     * @return AliasEntity
+     */
+    public function get( $name )
+    {
+        list( $uid, $domain ) = explode( '@', $name );
+        $query = 'uid='.$uid;
+
+        $result = $this->zimbra->searchDirectory($domain, 1, 0, 'aliases', null, $query);
+        $count = (int)$result->children()->SearchDirectoryResponse['searchTotal'];
+        if (0 == $count){
+            throw new Exception('L\'alias "'.$name.'" n\a pas pu être trouvé');
+        }else{
+            $alias = new AliasEntity;
+            $alias->populate( $result->children()->SearchDirectoryResponse->children()[0] );
+            $this->count = $count;
+            return $alias;
+        }
+    }
+
     /**
      * Détermine si un alias existe ou non
      *
diff --git a/src/UnicaenZimbra/Service/Filter.php b/src/UnicaenZimbra/Service/Filter.php
index 00e224786b5421320ca44c8b86bab996b57565ee..f87efaf945964d336b9ad8982da14e2da1ee723f 100644
--- a/src/UnicaenZimbra/Service/Filter.php
+++ b/src/UnicaenZimbra/Service/Filter.php
@@ -93,6 +93,31 @@ class Filter extends Service {
         return $results;
     }
 
+    /**
+     * Ajoute un filtre en entrée
+     *
+     * @param FilterEntity $filter
+     */
+    public function createInput( FilterEntity $filter )
+    {
+        $filters = $this->getInput();
+        $filters[$filter->getName()] = $filter;
+        $this->setInput($filters);
+    }
+
+    /**
+     * Supprime un filtre en entrée à partir de son nom ou d'un objet
+     *
+     * @param FilterEntity|string $filter
+     */
+    public function deleteInput( $filter )
+    {
+        if ($filter instanceof FilterEntity) $filter = $filter->getName();
+        $filters = $this->getInput();
+        unset($filters[$filter]);
+        $this->setInput($filters);
+    }
+
    /**
      * Retourne les filtres en sortie
      *
@@ -116,6 +141,31 @@ class Filter extends Service {
         return $results;
     }
 
+    /**
+     * Ajoute un filtre en sortie
+     *
+     * @param FilterEntity $filter
+     */
+    public function createOutput( FilterEntity $filter )
+    {
+        $filters = $this->getOutput();
+        $filters[$filter->getName()] = $filter;
+        $this->setOutput($filters);
+    }
+
+    /**
+     * Supprime un filtre en sortie à partir de son nom ou d'un objet
+     *
+     * @param FilterEntity|string $filter
+     */
+    public function deleteOutput( $filter )
+    {
+        if ($filter instanceof FilterEntity) $filter = $filter->getName();
+        $filters = $this->getOutput();
+        unset($filters[$filter]);
+        $this->setOutput($filters);
+    }
+
     /**
      * Applique des filtres en entrée
      * 
diff --git a/src/UnicaenZimbra/Service/Folder.php b/src/UnicaenZimbra/Service/Folder.php
index d5fec54700d8d70c435e11ddf1bcbd4b08ec673a..4a4844cfa0227306764d9bda1178b29aa8728d8f 100644
--- a/src/UnicaenZimbra/Service/Folder.php
+++ b/src/UnicaenZimbra/Service/Folder.php
@@ -12,7 +12,6 @@ use UnicaenZimbra\Entity\Folder as FolderEntity;
 use UnicaenZimbra\Entity\Account as AccountEntity;
 use UnicaenZimbra\Entity\Grant as GrantEntity;
 use UnicaenZimbra\Entity\Link as LinkEntity;
-use UnicaenZimbra\Zimbra;
 use Exception;
 
 class Folder extends Service {
@@ -316,38 +315,18 @@ class Folder extends Service {
 
         switch( $action ){
         case self::GRANT_ACTION_SENDMAIL:
-            /* Envoi d'un mail au destinataire pour la partage */
-            $params = array(
-               'item' => array( '@attributes' => array( 'id' => $id ) ),
-               'e' => array( '@attributes' => array( 'a' => $grant->granteeName ) ),
-            );
-            $attributes = array(
-                'action' => 'edit'
-            );
-            $this->zimbra->request('SendShareNotificationRequest', $attributes, $params, self::URN);
+            /* Envoi d'un mail au destinataire pour le partage */
+            if ($grant->granteeType != GrantEntity::TYPE_USR){
+                throw new Exception('L\'envoi de mail de notification ne fonctionne que si le partage se fait à un utilisateur');
+            }
+            $this->sendGrantNotification($id, $grant->granteeName);
         break;
         case self::GRANT_ACTION_LINK:
             /* Ajout automatique du lien vers le dossier partagé sur le destinataire */
-            if (null == $folder) $folder = $this->get($id,'id');
-
-            $currentAccount = $this->account;
-            $this->account = $grant->granteeName;
-            $destRootFolder = $this->get('/');
-            $this->account = $currentAccount;
-
-            $owner = $this->getAccount();
-
-            $attributes = array();
-            $params = array(
-                'link' => array( '@attributes' => array(
-                    'name'  => $folder->getName().' de '.$owner->displayName,
-                    'rid'   => explode(':',$id)[1],
-                    'zid'   => explode(':',$id)[0],
-                    'owner' => $owner->getName(),
-                    'l'     => $destRootFolder->getId()
-                ) )
-            );
-            $this->zimbra->request('CreateMountpointRequest', $attributes, $params, self::URN);
+            if ($grant->granteeType != GrantEntity::TYPE_USR){
+                throw new Exception('L\'envoi de mail de notification ne fonctionne que si le partage se fait à un utilisateur');
+            }
+            $this->createMountPoint($id, $grant->granteeName, '/'.$folder->getName().' de '.$this->getAccount()->displayName);
         break;
         }
         return $this;
@@ -360,7 +339,7 @@ class Folder extends Service {
      * @param string $action
      * @retun self
      */
-    public function removeGrant( $id, $accountId, $action=self::GRANT_ACTION_LINK ){
+    public function revokeGrant( $id, $accountId, $action=self::GRANT_ACTION_LINK ){
         if ($id instanceof FolderEntity){
             $folder = $id;
             $id = $id->getId();
@@ -381,34 +360,133 @@ class Folder extends Service {
 
         switch( $action ){
         case self::GRANT_ACTION_SENDMAIL:
-            /* Envoi d'un mail au destinataire pour la partage */
-            if (empty($account)) $account = $this->zimbra->getAccountService ()->get($accountId,'id');
-            $params = array(
-               'item' => array( '@attributes' => array( 'id' => $id ) ),
-               'e' => array( '@attributes' => array( 'a' => $account->getName() ) ),
-            );
-            $attributes = array(
-                'action' => 'revoke'
-            );
-            $this->zimbra->request('SendShareNotificationRequest', $attributes, $params, self::URN);
+            /* Envoi d'un mail au destinataire pour le partage */
+            if (empty($account)) $account = $this->zimbra->getAccountService()->get($accountId,'id');
+            $this->sendRevokeNotification($id, $account);
         break;
         case self::GRANT_ACTION_LINK:
             /* Suppression automatique du lien vers le dossier partagé sur le destinataire en cas de partage de usr à usr uniquement */
             if (empty($account)) $account = $this->zimbra->getAccountService ()->get($accountId,'id');
+            $this->deleteMountPoint($id, $account);
+        break;
+        }
+        return $this;
+    }
 
-            $currentAccount = $this->account;
-            $this->account = $account->getName();
+    /**
+     * Envoie un mail de notification de partage au destinataire
+     *
+     * $id = <b>Identifiant</b> de répertoire ou répertoire
+     * $account = <b>adresse mail</b> ou compte
+     *
+     * @param string|FolderEntity $id
+     * @param string|AccountEntity $account
+     * @return self
+     */
+    public function sendGrantNotification($id, $account)
+    {
+        if ($id instanceof FolderEntity)        $id = $id->getId();
+        if ($account instanceof AccountEntity ) $account = $account->getName();
 
-            $granteeLinks = $this->getLinkList();
-            foreach( $granteeLinks as $link ){
-                $fid = $link->getRemoteFolderId();
-                if ($fid == $id) $this->action($link->getId(), 'delete', array());
-            }
+        $params = array(
+           'item' => array( '@attributes' => array( 'id' => $id ) ),
+           'e' => array( '@attributes' => array( 'a' => $account ) ),
+        );
+        $attributes = array(
+            'action' => 'edit'
+        );
+        $this->applyAccountContext();
+        $this->zimbra->request('SendShareNotificationRequest', $attributes, $params, self::URN);
+        return $this;
+    }
 
-            $this->account = $currentAccount;
-        break;
+    /**
+     * Envoie un mail de notification de fin de partage au destinataire
+     *
+     * $id = <b>Identifiant</b> de répertoire ou répertoire
+     * $account = <b>adresse mail</b> ou compte
+     *
+     * @param string|FolderEntity $id
+     * @param string|AccountEntity $account
+     * @return self
+     */
+    public function sendRevokeNotification($id, $account)
+    {
+        if ($id instanceof FolderEntity)        $id = $id->getId();
+        if ($account instanceof AccountEntity ) $account = $account->getName();
+
+        $params = array(
+           'item' => array( '@attributes' => array( 'id' => $id ) ),
+           'e' => array( '@attributes' => array( 'a' => $account ) ),
+        );
+        $attributes = array(
+            'action' => 'revoke'
+        );
+        $this->applyAccountContext();
+        $this->zimbra->request('SendShareNotificationRequest', $attributes, $params, self::URN);
+        return $this;
+    }
+
+    /**
+     * Monte le partage sur le compte du destinataire
+     *
+     * $account = <b>adresse mail</b> ou compte
+     *
+     * @param string|FolderEntity $id
+     * @param string|AccountEntity $account
+     * @param string $absPath
+     * @return self
+     */
+    public function createMountPoint($id, $account, $absPath)
+    {
+        if ($id instanceof FolderEntity) $id = $id->getId();
+
+        $currentAccount = $this->account;
+        $this->account = $account;
+        $destFolderParent = dirname( $absPath);
+        if ('.' == $destFolderParent) $destFolderParent = '/';
+        $destFolderName = basename( $absPath );
+        $destFolderParent = $this->get($destFolderParent);
+        $this->account = $currentAccount;
+
+        $attributes = array();
+        $params = array(
+            'link' => array( '@attributes' => array(
+                'name'  => $destFolderName,
+                'rid'   => explode(':',$id)[1],
+                'zid'   => explode(':',$id)[0],
+                'owner' => $this->getAccountName(),
+                'l'     => $destFolderParent->getId()
+            ) )
+        );
+        $this->applyAccountContext();
+        $this->zimbra->request('CreateMountpointRequest', $attributes, $params, self::URN);
+        return $this;
+    }
+
+    /**
+     * Démonte le partage sur le compte du destinataire
+     *
+     * $account = <b>adresse mail</b> ou compte
+     *
+     * @param string|FolderEntity $id
+     * @param string|AccountEntity $account
+     * @return self
+     */
+    public function deleteMountPoint($id, $account)
+    {
+        if ($id instanceof FolderEntity) $id = $id->getId();
+
+        $currentAccount = $this->account;
+        $this->account = $account;
+
+        $granteeLinks = $this->getLinkList();
+        foreach( $granteeLinks as $link ){
+            $fid = $link->getRemoteFolderId();
+            if ($fid == $id) $this->action($link->getId(), 'delete', array());
         }
 
+        $this->account = $currentAccount;
         return $this;
     }
 
diff --git a/src/UnicaenZimbra/Service/Gal.php b/src/UnicaenZimbra/Service/Gal.php
index 0ba262ac08eeb0f70f455ac6fcc8371174bcd502..7d00be0974aab0a6ea2daaa3bfaaeb1edb812743 100644
--- a/src/UnicaenZimbra/Service/Gal.php
+++ b/src/UnicaenZimbra/Service/Gal.php
@@ -15,9 +15,11 @@ class Gal extends Service {
 
     /**
      * Retourne la liste des boites mail
-     * 
+     *
+     * @param string $domain
+     * @param string $name
+     * @param string $type
      * @param integer $limit
-     * @param integer $offset
      * @return GalEntity[]
      */
     public function autoComplete( $domain, $name, $type='account', $limit=Zimbra::DEFAULT_LIMIT )
diff --git a/src/UnicaenZimbra/Service/Identity.php b/src/UnicaenZimbra/Service/Identity.php
index 20a5af5bf14189d48b2f04ae0b78553cf268f55f..11b30382dbf7fe34450affdea464f6a5fdc8f29a 100644
--- a/src/UnicaenZimbra/Service/Identity.php
+++ b/src/UnicaenZimbra/Service/Identity.php
@@ -9,6 +9,7 @@
 namespace UnicaenZimbra\Service;
 
 use UnicaenZimbra\Entity\Identity as IdentityEntity;
+use UnicaenZimbra\Entity\Account as AccountEntity;
 use UnicaenZimbra\Zimbra;
 use Exception;
 
diff --git a/src/UnicaenZimbra/Zimbra.php b/src/UnicaenZimbra/Zimbra.php
index 10d35af126f0c382aad3a7d323dab4ccb5f9f4de..e57b05a02cc84fb451ff660d8b2e1904214c935c 100644
--- a/src/UnicaenZimbra/Zimbra.php
+++ b/src/UnicaenZimbra/Zimbra.php
@@ -754,6 +754,7 @@ class Zimbra implements ServiceManagerAwareInterface
             case 'galService':              return $this->getGalService();
             case 'folderService':           return $this->getFolderService();
             case 'filterService':           return $this->getFilterService();
+            case 'identityService':         return $this->getIdentityService();
             default: throw new Exception('Propriété "'.$name.'" inconnue.');
         };
     }
diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php
index a2af5e8d941d03cb838527f3612364c92d3d4bdf..8f5c9aff714377e41cde5a04a9c496ec14386483 100644
--- a/tests/Bootstrap.php
+++ b/tests/Bootstrap.php
@@ -6,6 +6,7 @@ use Zend\Mvc\Service\ServiceManagerConfig;
 use Zend\ServiceManager\ServiceManager;
 use RuntimeException;
 
+
 error_reporting(E_ALL | E_STRICT);
 chdir(__DIR__);
 
@@ -14,6 +15,10 @@ chdir(__DIR__);
  */
 class Bootstrap
 {
+    /**
+     *
+     * @var ServiceManager
+     */
     protected static $serviceManager;
 
     public static function init()
@@ -29,7 +34,11 @@ class Bootstrap
 
         static::initAutoloader();
 
-        static::$serviceManager = new ServiceManager(new ServiceManagerConfig());
+        // use ModuleManager to load this module and it's dependencies
+        $serviceManager = new ServiceManager(new ServiceManagerConfig());
+        $serviceManager->setService('ApplicationConfig', require_once './config/application.config.php');
+        $serviceManager->get('ModuleManager')->loadModules();
+        static::$serviceManager = $serviceManager;
     }
 
     public static function getServiceManager()
diff --git a/tests/ModulesTest/ServiceManagerGrabber.php b/tests/ModulesTest/ServiceManagerGrabber.php
new file mode 100644
index 0000000000000000000000000000000000000000..4b5da27ffef81961b4093cd69df8c27ea7eed671
--- /dev/null
+++ b/tests/ModulesTest/ServiceManagerGrabber.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace ModulesTests;
+
+use Zend\ServiceManager\ServiceManager;
+use Zend\Mvc\Service\ServiceManagerConfig;
+
+class ServiceManagerGrabber
+{
+    protected static $serviceConfig = null;
+
+    public static function setServiceConfig($config)
+    {
+        static::$serviceConfig = $config;
+    }
+
+    public function getServiceManager()
+    {
+        $configuration = static::$serviceConfig ? : require_once './config/application.config.php';
+
+        $smConfig = isset($configuration['service_manager']) ? $configuration['service_manager'] : array();
+        $serviceManager = new ServiceManager(new ServiceManagerConfig($smConfig));
+        $serviceManager->setService('ApplicationConfig', $configuration);
+
+        $serviceManager->get('ModuleManager')->loadModules();
+
+        return $serviceManager;
+    }
+}
\ No newline at end of file
diff --git a/tests/UnicaenZimbraTest/BaseServiceTest.php b/tests/UnicaenZimbraTest/BaseServiceTest.php
deleted file mode 100644
index ec61ee29642cfaf4e81c114ef5acba14a9bfc488..0000000000000000000000000000000000000000
--- a/tests/UnicaenZimbraTest/BaseServiceTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace UnicaenZimbraTest;
-
-use PHPUnit_Framework_TestCase;
-
-abstract class BaseServiceTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \UnicaenZimbra\Zimbra
-     */
-    protected $zimbra;
-
-    /**
-     *
-     * @var \UnicaenZimbra\Options\ModuleOptions
-     */
-    protected $zimbraModuleOptions;
-
-    protected $config = array(
-        'server'    => 'zimbra-pp.unicaen.fr',
-        'port'      => 7071,
-        'email'     => 'david.surville@pp.unicaen.fr',
-        'password'  => 'Zimbra14',
-        'domain'    => 'pp.unicaen.fr',
-    );
-
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $serviceManager;
-
-    protected function setUp()
-    {
-        $this->zimbraModuleOptions = $zimbraModuleOptions = new \UnicaenZimbra\Options\ModuleOptions($this->config);
-
-        $this->serviceManager = $serviceManager = $this->getMock('Zend\ServiceManager\ServiceManager', array('get'));
-        $serviceManager->expects($this->any())
-                       ->method('get')
-                       ->will($this->returnCallback(function($serviceName) use ($zimbraModuleOptions) {
-                           if ('UnicaenZimbra\Options\ModuleOptions' === $serviceName) {
-                               return $zimbraModuleOptions;
-                           }
-                           return null;
-                       }));
-
-        $this->zimbra = new \UnicaenZimbra\Zimbra();
-        $this->zimbra->setServiceManager($serviceManager);
-
-        $this->zimbra->connect();
-     }
-}
\ No newline at end of file
diff --git a/tests/UnicaenZimbraTest/Service/AccountTest.php b/tests/UnicaenZimbraTest/Service/AccountTest.php
index 2328bcf27672089e99b17791e3b102e8655556e7..cb4a5dbeb6be07d7bc38254ee23db4dbeeda2ffc 100644
--- a/tests/UnicaenZimbraTest/Service/AccountTest.php
+++ b/tests/UnicaenZimbraTest/Service/AccountTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Account;
 use UnicaenZimbra\Entity\Account as AccountEntity;
 
 /**
  * @group Account
  */
-class AccountTest extends \UnicaenZimbraTest\BaseServiceTest
+class AccountTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -26,8 +27,10 @@ class AccountTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getAccountService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getAccountService();
     }
 
     public function testCreate()
diff --git a/tests/UnicaenZimbraTest/Service/AliasTest.php b/tests/UnicaenZimbraTest/Service/AliasTest.php
index fb220b4e947f40c9b3c25d4dcfa9bba0cf1c1b3f..8e73f689d8d7a5bb4f3298fddea0338c324126e2 100644
--- a/tests/UnicaenZimbraTest/Service/AliasTest.php
+++ b/tests/UnicaenZimbraTest/Service/AliasTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Alias;
 use UnicaenZimbra\Entity\Alias as AliasEntity;
 
 /**
  * @group Alias
  */
-class AliasTest extends \UnicaenZimbraTest\BaseServiceTest
+class AliasTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -23,8 +24,10 @@ class AliasTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getAliasService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getAliasService();
     }
 
     public function testExists()
@@ -46,4 +49,15 @@ class AliasTest extends \UnicaenZimbraTest\BaseServiceTest
         $this->assertEquals($id, $res[$id]->getId());
         $this->assertEquals($name, $res[$id]->getName());
     }
+
+    public function testGet()
+    {
+        $id = $this->data['id'];
+        $name = $this->data['name'];
+        
+        $alias = $this->service->get( $name );
+        $this->assertInstanceOf('\UnicaenZimbra\Entity\Alias', $alias);
+        $this->assertEquals($id, $alias->getId());
+        $this->assertEquals($name, $alias->getName());
+    }
 }
\ No newline at end of file
diff --git a/tests/UnicaenZimbraTest/Service/CosTest.php b/tests/UnicaenZimbraTest/Service/CosTest.php
index dbcf56286f4618e3c405c27c5d492cded1315948..04710f7f4a055ee7587d73459a03c26b34be7414 100644
--- a/tests/UnicaenZimbraTest/Service/CosTest.php
+++ b/tests/UnicaenZimbraTest/Service/CosTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Cos;
 use UnicaenZimbra\Entity\Cos as CosEntity;
 
 /**
  * @group Cos
  */
-class CosTest extends \UnicaenZimbraTest\BaseServiceTest
+class CosTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -23,8 +24,10 @@ class CosTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getCosService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getCosService();
     }
 
     public function testExists()
diff --git a/tests/UnicaenZimbraTest/Service/DistributionListTest.php b/tests/UnicaenZimbraTest/Service/DistributionListTest.php
index 1306671bef538b862ec4b642196f125055749f50..fa97e0d83ba1245db6d6ec35430c8646879cfc70 100644
--- a/tests/UnicaenZimbraTest/Service/DistributionListTest.php
+++ b/tests/UnicaenZimbraTest/Service/DistributionListTest.php
@@ -2,6 +2,7 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\DistributionList;
 use UnicaenZimbra\Entity\DistributionList as DistributionListEntity;
 use UnicaenZimbra\Entity\Account as AccountEntity;
@@ -9,7 +10,7 @@ use UnicaenZimbra\Entity\Account as AccountEntity;
 /**
  * @group DistributionList
  */
-class DistributionListTest extends \UnicaenZimbraTest\BaseServiceTest
+class DistributionListTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -31,8 +32,10 @@ class DistributionListTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getDistributionListService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getDistributionListService();
     }
 
     public function testCreate()
diff --git a/tests/UnicaenZimbraTest/Service/DomainTest.php b/tests/UnicaenZimbraTest/Service/DomainTest.php
index d4475a216d6927fa4bd60b3049134eec777783c3..cbf5b1e312aa486ade1c1c860cff4fadb6e6ef40 100644
--- a/tests/UnicaenZimbraTest/Service/DomainTest.php
+++ b/tests/UnicaenZimbraTest/Service/DomainTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Domain;
 use UnicaenZimbra\Entity\Domain as DomainEntity;
 
 /**
  * @group Domain
  */
-class DomainTest extends \UnicaenZimbraTest\BaseServiceTest
+class DomainTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -23,8 +24,10 @@ class DomainTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getDomainService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getDomainService();
     }
 
     public function testExists()
diff --git a/tests/UnicaenZimbraTest/Service/FilterTest.php b/tests/UnicaenZimbraTest/Service/FilterTest.php
index 1fe5532df5839973566cd615ee299ba7fe4f2cf9..ee49404e80268cd87c9eb3acdfdb19c415fe26ab 100644
--- a/tests/UnicaenZimbraTest/Service/FilterTest.php
+++ b/tests/UnicaenZimbraTest/Service/FilterTest.php
@@ -2,6 +2,7 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Filter;
 use UnicaenZimbra\Entity\Filter\Filter as FilterEntity;
 use UnicaenZimbra\Entity\Filter\Test\Header as FilterTestHeader;
@@ -11,7 +12,7 @@ use UnicaenZimbra\Entity\Filter\Action\Stop as FilterActionStop;
 /**
  * @group Filter
  */
-class FilterTest extends \UnicaenZimbraTest\BaseServiceTest
+class FilterTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -25,8 +26,10 @@ class FilterTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getFilterService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getFilterService();
         $this->service->setAccount( $this->data['accountName'] );
 
         $filter = new FilterEntity;
@@ -84,6 +87,27 @@ class FilterTest extends \UnicaenZimbraTest\BaseServiceTest
         $this->service->setInput( $oriInput );
     }
 
+    public function testCreateDeleteInput()
+    {
+        $filter = $this->data['filters']['test-unitaire'];
+
+        $oriInput = $this->service->getInput();
+
+        $this->service->createInput( $filter );
+        $filters = $this->service->getInput();
+
+        $this->assertArrayHasKey('test-unitaire', $filters);
+
+
+        $this->service->deleteInput($filter->getName());
+        $filters = $this->service->getInput();
+
+        $this->assertArrayNotHasKey('test-unitaire', $filters);
+
+        // Restauration de l'état antérieur
+        $this->service->setInput( $oriInput );
+    }
+
     public function testOutput()
     {
         $oriOutput = $this->service->getOutput();
@@ -98,6 +122,25 @@ class FilterTest extends \UnicaenZimbraTest\BaseServiceTest
         $this->service->setOutput( $oriOutput );
     }
 
+    public function testCreateDeleteOutput()
+    {
+        $filter = $this->data['filters']['test-unitaire'];
+
+        $oriOutput = $this->service->getOutput();
+
+        $this->service->createOutput( $filter );
+        $filters = $this->service->getOutput();
+
+        $this->assertArrayHasKey('test-unitaire', $filters);
+
+        $this->service->deleteOutput($filter->getName());
+        $filters = $this->service->getOutput();
+
+        $this->assertArrayNotHasKey('test-unitaire', $filters);
+
+        // Restauration de l'état antérieur
+        $this->service->setOutput( $oriOutput );
+    }
 
     public function saveAndAssertEqualInputFilterTest( array $filters )
     {
@@ -111,7 +154,6 @@ class FilterTest extends \UnicaenZimbraTest\BaseServiceTest
         return $actual;
     }
 
-
     public function assertEqualFilters( FilterEntity $expected, FilterEntity $actual )
     {
         $this->assertEquals($expected, $actual);
diff --git a/tests/UnicaenZimbraTest/Service/FolderTest.php b/tests/UnicaenZimbraTest/Service/FolderTest.php
index 5d745dddebf9ef2fe9fc240c5c527302ba5c6ca2..350fe9a9085a8968a991723053e40cd020d1276a 100644
--- a/tests/UnicaenZimbraTest/Service/FolderTest.php
+++ b/tests/UnicaenZimbraTest/Service/FolderTest.php
@@ -2,6 +2,7 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Folder;
 use UnicaenZimbra\Entity\Folder as FolderEntity;
 use UnicaenZimbra\Entity\Grant as GrantEntity;
@@ -9,7 +10,7 @@ use UnicaenZimbra\Entity\Grant as GrantEntity;
 /**
  * @group Folder
  */
-class FolderTest extends \UnicaenZimbraTest\BaseServiceTest
+class FolderTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -17,6 +18,12 @@ class FolderTest extends \UnicaenZimbraTest\BaseServiceTest
      */
     protected $service;
 
+    /**
+     *
+     * @var \UnicaenZimbra\Zimbra
+     */
+    protected $zimbra;
+
     protected $data = array(
         'accountName' => 'laurent.lecluse@pp.unicaen.fr',
         'absFolderPath' => '/Inbox/Tests Unitaires/Essai1.1/Essai2.1',
@@ -25,8 +32,11 @@ class FolderTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getFolderService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->zimbra = $zimbra;
+        $this->service = $zimbra->getFolderService();
         $this->service->setAccount( $this->data['accountName'] );
     }
 
@@ -130,12 +140,12 @@ class FolderTest extends \UnicaenZimbraTest\BaseServiceTest
      * @depends testGet
      * @param \UnicaenZimbra\Entity\Folder $folder
      */
-    public function testRemoveGrant( FolderEntity $folder)
+    public function testRevokeGrant( FolderEntity $folder)
     {
         $granteeName = 'laurent.lecluse2@pp.unicaen.fr';
         $account = $this->zimbra->getAccountService()->get($granteeName);
 
-        $this->service->removeGrant($folder, $account);
+        $this->service->revokeGrant($folder, $account);
 
         $acl = $folder->getAcl();
         $this->assertArrayNotHasKey($account->getId(), $acl); // Vérifie que le dossier a bien son ACL mise à jour ...
diff --git a/tests/UnicaenZimbraTest/Service/GalTest.php b/tests/UnicaenZimbraTest/Service/GalTest.php
index 84a763d94326b6438d16a70d6a6b054085f2834c..0ad4323be5c76a45ef63dece0bc189737c7e751d 100644
--- a/tests/UnicaenZimbraTest/Service/GalTest.php
+++ b/tests/UnicaenZimbraTest/Service/GalTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Gal;
 use UnicaenZimbra\Entity\Gal as GalEntity;
 
 /**
  * @group Gal
  */
-class GalTest extends \UnicaenZimbraTest\BaseServiceTest
+class GalTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -26,8 +27,10 @@ class GalTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getGalService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getGalService();
     }
 
     public function testAutocomplete()
diff --git a/tests/UnicaenZimbraTest/Service/IdentityTest.php b/tests/UnicaenZimbraTest/Service/IdentityTest.php
index d49f599d0b6e452d5ea85a3aae6f2aafc71fa961..df88010cbdb698a7e4becfc81db4657a75db3b4e 100644
--- a/tests/UnicaenZimbraTest/Service/IdentityTest.php
+++ b/tests/UnicaenZimbraTest/Service/IdentityTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Identity;
 use UnicaenZimbra\Entity\Identity as IdentityEntity;
 
 /**
  * @group Identity
  */
-class IdentityTest extends \UnicaenZimbraTest\BaseServiceTest
+class IdentityTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -25,8 +26,10 @@ class IdentityTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getIdentityService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getIdentityService();
         $this->service->setAccount( $this->data['accountName'] );
     }
 
diff --git a/tests/UnicaenZimbraTest/Service/MailBoxTest.php b/tests/UnicaenZimbraTest/Service/MailBoxTest.php
index 213ddebf7f1f1698abac86419f226449cbb422f4..b3c4333610b7cc0a6aab226ae3ea70b6a6c27a8e 100644
--- a/tests/UnicaenZimbraTest/Service/MailBoxTest.php
+++ b/tests/UnicaenZimbraTest/Service/MailBoxTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\MailBox;
 use UnicaenZimbra\Entity\MailBox as MailBoxEntity;
 
 /**
  * @group MailBox
  */
-class MailBoxTest extends \UnicaenZimbraTest\BaseServiceTest
+class MailBoxTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -22,8 +23,10 @@ class MailBoxTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getMailBoxService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getMailBoxService();
     }
 
     public function testGetList()
diff --git a/tests/UnicaenZimbraTest/Service/ResourceTest.php b/tests/UnicaenZimbraTest/Service/ResourceTest.php
index e512151c07ec144ee429dc473d4fd475f67aa737..f21557bc6cf4617c80d361d9d1005135718f258b 100644
--- a/tests/UnicaenZimbraTest/Service/ResourceTest.php
+++ b/tests/UnicaenZimbraTest/Service/ResourceTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Resource;
 use UnicaenZimbra\Entity\Resource as ResourceEntity;
 
 /**
  * @group Resource
  */
-class ResourceTest extends \UnicaenZimbraTest\BaseServiceTest
+class ResourceTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -24,8 +25,10 @@ class ResourceTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getResourceService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getResourceService();
     }
 
     public function testCreate()
diff --git a/tests/UnicaenZimbraTest/Service/ServerTest.php b/tests/UnicaenZimbraTest/Service/ServerTest.php
index 40616f2d5f16cd8e5ee6d6844878e7095b690580..5a762ded955d9085cca5a053ad4a3e29ab35fb4d 100644
--- a/tests/UnicaenZimbraTest/Service/ServerTest.php
+++ b/tests/UnicaenZimbraTest/Service/ServerTest.php
@@ -2,13 +2,14 @@
 
 namespace UnicaenZimbraTest\Service;
 
+use PHPUnit_Framework_TestCase;
 use UnicaenZimbra\Service\Server;
 use UnicaenZimbra\Entity\Server as ServerEntity;
 
 /**
  * @group Server
  */
-class ServerTest extends \UnicaenZimbraTest\BaseServiceTest
+class ServerTest extends PHPUnit_Framework_TestCase
 {
     /**
      *
@@ -23,8 +24,10 @@ class ServerTest extends \UnicaenZimbraTest\BaseServiceTest
 
     protected function setUp()
     {
-        parent::setUp();
-        $this->service = $this->zimbra->getServerService();
+        $zimbra = new \UnicaenZimbra\Zimbra();
+        $zimbra->setServiceManager( \UnicaenZimbraTest\Bootstrap::getServiceManager() );
+        $zimbra->connect();
+        $this->service = $zimbra->getServerService();
     }
 
     public function testGetList()
diff --git a/tests/UnicaenZimbraTest/ZimbraTest.php b/tests/UnicaenZimbraTest/ZimbraTest.php
index feb2d84066ef3dc113503e19f5ca9fe844b6b0ff..83cfcc4de8d4bd90ba570ce79710ce564b83daaa 100644
--- a/tests/UnicaenZimbraTest/ZimbraTest.php
+++ b/tests/UnicaenZimbraTest/ZimbraTest.php
@@ -18,39 +18,21 @@ class ZimbraTest extends PHPUnit_Framework_TestCase
         'id' => '01d13c21-2d2c-45f9-9df0-9bee295b3542' // laurent.lecluse@pp.unicaen.fr
     );
 
-    /**
-     *
-     * @var \UnicaenZimbra\Options\ModuleOptions
-     */
-    protected $zimbraModuleOptions;
-
-    protected $config = array(
-        'server'    => 'zimbra-pp.unicaen.fr',
-        'port'      => 7071,
-        'email'     => 'david.surville@pp.unicaen.fr',
-        'password'  => 'Zimbra14',
-        'domain'    => 'pp.unicaen.fr',
-    );
-
     protected $services = array(
             'account',
             'alias',
+            'cos',
             'distributionList',
-            'resource',
             'domain',
-            'cos',
-            'server',
-            'mailBox',
-            'gal',
-            'folder',
             'filter',
+            'folder',
+            'gal',
+            'identity',
+            'mailBox',
+            'resource',
+            'server',
     );
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $serviceManager;
-
     public function servicesProvider()
     {
         $result = array();
@@ -62,21 +44,8 @@ class ZimbraTest extends PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->zimbraModuleOptions = $zimbraModuleOptions = new \UnicaenZimbra\Options\ModuleOptions($this->config);
-
-        $this->serviceManager = $serviceManager = $this->getMock('Zend\ServiceManager\ServiceManager', array('get'));
-        $serviceManager->expects($this->any())
-                       ->method('get')
-                       ->will($this->returnCallback(function($serviceName) use ($zimbraModuleOptions) {
-                           if ('UnicaenZimbra\Options\ModuleOptions' === $serviceName) {
-                               return $zimbraModuleOptions;
-                           }
-                           return null;
-                       }));
-
         $this->zimbra = new \UnicaenZimbra\Zimbra();
-        $this->zimbra->setServiceManager($serviceManager);
-
+        $this->zimbra->setServiceManager(Bootstrap::getServiceManager());
         $this->zimbra->connect();
      }
 
diff --git a/tests/config/application.config.php b/tests/config/application.config.php
index caad13f10b0e97cf6066bae4d0accd24cbb38e48..8e663f7d0ae36fea5cb7ef8137f3b39efd080b24 100644
--- a/tests/config/application.config.php
+++ b/tests/config/application.config.php
@@ -1,4 +1,5 @@
 <?php
+
 // Application config
 $appConfig = array();//include __DIR__ . '/../../../../../config/application.config.php';
 
@@ -14,4 +15,4 @@ $testConfig = array(
     ),
 );
 
-return \Zend\Stdlib\ArrayUtils::merge($appConfig, $testConfig);
+return \Zend\Stdlib\ArrayUtils::merge($appConfig, $testConfig);
\ No newline at end of file
diff --git a/tests/config/autoload/global.php b/tests/config/autoload/global.php
index b741c81d89e33c438d527e00a1ba580250dd00f8..d266508bcd79f592795600fda075aa0b3c25caae 100644
--- a/tests/config/autoload/global.php
+++ b/tests/config/autoload/global.php
@@ -1,18 +1,2 @@
 <?php
-return array(
-//    'translator' => array(
-//        'locale' => 'fr_FR',
-//        'translation_file_patterns' => array(
-//            array(
-//                'type'     => 'getdtext',
-//                'base_dir' => __DIR__ . '/../language',
-//                'pattern'  => '%s.mo',
-//            ),
-//        ),
-//    ),
-    'controllers' => array(
-        'invokables' => array(
-//            'UnicaenZimbraTest\Controller\Plugin\TestAsset\Contact' => 'UnicaenAppTest\Controller\Plugin\TestAsset\ContactController',
-        ),
-    ),
-);
+return array();
diff --git a/tests/config/autoload/unicaen-zimbra.global.php b/tests/config/autoload/unicaen-zimbra.global.php
index 6a6c60acd1b527fd407aa399d3636117388117d9..43d9c7ca71f014ff9fa0c7b7f6efdebc8ae7abf3 100644
--- a/tests/config/autoload/unicaen-zimbra.global.php
+++ b/tests/config/autoload/unicaen-zimbra.global.php
@@ -6,7 +6,11 @@
  * drop this config file in it and change the values as you wish.
  */
 $settings = array(
-
+    'server'    => 'wzstore01.unicaen.fr',
+    'port'      => 7071,
+    'email'     => 'adminsoap@unicaen.fr',
+    'password'  => 'ZsIoMaBpRa',
+    'domain'    => 'unicaen.fr',
 );
 
 /**
diff --git a/tests/config/autoload/unicaen-zimbra.local.php.dist b/tests/config/autoload/unicaen-zimbra.local.php.dist
index f0643e58894af94e4e99b6c47aa4782ca1cca992..16cbc69d2d511d7fc08b80f553f227458830f29f 100644
--- a/tests/config/autoload/unicaen-zimbra.local.php.dist
+++ b/tests/config/autoload/unicaen-zimbra.local.php.dist
@@ -6,6 +6,11 @@
  * drop this config file in it and change the values as you wish.
  */
 $settings = array(
+    'server'    => 'zimbra-pp.unicaen.fr',
+    'port'      => 7071,
+    'email'     => 'david.surville@pp.unicaen.fr',
+    'password'  => 'Zimbra14',
+    'domain'    => 'pp.unicaen.fr',
 );
 
 /**