diff --git a/src/main/java/com/example/gestionstagesbackend/Config/SecurityConfig.java b/src/main/java/com/example/gestionstagesbackend/Config/SecurityConfig.java
index c62e15076c3ccd3090caaae18020190a729675fe..83a9bc2ef3b5a0e5d668d430fc46ed6eb4436063 100644
--- a/src/main/java/com/example/gestionstagesbackend/Config/SecurityConfig.java
+++ b/src/main/java/com/example/gestionstagesbackend/Config/SecurityConfig.java
@@ -7,16 +7,13 @@ import org.springframework.security.web.SecurityFilterChain;
 
 @Configuration
 public class SecurityConfig {
-
     @Bean
     public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
         http
+                .csrf(csrf -> csrf.disable()) // ✅ Disable CSRF protection
                 .authorizeHttpRequests(auth -> auth
-                        .requestMatchers("/api/**").permitAll()  // Allow all API calls
-                        .anyRequest().authenticated()           // Require authentication for other requests
-                )
-                .csrf(csrf -> csrf.disable()); // Disable CSRF for testing
-
+                        .anyRequest().permitAll() // ✅ Allow all requests (for testing)
+                );
         return http.build();
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java b/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
index 2f789a69d83ef1402032aab0a079cd3555780201..689fb8bfc41de99f8b0a727155a21de23a8d795a 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
@@ -1,6 +1,5 @@
 package com.example.gestionstagesbackend.controllers;
 
-
 import com.example.gestionstagesbackend.model.Enterprise;
 import com.example.gestionstagesbackend.services.EnterpriseService;
 import org.springframework.http.ResponseEntity;
