diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java
index d4fdaa0..b2dcd50 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java
@@ -70,6 +70,9 @@ public class ApplicationsController {
 
         if (!authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)){ 
           authorizedApps.add(Applications.UsersList);}
+
+        if (!authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin, Role.InscriptionService},token)){
+            authorizedApps.add(Applications.Payments);}
         return authorizedApps;
     }
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/ExternalCurriculumController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/ExternalCurriculumController.java
index e88c759..a8a87ce 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/ExternalCurriculumController.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/ExternalCurriculumController.java
@@ -30,9 +30,16 @@ public class ExternalCurriculumController {
     //everyone can post some externalcurriculums (the validity of the elements is assured by the inscription service)
     @PostMapping("/externalcurriculum")
     public ResponseEntity<ExternalCurriculum> postExternalCurriculum(@RequestBody Map<String, Object> externalCurrInfos){
-        InscriptionRequest ir = inscriptionRepository.findById((Integer) externalCurrInfos.get("inscriptionRequestId"));
+        //An external curriculum can either be linked to an User or to an InscriptionRequest
+        InscriptionRequest ir = null;
+        User user = null;
+        if (externalCurrInfos.get("inscriptionRequestId") != null){
+            ir = inscriptionRepository.findById((Integer) externalCurrInfos.get("inscriptionRequestId"));
+        }else{
+            user = userRepository.findById((Integer) externalCurrInfos.get("userRegNo"));
+        }
 
-        ExternalCurriculum toSave = new ExternalCurriculum(ir, (String) externalCurrInfos.get("school"),(String) externalCurrInfos.get("formation"),(String) externalCurrInfos.get("completion"), (Integer)externalCurrInfos.get("startYear"), (Integer)externalCurrInfos.get("endYear"), (String)externalCurrInfos.get("justifDocUrl"), null);
+        ExternalCurriculum toSave = new ExternalCurriculum(ir, (String) externalCurrInfos.get("school"),(String) externalCurrInfos.get("formation"),(String) externalCurrInfos.get("completion"), (Integer)externalCurrInfos.get("startYear"), (Integer)externalCurrInfos.get("endYear"), (String)externalCurrInfos.get("justifDocUrl"), user);
 
         return new ResponseEntity<>(ecr.save(toSave), HttpStatus.OK);
     }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/PaymentController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/PaymentController.java
index b70ad59..9a16fb2 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/PaymentController.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/PaymentController.java
@@ -34,4 +34,12 @@ public class PaymentController {
         return new ResponseEntity<>(toReturn, HttpStatus.OK);
     }
 
+    @GetMapping("/payment")
+    public ResponseEntity<ArrayList<Payment>> getAllPayments(){
+        ArrayList<Payment> toReturn = new ArrayList<Payment>();
+
+
+        paymentRepository.findAll().forEach(toReturn::add);
+        return new ResponseEntity<>(toReturn, HttpStatus.OK);
+    }
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/RequestsController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/RequestsController.java
index 61489bf..f423984 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/RequestsController.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/Inscription/RequestsController.java
@@ -4,18 +4,23 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import ovh.herisson.Clyde.Repositories.CourseRepository;
+import ovh.herisson.Clyde.Repositories.CurriculumRepository;
+import ovh.herisson.Clyde.Repositories.Inscription.ChangeCurriculumRequestRepository;
 import ovh.herisson.Clyde.Repositories.Inscription.ExemptionsRequestRepository;
 import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository;
-import ovh.herisson.Clyde.Repositories.Inscription.UninscriptionRequestRepository;
+import ovh.herisson.Clyde.Repositories.Inscription.UnregisterRequestRepository;
+import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 import ovh.herisson.Clyde.Repositories.UserRepository;
 import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 import ovh.herisson.Clyde.Services.AuthenticatorService;
+import ovh.herisson.Clyde.Services.UserService;
 import ovh.herisson.Clyde.Tables.*;
 import ovh.herisson.Clyde.Tables.Inscription.ExemptionsRequest;
 import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest;
-import ovh.herisson.Clyde.Tables.Inscription.UninscriptionRequest;
+import ovh.herisson.Clyde.Tables.Inscription.UnregisterRequest;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Map;
 
@@ -27,16 +32,25 @@ public class RequestsController {
     public final ScholarshipRequestRepository srr;
     public final UserRepository userRepository;
     public final AuthenticatorService authServ;
-    public final UninscriptionRequestRepository uninscriptionRequestRepository;
+    public final UnregisterRequestRepository unregisterRequestRepository;
     public final CourseRepository courseRepository;
+    public final UserService userService;
+    public final UserCurriculumRepository userCurriculumRepository;
+    public final CurriculumRepository curriculumRepository;
 
-    public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr, UserRepository userRepository, AuthenticatorService authServ, UninscriptionRequestRepository uninscriptionRequestRepository, CourseRepository courseRepository) {
+    public final ChangeCurriculumRequestRepository changeCurriculumRequestRepository;
+
+    public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr, UserRepository userRepository, AuthenticatorService authServ, UnregisterRequestRepository unregisterRequestRepository, CourseRepository courseRepository, UserService userService, UserCurriculumRepository userCurriculumRepository, CurriculumRepository curriculumRepository, ChangeCurriculumRequestRepository changeCurriculumRequestRepository) {
         this.err = err;
         this.srr = srr;
         this.userRepository = userRepository;
         this.authServ = authServ;
-        this.uninscriptionRequestRepository = uninscriptionRequestRepository;
+        this.unregisterRequestRepository = unregisterRequestRepository;
         this.courseRepository = courseRepository;
+        this.userService = userService;
+        this.userCurriculumRepository = userCurriculumRepository;
+        this.curriculumRepository = curriculumRepository;
+        this.changeCurriculumRequestRepository = changeCurriculumRequestRepository;
     }
 
     @PostMapping(value="/exemptionreq")
@@ -87,11 +101,154 @@ public class RequestsController {
         return new ResponseEntity<>(toReturn, HttpStatus.OK);
     }
 
-    @PostMapping(value = "/uninscriptionreq")
+    @PostMapping(value = "/unregister")
     public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){
         User u = userRepository.findById((int) uninscr.get("userId"));
-        UninscriptionRequest ur = new UninscriptionRequest(RequestState.Pending, (String) uninscr.get("reason"), new Date(), u);
-        uninscriptionRequestRepository.save(ur);
+        Curriculum c;
+
+        if (uninscr.get("curriculumId") == null){
+            c = null;
+        }else{
+            c = curriculumRepository.findById((Integer) uninscr.get("curriculumId"));
+        }
+
+        UnregisterRequest ur = new UnregisterRequest(RequestState.Pending, (String) uninscr.get("reason"), new Date(), u.getRegNo(), u.getFirstName(), u.getLastName(), u.getEmail(), c);
+        unregisterRequestRepository.save(ur);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @PatchMapping(value = "/scholarshipreq/")
+    public ResponseEntity<String> editScholReq(@RequestBody Map<String,Object> infos){
+        ScholarshipRequest scholarshipRequest = srr.findById((Integer) infos.get("id"));
+
+        if (infos.get("state").equals("Accepted")){
+            scholarshipRequest.setState(RequestState.Accepted);
+            scholarshipRequest.setAmount((int) infos.get("amount"));
+        }else{
+            scholarshipRequest.setState(RequestState.Refused);
+        }
+
+        srr.save(scholarshipRequest);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @GetMapping(value = "/scholarshipreq/{id}")
+    public ResponseEntity<ScholarshipRequest> getScholReqbyId(@PathVariable long id){
+        ScholarshipRequest toReturn = srr.findById(id);
+        return new ResponseEntity<>(toReturn, HttpStatus.OK);
+    }
+
+    @GetMapping(value = "/unregister")
+    public ResponseEntity<ArrayList<UnregisterRequest>> getAllUnregReq(){
+        ArrayList<UnregisterRequest> toReturn = new ArrayList<>();
+        unregisterRequestRepository.findAll().forEach(toReturn::add);
+        return new ResponseEntity<>(toReturn, HttpStatus.OK);
+    }
+
+    @GetMapping(value = "/unregister/{id}")
+    public ResponseEntity<UnregisterRequest> getUnregbyId(@PathVariable long id){
+        UnregisterRequest unregisterRequest = unregisterRequestRepository.findById(id);
+        return new ResponseEntity<>(unregisterRequest, HttpStatus.OK);
+    }
+
+    @PatchMapping(value = "/unregister/{id}/{newstate}")
+    public ResponseEntity<String> pathUnregReq(@PathVariable long id, @PathVariable RequestState newstate){
+        UnregisterRequest unregisterRequest = unregisterRequestRepository.findById(id);
+        User u = userRepository.findById(unregisterRequest.getRegNo());
+        unregisterRequest.setState(newstate);
+
+        if (newstate == RequestState.Accepted){
+            if (unregisterRequest.getCurriculum() == null){
+                ArrayList<UserCurriculum> userCurricula = userCurriculumRepository.findByUserOrderByCurriculum(u);
+                for (int i = 0; i < userCurricula.size(); i++){
+                    userCurricula.get(i).setActual(false);
+                }
+                userCurriculumRepository.saveAll(userCurricula);
+            }else{
+                //This usercurriculum will contain the usercurriculum to set false
+                UserCurriculum userCurriculum = userCurriculumRepository.findByUserAndCurriculumAndActual(u, unregisterRequest.getCurriculum(), true);
+                userCurriculum.setActual(false);
+                userCurriculumRepository.save(userCurriculum);
+            }
+        }
+
+        unregisterRequestRepository.save(unregisterRequest);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @PostMapping("/changecurriculumreq")
+    public ResponseEntity<String> addChangeCurrReq(@RequestBody Map<String,Object> reqInfos){
+        User user = userRepository.findById((Integer) reqInfos.get("userId"));
+
+        Curriculum actualCurriculum;
+
+        //If null then it means we are in a supplementary cursus case
+        if (reqInfos.get("actualcursus") == null){
+            actualCurriculum = null;
+        }else{
+            actualCurriculum = curriculumRepository.findById((Integer) reqInfos.get("actualcursus"));
+        }
+
+        Curriculum destinationCurriculum = curriculumRepository.findById((Integer) reqInfos.get("newcursus"));
+
+        ChangeCurriculumRequest changeCurriculumRequest = new ChangeCurriculumRequest(user, actualCurriculum, destinationCurriculum, new Date(), RequestState.Pending);
+
+        changeCurriculumRequestRepository.save(changeCurriculumRequest);
+
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @GetMapping("/changecurriculumreq")
+    public  ResponseEntity<ArrayList <ChangeCurriculumRequest>> getAllChangeCurrReq(@RequestHeader("Authorization") String token){
+        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
+            return new UnauthorizedResponse<>(null);
+
+        ArrayList<ChangeCurriculumRequest> toReturn = new ArrayList<>();
+
+        changeCurriculumRequestRepository.findAll().forEach(toReturn::add);
+
+        return new ResponseEntity<>(toReturn, HttpStatus.OK);
+    }
+
+    @GetMapping("/changecurriculumreq/{id}")
+    public ResponseEntity<ChangeCurriculumRequest> getCCrbyId(@RequestHeader("Authorization") String token, @PathVariable long id){
+        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
+            return new UnauthorizedResponse<>(null);
+
+        ChangeCurriculumRequest toReturn = changeCurriculumRequestRepository.findById(id);
+        return new ResponseEntity<>(toReturn, HttpStatus.OK);
+    }
+
+    @PatchMapping("/changecurriculumreq/{id}/{newState}")
+    public ResponseEntity<String> editCCReq(@RequestHeader("Authorization") String token, @PathVariable long id, @PathVariable RequestState newState){
+        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
+            return new UnauthorizedResponse<>(null);
+
+        ChangeCurriculumRequest toEdit = changeCurriculumRequestRepository.findById(id);
+
+        toEdit.setState(newState);
+
+        if (newState == RequestState.Accepted){
+            //If actual curriculum is not null then we need to set that the user doesn't follow it anymore
+            User u = toEdit.getUser();
+            if (toEdit.getActualCurriculum() != null){
+                ArrayList<UserCurriculum> listcurr = userCurriculumRepository.findByUserOrderByCurriculum(u);
+
+                for (int i = 0; i < listcurr.size(); i++){
+                    if (listcurr.get(i).getCurriculum() == toEdit.getActualCurriculum()){
+                        listcurr.get(i).setActual(false);
+                    }
+                }
+
+                userCurriculumRepository.saveAll(listcurr);
+            }
+
+            Calendar c = Calendar.getInstance();
+            UserCurriculum userCurriculum = new UserCurriculum(u, toEdit.getDestinationCurriculum(), c.get(Calendar.YEAR), true);
+            userCurriculumRepository.save(userCurriculum);
+        }
+
+        changeCurriculumRequestRepository.save(toEdit);
         return new ResponseEntity<>(HttpStatus.OK);
     }
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java
index beb27fe..6ff0707 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java
@@ -6,13 +6,11 @@ import ovh.herisson.Clyde.Repositories.*;
 import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository;
 import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository;
+import ovh.herisson.Clyde.Repositories.Inscription.UnregisterRequestRepository;
 import ovh.herisson.Clyde.Services.*;
 import ovh.herisson.Clyde.Services.Inscription.InscriptionService;
 import ovh.herisson.Clyde.Tables.*;
-import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum;
-import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
-import ovh.herisson.Clyde.Tables.Inscription.Minerval;
-import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest;
+import ovh.herisson.Clyde.Tables.Inscription.*;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -40,7 +38,8 @@ public class MockController {
 
     public final ScholarshipRequestRepository scholarshipRequestRepository;
 
-    public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, ExternalCurriculumRepository externalCurriculumRepository, InscriptionService inscriptionService, UserCurriculumRepository ucr, MinervalRepository minervalRepository, ScholarshipRequestRepository scholarshipRequestRepository){
+    public final UnregisterRequestRepository uninscriptionRequestRepository;
+    public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, ExternalCurriculumRepository externalCurriculumRepository, InscriptionService inscriptionService, UserCurriculumRepository ucr, MinervalRepository minervalRepository, ScholarshipRequestRepository scholarshipRequestRepository, UnregisterRequestRepository unregisterRequestRepository){
         this.userService = userService;
         this.tokenRepo = tokenRepo;
         this.userRepo = userRepo;
@@ -53,6 +52,7 @@ public class MockController {
         this.ucr = ucr;
         this.minervalRepository = minervalRepository;
         this.scholarshipRequestRepository = scholarshipRequestRepository;
+        this.uninscriptionRequestRepository = unregisterRequestRepository;
     }
 
     /** Saves an example of each user type by :
@@ -76,6 +76,9 @@ public class MockController {
 
         userService.saveAll(mockUsers);
 
+        ExternalCurriculum externalCurriculum = new ExternalCurriculum(null, "HEH", "Bachelier en ingénieur", "completed", 2015, 2017, null, joe);
+        externalCurriculumRepository.save(externalCurriculum);
+
         Minerval minerval = new Minerval(joe.getRegNo(), 0, 852, 2023);
         minervalRepository.save(minerval);
         // Course / Curriculum part
@@ -86,20 +89,21 @@ public class MockController {
         Curriculum infoBab2 = new Curriculum(2,"info");
         Curriculum masterinfo1 = new Curriculum(4, "info");
         Curriculum masterinfo2 = new Curriculum(5, "info");
-
+        Curriculum chemistryBab2 = new Curriculum(2, "chemistry");
         curriculumService.save(infoBab1);
         curriculumService.save(chemistryBab1);
         curriculumService.save(psychologyBab1);
         curriculumService.save(infoBab2);
         curriculumService.save(masterinfo1);
         curriculumService.save(masterinfo2);
+        curriculumService.save(chemistryBab2);
 
-        ucr.save(new UserCurriculum(joe, infoBab1, 2022));
-        ucr.save(new UserCurriculum(joe, chemistryBab1, 2023));
-        ucr.save(new UserCurriculum(joe, infoBab1, 2023));
-        ucr.save(new UserCurriculum(joe, psychologyBab1, 2020));
-        ucr.save(new UserCurriculum(popo, infoBab1, 2022));
-        ucr.save(new UserCurriculum(popo, infoBab2, 2023));
+        ucr.save(new UserCurriculum(joe, infoBab1, 2022, false));
+        ucr.save(new UserCurriculum(joe, chemistryBab1, 2023, true));
+        ucr.save(new UserCurriculum(joe, infoBab1, 2023, true));
+        ucr.save(new UserCurriculum(joe, psychologyBab1, 2020, false));
+        ucr.save(new UserCurriculum(popo, infoBab1, 2022, false));
+        ucr.save(new UserCurriculum(popo, infoBab2, 2023, true));
 
         Course progra1 = new Course(5,"Programmation et algorithmique 1",joke);
         Course chemistry1 = new Course(12, "Thermochimie",joke);
@@ -129,7 +133,10 @@ public class MockController {
 
         inscriptionService.save(inscriptionRequest);
 
-        ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null);
+        UnregisterRequest unregisterRequest = new UnregisterRequest(RequestState.Pending, "je veux partir", new Date(), joe.getRegNo(), joe.getFirstName(), joe.getLastName(), joe.getEmail(), null);
+        uninscriptionRequestRepository.save(unregisterRequest);
+
+        externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null);
         externalCurriculumRepository.save(externalCurriculum);
     }
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ChangeCurriculumRequestRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ChangeCurriculumRequestRepository.java
new file mode 100644
index 0000000..0248e43
--- /dev/null
+++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ChangeCurriculumRequestRepository.java
@@ -0,0 +1,9 @@
+package ovh.herisson.Clyde.Repositories.Inscription;
+
+import org.springframework.data.repository.CrudRepository;
+import ovh.herisson.Clyde.Tables.ChangeCurriculumRequest;
+
+public interface ChangeCurriculumRequestRepository extends CrudRepository<ChangeCurriculumRequest, Long> {
+    ChangeCurriculumRequest findById(long id);
+}
+
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ScholarshipRequestRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ScholarshipRequestRepository.java
index 5550937..c0c1407 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ScholarshipRequestRepository.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/ScholarshipRequestRepository.java
@@ -4,5 +4,5 @@ import org.springframework.data.repository.CrudRepository;
 import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest;
 
 public interface ScholarshipRequestRepository extends CrudRepository<ScholarshipRequest, Long> {
-
+    public ScholarshipRequest findById(long id);
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UninscriptionRequestRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UninscriptionRequestRepository.java
deleted file mode 100644
index 6d38b8c..0000000
--- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UninscriptionRequestRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ovh.herisson.Clyde.Repositories.Inscription;
-
-import org.springframework.data.repository.CrudRepository;
-import ovh.herisson.Clyde.Tables.Inscription.UninscriptionRequest;
-
-public interface UninscriptionRequestRepository extends CrudRepository<UninscriptionRequest, Long> {
-}
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UnregisterRequestRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UnregisterRequestRepository.java
new file mode 100644
index 0000000..f6a4ebc
--- /dev/null
+++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/Inscription/UnregisterRequestRepository.java
@@ -0,0 +1,8 @@
+package ovh.herisson.Clyde.Repositories.Inscription;
+
+import org.springframework.data.repository.CrudRepository;
+import ovh.herisson.Clyde.Tables.Inscription.UnregisterRequest;
+
+public interface UnregisterRequestRepository extends CrudRepository<UnregisterRequest, Long> {
+    public UnregisterRequest findById(long l);
+}
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserCurriculumRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserCurriculumRepository.java
index 2f1c2a3..75922fa 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserCurriculumRepository.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserCurriculumRepository.java
@@ -14,4 +14,6 @@ public interface UserCurriculumRepository extends CrudRepository<UserCurriculum,
     Curriculum findByUser(User student);
 
     ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student);
+    UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual);
+
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/Inscription/InscriptionService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/Inscription/InscriptionService.java
index b889533..208471d 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Services/Inscription/InscriptionService.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Services/Inscription/InscriptionService.java
@@ -13,6 +13,7 @@ import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 import ovh.herisson.Clyde.Tables.Inscription.Minerval;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 
 @Service
 public class InscriptionService {
@@ -87,7 +88,8 @@ public class InscriptionService {
         );
 
         userService.save(userFromRequest);
-        userCurriculumRepo.save(new UserCurriculum(userFromRequest, curriculumRepo.findById(inscrRequest.getCurriculumId()),0));
+        Calendar c = Calendar.getInstance();
+        userCurriculumRepo.save(new UserCurriculum(userFromRequest, curriculumRepo.findById(inscrRequest.getCurriculumId()),c.get(Calendar.YEAR), true));
 
         //Create a minerval for the new student
         Minerval minerval = new Minerval(userFromRequest.getRegNo(), 0, 852, 2023);
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/UserCurriculumService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/UserCurriculumService.java
index 8b446df..2861a6e 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Services/UserCurriculumService.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Services/UserCurriculumService.java
@@ -35,11 +35,12 @@ public class UserCurriculumService {
             HashMap<String, Object> element = new HashMap<>();
             Curriculum c = list.get(i).getCurriculum();
 
-
             element.put("curriculumId", c.getCurriculumId());
             element.put("year", c.getYear());
             element.put("option", c.getOption());
             element.put("dateyear", list.get(i).getYear());
+            element.put("actual", list.get(i).isActual());
+
             curriculumlist.add(element);
         }
 
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java
index 5c39891..77a7074 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java
@@ -19,5 +19,6 @@ public enum Applications {
 
     // InscriptionService authorization
     Requests,
-    StudentsList
+    StudentsList,
+    Payments
 }
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ChangeCurriculumRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ChangeCurriculumRequest.java
new file mode 100644
index 0000000..72feebd
--- /dev/null
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ChangeCurriculumRequest.java
@@ -0,0 +1,83 @@
+package ovh.herisson.Clyde.Tables;
+
+import jakarta.persistence.*;
+
+import java.util.Date;
+
+@Entity
+public class ChangeCurriculumRequest {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private int id;
+
+    @ManyToOne
+    @JoinColumn(name="Users")
+    private User user;
+
+    @ManyToOne
+    @JoinColumn(name = "ActualCurriculum")
+    private Curriculum actualCurriculum;
+
+    @ManyToOne
+    @JoinColumn(name = "DestCurriculum")
+    private Curriculum destinationCurriculum;
+
+    private Date date;
+
+    private RequestState state;
+
+    public ChangeCurriculumRequest(){}
+
+    public ChangeCurriculumRequest(User user, Curriculum actualCurriculum, Curriculum destinationCurriculum, Date date, RequestState state){
+        this.user = user;
+        this.actualCurriculum = actualCurriculum;
+        this.destinationCurriculum = destinationCurriculum;
+        this.date = date;
+        this.state = state;
+    }
+
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+
+    public Curriculum getActualCurriculum() {
+        return actualCurriculum;
+    }
+
+    public void setActualCurriculum(Curriculum actualCurriculum) {
+        this.actualCurriculum = actualCurriculum;
+    }
+
+    public Curriculum getDestinationCurriculum() {
+        return destinationCurriculum;
+    }
+
+    public void setDestinationCurriculum(Curriculum destinationCurriculum) {
+        this.destinationCurriculum = destinationCurriculum;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public RequestState getState() {
+        return state;
+    }
+
+    public void setState(RequestState state) {
+        this.state = state;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/Payment.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/Payment.java
index 48626e1..5f4fbf9 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/Payment.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/Payment.java
@@ -12,7 +12,6 @@ public class Payment {
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private long id;
-
     private long studentRegNo;
     private String card;
     private String client;
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/ScholarshipRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/ScholarshipRequest.java
index 18ebee6..842bf90 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/ScholarshipRequest.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/ScholarshipRequest.java
@@ -7,15 +7,16 @@ import ovh.herisson.Clyde.Tables.RequestState;
 import ovh.herisson.Clyde.Tables.User;
 
 import java.util.Date;
+import java.util.Map;
 
 @Entity
 public class ScholarshipRequest {
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private long id;
-
     @JoinColumn(name="Users")
     @ManyToOne(fetch = FetchType.EAGER)
+    @OnDelete(action = OnDeleteAction.CASCADE)
     private User user;
     private RequestState state;
     private Date date;
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UninscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UninscriptionRequest.java
deleted file mode 100644
index e7858c6..0000000
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UninscriptionRequest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package ovh.herisson.Clyde.Tables.Inscription;
-
-import jakarta.persistence.*;
-import ovh.herisson.Clyde.Tables.RequestState;
-import ovh.herisson.Clyde.Tables.User;
-
-import java.util.Date;
-
-@Entity
-public class UninscriptionRequest {
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-    private RequestState state;
-    private String reason;
-    private Date date;
-
-    @JoinColumn(name = "Users")
-    @ManyToOne(fetch = FetchType.EAGER)
-    private User user;
-
-    public UninscriptionRequest(RequestState state,String reason, Date date, User user){
-        this.state = state;
-        this.reason = reason;
-        this.date = date;
-        this.user = user;
-    }
-
-    public UninscriptionRequest(){}
-
-    public RequestState getState() {
-        return state;
-    }
-
-    public void setState(RequestState state) {
-        this.state = state;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public User getUser() {
-        return user;
-    }
-
-    public void setUser(User user) {
-        this.user = user;
-    }
-
-    public void setDate(Date date) {
-        this.date = date;
-    }
-
-    public Date getDate() {
-        return date;
-    }
-}
-
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UnregisterRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UnregisterRequest.java
new file mode 100644
index 0000000..9127ecb
--- /dev/null
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Inscription/UnregisterRequest.java
@@ -0,0 +1,115 @@
+package ovh.herisson.Clyde.Tables.Inscription;
+
+import jakarta.persistence.*;
+import ovh.herisson.Clyde.Tables.Curriculum;
+import ovh.herisson.Clyde.Tables.RequestState;
+import ovh.herisson.Clyde.Tables.User;
+
+import java.util.Date;
+
+@Entity
+public class UnregisterRequest {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+    private RequestState state;
+    private String reason;
+    private Date date;
+
+    //We store these informations again so if the user is deleted we still have the informations for history
+    private long regNo;
+
+    private String firstName;
+
+    private String lastName;
+
+    private String email;
+
+    //Null if the user unregister for the academic year, contains a curriculum if the user wants to unregister from a specific curriculum
+    @ManyToOne
+    @JoinColumn(name = "Curriculum")
+    private Curriculum curriculum;
+
+    public UnregisterRequest(RequestState state, String reason, Date date, long regNo, String firstName, String lastName, String email, Curriculum curriculum){
+        this.state = state;
+        this.reason = reason;
+        this.date = date;
+        this.regNo = regNo;
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.curriculum = curriculum;
+    }
+
+    public UnregisterRequest(){}
+
+    public RequestState getState() {
+        return state;
+    }
+
+    public void setState(RequestState state) {
+        this.state = state;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public void setRegNo(long regNo) {
+        this.regNo = regNo;
+    }
+
+    public long getRegNo() {
+        return regNo;
+    }
+
+    public void setCurriculum(Curriculum curriculum) {
+        this.curriculum = curriculum;
+    }
+
+    public Curriculum getCurriculum() {
+        return curriculum;
+    }
+
+}
+
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java
index ea3f8d6..b21738e 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java
@@ -1,6 +1,9 @@
 package ovh.herisson.Clyde.Tables;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
+import org.hibernate.annotations.OnDelete;
+import org.hibernate.annotations.OnDeleteAction;
 import org.hibernate.annotations.GenericGenerator;
 import ovh.herisson.Clyde.Tables.Msg.Discussion;
 import ovh.herisson.Clyde.Tables.Msg.Message;
@@ -8,9 +11,6 @@ import ovh.herisson.Clyde.Tables.Msg.Message;
 import java.util.Date;
 import java.util.List;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-
 @Entity
 @Table(name = "Users")
 public class User {
@@ -27,6 +27,7 @@ public class User {
     private Date birthDate;
     private String profilePictureUrl;
     private Role role;
+
 	@JsonIgnore
     private String password;
 
diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java
index b79295b..395eca7 100644
--- a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java
+++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java
@@ -23,10 +23,14 @@ public class UserCurriculum {
 
     private int year;
 
-    public UserCurriculum(User user, Curriculum curriculum, int year){
+    //True if the user has that curriculum at the moment false if not
+    private boolean actual;
+
+    public UserCurriculum(User user, Curriculum curriculum, int year, boolean actual){
         this.user = user;
         this.curriculum = curriculum;
         this.year = year;
+        this.actual = actual;
     }
 
     public UserCurriculum() {}
@@ -58,4 +62,12 @@ public class UserCurriculum {
     public void setYear(int year) {
         this.year = year;
     }
+
+    public void setActual(boolean actual) {
+        this.actual = actual;
+    }
+
+    public boolean isActual() {
+        return actual;
+    }
 }
diff --git a/frontend/public/i18n/EN.txt b/frontend/public/i18n/EN.txt
index e79a8a1..2e860ac 100644
--- a/frontend/public/i18n/EN.txt
+++ b/frontend/public/i18n/EN.txt
@@ -28,6 +28,7 @@ app.language=Language
 app.manage.profile=Manage profile
 app.studentList=Students List
 app.users=Users
+app.payments = Payments
 request.moreInfos=More Infos
 request.accept=Accept
 request.refuse=Refuse
diff --git a/frontend/public/i18n/FR.txt b/frontend/public/i18n/FR.txt
index c5f3ebf..de9af13 100644
--- a/frontend/public/i18n/FR.txt
+++ b/frontend/public/i18n/FR.txt
@@ -28,6 +28,7 @@ app.language=Langue
 app.manage.profile=Gérer le profil
 app.studentList=Liste des étudiants
 app.users=Utilisateurs
+app.payments = Payements
 request.moreInfos=Plus d'Infos
 request.accept=Accepter
 request.refuse=Refuser
@@ -52,3 +53,4 @@ Curriculum=Cursus
 Credits=Credits
 InscriptionService=S.I.
 faculty=Faculté
+
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 40fbbc6..0ab750a 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -25,7 +25,6 @@ window.addEventListener('hashchange', () => {
   const login=ref(i18n("app.login"))
   const active=ref(false)
 
-
 	const apps = ref([])
 	appList().then(e => apps.value = e)
 
@@ -33,7 +32,6 @@ window.addEventListener('hashchange', () => {
 
 <template>
   <div class="container">
-
     <div class="topBar">
       <ul class="horizontal">
         <li title=home>
@@ -69,7 +67,6 @@ window.addEventListener('hashchange', () => {
                     {{i18n("app.manage.profile")}}
                   </a>
                   </div>
-
                 </div>
             </a></li>
       </ul>
diff --git a/frontend/src/Apps/Inscription/AboutChangeCurriculum.vue b/frontend/src/Apps/Inscription/AboutChangeCurriculum.vue
new file mode 100644
index 0000000..1427446
--- /dev/null
+++ b/frontend/src/Apps/Inscription/AboutChangeCurriculum.vue
@@ -0,0 +1,115 @@
+<script setup>
+
+import {
+  addUninscReq, editChangeCurrReq,
+  editScholarshipReq,
+  editUnregReq, getChangeCurrReqById,
+  getScholarshipReqById,
+  getUnregisterbyId
+} from "@/rest/requests.js";
+import i18n from "@/i18n.js";
+import {getUser} from "@/rest/Users.js";
+import {reactive, ref} from "vue";
+import AboutStudent from "@/Apps/Inscription/AboutStudent.vue";
+
+const props = defineProps(["reqId"])
+const req = ref(await getChangeCurrReqById(props.reqId))
+
+
+//0 liste, 1 profil
+const windowstate = ref(0);
+
+const tag = req.value.user.regNo
+
+async function uploadandrefreshChangeRequest(state){
+    await editChangeCurrReq(req.value.id, state);
+}
+</script>
+
+
+<template>
+  <div class="body" v-if="windowstate === 0">
+    <div class="container">
+      <div class="globalInfos">
+        <div class="infosContainer">
+          <div>
+            Firstname/Name : {{req.user.firstName}} {{req.user.lastName}}
+          </div>
+          <div>
+            regNo : {{req.user.regNo}}
+          </div>
+          <div v-if="req.actualCurriculum !== null">
+            From : Bac {{req.actualCurriculum.year}} {{req.actualCurriculum.option}}
+            To : Bac {{req.destinationCurriculum.year}} {{req.destinationCurriculum.option}}
+          </div>
+          <div v-else>
+            Wanted cursus : Bac {{req.destinationCurriculum.year}} {{req.destinationCurriculum.option}}
+          </div>
+          <div>
+            <button @click="windowstate++"> See profile </button>
+          </div>
+          <div>
+            <button v-if="req.state === 'Pending'" @click="req.state='Accepted';uploadandrefreshChangeRequest('Accepted')">Accept</button>
+            <button v-if="req.state === 'Pending'" @click="req.state='Refused';uploadandrefreshChangeRequest('Refused')" style="margin-left: 2%;">Refuse</button>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div v-if="windowstate === 1">
+    <AboutStudent :target="tag"></AboutStudent>
+    <button @click="windowstate--;">Return to request</button>
+  </div>
+</template>
+
+<style scoped>
+.container{
+  min-width:675px;
+  display:grid;
+  grid-template-columns:10vw 50vw;
+  grid-template-rows:200px auto;
+  column-gap:2.7%;
+  row-gap:45px;
+  grid-template-areas:
+  "profilPic globalInfos"
+  "minfos minfos";
+}
+
+.profilPic{
+  width:100%;
+  grid-area:profilPic;
+}
+
+.globalInfos {
+  grid-area:globalInfos;
+  align-self :center;
+
+}
+
+.body {
+  min-width:960px;
+  width:100%;
+  display:flex;
+  align-items:center;
+  justify-content:center;
+  margin-top:7%;
+}
+
+.subContainter{
+  width:100%;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+  border:4px solid black;
+}
+
+.infosContainer {
+  min-width:350px;
+  padding-bottom:50px;
+  border:2px solid black;
+  font-size:25px;
+  color:white;
+  padding:20px;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+}
+</style>
\ No newline at end of file
diff --git a/frontend/src/Apps/Inscription/AboutScholarship.vue b/frontend/src/Apps/Inscription/AboutScholarship.vue
new file mode 100644
index 0000000..c48cf90
--- /dev/null
+++ b/frontend/src/Apps/Inscription/AboutScholarship.vue
@@ -0,0 +1,124 @@
+<script setup>
+
+import {addUninscReq, editScholarshipReq, getScholarshipReqById} from "@/rest/requests.js";
+import i18n from "@/i18n.js";
+import {getUser} from "@/rest/Users.js";
+import {reactive, ref} from "vue";
+
+const props = defineProps(["reqId"])
+const req = ref(await getScholarshipReqById(props.reqId))
+
+const user = req.value.user;
+
+const scholarshipData = reactive({
+  amount : 0,
+  id : req.value.id,
+  state : ""
+})
+
+function getPP(){
+  if(user.profilePictureUrl === null){
+    return "/Clyde.png"
+  }
+  return user.profilePictureUrl
+}
+
+async function uploadandrefreshScholarshipRequest(){
+  await editScholarshipReq(scholarshipData);
+  req.value = await getScholarshipReqById(props.reqId);
+}
+</script>
+
+
+<template>
+  <div class="body">
+    <div class="container">
+      <div class="profilPic">
+        <img class="subContainter" :src=getPP()>
+      </div>
+      <div class="globalInfos">
+        <div class="infosContainer">
+          <div>
+            Firstname/Name : {{user.firstName}} {{user.lastName}}
+          </div>
+          <div>
+            E-mail: {{user.email}}
+          </div>
+          <div>
+            Adresse : {{user.address}}
+          </div>
+          <div>
+            Country : {{user.country}}
+          </div>
+          <div>
+            Birthdate : {{user.birthDate.slice(0,10)}}
+          </div>
+          <div>
+            <button>Download tax justif document</button>
+            <button style="margin-left: 2%">Download residency justif document</button>
+          </div>
+          <div v-if="req.state == 'Pending'">
+            Please enter the amount to provide :
+            <input type="number" v-model="scholarshipData.amount">
+          </div>
+          <div>
+            <button v-if="req.state === 'Pending'" @click="scholarshipData.state='Accepted';uploadandrefreshScholarshipRequest()">Accept</button>
+            <button v-if="req.state === 'Pending'" @click="scholarshipData.state='Refused';uploadandrefreshScholarshipRequest()" style="margin-left: 2%;">Refuse</button>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.container{
+  min-width:675px;
+  display:grid;
+  grid-template-columns:10vw 50vw;
+  grid-template-rows:200px auto;
+  column-gap:2.7%;
+  row-gap:45px;
+  grid-template-areas:
+  "profilPic globalInfos"
+  "minfos minfos";
+}
+
+.profilPic{
+  width:100%;
+  grid-area:profilPic;
+}
+
+.globalInfos {
+  grid-area:globalInfos;
+  align-self :center;
+
+}
+
+.body {
+  min-width:960px;
+  width:100%;
+  display:flex;
+  align-items:center;
+  justify-content:center;
+  margin-top:7%;
+}
+
+.subContainter{
+  width:100%;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+  border:4px solid black;
+}
+
+.infosContainer {
+  min-width:350px;
+  padding-bottom:50px;
+  border:2px solid black;
+  font-size:25px;
+  color:white;
+  padding:20px;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+}
+</style>
\ No newline at end of file
diff --git a/frontend/src/Apps/Inscription/AboutStudent.vue b/frontend/src/Apps/Inscription/AboutStudent.vue
index 03368c2..91fb89f 100644
--- a/frontend/src/Apps/Inscription/AboutStudent.vue
+++ b/frontend/src/Apps/Inscription/AboutStudent.vue
@@ -66,9 +66,9 @@
           </div>
           <div  class="listElement">
             <div class=" containerElement" v-for="item in UserCurriculum.curriculumList">
-              <div class="year" v-if="parseInt(item.dateyear) !== getYear()">Bac {{item.year}}</div>
-              <div class="option" v-if="parseInt(item.dateyear) !== getYear()">{{item.option}}</div>
-              <div class="dateyear" v-if="parseInt(item.dateyear) !== getYear()">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
+              <div class="year" v-if="item.actual === false">Bac {{item.year}}</div>
+              <div class="option" v-if="item.actual === false">{{item.option}}</div>
+              <div class="dateyear" v-if="item.actual === false">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
             </div>
           </div>
         </div>
@@ -78,9 +78,9 @@
           </div>
           <div  class="listElement">
             <div class=" containerElement" v-for="item in UserCurriculum.curriculumList" >
-                <div class="year" v-if="parseInt(item.dateyear) === getYear()">Bac {{item.year}}</div>
-                <div class="option" v-if="parseInt(item.dateyear) === getYear()">{{item.option}}</div>
-                <div class="dateyear" v-if="parseInt(item.dateyear) === getYear()">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
+                <div class="year" v-if="item.actual === true">Bac {{item.year}}</div>
+                <div class="option" v-if="item.actual === true">{{item.option}}</div>
+                <div class="dateyear" v-if="item.actual === true">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
             </div>
           </div>
         </div>
@@ -88,7 +88,7 @@
     </div>
   </div>
   <div v-if="extercurrlist==true">
-      <ExternalCurriculumList :ext-curr-list="externalcurrlist"></ExternalCurriculumList>
+      <ExternalCurriculumList :ext-curr-list="externalcurrlist" :mode="1"></ExternalCurriculumList>
   </div>
 </template>
 
diff --git a/frontend/src/Apps/Inscription/AboutUnregister.vue b/frontend/src/Apps/Inscription/AboutUnregister.vue
new file mode 100644
index 0000000..fe8f001
--- /dev/null
+++ b/frontend/src/Apps/Inscription/AboutUnregister.vue
@@ -0,0 +1,109 @@
+<script setup>
+
+import {
+  addUninscReq,
+  editScholarshipReq,
+  editUnregReq,
+  getScholarshipReqById,
+  getUnregisterbyId
+} from "@/rest/requests.js";
+import i18n from "@/i18n.js";
+import {getUser} from "@/rest/Users.js";
+import {reactive, ref} from "vue";
+
+const props = defineProps(["reqId"])
+const req = ref(await getUnregisterbyId(props.reqId))
+
+function getPP(){
+  if(user.profilePictureUrl === null){
+    return "/Clyde.png"
+  }
+  return user.profilePictureUrl
+}
+
+async function uploadandrefreshUnregRequest(state){
+  await editUnregReq(req.value.id, state)
+  req.value.state = state
+}
+</script>
+
+
+<template>
+  <div class="body">
+    <div class="container">
+      <div class="globalInfos">
+        <div class="infosContainer">
+          <div>
+            Firstname/Name : {{req.firstName}} {{req.lastName}}
+          </div>
+          <div>
+            E-mail: {{req.email}}
+          </div>
+          <div>
+            regNo : {{req.regNo}}
+          </div>
+          <div>
+            Reason :
+            <input type="text" v-model="req.reason" readonly/>
+          </div>
+          <div>
+            <button v-if="req.state === 'Pending'" @click="req.state='Accepted';uploadandrefreshUnregRequest('Accepted')">Accept</button>
+            <button v-if="req.state === 'Pending'" @click="req.state='Refused';uploadandrefreshUnregRequest('Refused')" style="margin-left: 2%;">Refuse</button>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.container{
+  min-width:675px;
+  display:grid;
+  grid-template-columns:10vw 50vw;
+  grid-template-rows:200px auto;
+  column-gap:2.7%;
+  row-gap:45px;
+  grid-template-areas:
+  "profilPic globalInfos"
+  "minfos minfos";
+}
+
+.profilPic{
+  width:100%;
+  grid-area:profilPic;
+}
+
+.globalInfos {
+  grid-area:globalInfos;
+  align-self :center;
+
+}
+
+.body {
+  min-width:960px;
+  width:100%;
+  display:flex;
+  align-items:center;
+  justify-content:center;
+  margin-top:7%;
+}
+
+.subContainter{
+  width:100%;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+  border:4px solid black;
+}
+
+.infosContainer {
+  min-width:350px;
+  padding-bottom:50px;
+  border:2px solid black;
+  font-size:25px;
+  color:white;
+  padding:20px;
+  background-color:rgb(50,50,50);
+  border-radius:20px;
+}
+</style>
\ No newline at end of file
diff --git a/frontend/src/Apps/Inscription/ExternalCurriculumList.vue b/frontend/src/Apps/Inscription/ExternalCurriculumList.vue
index a642840..eba1cdf 100644
--- a/frontend/src/Apps/Inscription/ExternalCurriculumList.vue
+++ b/frontend/src/Apps/Inscription/ExternalCurriculumList.vue
@@ -1,25 +1,91 @@
 <script setup>
   import i18n from "@/i18n.js";
-  import {ref} from "vue";
+  import {reactive, ref} from "vue";
+  import {getSelf} from "@/rest/Users.js";
+  import {createExternalCurriculum, getExternalCurriculumByUser} from "@/rest/externalCurriculum.js";
 
-  const props = defineProps(["extCurrList"])
+  //mode 0 = externalcurr related to inscrreq, 1 = externalcurr related to user
+  const props = defineProps(["extCurrList", "mode"])
 
   const extCurrList = ref(props.extCurrList)
-  console.log(extCurrList)
+
+  const User = await getSelf()
+
+  const list = ref(true)
+
+  const notcompletedCheck = ref(false);
+
+  const externalCurr = reactive({
+    inscriptionRequestId : null,
+    school:null,
+    formation :null,
+    completion : "completed",
+    startYear : 0,
+    endYear: 0,
+    justifdocUrl : null,
+    userRegNo : null
+  })
+
+  if (props.mode === 1){
+    externalCurr.userRegNo = props.extCurrList[0].user.regNo
+  }
+
+  async function postExternalCurr(){
+    await createExternalCurriculum(externalCurr.inscriptionRequestId, externalCurr.school, externalCurr.formation, externalCurr.completion, externalCurr.startYear, externalCurr.endYear, externalCurr.justifdocUrl, externalCurr.userRegNo);
+    //We refresh the list
+    extCurrList.value = await getExternalCurriculumByUser(externalCurr.userRegNo);
+    list.value = !list.value;
+  }
 </script>
 
 <template style="margin-top:5%;">
-  <div style="display:flex; justify-content:center; " v-for="item in extCurrList">
-    <div class="bodu">
-      <div class="container">
-        <div class="status"><a style="margin-left:30px">{{item.state}}</a></div>
-        <div class="school"><a>{{item.school}}</a></div>
-        <div class="formation"><a>{{item.formation}}</a></div>
-        <div class="completion"><a>{{item.completion}}</a></div>
-        <div class="download"><button>Download document</button></div>
+  <div v-if="list">
+    <div v-if="User.regNo === externalCurr.userRegNo" style="margin-left: 2%;margin-top: 2%">
+      <button @click="list = !list">Add external curriculum</button>
+    </div>
+    <div style="display:flex; justify-content:center; " v-for="item in extCurrList">
+      <div class="bodu">
+        <div class="container">
+          <div class="status"><a style="margin-left:30px">{{item.state}}</a></div>
+          <div class="school"><a>{{item.school}}</a></div>
+          <div class="formation"><a>{{item.formation}}</a></div>
+          <div class="completion"><a>{{item.completion}}</a></div>
+          <div class="download"><button>Download document</button></div>
+        </div>
       </div>
     </div>
   </div>
+  <div v-else class="loginbox" style="margin-left: 35%; margin-top: 3%">
+    <form class="form">
+      <div class="inputBox">
+        <p>Ecole</p>
+        <input type="text" v-model="externalCurr.school">
+      </div>
+      <div class="inputBox">
+        <p>Formation</p>
+        <input type="text" v-model="externalCurr.formation">
+      </div>
+      <div class="inputBox">
+        <p>Cochez la case si vous n'avez terminé cette formation</p>
+        <input v-model="notcompletedCheck" type="checkbox" id="checkboxformation">
+        <div v-if="notcompletedCheck">
+          <p>En quelle année de la formation vous êtes vous arrété (exemple: 3ème) ?</p>
+          <input type="text" v-model="externalCurr.completion">
+        </div>
+      </div>
+      <div class="inputBox">
+        <p>Année de début</p>
+        <input type="number" v-model="externalCurr.startYear">
+      </div>
+      <div class="inputBox">
+        <p>Année de fin</p>
+        <input type="number" v-model="externalCurr.endYear">
+      </div>
+      <div class="inputBox" style="margin-top: 3%; margin-bottom: 3%">
+        <input type="submit" value="Upload curriculum" @click="postExternalCurr()">
+      </div>
+    </form>
+  </div>
 </template>
 
 <style scoped>
@@ -61,18 +127,12 @@
   font-size: 70%;
 }
 
+
 .download{
   grid-area: download;
   align-self:center;
 }
-button{
-  font-size:15px;
-  height:50px;
-  width:75%;
-  border:none;
-  border-radius:20px;
 
-}
 
 .bodu {
   margin-top:2%;
@@ -82,6 +142,43 @@ button{
   background-color:rgb(50,50,50);
 }
 
+.loginbox {
+  background-color: rgb(24,24,24);
+  width: 400px;
+  display:flex;
+  justify-content: center;
+  border-radius: 5%;
+  box-shadow:0 5px 25px #000000;
+}
 
+.form {
+  position:relative;
+  width:100%;
+  display: flex;
+  flex-direction: column;
+  align-items:center;
+  gap: 3%;
+}
+
+.inputBox input,select {
+  width:100%;
+  border: none;
+  margin-right: 12.5%;
+  padding-left: 2.5%;
+  padding-top:2.5%;
+  padding-bottom:2.5%;
+  outline:none;
+  border-radius: 10px;
+  font-size:1.35em;
+}
+
+.inputBox p{
+  position:relative;
+  z-index: 100;
+  font-family:sans-serif ;
+  color:rgb(239,60,168);
+  transition: 0.5;
+
+}
 </style>
 
diff --git a/frontend/src/Apps/Inscription/ManageRequests.vue b/frontend/src/Apps/Inscription/ManageRequests.vue
index e45a1a5..cb8345e 100644
--- a/frontend/src/Apps/Inscription/ManageRequests.vue
+++ b/frontend/src/Apps/Inscription/ManageRequests.vue
@@ -3,7 +3,15 @@
   import {ref} from 'vue'
   import {validateRegister, getAllRegisters } from '@/rest/ServiceInscription.js'
   import AboutRequest from "@/Apps/Inscription/AboutRequest.vue";
-  import {getAllExemptionsRequest, getAllScholarShipsRequest} from "@/rest/requests.js";
+  import {
+    getAllChangeCurrReq,
+    getAllExemptionsRequest,
+    getAllScholarShipsRequest,
+    getAllUnregisters
+  } from "@/rest/requests.js";
+  import AboutScholarship from "@/Apps/Inscription/AboutScholarship.vue";
+  import AboutUnregister from "@/Apps/Inscription/AboutUnregister.vue";
+  import AboutChangeCurriculum from "@/Apps/Inscription/AboutChangeCurriculum.vue";
 
   const requests = ref(await getAllRegisters());
   let targetId = "";
@@ -11,7 +19,7 @@
   const requestType = ref("inscription");
   const filterType = ref("None");
 
-  //0 = liste, 1 = détails, 2 = sure?
+  //0 = liste, 1 = détails, 2 = sure?, 3 = manage scholarship, 4 manage unregister, 5 = manage curriculum change
   let windowsState = ref(0);
 
   async function upPage(id,review){
@@ -21,14 +29,21 @@
   }
 
   async function loadRequests(){
-    if (requestType.value === "inscription"){
-      requests.value = await getAllRegisters();
-    }
-    if (requestType.value === "scholarship"){
-      requests.value = await getAllScholarShipsRequest();
-    }
-    if(requestType.value === "exemption"){
-      requests.value = await getAllExemptionsRequest();
+    switch (requestType.value){
+      case "inscription":
+        requests.value = await getAllRegisters();
+        break;
+      case "scholarship":
+        requests.value = await getAllScholarShipsRequest();
+        break;
+      case "exemption":
+        requests.value = await getAllExemptionsRequest();
+        break;
+      case "unregister":
+        requests.value = await getAllUnregisters();
+        break;
+      case "curriculum change":
+        requests.value = await getAllChangeCurrReq();
     }
   }
 </script>
@@ -46,6 +61,8 @@
         <option>inscription</option>
         <option>scholarship</option>
         <option>exemption</option>
+        <option>unregister</option>
+        <option>curriculum change</option>
       </select>
       <span style="margin-left: 5%">
         Filter :
@@ -79,7 +96,7 @@
           <div class="studentfirstname">{{item.user.firstName}}</div>
           <div class="studentlastname">{{item.user.lastName}}</div>
           <div class="reqState">{{item.state}}</div>
-          <div class="infos"><button>More infos</button></div>
+          <div class="infos" @click="windowsState = 3; targetId=item.id;"><button>More infos</button></div>
         </div>
         <div class="container" style="grid-template-columns:17% 15% 12% 15% 25%;grid-template-areas:'date reqState studentfirstname studentlastname course infos';"v-if="requestType === 'exemption'">
           <div class="date" v-if="item.date != undefined">{{item.date.slice(0,10)}}</div>
@@ -89,6 +106,21 @@
           <div class="reqState">{{item.state}}</div>
           <div class="infos"><button>More infos</button></div>
         </div>
+        <div class="container" v-if="requestType === 'unregister'" style="grid-template-columns:17% 15% 12% 15%;grid-template-areas:'date reqState regno studentfirstname studentlastname infos';">
+          <div class="date" v-if="item.date != undefined">{{item.date.slice(0,10)}}</div>
+          <div class="studentfirstname">{{item.firstName}}</div>
+          <div class="studentlastname">{{item.lastName}}</div>
+          <div class="regno">id : {{item.regNo}}</div>
+          <div class="reqState">{{item.state}}</div>
+          <div class="infos"><button @click="windowsState=4;targetId=item.id">More infos</button></div>
+        </div>
+        <div class="container" v-if="requestType === 'curriculum change'" style="grid-template-columns:17% 15% 12% 15%;grid-template-areas:'date reqState regno studentfirstname studentlastname infos';">
+          <div class="date" v-if="item.date != undefined">{{item.date.slice(0,10)}}</div>
+          <div class="studentfirstname">{{item.user.firstName}}</div>
+          <div class="studentlastname">{{item.user.lastName}}</div>
+          <div class="reqState">{{item.state}}</div>
+          <div class="infos"><button @click="windowsState=5;targetId=item.id">More infos</button></div>
+        </div>
       </div>
     </div>
   </div>
@@ -97,6 +129,18 @@
     <button style="background-color:rgb(105,05,105);" @click="upPage(targetId,'Accepted');windowsState=0;">Valider</button>
     <button style="background-color:rgb(105,05,105);" @click="windowsState=0;">Retour</button>
   </div>
+  <div v-if="windowsState === 3">
+    <AboutScholarship :req-id="targetId"></AboutScholarship>
+    <div>
+      <button style="margin-left: 30%" @click="loadRequests();windowsState=0">Back</button>
+    </div>
+  </div>
+  <div v-if="windowsState === 4">
+    <AboutUnregister :req-id="targetId"></AboutUnregister>
+  </div>
+  <div v-if="windowsState === 5">
+    <AboutChangeCurriculum :req-id="targetId"></AboutChangeCurriculum>
+  </div>
 </template>
 
 <style scoped>
@@ -151,6 +195,10 @@
     align-self:center;
   }
 
+  .regno{
+    grid-area: regno;
+    align-self: center;
+  }
   .state{
     grid-area:state;
     margin-left:40px;
diff --git a/frontend/src/Apps/Inscription/PaymentInfo.vue b/frontend/src/Apps/Inscription/PaymentInfo.vue
new file mode 100644
index 0000000..f24226d
--- /dev/null
+++ b/frontend/src/Apps/Inscription/PaymentInfo.vue
@@ -0,0 +1,77 @@
+<script setup>
+import i18n from "@/i18n.js";
+import {ref} from "vue";
+import {getAllPayments} from "@/rest/requests.js";
+
+const paymentsList = await getAllPayments()
+</script>
+
+<template style="margin-top:5%;">
+  <div style="display:flex; justify-content:center; " v-for="item in paymentsList">
+    <div class="bodu">
+      <div class="container">
+        <div class="regNo"><a style="margin-left:30px">RegNo : {{item.studentRegNo}}</a></div>
+        <div class="client"><a>Client : {{item.client}}</a></div>
+        <div class="amount"><a>Amount : {{item.amount}}</a></div>
+        <div class="date" style="margin-left: 10%">{{item.date.slice(0,10)}}</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.container{
+  color:white;
+  height:100px;
+  font-size:30px;
+  display:grid;
+  grid-template-columns:20% 25% 15% 17%;
+  grid-template-areas:
+    "date regNo client amount";
+  column-gap:10px;
+}
+
+.regNo {
+  grid-area:regNo;
+  align-self:center;
+  font-size: 70%;
+}
+
+.client{
+  grid-area:client;
+  align-self:center;
+  font-size: 70%;
+}
+
+.amount{
+  grid-area:amount;
+  align-self:center;
+  font-size: 70%;
+}
+
+.date{
+  grid-area:date;
+  align-self:center;
+  font-size: 70%;
+}
+
+button{
+  font-size:15px;
+  height:50px;
+  width:75%;
+  border:none;
+  border-radius:20px;
+
+}
+
+.bodu {
+  margin-top:2%;
+  width:66%;
+  border:2px solid black;
+  border-radius:9px;
+  background-color:rgb(50,50,50);
+}
+
+
+</style>
+
diff --git a/frontend/src/Apps/Login.vue b/frontend/src/Apps/Login.vue
index 5b0a807..705012f 100644
--- a/frontend/src/Apps/Login.vue
+++ b/frontend/src/Apps/Login.vue
@@ -53,7 +53,7 @@
     setTimeout(() => {
       window.location.href="#/home";
       }, "500");
- } 
+  }
   function verifyInputs(pass){
     if(pass==passwordConfirm.value){
       page.value++;
@@ -83,13 +83,6 @@
     }
   }
 
-  async function getCurriculumYear(curriculumId){
-    const curriculum = await getcurriculum(curriculumId);
-    return parseInt(curriculum.year);
-  }
-
-
-
   //Post the register request and return the id of the newly created request and also post the external curriculum list in the database
   async function postRegisterReq(){
     const val = await register(outputs.firstname, outputs.surname, outputs.birthday, outputs.password, outputs.email, outputs.address, outputs.country, outputs.curriculum, ppData, null, new Date(), outputs.equivalenceState);
@@ -107,7 +100,7 @@
 
 <template>
     <div class="setup">
-        <div v-if="loginPage">
+      <div v-if="loginPage">
       <div class='loginBox' style="margin-top:30%;">
           <form @submit.prevent="login(outputs.email,outputs.password);goBackHome();"class="form">
             <h1 style="color:rgb(239,60,168); font-family: sans-serif;">
@@ -295,7 +288,6 @@
   justify-content: center;
   border-radius: 5%;
   box-shadow:0 5px 25px #000000;
-  
 }
 .form {
   position:relative;
diff --git a/frontend/src/Apps/Profil.vue b/frontend/src/Apps/Profil.vue
index f0a7c2b..70e2451 100644
--- a/frontend/src/Apps/Profil.vue
+++ b/frontend/src/Apps/Profil.vue
@@ -1,19 +1,23 @@
 <script setup>
   import {reactive, ref } from 'vue'
   import {getSelf,alterSelf,disconnect,deleteUser} from '../rest/Users.js'
-  import {getSelfCurriculum, getAllCurriculums, getSomeonesCurriculumList} from '../rest/curriculum.js'
+  import {getSelfCurriculum, getAllCurriculums, getSomeonesCurriculumList, getcurriculum} from '../rest/curriculum.js'
   import {getCourses} from "../rest/courses.js"
   import i18n from "@/i18n.js"
   import {uploadFile, uploadProfilePicture} from '@/rest/uploads.js'
   import CourseList from "@/Apps/Inscription/CourseList.vue";
   import {editMinerval, getCurrentMinerval} from "@/rest/minerval.js";
   import {postPayment} from "@/rest/payment.js";
-  import {addUninscReq, createScholarshipRequest} from "@/rest/requests.js";
+  import {addUninscReq, createScholarshipRequest, postChangeCurrReq} from "@/rest/requests.js";
+  import ExternalCurriculumList from "@/Apps/Inscription/ExternalCurriculumList.vue";
+  import {getExternalCurriculumByUser} from "@/rest/externalCurriculum.js";
 
   const user = ref(await getSelf());
   const UserCurriculum = ref(""); 
   const curricula = ref (await getAllCurriculums());
   const minerv = ref({});
+  const extcurrlist = ref(await getExternalCurriculumByUser(user.value.regNo))
+
   if(user.value.role === "Student"){
     minerv.value = ref(await getCurrentMinerval(user.value.regNo));
     UserCurriculum.value = await getSomeonesCurriculumList(user.value.regNo);
@@ -22,17 +26,15 @@
   if(user.role === "Teacher"){
     UserCurriculum.value = await getCourses("Teacher");
   }
-  const modif = ref(false);
-  const curric = ref(false);
-  const reg = ref(false);
-  const courseslist = ref(false);
-  const minerval = ref(false);
-  const paymentPage = ref(false);
-  const scholarship = ref(false);
-  const scholarshipinfos = ref(false);
-  const uninscr = ref(false);
+
   const sure = ref(0);
 
+  //0 base, 1 modif, 2 curriculum, 3 register, 4 courselist, 5 minerval, 6 payment, 7 scholarship, 8 scholarshipinfos, 9 unregister, 10 sure, 11 aboutunregister, 12 manage external curriculums
+  const windowState = ref(0);
+
+  const isChecked = ref(false);
+  const reRegState = ref(0);
+
   const pattern = {
     profilPictureUrl:null,
     email:null,
@@ -67,32 +69,41 @@
     residencyDocUrl : ""
   })
 
+  const changecurrdata = reactive({
+    userId : user.value.regNo,
+    actualcursus:null,
+    newcursus:1
+  })
+
   //Used to post a uninscription request
   const uninscriptionData = reactive({
     reason : null,
-    userId : user.value.regNo
+    userId : user.value.regNo,
+    curriculumId:null
   })
   const paymentAmount = ref(0);
   let toModify= Object.assign({}, pattern);
   let personnalInfos =  Object.assign({}, patternInfos);
-  
+
+  //Used to store the year of the new cursus selected in change cursus feature
+  const selectedYear = ref(0);
   function resetInputs(inputs,list){
     inputs=Object.assign({},list); 
   }
   
   async function ChangeInfos(){
     for (let element in toModify){
-         if (element =="email" && (toModify[element] !== null)){
+         if (element ==="email" && (toModify[element] !== null)){
           await  alterSelf(user.value.regNo,{email : toModify[element]});
         }      
 
-        if (element =="profilPictureUrl" && (toModify[element] !== null)){
+        if (element ==="profilPictureUrl" && (toModify[element] !== null)){
           await  alterSelf(user.value.regNo,{ profilPictureUrl : toModify[element]});
         }
-        else if(element == "address" && (toModify[element] !== null)){
+        else if(element === "address" && (toModify[element] !== null)){
           await  alterSelf(user.value.regNo,{address : toModify[element]});
         }
-        else if(element == "password" && (toModify[element] !== null)){
+        else if(element === "password" && (toModify[element] !== null)){
           await  alterSelf(user.value.regNo,{password : toModify[element]});
         }
     }
@@ -133,11 +144,14 @@
     return date.getFullYear()
   }
 
+  async function refreshExtCurrList(){
+    extcurrlist.value = await getExternalCurriculumByUser(user.value.regNo)
+  }
   //This function travels through the student cursus array and extract the current cursus of the student
   function getActualCurriculumList(){
     let actualCurriculumList = [];
     for (let i = 0; i < UserCurriculum.value.curriculumList.length; i++){
-      if (UserCurriculum.value.curriculumList[i].dateyear === getYear()){
+      if (UserCurriculum.value.curriculumList[i].actual === true){
         actualCurriculumList.push(UserCurriculum.value.curriculumList[i]);
       }
     }
@@ -155,16 +169,41 @@
 
     await createScholarshipRequest(scholarshipData)
   }
+
+  //1 = previous 0 = next
+  function getCurriculumsNextYear(){
+    const currlist = getActualCurriculumList()
+    let list = []
+
+    for (let i = 0; i < currlist.length; i++){
+      for (let j = 0; j < curricula.value.length; j++){
+        if (curricula.value[j].option === currlist[i].option && curricula.value[j].year === currlist[i].year + 1){
+          list.push(curricula.value[j])
+        }
+      }
+    }
+    return list
+  }
+
+  async function getActualCurr(curr){
+    const cursus = await getcurriculum(curr);
+    for (let i = 0; i < curricula.value.length; i++){
+      if (curricula.value[i].option === cursus.option && curricula.value[i].year === cursus.year - 1){
+        changecurrdata.actualcursus = curricula.value[i].curriculumId;
+      }
+    }
+  }
+
 </script>
 
 <template>
-  <div class="body">
-  <div class="container" v-if="courseslist == false">
-    <div class="profilPic">
+  <div class="body" v-if="windowState !== 12">
+  <div class="container" v-if="windowState!==4">
+    <div class="profilPic" v-if="windowState===0">
       <img class="subContainter" :src=getPP()>
     </div>
       <div class="globalInfos">
-        <div v-if="modif==false && curric==false && reg==false && minerval==false && paymentPage == false && scholarship==false && uninscr == false" class="infosContainer">
+        <div v-if="windowState === 0" class="infosContainer">
           <div>
             {{user.firstName}} {{user.lastName}}   
           </div>
@@ -178,51 +217,62 @@
             Role:  {{i18n((user.role))}} 
           </div>
           <div>
-            <button @click="modif=!modif; setModify(user)"> {{i18n("profile.modify.data")}} </button>
+            <button @click="windowState=1; setModify(user)"> {{i18n("profile.modify.data")}} </button>
           </div>
           <div v-if="(user.role==='Student')">
-            <button @click="reg=!reg">{{i18n("profile.reRegister")}}</button>
-            <button @click="uninscr = !uninscr" style="float:right;background-color:rgb(150,0,0);">{{i18n("profile.unRegister")}}</button>
+            <button @click="windowState=3">{{i18n("profile.reRegister")}}</button>
+            <button @click="windowState=9" style="float:right;background-color:rgb(150,0,0);">{{i18n("profile.unRegister")}}</button>
           </div>
           <div v-if="(user.role==='Student')">
-            <button @click="curric=!curric">{{i18n("profile.change.curriculum")}}</button>
+            <button @click="windowState=2">{{i18n("profile.change.curriculum")}}</button>
+            <button @click="windowState=12;refreshExtCurrList() ">Manage external curriculums</button>
           </div>
           <div v-if="(user.role==='Student')">
-            <button @click="courseslist=!courseslist">Manage Courses</button>
-            <button @click="minerval = !minerval" style="margin-left: 2%">Manage minerval</button>
+            <button @click="windowState=4">Manage Courses</button>
+            <button @click="windowState=5" style="margin-left: 2%">Manage minerval</button>
           </div>
         </div>
-        <div v-else-if="uninscr" class="infosContainer">
-            <div v-if="sure != 2">Please enter the reason you leave the university</div>
-            <textarea v-if="sure != 2" v-model="uninscriptionData.reason"></textarea>
-            <div v-if="sure != 2">
+        <div v-else-if="windowState === 9" class="infosContainer">
+            <div v-if="sure !== 2">Please enter the reason you leave</div>
+            <textarea v-if="sure !== 2" v-model="uninscriptionData.reason"></textarea>
+            <div v-if="sure !== 2">
+            I only want to unregister from a specific cursus
+            <input type="checkbox" v-model="isChecked">
+            </div>
+            <div v-if="sure !== 2 && isChecked">
+              Please select that cursus
+              <select v-model="uninscriptionData.curriculumId">
+                <option v-for="item in getActualCurriculumList()" :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option>
+              </select>
+            </div>
+            <div v-if="sure !== 2">
               <button @click="sure++">Submit</button>
             </div>
             <div v-if="sure==1">
               Are you sure that you want to unregister ?
-              <button @click="addUninscReq(uninscriptionData.userId, uninscriptionData.reason);sure++">Yes</button>
+              <button @click="addUninscReq(uninscriptionData.userId, uninscriptionData.reason, uninscriptionData.curriculumId);sure++">Yes</button>
               <button @click="sure=0">No</button>
             </div>
             <p v-if="sure==2">You request has been send !</p>
         </div>
-        <div v-else-if="minerval" class="infosContainer">
-          <div v-if="minerv.value.toPay != 0">
+        <div v-else-if="windowState === 5" class="infosContainer">
+          <div v-if="minerv.value.toPay !== 0">
             Payment : {{minerv.value.toPay}}€ left to pay
             <div v-if="minerv.value.paidAmount <= 50">
-              <button @click="minerval = !minerval; paymentPage = !paymentPage; paymentAmount = 50">Pay deposit (50€)</button>
+              <button @click="windowState=6; paymentAmount = 50">Pay deposit (50€)</button>
             </div>
             <div>
-              <button @click="minerval = !minerval; paymentPage = !paymentPage; paymentAmount = minerv.value.toPay">Pay all the rest ({{minerv.value.toPay}}€)</button>
+              <button @click="windowState=6; paymentAmount = minerv.value.toPay">Pay all the rest ({{minerv.value.toPay}}€)</button>
             </div>
           </div>
           <div v-else>
             Payment : School fees have already been paid this year
           </div>
           <div>
-            <button @click="scholarship=!scholarship; minerval=!minerval">Ask for a scholarship</button>
+            <button @click="windowState=7">Ask for a scholarship</button>
           </div>
         </div>
-        <div v-else-if="scholarship && !scholarshipinfos" class="infosContainer">
+        <div v-else-if="windowState === 7" class="infosContainer">
           <p>Please upload the required documents</p>
           <div>
             Tax justification document :
@@ -232,18 +282,18 @@
             Residency justification document :
             <input type="file" style="margin-top:2%" @change="scholarshipData.residencyDocUrl = $event.target.files">
           </div>
-          <button style="margin-top: 5%" @click="scholarshipinfos = !scholarshipinfos;postScholarshipRequest(scholarshipData.taxDocUrl, 'JustificationDocument',scholarshipData.residencyDocUrl, 'JustificationDocument');">Submit scholarship request</button>
+          <button style="margin-top: 5%" @click="windowState=8;postScholarshipRequest(scholarshipData.taxDocUrl, 'JustificationDocument',scholarshipData.residencyDocUrl, 'JustificationDocument');">Submit scholarship request</button>
         </div>
-        <div v-else-if="scholarship && scholarshipinfos" class="infosContainer">
+        <div v-else-if="windowState === 8" class="infosContainer">
           <div>
             Your request has been sent to the inscription service you will get notified when
             the request is reviewed.
           </div>
-          <button @click="scholarshipinfos=!scholarshipinfos; scholarship=!scholarship">
+          <button @click="windowState = 0">
             Go back to profile
           </button>
         </div>
-        <div v-else-if="paymentPage" class="infosContainer">
+        <div v-else-if="windowState === 6" class="infosContainer">
           Proceed to payment of {{paymentAmount}}€
           <div style="margin-top: 1%">
             Client:
@@ -258,20 +308,20 @@
             <input type="date" v-model="paymentData.expDate">
           </div>
           <div style="margin-top: 1%">
-            <button @click="paymentPage=!paymentPage;minerval=!minerval;paymentData.amount=paymentAmount;paymentData.date=new Date();postPayment(paymentData);minerv.value.toPay -= paymentAmount; minerv.value.paidAmount += paymentAmount; editMinerval(minerv.value)">Process Payment</button>
+            <button @click="windowState=5;paymentData.amount=paymentAmount;paymentData.date=new Date();postPayment(paymentData);minerv.value.toPay -= paymentAmount; minerv.value.paidAmount += paymentAmount; editMinerval(minerv.value)">Process Payment</button>
           </div>
           <div>
-            <button @click="minerval = !minerval; paymentPage = !paymentPage;">Back</button>
+            <button @click="windowState = 5">Back</button>
           </div>
         </div>
-        <div v-else-if="modif" class="infosContainer">
+        <div v-else-if="windowState === 1" class="infosContainer">
           <div>
             {{i18n("profile.picture")}}:
             <input type="file" @change="user.profilPicture = uploadProfilePicture($event.target.files);" accept="image/*">
           </div>
           <div>
             E-mail:  
-            <input type="mail" v-model="toModify.email" />
+            <input type="email" v-model="toModify.email" />
           </div>
           <div>
             {{i18n("profile.address")}}:
@@ -286,27 +336,53 @@
             <input type="password" v-model="toModify.passwordConfirm">
           </div>
           <div>
-            <button @click=" modif=!modif; ChangeInfos();">{{i18n("courses.confirm")}}</button>
-            <button @click="modif=!modif; resetInputs(toModify,pattern);" style="float:right;">{{i18n("courses.back")}}</button>
+            <button @click="windowState = 0; ChangeInfos();">{{i18n("courses.confirm")}}</button>
+            <button @click="windowState = 0; resetInputs(toModify,pattern);" style="float:right;">{{i18n("courses.back")}}</button>
           </div>
         </div>
-        <div v-else-if="curric" class="infosContainer">
-          <div style="height:40px;">
-            {{i18n("Curriculum")}}:  
-            <select v-model="curriculum" >
-              <option v-for="item in curricula" style="font-size:20px;" :value="item">{{item.option}}</option>        
+        <div v-else-if="windowState === 2" class="infosContainer">
+          <div>
+            I would like to :
+            <select v-model="reRegState">
+              <option :value="1">Reregister in the next year of one of my cursus</option>
+              <option :value="2">Register for a supplementary cursus</option>
+              <option :value="3">Change from a cursus to another</option>
             </select>
           </div>
-
+          <div style="height:40px;" v-if="reRegState === 3">
+            {{i18n("Curriculum")}}:
+            <select v-model="changecurrdata.actualcursus" style="margin-right: 3%">
+              <option v-for="item in getActualCurriculumList()" style="font-size:20px;" :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option>
+            </select>
+            New Curriculum :
+            <select v-model="changecurrdata.newcursus">
+              <option v-for="item in curricula"  :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option>
+            </select>
+          </div>
+          <div style="height:40px;" v-if="reRegState === 2">
+            New Curriculum :
+            <select v-model="changecurrdata.newcursus">
+              <option v-for="item in curricula"  :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option>
+            </select>
+          </div>
+          <div style="height:40px;" v-if="reRegState === 1">
+            New Curriculum :
+            <select v-model="changecurrdata.newcursus" @change="getActualCurr(changecurrdata.newcursus);">
+              <option v-for="item in getCurriculumsNextYear()" :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option>
+            </select>
+          </div>
+          <div v-if="curricula[changecurrdata.newcursus-1].year > 1 && reRegState !== 1">
+            The cursus you selected has some prerequisites
+          </div>
           <div>
-            <button @click=" curric=!curric;">{{i18n("courses.confirm")}}</button>
-            <button @click="curric=!curric; resetInputs(personnalInfos,patternInfos);" style="float:right;">{{i18n("courses.back")}}</button>
+            <button @click=" windowState = 0;postChangeCurrReq(changecurrdata);changecurrdata.actualcursus=null;changecurrdata.newcursus=null">{{i18n("courses.confirm")}}</button>
+            <button @click="windowState = 0; resetInputs(personnalInfos,patternInfos);" style="float:right;">{{i18n("courses.back")}}</button>
           </div>
         </div>
-        <div v-else-if="reg" class="infosContainer">
+        <div v-else-if="windowState === 3" class="infosContainer">
           <div>
             E-mail:  
-            <input type="mail" v-model="toModify.email" />
+            <input type="email" v-model="toModify.email" />
           </div>
           <div>
             ID :
@@ -322,21 +398,21 @@
           </div>
 
           <div>
-            <button @click=" reg=!reg;">{{i18n("courses.confirm")}}</button>
-            <button @click=" reg=!reg; resetInputs(personnalInfos,patternInfos);" style="float:right;">{{i18n("courses.back")}}</button>
+            <button @click=" windowState=0;">{{i18n("courses.confirm")}}</button>
+            <button @click=" windowState=0; resetInputs(personnalInfos,patternInfos);" style="float:right;">{{i18n("courses.back")}}</button>
           </div>
         </div>
       </div>
-      <div v-if="user.role == 'Student' && modif==false && curric==false && reg==false && minerval==false && scholarship == false && uninscr == false" class="moreInfos">
+      <div v-if="windowState === 0" class="moreInfos">
         <div class = "oldcursus">
             <div class="listTitle">
               Anciens Cursus
             </div>
             <div  class="listElement">
               <div class=" containerElement" v-for="item in UserCurriculum.curriculumList">
-                <div class="year" v-if="parseInt(item.dateyear) !== getYear()">Bac {{item.year}}</div>
-                <div class="option" v-if="parseInt(item.dateyear) !== getYear()">{{item.option}}</div>
-                <div class="dateyear" v-if="parseInt(item.dateyear) !== getYear()">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
+                <div class="year" v-if="item.actual === false">Bac {{item.year}}</div>
+                <div class="option" v-if="item.actual === false">{{item.option}}</div>
+                <div class="dateyear" v-if="item.actual === false">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
               </div>
             </div>
           </div>
@@ -346,19 +422,23 @@
             </div>
             <div  class="listElement">
               <div class=" containerElement" v-for="item in UserCurriculum.curriculumList" >
-                <div class="year" v-if="parseInt(item.dateyear) === getYear()">Bac {{item.year}}</div>
-                <div class="option" v-if="parseInt(item.dateyear) === getYear()">{{item.option}}</div>
-                <div class="dateyear" v-if="parseInt(item.dateyear) === getYear()">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
+                <div class="year" v-if="item.actual === true">Bac {{item.year}}</div>
+                <div class="option" v-if="item.actual === true">{{item.option}}</div>
+                <div class="dateyear" v-if="item.actual === true">Année {{item.dateyear}}-{{item.dateyear+1}}</div>
               </div>
             </div>
           </div>
       </div>
   </div>
-    <div v-if="courseslist === true" style="width: 80%">
+    <div v-if="windowState===4" style="width: 80%">
       <CourseList :cursuslist="getActualCurriculumList()"/>
-      <button style="width: 10%; margin-top: 5%" @click="courseslist = false">Return to profile</button>
+      <button style="width: 10%; margin-top: 5%" @click="windowState = 0">Return to profile</button>
     </div>
 </div>
+  <div v-if="windowState === 12">
+    <ExternalCurriculumList :ext-curr-list="extcurrlist" :mode="1"></ExternalCurriculumList>
+    <button @click="windowState = 0;refreshExtCurrList()">Back to profile</button>
+  </div>
 </template>
 <style scoped>
 
@@ -439,21 +519,6 @@
     
   }
 
-  .name {
-    grid-area:name;
-    align-self:center;
-  }
-
-  .teacher{
-    grid-area:teacher;
-    align-self:center;
-  }
-
-  .credits{
-    grid-area:credits;
-    align-self:center;
-  }
-
 
 .listElement{
   border:2px solid black;
diff --git a/frontend/src/rest/apps.js b/frontend/src/rest/apps.js
index b414e68..eb13476 100644
--- a/frontend/src/rest/apps.js
+++ b/frontend/src/rest/apps.js
@@ -4,13 +4,12 @@ import i18n from '@/i18n.js'
 
 // Liste des apps
 import LoginPage from '@/Apps/Login.vue'
-import Inscription from "@/Apps/Inscription/ManageRequests.vue"
 import Profil from "@/Apps/Profil.vue"
 import Courses from "@/Apps/ManageCourses.vue"
 import Users from "@/Apps/UsersList.vue"
 import Students from "@/Apps/StudentsList.vue"
-import AboutStudent from "@/Apps/Inscription/AboutStudent.vue";
 import Msg from "@/Apps/Msg.vue"
+import Payments from "@/Apps/Inscription/PaymentInfo.vue";
 import ManageRequests from "@/Apps/Inscription/ManageRequests.vue";
 
 const apps = {
@@ -21,6 +20,7 @@ const apps = {
 		'/users-list' : Users,
 		'/students-list' : Students,
 		'/msg' : Msg,
+		'/payments': Payments
 }
 
 const appsList = {
@@ -32,6 +32,7 @@ const appsList = {
 		'ManageCourses': { path: '#/manage-courses', icon: 'fa-book', text: i18n("app.manage.courses") },
 		'StudentsList':{ path: '#/students-list',icon: 'fa-users',text: i18n("app.studentList")},
 		'UsersList':{ path: '#/users-list',icon: 'fa-users',text: i18n("app.users")},
+		'Payments':{path: '#/payments', icon:'fa-users', text:i18n("app.payments")}
 }
 
 const currentPath = ref(window.location.hash)
diff --git a/frontend/src/rest/externalCurriculum.js b/frontend/src/rest/externalCurriculum.js
index f1b403d..25a0333 100644
--- a/frontend/src/rest/externalCurriculum.js
+++ b/frontend/src/rest/externalCurriculum.js
@@ -1,15 +1,16 @@
 import {restGet, restPatch, restPost} from "@/rest/restConsumer.js";
 import {parseInteger} from "jsdom/lib/jsdom/living/helpers/strings.js";
 
-export async function createExternalCurriculum(inscriptionRequestId,school, formation, completion, startYear, endYear, justifdocUrl){
+export async function createExternalCurriculum(inscriptionRequestId,school, formation, completion, startYear, endYear, justifdocUrl, userRegNo){
     return restPost("/externalcurriculum", {
         inscriptionRequestId: inscriptionRequestId,
         school:school,
         formation :formation,
         completion : completion,
-        startYear : parseInteger(startYear),
-        endYear: parseInteger(endYear),
-        justifdocUrl : justifdocUrl
+        startYear : startYear,
+        endYear: endYear,
+        justifdocUrl : justifdocUrl,
+        userRegNo : userRegNo
     })
 }
 
diff --git a/frontend/src/rest/requests.js b/frontend/src/rest/requests.js
index 9df8a1c..96c1b14 100644
--- a/frontend/src/rest/requests.js
+++ b/frontend/src/rest/requests.js
@@ -20,6 +20,46 @@ export async function editEquivalenceState(id, newstate){
     return restPatch("/request/registerequiv/"+id+"/"+newstate)
 }
 
-export async function addUninscReq(userId, reason){
-    return restPost("/uninscriptionreq", {"userId" : userId, "reason" : reason})
+export async function addUninscReq(userId, reason, curriculumId){
+    return restPost("/unregister", {"userId" : userId, "reason" : reason, "curriculumId":curriculumId})
+}
+
+export async function editScholarshipReq(body){
+    return restPatch("/scholarshipreq/", body)
+}
+
+export async function getScholarshipReqById(id){
+    return restGet("/scholarshipreq/"+id)
+}
+
+export async function getAllUnregisters(){
+    return restGet("/unregister")
+}
+
+export async function getUnregisterbyId(id){
+    return restGet("/unregister/"+id)
+}
+
+export async function editUnregReq(id, newstate){
+    return restPatch("/unregister/"+id+"/"+newstate)
+}
+
+export async function getAllPayments(){
+    return restGet("/payment")
+}
+
+export async function postChangeCurrReq(item){
+    return restPost("/changecurriculumreq", item)
+}
+
+export async function getAllChangeCurrReq(){
+    return restGet("/changecurriculumreq")
+}
+
+export async function getChangeCurrReqById(id){
+    return restGet("/changecurriculumreq/"+id)
+}
+
+export async function editChangeCurrReq(id, newState){
+    return restPatch("/changecurriculumreq/"+id+"/"+newState)
 }
\ No newline at end of file