diff --git a/src/Controller/CapsuleController.php b/src/Controller/CapsuleController.php
index fa48abb70049e09252bf1897822f1be21ab0baeb..2efa2b74dc3baf094911b30a3d7053111e2e7543 100755
--- a/src/Controller/CapsuleController.php
+++ b/src/Controller/CapsuleController.php
@@ -39,10 +39,8 @@ class CapsuleController extends AbstractController
         $this->entity_manager = $entity_manager;
     }
 
-    /**
-     * @Route("/my_capsules", name="capsule_list")
-     * @Route("/", name="home")
-     */
+    #[Route('/my_capsules', name:'capsule_list')]
+    #[Route('/', name:'home')]
     public function index(
         PaginatorInterface $paginator,
         Request $request
@@ -86,9 +84,7 @@ class CapsuleController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/create", name="create_capsule")
-     */
+    #[Route('/create', name:'create_capsule')]
     public function create(Request $request): Response
     {
         $form = $this->createForm(CreateCapsuleFormType::class);
@@ -115,9 +111,7 @@ class CapsuleController extends AbstractController
             ]);
     }
 
-    /**
-     * @Route("capsule/preview/{path}", name="preview_capsule")
-     */
+    #[Route('capsule/preview/{path}', name:'preview_capsule')]
     public function preview(string $path): Response
     {
         $file_path = '../legacy/' . $path;
@@ -133,9 +127,7 @@ class CapsuleController extends AbstractController
         );
     }
 
-    /**
-     * @Route("capsule/edit/{path}", name="edit_capsule")
-     */
+    #[Route('capsule/edit/{path}', name:'edit_capsule')]
     public function edit(string $path): Response
     {
         $current_user = $this->getUser();
@@ -168,9 +160,7 @@ class CapsuleController extends AbstractController
         );
     }
 
