Se rendre au contenu
Icône de Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms)

Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms)

par Dyonysos
Gratuit Hérité 19.0 Module Contrôle qualité : Vérifiée OPL-1 (propriétaire Odoo)

Public Tender Documents — fetches notices, TED eForms / BOAMP data and tender documents (DCE) into Odoo. Rapatrie l'avis, l'avis structuré et le DCE (RC, CCTP, CCAP, AE, BPU, DPGF, DQE…), dézippe, classe chaque pièce et en lit le texte, sans jamais contourner une plateforme à compte.

Captures d'écran

Marchés publics · Rapatriement du DCE

Tout le dossier de consultation dans Odoo, classé et lisible, sans passer la matinée sur la plateforme

Avis publié, avis structuré eForms TED, données BOAMP et DCE : le module les rapatrie sur la fiche de l'avis, développe les archives ZIP, reconnaît chaque pièce (RC, CCTP, CCAP, AE, BPU, DPGF, DQE…) et en extrait le texte. Quand le DCE est derrière un compte, il vous le dit et vous laisse déposer les fichiers en un geste.

In English — Public Tender Documents. Fetches the published notice, the structured eForms (TED) or BOAMP data and the tender documents (DCE) into Odoo, unzips archives, classifies every document and extracts its text (PDF, Word, Excel, OpenDocument, HTML). Never bypasses a buyer platform that requires an account.

Odoo 19 Community — On Premise✔
Odoo.sh✔
Odoo Online (SaaS)✘

Le problème

Avant de décider s'il faut répondre, il faut lire. Et avant de lire, il faut retrouver l'avis, télécharger le DCE, ouvrir l'archive, deviner quel fichier est le règlement de consultation et lequel est le bordereau de prix — pour chaque consultation, sur une plateforme différente. Les pièces finissent dans un dossier partagé, loin de l'avis qu'elles concernent, et personne ne sait si le dossier est complet.

Ce que fait le module

Les pièces sur l'avis

Chaque fichier est rattaché à l'avis, une seule fois : le même document reçu de TED, par courriel et dans le ZIP n'existe qu'en un exemplaire (empreinte SHA-256).

Classées et lues

Le type de pièce est reconnu au nom puis au titre du texte, marqué « deviné » tant que vous ne l'avez pas confirmé ; le texte est extrait pour l'analyse.

Aucun contournement

Un DCE derrière un compte (PLACE, AWS-Achat, Maximilien, e-Procurement…) devient une activité « DCE à retirer » avec le lien et les instructions de la plateforme.

Rien d'inventé

Un montant non publié reste vide — « vide ne veut pas dire zéro ». Un format non lu le dit en clair.

Le module en images

Captures prises dans Odoo 19 Community, en français, sur une base de démonstration aux données fictives, avec la suite complète installée : certains onglets ou menus visibles appartiennent à d'autres modules de la suite.

L'onglet Documents d'un avis : le statut du DCE (« DCE complet »), l'état du rapatriement
01 — L'onglet Documents d'un avis : le statut du DCE (« DCE complet »), l'état du rapatriement de l'avis publié, et chaque pièce avec son type, son état « Texte extrait » et son origine.
Tous les documents de tous les avis, avec le type reconnu, le nombre de pages et la taille
02 — Tous les documents de tous les avis, avec le type reconnu, le nombre de pages et la taille du texte lu.
Les 18 plateformes d'achat livrées : motif d'adresse, compte requis ou non, site. La liste
03 — Les 18 plateformes d'achat livrées : motif d'adresse, compte requis ou non, site. La liste se complète sans développement.
Le dépôt des pièces retirées à la main : plusieurs fichiers ou un ZIP, classés et lus comm
04 — Le dépôt des pièces retirées à la main : plusieurs fichiers ou un ZIP, classés et lus comme s'ils avaient été rapatriés.
Les réglages : rapatriement après la veille, taille maximale d'un document, OCR facultatif
05 — Les réglages : rapatriement après la veille, taille maximale d'un document, OCR facultatif, modèle d'adresse des PDF BOAMP.

Fonctionnalités

01

Avis structuré

XML eForms de TED et données BOAMP lus en un format commun : acheteur, lots, montant publié, critères pondérés, dates, langues, base légale, lien du DCE.

02

Archives développées

ZIP jusqu'à 3 niveaux, 500 fichiers et 200 Mo décompressés ; chemins dangereux et fichiers parasites (__MACOSX, Thumbs.db) écartés.

03

Classement des pièces