@@ -10,7 +9,7 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/api/enterprises")
-@CrossOrigin(origins = "*") // Allow requests from all origins (for testing)
+@CrossOrigin(origins = "*")
 public class EnterpriseController {
 
     private final EnterpriseService enterpriseService;
@@ -21,20 +20,33 @@ public class EnterpriseController {
 
     @PostMapping
     public ResponseEntity<Enterprise> createEnterprise(@RequestBody Enterprise enterprise) {
+        System.out.println("Received POST request: " + enterprise.getName() + ", " + enterprise.getAddress());
+
         Enterprise savedEnterprise = enterpriseService.saveEnterprise(enterprise);
+
+        System.out.println("Response sent with Enterprise ID: " + savedEnterprise.getId());
+
         return ResponseEntity.ok(savedEnterprise);
     }
 
     @GetMapping
     public ResponseEntity<List<Enterprise>> getAllEnterprises() {
+        System.out.println("🔵 Fetching all enterprises...");
         return ResponseEntity.ok(enterpriseService.getAllEnterprises());
     }
 
     @GetMapping("/{id}")
     public ResponseEntity<Enterprise> getEnterpriseById(@PathVariable Long id) {
+        System.out.println("Fetching enterprise with ID: " + id);
         return enterpriseService.getEnterpriseById(id)
                 .map(ResponseEntity::ok)
                 .orElse(ResponseEntity.notFound().build());
     }
 
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Void> deleteEnterprise(@PathVariable Long id) {
+        System.out.println("Deleting enterprise with ID: " + id);
+        enterpriseService.deleteEnterprise(id);
+        return ResponseEntity.noContent().build();
+    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java b/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java
index 3b783883763693495fdb05c20da4020a64b02d5f..97077d55be7352937eed785f1c3138b60fdc7218 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java
@@ -36,9 +36,15 @@ public class StageController {
 
         stage.setEnterprise(enterprise.get());
         Stage savedStage = stageService.saveStage(stage);
-        return ResponseEntity.ok(savedStage);
+
+        // Fetch the saved stage with enterprise details included
+        Optional<Stage> fullStage = stageService.getStageById(savedStage.getId());
+
+        return fullStage.map(ResponseEntity::ok).orElse(ResponseEntity.ok(savedStage));
     }
 
+
+
     @GetMapping
     public ResponseEntity<List<Stage>> getAllStages() {
         return ResponseEntity.ok(stageService.getAllStages());
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java b/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
index 5304e92e7ab3475ae9151fddbadf45fe0f095cb1..69b9210e2830b4420944bac0a500693b787b096b 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
@@ -1,5 +1,6 @@
 package com.example.gestionstagesbackend.model;
 
+import com.fasterxml.jackson.annotation.JsonBackReference;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import jakarta.persistence.*;
 
@@ -11,17 +12,17 @@ public class Candidacy {
 
     @ManyToOne
     @JoinColumn(name = "student_id")
-    @JsonIgnoreProperties({"candidacies"}) // Prevents infinite recursion when serializing
+    @JsonIgnoreProperties({"candidacies"}) // Prevents recursion, but keeps other data
     private Student student;
 
     @ManyToOne
     @JoinColumn(name = "stage_id")
-    @JsonIgnoreProperties({"candidacies"})
-    private Stage stage;
+    @JsonBackReference
+    private Stage stage; // suppression de @JsonIgnoreProperties pour inclure Stage in response
 
     @ManyToOne
     @JoinColumn(name = "univ_supervisor_id")
-    @JsonIgnoreProperties({"supervisedStages"})
+    @JsonIgnoreProperties({"supervisedStages"}) // Prevents recursion
     private UnivSupervisor univSupervisor;
 
     public Candidacy() {}
@@ -32,35 +33,15 @@ public class Candidacy {
         this.univSupervisor = univSupervisor;
     }
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Student getStudent() {
-        return student;
-    }
+    public Long getId() { return id; }
+    public void setId(Long id) { this.id = id; }
 
-    public void setStudent(Student student) {
-        this.student = student;
-    }
+    public Student getStudent() { return student; }
+    public void setStudent(Student student) { this.student = student; }
 
-    public Stage getStage() {
-        return stage;
-    }
+    public Stage getStage() { return stage; }
+    public void setStage(Stage stage) { this.stage = stage; }
 
-    public void setStage(Stage stage) {
-        this.stage = stage;
-    }
-
-    public UnivSupervisor getUnivSupervisor() {
-        return univSupervisor;
-    }
-
-    public void setUnivSupervisor(UnivSupervisor univSupervisor) {
-        this.univSupervisor = univSupervisor;
-    }
+    public UnivSupervisor getUnivSupervisor() { return univSupervisor; }
+    public void setUnivSupervisor(UnivSupervisor univSupervisor) { this.univSupervisor = univSupervisor; }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java b/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
index a6bc14382388e874dd333e5205c46fae8e16edfb..8734c6f0b27a94e6a3e5dd596c945fa16fd20325 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
@@ -1,22 +1,19 @@
 package com.example.gestionstagesbackend.model;
 
 import jakarta.persistence.*;
-
-
-
 import java.util.List;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
 
 @Entity
-@Table(name = "enterprise")
 public class Enterprise {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
-
     private String name;
     private String address;
 
-    @OneToMany(mappedBy = "enterprise", cascade = CascadeType.ALL)
+    @OneToMany(mappedBy = "enterprise", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JsonManagedReference //  as the parent side
     private List<Stage> stages;
 
     public Enterprise() {}
@@ -26,27 +23,13 @@ public class Enterprise {
         this.address = address;
     }
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
+    public Long getId() { return id; }
+    public String getName() { return name; }
+    public String getAddress() { return address; }
+    public List<Stage> getStages() { return stages; }
 
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        this.address = address;
-    }
+    public void setId(Long id) { this.id = id; }
+    public void setName(String name) { this.name = name; }
+    public void setAddress(String address) { this.address = address; }
+    public void setStages(List<Stage> stages) { this.stages = stages; }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Stage.java b/src/main/java/com/example/gestionstagesbackend/model/Stage.java
index bc2c8b772e92abd8e7a3a7c98b5e82f5d9b539de..ce91ccb37698f43ddc45c552b3f38a8f72a09f16 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Stage.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Stage.java
@@ -1,7 +1,8 @@
 package com.example.gestionstagesbackend.model;
 
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
 import jakarta.persistence.*;
-
 import java.util.List;
 
 @Entity
@@ -14,49 +15,41 @@ public class Stage {
 
     @ManyToOne
     @JoinColumn(name = "enterprise_id", nullable = false)
+    @JsonBackReference // Prevents infinite recursion in JSON serialization
     private Enterprise enterprise;
 
-    @OneToMany(mappedBy = "stage", cascade = CascadeType.ALL)
+    @OneToMany(mappedBy = "stage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JsonManagedReference // ✅ Allows Candidacies to appear in Stage responses
     private List<Candidacy> candidacies;
 
     public Stage() {}
 
-    public Stage(Long id, String name, String description, Enterprise enterprise) {
-        this.id = id;
+    public Stage(String name, String description, Enterprise enterprise) {
         this.name = name;
         this.description = description;
         this.enterprise = enterprise;
     }
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
+    public Stage(Long id, String name, String description, Enterprise enterprise, List<Candidacy> candidacies) {
         this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
         this.name = name;
+        this.description = description;
+        this.enterprise = enterprise;
+        this.candidacies = candidacies;
     }
 
-    public String getDescription() {
-        return description;
-    }
+    public Long getId() { return id; }
+    public void setId(Long id) { this.id = id; }
 
-    public void setDescription(String description) {
-        this.description = description;
-    }
+    public String getName() { return name; }
+    public void setName(String name) { this.name = name; }
 
-    public Enterprise getEnterprise() {
-        return enterprise;
-    }
+    public String getDescription() { return description; }
+    public void setDescription(String description) { this.description = description; }
 
-    public void setEnterprise(Enterprise enterprise) {
-        this.enterprise = enterprise;
-    }
+    public Enterprise getEnterprise() { return enterprise; }
+    public void setEnterprise(Enterprise enterprise) { this.enterprise = enterprise; }
+
+    public List<Candidacy> getCandidacies() { return candidacies; }
+    public void setCandidacies(List<Candidacy> candidacies) { this.candidacies = candidacies; }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/EnterpriseRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/EnterpriseRepository.java
index abfb39d6c1f5ce0e6255c52b1922e9e7874714c0..e670b2769b6ba17acb14a4df04507f61f72a0b28 100644
--- a/src/main/java/com/example/gestionstagesbackend/repositories/EnterpriseRepository.java
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/EnterpriseRepository.java
@@ -1,8 +1,13 @@
 package com.example.gestionstagesbackend.repositories;
 
-
 import com.example.gestionstagesbackend.model.Enterprise;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import java.util.Optional;
 
 public interface EnterpriseRepository extends JpaRepository<Enterprise, Long> {
+
+    @Query("SELECT e FROM Enterprise e LEFT JOIN FETCH e.stages WHERE e.id = :id")
+    Optional<Enterprise> findByIdWithStages(@Param("id") Long id);
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java
index 68d883388339deffcdcdc09c0efd9b617996fd08..ee80a41da78ab9022109eff16c782d5eb396e99f 100644
--- a/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java
@@ -1,10 +1,15 @@
 package com.example.gestionstagesbackend.repositories;
 
-
 import com.example.gestionstagesbackend.model.Stage;
+import org.springframework.data.jpa.repository.EntityGraph;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
 public interface StageRepository extends JpaRepository<Stage, Long> {
+
+    @EntityGraph(attributePaths = {"enterprise"}) // Ensures Enterprise is fetched
+    Optional<Stage> findById(Long id);
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java b/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
index eec1793227de4615df9fdd8ef404de3ccff41360..a71471c0166c28a4e27252abfa336a4d5fa8a185 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
@@ -1,14 +1,11 @@
 package com.example.gestionstagesbackend.services;
 
-
-
 import com.example.gestionstagesbackend.model.Enterprise;
 import com.example.gestionstagesbackend.repositories.EnterpriseRepository;
 import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.Optional;
 
-
 @Service
 public class EnterpriseService {
 
@@ -19,15 +16,31 @@ public class EnterpriseService {
     }
 
     public Enterprise saveEnterprise(Enterprise enterprise) {
-        return enterpriseRepository.save(enterprise);
-    }
+        System.out.println("Saving enterprise: " + enterprise.getName() + ", " + enterprise.getAddress());
 
-    public Optional<Enterprise> getEnterpriseById(Long id) {
-        return enterpriseRepository.findById(id);
+        // If stages exist, set their enterprise reference correctly
+        if (enterprise.getStages() != null && !enterprise.getStages().isEmpty()) {
+            enterprise.getStages().forEach(stage -> stage.setEnterprise(enterprise));
+        } else {
+            enterprise.setStages(null); // Avoid redundant or circular references
+        }
+
+        Enterprise savedEnterprise = enterpriseRepository.save(enterprise);
+        System.out.println("Saved Enterprise ID: " + savedEnterprise.getId());
 
+        return savedEnterprise;
     }
 
     public List<Enterprise> getAllEnterprises() {
         return enterpriseRepository.findAll();
     }
+
+    public Optional<Enterprise> getEnterpriseById(Long id) {
+        return enterpriseRepository.findByIdWithStages(id);
+    }
+
+    public void deleteEnterprise(Long id) {
+        System.out.println("Deleting Enterprise ID: " + id);
+        enterpriseRepository.deleteById(id);
+    }
 }