diff --git a/application/modules/admin/controllers/UsergroupController.php b/application/modules/admin/controllers/UsergroupController.php
index 77a9a44579bc05e29435bc9fdaffbaa991439d78..312c450beb1ec828ef819623dedd2b7652bb4a15 100644
--- a/application/modules/admin/controllers/UsergroupController.php
+++ b/application/modules/admin/controllers/UsergroupController.php
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 class Admin_UsergroupController extends ZendAfi_Controller_Action {
+	use Trait_Translator;
+
 	public function indexAction() {
 		$this->view->titre = "Gestion des groupes d'utilisateurs";
 		$bib= Class_Bib::getPortail();
@@ -119,6 +121,9 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
 				->updateAttributes($post)
 				->save();
 
+			$this->_helper->notify($this->_('Le groupe "%s" a été sauvegardé', 
+																			$group->getLibelle()));
+
 			$this->_redirect('admin/usergroup');
 			return true;
 		}
diff --git a/library/Class/Catalogue.php b/library/Class/Catalogue.php
index 4aa3bd94f87ad7f08fc8ff6eaa1f4511dce17b27..c394c692b1c5bb8faa3cb702211af535ff49c7df 100644
--- a/library/Class/Catalogue.php
+++ b/library/Class/Catalogue.php
@@ -1075,6 +1075,9 @@ class Class_Catalogue extends Storm_Model_Abstract {
 			return true;
 		}
 
+		if ($user->hasRightToAccess(Class_UserGroup::RIGHT_USER_DOMAINES_TOTAL_ACCESS))
+			return true;
+
 		if (!$user->hasRightToAccess(Class_UserGroup::RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT))
 			return false;
 		
diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php
index 689e298462ac168050e0765af681857a76c3fe02..414f1e60ed8b196602f14c2a7ecd9026e25cc2e0 100644
--- a/library/Class/UserGroup.php
+++ b/library/Class/UserGroup.php
@@ -30,28 +30,29 @@ class Class_UserGroup extends Storm_Model_Abstract {
 	protected $_belongs_to = ['categorie' => ['model' => 'Class_UserGroupCategorie',
 																						'referenced_in' => 'id_cat']];
 	// Les droits doivent être une puissance de 2 (ce sont des masques)
-	const RIGHT_SUIVRE_FORMATION = 1;
-	const RIGHT_DIRIGER_FORMATION = 2;
-	const RIGHT_ACCES_ARTEVOD = 4;
-	const RIGHT_ACCES_NUMILOG = 8;
-	const RIGHT_ACCES_CVS = 16;
-	const RIGHT_ACCES_VODECLIC = 32;
-	const RIGHT_ACCES_TOUTAPPRENDRE = 64;
-	const RIGHT_ACCES_MUSICME = 128;
+	const RIGHT_SUIVRE_FORMATION = 0x01;
+	const RIGHT_DIRIGER_FORMATION = 0x02;
+	const RIGHT_ACCES_ARTEVOD = 0x04;
+	const RIGHT_ACCES_NUMILOG = 0x08;
+	const RIGHT_ACCES_CVS = 0x10;
+	const RIGHT_ACCES_VODECLIC = 0x20;
+	const RIGHT_ACCES_TOUTAPPRENDRE = 0x40;
+	const RIGHT_ACCES_MUSICME = 0x80;
 
 
 	// droits moderateurs
-	const RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT = 256;
-	const RIGHT_USER_FILE_ACCESS = 512;
-	const RIGHT_USER_SITOTHEQUE = 1024;
-	const RIGHT_USER_MODO = 2048;
-	const RIGHT_USER_INSCRIPTIONS = 4096;
-	const RIGHT_USER_BIB_NUM = 8192;
-	const RIGHT_USER_OPDS_READ = 16384;
-	const RIGHT_USER_NOTICES_LIEES = 32768;
-	const RIGHT_USER_SIGB_USER_READ = 65536;
-	const RIGHT_USER_CONFIG_FRONT = 131072;
-	const RIGHT_USER_PUBLICATION_DIRECTE = 262144;
+	const RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT = 0x100;
+	const RIGHT_USER_FILE_ACCESS = 0x200;
+	const RIGHT_USER_SITOTHEQUE = 0x400;
+	const RIGHT_USER_MODO = 0x800;
+	const RIGHT_USER_INSCRIPTIONS = 0x1000;
+	const RIGHT_USER_BIB_NUM = 0x2000;
+	const RIGHT_USER_OPDS_READ = 0x4000;
+	const RIGHT_USER_NOTICES_LIEES = 0x8000;
+	const RIGHT_USER_SIGB_USER_READ = 0x10000;
+	const RIGHT_USER_CONFIG_FRONT = 0x20000;
+	const RIGHT_USER_PUBLICATION_DIRECTE = 0x40000;
+	const RIGHT_USER_DOMAINES_TOTAL_ACCESS = 0x80000;
 
 	
 	// Type de groupe
@@ -68,7 +69,8 @@ class Class_UserGroup extends Storm_Model_Abstract {
 																					 self::RIGHT_ACCES_VODECLIC => 'Bibliothèque numérique: accéder à Vodéclic',
 																					 self::RIGHT_ACCES_TOUTAPPRENDRE => 'Bibliothèque numérique: accéder à Tout Apprendre',
 																					 self::RIGHT_ACCES_MUSICME => 'Bibliothèque numérique: accéder à Music Me',
-																					 self::RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT => 'Domaines: accès, suppression limitée au créateur',
+																					 self::RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT => 'Domaines: accès, modification et suppression limitée au créateur',
+																					 self::RIGHT_USER_DOMAINES_TOTAL_ACCESS => 'Domaines: accès total en modification et suppression',
 																					 self::RIGHT_USER_FILE_ACCESS => 'Articles: accès sur les répertoires images et file',
 																					 self::RIGHT_USER_SITOTHEQUE => 'Sitothèque: accès sitothèque',
 																					 self::RIGHT_USER_MODO => 'Modération: accès modération',
@@ -194,6 +196,11 @@ class Class_UserGroup extends Storm_Model_Abstract {
 	}
 
 
+	/** @return Class_UserGroup */
+	public function addRightDomainesTotalAccess() {
+		return $this->addRight(self::RIGHT_USER_DOMAINES_TOTAL_ACCESS);
+	}
+
 	/** 
 	 * @param int right
 	 * @return Class_UserGroup 
diff --git a/tests/application/modules/admin/controllers/CatalogueControllerTest.php b/tests/application/modules/admin/controllers/CatalogueControllerTest.php
index ac2be886e0c5284fc92b08ef7c419a3175e4b2ae..7c9ddd4bae04651f91647a8da4da3f0e5864cc94 100644
--- a/tests/application/modules/admin/controllers/CatalogueControllerTest.php
+++ b/tests/application/modules/admin/controllers/CatalogueControllerTest.php
@@ -202,9 +202,75 @@ class CatalogueControllerWithReferentIndexTest extends AdminCatalogueControllerT
 	public function pageReferentShouldContainsLinkToDeleteCatalogueMoyenAge() {
 		$this->assertXPath('//a[contains(@href, "catalogue/delete/id_catalogue/300")]');
 	}
+}
+
+
+
+
+class CatalogueControllerWithAdminBibTest extends AdminCatalogueControllerTestCase {
+	protected function _loginHook($account) {
+		$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB;
+
+	}
+
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('admin/catalogue/index');
+	}
+
+
+	/** @test */
+	function responseToIndexReferentShouldNotBeARedirectToAccueil() {
+		$this->assertNotRedirect();
+	}
+
+
+	/** @test */
+	public function titreShouldBeDefinitionDesDomaines() {
+		$this->assertXPathContentContains('//h1', 'Définition des domaines');
+	}
+
+
+	/** @test */
+	public function pageShouldNotContainsToDeleteCatalogueMoyenAge() {
+		$this->assertNotXPath('//a[contains(@href, "catalogue/delete/id_catalogue/300")]');
+	}
+}
+
+
+
+
+class CatalogueControllerWithAdminBibAndRightTotalAccessTest extends AdminCatalogueControllerTestCase {
+	protected function _loginHook($account) {
+		$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB;
+	}
+
+	public function setUp() {
+		parent::setUp();
+		Class_Users::getIdentity()->setUserGroups([
+																								Class_UserGroup::newInstanceWithId(667)
+																								->addRightDomainesTotalAccess()
+																								]);
+	}
 
+
+	/** @test */
+	public function pageIndexShouldContainsToDeleteCatalogueMoyenAge() {
+		$this->dispatch('admin/catalogue/index');
+		$this->assertXPath('//a[contains(@href, "catalogue/delete/id_catalogue/300")]');
+	}
+
+
+	/** @test */
+	public function editCatalogueShouldShowValiderButton() {
+		$this->dispatch('/admin/catalogue/edit/id_catalogue/300');
+		$this->assertXPathContentContains('//td', 'Valider');	
+	}
 }
 
+
+
+
 class CatalogueControllerWithModoPortailIndexTest extends AdminCatalogueControllerTestCase {
 	protected function _loginHook($account) {
 		$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL;
diff --git a/tests/application/modules/admin/controllers/UserGroupControllerTest.php b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
index 4abbf01acc8fd32132a7017cd95a2fc890193eb6..36a7e7c3cb304f60ec307c1a73396befcde00ca8 100644
--- a/tests/application/modules/admin/controllers/UserGroupControllerTest.php
+++ b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
@@ -258,12 +258,11 @@ class Admin_UserGroupControllerIndexTest extends Admin_UserGroupControllerTestCa
 		$this->assertXPath('//li[@class="item"]//img[contains(@src, "/groupe_dynamique.png")]',$this->_response->getBody());
 	}
 
+
 	/** @test */
 	public function thirdRowShouldContainsIconGroupe() {
 		$this->assertXPath('//li[@class="item"][2]//img[contains(@src, "/groupe.png")]',$this->_response->getBody());
 	}
-
-
 }
 
 
@@ -305,6 +304,13 @@ class Admin_UserGroupControllerAddTest extends Admin_UserGroupControllerTestCase
 		$this->assertXPath('//input[@name="rights[]"][@value="2"]');	
 		$this->assertXPathContentContains('//label', 'Formations: diriger une formation');	
 	}
+
+
+	/** @test */
+	public function aCheckBoxShouldContainsRightDomainesAccesTotal() {
+		$this->assertXPath('//input[@name="rights[]"][@value="524288"]');	
+		$this->assertXPathContentContains('//label', 'Domaines: accès total en modification et suppression');	
+	}
 }
 
 
