diff --git a/src/migrations/scripts/1726660081171-removeidcnfs.ts b/src/migrations/scripts/1726660081171-removeidcnfs.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3c940934d6db9f02effed52202594057dd750e34
--- /dev/null
+++ b/src/migrations/scripts/1726660081171-removeidcnfs.ts
@@ -0,0 +1,21 @@
+import { getDb } from '../migrations-utils/db';
+
+export const up = async () => {
+  try {
+    const db = await getDb();
+    await db.collection('structures').updateMany({}, { $unset: { idCNFS: '' } });
+    console.log(`Update done: 'idCNFS' field removed from all documents in 'structures' collection.`);
+  } catch (error) {
+    console.error(`Error while removing 'idCNFS' field:`, error);
+  }
+};
+
+export const down = async () => {
+  try {
+    const db = await getDb();
+    await db.collection('structures').updateMany({}, { $set: { idCNFS: null } });
+    console.log(`Downgrade done: 'idCNFS' field added to all documents in 'structures' collection.`);
+  } catch (error) {
+    console.error(`Error while adding 'idCNFS' field:`, error);
+  }
+};
diff --git a/src/structures/dto/structure.dto.ts b/src/structures/dto/structure.dto.ts
index 7627544468c9ea0ab91c0c17e4847288b97f8c4c..acf9c7761dc7b67d8db04be5b948bbdc6e22ca8c 100644
--- a/src/structures/dto/structure.dto.ts
+++ b/src/structures/dto/structure.dto.ts
@@ -67,6 +67,5 @@ export class StructureDto {
   @IsArray()
   personalOffers: PersonalOfferDocument[];
 
-  idCNFS?: string;
   lastUpdateMail: Date;
 }
diff --git a/src/structures/schemas/structure.schema.ts b/src/structures/schemas/structure.schema.ts
index ca1d94698d4e3698db17017c0bc0ed56e2ab7df3..cf36070a92aec86a356f8472da52b3b35709c0d9 100644
--- a/src/structures/schemas/structure.schema.ts
+++ b/src/structures/schemas/structure.schema.ts
@@ -138,9 +138,6 @@ export class Structure {
   @Prop()
   updatedAt: Date;
 
-  @Prop()
-  idCNFS?: string;
-
   @Prop()
   idDataGouv?: string;
 
diff --git a/src/structures/services/structures.service.spec.ts b/src/structures/services/structures.service.spec.ts
index 0c2c75049078959d097b1766cf743656091085ad..c477fc4b1897e0ca7a8d5f622b9cd5ebc3541772 100644
--- a/src/structures/services/structures.service.spec.ts
+++ b/src/structures/services/structures.service.spec.ts
@@ -10,7 +10,6 @@ import { personalOffersDataMock } from '../../../test/mock/data/personalOffers.m
 import { structureMockDto, structuresDocumentDataMock } from '../../../test/mock/data/structures.mock.data';
 import { userDetails } from '../../../test/mock/data/users.mock.data';
 import {
-  mockCNFSStructures,
   mockResinStructures,
   mockSearchAdressBal,
   mockSearchAdressBan,
@@ -540,36 +539,6 @@ describe('StructuresService', () => {
     });
   });
 
