diff --git a/apps/backoffice/backend/public/index.php b/apps/backoffice/backend/public/index.php
index 45fd7eab5..5ef5102d3 100644
--- a/apps/backoffice/backend/public/index.php
+++ b/apps/backoffice/backend/public/index.php
@@ -16,7 +16,7 @@
 
 if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
 	Request::setTrustedProxies(
-		explode(',', $trustedProxies),
+		explode(',', (string) $trustedProxies),
 		Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
 	);
 }
diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php
index 6ed60b1be..302ec75fd 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -4,20 +4,22 @@
 
 namespace CodelyTv\Apps\Backoffice\Backend;
 
+use Override;
 use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
 use Symfony\Component\Config\Loader\LoaderInterface;
 use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Kernel;
 
+use Symfony\Component\HttpKernel\Kernel;
 use function dirname;
 
 class BackofficeBackendKernel extends Kernel
 {
 	use MicroKernelTrait;
 
-	private const CONFIG_EXTS = '.{xml,yaml}';
+	private const string CONFIG_EXTS = '.{xml,yaml}';
 
+	#[Override]
 	public function registerBundles(): iterable
 	{
 		$contents = require $this->getProjectDir() . '/config/bundles.php';
@@ -28,6 +30,7 @@ public function registerBundles(): iterable
 		}
 	}
 
+	#[Override]
 	public function getProjectDir(): string
 	{
 		return dirname(__DIR__);
diff --git a/apps/backoffice/frontend/public/index.php b/apps/backoffice/frontend/public/index.php
index 6dd7c188e..c22196495 100644
--- a/apps/backoffice/frontend/public/index.php
+++ b/apps/backoffice/frontend/public/index.php
@@ -16,7 +16,7 @@
 
 if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
 	Request::setTrustedProxies(
-		explode(',', $trustedProxies),
+		explode(',', (string) $trustedProxies),
 		Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
 	);
 }
diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
index dd793f7ab..f5b47ff90 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -4,20 +4,22 @@
 
 namespace CodelyTv\Apps\Backoffice\Frontend;
 
+use Override;
 use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
 use Symfony\Component\Config\Loader\LoaderInterface;
 use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Kernel;
 
+use Symfony\Component\HttpKernel\Kernel;
 use function dirname;
 
 class BackofficeFrontendKernel extends Kernel
 {
 	use MicroKernelTrait;
 
-	private const CONFIG_EXTS = '.{xml,yaml}';
+	private const string CONFIG_EXTS = '.{xml,yaml}';
 
+	#[Override]
 	public function registerBundles(): iterable
 	{
 		$contents = require $this->getProjectDir() . '/config/bundles.php';
@@ -28,6 +30,7 @@ public function registerBundles(): iterable
 		}
 	}
 
+	#[Override]
 	public function getProjectDir(): string
 	{
 		return dirname(__DIR__);
diff --git a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
index c27dd2396..573b2c8b1 100644
--- a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
+++ b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Backoffice\Courses\Infrastructure\Persistence\ElasticsearchBackofficeCourseRepository;
 use CodelyTv\Backoffice\Courses\Infrastructure\Persistence\MySqlBackofficeCourseRepository;
+use Override;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
@@ -19,6 +20,7 @@ public function __construct(
 		parent::__construct();
 	}
 
+	#[Override]
 	public function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$courses = $this->mySqlRepository->searchAll();
diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
index a9604d1b2..a3a4858c7 100644
--- a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
@@ -8,6 +8,7 @@
 use CodelyTv\Mooc\CoursesCounter\Application\Find\FindCoursesCounterQuery;
 use CodelyTv\Shared\Domain\ValueObject\SimpleUuid;
 use CodelyTv\Shared\Infrastructure\Symfony\WebController;
+use Override;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -29,6 +30,7 @@ public function __invoke(Request $request): Response
 		);
 	}
 
+	#[Override]
 	protected function exceptions(): array
 	{
 		return [];
diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
index 625d2a1d0..57659954f 100644
--- a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Mooc\Courses\Application\Create\CreateCourseCommand;
 use CodelyTv\Shared\Infrastructure\Symfony\WebController;
+use Override;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Validator\Constraints as Assert;
@@ -23,6 +24,7 @@ public function __invoke(Request $request): RedirectResponse
 			: $this->createCourse($request);
 	}
 
+	#[Override]
 	protected function exceptions(): array
 	{
 		return [];
diff --git a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
index 30e011847..d0584cfb8 100644
--- a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Apps\Backoffice\Frontend\Controller\Home;
 
 use CodelyTv\Shared\Infrastructure\Symfony\WebController;
+use Override;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -18,6 +19,7 @@ public function __invoke(Request $request): Response
 		]);
 	}
 
+	#[Override]
 	protected function exceptions(): array
 	{
 		return [];
diff --git a/apps/mooc/backend/public/index.php b/apps/mooc/backend/public/index.php
index b8655fe09..96f9856ab 100644
--- a/apps/mooc/backend/public/index.php
+++ b/apps/mooc/backend/public/index.php
@@ -16,7 +16,7 @@
 
 if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
 	Request::setTrustedProxies(
-		explode(',', $trustedProxies),
+		explode(',', (string) $trustedProxies),
 		Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
 	);
 }
diff --git a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
index 16d96c2a6..8147eb9b9 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
@@ -8,12 +8,13 @@
 use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
 use CodelyTv\Shared\Infrastructure\Bus\Event\MySql\MySqlDoctrineDomainEventsConsumer;
 use CodelyTv\Shared\Infrastructure\Doctrine\DatabaseConnections;
+use Override;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
 
+use Symfony\Component\Console\Output\OutputInterface;
 use function Lambdish\Phunctional\pipe;
 
 #[AsCommand(name: 'codely:domain-events:mysql:consume', description: 'Consume domain events from MySql',)]
@@ -27,11 +28,13 @@ public function __construct(
 		parent::__construct();
 	}
 
+	#[Override]
 	protected function configure(): void
 	{
 		$this->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
 	}
 
+	#[Override]
 	protected function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$quantityEventsToProcess = (int) $input->getArgument('quantity');
diff --git a/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
index 945784311..d38ce1584 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
@@ -9,6 +9,7 @@
 use CodelyTv\Shared\Infrastructure\Cdc\DatabaseMutationAction;
 use CodelyTv\Shared\Infrastructure\Cdc\DatabaseMutationToDomainEvent;
 use Doctrine\ORM\EntityManager;
+use Override;
 use RuntimeException;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Command\Command;
@@ -39,16 +40,18 @@ public function __construct(
 		];
 	}
 
+	#[Override]
 	protected function configure(): void
 	{
 		$this->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of mutations to process');
 	}
 
+	#[Override]
 	protected function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$totalMutations = (int) $input->getArgument('quantity');
 
