diff --git a/Module.php b/Module.php
index 499d16aee810cfc49e8c4738bbbab301617bbeb5..7915efa591febbbb9ec8146337d79f21a7f957d2 100644
--- a/Module.php
+++ b/Module.php
@@ -3,11 +3,11 @@
 
 namespace UnicaenPrivilege;
 
-use Zend\Mvc\ModuleRouteListener;
-use Zend\Mvc\MvcEvent;
-use Zend\Stdlib\ArrayUtils;
-use Zend\Stdlib\Glob;
-use Zend\Config\Factory as ConfigFactory;
+use Laminas\Mvc\ModuleRouteListener;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Stdlib\ArrayUtils;
+use Laminas\Stdlib\Glob;
+use Laminas\Config\Factory as ConfigFactory;
 
 class Module
 {
@@ -19,7 +19,7 @@ class Module
         $moduleRouteListener->attach($eventManager);
 
         /* Active un layout spécial si la requête est de type AJAX. Valable pour TOUS les modules de l'application. */
-        $eventManager->getSharedManager()->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch',
+        $eventManager->getSharedManager()->attach('Laminas\Mvc\Controller\AbstractActionController', 'dispatch',
             function (MvcEvent $e) {
                 $request = $e->getRequest();
                 if ($request instanceof HttpRequest && $request->isXmlHttpRequest()) {
@@ -47,7 +47,7 @@ class Module
     public function getAutoloaderConfig()
     {
         return array(
-            'Zend\Loader\StandardAutoloader' => array(
+            'Laminas\Loader\StandardAutoloader' => array(
                 'namespaces' => array(
                     __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                 ),
diff --git a/composer.json b/composer.json
index bca5d820f3b9f2504d16c00380e8fc2fac6d8374..99939483ef8c07979732226d9b581caf82b00bff 100644
--- a/composer.json
+++ b/composer.json
@@ -1,24 +1,25 @@
 {
-  "name": "unicaen/privilege",
-  "description": "Module reprenant la gestion des privileges",
-  "repositories": [
-    {
-      "type": "composer",
-      "url": "https://gest.unicaen.fr/packagist"
-    }
-  ],
-  "require": {
-    "unicaen/app": "^3.0"
-  },
-  "require-dev": {
-    "phpunit/phpunit": ">=3.7"
-  },
-  "autoload": {
-    "psr-0": {
-      "UnicaenPrivilege": "src/"
+    "name": "unicaen/privilege",
+    "description": "Module reprenant la gestion des privileges",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "https://gest.unicaen.fr/packagist"
+        }
+    ],
+    "require": {
+        "unicaen/app": "^4.0.3",
+        "laminas/laminas-dependency-plugin": "^2.1"
+    },
+    "require-dev": {
+        "phpunit/phpunit": ">=3.7"
     },
-    "classmap": [
-      "./Module.php"
-    ]
-  }
+    "autoload": {
+        "psr-0": {
+            "UnicaenPrivilege": "src/"
+        },
+        "classmap": [
+            "./Module.php"
+        ]
+    }
 }
diff --git a/config/merged/privilege.config.php b/config/merged/privilege.config.php
index c5a70f8d224625f326586aab712522c264a44454..56a1515164e8c33cd0218a84eafd9495608526b1 100644
--- a/config/merged/privilege.config.php
+++ b/config/merged/privilege.config.php
@@ -18,8 +18,8 @@ use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceFactory;
 use UnicaenPrivilege\Service\Privilege\PrivilegeService;
 use UnicaenPrivilege\Service\Privilege\PrivilegeServiceFactory;
 use UnicaenPrivilege\View\Privilege\PrivilegeViewHelper;
-use Zend\Router\Http\Literal;
-use Zend\Router\Http\Segment;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
 
 return [
 
diff --git a/src/UnicaenPrivilege/Assertion/AbstractAssertion.php b/src/UnicaenPrivilege/Assertion/AbstractAssertion.php
index 1ef48b313964dd300967195a5db0246f9fb89ca5..732f1a2f68b08f8359b0b3fb43c61e20a38140c6 100644
--- a/src/UnicaenPrivilege/Assertion/AbstractAssertion.php
+++ b/src/UnicaenPrivilege/Assertion/AbstractAssertion.php
@@ -5,11 +5,11 @@ namespace UnicaenPrivilege\Assertion;
 use BjyAuthorize\Service\Authorize;
 use UnicaenAuthentification\Service\Traits\AuthorizeServiceAwareTrait;
 use UnicaenAuthentification\Service\Traits\UserContextServiceAwareTrait;
-use Zend\Mvc\MvcEvent;
-use Zend\Permissions\Acl\Acl;
-use Zend\Permissions\Acl\Assertion\AssertionInterface;
-use Zend\Permissions\Acl\Resource\ResourceInterface;
-use Zend\Permissions\Acl\Role\RoleInterface;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Permissions\Acl\Acl;
+use Laminas\Permissions\Acl\Assertion\AssertionInterface;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
+use Laminas\Permissions\Acl\Role\RoleInterface;
 
 /**
  * Description of AbstractAssertion
diff --git a/src/UnicaenPrivilege/Controller/PrivilegeCategorieController.php b/src/UnicaenPrivilege/Controller/PrivilegeCategorieController.php
index 5d2161d5d77fb1ef68eb55235e1a38765c9f601b..2bf88f12229f0d391c1d76f5c8631cae7416dc22 100644
--- a/src/UnicaenPrivilege/Controller/PrivilegeCategorieController.php
+++ b/src/UnicaenPrivilege/Controller/PrivilegeCategorieController.php
@@ -6,8 +6,8 @@ use UnicaenPrivilege\Form\Privilege\CategorieFiltreFormAwareTrait;
 use UnicaenPrivilege\Form\Privilege\CategorieFormAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class PrivilegeCategorieController extends AbstractActionController
 {
diff --git a/src/UnicaenPrivilege/Controller/PrivilegeController.php b/src/UnicaenPrivilege/Controller/PrivilegeController.php
index f159b974f99e910f565eec19b18b0ae474e2dd2b..04e3a60d54a8c28f5f4a9e47e9cc763fc973878f 100644
--- a/src/UnicaenPrivilege/Controller/PrivilegeController.php
+++ b/src/UnicaenPrivilege/Controller/PrivilegeController.php
@@ -7,8 +7,8 @@ use UnicaenPrivilege\Form\Privilege\PrivilegeFormAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
 use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class PrivilegeController extends AbstractActionController
 {
diff --git a/src/UnicaenPrivilege/Entity/Db/AbstractPrivilege.php b/src/UnicaenPrivilege/Entity/Db/AbstractPrivilege.php
index 82d131f55cae469fa97e75bf07b8fc0b67e672da..496df739c3e1994f3467ba27dd8d7bab567d10ca 100644
--- a/src/UnicaenPrivilege/Entity/Db/AbstractPrivilege.php
+++ b/src/UnicaenPrivilege/Entity/Db/AbstractPrivilege.php
@@ -6,7 +6,7 @@ use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
 use UnicaenPrivilege\Provider\Privilege\Privileges;
 use UnicaenUtilisateur\Entity\Db\RoleInterface;
-use Zend\Permissions\Acl\Resource\ResourceInterface;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 abstract class AbstractPrivilege implements PrivilegeInterface, ResourceInterface
 {
diff --git a/src/UnicaenPrivilege/Form/Privilege/CategorieFiltreForm.php b/src/UnicaenPrivilege/Form/Privilege/CategorieFiltreForm.php
index 3c55abc64a75fd10fd903bb3cf50f1ed6c444d4b..8c852ed71b0a531ed69debfc915613291d45c1e5 100644
--- a/src/UnicaenPrivilege/Form/Privilege/CategorieFiltreForm.php
+++ b/src/UnicaenPrivilege/Form/Privilege/CategorieFiltreForm.php
@@ -4,10 +4,10 @@ namespace UnicaenPrivilege\Form\Privilege;
 
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
-use Zend\Form\Element\Button;
-use Zend\Form\Element\Select;
-use Zend\Form\Form;
-use Zend\InputFilter\Factory;
+use Laminas\Form\Element\Button;
+use Laminas\Form\Element\Select;
+use Laminas\Form\Form;
+use Laminas\InputFilter\Factory;
 
 class CategorieFiltreForm extends Form
 {
diff --git a/src/UnicaenPrivilege/Form/Privilege/CategorieForm.php b/src/UnicaenPrivilege/Form/Privilege/CategorieForm.php
index 75257063b7eb90e5a869b00fae58ea33e4ccfbe2..4420fa3f79df68626193fc0fa98e636277859180 100644
--- a/src/UnicaenPrivilege/Form/Privilege/CategorieForm.php
+++ b/src/UnicaenPrivilege/Form/Privilege/CategorieForm.php
@@ -4,14 +4,14 @@ namespace UnicaenPrivilege\Form\Privilege;
 
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
-use Zend\Form\Element\Button;
-use Zend\Form\Element\Number;
-use Zend\Form\Element\Text;
-use Zend\Form\Form;
-use Zend\InputFilter\Factory;
-use Zend\Validator\Callback;
-use Zend\Validator\NotEmpty;
-use Zend\Validator\Regex;
+use Laminas\Form\Element\Button;
+use Laminas\Form\Element\Number;
+use Laminas\Form\Element\Text;
+use Laminas\Form\Form;
+use Laminas\InputFilter\Factory;
+use Laminas\Validator\Callback;
+use Laminas\Validator\NotEmpty;
+use Laminas\Validator\Regex;
 
 class CategorieForm extends Form
 {
diff --git a/src/UnicaenPrivilege/Form/Privilege/CategorieFormFactory.php b/src/UnicaenPrivilege/Form/Privilege/CategorieFormFactory.php
index 96ff0217262026f9604becc01d3d61f43d43e0f8..bc48855d9101cbad376faa168d7d9eb6ceefb5f1 100644
--- a/src/UnicaenPrivilege/Form/Privilege/CategorieFormFactory.php
+++ b/src/UnicaenPrivilege/Form/Privilege/CategorieFormFactory.php
@@ -3,7 +3,7 @@
 namespace UnicaenPrivilege\Form\Privilege;
 
 use Doctrine\ORM\EntityManager;
-use DoctrineModule\Stdlib\Hydrator\DoctrineObject;
+use Doctrine\Laminas\Hydrator\DoctrineObject;
 use Interop\Container\ContainerInterface;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
 
diff --git a/src/UnicaenPrivilege/Form/Privilege/PrivilegeForm.php b/src/UnicaenPrivilege/Form/Privilege/PrivilegeForm.php
index 3cddaf9afaa771613578c304e11e800d1fd3c060..1b3b51bbae0d3e8ec5c664c85b6c17107b46a148 100644
--- a/src/UnicaenPrivilege/Form/Privilege/PrivilegeForm.php
+++ b/src/UnicaenPrivilege/Form/Privilege/PrivilegeForm.php
@@ -7,15 +7,15 @@ use DoctrineModule\Form\Element\ObjectSelect;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
 use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
-use Zend\Form\Element\Button;
-use Zend\Form\Element\Hidden;
-use Zend\Form\Element\Number;
-use Zend\Form\Element\Text;
-use Zend\Form\Form;
-use Zend\InputFilter\Factory;
-use Zend\Validator\Callback;
-use Zend\Validator\NotEmpty;
-use Zend\Validator\Regex;
+use Laminas\Form\Element\Button;
+use Laminas\Form\Element\Hidden;
+use Laminas\Form\Element\Number;
+use Laminas\Form\Element\Text;
+use Laminas\Form\Form;
+use Laminas\InputFilter\Factory;
+use Laminas\Validator\Callback;
+use Laminas\Validator\NotEmpty;
+use Laminas\Validator\Regex;
 
 class PrivilegeForm extends Form
 {
diff --git a/src/UnicaenPrivilege/Form/Privilege/PrivilegeFormFactory.php b/src/UnicaenPrivilege/Form/Privilege/PrivilegeFormFactory.php
index bb685fc6eff6145a6eeb5fa8184e6f21f417557c..b72e9704e3d2ae49800d43eb88ef412e4c8284fb 100644
--- a/src/UnicaenPrivilege/Form/Privilege/PrivilegeFormFactory.php
+++ b/src/UnicaenPrivilege/Form/Privilege/PrivilegeFormFactory.php
@@ -3,7 +3,7 @@
 namespace UnicaenPrivilege\Form\Privilege;
 
 use Doctrine\ORM\EntityManager;
-use DoctrineModule\Stdlib\Hydrator\DoctrineObject;
+use Doctrine\Laminas\Hydrator\DoctrineObject;
 use Interop\Container\ContainerInterface;
 use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
 use UnicaenPrivilege\Service\Privilege\PrivilegeService;
diff --git a/src/UnicaenPrivilege/Guard/PrivilegeRoute.php b/src/UnicaenPrivilege/Guard/PrivilegeRoute.php
index 27b7ef8df94c662ebd7702c5b2e7d72f3a15b3eb..b33452d54a88675182de1f0c762751b013a23a2b 100644
--- a/src/UnicaenPrivilege/Guard/PrivilegeRoute.php
+++ b/src/UnicaenPrivilege/Guard/PrivilegeRoute.php
@@ -3,7 +3,7 @@
 namespace UnicaenPrivilege\Guard;
 
 use BjyAuthorize\Guard\Route;
-use Zend\ServiceManager\ServiceLocatorInterface;
+use Laminas\ServiceManager\ServiceLocatorInterface;
 use UnicaenPrivilege\Provider\Privilege\PrivilegeProviderAwareTrait;
 use UnicaenApp\Traits\SessionContainerTrait;
 
diff --git a/src/UnicaenPrivilege/Provider/Rule/PrivilegeRuleProvider.php b/src/UnicaenPrivilege/Provider/Rule/PrivilegeRuleProvider.php
index cb0f51790f5416a01f4eb47e2e074ea35e038f66..c5eda3a7954648757d3be7737c88fa564ea8beba 100644
--- a/src/UnicaenPrivilege/Provider/Rule/PrivilegeRuleProvider.php
+++ b/src/UnicaenPrivilege/Provider/Rule/PrivilegeRuleProvider.php
@@ -5,7 +5,7 @@ namespace UnicaenPrivilege\Provider\Rule;
 use BjyAuthorize\Provider\Rule\ProviderInterface;
 use UnicaenPrivilege\Provider\Privilege\PrivilegeProviderAwareTrait;
 use UnicaenPrivilege\Provider\Privilege\Privileges;
-use Zend\ServiceManager\ServiceLocatorInterface;
+use Laminas\ServiceManager\ServiceLocatorInterface;
 
 /**
  * Rule provider based on a given array of rules
diff --git a/src/UnicaenPrivilege/Service/AuthorizeServiceFactory.php b/src/UnicaenPrivilege/Service/AuthorizeServiceFactory.php
index 0e38b4d819cca7ac835f3c5cb371541f34450bc0..665d18dfd6304c2b6c2d908b7f25af70851c760b 100644
--- a/src/UnicaenPrivilege/Service/AuthorizeServiceFactory.php
+++ b/src/UnicaenPrivilege/Service/AuthorizeServiceFactory.php
@@ -5,8 +5,8 @@ namespace UnicaenPrivilege\Service;
 use BjyAuthorize\Provider\Identity\ProviderInterface;
 use Interop\Container\ContainerInterface;
 use UnicaenAuthentification\Service\UserContext;
-use Zend\ServiceManager\FactoryInterface;
-use Zend\ServiceManager\ServiceLocatorInterface;
+use Laminas\ServiceManager\FactoryInterface;
+use Laminas\ServiceManager\ServiceLocatorInterface;
 
 /**
  * Factory responsible of building the {@see \BjyAuthorize\Service\Authorize} service
diff --git a/src/UnicaenPrivilege/Service/Privilege/PrivilegeCategorieService.php b/src/UnicaenPrivilege/Service/Privilege/PrivilegeCategorieService.php
index f5c36940ff61aa4cd6a8047a2197ad6d08389fad..5c75530a25e662ce4b53ae81a31405140e971e6f 100644
--- a/src/UnicaenPrivilege/Service/Privilege/PrivilegeCategorieService.php
+++ b/src/UnicaenPrivilege/Service/Privilege/PrivilegeCategorieService.php
@@ -6,7 +6,7 @@ use Doctrine\ORM\ORMException;
 use UnicaenApp\Exception\RuntimeException;
 use UnicaenPrivilege\Entity\Db\PrivilegeCategorieInterface;
 use UnicaenPrivilege\Service\CommonService;
-use Zend\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Controller\AbstractActionController;
 
 class PrivilegeCategorieService extends CommonService
 {
diff --git a/src/UnicaenPrivilege/Service/Privilege/PrivilegeService.php b/src/UnicaenPrivilege/Service/Privilege/PrivilegeService.php
index b6409a656020de47d930b6b8c1f44d7b1b1fb1cc..28e484b6ddbeda8fb6d1c7c2d8ff2b5d904b943e 100644
--- a/src/UnicaenPrivilege/Service/Privilege/PrivilegeService.php
+++ b/src/UnicaenPrivilege/Service/Privilege/PrivilegeService.php
@@ -13,7 +13,7 @@ use UnicaenPrivilege\Provider\Privilege\PrivilegeProviderInterface;
 use UnicaenPrivilege\Provider\Privilege\Privileges;
 use UnicaenPrivilege\Service\CommonService;
 use UnicaenUtilisateur\Entity\Db\RoleInterface;
-use Zend\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Controller\AbstractActionController;
 
 class PrivilegeService extends CommonService implements PrivilegeProviderInterface, ResourceProviderInterface
 {
diff --git a/src/UnicaenPrivilege/View/Privilege/PrivilegeViewHelper.php b/src/UnicaenPrivilege/View/Privilege/PrivilegeViewHelper.php
index 1ba461e13810e9f0412b4e8aaf2d9939048a0445..a429753dcbb059bf5a40820f526782cec426080e 100644
--- a/src/UnicaenPrivilege/View/Privilege/PrivilegeViewHelper.php
+++ b/src/UnicaenPrivilege/View/Privilege/PrivilegeViewHelper.php
@@ -8,7 +8,7 @@ use Application\Provider\Privilege\ProfilPrivileges;
 use UnicaenPrivilege\Entity\Db\PrivilegeInterface;
 use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
 use UnicaenUtilisateur\Entity\Db\RoleInterface;
-use Zend\View\Helper\AbstractHelper;
+use Laminas\View\Helper\AbstractHelper;
 
 class PrivilegeViewHelper extends AbstractHelper
 {