diff --git a/application/modules/opac/controllers/CmsController.php b/application/modules/opac/controllers/CmsController.php
index 2545801bdf04cd7281f75c63bace2eade41dbddc..38f10a1a2d7ff5ee1feb72461260bb25983a61ea 100644
--- a/application/modules/opac/controllers/CmsController.php
+++ b/application/modules/opac/controllers/CmsController.php
@@ -19,7 +19,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 class CmsController extends Zend_Controller_Action {
-
 	public function init() {
 		parent::init();
 
@@ -115,13 +114,17 @@ class CmsController extends Zend_Controller_Action {
 
 	}
 
+
 	public function articleviewAction() {
-		if (
-			null === (
-				$article = Class_Article::getLoader()->find((int)$this->_getParam('id'))
-			)
-		) {
-			$this->_redirect('opac/index', array('exit' => true));
+		if (null === ($article = Class_Article::find((int)$this->_getParam('id')))) {
+			$this->_redirect('opac/index', ['exit' => true]);
+		}
+
+		xdebug_break();
+
+		if ($article->isArchived() && !Class_Users::isCurrentUserCanAccesBackend()) {
+			throw new Zend_Controller_Action_Exception($this->view->_('Désolé, cette page n\'existe pas'), 404);
+			return;
 		}
 
 		$langue = Zend_Registry::get('translate')->getLocale();
diff --git a/application/modules/opac/controllers/ErrorController.php b/application/modules/opac/controllers/ErrorController.php
index 3c1a8ed79d84587c05f3bacf40d9095cb998c9f4..5f1fa2a16c81dbb1fcaeec640439cf03794ffef2 100644
--- a/application/modules/opac/controllers/ErrorController.php
+++ b/application/modules/opac/controllers/ErrorController.php
@@ -20,17 +20,31 @@
  */
 class ErrorController extends Zend_Controller_Action {
 	public function errorAction() {
+		$errors = $this->_getParam('error_handler');
+
+		if (isset($errors->exception) && (404 == $errors->exception->getCode())) 
+			return $this->renderPageNotFound($errors->exception);
+
 		$this->_response->setHttpResponseCode(500);
 		$this->_response->clearBody();
 				
 		if (($this->_request->getServer('HTTP_HOST') == 'localhost')
 			|| ((null != ($user = Class_Users::getLoader()->getIdentity()))
 				&& $user->isAdmin())) {
-			$this->view->errors = $this->_getParam('error_handler');
+			$this->view->errors = $errors;
 			return;
 		}
 
 		$this->_helper->getHelper('viewRenderer')->setNoRender(true);
 		$this->_helper->getHelper('viewRenderer')->setLayoutScript('empty.phtml');
 	}
-}
\ No newline at end of file
+
+
+	public function renderPageNotFound($exception) {
+		$this->_response->setHttpResponseCode(404);
+		$this->view->exception = $exception;
+		$this->renderScript('error/404.phtml');
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/application/modules/opac/views/scripts/error/404.phtml b/application/modules/opac/views/scripts/error/404.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..8a8778b7e555c04a12c9d3f651e7fe8d8b6a6bef
--- /dev/null
+++ b/application/modules/opac/views/scripts/error/404.phtml
@@ -0,0 +1,6 @@
+<div style="text-align:center; font-size:3em">404</div>
+<h1 style="text-align:center">
+<?php 
+echo $this->exception->getMessage();
+?>
+</h1>
diff --git a/library/Class/Article.php b/library/Class/Article.php
index e68c4d99e6d5eb633ef806014cf11cf704a5fe1e..b8810511c362d03fffc6a0dda5d329764802bbbe 100644
--- a/library/Class/Article.php
+++ b/library/Class/Article.php
@@ -448,6 +448,7 @@ class Class_Article extends Storm_Model_Abstract {
 
 
 	protected $_overrided_attributes = ['id',
+																			'id_article',
 																			'parent_id',
 																			'article_original',
 																			'langue',
@@ -952,6 +953,7 @@ class Class_Article extends Storm_Model_Abstract {
 		return $this;
 	}
 
+
 	/**
 	 * @return Class_Article
 	 */
@@ -961,6 +963,14 @@ class Class_Article extends Storm_Model_Abstract {
 	}
 
 
+	/**
+	 * @return boolean
+	 */
+	public function isArchived() {
+		return self::STATUS_ARCHIVED == $this->getStatus();
+	}
+
+
 	/**
 	 * @return array
 	 */
diff --git a/library/ZendAfi/Controller/Plugin/SelectionBib.php b/library/ZendAfi/Controller/Plugin/SelectionBib.php
index 29b651a4eb5faab2bce08ac23faf16eea10f663a..4807a6efe221f9b3b8c8ecbc8fab0a77b9208d51 100644
--- a/library/ZendAfi/Controller/Plugin/SelectionBib.php
+++ b/library/ZendAfi/Controller/Plugin/SelectionBib.php
@@ -117,8 +117,8 @@ class ZendAfi_Controller_Plugin_SelectionBib extends Zend_Controller_Plugin_Abst
 			}
 
 			if($bib) {
-				$id_bibs=$bib;
-				$message="la biblioth&egrave;que : ".utf8_decode(Class_Bib::find($bib)->getLibelle());
+				$id_bibs=$bib->getId();
+				$message="la biblioth&egrave;que : ".utf8_decode($bib->getLibelle());
 			}
 		}
 
diff --git a/tests/application/modules/opac/controllers/CmsControllerTest.php b/tests/application/modules/opac/controllers/CmsControllerTest.php
index 0d002829b447c7cfd9d88524c92e28c81daba982..372e4ed34fe837ef45bdd69c8fd9de227742b023 100644
--- a/tests/application/modules/opac/controllers/CmsControllerTest.php
+++ b/tests/application/modules/opac/controllers/CmsControllerTest.php
@@ -693,6 +693,31 @@ abstract class CmsControllerWithFeteDeLaFriteTestCase extends AbstractController
 		
 		$avis_mimi->beWrittenByAbonne();
 
+
+		$avis_florence = $this->fixture('Class_Avis' , 
+																		['id' => 35,
+																		 'auteur' => $this->fixture('Class_Users' , 
+																																['id'=> 123,
+																																 'pseudo' => 'Florence',
+																																 'password' => 'toto',
+																																 'login' => 'florence']),
+																		 'date_avis' => '2012-02-05',
+																		 'note'=>2,
+																		 'entete' => "Argg",
+																		 'avis'=> 'ça ne me tente pas']);
+		$avis_florence->beWrittenByBibliothecaire();
+
+
+		$avis_anonyme = $this->fixture('Class_Avis' , 
+																	 ['id' => 38,
+																		'auteur' => null,
+																		'date_avis' => '2012-02-05',
+																		'note'=>2,
+																		'entete' => "Anonyme",
+																		'avis'=> 'vous ne savez pas qui je suis']);
+		$avis_anonyme->beWrittenByBibliothecaire();	
+
+
 		$article= $this->fixture('Class_Article',
 														 ['id' =>224,
 															'titre' => 'La fête de la frite',
@@ -701,46 +726,18 @@ abstract class CmsControllerWithFeteDeLaFriteTestCase extends AbstractController
 															'events_fin' => '2011-10-05 16:00',
 															'tags' => 'Tout public;Concert',
 															'lieu' => $annecy,
-															'categorie' =>$alimentaire]);
-		
-		$avis_florence = $this->fixture('Class_Avis' , ['id' => 35,
-																							 'auteur' => $this->fixture('Class_Users' , ['id'=> 123,
-																																													 'pseudo' => 'Florence',
-																																													 'password' => 'toto',
-																																						'login' => 'florence']),
-																							 'date_avis' => '2012-02-05',
-																							 'note'=>2,
-																							 'entete' => "Argg",
-																										'avis'=> 'ça ne me tente pas'
-								
-																			]);
-		
-		$avis_florence->beWrittenByBibliothecaire();
+															'categorie' =>$alimentaire,
+															'avis' => 1,
+															'avis_users' => [$avis_mimi,$avis_florence,$avis_anonyme]]);
 
+		$article_en = $this->fixture('Class_Article',
+																 ['id' => 2241,
+																	'langue' => 'en',
+																	'parent_id' => 224,
+																	'titre' => 'Feast of fried',
+																	'contenu' => '<div>an appetizing feast</div>']);
 
 
-		$avis_anonyme = $this->fixture('Class_Avis' , ['id' => 38,
-																									 'auteur' => null,
-																									 'date_avis' => '2012-02-05',
-																									 'note'=>2,
-																									 'entete' => "Anonyme",
-																									 'avis'=> 'vous ne savez pas qui je suis'
-																		 ]);
-		$avis_anonyme->beWrittenByBibliothecaire();	
-
-	
-		
-			
-		$article->setTraductions(array(Class_Article::getLoader()
-																	 ->newInstanceWithId(2241)
-																	 ->setLangue('en')
-																	 ->setParentId(224)
-																	 ->setTitre('Feast of fried')
-																	 ->setContenu('<div>an appetizing feast</div>')))
-			->setAvis(1);
-		$article->setAvisUsers([$avis_mimi,$avis_florence,$avis_anonyme]);
-		$article->save();
-
 
 		$this->fixture('Class_CmsRank',['id' => 987,
 																		'article' => $article]);
@@ -947,7 +944,77 @@ class CmsControllerArticleViewTest extends CmsControllerWithFeteDeLaFriteTestCas
 	public function speakStopMarkerShouldBePresent() {
 		$this->assertXpathContentContains('//article[@class="auto_resize article"]', '<!-- RSPEAK_STOP -->');
 	}
+}
+
+
+
+
+class CmsControllerArticleViewArticleArchivedWithWorkflowTest extends CmsControllerWithFeteDeLaFriteTestCase {
+	protected function _loginHook($account) {
+		$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB;
+		$account->PSEUDO = "admin";
+	}
+
+	
+	public function setUp() {
+		parent::setUp();
+
+		Class_AdminVar::newInstanceWithId('WORKFLOW', ['valeur' => '1']);
+		
+		Class_Article::find(224)->beArchived()->assertSave();
+
+		$this->dispatch('/cms/articleview/id/224');
+	}
 
+
+	/** @test */
+	public function responseShouldBeA404NotFound() {
+		$this->assertResponseCode(404);
+	}
+
+
+	/** @test */
+	public function pageShouldContainsH1WithNotFound() {
+		$this->assertXPathContentContains('//h1', 'Désolé, cette page n\'existe pas');
+	}
+
+
+	/** @test */
+	public function articleTitleShouldNotBeVisible() {
+		$this->assertNotXPathContentContains('//h1', 'frite');
+	}
+}
+
+
+
+class CmsControllerArticleViewArticleArchivedWithWorkflowAsModoBibTest extends CmsControllerWithFeteDeLaFriteTestCase {
+	protected function _loginHook($account) {
+		$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::MODO_BIB;
+		$account->PSEUDO = "redac";
+	}
+
+	
+	public function setUp() {
+		parent::setUp();
+
+		Class_AdminVar::newInstanceWithId('WORKFLOW', ['valeur' => '1']);
+		
+		Class_Article::find(224)->beArchived()->assertSave();
+
+		$this->dispatch('/cms/articleview/id/224');
+	}
+
+
+	/** @test */
+	public function responseShouldNotBeA404NotFound() {
+		$this->assertNotResponseCode(404);
+	}
+
+
+	/** @test */
+	public function articleTitleShouldBeVisible() {
+		$this->assertXPathContentContains('//h1', 'frite');
+	}
 }