diff --git a/src/Controller/FriendController.php b/src/Controller/FriendController.php
index ede09e400f0f73139002df8ec7455ec30aab8b69..e9111a85dae64581b698e41e5191bebc4c5d0ddf 100644
--- a/src/Controller/FriendController.php
+++ b/src/Controller/FriendController.php
@@ -3,6 +3,7 @@
 namespace App\Controller;
 
 use App\Entity\Entry;
+use App\Entity\InvitationRequest;
 use App\Entity\Notification;
 use App\Entity\User;
 use App\Form\UserAddFriendType;
@@ -40,20 +41,18 @@ class FriendController extends AbstractController
      */
     public function index(Request $request): Response
     {
-        $newNotificationsSent = $this->doctrine->getManager()->getRepository(Notification::class)->findBy([
+        $invitationRequestsSent = $this->doctrine->getManager()->getRepository(InvitationRequest::class)->findBy([
             'sender' => $this->getUser(),
-//            'status' => Notification::STATUS_NEW,
         ], ['id' => 'DESC']);
 
-        $newNotificationsReceived = $this->doctrine->getManager()->getRepository(Notification::class)->findBy([
+        $invitationRequestsReceived = $this->doctrine->getManager()->getRepository(InvitationRequest::class)->findBy([
             'recipient' => $this->getUser(),
-//            'status' => Notification::STATUS_NEW,
         ], ['id' => 'DESC']);
 
         return $this->render('user/showFriends.html.twig', [
             'user' => $this->getUser(),
-            'newNotificationsSent' => $newNotificationsSent,
-            'newNotificationsReceived' => $newNotificationsReceived,
+            'invitationRequestsSent' => $invitationRequestsSent,
+            'invitationRequestsReceived' => $invitationRequestsReceived,
         ]);
     }
 
@@ -66,15 +65,21 @@ class FriendController extends AbstractController
         $form->handleRequest($request);
 
         if ($form->isSubmitted() && $form->isValid()) {
-            $notification = new Notification(Notification::CATEGORY_FRIEND_INVITATION);
+            $invitationRequest = new InvitationRequest(InvitationRequest::CATEGORY_FRIEND_INVITATION);
+            $this->doctrine->getManager()->persist($invitationRequest);
+            $invitationRequest->setCreatedBy($this->getUser());
+            $invitationRequest->setSender($this->getUser());
+            $invitationRequest->setRecipient($form->get('friend')->getData());
+
+            $notification = new Notification();
             $this->doctrine->getManager()->persist($notification);
-            $notification->setCreatedBy($this->getUser());
-            $notification->setSender($this->getUser());
-            $notification->setRecipient($form->get('friend')->getData());
-//            $this->getUser()->addMyFriend($form->get('friend')->getData());
+            $notification->setUser($invitationRequest->getRecipient());
+            $notification->setContent("Invitation amitié");
+            $notification->setInvitationRequest($invitationRequest);
+
             $this->doctrine->getManager()->flush();
 
-            $this->addFlash('success', "Une notification a été envoyée à l'utilisateur");
+            $this->addFlash('success', "Une invitation a été envoyée à l'utilisateur");
 
             return  $this->redirectToRoute('app_friend_index');
         }
@@ -101,37 +106,46 @@ class FriendController extends AbstractController
     }
 
     /**
-     * @Route("/{id}/remove-friendship-notification", name="app_friend_remove_friendship_notification")
+     * @Route("/{id}/remove-friendship-invitationRequest", name="app_friend_remove_friendship_invitationRequest")
      */
-    public function removeFriendshipNotification(Request $request, Notification $notification): Response
+    public function removeFriendshipInvitationRequest(Request $request, InvitationRequest $invitationRequest): Response
     {
-        $this->doctrine->getManager()->remove($notification);
+        $this->doctrine->getManager()->remove($invitationRequest);
         $this->doctrine->getManager()->flush();
 
         return $this->redirectToRoute('app_friend_index');
     }
 
     /**
-     * @Route("/{id}/deny-friendship-notification", name="app_friend_deny_friendship_notification")
+     * @Route("/{id}/deny-friendship-invitationRequest", name="app_friend_deny_friendship_invitationRequest")
      */
-    public function denyFriendshipNotification(Request $request, Notification $notification): Response
+    public function denyFriendshipInvitationRequest(Request $request, InvitationRequest $invitationRequest): Response
     {
-        $notification->setStatus(Notification::STATUS_READ);
-        $notification->setAcceptedFriendRequest(false);
+        $invitationRequest->setStatus(InvitationRequest::STATUS_DENIED);
+        $notification = new Notification();
+        $notification->setUser($invitationRequest->getSender());
+        $notification->setContent("Invitation refusée");
+        $notification->setInvitationRequest($invitationRequest);
 
+        $this->doctrine->getManager()->persist($notification);
         $this->doctrine->getManager()->flush();
 
         return $this->redirectToRoute('app_friend_index');
     }
 
     /**
-     * @Route("/{id}/accept-friendship-notification", name="app_friend_accept_friendship_notification")
+     * @Route("/{id}/accept-friendship-invitationRequest", name="app_friend_accept_friendship_invitationRequest")
      */
-    public function acceptFriendshipNotification(Request $request, Notification $notification): Response
+    public function acceptFriendshipInvitationRequest(Request $request, InvitationRequest $invitationRequest): Response
     {
-        $notification->setStatus(Notification::STATUS_READ);
-        $notification->setAcceptedFriendRequest(true);
-        $this->getUser()->addMyFriend($notification->getSender());
+        $invitationRequest->setStatus(InvitationRequest::STATUS_ACCEPTED);
+        $this->getUser()->addMyFriend($invitationRequest->getSender());
+        $notification = new Notification();
+        $notification->setUser($invitationRequest->getSender());
+        $notification->setContent("Invitation acceptée");
+        $notification->setInvitationRequest($invitationRequest);
+
+        $this->doctrine->getManager()->persist($notification);
 
         $this->doctrine->getManager()->flush();
 
diff --git a/src/Entity/Group.php b/src/Entity/Group.php
index 4637f19b25211de587c65fdbbbb4e94706a15c56..7ac2ed084a4100c94259b537fc048c33ddf0ba8e 100644
--- a/src/Entity/Group.php
+++ b/src/Entity/Group.php
@@ -64,9 +64,9 @@ class Group
     private $labels;
 
     /**
-     * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="group", cascade={"remove", "persist"})
+     * @ORM\OneToMany(targetEntity=InvitationRequest::class, mappedBy="group", cascade={"remove", "persist"})
      */
-    private $notificationsSent;
+    private $invitationRequestsSent;
 
     public function __toString()
     {
@@ -88,6 +88,7 @@ class Group
         $this->addGroupMembership($groupMembership);
         $this->labels = new ArrayCollection();
         $this->notificationsSent = new ArrayCollection();
+        $this->invitationRequestsSent = new ArrayCollection();
     }
 
 
@@ -285,29 +286,29 @@ class Group
     }
 
     /**
-     * @return Collection<int, Notification>
+     * @return Collection<int, InvitationRequest>
      */
-    public function getNotificationsSent(): Collection
+    public function getInvitationRequestsSent(): Collection
     {
-        return $this->notificationsSent;
+        return $this->invitationRequestsSent;
     }
 
-    public function addNotificationsSent(Notification $notificationsSent): self
+    public function addInvitationRequestsSent(InvitationRequest $invitationRequestsSent): self
     {
-        if (!$this->notificationsSent->contains($notificationsSent)) {
-            $this->notificationsSent[] = $notificationsSent;
-            $notificationsSent->setGroup($this);
+        if (!$this->invitationRequestsSent->contains($invitationRequestsSent)) {
+            $this->invitationRequestsSent[] = $invitationRequestsSent;
+            $invitationRequestsSent->setGroup($this);
         }
 
         return $this;
     }
 
-    public function removeNotificationsSent(Notification $notificationsSent): self
+    public function removeInvitationRequestsSent(InvitationRequest $invitationRequestsSent): self
     {
-        if ($this->notificationsSent->removeElement($notificationsSent)) {
+        if ($this->invitationRequestsSent->removeElement($invitationRequestsSent)) {
             // set the owning side to null (unless already changed)
-            if ($notificationsSent->getGroup() === $this) {
-                $notificationsSent->setGroup(null);
+            if ($invitationRequestsSent->getGroup() === $this) {
+                $invitationRequestsSent->setGroup(null);
             }
         }
 
diff --git a/src/Entity/InvitationRequest.php b/src/Entity/InvitationRequest.php
new file mode 100644
index 0000000000000000000000000000000000000000..77020e843ced75c7a5c6c4a6a07bf299b2c2b1dd
--- /dev/null
+++ b/src/Entity/InvitationRequest.php
@@ -0,0 +1,248 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\LabelRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Serializer\Annotation\Groups;
+use Symfony\Component\Validator\Constraints as Assert;
+use App\Repository\InvitationRequestRepository;
+
+/**
+ * @ORM\Entity(repositoryClass=InvitationRequestRepository::class)
+ * @ORM\HasLifecycleCallbacks
+ */
+class InvitationRequest
+{
+    const STATUS_NEW          = "new";
+    const STATUS_ACCEPTED     = "accepted";
+    const STATUS_DENIED       = "denied";
+
+
+    const CATEGORY_FRIEND_INVITATION     = 'friend_invitation';
+    const CATEGORY_GROUP_INVITATION      = 'group_invitation';
+
+    /**
+     * @ORM\Id
+     * @ORM\GeneratedValue
+     * @ORM\Column(type="integer")
+     */
+    private $id;
+
+    /**
+     * @ORM\Column(type="string", length=80)
+     * @Groups({"invitationRequest:read"})
+     */
+    private $category;
+
+    /**
+     * @ORM\Column(type="string", length=80)
+     * @Groups({"invitationRequest:read"})
+     */
+    private $status;
+
+    /**
+     * @ORM\Column(type="datetime_immutable")
+     */
+    private $createdAt;
+
+    /**
+     * @ORM\Column(type="datetime_immutable", nullable=true)
+     */
+    private $updatedAt;
+
+    /**
+     * @ORM\ManyToOne(targetEntity=User::class)
+     * @Groups({"invitationRequest:read"})
+     */
+    private $createdBy;
+
+    /**
+     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="invitationRequestsReceived")
+     * @Groups({"invitationRequest:read"})
+     */
+    private $recipient;
+
+    /**
+     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="invitationRequestsSent")
+     * @Groups({"invitationRequest:read"})
+     */
+    private $sender;
+
+    /**
+     * @ORM\ManyToOne(targetEntity=Group::class, inversedBy="invitationRequestsSent")
+     * @Groups({"invitationRequest:read"})
+     */
+    private $group;
+
+    /**
+     * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="invitationRequest")
+     */
+    private $notifications;
+
+    public function isAccepted()
+    {
+        return $this->getStatus() === self::STATUS_ACCEPTED;
+    }
+    public function isDenied()
+    {
+        return $this->getStatus() === self::STATUS_DENIED;
+    }
+    public function isNew()
+    {
+        return $this->getStatus() === self::STATUS_NEW;
+    }
+
+    /**
+     * @ORM\PrePersist
+     * @ORM\PreUpdate
+     */
+    public function updateTimestamps(): void
+    {
+        $this->setUpdatedAt(new \DateTimeImmutable('now'));
+        if ($this->getCreatedAt() === null) {
+            $this->setCreatedAt(new \DateTimeImmutable('now'));
+        }
+    }
+
+    public function __construct($category)
+    {
+        $this->status = self::STATUS_NEW;
+        $this->setCategory($category);
+        $this->notifications = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getCategory(): ?string
+    {
+        return $this->category;
+    }
+
+    public function setCategory(string $category): self
+    {
+        $this->category = $category;
+
+        return $this;
+    }
+
+    public function getStatus(): ?string
+    {
+        return $this->status;
+    }
+
+    public function setStatus(string $status): self
+    {
+        $this->status = $status;
+
+        return $this;
+    }
+
+    public function getCreatedAt(): ?\DateTimeImmutable
+    {
+        return $this->createdAt;
+    }
+
+    public function setCreatedAt(\DateTimeImmutable $createdAt): self
+    {
+        $this->createdAt = $createdAt;
+
+        return $this;
+    }
+
+    public function getUpdatedAt(): ?\DateTimeImmutable
+    {
+        return $this->updatedAt;
+    }
+
+    public function setUpdatedAt(?\DateTimeImmutable $updatedAt): self
+    {
+        $this->updatedAt = $updatedAt;
+
+        return $this;
+    }
+
+    public function getCreatedBy(): ?User
+    {
+        return $this->createdBy;
+    }
+
+    public function setCreatedBy(?User $createdBy): self
+    {
+        $this->createdBy = $createdBy;
+
+        return $this;
+    }
+
+    public function getRecipient(): ?User
+    {
+        return $this->recipient;
+    }
+
+    public function setRecipient(?User $recipient): self
+    {
+        $this->recipient = $recipient;
+
+        return $this;
+    }
+
+    public function getSender(): ?User
+    {
+        return $this->sender;
+    }
+
+    public function setSender(?User $sender): self
+    {
+        $this->sender = $sender;
+
+        return $this;
+    }
+
+    public function getGroup(): ?Group
+    {
+        return $this->group;
+    }
+
+    public function setGroup(?Group $group): self
+    {
+        $this->group = $group;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Notification>
+     */
+    public function getNotifications(): Collection
+    {
+        return $this->notifications;
+    }
+
+    public function addNotification(Notification $notification): self
+    {
+        if (!$this->notifications->contains($notification)) {
+            $this->notifications[] = $notification;
+            $notification->setInvitationRequest($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNotification(Notification $notification): self
+    {
+        if ($this->notifications->removeElement($notification)) {
+            // set the owning side to null (unless already changed)
+            if ($notification->getInvitationRequest() === $this) {
+                $notification->setInvitationRequest(null);
+            }
+        }
+
+        return $this;
+    }
+
+}
diff --git a/src/Entity/Notification.php b/src/Entity/Notification.php
index ccb9af17508df68cb8aff60ee003a8f3605fb56d..88a068cb4528eb4181ad5b9cda930005548310e4 100644
--- a/src/Entity/Notification.php
+++ b/src/Entity/Notification.php
@@ -18,22 +18,6 @@ class Notification
     const STATUS_NEW     = "new";
     const STATUS_READ    = "read";
 
-    const CATEGORY_UPDATE_REQUEST        = 'update_request';
-    const CATEGORY_FRIEND_INVITATION     = 'friend_invitation';
-//    const CATEGORY_FRIEND_ACCEPT         = 'friend_accept';
-//    const CATEGORY_FRIEND_DENY           = 'friend_deny';
-    const CATEGORY_GROUP_INVITATION      = 'group_invitation';
-//    const CATEGORY_GROUP_ACCEPT          = 'group_accept';
-//    const CATEGORY_GROUP_DENY            = 'group_deny';
-    const CATEGORY_OTHER                 = 'other';
-
-//    const CATEGORY_LIST = [
-//        self::CATEGORY_UPDATE_REQUEST => self::CATEGORY_UPDATE_REQUEST,
-//        self::CATEGORY_FRIEND_INVITATION         => self::CATEGORY_FRIEND_INVITATION,
-//        self::CATEGORY_GROUP_INVITATION          => self::CATEGORY_GROUP_INVITATION,
-//        self::CATEGORY_OTHER          => self::CATEGORY_OTHER,
-//    ];
-
     /**
      * @ORM\Id
      * @ORM\GeneratedValue
@@ -41,12 +25,6 @@ class Notification
      */
     private $id;
 
-    /**
-     * @ORM\Column(type="string", length=80)
-     * @Groups({"notification:read"})
-     */
-    private $category;
-
     /**
      * @ORM\Column(type="string", length=80)
      * @Groups({"notification:read"})
@@ -70,28 +48,10 @@ class Notification
     private $updatedAt;
 
     /**
-     * @ORM\ManyToOne(targetEntity=User::class)
+     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="notifications")
      * @Groups({"notification:read"})
      */
-    private $createdBy;
-
-    /**
-     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="notificationsReceived")
-     * @Groups({"notification:read"})
-     */
-    private $recipient;
-
-    /**
-     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="notificationsSent")
-     * @Groups({"notification:read"})
-     */
-    private $sender;
-
-    /**
-     * @ORM\ManyToOne(targetEntity=Group::class, inversedBy="notificationsSent")
-     * @Groups({"notification:read"})
-     */
-    private $group;
+    private $user;
 
     /**
      * @ORM\ManyToOne(targetEntity=UpdateRequest::class, inversedBy="notifications")
@@ -100,24 +60,30 @@ class Notification
     private $updateRequest;
 
     /**
-     * @ORM\Column(type="boolean", nullable=true)
-     */
-    private $acceptedDuplicate;
-
-    /**
-     * @ORM\Column(type="boolean", nullable=true)
-     */
-    private $acceptedMerge;
-
-    /**
-     * @ORM\Column(type="boolean", nullable=true)
-     */
-    private $acceptedFriendRequest;
-
-    /**
-     * @ORM\Column(type="boolean", nullable=true)
+     * @ORM\ManyToOne(targetEntity=InvitationRequest::class, inversedBy="notifications")
+     * @Groups({"notification:read"})
      */
-    private $acceptedGroupInvitation;
+    private $invitationRequest;
+
+//    /**
+//     * @ORM\Column(type="boolean", nullable=true)
+//     */
+//    private $acceptedDuplicate;
+//
+//    /**
+//     * @ORM\Column(type="boolean", nullable=true)
+//     */
+//    private $acceptedMerge;
+//
+//    /**
+//     * @ORM\Column(type="boolean", nullable=true)
+//     */
+//    private $acceptedFriendRequest;
+//
+//    /**
+//     * @ORM\Column(type="boolean", nullable=true)
+//     */
+//    private $acceptedGroupInvitation;
 
     public function isRead()
     {
@@ -136,9 +102,8 @@ class Notification
         }
     }
 
-    public function __construct($category)
+    public function __construct()
     {
-        $this->setCategory($category);
         $this->status = self::STATUS_NEW;
     }
 
@@ -147,26 +112,26 @@ class Notification
         return $this->id;
     }
 
-    public function getCategory(): ?string
+    public function getStatus(): ?string
     {
-        return $this->category;
+        return $this->status;
     }
 
-    public function setCategory(string $category): self
+    public function setStatus(string $status): self
     {
-        $this->category = $category;
+        $this->status = $status;
 
         return $this;
     }
 
-    public function getStatus(): ?string
+    public function getContent(): ?string
     {
-        return $this->status;
+        return $this->content;
     }
 
-    public function setStatus(string $status): self
+    public function setContent(?string $content): self
     {
-        $this->status = $status;
+        $this->content = $content;
 
         return $this;
     }
@@ -195,98 +160,14 @@ class Notification
         return $this;
     }
 
-    public function isAcceptedDuplicate(): ?bool
-    {
-        return $this->acceptedDuplicate;
-    }
-
-    public function setAcceptedDuplicate(?bool $acceptedDuplicate): self
-    {
-        $this->acceptedDuplicate = $acceptedDuplicate;
-
-        return $this;
-    }
-
-    public function isAcceptedMerge(): ?bool
-    {
-        return $this->acceptedMerge;
-    }
-
-    public function setAcceptedMerge(?bool $acceptedMerge): self
-    {
-        $this->acceptedMerge = $acceptedMerge;
-
-        return $this;
-    }
-
-    public function isAcceptedFriendRequest(): ?bool
+    public function getUser(): ?User
     {
-        return $this->acceptedFriendRequest;
+        return $this->user;
     }
 
-    public function setAcceptedFriendRequest(?bool $acceptedFriendRequest): self
+    public function setUser(?User $user): self
     {
-        $this->acceptedFriendRequest = $acceptedFriendRequest;
-
-        return $this;
-    }
-
-    public function isAcceptedGroupInvitation(): ?bool
-    {
-        return $this->acceptedGroupInvitation;
-    }
-
-    public function setAcceptedGroupInvitation(?bool $acceptedGroupInvitation): self
-    {
-        $this->acceptedGroupInvitation = $acceptedGroupInvitation;
-
-        return $this;
-    }
-
-    public function getCreatedBy(): ?User
-    {
-        return $this->createdBy;
-    }
-
-    public function setCreatedBy(?User $createdBy): self
-    {
-        $this->createdBy = $createdBy;
-
-        return $this;
-    }
-
-    public function getRecipient(): ?User
-    {
-        return $this->recipient;
-    }
-
-    public function setRecipient(?User $recipient): self
-    {
-        $this->recipient = $recipient;
-
-        return $this;
-    }
-
-    public function getSender(): ?User
-    {
-        return $this->sender;
-    }
-
-    public function setSender(?User $sender): self
-    {
-        $this->sender = $sender;
-
-        return $this;
-    }
-
-    public function getGroup(): ?Group
-    {
-        return $this->group;
-    }
-
-    public function setGroup(?Group $group): self
-    {
-        $this->group = $group;
+        $this->user = $user;
 
         return $this;
     }
@@ -303,14 +184,14 @@ class Notification
         return $this;
     }
 
-    public function getContent(): ?string
+    public function getInvitationRequest(): ?InvitationRequest
     {
-        return $this->content;
+        return $this->invitationRequest;
     }
 
-    public function setContent(string $content): self
+    public function setInvitationRequest(?InvitationRequest $invitationRequest): self
     {
-        $this->content = $content;
+        $this->invitationRequest = $invitationRequest;
 
         return $this;
     }
diff --git a/src/Entity/User.php b/src/Entity/User.php
index cb090c9ec833fb73d46108fed74fb08e42d291d4..b71c7ab678443dfc6e31962b69d5483fd9184273 100644
--- a/src/Entity/User.php
+++ b/src/Entity/User.php
@@ -238,14 +238,19 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
     private $chatMessages;
 
     /**
-     * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="sender", cascade={"remove", "persist"})
+     * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="user", cascade={"remove", "persist"})
      */
-    private $notificationsSent;
+    private $notifications;
 
     /**
-     * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="sender", cascade={"remove", "persist"})
+     * @ORM\OneToMany(targetEntity=InvitationRequest::class, mappedBy="recipient", cascade={"remove", "persist"})
      */
-    private $notificationsReceived;
+    private $invitationRequestsReceived;
+
+    /**
+     * @ORM\OneToMany(targetEntity=InvitationRequest::class, mappedBy="sender", cascade={"remove", "persist"})
+     */
+    private $invitationRequestsSent;
 
     public function __toString()
     {
@@ -276,8 +281,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
         $this->entries = new ArrayCollection();
         $this->headwordUserInfos = new ArrayCollection();
         $this->chatMessages = new ArrayCollection();
-        $this->notificationsSent = new ArrayCollection();
-        $this->notificationsReceived = new ArrayCollection();
+        $this->notifications = new ArrayCollection();
+        $this->invitationRequestsReceived = new ArrayCollection();
+        $this->invitationRequestsSent = new ArrayCollection();
     }
 
     public function getInitials()
@@ -1158,27 +1164,27 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
     /**
      * @return Collection<int, Notification>
      */
-    public function getNotificationsSent(): Collection
+    public function getNotifications(): Collection
     {
-        return $this->notificationsSent;
+        return $this->notifications;
     }
 
-    public function addNotificationsSent(Notification $notificationsSent): self
+    public function addNotification(Notification $notification): self
     {
-        if (!$this->notificationsSent->contains($notificationsSent)) {
-            $this->notificationsSent[] = $notificationsSent;
-            $notificationsSent->setSender($this);
+        if (!$this->notifications->contains($notification)) {
+            $this->notifications[] = $notification;
+            $notification->setUser($this);
         }
 
         return $this;
     }
 
-    public function removeNotificationsSent(Notification $notificationsSent): self
+    public function removeNotification(Notification $notification): self
     {
-        if ($this->notificationsSent->removeElement($notificationsSent)) {
+        if ($this->notifications->removeElement($notification)) {
             // set the owning side to null (unless already changed)
-            if ($notificationsSent->getSender() === $this) {
-                $notificationsSent->setSender(null);
+            if ($notification->getUser() === $this) {
+                $notification->setUser(null);
             }
         }
 
@@ -1186,32 +1192,63 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
     }
 
     /**
-     * @return Collection<int, Notification>
+     * @return Collection<int, InvitationRequest>
+     */
+    public function getInvitationRequestsReceived(): Collection
+    {
+        return $this->invitationRequestsReceived;
+    }
+
+    public function addInvitationRequestsReceived(InvitationRequest $invitationRequestsReceived): self
+    {
+        if (!$this->invitationRequestsReceived->contains($invitationRequestsReceived)) {
+            $this->invitationRequestsReceived[] = $invitationRequestsReceived;
+            $invitationRequestsReceived->setRecipient($this);
+        }
+
+        return $this;
+    }
+
+    public function removeInvitationRequestsReceived(InvitationRequest $invitationRequestsReceived): self
+    {
+        if ($this->invitationRequestsReceived->removeElement($invitationRequestsReceived)) {
+            // set the owning side to null (unless already changed)
+            if ($invitationRequestsReceived->getRecipient() === $this) {
+                $invitationRequestsReceived->setRecipient(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, InvitationRequest>
      */
-    public function getNotificationsReceived(): Collection
+    public function getInvitationRequestsSent(): Collection
     {
-        return $this->notificationsReceived;
+        return $this->invitationRequestsSent;
     }
 
-    public function addNotificationsReceived(Notification $notificationsReceived): self
+    public function addInvitationRequestsSent(InvitationRequest $invitationRequestsSent): self
     {
-        if (!$this->notificationsReceived->contains($notificationsReceived)) {
-            $this->notificationsReceived[] = $notificationsReceived;
-            $notificationsReceived->setSender($this);
+        if (!$this->invitationRequestsSent->contains($invitationRequestsSent)) {
+            $this->invitationRequestsSent[] = $invitationRequestsSent;
+            $invitationRequestsSent->setSender($this);
         }
 
         return $this;
     }
 
-    public function removeNotificationsReceived(Notification $notificationsReceived): self
+    public function removeInvitationRequestsSent(InvitationRequest $invitationRequestsSent): self
     {
-        if ($this->notificationsReceived->removeElement($notificationsReceived)) {
+        if ($this->invitationRequestsSent->removeElement($invitationRequestsSent)) {
             // set the owning side to null (unless already changed)
-            if ($notificationsReceived->getSender() === $this) {
-                $notificationsReceived->setSender(null);
+            if ($invitationRequestsSent->getSender() === $this) {
+                $invitationRequestsSent->setSender(null);
             }
         }
 
         return $this;
     }
+
 }
diff --git a/src/Repository/InvitationRequestRepository.php b/src/Repository/InvitationRequestRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..48d0bd0ab9258ac271f827e609949093e0043c99
--- /dev/null
+++ b/src/Repository/InvitationRequestRepository.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\InvitationRequest;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<InvitationRequest>
+ *
+ * @method InvitationRequest|null find($id, $lockMode = null, $lockVersion = null)
+ * @method InvitationRequest|null findOneBy(array $criteria, array $orderBy = null)
+ * @method InvitationRequest[]    findAll()
+ * @method InvitationRequest[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class InvitationRequestRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, InvitationRequest::class);
+    }
+
+    public function add(InvitationRequest $entity, bool $flush = false): void
+    {
+        $this->getEntityManager()->persist($entity);
+
+        if ($flush) {
+            $this->getEntityManager()->flush();
+        }
+    }
+
+    public function remove(InvitationRequest $entity, bool $flush = false): void
+    {
+        $this->getEntityManager()->remove($entity);
+
+        if ($flush) {
+            $this->getEntityManager()->flush();
+        }
+    }
+
+//    /**
+//     * @return InvitationRequest[] Returns an array of InvitationRequest objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('l')
+//            ->andWhere('l.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('l.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?InvitationRequest
+//    {
+//        return $this->createQueryBuilder('l')
+//            ->andWhere('l.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/templates/notifications.html.twig b/templates/notifications.html.twig
index d0e130d9e959b510bb8e75acf7bf14d128688bf5..58eb81b5bc0c06db47b30332d827b738b95f1eb9 100644
--- a/templates/notifications.html.twig
+++ b/templates/notifications.html.twig
@@ -28,4 +28,11 @@
 </div>
 
 {#{% macro actions(notification) %}#}
-{#{% endmacro %}#}
\ No newline at end of file
+{#{% endmacro %}#}
+
+
+{#{% if invitationRequest.read %}#}
+{#    <button class="btn btn-dark btn-xs"><i class="fa fa-envelope-open"></i></button>#}
+{#{% else %}#}
+{#    <a title="{{ "Marquer comme lu"|trans }}" href="{{ path('app_invitationRequest_mark_as_read', {id: invitationRequest.id}) }}" class="btn btn-xs btn-success"><i class="fa fa-envelope"></i></a>#}
+{#{% endif %}#}
\ No newline at end of file
diff --git a/templates/user/showFriends.html.twig b/templates/user/showFriends.html.twig
index 87f1971db423e6700700bedc8be761ae2a2d3bab..f495427a5b7044413859de3af154a22d614fce13 100644
--- a/templates/user/showFriends.html.twig
+++ b/templates/user/showFriends.html.twig
@@ -28,31 +28,26 @@
                 </div>
             </div>
 
-            {% if newNotificationsSent %}
+            {% if invitationRequestsSent %}
                 <h3 class="mt-3">{{ "Demandes envoyées"|trans }}</h3>
                 <div class="card mt-3">
                     <div class="card-body">
                         <table class="table table-borderless">
-                            {% for notification in newNotificationsSent %}
+                            {% for invitationRequest in invitationRequestsSent %}
                                 <tr>
-                                    <td>{{ notification.createdAt|date('d/m/Y') }}</td>
+                                    <td>{{ invitationRequest.createdAt|date('d/m/Y') }}</td>
                                     <td>
-                                        <span class="badge bg-secondary"> {{ "Demande envoyée à "|trans  }}{{ notification.recipient }}</span>
-                                        {% if notification.acceptedFriendRequest is same as true %}
+                                        <span class="badge bg-secondary"> {{ "Demande envoyée à "|trans  }}{{ invitationRequest.recipient }}</span>
+                                        {% if invitationRequest.accepted %}
                                             <span class="badge bg-success">{{ "Acceptée"|trans }}</span>
-                                        {% elseif notification.acceptedFriendRequest is same as false %}
+                                        {% elseif invitationRequest.accepted %}
                                             <span class="badge bg-success">{{ "Refusée"|trans }}</span>
                                         {% endif %}
                                     </td>
                                     <td class="text-end">
-                                        {% if notification.acceptedFriendRequest is null %}
+                                        {% if invitationRequest.accepted is null %}
                                             <a data-confirm="{{ "Confirmer la suppression ?"|trans }}" data-bs-toggle="modal" data-bs-target="#confirm-dialog"
-                                               data-href="{{ path('app_friend_remove_friendship_notification', {id: notification.id}) }}" class="btn btn-xs btn-danger"><i class="bi-x-circle"></i></a>
-                                        {% endif %}
-                                        {% if notification.read %}
-                                            <button class="btn btn-dark btn-xs"><i class="fa fa-envelope-open"></i></button>
-                                        {% else %}
-                                            <a title="{{ "Marquer comme lu"|trans }}" href="{{ path('app_notification_mark_as_read', {id: notification.id}) }}" class="btn btn-xs btn-success"><i class="fa fa-envelope"></i></a>
+                                               data-href="{{ path('app_friend_remove_friendship_invitationRequest', {id: invitationRequest.id}) }}" class="btn btn-xs btn-danger"><i class="bi-x-circle"></i></a>
                                         {% endif %}
                                     </td>
                                 </tr>
@@ -62,25 +57,25 @@
                 </div>
             {% endif %}
 
-            {% if newNotificationsReceived %}
+            {% if invitationRequestsReceived %}
                 <h3 class="mt-3">{{ "Demandes reçues"|trans }}</h3>
                 <div class="card mt-3">
                     <div class="card-body">
                         <table class="table table-borderless">
-                            {% for notification in newNotificationsReceived %}
+                            {% for invitationRequest in invitationRequestsReceived %}
                                 <tr>
-                                    <td>{{ notification.createdAt|date('d/m/Y') }}</td>
-                                    <td><span class="badge bg-secondary"> {{ "Demande envoyée par "|trans  }}{{ notification.sender }}</span></td>
+                                    <td>{{ invitationRequest.createdAt|date('d/m/Y') }}</td>
+                                    <td><span class="badge bg-secondary"> {{ "Demande envoyée par "|trans  }}{{ invitationRequest.sender }}</span></td>
                                     <td class="text-end">
-                                        {% if notification.acceptedFriendRequest is null %}
-                                            <a href="{{ path('app_friend_accept_friendship_notification', {id: notification.id}) }}" class="btn btn-xs btn-success"><i class="fa fa-check"></i> {{ "Accepter"|trans }}</a>
+                                        {% if invitationRequest.new %}
+                                            <a href="{{ path('app_friend_accept_friendship_invitationRequest', {id: invitationRequest.id}) }}" class="btn btn-xs btn-success"><i class="fa fa-check"></i> {{ "Accepter"|trans }}</a>
                                             <a data-confirm="{{ "Confirmer le refus ?"|trans }}" data-bs-toggle="modal" data-bs-target="#confirm-dialog"
-                                               data-href="{{ path('app_friend_deny_friendship_notification', {id: notification.id}) }}" class="btn btn-xs btn-danger">
+                                               data-href="{{ path('app_friend_deny_friendship_invitationRequest', {id: invitationRequest.id}) }}" class="btn btn-xs btn-danger">
                                                 <i class="bi-x-circle"></i> {{ "Refuser"|trans }}
                                             </a>
-                                        {% elseif notification.acceptedFriendRequest is same as true %}
+                                        {% elseif invitationRequest.accepted %}
                                             <span class="badge bg-success">{{ "Acceptée"|trans }}</span>
-                                        {% elseif notification.acceptedFriendRequest is same as false %}
+                                        {% elseif invitationRequest.denied %}
                                             <span class="badge bg-success">{{ "Refusée"|trans }}</span>
                                         {% endif %}
                                     </td>