-		$this->entityManager->wrapInTransaction(function (EntityManager $entityManager) use ($totalMutations) {
+		$this->entityManager->wrapInTransaction(function (EntityManager $entityManager) use ($totalMutations): void {
 			$mutations = $entityManager->getConnection()
 				->executeQuery("SELECT * FROM mutations ORDER BY id ASC LIMIT $totalMutations FOR UPDATE")
 				->fetchAllAssociative();
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
index 72801af71..8fa3bd1d9 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Apps\Mooc\Backend\Command\DomainEvents\RabbitMq;
 
 use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqConfigurer;
+use Override;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputInterface;
@@ -25,6 +26,7 @@ public function __construct(
 		parent::__construct();
 	}
 
+	#[Override]
 	protected function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$this->configurer->configure($this->exchangeName, ...iterator_to_array($this->subscribers));
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index c29c056d8..c42bde928 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -7,12 +7,13 @@
 use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
 use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqDomainEventsConsumer;
 use CodelyTv\Shared\Infrastructure\Doctrine\DatabaseConnections;
+use Override;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
 
+use Symfony\Component\Console\Output\OutputInterface;
 use function Lambdish\Phunctional\repeat;
 
 #[AsCommand(
@@ -29,6 +30,7 @@ public function __construct(
 		parent::__construct();
 	}
 
+	#[Override]
 	protected function configure(): void
 	{
 		$this
@@ -36,6 +38,7 @@ protected function configure(): void
 			->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
 	}
 
+	#[Override]
 	protected function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$queueName = $input->getArgument('queue');
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
index 646392bf3..ff44bc8cd 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -7,12 +7,13 @@
 use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber;
 use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
 use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqQueueNameFormatter;
+use Override;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
 
+use Symfony\Component\Console\Output\OutputInterface;
 use function Lambdish\Phunctional\each;
 
 #[AsCommand(
@@ -21,8 +22,8 @@
 )]
 final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command
 {
-	private const EVENTS_TO_PROCESS_AT_TIME = 200;
-	private const NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1;
+	private const int EVENTS_TO_PROCESS_AT_TIME = 200;
+	private const int NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1;
 	private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor';
 
 	public function __construct(private readonly DomainEventSubscriberLocator $locator)
@@ -30,11 +31,13 @@ public function __construct(private readonly DomainEventSubscriberLocator $locat
 		parent::__construct();
 	}
 
+	#[Override]
 	protected function configure(): void
 	{
 		$this->addArgument('command-path', InputArgument::OPTIONAL, 'Path on this is gonna be deployed', '/var/www');
 	}
 
+	#[Override]
 	protected function execute(InputInterface $input, OutputInterface $output): int
 	{
 		$path = $input->getArgument('command-path');
diff --git a/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php b/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
index 2a240f3a5..b6a90ee84 100644
--- a/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
+++ b/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Mooc\Courses\Application\Create\CreateCourseCommand;
 use CodelyTv\Shared\Infrastructure\Symfony\ApiController;
+use Override;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -24,6 +25,7 @@ public function __invoke(string $id, Request $request): Response
 		return new Response('', Response::HTTP_CREATED);
 	}
 
+	#[Override]
 	protected function exceptions(): array
 	{
 		return [];
diff --git a/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php b/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
index 0fb94b6ff..b307e0bae 100644
--- a/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
+++ b/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
@@ -8,6 +8,7 @@
 use CodelyTv\Mooc\CoursesCounter\Application\Find\FindCoursesCounterQuery;
 use CodelyTv\Mooc\CoursesCounter\Domain\CoursesCounterNotExist;
 use CodelyTv\Shared\Infrastructure\Symfony\ApiController;
+use Override;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -25,6 +26,7 @@ public function __invoke(): JsonResponse
 		);
 	}
 
+	#[Override]
 	protected function exceptions(): array
 	{
 		return [
diff --git a/apps/mooc/backend/src/MoocBackendKernel.php b/apps/mooc/backend/src/MoocBackendKernel.php
index cc8f8ed58..c60d7e02e 100644
--- a/apps/mooc/backend/src/MoocBackendKernel.php
+++ b/apps/mooc/backend/src/MoocBackendKernel.php
@@ -4,20 +4,22 @@
 
 namespace CodelyTv\Apps\Mooc\Backend;
 
+use Override;
 use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
 use Symfony\Component\Config\Loader\LoaderInterface;
 use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Kernel;
 
+use Symfony\Component\HttpKernel\Kernel;
 use function dirname;
 
 class MoocBackendKernel extends Kernel
 {
 	use MicroKernelTrait;
 
-	private const CONFIG_EXTS = '.{xml,yaml}';
+	private const string CONFIG_EXTS = '.{xml,yaml}';
 
+	#[Override]
 	public function registerBundles(): iterable
 	{
 		$contents = require $this->getProjectDir() . '/config/bundles.php';
@@ -28,6 +30,7 @@ public function registerBundles(): iterable
 		}
 	}
 
+	#[Override]
 	public function getProjectDir(): string
 	{
 		return dirname(__DIR__);
diff --git a/composer.json b/composer.json
index 4a6249ffe..fc51bc108 100644
--- a/composer.json
+++ b/composer.json
@@ -53,10 +53,10 @@
     "symfony/error-handler": "^6",
 
     "symplify/easy-coding-standard": "^12.0",
-    "vimeo/psalm": "^5.15",
+    "vimeo/psalm": "^5.18",
     "rector/rector": "^0.18.12",
     "psalm/plugin-mockery": "^1.1",
-    "psalm/plugin-symfony": "^5.0",
+    "psalm/plugin-symfony": "^5.1",
     "psalm/plugin-phpunit": "^0.18.4",
     "phpstan/phpstan": "^1.10",
     "phpat/phpat": "^0.10.10",
diff --git a/composer.lock b/composer.lock
index 794251bd2..4d09e2f2e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "49058a852a48e51de5183cc45f049da6",
+    "content-hash": "01b9bad6923e3458f4cbfa1e3c037e87",
     "packages": [
         {
             "name": "brick/math",
@@ -1560,16 +1560,16 @@
         },
         {
             "name": "promphp/prometheus_client_php",
-            "version": "v2.7.2",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/PromPHP/prometheus_client_php.git",
-                "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76"
+                "reference": "c7c174b4e0b691d75aa1cce939c6b1369b91fd22"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
-                "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
+                "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/c7c174b4e0b691d75aa1cce939c6b1369b91fd22",
+                "reference": "c7c174b4e0b691d75aa1cce939c6b1369b91fd22",
                 "shasum": ""
             },
             "require": {
@@ -1621,9 +1621,9 @@
             "description": "Prometheus instrumentation library for PHP applications.",
             "support": {
                 "issues": "https://github.com/PromPHP/prometheus_client_php/issues",
-                "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.7.2"
+                "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.8.0"
             },
-            "time": "2023-11-06T12:38:23+00:00"
+            "time": "2023-11-24T05:30:07+00:00"
         },
         {
             "name": "psr/cache",
@@ -5354,26 +5354,28 @@
         },
         {
             "name": "behat/mink",
-            "version": "v1.10.0",
+            "version": "v1.11.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/minkphp/Mink.git",
-                "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5"
+                "reference": "d8527fdf8785aad38455fb426af457ab9937aece"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/minkphp/Mink/zipball/19e58905632e7cfdc5b2bafb9b950a3521af32c5",
-                "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5",
+                "url": "https://api.github.com/repos/minkphp/Mink/zipball/d8527fdf8785aad38455fb426af457ab9937aece",
+                "reference": "d8527fdf8785aad38455fb426af457ab9937aece",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2",
-                "symfony/css-selector": "^4.4 || ^5.0 || ^6.0"
+                "symfony/css-selector": "^4.4 || ^5.0 || ^6.0 || ^7.0"
             },
             "require-dev": {
+                "phpstan/phpstan": "^1.10",
+                "phpstan/phpstan-phpunit": "^1.3",
                 "phpunit/phpunit": "^8.5.22 || ^9.5.11",
-                "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
-                "symfony/phpunit-bridge": "^5.4 || ^6.0"
+                "symfony/error-handler": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+                "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0"
             },
             "suggest": {
                 "behat/mink-browserkit-driver": "fast headless driver for any app without JS emulation",
@@ -5412,9 +5414,9 @@
             ],
             "support": {
                 "issues": "https://github.com/minkphp/Mink/issues",
-                "source": "https://github.com/minkphp/Mink/tree/v1.10.0"
+                "source": "https://github.com/minkphp/Mink/tree/v1.11.0"
             },
-            "time": "2022-03-28T14:22:43+00:00"
+            "time": "2023-12-09T11:23:23+00:00"
         },
         {
             "name": "behat/mink-browserkit-driver",
@@ -6079,16 +6081,16 @@
         },
         {
             "name": "fidry/cpu-core-counter",
-            "version": "0.5.1",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theofidry/cpu-core-counter.git",
-                "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
+                "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
-                "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
+                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077",
+                "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077",
                 "shasum": ""
             },
             "require": {
@@ -6096,13 +6098,13 @@
             },
             "require-dev": {
                 "fidry/makefile": "^0.2.0",
+                "fidry/php-cs-fixer-config": "^1.1.2",
                 "phpstan/extension-installer": "^1.2.0",
                 "phpstan/phpstan": "^1.9.2",
                 "phpstan/phpstan-deprecation-rules": "^1.0.0",
                 "phpstan/phpstan-phpunit": "^1.2.2",
                 "phpstan/phpstan-strict-rules": "^1.4.4",
-                "phpunit/phpunit": "^9.5.26 || ^8.5.31",
-                "theofidry/php-cs-fixer-config": "^1.0",
+                "phpunit/phpunit": "^8.5.31 || ^9.5.26",
                 "webmozarts/strict-phpunit": "^7.5"
             },
             "type": "library",
@@ -6128,7 +6130,7 @@
             ],
             "support": {
                 "issues": "https://github.com/theofidry/cpu-core-counter/issues",
-                "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
+                "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0"
             },
             "funding": [
                 {
@@ -6136,7 +6138,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-12-24T12:35:10+00:00"
+            "time": "2023-09-17T21:38:23+00:00"
         },
         {
             "name": "friends-of-behat/mink-extension",
@@ -6392,16 +6394,16 @@
         },
         {
             "name": "mockery/mockery",
-            "version": "1.6.6",
+            "version": "1.6.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/mockery/mockery.git",
-                "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e"
+                "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e",
-                "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e",
+                "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06",
+                "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06",
                 "shasum": ""
             },
             "require": {
@@ -6414,9 +6416,7 @@
             },
             "require-dev": {
                 "phpunit/phpunit": "^8.5 || ^9.6.10",
-                "psalm/plugin-phpunit": "^0.18.4",
-                "symplify/easy-coding-standard": "^11.5.0",
-                "vimeo/psalm": "^4.30"
+                "symplify/easy-coding-standard": "^12.0.8"
             },
             "type": "library",
             "autoload": {
@@ -6473,7 +6473,7 @@
                 "security": "https://github.com/mockery/mockery/security/advisories",
                 "source": "https://github.com/mockery/mockery"
             },
-            "time": "2023-08-09T00:03:52+00:00"
+            "time": "2023-12-10T02:24:34+00:00"
         },
         {
             "name": "myclabs/deep-copy",
@@ -6587,16 +6587,16 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.17.1",
+            "version": "v4.18.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
-                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
                 "shasum": ""
             },
             "require": {
@@ -6637,22 +6637,22 @@
             ],
             "support": {
                 "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
             },
-            "time": "2023-08-13T19:53:39+00:00"
+            "time": "2023-12-10T21:03:43+00:00"
         },
         {
             "name": "pdepend/pdepend",
-            "version": "2.16.0",
+            "version": "2.16.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pdepend/pdepend.git",
-                "reference": "8dfc0c46529e2073fa97986552f80646eedac562"
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562",
-                "reference": "8dfc0c46529e2073fa97986552f80646eedac562",
+                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
                 "shasum": ""
             },
             "require": {
@@ -6665,7 +6665,6 @@
             "require-dev": {
                 "easy-doc/easy-doc": "0.0.0|^1.2.3",
                 "gregwar/rst": "^1.0",
-                "phpunit/phpunit": "^4.8.36|^5.7.27",
                 "squizlabs/php_codesniffer": "^2.0.0"
             },
             "bin": [
@@ -6695,7 +6694,7 @@
             ],
             "support": {
                 "issues": "https://github.com/pdepend/pdepend/issues",
-                "source": "https://github.com/pdepend/pdepend/tree/2.16.0"
+                "source": "https://github.com/pdepend/pdepend/tree/2.16.2"
             },
             "funding": [
                 {
@@ -6703,7 +6702,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-29T08:52:35+00:00"
+            "time": "2023-12-17T18:09:59+00:00"
         },
         {
             "name": "phar-io/manifest",
@@ -7043,22 +7042,22 @@
         },
         {
             "name": "phpmd/phpmd",
-            "version": "2.14.1",
+            "version": "2.15.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpmd/phpmd.git",
-                "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8"
+                "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8",
-                "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8",
+                "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0",
+                "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0",
                 "shasum": ""
             },
             "require": {
                 "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
                 "ext-xml": "*",
-                "pdepend/pdepend": "^2.15.1",
+                "pdepend/pdepend": "^2.16.1",
                 "php": ">=5.3.9"
             },
             "require-dev": {
@@ -7067,7 +7066,6 @@
                 "ext-simplexml": "*",
                 "gregwar/rst": "^1.0",
                 "mikey179/vfsstream": "^1.6.8",
-                "phpunit/phpunit": "^4.8.36 || ^5.7.27",
                 "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
             },
             "bin": [
@@ -7115,7 +7113,7 @@
             "support": {
                 "irc": "irc://irc.freenode.org/phpmd",
                 "issues": "https://github.com/phpmd/phpmd/issues",
-                "source": "https://github.com/phpmd/phpmd/tree/2.14.1"
+                "source": "https://github.com/phpmd/phpmd/tree/2.15.0"
             },
             "funding": [
                 {
@@ -7123,20 +7121,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-28T13:07:44+00:00"
+            "time": "2023-12-11T08:22:20+00:00"
         },
         {
             "name": "phpstan/phpdoc-parser",
-            "version": "1.24.4",
+            "version": "1.24.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496"
+                "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496",
-                "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496",
+                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
+                "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
                 "shasum": ""
             },
             "require": {
@@ -7168,22 +7166,22 @@
             "description": "PHPDoc parser with support for nullable, intersection and generic types",
             "support": {
                 "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4"
+                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5"
             },
-            "time": "2023-11-26T18:29:22+00:00"
+            "time": "2023-12-16T09:33:33+00:00"
         },
         {
             "name": "phpstan/phpstan",
-            "version": "1.10.47",
+            "version": "1.10.50",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39"
+                "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
-                "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4",
+                "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4",
                 "shasum": ""
             },
             "require": {
@@ -7232,7 +7230,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-01T15:19:17+00:00"
+            "time": "2023-12-13T10:59:42+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -7900,12 +7898,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/Roave/SecurityAdvisories.git",
-                "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12"
+                "reference": "98ceed764ff7fcf20081fdc2e0914441f46b0906"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/b4728d9c4af8c60b059c1d7872759eedacccdb12",
-                "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12",
+                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/98ceed764ff7fcf20081fdc2e0914441f46b0906",
+                "reference": "98ceed764ff7fcf20081fdc2e0914441f46b0906",
                 "shasum": ""
             },
             "conflict": {
@@ -8008,7 +8006,7 @@
                 "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
                 "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
                 "desperado/xml-bundle": "<=0.1.7",
-                "directmailteam/direct-mail": "<5.2.4",
+                "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
                 "doctrine/annotations": "<1.2.7",
                 "doctrine/cache": "<1.3.2|>=1.4,<1.4.2",
                 "doctrine/common": "<2.4.3|>=2.5,<2.5.1",
@@ -8019,7 +8017,7 @@
                 "doctrine/mongodb-odm-bundle": "<3.0.1",
                 "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
                 "dolibarr/dolibarr": "<18.0.2",
-                "dompdf/dompdf": "<2.0.2|==2.0.2",
+                "dompdf/dompdf": "<2.0.4",
                 "doublethreedigital/guest-entries": "<3.1.2",
                 "drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8",
                 "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
@@ -8029,6 +8027,7 @@
                 "ectouch/ectouch": "<=2.7.2",
                 "elefant/cms": "<2.0.7",
                 "elgg/elgg": "<3.3.24|>=4,<4.0.5",
+                "elijaa/phpmemcacheadmin": "<=1.3",
                 "encore/laravel-admin": "<=1.8.19",
                 "endroid/qr-code-bundle": "<3.4.2",
                 "enshrined/svg-sanitize": "<0.15",
@@ -8051,7 +8050,7 @@
                 "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
                 "ezsystems/ezplatform-user": ">=1,<1.0.1",
                 "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31",
-                "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1",
+                "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1",
                 "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
                 "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
                 "ezyang/htmlpurifier": "<4.1.1",
@@ -8131,7 +8130,7 @@
                 "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
                 "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
                 "impresscms/impresscms": "<=1.4.5",
-                "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.2",
+                "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
                 "in2code/ipandlanguageredirect": "<5.1.2",
                 "in2code/lux": "<17.6.1|>=18,<24.0.2",
                 "innologi/typo3-appointments": "<2.0.6",
@@ -8198,11 +8197,15 @@
                 "mautic/core": "<4.3",
                 "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
                 "mediawiki/matomo": "<2.4.3",
+                "mediawiki/semantic-media-wiki": "<4.0.2",
                 "melisplatform/melis-asset-manager": "<5.0.1",
                 "melisplatform/melis-cms": "<5.0.1",
                 "melisplatform/melis-front": "<5.0.1",
                 "mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
                 "mgallegos/laravel-jqgrid": "<=1.3",
+                "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2.0.0.0-RC1-dev,<2.0.1",
+                "microsoft/microsoft-graph-beta": "<2.0.1",
+                "microsoft/microsoft-graph-core": "<2.0.2",
                 "microweber/microweber": "<=2.0.4",
                 "miniorange/miniorange-saml": "<1.4.3",
                 "mittwald/typo3_forum": "<1.2.1",
@@ -8249,7 +8252,7 @@
                 "open-web-analytics/open-web-analytics": "<1.7.4",
                 "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
                 "openid/php-openid": "<2.3",
-                "openmage/magento-lts": "<=19.5|>=20,<=20.1",
+                "openmage/magento-lts": "<20.2",
                 "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
                 "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
                 "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
@@ -8272,6 +8275,7 @@
                 "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
                 "personnummer/personnummer": "<3.0.2",
                 "phanan/koel": "<5.1.4",
+                "phenx/php-svg-lib": "<0.5.1",
                 "php-mod/curl": "<2.3.2",
                 "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
                 "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
@@ -8281,7 +8285,7 @@
                 "phpmyfaq/phpmyfaq": "<=3.1.7",
                 "phpoffice/phpexcel": "<1.8",
                 "phpoffice/phpspreadsheet": "<1.16",
-                "phpseclib/phpseclib": "<3.0.34",
+                "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34",
                 "phpservermon/phpservermon": "<3.6",
                 "phpsysinfo/phpsysinfo": "<3.2.5",
                 "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
@@ -8317,6 +8321,7 @@
                 "pterodactyl/panel": "<1.7",
                 "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
                 "ptrofimov/beanstalk_console": "<1.7.14",
+                "pubnub/pubnub": "<6.1",
                 "pusher/pusher-php-server": "<2.2.1",
                 "pwweb/laravel-core": "<=0.3.6.0-beta",
                 "pyrocms/pyrocms": "<=3.9.1",
@@ -8442,8 +8447,10 @@
                 "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
                 "symfony/webhook": ">=6.3,<6.3.8",
                 "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+                "symphonycms/symphony-2": "<2.6.4",
                 "t3/dce": "<0.11.5|>=2.2,<2.6.2",
                 "t3g/svg-sanitizer": "<1.0.3",
+                "t3s/content-consent": "<1.0.3|>=2,<2.0.2",
                 "tastyigniter/tastyigniter": "<3.3",
                 "tcg/voyager": "<=1.4",
                 "tecnickcom/tcpdf": "<6.2.22",
@@ -8468,7 +8475,7 @@
                 "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
                 "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
                 "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
-                "typo3/cms-core": "<=8.7.54|>=9,<=9.5.43|>=10,<=10.4.40|>=11,<=11.5.32|>=12,<=12.4.7",
+                "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8",
                 "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
                 "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
                 "typo3/cms-install": ">=12.2,<12.4.8",
@@ -8481,7 +8488,7 @@
                 "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
                 "ua-parser/uap-php": "<3.8",
                 "uasoft-indonesia/badaso": "<=2.9.7",
-                "unisharp/laravel-filemanager": "<=2.5.1",
+                "unisharp/laravel-filemanager": "<2.6.4",
                 "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
                 "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
                 "uvdesk/community-skeleton": "<=1.1.1",
@@ -8517,6 +8524,7 @@
                 "yii2mod/yii2-cms": "<1.9.2",
                 "yiisoft/yii": "<1.1.29",
                 "yiisoft/yii2": "<2.0.38",
+                "yiisoft/yii2-authclient": "<2.2.15",
                 "yiisoft/yii2-bootstrap": "<2.0.4",
                 "yiisoft/yii2-dev": "<2.0.43",
                 "yiisoft/yii2-elasticsearch": "<2.0.5",
@@ -8562,7 +8570,7 @@
                 "zf-commons/zfc-user": "<1.2.2",
                 "zfcampus/zf-apigility-doctrine": "<1.0.3",
                 "zfr/zfr-oauth2-server-module": "<0.1.2",
-                "zoujingli/thinkadmin": "<6.0.22"
+                "zoujingli/thinkadmin": "<=6.1.53"
             },
             "type": "metapackage",
             "notification-url": "https://packagist.org/downloads/",
@@ -8599,7 +8607,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-30T20:04:21+00:00"
+            "time": "2023-12-18T20:04:29+00:00"
         },
         {
             "name": "sebastian/cli-parser",
@@ -9698,20 +9706,20 @@
         },
         {
             "name": "symfony/css-selector",
-            "version": "v6.4.0",
+            "version": "v7.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
-                "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4"
+                "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4",
-                "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4",
+                "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e",
+                "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.1"
+                "php": ">=8.2"
             },
             "type": "library",
             "autoload": {
@@ -9743,7 +9751,7 @@
             "description": "Converts CSS selectors to XPath expressions",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/css-selector/tree/v6.4.0"
+                "source": "https://github.com/symfony/css-selector/tree/v7.0.0"
             },
             "funding": [
                 {
@@ -9759,7 +9767,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-31T08:40:20+00:00"
+            "time": "2023-10-31T17:59:56+00:00"
         },
         {
             "name": "symfony/dom-crawler",
@@ -9992,16 +10000,16 @@
         },
         {
             "name": "symplify/easy-coding-standard",
-            "version": "12.0.11",
+            "version": "12.0.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
-                "reference": "5f34a99d035b4eef048857ec47d2035140871f50"
+                "reference": "d15707b14d50b7cb6d656f7a7a5e5b9a17099b3c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5f34a99d035b4eef048857ec47d2035140871f50",
-                "reference": "5f34a99d035b4eef048857ec47d2035140871f50",
+                "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d15707b14d50b7cb6d656f7a7a5e5b9a17099b3c",
+                "reference": "d15707b14d50b7cb6d656f7a7a5e5b9a17099b3c",
                 "shasum": ""
             },
             "require": {
@@ -10034,7 +10042,7 @@
             ],
             "support": {
                 "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues",
-                "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.0.11"
+                "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.0.13"
             },
             "funding": [
                 {
@@ -10046,7 +10054,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-12-02T09:38:08+00:00"
+            "time": "2023-12-07T09:18:07+00:00"
         },
         {
             "name": "theseer/tokenizer",
@@ -10100,16 +10108,16 @@
         },
         {
             "name": "vimeo/psalm",
-            "version": "5.16.0",
+            "version": "5.18.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/vimeo/psalm.git",
-                "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591"
+                "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/vimeo/psalm/zipball/2897ba636551a8cb61601cc26f6ccfbba6c36591",
-                "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591",
+                "url": "https://api.github.com/repos/vimeo/psalm/zipball/b113f3ed0259fd6e212d87c3df80eec95a6abf19",
+                "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19",
                 "shasum": ""
             },
             "require": {
@@ -10128,7 +10136,7 @@
                 "ext-tokenizer": "*",
                 "felixfbecker/advanced-json-rpc": "^3.1",
                 "felixfbecker/language-server-protocol": "^1.5.2",
-                "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
+                "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
                 "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
                 "nikic/php-parser": "^4.16",
                 "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
@@ -10206,7 +10214,7 @@
                 "issues": "https://github.com/vimeo/psalm/issues",
                 "source": "https://github.com/vimeo/psalm"
             },
-            "time": "2023-11-22T20:38:47+00:00"
+            "time": "2023-12-16T09:37:35+00:00"
         },
         {
             "name": "webmozart/assert",
diff --git a/rector.php b/rector.php
index 7ec25f27b..c287c8bef 100644
--- a/rector.php
+++ b/rector.php
@@ -14,7 +14,7 @@
     ]);
 
     $rectorConfig->sets([
-        LevelSetList::UP_TO_PHP_82,
+        LevelSetList::UP_TO_PHP_83,
         SetList::TYPE_DECLARATION
     ]);
 
diff --git a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
index dea981f8a..883afa7cf 100644
--- a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
+++ b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
@@ -13,7 +13,7 @@
 
 final class InMemoryAuthRepository implements AuthRepository
 {
-	private const USERS = [
+	private const array USERS = [
 		'javi' => 'barbitas',
 		'rafa' => 'pelazo',
 	];
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
index 3a359ce41..02a762288 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
@@ -9,6 +9,7 @@
 use CodelyTv\Shared\Domain\Criteria\Criteria;
 use CodelyTv\Shared\Infrastructure\Persistence\Elasticsearch\ElasticsearchRepository;
 
+use Override;
 use function Lambdish\Phunctional\map;
 
 final class ElasticsearchBackofficeCourseRepository extends ElasticsearchRepository implements BackofficeCourseRepository
@@ -28,6 +29,7 @@ public function matching(Criteria $criteria): array
 		return map($this->toCourse(), $this->searchByCriteria($criteria));
 	}
 
+	#[Override]
 	protected function aggregateName(): string
 	{
 		return 'courses';
diff --git a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
index 69e89f799..97c34381b 100644
--- a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
+++ b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Mooc\Courses\Domain;
 
 use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
+use Override;
 
 final class CourseCreatedDomainEvent extends DomainEvent
 {
@@ -18,11 +19,13 @@ public function __construct(
 		parent::__construct($id, $eventId, $occurredOn);
 	}
 
+	#[Override]
 	public static function eventName(): string
 	{
 		return 'course.created';
 	}
 
+	#[Override]
 	public static function fromPrimitives(
 		string $aggregateId,
 		array $body,
@@ -32,6 +35,7 @@ public static function fromPrimitives(
 		return new self($aggregateId, $body['name'], $body['duration'], $eventId, $occurredOn);
 	}
 
+	#[Override]
 	public function toPrimitives(): array
 	{
 		return [
diff --git a/src/Mooc/Courses/Domain/CourseNotExist.php b/src/Mooc/Courses/Domain/CourseNotExist.php
index c91f35340..c9ded4ba4 100644
--- a/src/Mooc/Courses/Domain/CourseNotExist.php
+++ b/src/Mooc/Courses/Domain/CourseNotExist.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Mooc\Shared\Domain\Courses\CourseId;
 use CodelyTv\Shared\Domain\DomainError;
+use Override;
 
 final class CourseNotExist extends DomainError
 {
@@ -14,11 +15,13 @@ public function __construct(private readonly CourseId $id)
 		parent::__construct();
 	}
 
+	#[Override]
 	public function errorCode(): string
 	{
 		return 'course_not_exist';
 	}
 
+	#[Override]
 	protected function errorMessage(): string
 	{
 		return sprintf('The course <%s> does not exist', $this->id->value());
diff --git a/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php b/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
index 389f9fb53..084ac87a7 100644
--- a/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
+++ b/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
@@ -6,9 +6,11 @@
 
 use CodelyTv\Mooc\Shared\Domain\Courses\CourseId;
 use CodelyTv\Shared\Infrastructure\Persistence\Doctrine\UuidType;
+use Override;
 
 final class CourseIdType extends UuidType
 {
+	#[Override]
 	protected function typeClassName(): string
 	{
 		return CourseId::class;
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
index a64681dc7..e39cbf1e8 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Mooc\CoursesCounter\Domain;
 
 use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
+use Override;
 
 final class CoursesCounterIncrementedDomainEvent extends DomainEvent
 {
@@ -17,11 +18,13 @@ public function __construct(
 		parent::__construct($aggregateId, $eventId, $occurredOn);
 	}
 
+	#[Override]
 	public static function eventName(): string
 	{
 		return 'courses_counter.incremented';
 	}
 
+	#[Override]
 	public static function fromPrimitives(
 		string $aggregateId,
 		array $body,
@@ -31,6 +34,7 @@ public static function fromPrimitives(
 		return new self($aggregateId, $body['total'], $eventId, $occurredOn);
 	}
 
+	#[Override]
 	public function toPrimitives(): array
 	{
 		return [
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
index 6a2c5d95a..0f04ac929 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
@@ -6,9 +6,11 @@
 
 use CodelyTv\Mooc\CoursesCounter\Domain\CoursesCounterId;
 use CodelyTv\Shared\Infrastructure\Persistence\Doctrine\UuidType;
+use Override;
 
 final class CourseCounterIdType extends UuidType
 {
+	#[Override]
 	protected function typeClassName(): string
 	{
 		return CoursesCounterId::class;
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
index 71c98ac5c..6a33f266e 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
@@ -9,6 +9,7 @@
 use Doctrine\DBAL\Platforms\AbstractPlatform;
 use Doctrine\DBAL\Types\JsonType;
 
+use Override;
 use function Lambdish\Phunctional\map;
 
 final class CourseIdsType extends JsonType implements DoctrineCustomType
@@ -18,16 +19,19 @@ public static function customTypeName(): string
 		return 'course_ids';
 	}
 
+	#[Override]
 	public function getName(): string
 	{
 		return self::customTypeName();
 	}
 
+	#[Override]
 	public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
 	{
 		return parent::convertToDatabaseValue(map(fn (CourseId $id): string => $id->value(), $value), $platform);
 	}
 
+	#[Override]
 	public function convertToPHPValue($value, AbstractPlatform $platform): array
 	{
 		$scalars = parent::convertToPHPValue($value, $platform);
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index 28823de48..34ec057f4 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -10,7 +10,7 @@
 
 final class DbalTypesSearcher
 {
-	private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
+	private const string MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
 
 	public static function inPath(string $path, string $contextName): array
 	{
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
index 85f65ed63..e7efaf8e2 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
@@ -10,7 +10,7 @@
 
 final class DoctrinePrefixesSearcher
 {
-	private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
+	private const string MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
 
 	public static function inPath(string $path, string $baseNamespace): array
 	{
diff --git a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
index 61cd7f8e8..5300d14c6 100644
--- a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
+++ b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Mooc\Videos\Domain;
 
 use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
+use Override;
 
 final class VideoCreatedDomainEvent extends DomainEvent
 {
@@ -20,11 +21,13 @@ public function __construct(
 		parent::__construct($id, $eventId, $occurredOn);
 	}
 
+	#[Override]
 	public static function eventName(): string
 	{
 		return 'video.created';
 	}
 
+	#[Override]
 	public static function fromPrimitives(
 		string $aggregateId,
 		array $body,
@@ -42,6 +45,7 @@ public static function fromPrimitives(
 		);
 	}
 
+	#[Override]
 	public function toPrimitives(): array
 	{
 		return [
diff --git a/src/Mooc/Videos/Domain/VideoNotFound.php b/src/Mooc/Videos/Domain/VideoNotFound.php
index fdbdf69de..d249e3652 100644
--- a/src/Mooc/Videos/Domain/VideoNotFound.php
+++ b/src/Mooc/Videos/Domain/VideoNotFound.php
@@ -5,6 +5,7 @@
 namespace CodelyTv\Mooc\Videos\Domain;
 
 use CodelyTv\Shared\Domain\DomainError;
+use Override;
 
 final class VideoNotFound extends DomainError
 {
@@ -13,11 +14,13 @@ public function __construct(private readonly VideoId $id)
 		parent::__construct();
 	}
 
+	#[Override]
 	public function errorCode(): string
 	{
 		return 'video_not_found';
 	}
 
+	#[Override]
 	protected function errorMessage(): string
 	{
 		return sprintf('The video <%s> has not been found', $this->id->value());
diff --git a/src/Mooc/Videos/Domain/Videos.php b/src/Mooc/Videos/Domain/Videos.php
index 9a21231d5..52641207a 100644
--- a/src/Mooc/Videos/Domain/Videos.php
+++ b/src/Mooc/Videos/Domain/Videos.php
@@ -5,9 +5,11 @@
 namespace CodelyTv\Mooc\Videos\Domain;
 
 use CodelyTv\Shared\Domain\Collection;
+use Override;
 
 final class Videos extends Collection
 {
+	#[Override]
 	protected function type(): string
 	{
 		return Video::class;
diff --git a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
index 2db8f8d8c..2cea3f04a 100644
--- a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
+++ b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
@@ -6,9 +6,11 @@
 
 use CodelyTv\Mooc\Videos\Domain\VideoId;
 use CodelyTv\Shared\Infrastructure\Persistence\Doctrine\UuidType;
+use Override;
 
 final class VideoIdType extends UuidType
 {
+	#[Override]
 	protected function typeClassName(): string
 	{
 		return VideoId::class;
diff --git a/src/Shared/Domain/Criteria/Filters.php b/src/Shared/Domain/Criteria/Filters.php
index bea6863e3..311ce358b 100644
--- a/src/Shared/Domain/Criteria/Filters.php
+++ b/src/Shared/Domain/Criteria/Filters.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Shared\Domain\Collection;
 
+use Override;
 use function Lambdish\Phunctional\reduce;
 
 final class Filters extends Collection
@@ -39,6 +40,7 @@ public function serialize(): string
 		);
 	}
 
+	#[Override]
 	protected function type(): string
 	{
 		return Filter::class;
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
index 2b21c3897..f0652883a 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -14,7 +14,7 @@
 
 final class MySqlDoctrineEventBus implements EventBus
 {
-	private const DATABASE_TIMESTAMP_FORMAT = 'Y-m-d H:i:s';
+	private const string DATABASE_TIMESTAMP_FORMAT = 'Y-m-d H:i:s';
 	private readonly Connection $connection;
 
 	public function __construct(EntityManager $entityManager)
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index 1ef8213bc..e2c381bd4 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -10,6 +10,7 @@
 use Doctrine\DBAL\Platforms\AbstractPlatform;
 use Doctrine\DBAL\Types\StringType;
 
+use Override;
 use function Lambdish\Phunctional\last;
 
 abstract class UuidType extends StringType implements DoctrineCustomType
@@ -21,11 +22,13 @@ final public static function customTypeName(): string
 		return Utils::toSnakeCase(str_replace('Type', '', (string) last(explode('\\', static::class))));
 	}
 
+	#[Override]
 	final public function getName(): string
 	{
 		return self::customTypeName();
 	}
 
+	#[Override]
 	final public function convertToPHPValue($value, AbstractPlatform $platform): mixed
 	{
 		$className = $this->typeClassName();
@@ -33,6 +36,7 @@ final public function convertToPHPValue($value, AbstractPlatform $platform): mix
 		return new $className($value);
 	}
 
+	#[Override]
 	final public function convertToDatabaseValue($value, AbstractPlatform $platform): string
 	{
 		/** @var Uuid $value */
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
index 885066f5e..45df9faf3 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
@@ -9,11 +9,11 @@
 
 final class ElasticQueryGenerator
 {
-	private const MUST_TYPE = 'must';
-	private const MUST_NOT_TYPE = 'must_not';
-	private const TERM_TERM = 'term';
-	private const TERM_RANGE = 'range';
-	private const TERM_WILDCARD = 'wildcard';
+	private const string MUST_TYPE = 'must';
+	private const string MUST_NOT_TYPE = 'must_not';
+	private const string TERM_TERM = 'term';
+	private const string TERM_RANGE = 'range';
+	private const string TERM_WILDCARD = 'wildcard';
 
 	private static array $mustNotFields = [FilterOperator::NOT_EQUAL, FilterOperator::NOT_CONTAINS];
 
diff --git a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
index 320be5d69..059d38f3a 100644
--- a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
+++ b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
@@ -11,11 +11,13 @@
 use CodelyTv\Tests\Backoffice\Auth\AuthModuleUnitTestCase;
 use CodelyTv\Tests\Backoffice\Auth\Domain\AuthUserMother;
 use CodelyTv\Tests\Backoffice\Auth\Domain\AuthUsernameMother;
+use Override;
 
 final class AuthenticateUserCommandHandlerTest extends AuthModuleUnitTestCase
 {
 	private AuthenticateUserCommandHandler|null $handler;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
index 0292a6623..93589bf02 100644
--- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
+++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
@@ -8,9 +8,11 @@
 use CodelyTv\Shared\Infrastructure\Elasticsearch\ElasticsearchClient;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\InfrastructureTestCase;
 use Doctrine\ORM\EntityManager;
+use Override;
 
 abstract class BackofficeContextInfrastructureTestCase extends InfrastructureTestCase
 {
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
@@ -23,6 +25,7 @@ protected function setUp(): void
 		$arranger->arrange();
 	}
 
+	#[Override]
 	protected function kernelClass(): string
 	{
 		return BackofficeBackendKernel::class;
diff --git a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
index e2c723de9..f7909a5b7 100644
--- a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
+++ b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
@@ -9,11 +9,13 @@
 use CodelyTv\Tests\Mooc\Courses\CoursesModuleUnitTestCase;
 use CodelyTv\Tests\Mooc\Courses\Domain\CourseCreatedDomainEventMother;
 use CodelyTv\Tests\Mooc\Courses\Domain\CourseMother;
+use Override;
 
 final class CreateCourseCommandHandlerTest extends CoursesModuleUnitTestCase
 {
 	private CreateCourseCommandHandler|null $handler;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
index ff1f1b8b5..79f0621bd 100644
--- a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
+++ b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
@@ -11,11 +11,13 @@
 use CodelyTv\Tests\Mooc\Courses\Domain\CourseMother;
 use CodelyTv\Tests\Mooc\Courses\Domain\CourseNameMother;
 use CodelyTv\Tests\Shared\Domain\DuplicatorMother;
+use Override;
 
 final class CourseRenamerTest extends CoursesModuleUnitTestCase
 {
 	private CourseRenamer|null $renamer;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
index db8887486..87863009f 100644
--- a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
@@ -10,11 +10,13 @@
 use CodelyTv\Mooc\CoursesCounter\Domain\CoursesCounterNotExist;
 use CodelyTv\Tests\Mooc\CoursesCounter\CoursesCounterModuleUnitTestCase;
 use CodelyTv\Tests\Mooc\CoursesCounter\Domain\CoursesCounterMother;
+use Override;
 
 final class FindCoursesCounterQueryHandlerTest extends CoursesCounterModuleUnitTestCase
 {
 	private FindCoursesCounterQueryHandler|null $handler;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
index 6e9c9039b..0fe53e9c3 100644
--- a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
@@ -11,11 +11,13 @@
 use CodelyTv\Tests\Mooc\CoursesCounter\CoursesCounterModuleUnitTestCase;
 use CodelyTv\Tests\Mooc\CoursesCounter\Domain\CoursesCounterIncrementedDomainEventMother;
 use CodelyTv\Tests\Mooc\CoursesCounter\Domain\CoursesCounterMother;
+use Override;
 
 final class IncrementCoursesCounterOnCourseCreatedTest extends CoursesCounterModuleUnitTestCase
 {
 	private IncrementCoursesCounterOnCourseCreated|null $subscriber;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
index fb4bef7bf..0118acf97 100644
--- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
+++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
@@ -7,9 +7,11 @@
 use CodelyTv\Apps\Mooc\Backend\MoocBackendKernel;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\InfrastructureTestCase;
 use Doctrine\ORM\EntityManager;
+use Override;
 
 abstract class MoocContextInfrastructureTestCase extends InfrastructureTestCase
 {
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
@@ -19,6 +21,7 @@ protected function setUp(): void
 		$arranger->arrange();
 	}
 
+	#[Override]
 	protected function tearDown(): void
 	{
 		$arranger = new MoocEnvironmentArranger($this->service(EntityManager::class));
@@ -28,6 +31,7 @@ protected function tearDown(): void
 		parent::tearDown();
 	}
 
+	#[Override]
 	protected function kernelClass(): string
 	{
 		return MoocBackendKernel::class;
diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
index 27133c192..7d7b54f85 100644
--- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
@@ -9,12 +9,14 @@
 use CodelyTv\Shared\Infrastructure\Bus\Command\InMemorySymfonyCommandBus;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\UnitTestCase;
 use Mockery\MockInterface;
+use Override;
 use RuntimeException;
 
 final class InMemorySymfonyCommandBusTest extends UnitTestCase
 {
 	private InMemorySymfonyCommandBus|null $commandBus;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
index 4ad562ae1..7f9461616 100644
--- a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
@@ -13,12 +13,14 @@
 use CodelyTv\Tests\Mooc\CoursesCounter\Domain\CoursesCounterIncrementedDomainEventMother;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\InfrastructureTestCase;
 use Doctrine\ORM\EntityManager;
+use Override;
 
 final class MySqlDoctrineEventBusTest extends InfrastructureTestCase
 {
 	private MySqlDoctrineEventBus|null $bus;
 	private MySqlDoctrineDomainEventsConsumer|null $consumer;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
@@ -44,6 +46,7 @@ public function it_should_publish_and_consume_domain_events_from_msql(): void
 		);
 	}
 
+	#[Override]
 	protected function kernelClass(): string
 	{
 		return MoocBackendKernel::class;
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
index b3d5b09e8..c756fdaa6 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
@@ -16,6 +16,7 @@
 use CodelyTv\Tests\Mooc\Courses\Domain\CourseCreatedDomainEventMother;
 use CodelyTv\Tests\Mooc\CoursesCounter\Domain\CoursesCounterIncrementedDomainEventMother;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\InfrastructureTestCase;
+use Override;
 use RuntimeException;
 use Throwable;
 
@@ -29,6 +30,7 @@ final class RabbitMqEventBusTest extends InfrastructureTestCase
 	private TestAllWorksOnRabbitMqEventsPublished $fakeSubscriber;
 	private bool $consumerHasBeenExecuted;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
@@ -129,6 +131,7 @@ public function it_should_send_events_to_dead_letter_after_retry_failed_domain_e
 		$this->assertDeadLetterContainsEvent(1);
 	}
 
+	#[Override]
 	protected function kernelClass(): string
 	{
 		return MoocBackendKernel::class;
diff --git a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
index 5037795cb..1a07ada1c 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -9,12 +9,14 @@
 use CodelyTv\Shared\Infrastructure\Bus\Query\QueryNotRegisteredError;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\UnitTestCase;
 use Mockery\MockInterface;
+use Override;
 use RuntimeException;
 
 final class InMemorySymfonyQueryBusTest extends UnitTestCase
 {
 	private InMemorySymfonyQueryBus|null $queryBus;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		parent::setUp();
diff --git a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
index df914dd98..46bb5cdb9 100644
--- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
@@ -11,12 +11,12 @@
 {
 	public function __construct(private MinkHelper $sessionHelper) {}
 
-	public function sendRequest($method, $url, array $optionalParams = []): void
+	public function sendRequest(string $method, string $url, array $optionalParams = []): void
 	{
 		$this->request($method, $url, $optionalParams);
 	}
 
-	public function sendRequestWithPyStringNode($method, $url, PyStringNode $body): void
+	public function sendRequestWithPyStringNode(string $method, string $url, PyStringNode $body): void
 	{
 		$this->request($method, $url, ['content' => $body->getRaw()]);
 	}
diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
index 430373dc4..18d652cd5 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Constraint\CodelyTvConstraintIsSimilar;
 use Mockery\Matcher\MatcherAbstract;
+use Override;
 use Stringable;
 
 final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringable
@@ -19,11 +20,13 @@ public function __construct(mixed $value, float $delta = 0.0)
 		$this->constraint = new CodelyTvConstraintIsSimilar($value, $delta);
 	}
 
+	#[Override]
 	public function match(&$actual): bool
 	{
 		return $this->constraint->evaluate($actual, '', true);
 	}
 
+	#[Override]
 	public function __toString(): string
 	{
 		return 'Is similar';
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
index 22ee1fccf..115382cc7 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
@@ -6,15 +6,17 @@
 
 use CodelyTv\Shared\Domain\Aggregate\AggregateRoot;
 use CodelyTv\Tests\Shared\Domain\TestUtils;
+use Override;
 use SebastianBergmann\Comparator\Comparator;
-use SebastianBergmann\Comparator\ComparisonFailure;
 
+use SebastianBergmann\Comparator\ComparisonFailure;
 use function Lambdish\Phunctional\all;
 use function Lambdish\Phunctional\any;
 use function Lambdish\Phunctional\instance_of;
 
 final class AggregateRootArraySimilarComparator extends Comparator
 {
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		return is_array($expected)
@@ -23,6 +25,7 @@ public function accepts($expected, $actual): bool
 				   && all(instance_of(AggregateRoot::class), $actual));
 	}
 
+	#[Override]
 	public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
 	{
 		if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
index aefd86a36..3eb15351d 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
@@ -6,12 +6,14 @@
 
 use CodelyTv\Shared\Domain\Aggregate\AggregateRoot;
 use CodelyTv\Tests\Shared\Domain\TestUtils;
+use Override;
 use ReflectionObject;
 use SebastianBergmann\Comparator\Comparator;
 use SebastianBergmann\Comparator\ComparisonFailure;
 
 final class AggregateRootSimilarComparator extends Comparator
 {
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		$aggregateRootClass = AggregateRoot::class;
@@ -19,6 +21,7 @@ public function accepts($expected, $actual): bool
 		return $expected instanceof $aggregateRootClass && $actual instanceof $aggregateRootClass;
 	}
 
+	#[Override]
 	public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
 	{
 		$actualEntity = clone $actual;
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
index 67d3b5605..a8f0b67c1 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
@@ -7,16 +7,19 @@
 use DateInterval;
 use DateTime;
 use DateTimeInterface;
+use Override;
 use SebastianBergmann\Comparator\ComparisonFailure;
 use SebastianBergmann\Comparator\ObjectComparator;
 
 final class DateTimeSimilarComparator extends ObjectComparator
 {
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		return $expected instanceof DateTimeInterface && $actual instanceof DateTimeInterface;
 	}
 
+	#[Override]
 	public function assertEquals(
 		$expected,
 		$actual,
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
index 546c75cb9..f111fa3b4 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
@@ -8,12 +8,14 @@
 use DateTime;
 use DateTimeImmutable;
 use DateTimeInterface;
+use Override;
 use SebastianBergmann\Comparator\ComparisonFailure;
 use SebastianBergmann\Comparator\ObjectComparator;
 use Throwable;
 
 final class DateTimeStringSimilarComparator extends ObjectComparator
 {
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		return is_string($expected)
@@ -22,6 +24,7 @@ public function accepts($expected, $actual): bool
 			   && $this->isValidDateTimeString($actual);
 	}
 
+	#[Override]
 	public function assertEquals(
 		$expected,
 		$actual,
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
index c191f7fb0..681d28622 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
@@ -6,15 +6,17 @@
 
 use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
 use CodelyTv\Tests\Shared\Domain\TestUtils;
+use Override;
 use SebastianBergmann\Comparator\Comparator;
-use SebastianBergmann\Comparator\ComparisonFailure;
 
+use SebastianBergmann\Comparator\ComparisonFailure;
 use function Lambdish\Phunctional\all;
 use function Lambdish\Phunctional\any;
 use function Lambdish\Phunctional\instance_of;
 
 final class DomainEventArraySimilarComparator extends Comparator
 {
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		return is_array($expected)
@@ -23,6 +25,7 @@ public function accepts($expected, $actual): bool
 				   && all(instance_of(DomainEvent::class), $actual));
 	}
 
+	#[Override]
 	public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
 	{
 		if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
index f14cb6a77..2a5c63447 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
 use CodelyTv\Tests\Shared\Domain\TestUtils;
+use Override;
 use ReflectionObject;
 use SebastianBergmann\Comparator\Comparator;
 use SebastianBergmann\Comparator\ComparisonFailure;
@@ -14,6 +15,7 @@ final class DomainEventSimilarComparator extends Comparator
 {
 	private static array $ignoredAttributes = ['eventId', 'occurredOn'];
 
+	#[Override]
 	public function accepts($expected, $actual): bool
 	{
 		$domainEventRootClass = DomainEvent::class;
@@ -21,6 +23,7 @@ public function accepts($expected, $actual): bool
 		return $expected instanceof $domainEventRootClass && $actual instanceof $domainEventRootClass;
 	}
 
+	#[Override]
 	public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
 	{
 		if (!$this->areSimilar($expected, $actual)) {
diff --git a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
index e5b4ca53a..bd666dba1 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
@@ -10,11 +10,12 @@
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Comparator\DateTimeStringSimilarComparator;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Comparator\DomainEventArraySimilarComparator;
 use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Comparator\DomainEventSimilarComparator;
+use Override;
 use PHPUnit\Framework\Constraint\Constraint;
 use PHPUnit\Framework\ExpectationFailedException;
 use SebastianBergmann\Comparator\ComparisonFailure;
-use SebastianBergmann\Comparator\Factory;
 
+use SebastianBergmann\Comparator\Factory;
 use function is_string;
 use function sprintf;
 
@@ -23,6 +24,7 @@ final class CodelyTvConstraintIsSimilar extends Constraint
 {
 	public function __construct(private $value, private readonly float $delta = 0.0) {}
 
+	#[Override]
 	public function evaluate($other, $description = '', $returnResult = false): bool
 	{
 		if ($this->value === $other) {
@@ -54,6 +56,7 @@ public function evaluate($other, $description = '', $returnResult = false): bool
 		return $isValid;
 	}
 
+	#[Override]
 	public function toString(): string
 	{
 		$delta = '';
diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
index 52438a8f0..78b8fcc30 100644
--- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
@@ -6,6 +6,7 @@
 
 use CodelyTv\Tests\Shared\Domain\TestUtils;
 use Doctrine\ORM\EntityManager;
+use Override;
 use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
 use Throwable;
 
@@ -13,6 +14,7 @@ abstract class InfrastructureTestCase extends KernelTestCase
 {
 	abstract protected function kernelClass(): string;
 
+	#[Override]
 	protected function setUp(): void
 	{
 		$_SERVER['KERNEL_CLASS'] = $this->kernelClass();