RC, CCTP, CCAP, AE, BPU, DPGF, DQE, cadre de mémoire, cadre de prix, annexes, plans, rectificatifs, questions-réponses.

04

Extraction du texte

PDF, DOCX, XLSX/XLSM, ODT/ODS, HTML, TXT, CSV, XML, JSON, RTF, sans dépendance supplémentaire ; OCR des PDF scannés en option (pytesseract).

05

Dépôt et courriel

Assistant multi-fichiers et courriel transféré à un alias : les pièces rejoignent l'avis concerné.

06

Critères publiés

Les critères pondérés de l'avis structuré entrent comme « Donnée d'API », sans jamais toucher une saisie manuelle.

07

Cadence polie

Requêtes espacées par site, « 429 / 503 » retentés en respectant Retry-After, document laissé « À télécharger » plutôt qu'insisté.

08

Tâche planifiée

Rapatriement par lots, reprenable, livré inactif : rien ne sort de la base sans que vous l'ayez décidé.

Ce que le module ne fait pas

  • Ne se connecte à aucune plateforme d'achat à votre place et ne contourne ni connexion, ni captcha, ni robots.txt : un DCE derrière un compte se retire à la main.
  • Ne lit pas les anciens formats binaires .doc, .xls, .ppt ni les archives RAR ou 7-Zip.
  • Sans OCR installé sur le serveur, un PDF scanné reste « Lu, sans texte ».
  • N'analyse pas le contenu des pièces : c'est le rôle du module « analyse IA des appels d'offres et tableau des exigences ».

