diff --git a/src/personal-offers/personal-offers.controller.ts b/src/personal-offers/personal-offers.controller.ts
index ec75b313d390fdf8e876123827ea04164b5d7b65..d3543b6ab132abcc9108e0acb95c0e337242c346 100644
--- a/src/personal-offers/personal-offers.controller.ts
+++ b/src/personal-offers/personal-offers.controller.ts
@@ -21,6 +21,7 @@ import { CreatePersonalOfferDto } from './dto/create-personal-offer.dto';
 import { PersonalOfferDto } from './dto/personal-offer.dto';
 import { PersonalOffersService } from './personal-offers.service';
 import { PersonalOfferDocument } from './schemas/personal-offer.schema';
+import { Types } from 'mongoose';
 
 @ApiTags('personnal-offers')
 @Controller('personal-offers')
@@ -64,6 +65,10 @@ export class PersonalOffersController {
     );
     await this.structuresService.addPersonalOffer(createPersonalOfferDto.structureId, personalOfferDocument);
     await this.usersService.addPersonalOffer(user._id, personalOfferDocument);
+
+    // Update if structure has user with personalOffer (hasUserWithAppointmentDN)
+    this.structuresService.updateDenormalizedFields(new Types.ObjectId(createPersonalOfferDto.structureId));
+
     return personalOfferDocument;
   }
 
diff --git a/src/personal-offers/personal-offers.service.ts b/src/personal-offers/personal-offers.service.ts
index 7df3b4600e17dcdabaa71768006ee107ca2bd004..b426561b7a5657ee2c8ec48a6d8ea54eeff65d48 100644
--- a/src/personal-offers/personal-offers.service.ts
+++ b/src/personal-offers/personal-offers.service.ts
@@ -56,6 +56,10 @@ export class PersonalOffersService {
     if (!deletedOffer) {
       throw new HttpException('Invalid personal offer id for deletion', HttpStatus.BAD_REQUEST);
     }
+
+    // Update if structure has user with personalOffer (hasUserWithAppointmentDN)
+    this.structuresService.updateDenormalizedFields(structure._id);
+
     return deletedOffer;
   }
 }
diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts
index 5b8c5651275ed8b9acfbdc929f551abe39022ba7..83572d2a18738d16fadb0aeeb9cf9a24a5a0b664 100644
--- a/src/structures/services/structures.service.ts
+++ b/src/structures/services/structures.service.ts
@@ -1296,7 +1296,11 @@ export class StructuresService {
 
     owners.forEach((owner: User) => {
       if (User.getWithAppointment(owner)) {
-        structure.hasUserWithAppointmentDN = true;
+        // If user has personalOffer for this structure
+        const ownerOffers = owner.personalOffers.map((po) => po.id);
+        if (structure.personalOffers.filter((structureOffer) => ownerOffers.includes(structureOffer.id)).length) {
+          structure.hasUserWithAppointmentDN = true;
+        }
       }
       // If user has job 'Conseiller numérique' ou 'Conseillère numérique'
       if (owner.job && this.jobsService.isConseillerNumerique(owner.job.id)) {