-    /**
-     * @Route("/capsule/delete/{id}", name="delete_capsule")
-     */
+    #[Route('/capsule/delete/{id}', name:'delete_capsule')]
     public function delete(
         int $id,
         Request $request
@@ -231,9 +221,7 @@ class CapsuleController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/capsule/duplicate/{id}", name="duplicate_capsule")
-     */
+    #[Route('/capsule/duplicate/{id}', name:'duplicate_capsule')]
     public function duplicate(
         int $id,
         Request $request,
diff --git a/src/Controller/CapsuleEditorController.php b/src/Controller/CapsuleEditorController.php
index ea8d32aaa65079d827bf91794f4e36e0ac9d2764..172e0f86233ba6f67f4d7d0ee87dea57b6c94a71 100755
--- a/src/Controller/CapsuleEditorController.php
+++ b/src/Controller/CapsuleEditorController.php
@@ -49,9 +49,7 @@ class CapsuleEditorController extends AbstractController
         $this->user_repository = $user_repository;
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/editors", name="edit_capsule_editors")
-     */
+    #[Route('/capsule/{capsule_id}/editors', name:'edit_capsule_editors')]
     public function editCapsuleEditors(
         Request $request,
         int $capsule_id
@@ -221,9 +219,7 @@ class CapsuleEditorController extends AbstractController
         );
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/editors/{editor_id}/remove", name="remove_editor")
-     */
+    #[Route('/capsule/{capsule_id}/editors/{editor_id}/remove', name:'remove_editor')]
     public function removeEditor(
         int $capsule_id,
         int $editor_id,
@@ -291,9 +287,7 @@ class CapsuleEditorController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/pending_editor/{pending_editor_invitation_id}/remove", name="remove_pending_editor")
-     */
+    #[Route('/capsule/{capsule_id}/pending_editor/{pending_editor_invitation_id}/remove', name:'remove_pending_editor')]
     public function removePendingEditor(
         int $pending_editor_invitation_id,
         int $capsule_id,
diff --git a/src/Controller/CapsuleGroupController.php b/src/Controller/CapsuleGroupController.php
index 6c672ae9ee43f94e86574bcc504078ad343b460f..b3eff16ad4e9aa3cd0027a5d65172af9517a6300 100755
--- a/src/Controller/CapsuleGroupController.php
+++ b/src/Controller/CapsuleGroupController.php
@@ -38,9 +38,7 @@ class CapsuleGroupController extends AbstractController
         $this->group_repository = $group_repository;
     }
 
-    /**
-     * @Route("/my_groups", name="edit_user_groups")
-     */
+    #[Route('/my_groups', name:'edit_user_groups')]
     public function editUserGroups(): Response
     {
         $current_user = $this->getUser();
@@ -56,9 +54,7 @@ class CapsuleGroupController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("my_groups/create", name="create_group")
-     */
+    #[Route('my_groups/create', name:'create_group')]
     public function create(Request $request): Response
     {
         $current_user = $this->getUser();
@@ -94,9 +90,7 @@ class CapsuleGroupController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/my_groups/{group_id}/delete", name="delete_group")
-     */
+    #[Route('/my_groups/{group_id}/delete', name:'delete_group')]
     public function deleteGroup(int $group_id, Request $request): Response
     {
         $current_user = $this->getUser();
@@ -144,9 +138,7 @@ class CapsuleGroupController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/groups/edit", name="edit_capsule_groups")
-     */
+    #[Route('/capsule/{capsule_id}/groups/edit', name:'edit_capsule_groups')]
     public function edit(int $capsule_id, Request $request): Response
     {
         $current_user = $this->getUser();
@@ -203,9 +195,7 @@ class CapsuleGroupController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/groups/{group_id}/remove", name="remove_group")
-     */
+    #[Route('/capsule/{capsule_id}/groups/{group_id}/remove', name:'remove_group')]
     public function remove(
         int $capsule_id,
         int $group_id,
diff --git a/src/Controller/FallbackController.php b/src/Controller/FallbackController.php
index a7ba67f6c367266bdda2b8b85ba832890056cac9..f9ed25de3f50dee935e14131e21ce707ade19a54 100755
--- a/src/Controller/FallbackController.php
+++ b/src/Controller/FallbackController.php
@@ -12,56 +12,14 @@ use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 
 class FallbackController extends AbstractController
 {
-    /**
-     * @Route("/", name="get_legacy_resource", priority=-2)
-     * @Route("/{controller}", name="get_legacy_resource", requirements={"controller" = ".+"}, priority=-1)
-     */
+    #[Route('/', name:'get_legacy_resource', priority:-2)]
+    #[Route('/{controller}', name:'get_legacy_resource', requirements:['controller' => '.+'], priority:-1)]
     public function getLegacyResourceAction(Request $request, ?string $controller = null): Response
     {
         if ($request->query->has('p') || $request->request->has('p')) {
             $this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');
-            // TODO : the following code MUST be re-enabled with tuleap-51
-
-//            $user = $this->getUser();
-//            $link = str_replace("php/project.php", "", $controller);
-//            $link = rtrim($link, "/");
-//            $user_id = $user->getId();
-
-//          // check if capsule exists in database
-//          $cap = $this->getDoctrine()
-//                      ->getManager()
-//                      ->getRepository('AppBundle:Capsule')
-//                      ->getCapsuleByLink($link);
-//          if (!$cap instanceof Capsule) {
-//              // rediriger sur une page demandant si il est l'auteur de la capsule
-//              return $this->redirectToRoute('add_author', array('capsuleLink'=>$link, 'capsulePass'=> $pass));
-//          }
-//
-//          // if capsule exists, check if user can edit it
-//          $cap = $this->getDoctrine()
-//                      ->getManager()
-//                      ->getRepository('AppBundle:Capsule')
-//                      ->getCapsuleByLinkAndUser($link, $user_id);
-//          if (!$cap instanceof Capsule) {
-//              // rediriger sur une page lui demandant de contacter
-//              // l'administrateur de la capsule pour lui donner des droits
-//              return $this->redirectToRoute('no_edition_access');
-//          }
-//
-//          // if yes, continue
-//          $cap->setAutMaj($user);
-//          $cap->setDtMaj(new \DateTime());
-//
-//          $em = $this->getDoctrine()->getManager();
-//          $em->persist($cap);
-//          $em->flush();
         }
 
-//        if ($controller == null) {
-//            //if no controller, this is index1.php
-//            return $this->redirectToRoute('get_legacy_resource', array('controller' => 'index1.php'));
-//        }
-
         if (null === $controller) {
             return LegacyHelper::transferToLegacy(
                 $request,
@@ -71,10 +29,7 @@ class FallbackController extends AbstractController
         }
 
         // use iframe to enhance speed but not for creation
-        if (strpos($controller, 'legacy') !== 0) {
-            // relative path (to app/) of the legacy code (on the same filesystem)
-            //$path_to_legacy_code = $this->getParameter('kernel.root_dir').
-            //$this->getParameter('legacy_root_dir');
+        if (! str_starts_with($controller, 'legacy')) {
             $originalController = $request->getPathInfo();
             $originalQueryString = $request->getQueryString();
 
diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index 62273a223632dec7c72a867afd04c81de0357614..1d931069dfae76b55a6a2db199e2b6e29f05f05d 100755
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -3,17 +3,13 @@
 namespace App\Controller;
 
 use App\Entity\Capsule;
-use App\Entity\PendingEditorInvitation;
 use App\Exception\ZipArchiveNotOpeningException;
 use App\Form\EditVideoUrlFormType;
-use App\Form\RemoveEditorFormType;
 use App\Repository\CapsuleRepository;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
-use Symfony\Bundle\FrameworkBundle\Translation\Translator;
 use Symfony\Component\Config\Util\Exception\XmlParsingException;
 use Symfony\Component\Filesystem\Exception\FileNotFoundException;
 use Symfony\Component\Filesystem\Filesystem;
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Routing\Annotation\Route;
@@ -29,8 +25,8 @@ class ProjectController extends AbstractController
         $this->translator = $translator;
     }
 
+    #[Route('/project/create', name:'create_project', methods:['POST'])]
     /**
-     * @Route("/project/create", name="create_project", methods={"POST"})
      * @throws ZipArchiveNotOpeningException
      */
     public function create(
@@ -75,8 +71,8 @@ class ProjectController extends AbstractController
         return $this->redirectToRoute('capsule_list');
     }
 
+    #[Route('/project/duplicate', name:'duplicate_project', methods:['POST'])]
     /**
-     * @Route("/project/duplicate", name="duplicate_project", methods={"POST"})
      * @throws ZipArchiveNotOpeningException
      */
     public function duplicate(
@@ -174,9 +170,7 @@ class ProjectController extends AbstractController
         );
     }
 
-    /**
-     * @Route("/capsule/{capsule_id}/edit_video_url", name="edit_video_url")
-     */
+    #[Route('/capsule/{capsule_id}/edit_video_url', name:'edit_video_url')]
     public function editVideoUrl(
         int $capsule_id,
         Request $request,
diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php
index 13d97d2a0e9985ede679190c39559c2538fadda9..c6c9a99e0ceee5c78501015a830ce6451d298454 100755
--- a/src/Controller/RegistrationController.php
+++ b/src/Controller/RegistrationController.php
@@ -38,9 +38,7 @@ class RegistrationController extends AbstractController
         $this->entity_manager = $entity_manager;
     }
 
-    /**
-     * @Route("/register", name="app_register")
-     */
+    #[Route('/register', name:'app_register')]
     public function register(
         Request $request,
         UserPasswordHasherInterface $userPasswordHasher
@@ -79,9 +77,7 @@ class RegistrationController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/verify/email", name="app_verify_email")
-     */
+    #[Route('/verify/email', name:'app_verify_email')]
     public function verifyUserEmail(
         Request $request,
         UserRepository $userRepository,
@@ -124,9 +120,7 @@ class RegistrationController extends AbstractController
         return $this->redirectToRoute('app_login');
     }
 
-    /**
-     * @Route("/register_mail_sent", name="app_register_mail_sent")
-     */
+    #[Route('/register_mail_sent', name:'app_register_mail_sent')]
     public function mailSentMessage(UserRepository $userRepository): Response
     {
         $userid = $this->requestStack->getSession()->get('userid');
diff --git a/src/Controller/ResetPasswordController.php b/src/Controller/ResetPasswordController.php
index 4ea2ab3340dc48a7f1b927fece2ad85b0e664a9c..66d73675482eb46b67fb133c612cfc4d7a0de5ff 100755
--- a/src/Controller/ResetPasswordController.php
+++ b/src/Controller/ResetPasswordController.php
@@ -18,9 +18,7 @@ use SymfonyCasts\Bundle\ResetPassword\Controller\ResetPasswordControllerTrait;
 use SymfonyCasts\Bundle\ResetPassword\Exception\ResetPasswordExceptionInterface;
 use SymfonyCasts\Bundle\ResetPassword\ResetPasswordHelperInterface;
 
-/**
- * @Route("/reset-password")
- */
+#[Route('/reset-password')]
 class ResetPasswordController extends AbstractController
 {
     use ResetPasswordControllerTrait;
@@ -36,11 +34,7 @@ class ResetPasswordController extends AbstractController
         $this->entityManager = $entityManager;
     }
 
-    /**
-     * Display & process form to request a password reset.
-     *
-     * @Route("", name="app_forgot_password_request")
-     */
+    #[Route('', name:'app_forgot_password_request')]
     public function request(Request $request, MailerInterface $mailer): Response
     {
         $form = $this->createForm(ResetPasswordRequestFormType::class);
@@ -58,11 +52,7 @@ class ResetPasswordController extends AbstractController
         ]);
     }
 
-    /**
-     * Confirmation page after a user has requested a password reset.
-     *
-     * @Route("/check-email", name="app_check_email")
-     */
+    #[Route('/check-email', name:'app_check_email')]
     public function checkEmail(): Response
     {
         // Generate a fake token if the user does not exist or someone hit this page directly.
@@ -76,11 +66,7 @@ class ResetPasswordController extends AbstractController
         ]);
     }
 
-    /**
-     * Validates and process the reset URL that the user clicked in their email.
-     *
-     * @Route("/reset/{token}", name="app_reset_password")
-     */
+    #[Route('/reset/{token}', name:'app_reset_password')]
     public function reset(
         Request $request,
         UserPasswordHasherInterface $userPasswordHasher,
diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php
index f5e7fdd9f173dc3f415bb44c9a64f96daf548010..5c473b399a15fee68bd15df2fe3652f3806ff4a4 100755
--- a/src/Controller/SecurityController.php
+++ b/src/Controller/SecurityController.php
@@ -2,19 +2,14 @@
 
 namespace App\Controller;
 
-use App\Entity\User;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Routing\Annotation\Route;
-use Symfony\Component\Security\Core\Exception\CustomUserMessageAccountStatusException;
 use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
-use Symfony\Contracts\Translation\TranslatorInterface;
 
 class SecurityController extends AbstractController
 {
-    /**
-     * @Route("/login", name="app_login")
-     */
+    #[Route('/login', name:'app_login')]
     public function login(AuthenticationUtils $authenticationUtils): Response
     {
         if ($this->getUser()) {
@@ -35,9 +30,7 @@ class SecurityController extends AbstractController
         );
     }
 
-    /**
-     * @Route("/logout", name="app_logout")
-     */
+    #[Route('/logout', name:'app_logout')]
     public function logout(): void
     {
         throw new \LogicException(
diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php
index b988c9baf04a6d2fa0b429cfaf3cddd569890fd3..92266f6d31c4eef10ea316504ed97aefe3102920 100755
--- a/src/Controller/UserController.php
+++ b/src/Controller/UserController.php
@@ -15,9 +15,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
 
 class UserController extends AbstractController
 {
-    /**
-     * @Route("/profile", name="show_profile")
-     */
+    #[Route('/profile', name:'show_profile')]
     public function showProfile(): Response
     {
         $current_user = $this->getUser();
@@ -31,9 +29,7 @@ class UserController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/edit_profile", name="edit_profile")
-     */
+    #[Route('/edit_profile', name:'edit_profile')]
     public function editProfile(
         Request $request,
         EntityManagerInterface $entity_manager,
@@ -67,9 +63,7 @@ class UserController extends AbstractController
         ]);
     }
 
-    /**
-     * @Route("/edit_password", name="edit_password")
-     */
+    #[Route('/edit_password', name:'edit_password')]
     public function editPassword(
         Request $request,
         UserPasswordHasherInterface $userPasswordHasher,