Prérequis et dépendances

  • Odoo 19 Community ou Enterprise, On Premise ou Odoo.sh (les modules Python tiers ne s'installent pas sur Odoo Online).
  • Dépend de « Marchés publics — analyse du DCE », qui dépend de « Marchés publics — veille BOAMP et TED » : le prix affiché par l'Apps Store inclut ces dépendances.
  • Bibliothèques Python : celles de l'image Odoo standard suffisent ; python-docx et pytesseract sont facultatifs.
Nom techniquemarches_publics_documents
Version19.0.1.0.0
LicenceOPL-1 (Odoo Proprietary License v1.0)
Dépendances directesmarches_publics_dce
ÉditeurDYONYSOS

Support

Questions, installation, paramétrage : welcome@dyonysos.fr. Le guide utilisateur en français est livré dans le module (doc/GUIDE_UTILISATEUR.md). DYONYSOS, éditeur d’applications Odoo 19 Community. Licence OPL-1, une base de production par achat.

Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 1
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 1
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 2
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 2
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 3
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 3
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 4
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 4
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 5
Marchés publics — rapatriement du DCE et des avis (BOAMP, TED eForms) — capture 5

Ce que l'application ne fait pas

  • Ne se connecte à aucune plateforme d'achat à votre place et ne contourne ni connexion, ni captcha, ni robots.txt : un DCE derrière un compte se retire à la main.
  • Ne lit pas les anciens formats binaires .doc, .xls, .ppt ni les archives RAR ou 7-Zip.
  • Sans OCR installé sur le serveur, un PDF scanné reste « Lu, sans texte ».
  • N'analyse pas le contenu des pièces : c'est le rôle du module « analyse IA des appels d'offres et tableau des exigences ».

Applications du magasin nécessaires

Modules Odoo Community utilisés

Aucun.

Applications qui la complètent

SérieVersionÉtatPubliée le
19.019.0.1.0.0 Disponible 02/10/2026

Fiche générée depuis le code de l'éditeur (dépôt privé, branche 19.0) : le code source n'est pas publié.

Contrôle automatique du magasin (distinct de l'éditeur), appliqué à toutes les applications. Conforme.

ContrôleRésultatEffet si absent
Manifeste lisible sans exécution conforme bloquant
Licence reconnue (OPL-1) conforme bloquant
Aucune dépendance vers Odoo Enterprise conforme bloquant
Aucun import de code Enterprise conforme bloquant
Aucun en-tête de licence Enterprise conforme bloquant
Icône static/description/icon.png conforme déclasse
Description (static/description/index.html ou README) conforme déclasse
Tests automatisés (tests/test_*.py) conforme déclasse
Traduction française (i18n/fr.po) conforme info
Section « Ce que le module ne fait pas » conforme info
Titre de 70 caractères au plus (69 actuellement) conforme info
Résumé en français conforme info

Rapatriement des documents — guide de l'utilisateur

Ce module fait arriver dans Odoo toutes les pièces d'un marché : l'avis publié, l'avis structuré, le dossier de consultation (DCE) et tout ce que vous y ajoutez ensuite (rectificatifs, questions-réponses). Chaque pièce est classée (RC, CCTP, CCAP…) et son texte est lu, pour que l'analyse — et vous — travailliez sur le contenu réel du dossier.

1. Où le trouver

  • Sur un avis : onglet Documents (juste avant « Critères d'attribution »), bouton Documents en haut à droite (nombre de pièces), bouton Rapatrier les documents dans l'en-tête.
  • Toutes les pièces : menu Marchés publics → Documents (recherche dans le texte, filtres « Sans texte (scanné ?) », « En erreur », « Type à confirmer », « Pièces maîtresses »).
  • Plateformes d'achat : Marchés publics → Configuration → Plateformes d'achat.
  • Réglages : Paramètres → Marchés publics → Documents des avis.
  • Liste des avis : colonne optionnelle « DCE », filtres DCE complet, DCE partiel, DCE à retirer, Sans document, regroupement par plateforme ; badge DCE sur les cartes du kanban ; action de masse Action → Rapatrier les documents.

2. Ce que fait « Rapatrier les documents »

Source de l'avis Ce qui est récupéré
TED (référence 613278-2026) le XML eForms (/fr/notice/<réf>/xml) → avis structuré ; le PDF officiel (/fr/notice/<réf>/pdf)
BOAMP (référence 26-87924) les données publiées par l'API (donnees), gardées en document JSON ; le PDF seulement si vous avez renseigné son adresse (réglage « PDF officiel des avis BOAMP »)
Toute source le lien de l'avis s'il pointe un fichier ; le DCE (champ « Lien du DCE », rempli depuis l'avis structuré s'il était vide)

Puis, pour chaque fichier :

  1. il est rattaché à l'avis (pièce jointe) — une seule fois : le même fichier reçu par TED, par courriel et dans le ZIP n'existe qu'en un exemplaire (empreinte SHA-256) ;
  2. une archive ZIP est développée (jusqu'à 3 niveaux, 500 fichiers et 200 Mo décompressés ; les chemins dangereux et les fichiers parasites __MACOSX, Thumbs.db sont écartés) ;
  3. son type est deviné d'après le nom, puis le titre en tête du texte ; il est marqué « deviné » tant que vous ne l'avez pas confirmé ;
  4. son texte est extrait : PDF (pages séparées par un saut de page), Word (titres isolés), Excel (feuille par feuille, colonnes séparées par « | »), OpenDocument, HTML, texte, XML, JSON, RTF.

Relancer le bouton ne télécharge rien de nouveau si tout est déjà là. Après le rapatriement, l'étape suivante (l'analyse, module IA) est lancée automatiquement si elle est installée.

Ce qui est écrit sur l'avis

  • Avis structuré (JSON normalisé) : acheteur (nom, courriel, téléphone, ville, site, profil acheteur), objet, nature, procédure, CPV, montant publié, durée en mois, lots (numéro, intitulé, montant, CPV), critères pondérés, lien du DCE, date limite, date limite des questions, langues, base légale, marché de défense (directive 2009/81). S'y ajoutent : le type et l'activité de l'acheteur (« Autorité locale », « Organisme de droit public »…), le maximum d'accord-cadre, la grille de critères de chaque lot, et les critères de sélection (chiffre d'affaires minimum, nombre de références, effectif, assurance, inscription à un registre…) avec le seuil chiffré quand l'avis l'écrit (« au minimum 2.000.000 EUR par an » → 2 000 000 €/an). Un seuil n'est jamais deviné.
  • Montant publié : seulement s'il est publié. Un montant absent reste vide — l'écran affiche « Montant non publié » ; ce n'est jamais zéro (un « 0,00 EUR » publié veut dire « non publié »). Quand l'avis ne donne pas de total mais valorise tous ses lots, le montant affiché est leur somme, et « Niveau du montant publié » dit « Somme des lots publiés » (calculée, pas lue). Jamais le montant du seul lot 1.
  • Maximum écrit seulement dans la description : quand l'avis ne publie aucun maximum dans un champ (ni au niveau procédure, ni sous un lot), la description de la procédure puis celle de chaque lot sont lues à la recherche de « montant maximum / maximal … X € » (642930 : « avec un montant maximum de 3 000 000,00 euros HT »). Le maximum est alors noté dans l'avis structuré (notice_json.montant.max) avec "max_source": "description" et l'extrait ; « sans montant maximum », un maximum « par jour » (pénalité) ou deux maximums différents ne donnent rien. L'analyse le reprend avec une confiance réduite.
  • Objet, procédure : l'objet (la description publiée, pas le titre TED « France – Services… ») et la procédure en français (« Procédure ouverte », « Procédure négociée avec mise en concurrence préalable »…) sont écrits seulement s'ils sont vides.
  • Langue de l'offre : si elle est « non précisée » ou seulement déduite de la région, la langue lue dans l'avis la remplace (français, néerlandais, allemand ; plusieurs langues acceptées → « au choix »). Une langue saisie à la main n'est jamais touchée. Un avis en anglais seul remet « non précisé » et le signale dans le fil : c'est à vous de décider.
  • Critères d'attribution : les pondérations publiées dans l'avis (si elles totalisent 100 % et valent pour tous les lots) sont ajoutées avec l'origine « Donnée d'API ». Si chaque lot a sa grille, aucune n'est posée sur l'avis (elles restent lisibles, lot par lot, dans l'avis structuré). Une grille en points est gardée en points (et convertie en % dans l'avis structuré), pas posée comme critères. Vos lignes saisies à la main et celles extraites du DCE ne sont jamais touchées.
  • Lien du DCE : rempli depuis l'avis structuré seulement s'il était vide.
  • Documents « formulaire d'avis » : l'avis structuré (XML/JSON) n'est pas lu comme un texte par l'analyse (case « À analyser » décochée) ; le PDF de l'avis TED/BOAMP reste lu mais porte la case « Formulaire d'avis officiel » : l'analyse n'en tire ni montant ni nature.

3. Le DCE est sur une plateforme avec compte

C'est le cas le plus fréquent (PLACE, AWS marches-publics.info, achatpublic, marches-securises, e-marchespublics, Maximilien, Mégalis, Atexo, Alsace Marchés Publics, Territoires numériques BFC, Démat-AMPA, Klekoon, Synapse, e-Procurement belge, TED eTendering…).

Le moteur ne se connecte jamais à votre place et ne stocke aucun identifiant. Il ne contourne ni un refus (401, 403, 407), ni une page de connexion, ni un captcha, ni robots.txt. À la place :

  • le statut DCE passe à « DCE à retirer (compte requis) » et un bandeau orange apparaît dans l'onglet Documents, avec le bouton Ouvrir la plateforme et les instructions de retrait de la plateforme ;
  • une seule activité « DCE à retirer sur » est programmée (au veilleur défini dans les paramètres, sinon à vous). Elle n'est jamais reprogrammée, même clôturée.

Ce que vous faites : ouvrez la plateforme avec le compte de votre société, téléchargez le DCE (ZIP), puis déposez-le (§ 4). Le statut passe alors à « DCE complet » dès que le RC ou le CCTP est présent.

Les instructions de chaque plateforme sont modifiables (Configuration → Plateformes d'achat). Une plateforme inconnue s'ajoute là aussi : un nom, un motif (expression régulière sur l'adresse, par exemple achats-occitanie\.fr), « Compte requis », des instructions. Le bouton Tester le motif vérifie qu'il reconnaît au moins l'adresse du site.

4. Déposer des fichiers

Onglet Documents → Déposer des fichiers : choisissez un ou plusieurs fichiers, ou le ZIP complet. Laissez « Type » vide pour que chaque pièce soit classée automatiquement ; renseignez-le pour l'imposer à tous les fichiers déposés (le contenu d'un ZIP reste classé automatiquement).

Le champ historique « Dossier de consultation » (onglet du même nom, module d'analyse du DCE) fonctionne toujours : un fichier déposé là rejoint aussi les documents.

5. Recevoir les DCE par courriel

Les plateformes envoient souvent les pièces (DCE, rectificatifs, questions-réponses) par courriel. Pour les faire arriver seules sur l'avis :

  1. Paramètres → Technique → Alias de messagerie (mode développeur), ou Paramètres → Discussion pour le domaine d'alias : créez un alias, par exemple dce@votre-domaine, modèle « Avis de marché public », « Accepter les courriels de : tout le monde » ou « partenaires connus ».
  2. Transférez-y le courriel de la plateforme (ou faites-y suivre automatiquement l'adresse de retrait de votre société).

Ce qui se passe :

  • si l'objet ou le corps cite une référence BOAMP (26-87924) ou TED (613278-2026) d'un avis connu, les pièces jointes y sont ajoutées (origine « Courriel reçu ») ;
  • sinon un avis manuel est créé, intitulé comme l'objet du courriel, de référence COURRIEL-… ; un lien de plateforme trouvé dans le corps devient son lien du DCE ;
  • une réponse dans le même fil ajoute ses pièces au même avis ;
  • les petits logos de signature sont ignorés ; le même courriel reçu deux fois n'ajoute rien.

6. Lire un document

Cliquez sur une ligne de l'onglet Documents (ou ouvrez-la depuis le menu Documents) : état, type (bouton Type confirmé), format reconnu, pages, langue détectée, texte extrait (onglet), fichiers contenus pour une archive. Boutons : Ouvrir, Télécharger, Relire le fichier (après activation de l'OCR par exemple ; un type confirmé n'est pas remplacé), Retenter le téléchargement (document connu par son adresse mais pas encore récupéré).

États possibles : Texte extrait (prêt pour l'analyse) ; Lu, sans texte (scan, plan, image) ; Erreur (le message dit pourquoi : « format non lu : document Office ancien (.doc)… » par exemple) ; Accès restreint ; Trop volumineux.

Corriger le type d'une pièce le confirme. Décocher « À analyser » l'écarte de l'analyse (les plans, images et archives le sont d'office).

7. Tâche planifiée

Paramètres → Technique → Tâches planifiées → « Marchés publics : rapatriement des documents » — livrée inactive, parce qu'elle sort de la base. Une fois activée (toutes les heures, 20 avis par passage), elle traite les avis dont l'échéance n'est pas passée, du plus proche au plus lointain : d'abord ceux jamais traités, puis ceux « Partiel » ou « Erreur » dont le dernier essai date de plus de 12 heures. Chaque avis est traité à part : une erreur est notée sur l'avis (chatter, champ « Incidents ») et n'arrête pas le lot.

Indépendamment, le réglage « Rapatrier les documents après la veille » (activé par défaut) rapatrie les avis nouveaux juste après chaque veille (30 au plus par passage).

8. Réglages (Paramètres → Marchés publics → Documents des avis)

Réglage Défaut Effet
Rapatrier les documents après la veille activé les avis nouveaux sont rapatriés à la suite de la veille
Taille maximale d'un document 50 Mo au-delà, arrêt du téléchargement, document « Trop volumineux »
Reconnaissance de caractères (OCR) désactivé lit les PDF scannés si pytesseract et pdf2image sont installés sur le serveur
PDF officiel des avis BOAMP vide (désactivé) modèle d'adresse avec {idweb}, {filename}, {annee}, {mois}, {jour}

9. Limites connues

  • Formats non lus : anciens .doc, .xls, .ppt binaires, archives RAR et 7-Zip — le document le dit (« format non lu : … ») ; enregistrez-le en .docx / .xlsx ou décompressez l'archive et déposez son contenu.
  • PDF scannés : sans OCR installé, ils restent « Lu, sans texte ».
  • Cadence polie : deux requêtes vers un même site sont espacées d'au moins 4 s pour ted.europa.eu (mesuré le 30/09/2026 : TED répond « 429 Too Many Requests » dès ~3 requêtes par seconde, tout passe à 4 s) et 1 s ailleurs. Un « 429 » ou « 503 » est retenté au plus 3 fois en respectant l'en-tête Retry-After ; si le site demande plus d'une minute, ou après 3 essais, le document reste « À télécharger » (ce n'est ni une erreur définitive ni un compte requis) et la tâche planifiée le reprendra plus tard. Réglable dans Paramètres → Technique → Paramètres système : marches_publics_documents.espacements (« ted.europa.eu=4, www.boamp.fr=2 »), marches_publics_documents.espacement_defaut (secondes), marches_publics_documents.essais.
  • TED depuis un centre de données : ted.europa.eu peut répondre « 202 » avec une réponse vide (défi anti-robot) ; le moteur ne cherche pas à le passer : le document reste « À télécharger », l'avis « Partiel » ou « Erreur », et il sera retenté. Vérifiez depuis le serveur de production que les adresses TED répondent avant d'activer la tâche planifiée.
  • PDF BOAMP : son adresse n'est pas publiée par l'API ; le réglage est vide tant que vous ne l'avez pas vérifiée sur un avis réel.
  • Le classement se trompe parfois sur un nom de fichier muet : le type reste « deviné » jusqu'à votre confirmation.
  • Le moteur ne remplit aucun formulaire de retrait, même anonyme (PLACE).

Avis des clients connectés. Un avis noté par client ; l'éditeur peut y répondre. Connectez-vous pour laisser un avis.

Éditeur
DYONYSOS
E-mail
contact@omnifloo.com
Clients Omnifloo
Support inclus selon votre formule : centre d'aide.