@@ -335,6 +341,12 @@ class Admin_UserGroupControllerAddPostTest extends Admin_UserGroupControllerTest
 		$this->assertEquals(2, 
 												Class_UserGroup::getLoader()->getFirstAttributeForLastCallOn('save')->getIdCat());
 	}
+
+
+	/** @test */
+	public function notificationShouldContainsGroupeSauvegarde() {
+		$this->assertFlashMessengerContentContains('Le groupe "Intervenants" a été sauvegardé');
+	}
 }
 
 
diff --git a/tests/library/Trait/UserGroupFixtures.php b/tests/library/Trait/UserGroupFixtures.php
index d783355cd6a8154bcde722587bbb9fd777f9c068..d8b4711983e3e823851058ff13ba1e28a8b6d88f 100644
--- a/tests/library/Trait/UserGroupFixtures.php
+++ b/tests/library/Trait/UserGroupFixtures.php
@@ -22,6 +22,7 @@
 trait Trait_UserGroupFixtures {
 	protected $_referent;
 	protected $_referent_membership;
+
 	public function addUserToRightsReferent($user) {
 		$this->_referent = Class_UserGroup::newInstanceWithId(28)
 			->setLibelle('Referent')
@@ -36,6 +37,7 @@ trait Trait_UserGroupFixtures {
 										Class_UserGroup::RIGHT_USER_NOTICES_LIEES,
 										Class_UserGroup::RIGHT_USER_SIGB_USER_READ
 										]);
+
 	Storm_Test_ObjectWrapper::onLoaderOfModel('Class_UserGroup')
 		->whenCalled('findAll')
 		->answers([