diff --git a/config/merged/contenu.config.php b/config/merged/contenu.config.php
new file mode 100755
index 0000000000000000000000000000000000000000..787df90b79e067f26b26764721251c69dd2596b9
--- /dev/null
+++ b/config/merged/contenu.config.php
@@ -0,0 +1,137 @@
+<?php
+
+namespace UnicaenRenderer;
+
+use UnicaenRenderer\Controller\ContenuController;
+use UnicaenRenderer\Controller\ContenuControllerFactory;
+use UnicaenRenderer\Service\Contenu\ContenuService;
+use UnicaenRenderer\Service\Contenu\ContenuServiceFactory;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+
+use UnicaenPrivilege\Guard\PrivilegeController;
+use UnicaenRenderer\View\Helper\ContenuViewHelper;
+use Zend\Router\Http\Literal;
+use Zend\Router\Http\Segment;
+
+return [
+    'bjyauthorize' => [
+        'guards' => [
+            PrivilegeController::class => [
+                [
+                    'controller' => ContenuController::class,
+                    'action' => [
+                        'index',
+                    ],
+                    'privileges' => [
+                        DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
+                    ],
+                ],
+                [
+                    'controller' => ContenuController::class,
+                    'action' => [
+                        'afficher',
+                    ],
+                    'privileges' => [
+                        DocumentcontenuPrivileges::DOCUMENTCONTENU_AFFICHER,
+                    ],
+                ],
+                [
+                    'controller' => ContenuController::class,
+                    'action' => [
+                        'supprimer',
+                    ],
+                    'privileges' => [
+                        DocumentcontenuPrivileges::DOCUMENTCONTENU_SUPPRIMER,
+                    ],
+                ],
+            ],
+        ],
+    ],
+
+    'navigation' => [
+        'default' => [
+            'home' => [
+                'pages' => [
+                    'administration' => [
+                        'pages' => [
+                            'contenu' => [
+                                'pages' => [
+                                    'contenu' => [
+                                        'label' => 'Contenu',
+                                        'route' => 'contenu/contenu',
+                                        'resource' => PrivilegeController::getResourceId(ContenuController::class, 'index'),
+                                        'order'    => 10003,
+                                    ],
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+
+    'router' => [
+        'routes' => [
+            'contenu' => [
+                'child_routes' => [
+                    'contenu' => [
+                        'type' => Literal::class,
+                        'options' => [
+                            'route' => '/contenu',
+                            'defaults' => [
+                                'controller' => ContenuController::class,
+                                'action' => 'index',
+                            ],
+                        ],
+                        'may_terminate' => true,
+                        'child_routes' => [
+                            'afficher' => [
+                                'type' => Segment::class,
+                                'options' => [
+                                    'route' => '/afficher/:contenu',
+                                    'defaults' => [
+                                        'controller' => ContenuController::class,
+                                        'action' => 'afficher',
+                                    ],
+                                ],
+                            ],
+                            'supprimer' => [
+                                'type' => Segment::class,
+                                'options' => [
+                                    'route' => '/supprimer/:contenu',
+                                    'defaults' => [
+                                        'controller' => ContenuController::class,
+                                        'action' => 'supprimer',
+                                    ],
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+
+    'service_manager' => [
+        'factories' => [
+            ContenuService::class => ContenuServiceFactory::class,
+        ],
+    ],
+    'form_elements' => [
+        'factories' => [],
+    ],
+    'hydrators' => [
+        'factories' => [],
+    ],
+    'controllers'     => [
+        'factories' => [
+            ContenuController::class => ContenuControllerFactory::class,
+        ]
+    ],
+    'view_helpers' => [
+        'invokables' => [
+            'contenu' => ContenuViewHelper::class,
+        ],
+    ],
+];
diff --git a/config/merged/index.config.php b/config/merged/index.config.php
index e18006d9929e8e2e7ce28d36bb6e456fdefd7263..52b43f4205a9766864959093ddb3444cf421d9ed 100755
--- a/config/merged/index.config.php
+++ b/config/merged/index.config.php
@@ -2,8 +2,9 @@
 
 use UnicaenRenderer\Controller\IndexController;
 use UnicaenRenderer\Controller\IndexControllerFactory;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
 use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
 use UnicaenPrivilege\Guard\PrivilegeController;
 use Zend\Router\Http\Literal;
 
@@ -17,8 +18,9 @@ return [
                         'index',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX,
+                        DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
                         DocumentmacroPrivileges::DOCUMENTMACRO_INDEX,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX
                     ],
                 ],
             ],
diff --git a/config/merged/template.config.php b/config/merged/template.config.php
index 091b90d1e0774eab01729b0e8a8772382ae6ea29..252ff0d4f543f9f468158e2e50cb56e2b08c72c0 100755
--- a/config/merged/template.config.php
+++ b/config/merged/template.config.php
@@ -6,7 +6,7 @@ use UnicaenRenderer\Form\Template\TemplateForm;
 use UnicaenRenderer\Form\Template\TemplateFormFactory;
 use UnicaenRenderer\Form\Template\TemplateHydrator;
 use UnicaenRenderer\Form\Template\TemplateHydratorFactory;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
 use UnicaenRenderer\Service\Template\TemplateService;
 use UnicaenRenderer\Service\Template\TemplateServiceFactory;
 use UnicaenPrivilege\Guard\PrivilegeController;
@@ -21,10 +21,18 @@ return [
                     'controller' => TemplateController::class,
                     'action' => [
                         'index',
+                    ],
+                    'privileges' => [
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX,
+                    ],
+                ],
+                [
+                    'controller' => TemplateController::class,
+                    'action' => [
                         'afficher',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AFFICHER,
                     ],
                 ],
                 [
@@ -33,7 +41,7 @@ return [
                         'ajouter',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AJOUTER,
                     ],
                 ],
                 [
@@ -42,7 +50,7 @@ return [
                         'modifier',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_MODIFIER,
                     ],
                 ],
                 [
@@ -52,7 +60,7 @@ return [
                         'restaurer',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_HISTORISER,
                     ],
                 ],
                 [
@@ -61,7 +69,7 @@ return [
                         'detruire',
                     ],
                     'privileges' => [
-                        DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER,
+                        DocumenttemplatePrivileges::DOCUMENTTEMPLATE_SUPPRIMER,
                     ],
                 ],
             ],
@@ -76,7 +84,7 @@ return [
                         'pages' => [
                             'contenu' => [
                                 'pages' => [
-                                    'contenu' => [
+                                    'template' => [
                                         'label' => 'Template',
                                         'route' => 'contenu/template',
                                         'resource' => PrivilegeController::getResourceId(TemplateController::class, 'index'),
@@ -95,7 +103,7 @@ return [
         'routes' => [
             'contenu' => [
                 'child_routes' => [
-                    'contenu' => [
+                    'template' => [
                         'type' => Literal::class,
                         'options' => [
                             'route' => '/template',
diff --git a/src/UnicaenRenderer/Controller/ContenuController.php b/src/UnicaenRenderer/Controller/ContenuController.php
new file mode 100644
index 0000000000000000000000000000000000000000..dff0292fb0116200d5c3b65e69c87512d4bc70fa
--- /dev/null
+++ b/src/UnicaenRenderer/Controller/ContenuController.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace UnicaenRenderer\Controller;
+
+use UnicaenRenderer\Service\Contenu\ContenuServiceAwareTrait;
+use Zend\Http\Request;
+use Zend\Mvc\Controller\AbstractActionController;
+use Zend\View\Model\ViewModel;
+
+class ContenuController extends AbstractActionController {
+    use ContenuServiceAwareTrait;
+
+    public function indexAction()
+    {
+       $contenus = $this->getContenuService()->getContenus();
+
+       return new ViewModel([
+           'contenus' => $contenus,
+       ]);
+    }
+
+    public function afficherAction()
+    {
+        $contenu = $this->getContenuService()->getRequestedContenu($this);
+
+        return new ViewModel([
+            'title' => "Affichage du contenu #" . $contenu->getId(),
+            'contenu' => $contenu,
+        ]);
+    }
+
+    public function supprimerAction()
+    {
+        $contenu = $this->getContenuService()->getRequestedContenu($this);
+
+        /** @var Request $request */
+        $request = $this->getRequest();
+        if ($request->isPost()) {
+            $data = $request->getPost();
+            if ($data["reponse"] === "oui") {
+                $this->getContenuService()->delete($contenu);
+            }
+            exit();
+        }
+
+        $vm = new ViewModel();
+        if ($contenu !== null) {
+            $vm->setTemplate('unicaen-renderer/default/confirmation');
+            $vm->setVariables([
+                'title' => "Suppression du contenu [" . $contenu->getId() . "]",
+                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
+                'action' => $this->url()->fromRoute('contenu/contenu/supprimer', ["contenu" => $contenu->getId()], [], true),
+            ]);
+        }
+        return $vm;
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Controller/ContenuControllerFactory.php b/src/UnicaenRenderer/Controller/ContenuControllerFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..d1166a3ac7f9003f1546d094b4cf67848f3f77e4
--- /dev/null
+++ b/src/UnicaenRenderer/Controller/ContenuControllerFactory.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace UnicaenRenderer\Controller;
+
+use Interop\Container\ContainerInterface;
+use UnicaenRenderer\Service\Contenu\ContenuService;
+
+class ContenuControllerFactory {
+
+    public function __invoke(ContainerInterface $container)
+    {
+        /**
+         * @var ContenuService $contenuService
+         */
+        $contenuService = $container->get(ContenuService::class);
+
+        $controller = new ContenuController();
+        $controller->setContenuService($contenuService);
+        return $controller;
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Contenu.php b/src/UnicaenRenderer/Entity/Db/Contenu.php
new file mode 100644
index 0000000000000000000000000000000000000000..10d4bd12a50577c6bc7bc99a630b6251daf33dbb
--- /dev/null
+++ b/src/UnicaenRenderer/Entity/Db/Contenu.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace UnicaenRenderer\Entity\Db;
+
+use DateTime;
+use Zend\Permissions\Acl\Resource\ResourceInterface;
+
+class Contenu implements ResourceInterface
+{
+    const RESOURCE_ID = 'Contenu';
+
+    /**
+     * @return string
+     */
+    public function getResourceId()
+    {
+        return self::RESOURCE_ID;
+    }
+
+    /** @var int */
+    private $id;
+    /** @var Template */
+    private $template;
+    /** @var DateTime */
+    private $date;
+    /** @var string */
+    private $sujet;
+    /** @var string */
+    private $corps;
+
+    /**
+     * @return int
+     */
+    public function getId(): int
+    {
+        return $this->id;
+    }
+
+    /**
+     * @return Template
+     */
+    public function getTemplate(): Template
+    {
+        return $this->template;
+    }
+
+    /**
+     * @param Template $template
+     * @return Contenu
+     */
+    public function setTemplate(Template $template): Contenu
+    {
+        $this->template = $template;
+        return $this;
+    }
+
+    /**
+     * @return DateTime
+     */
+    public function getDate(): DateTime
+    {
+        return $this->date;
+    }
+
+    /**
+     * @param DateTime $date
+     * @return Contenu
+     */
+    public function setDate(DateTime $date): Contenu
+    {
+        $this->date = $date;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getSujet(): string
+    {
+        return $this->sujet;
+    }
+
+    /**
+     * @param string $sujet
+     * @return Contenu
+     */
+    public function setSujet(string $sujet): Contenu
+    {
+        $this->sujet = $sujet;
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getCorps(): string
+    {
+        return $this->corps;
+    }
+
+    /**
+     * @param string $corps
+     * @return Contenu
+     */
+    public function setCorps(string $corps): Contenu
+    {
+        $this->corps = $corps;
+        return $this;
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Macro.php b/src/UnicaenRenderer/Entity/Db/Macro.php
index 03875cc71dc682665603efcf4e70d7ff6b636eb6..c83bd1e40abd50ace1c52211a324372bc9e9b301 100755
--- a/src/UnicaenRenderer/Entity/Db/Macro.php
+++ b/src/UnicaenRenderer/Entity/Db/Macro.php
@@ -11,9 +11,8 @@ class Macro implements HistoriqueAwareInterface , ResourceInterface
     use HistoriqueAwareTrait;
 
     const RESOURCE_ID = 'Macro';
+
     /**
-     * Returns the string identifier of the Resource
-     *
      * @return string
      */
     public function getResourceId()
diff --git a/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml
new file mode 100755
index 0000000000000000000000000000000000000000..6a7eebd34b68f5d788e89cd6742fbadd97364db0
--- /dev/null
+++ b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
+    <entity name="UnicaenRenderer\Entity\Db\Contenu" table="unicaen_renderer_contenu">
+
+        <id name="id"                   column="id"                 type="integer">
+            <generator strategy="IDENTITY"/>
+        </id>
+
+        <many-to-one target-entity="UnicaenRenderer\Entity\Db\Template"  field="template">
+            <join-column name="template_id" referenced-column-name="id"/>
+        </many-to-one>
+        <field name="date"              column="date_generation"        type="datetime"                   nullable="false"/>
+        <field name="sujet"             column="sujet"                  type="string"    length="9999"    nullable="false" />
+        <field name="corps"             column="corps"                  type="string"    length="9999"    nullable="false" />
+
+    </entity>
+</doctrine-mapping>
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Template.php b/src/UnicaenRenderer/Entity/Db/Template.php
index 9d2d89a7704d0330e6c7a5c8c88af9125121730e..60eb8bf4126ff2cae3e5e8dec7d50fce2e39744e 100755
--- a/src/UnicaenRenderer/Entity/Db/Template.php
+++ b/src/UnicaenRenderer/Entity/Db/Template.php
@@ -11,9 +11,8 @@ class Template implements HistoriqueAwareInterface, ResourceInterface
     use HistoriqueAwareTrait;
 
     const RESOURCE_ID = 'Template';
+
     /**
-     * Returns the string identifier of the Resource
-     *
      * @return string
      */
     public function getResourceId()
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php
deleted file mode 100755
index 545b32a41bb0af58a82d64be6e25d1d45ca2cb62..0000000000000000000000000000000000000000
--- a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace UnicaenRenderer\Provider\Privilege;
-
-use UnicaenPrivilege\Entity\Db\Privilege;
-use UnicaenPrivilege\Provider\Privilege\Privileges;
-
-class DocumentcontentPrivileges extends Privileges
-{
-    public static function getResourceId( $privilege )
-    {
-        if ($privilege instanceof Privilege){
-            $privilege = $privilege->getFullCode();
-        }
-        return 'privilege/'.$privilege;
-    }
-
-    const DOCUMENTCONTENU_INDEX = 'documentcontent-documentcontenu_index';
-    const DOCUMENTCONTENU_AJOUTER = 'documentcontent-documentcontenu_ajouter';
-    const DOCUMENTCONTENU_MODIFIER = 'documentcontent-documentcontenu_modifier';
-    const DOCUMENTCONTENU_HISTORISER = 'documentcontent-documentcontenu_historiser';
-    const DOCUMENTCONTENU_SUPPRIMER = 'documentcontent-documentcontenu_supprimer';
-}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php
new file mode 100755
index 0000000000000000000000000000000000000000..7431caac223d5945ed3cf0d48e2bf045dbd47bd4
--- /dev/null
+++ b/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace UnicaenRenderer\Provider\Privilege;
+
+use UnicaenPrivilege\Entity\Db\Privilege;
+use UnicaenPrivilege\Provider\Privilege\Privileges;
+
+class DocumentcontenuPrivileges extends Privileges
+{
+    const DOCUMENTCONTENU_INDEX         = 'documentcontenu-documentcontenu_index';
+    const DOCUMENTCONTENU_AFFICHER      = 'documentcontenu-documentcontenu_afficher';
+    const DOCUMENTCONTENU_SUPPRIMER     = 'documentcontenu-documentcontenu_supprimer';
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php
new file mode 100644
index 0000000000000000000000000000000000000000..9467728cf9bfa3597638016d6dbd4a1b4f364366
--- /dev/null
+++ b/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace UnicaenRenderer\Provider\Privilege;
+
+use UnicaenPrivilege\Entity\Db\Privilege;
+use UnicaenPrivilege\Provider\Privilege\Privileges;
+
+class DocumenttemplatePrivileges extends Privileges
+{
+    const DOCUMENTTEMPLATE_INDEX        = 'documentcontent-documenttemplate_index';
+    const DOCUMENTTEMPLATE_AJOUTER      = 'documentcontent-documenttemplate_ajouter';
+    const DOCUMENTTEMPLATE_AFFICHER     = 'documentcontent-documenttemplate_afficher';
+    const DOCUMENTTEMPLATE_MODIFIER     = 'documentcontent-documenttemplate_modifier';
+    const DOCUMENTTEMPLATE_HISTORISER   = 'documentcontent-documenttemplate_historiser';
+    const DOCUMENTTEMPLATE_SUPPRIMER    = 'documentcontent-documenttemplate_supprimer';
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuService.php b/src/UnicaenRenderer/Service/Contenu/ContenuService.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f016c4c7db6d5924326bdc00cdb7865b25f3f17
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuService.php
@@ -0,0 +1,115 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+use Doctrine\ORM\NonUniqueResultException;
+use Doctrine\ORM\ORMException;
+use Doctrine\ORM\QueryBuilder;
+use UnicaenApp\Service\EntityManagerAwareTrait;
+use UnicaenRenderer\Entity\Db\Contenu;
+use Zend\Mvc\Controller\AbstractActionController;
+
+class ContenuService {
+    use EntityManagerAwareTrait;
+
+    /** Gestion des entités *******************************************************************************************/
+
+    /**
+     * @param Contenu $contenu
+     * @return Contenu
+     */
+    public function create(Contenu $contenu) : Contenu
+    {
+        try {
+            $this->getEntityManager()->persist($contenu);
+            $this->getEntityManager()->flush($contenu);
+        } catch (ORMException $e) {
+            throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+        }
+        return $contenu;
+    }
+
+    /**
+     * @param Contenu $contenu
+     * @return Contenu
+     */
+    public function update(Contenu $contenu) : Contenu
+    {
+        try {
+            $this->getEntityManager()->flush($contenu);
+        } catch (ORMException $e) {
+            throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+        }
+        return $contenu;
+    }
+
+    /**
+     * @param Contenu $contenu
+     * @return Contenu
+     */
+    public function delete(Contenu $contenu) : Contenu
+    {
+        try {
+            $this->getEntityManager()->remove($contenu);
+            $this->getEntityManager()->flush($contenu);
+        } catch (ORMException $e) {
+            throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+        }
+        return $contenu;
+    }
+
+    /** Requetages ****************************************************************************************************/
+
+    /**
+     * @return QueryBuilder
+     */
+    public function createQueryBuilder() : QueryBuilder
+    {
+        $qb = $this->getEntityManager()->getRepository(Contenu::class)->createQueryBuilder('contenu')
+            ->leftJoin('contenu.template', 'template')->addSelect('template');
+        return $qb;
+    }
+
+    /**
+     * @param string $champ
+     * @param string $ordre
+     * @return Contenu[]
+     */
+    public function getContenus(string $champ = 'date', string $ordre = 'ASC') : array
+    {
+        $qb = $this->createQueryBuilder()
+            ->orderBy('contenu.' . $champ, $ordre);
+        $result = $qb->getQuery()->getResult();
+        return $result;
+    }
+
+    /**
+     * @param int $id
+     * @return Contenu|null
+     */
+    public function getContenu(int $id) : ?Contenu
+    {
+        $qb = $this->createQueryBuilder()
+            ->andWhere('contenu.id = :id')
+            ->setParameter('id', $id);
+        try {
+            $result = $qb->getQuery()->getOneOrNullResult();
+        } catch (NonUniqueResultException $e) {
+            throw new RuntimeException("Plusieurs Sursis partagent le même id [".$id."]",0,$e);
+        }
+
+        return $result;
+    }
+
+    /**
+     * @param AbstractActionController $controller
+     * @param string $param
+     * @return Contenu|null
+     */
+    public function getRequestedContenu(AbstractActionController $controller, string $param='contenu') : ?Contenu
+    {
+        $id = $controller->params()->fromRoute($param);
+        $result = $this->getContenu($id);
+        return $result;
+    }
+}
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php b/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f9c1eeab1cffd12049d3eaf7aaf30257f71feeb
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+trait ContenuServiceAwareTrait {
+
+    /** @var ContenuService */
+    private $contenuService;
+
+    /**
+     * @return ContenuService
+     */
+    public function getContenuService(): ContenuService
+    {
+        return $this->contenuService;
+    }
+
+    /**
+     * @param ContenuService $contenuService
+     * @return ContenuService
+     */
+    public function setContenuService(ContenuService $contenuService): ContenuService
+    {
+        $this->contenuService = $contenuService;
+        return $this->contenuService;
+    }
+
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php b/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..67fc1cde166e489af910e308e1ffd4cb38753882
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+use Doctrine\ORM\EntityManager;
+use Interop\Container\ContainerInterface;
+
+class ContenuServiceFactory {
+
+    /**
+     * @param ContainerInterface $container
+     * @return ContenuService
+     */
+    public function __invoke(ContainerInterface $container) : ContenuService
+    {
+        /**
+         * @var EntityManager $entityManager
+         */
+        $entityManager = $container->get('doctrine.entitymanager.orm_default');
+
+        $service = new ContenuService();
+        $service->setEntityManager($entityManager);
+        return $service;
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php b/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..e6ed2151fa6b0281a33968fdf8207f1cf939d8bb
--- /dev/null
+++ b/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace UnicaenRenderer\View\Helper;
+
+use Application\View\Renderer\PhpRenderer;
+use UnicaenRenderer\Entity\Db\Contenu;
+use Zend\View\Helper\AbstractHelper;
+use Zend\View\Helper\Partial;
+use Zend\View\Resolver\TemplatePathStack;
+
+class ContenuViewHelper extends AbstractHelper
+{
+    /**
+     * @param Contenu $contenu
+     * @param array $options
+     * @return string|Partial
+     */
+    public function __invoke(Contenu $contenu, array $options = [])
+    {
+        /** @var PhpRenderer $view */
+        $view = $this->getView();
+        $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]]));
+
+        return $view->partial('contenu', ['contenu' => $contenu, 'options' => $options]);
+    }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/View/Helper/partial/contenu.phtml b/src/UnicaenRenderer/View/Helper/partial/contenu.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..ba98bb308913764a07ae25f2f39d2ab84d634f8f
--- /dev/null
+++ b/src/UnicaenRenderer/View/Helper/partial/contenu.phtml
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @see \UnicaenRenderer\View\Helper\ContenuViewHelper
+ * @var Contenu $contenu
+ * @var array $options
+ */
+
+use UnicaenRenderer\Entity\Db\Contenu;
+
+?>
+
+<div class="row">
+    <div class="col-md-4">
+        <dl>
+            <dt> Identifiant </dt>
+            <dd>
+                <?php echo $contenu->getId(); ?>
+            </dd>
+            <dt> Template </dt>
+            <dd>
+                <?php if ($contenu->getTemplate()) : ?>
+                    <?php echo $contenu->getTemplate()->getCode(); ?>
+                <?php else: ?>
+                    <i>Aucun template associé</i>
+                <?php endif; ?>
+            </dd>
+            <dt> Date de génération </dt>
+            <dd>
+                <?php echo $contenu->getDate()->format('d/m/Y'); ?>
+            </dd>
+        </dl>
+    </div>
+    <div class="col-md-8">
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <?php echo $contenu->getSujet(); ?>
+            </div>
+            <div class="panel-body">
+                <?php echo $contenu->getCorps(); ?>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/view/unicaen-renderer/contenu/afficher.phtml b/view/unicaen-renderer/contenu/afficher.phtml
old mode 100755
new mode 100644
index 6e8cf5453923fe8518554177f9ad3d7cf14e5e4d..1e9096fd199681778e11f65f5c726da018f7241a
--- a/view/unicaen-renderer/contenu/afficher.phtml
+++ b/view/unicaen-renderer/contenu/afficher.phtml
@@ -1,34 +1,14 @@
 <?php
 
-use UnicaenRenderer\Entity\Db\Content;
+use UnicaenRenderer\Entity\Db\Contenu;
 
 /**
  * @see \UnicaenRenderer\Controller\ContenuController::afficherAction()
- * @var Content $contenu
+ * @var Contenu $contenu
  */
 
+$this->headTitle("Affichage du contenu #" . $contenu->getId());
+
 ?>
 
-<dl class="dl-horizontal">
-    <dt> Code </dt>
-    <dd> <?php echo $contenu->getCode(); ?> </dd>
-    <dt> Type </dt>
-    <dd> <?php echo $contenu->getType(); ?> </dd>
-    <?php if ($contenu->getDescription()) : ?>
-        <dt> Description </dt>
-        <dd> <br/>
-            <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
-                <?php echo $contenu->getDescription(); ?> </div>
-        </dd>
-    <?php endif; ?>
-    <dt> Complément </dt>
-    <dd> <br/>
-        <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
-            <?php echo $contenu->getComplement(); ?> </div>
-    </dd>
-    <dt> Contenu </dt>
-    <dd> <br/>
-        <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
-            <?php echo $contenu->getContent(); ?> </div>
-    </dd>
-</dl>
+<?php echo $this->contenu($contenu); ?>
diff --git a/view/unicaen-renderer/contenu/index.phtml b/view/unicaen-renderer/contenu/index.phtml
old mode 100755
new mode 100644
index f5829bdae036efc04c1387a8e65e622f500a64fd..7b9480f5c538608d5222e35d6d2f6373d7395311
--- a/view/unicaen-renderer/contenu/index.phtml
+++ b/view/unicaen-renderer/contenu/index.phtml
@@ -1,88 +1,73 @@
 <?php
 
+use UnicaenRenderer\Entity\Db\Contenu;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+
 /**
  * @see \UnicaenRenderer\Controller\ContenuController::indexAction()
- * @var Content[] $contenus
+ * @var Contenu[] $contenus
  */
 
-use UnicaenRenderer\Entity\Db\Content;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
-
-$canAjouter    = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER));
-$canAfficher   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX));
-$canModifier   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER));
-$canHistoriser = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER));
-$canDetruire   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER));
-$this->isAllowed(null, DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER);
-
 $this->headTitle("Index des contenus");
+
+$canVoir = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_AFFICHER));
+$canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_SUPPRIMER));
 ?>
 
 <h1 class="page-header">
     Index des contenus
+    <span class="badge"><?php echo count($contenus); ?> </span>
 </h1>
 
-<?php if ($canAjouter) : ?>
-    <a href="<?php echo $this->url('contenu/contenu/ajouter', [], [], true); ?>"
-       class="btn btn-primary action ajax-modal" data-event="modification">
-        <span class="icon ajouter"></span>
-        Ajouter un contenu
-    </a>
-<?php endif; ?>
-
-<table class="table table-condensed">
+<table class="table table-condensed table-hover">
     <thead>
         <tr>
-            <th> Code </th>
-            <th> Type </th>
-            <th> Action</th>
+            <th> Id </th>
+            <th> Template </th>
+            <th> Date de génération </th>
+            <th> Sujet </th>
+            <th> Action </th>
         </tr>
     </thead>
     <tbody>
-        <?php foreach ($contenus as $contenu) : ?>
-            <tr class="<?php if ($contenu->estHistorise()) echo 'historise '; ?>">
-                <td>
-                    <?php echo $contenu->getCode(); ?>
-                    <?php if ($contenu->getDescription() !== null) : ?>
-                        <span class="icon information" title="<?php echo $contenu->getDescription(); ?>" data-toggle="tooltip" data-html="true"></span>
-                    <?php endif; ?>
-                </td>
-                <td>
-                    <span class="icon <?php echo $contenu->getType(); ?>"></span>
-                </td>
-                <td>
-                    <?php if ($canAfficher) : ?>
-                        <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
-                           class="ajax-modal"
-                        >
-                            <span class="icon voir"></span></a>
-                    <?php endif; ?>
-                    <?php if ($canModifier) : ?>
-                        <a href="<?php echo $this->url('contenu/contenu/modifier', ['contenu' => $contenu->getId()], [], true); ?>"
-                           class="ajax-modal" data-event="modification"
-                        >
-                            <span class="icon editer"></span></a>
-                    <?php endif; ?>
-                    <?php if ($canHistoriser) : ?>
-                        <?php if ($contenu->estNonHistorise()) : ?>
-                            <a href="<?php echo $this->url('contenu/contenu/historiser', ['contenu' => $contenu->getId()], [], true); ?>"
-                            >
-                                <span class="icon historiser"></span></a>
-                        <?php else : ?>
-                            <a href="<?php echo $this->url('contenu/contenu/restaurer', ['contenu' => $contenu->getId()], [], true); ?>"
-                            >
-                                <span class="icon restaurer"></span></a>
-                        <?php endif; ?>
-                    <?php endif; ?>
-                    <?php if ($canDetruire) : ?>
-                        <a href="<?php echo $this->url('contenu/contenu/detruire', ['contenu' => $contenu->getId()], [], true); ?>"
-                           class="ajax-modal" data-event="modification"
-                        >
-                            <span class="icon detruire"></span></a>
-                    <?php endif; ?>
-                </td>
-            </tr>
-        <?php endforeach; ?>
+    <?php foreach ($contenus as $contenu) : ?>
+        <tr>
+            <td>  <?php echo $contenu->getId(); ?> </td>
+            <td>
+                <?php if ($contenu->getTemplate()) : ?>
+                    <?php echo $contenu->getTemplate()->getCode(); ?>
+                <?php endif; ?>
+            </td>
+            <td> <?php echo $contenu->getDate()->format('d/m/Y à H:i:s'); ?> </td>
+            <td>
+                <span title="<?php echo $contenu->getSujet(); ?>" data-toggle="tooltip" data-html="true">
+                <?php
+                    $sujet = $contenu->getSujet();
+                    if (strlen($sujet) > 50) $sujet = substr($contenu->getSujet(), 0, 46) . " ...";
+                    echo $sujet;
+                ?>
+                </span>
+            </td>
+            <td>
+                <?php if ($canVoir) : ?>
+                    <?php /** @see \UnicaenRenderer\Controller\ContenuController::afficherAction() */?>
+                    <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
+                       title="Afficher le contenu" data-toggle="tooltip" data-html="true"
+                       class="ajax-modal"
+                    >
+                        <span class="icon voir"></span></a>
+                <?php endif; ?>
+                <?php if ($canSupprimer) : ?>
+                    <?php /** @see \UnicaenRenderer\Controller\ContenuController::supprimerAction() */?>
+                    <a href="<?php echo $this->url('contenu/contenu/supprimer', ['contenu' => $contenu->getId()], [], true); ?>"
+                       title="Afficher le contenu" data-toggle="tooltip" data-html="true"
+                       class="ajax-modal" data-event="modification"
+                    >
+                        <span class="icon detruire"></span></a>
+                <?php endif; ?>
+            </td>
+        </tr>
+    <?php endforeach; ?>
     </tbody>
 </table>
 
diff --git a/view/unicaen-renderer/index/index.phtml b/view/unicaen-renderer/index/index.phtml
index 043efd70e640283a761e998a1536163092e2d01d..75cb5a4dd00ff37e1478acc4b1ec86e078b9ad39 100755
--- a/view/unicaen-renderer/index/index.phtml
+++ b/view/unicaen-renderer/index/index.phtml
@@ -1,10 +1,19 @@
 <?php
 
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
+
 /**
  * @see \UnicaenRenderer\Controller\IndexController::indexAction()
  */
 
 $this->headTitle("Index des modules de gestion des contenus");
+
+$canContenu = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX));
+$canMacro = $this->isAllowed(DocumentmacroPrivileges::getResourceId(DocumentmacroPrivileges::DOCUMENTMACRO_INDEX));
+$canTemplate = $this->isAllowed(DocumenttemplatePrivileges::getResourceId(DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX));
+
 ?>
 
 <h1 class="page-header">
@@ -15,6 +24,7 @@ $this->headTitle("Index des modules de gestion des contenus");
     Ce module permet de gérer un ensemble de contenus utilisables en tant que chaîne de caractères insérables (texte ou pdf).
 </p>
 
+<?php if ($canMacro) : ?>
     <h2> Gestion des macros </h2>
 
     <div class="row">
@@ -30,13 +40,34 @@ $this->headTitle("Index des modules de gestion des contenus");
             </a>
         </div>
     </div>
+<?php endif; ?>
+
+<?php if ($canTemplate) : ?>
+    <h2> Gestion des templates </h2>
+
+    <div class="row">
+        <div class="col-md-8">
+            <p>
+                Listing des templates et modification de ceux-ci.
+            </p>
+        </div>
+        <div class="pull-right">
+            <a href="<?php echo $this->url('contenu/template'); ?>" class="btn btn-primary action">
+                <span class="icon index"></span>
+                Gestion des templates
+            </a>
+        </div>
+    </div>
+<?php endif; ?>
+
 
+<?php if ($canContenu) : ?>
     <h2> Gestion des contenus </h2>
 
     <div class="row">
         <div class="col-md-8">
             <p>
-                Listing des contenus et modification de ceux-ci.
+                Listing des contenus.
             </p>
         </div>
         <div class="pull-right">
@@ -46,3 +77,4 @@ $this->headTitle("Index des modules de gestion des contenus");
             </a>
         </div>
     </div>
+<?php endif; ?>
\ No newline at end of file
diff --git a/view/unicaen-renderer/template/afficher.phtml b/view/unicaen-renderer/template/afficher.phtml
new file mode 100755
index 0000000000000000000000000000000000000000..6e8cf5453923fe8518554177f9ad3d7cf14e5e4d
--- /dev/null
+++ b/view/unicaen-renderer/template/afficher.phtml
@@ -0,0 +1,34 @@
+<?php
+
+use UnicaenRenderer\Entity\Db\Content;
+
+/**
+ * @see \UnicaenRenderer\Controller\ContenuController::afficherAction()
+ * @var Content $contenu
+ */
+
+?>
+
+<dl class="dl-horizontal">
+    <dt> Code </dt>
+    <dd> <?php echo $contenu->getCode(); ?> </dd>
+    <dt> Type </dt>
+    <dd> <?php echo $contenu->getType(); ?> </dd>
+    <?php if ($contenu->getDescription()) : ?>
+        <dt> Description </dt>
+        <dd> <br/>
+            <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+                <?php echo $contenu->getDescription(); ?> </div>
+        </dd>
+    <?php endif; ?>
+    <dt> Complément </dt>
+    <dd> <br/>
+        <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+            <?php echo $contenu->getComplement(); ?> </div>
+    </dd>
+    <dt> Contenu </dt>
+    <dd> <br/>
+        <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+            <?php echo $contenu->getContent(); ?> </div>
+    </dd>
+</dl>
diff --git a/view/unicaen-renderer/template/index.phtml b/view/unicaen-renderer/template/index.phtml
new file mode 100755
index 0000000000000000000000000000000000000000..f5829bdae036efc04c1387a8e65e622f500a64fd
--- /dev/null
+++ b/view/unicaen-renderer/template/index.phtml
@@ -0,0 +1,96 @@
+<?php
+
+/**
+ * @see \UnicaenRenderer\Controller\ContenuController::indexAction()
+ * @var Content[] $contenus
+ */
+
+use UnicaenRenderer\Entity\Db\Content;
+use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+
+$canAjouter    = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER));
+$canAfficher   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX));
+$canModifier   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER));
+$canHistoriser = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER));
+$canDetruire   = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER));
+$this->isAllowed(null, DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER);
+
+$this->headTitle("Index des contenus");
+?>
+
+<h1 class="page-header">
+    Index des contenus
+</h1>
+
+<?php if ($canAjouter) : ?>
+    <a href="<?php echo $this->url('contenu/contenu/ajouter', [], [], true); ?>"
+       class="btn btn-primary action ajax-modal" data-event="modification">
+        <span class="icon ajouter"></span>
+        Ajouter un contenu
+    </a>
+<?php endif; ?>
+
+<table class="table table-condensed">
+    <thead>
+        <tr>
+            <th> Code </th>
+            <th> Type </th>
+            <th> Action</th>
+        </tr>
+    </thead>
+    <tbody>
+        <?php foreach ($contenus as $contenu) : ?>
+            <tr class="<?php if ($contenu->estHistorise()) echo 'historise '; ?>">
+                <td>
+                    <?php echo $contenu->getCode(); ?>
+                    <?php if ($contenu->getDescription() !== null) : ?>
+                        <span class="icon information" title="<?php echo $contenu->getDescription(); ?>" data-toggle="tooltip" data-html="true"></span>
+                    <?php endif; ?>
+                </td>
+                <td>
+                    <span class="icon <?php echo $contenu->getType(); ?>"></span>
+                </td>
+                <td>
+                    <?php if ($canAfficher) : ?>
+                        <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
+                           class="ajax-modal"
+                        >
+                            <span class="icon voir"></span></a>
+                    <?php endif; ?>
+                    <?php if ($canModifier) : ?>
+                        <a href="<?php echo $this->url('contenu/contenu/modifier', ['contenu' => $contenu->getId()], [], true); ?>"
+                           class="ajax-modal" data-event="modification"
+                        >
+                            <span class="icon editer"></span></a>
+                    <?php endif; ?>
+                    <?php if ($canHistoriser) : ?>
+                        <?php if ($contenu->estNonHistorise()) : ?>
+                            <a href="<?php echo $this->url('contenu/contenu/historiser', ['contenu' => $contenu->getId()], [], true); ?>"
+                            >
+                                <span class="icon historiser"></span></a>
+                        <?php else : ?>
+                            <a href="<?php echo $this->url('contenu/contenu/restaurer', ['contenu' => $contenu->getId()], [], true); ?>"
+                            >
+                                <span class="icon restaurer"></span></a>
+                        <?php endif; ?>
+                    <?php endif; ?>
+                    <?php if ($canDetruire) : ?>
+                        <a href="<?php echo $this->url('contenu/contenu/detruire', ['contenu' => $contenu->getId()], [], true); ?>"
+                           class="ajax-modal" data-event="modification"
+                        >
+                            <span class="icon detruire"></span></a>
+                    <?php endif; ?>
+                </td>
+            </tr>
+        <?php endforeach; ?>
+    </tbody>
+</table>
+
+<script>
+    $(function() {
+        $("body").on("modification", function (event) {
+            event.div.modal('hide');
+            window.location.reload();
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/view/unicaen-renderer/contenu/modifier.phtml b/view/unicaen-renderer/template/modifier.phtml
similarity index 100%
rename from view/unicaen-renderer/contenu/modifier.phtml
rename to view/unicaen-renderer/template/modifier.phtml