-  describe('CNFS Structures', () => {
-    beforeEach(() => {
-      httpServiceMock.get.mockImplementationOnce(() => of({ data: mockCNFSStructures }));
-    });
-
-    it('getCNFSStructuress(): should return 2 structures from the mock containing 4 structures', async () => {
-      expect((await structureService.getCNFSStructures()).length).toBe(2);
-    });
-    it('bindOneCNFSStructure(): should update ONE structure', async () => {
-      const mockSetCNFSid = jest.fn().mockResolvedValue(mockResinStructures[0]);
-      jest.spyOn(structureService, 'findOne').mockResolvedValue(mockResinStructures[0] as StructureDocument);
-      jest.spyOn(structureService, 'setCNFSid').mockImplementation(mockSetCNFSid);
-      mockStructureModel.findByIdAndUpdate.mockReturnThis();
-      mockStructureModel.exec.mockResolvedValueOnce(mockResinStructures[0]);
-      expect(await structureService.bindOneCNFSStructure('mockId')).toBe('A match has been found, updating CNFSid');
-    });
-    it('bindOneCNFSStructure(): should update ZERO structure, no match', async () => {
-      jest.spyOn(structureService, 'findOne').mockReturnThis();
-      jest.spyOn(structureService, 'update').mockResolvedValue(mockResinStructures[2]);
-      expect(await structureService.bindOneCNFSStructure('mockId')).toBe('No match found');
-    });
-    it('bindCNFSids(): should update 2 structures (matching phone and mail)', async () => {
-      const mockSetCNFSid = jest.fn().mockResolvedValue(mockResinStructures[0]);
-      jest.spyOn(structureService, 'findAll').mockResolvedValue(mockResinStructures as StructureDocument[]);
-      jest.spyOn(structureService, 'setCNFSid').mockImplementation(mockSetCNFSid);
-      expect(await structureService.bindCNFSids()).toBe(`2 structures affected`);
-      expect(mockSetCNFSid).toHaveBeenCalledTimes(2);
-    });
-  });
-
   describe('restoreStructure', () => {
     it('should restore a structure', async () => {
       mockStructureModel.findByIdAndUpdate.mockReturnThis();
diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts
index a01343aca264cb35c236609df40df097bf7b3139..d0edec1c638f5af54e4ab203ea266b476c1d8500 100644
--- a/src/structures/services/structures.service.ts
+++ b/src/structures/services/structures.service.ts
@@ -25,7 +25,6 @@ import { depRegex } from '../common/regex';
 import { StructureDto } from '../dto/structure.dto';
 import { UpdateStructureDto } from '../dto/update-structure.dto';
 import { EquipmentsServicesEnum } from '../enum/equipmentsServices';
-import { CNFSStructure } from '../interfaces/cnfs-structure.interface';
 import { PhotonPoints } from '../interfaces/photon-response.interface';
 import { Address } from '../schemas/address.schema';
 import { Structure, StructureDocument } from '../schemas/structure.schema';
@@ -235,9 +234,6 @@ export class StructuresService {
       this.mailerService.config.templates.adminStructureCreate.json
     );
 
-    // Async treatment that can be done in background, DO NOT await because it takes around 3sec to finish
-    this.bindOneCNFSStructure(createdStructure.id);
-
     return updatedStructure;
   }
 
@@ -906,129 +902,6 @@ export class StructuresService {
     return structure;
   }
 
-  /**
-   * Fetch espace coop and filter structures in 69XXX and structures with courriel and phone
-   */
-  public getCNFSStructures(): Promise<Array<CNFSStructure>> {
-    this.logger.debug(`get CNFS structures`);
-    const obs = this.httpService.get<Array<CNFSStructure>>('https://api.conseiller-numerique.gouv.fr/permanences').pipe(
-      map((response) =>
-        response.data.filter((structure) => {
-          if (structure.code_postal.substring(0, 2) === '69' && (structure.courriel || structure.telephone))
-            return structure;
-        })
-      ),
-      tap((response) => {
-        this.logger.debug(`${response.length} CNFS rhone structures found`);
-      })
-    );
-
-    return new Promise((resolve) => {
-      obs.subscribe((data) => {
-        resolve(data);
-      });
-    });
-  }
-
-  /**
-   * Compare Resin & CNFS structures with email and phone, returns the structure when matching
-   */
-  public findMatchingStructure(resinStructure: StructureDocument, CNFSData: CNFSStructure[]): CNFSStructure | null {
-    // This check is mandatory because if resin phone number is '' we should return FALSE instead of UNDEFINED
-    const resinPhoneNumber = resinStructure.contactPhone?.split(' ').join('') || false;
-    return CNFSData.find(
-      (structure) =>
-        structure.courriel === resinStructure.contactMail ||
-        structure.telephone?.replace('+33', '0') === resinPhoneNumber
-    );
-  }
-
-  /**
-   * When a structure is created, fetch espace coop and tries to find a match to bind CNFSid to the resin structure.
-   */
-  public async bindOneCNFSStructure(resinStructureId: string): Promise<string> {
-    this.logger.debug(`bind CNFS id to one resin structure`);
-    const resinStructure = await this.findOne(resinStructureId);
-    const CNFSData = await this.getCNFSStructures();
-    if (!resinStructure) return 'Could not find structure';
-
-    const matchingStructure = this.findMatchingStructure(resinStructure, CNFSData);
-    if (matchingStructure && matchingStructure.prise_rdv) {
-      try {
-        const result = await this.setCNFSid(resinStructure.id, matchingStructure.structureId);
-        if (result) {
-          return 'A match has been found, updating CNFSid';
-        }
-      } catch (error) {
-        this.logger.error(`Error updating CNFSid: ${error.message}`);
-        return 'A match has been found, but there was an error updating CNFSid';
-      }
-    }
-    this.logger.debug(`No match found`);
-    return 'No match found';
-  }
-
-  /**
-   * Fetch espace coop. If any structure matches, assign its CNFSid in our DB, if not assign ''
-   * @returns "${number} of structures affected"
-   */
-  @Cron(CronExpression.EVERY_WEEK)
-  public async bindCNFSids(): Promise<string> {
-    this.logger.log('bind CNFS ids to resin structures process');
-    const CNFSData = await this.getCNFSStructures();
-    const resinStructures = await this.findAll();
-    this.logger.debug(`${resinStructures.length} resin structures found`);
-
-    let matchCount = 0;
-    let mismatchCount = 0;
-
-    for (const resinStructure of resinStructures) {
-      const matchingStructure = this.findMatchingStructure(resinStructure, CNFSData);
-      if (matchingStructure && matchingStructure.prise_rdv) {
-        try {
-          const result = await this.setCNFSid(resinStructure.id, matchingStructure.structureId);
-          if (result) {
-            matchCount++;
-          }
-        } catch (error) {
-          this.logger.error(`Error while setting CNFS ID for structure ${resinStructure.id}: ${error.message}`);
-        }
-        // if a corresponding structure has been found but its email is different, we probably will need to update it here.
-      } else {
-        mismatchCount++;
-        if (resinStructure.idCNFS) {
-          // to reset the cnfs id field if it was previously set
-          this.logger.warn(`Cleaning old CNFS id '${resinStructure.idCNFS}'`);
-          const setCnfsToNull = Object.assign(resinStructure, { idCNFS: '' });
-          this.structureModel
-            .findByIdAndUpdate(new Types.ObjectId(resinStructure.id), setCnfsToNull, { timestamps: false })
-            .exec();
-        }
-      }
-    }
-    this.logger.log(
-      `${matchCount} structures affected with an idCNFS (${mismatchCount} structures not matching espace coop ids)`
-    );
-    return `${matchCount} structures affected`;
-  }
-
-  /**
-   * Update the idCNFS of a structure if it has meetings open on rdvs"
-   */
-  public async setCNFSid(idStructure: string, idCNFS: string): Promise<Structure> {
-    const oldStructure = await this.findOne(idStructure);
-
-    // no need for an update if the cnfs id match and is already known (in order to not mess with the structure activity recording when it was lastly updated for mail inquiries)
-    if (oldStructure.idCNFS === idCNFS) {
-      return null;
-    }
-    this.logger.log(`A resin structure '${idStructure}' matched with a CNFS one, updating its idCNFS '${idCNFS}'`);
-    const deepClone = Object.assign(oldStructure, { idCNFS });
-    return this.structureModel
-      .findByIdAndUpdate(new Types.ObjectId(idStructure), deepClone, { timestamps: false })
-      .exec();
-  }
-
   /**
    * Remove a personal offer from structure offers
    */
diff --git a/test/mock/services/structures.mock.service.ts b/test/mock/services/structures.mock.service.ts
index 4f508f3e1999c13ef2f7f84643709e0e9d3a9ac3..7ba08bd936877194a8e6c73f417847491126fadb 100644
--- a/test/mock/services/structures.mock.service.ts
+++ b/test/mock/services/structures.mock.service.ts
@@ -1287,10 +1287,6 @@ export class StructuresServiceMock {
     throw new HttpException('Structure not found for the personal offer attachment', HttpStatus.BAD_REQUEST);
   }
 
-  async bindCNFSids() {
-    return `2 structures affected`;
-  }
-
   async removePersonalOffer() {
     return [];
   }
@@ -1358,99 +1354,6 @@ export const mockSearchAdressBal: { features: PhotonPoints[] } = {
   ],
 };
 
-export const mockCNFSStructures: Array<CNFSStructure> = [
-  {
-    id: '62866838cdc04606eb14ee90',
-    structureId: '62866838cdc04606eb14ee90',
-    nom: 'Centre social de Brignais',
-    prise_rdv: 'https://www.rdv-aide-numerique.fr/org/100000',
-    commune: 'BRIGNAIS',
-    code_postal: '69530',
-    adresse: '28 BD DE SCHWEIGHOUSE',
-    latitude: 45.6769,
-    longitude: 4.7522,
-    // Matching phone number
-    telephone: '+33123456789',
-    courriel: 'contact@centresocialbrignais.fr',
-    site_web: 'https://csbrignais.centres-sociaux.fr/',
-    horaires: 'Tu-Th 08:30-12:00,13:30-18:00; Mo 14:00-18:30; Fr 09:00-12:00,13:30-17:00',
-    source: 'conseiller-numerique',
-    date_maj: '2022-05-19',
-    services:
-      'Prendre en main un smartphone ou une tablette, Prendre en main un ordinateur, Utiliser le numérique au quotidien, Approfondir ma culture numérique',
-    conditions_access: 'Gratuit',
-    labels_nationaux: 'CNFS',
-    lastUpdateMail: new Date('2021-05-06T09:42:38.000Z'),
-    pivot: '31344633800060',
-  },
-  {
-    id: '62866909cdc04606eb14ee95',
-    structureId: '62866909cdc04606eb14ee95',
-    nom: 'Plateforme Emploi et Cohésion Sociale',
-    prise_rdv: 'https://www.rdv-aide-numerique.fr/org/100000',
-    commune: 'BRIGNAIS',
-    code_postal: '69530',
-    adresse: '24 Rue des Jardins',
-    //Matching email
-    courriel: 'matchin@email.com',
-    latitude: 45.6695,
-    longitude: 4.760525,
-    horaires: 'Tu-Th 08:30-12:00,13:30-18:00; Mo 14:00-18:30; Fr 09:00-12:00,13:30-17:00',
-    source: 'conseiller-numerique',
-    date_maj: '2022-05-19',
-    services:
-      'Prendre en main un smartphone ou une tablette, Prendre en main un ordinateur, Utiliser le numérique au quotidien, Approfondir ma culture numérique',
-    conditions_access: 'Gratuit',
-    labels_nationaux: 'CNFS',
-    lastUpdateMail: new Date('2021-05-06T09:42:38.000Z'),
-  },
-  {
-    id: '62872e94cdc04606eb14ef09',
-    structureId: '62872e94cdc04606eb14ef09',
-    nom: 'Communauté de Communes du Chemin des Dames',
-    commune: 'CRAONNE',
-    prise_rdv: 'https://www.rdv-aide-numerique.fr/org/100000',
-    // Wrong CP
-    code_postal: '02160',
-    adresse: "1 RUE DE L'EGLISE",
-    latitude: 49.4431,
-    longitude: 3.7936,
-    courriel: 'matchin@email.com',
-    site_web: 'https://www.cc-chemindesdames.fr/accueil',
-    source: 'conseiller-numerique',
-    date_maj: '2022-05-20',
-    services:
-      'Prendre en main un smartphone ou une tablette, Prendre en main un ordinateur, Utiliser le numérique au quotidien, Approfondir ma culture numérique',
-    conditions_access: 'Gratuit',
-    labels_nationaux: 'CNFS',
-    lastUpdateMail: new Date('2021-05-06T09:42:38.000Z'),
-    pivot: '24020059200030',
-  },
-  {
-    id: '62866838cdc04606eb22ff11',
-    structureId: '62866838cdc04606eb22ff11',
-    nom: 'Pwet',
-    commune: 'BRIGNAIS',
-    prise_rdv: 'https://www.rdv-aide-numerique.fr/org/100000',
-    // Corect CP
-    code_postal: '69530',
-    adresse: '28 BD DE SCHWEIGHOUSE',
-    latitude: 45.6769,
-    longitude: 4.7522,
-    // Missing mail and missing phone
-    site_web: 'https://csbrignais.centres-sociaux.fr/',
-    horaires: 'Tu-Th 08:30-12:00,13:30-18:00; Mo 14:00-18:30; Fr 09:00-12:00,13:30-17:00',
-    source: 'conseiller-numerique',
-    date_maj: '2022-05-19',
-    services:
-      'Prendre en main un smartphone ou une tablette, Prendre en main un ordinateur, Utiliser le numérique au quotidien, Approfondir ma culture numérique',
-    conditions_access: 'Gratuit',
-    labels_nationaux: 'CNFS',
-    lastUpdateMail: new Date('2021-05-06T09:42:38.000Z'),
-    pivot: '31344633800060',
-  },
-];
-
 export const mockResinStructures: Array<Structure> = [
   {
     contactMail: '',