diff --git a/config/services.yaml b/config/services.yaml
index 5380799c4957b95b38db610d05683e27a1e4174b..40dcd80a2fe539adaf402e4178106299d0ca4d4e 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -36,14 +36,6 @@ services:
             $requireNumbers: '%env(APP_PASSWORD_REQUIRE_NUMBERS)%'
             $requireSpecialCharacter: '%env(APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS)%'
 
-    App\Domain\User\Controller\SecurityController:
-        arguments:
-            $sso_type: '%SSO_TYPE%'
-            $sso_key_field: '%SSO_KEY_FIELD%'
-
-    App\Domain\User\Controller\ProfileController:
-        arguments:
-            $sso_type: '%SSO_TYPE%'
 
 #    App\EventSubscriber\LogoutSubscriber:
 
diff --git a/config/services/controller.yaml b/config/services/controller.yaml
index 0d68cb2fed2f4e02bb07a4785d154357122cd305..da8c0df1486b43442c09a0afdd83d731153d4d3d 100644
--- a/config/services/controller.yaml
+++ b/config/services/controller.yaml
@@ -25,6 +25,17 @@ services:
         arguments:
             $logoFilesystem: '@gaufrette.collectivity_logo_filesystem'
 
+
+    App\Domain\User\Controller\SecurityController:
+        arguments:
+            $sso_type: '%SSO_TYPE%'
+            $sso_key_field: '%SSO_KEY_FIELD%'
+
+    App\Domain\User\Controller\ProfileController:
+        arguments:
+            $sso_type: '%SSO_TYPE%'
+            $logoFilesystem: '@gaufrette.collectivity_logo_filesystem'
+
     App\Domain\AIPD\Controller\ModeleAnalyseController:
         arguments:
             $fichierFilesystem: '@gaufrette.aipd_critere_principe_fondamentaux_fichier_filesystem'
diff --git a/src/Domain/User/Controller/ProfileController.php b/src/Domain/User/Controller/ProfileController.php
index f2ceb7e3d4b8d382c532f342ba9f593c2e4d1574..bd5919c23379ddfc5b10043d7e60e359c4171ec8 100644
--- a/src/Domain/User/Controller/ProfileController.php
+++ b/src/Domain/User/Controller/ProfileController.php
@@ -29,14 +29,19 @@ use App\Application\Symfony\Security\UserProvider;
 use App\Domain\User\Form\Type\CollectivityType;
 use App\Domain\User\Form\Type\ReviewDataType;
 use App\Domain\User\Form\Type\UserType;
+use App\Domain\User\Model\ReviewData;
 use App\Domain\User\Model\User;
 use App\Domain\User\Repository;
 use Doctrine\ORM\EntityManagerInterface;
+use Gaufrette\FilesystemInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\Form\Form;
+use Symfony\Component\HttpFoundation\File\UploadedFile;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\Security\Core\Security;
+use Symfony\Component\String\Slugger\SluggerInterface;
 
 class ProfileController extends AbstractController
 {
@@ -78,6 +83,13 @@ class ProfileController extends AbstractController
     private $security;
     private ?string $sso_type;
 
+    /**
+     * @var FilesystemInterface
+     */
+    protected $logoFilesystem;
+
+    protected SluggerInterface $slugger;
+
     public function __construct(
         EntityManagerInterface $entityManager,
         ControllerHelper $helper,
@@ -87,6 +99,8 @@ class ProfileController extends AbstractController
         Repository\User $userRepository,
         Security $security,
         ?string $sso_type,
+        FilesystemInterface $logoFilesystem,
+        SluggerInterface $slugger,
     ) {
         $this->entityManager          = $entityManager;
         $this->helper                 = $helper;
@@ -96,6 +110,8 @@ class ProfileController extends AbstractController
         $this->userRepository         = $userRepository;
         $this->sso_type               = $sso_type;
         $this->security               = $security;
+        $this->logoFilesystem         = $logoFilesystem;
+        $this->slugger                = $slugger;
     }
 
     /**
@@ -115,6 +131,40 @@ class ProfileController extends AbstractController
         ]);
     }
 
+    public function formPrePersistData($object, $form = null): void
+    {
+        /** @var Form $reviewDataForm */
+        $reviewDataForm = $form->get('reviewData');
+        if ($reviewDataForm) {
+            /** @var UploadedFile $logoFile */
+            $logoFile = $reviewDataForm->get('logo')->getData();
+            if ($logoFile) {
+                $originalFilename = pathinfo($logoFile->getClientOriginalName(), PATHINFO_FILENAME);
+                // this is needed to safely include the file name as part of the URL
+                $safeFilename = $this->slugger->slug($originalFilename);
+                $newFilename  = $safeFilename . '-' . uniqid() . '.' . $logoFile->guessExtension();
+                $this->logoFilesystem->write($newFilename, \fopen($logoFile->getRealPath(), 'r'));
+
+                // updates the 'brochureFilename' property to store the PDF file name
+                // instead of its contents
+                /** @var ReviewData $reviewData */
+                $reviewData = $object->getReviewData();
+                $reviewData->setLogo('/uploads/collectivity/logos/' . $newFilename);
+                $object->setReviewData($reviewData);
+            }
+
+            if ($reviewDataForm->has('deleteLogo')) {
+                $deleteLogo = $reviewDataForm->get('deleteLogo')->getData();
+                if ($deleteLogo) {
+                    /** @var ReviewData $reviewData */
+                    $reviewData = $object->getReviewData();
+                    $reviewData->setLogo(null);
+                    $object->setReviewData($reviewData);
+                }
+            }
+        }
+    }
+
     /**
      * Generate collectivity edit form for user.
      *
@@ -144,6 +194,8 @@ class ProfileController extends AbstractController
 
         $form->handleRequest($request);
         if ($form->isSubmitted() && $form->isValid()) {
+            $this->formPrePersistData($object, $form);
+            $this->entityManager->persist($object);
             $this->collectivityRepository->update($object);
 
             $this->helper->addFlash('success', $this->helper->trans('user.organization.flashbag.success.my_organization_edit'));
diff --git a/tests/Domain/User/Controller/ProfileControllerTest.php b/tests/Domain/User/Controller/ProfileControllerTest.php
index 76f08290748ac828abb8a7c67a14ff6b64e0f917..77c73628e32e3670337c21bac4c359f75e9c2ef0 100644
--- a/tests/Domain/User/Controller/ProfileControllerTest.php
+++ b/tests/Domain/User/Controller/ProfileControllerTest.php
@@ -32,11 +32,13 @@ use App\Domain\User\Model;
 use App\Domain\User\Repository;
 use App\Tests\Utils\ReflectionTrait;
 use Doctrine\ORM\EntityManagerInterface;
+use Gaufrette\FilesystemInterface;
 use PHPUnit\Framework\TestCase;
 use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Security\Core\Security;
+use Symfony\Component\String\Slugger\SluggerInterface;
 
 class ProfileControllerTest extends TestCase
 {
@@ -101,7 +103,9 @@ class ProfileControllerTest extends TestCase
             $this->collectivityRepositoryProphecy->reveal(),
             $this->userRepositoryProphecy->reveal(),
             $this->securityProphecy->reveal(),
-            null
+            null,
+            $this->prophesize(FilesystemInterface::class)->reveal(),
+            $this->prophesize(SluggerInterface::class)->reveal(),
         );
     }