Aller au contenu

Récupérer les acquittements FAST-ACTES depuis le WebDAV

Prérequis : avoir configuré le connecteur FAST-ACTES et avoir effectué au moins un envoi d’acte vers FAST-ACTES.

Un batch permet de scanner le répertoire WebDAV FAST-ACTES afin de récupérer automatiquement les retours déposés par la plateforme :

  • les accusés de réception préfecture ;
  • les retours d’anomalie.

Ces retours sont transmis au format XML et sont déposés dans le même répertoire WebDAV que celui utilisé pour l’envoi des actes.


1) Paramétrage applicatif

La configuration générale de Maarch Courrier se trouve dans le fichier :

 config/config.json

Ou, selon votre installation :

custom/<id_custom>/config/config.json

Exemple :

 { "config": { "maarchDirectory": "/var/www/html/MaarchCourrier/", "customID": "maarch_courrier", "maarchUrl": "https://courrier.example.org/" }, "signatureBook": { "userWS": "superadmin", "passwordWS": "superadmin" } }

Paramètres utilisés par le batch

  • maarchDirectory : chemin absolu vers l’application Maarch Courrier.
  • customID : identifiant du custom Maarch Courrier.
  • maarchUrl : URL publique de l’application Maarch Courrier. Ne pas utiliser localhost ni 127.0.0.1, car le batch appelle l’API REST de Maarch Courrier pour créer les pièces jointes.
  • userWS : identifiant d’un utilisateur Maarch Courrier autorisé à appeler l’API REST.
  • passwordWS : mot de passe de l’utilisateur ci-dessus.

Il est recommandé d’utiliser un compte dédié aux appels webservice.


2) Paramétrage FAST-ACTES

La configuration FAST-ACTES se trouve dans un fichier JSON dédié :

config/fastActesConfig.json

Ou, selon votre installation :

 custom/<id_custom>/config/fastActesConfig.json

Exemple :

{
  "siren": "999100081",
  "prefixe": "xelians",
  "departement": "999",
  "arrondissement": "1",
  "webdavUrl": "https://recette.efast.fr/ascl/webdav/999100081/xelians/",
  "webserviceUrl": "https://recette.efast.fr/ascl/services/FASTConnecteur",
  "portalUrl": "https://recette.efast.fr/ascl/",
  "certPath": "/usr/local/share/ca-certificates/depot.p12",
  "certPass": "********",
  "certType": "P12",
  "dnUtilisateur": "E = depot-demo@xelians.fr, CN = DEPOT-DEMO XELIANS, OU = 0002 999100081, OU = CACertificat, O = CONNXELIANS, L = PARIS, C = FR",
  "statuts": {
    "enAttente": "ACTE_ATT",
    "erreurEnvoi": "ACTE_CTRL",
    "arRecu": "ACTE_NOTIF",
    "anomalie": "ACTE_CTRL"
  }
}

Paramètres utilisés pour la récupération

  • webdavUrl : URL du répertoire WebDAV FAST-ACTES.
  • certPath : chemin vers le certificat client utilisé pour accéder au WebDAV.
  • certPass : mot de passe du certificat.
  • certType : type du certificat. Exemple : P12.
  • statuts.arRecu : statut appliqué au courrier lorsque l’accusé de réception est récupéré.
  • statuts.anomalie : statut appliqué au courrier lorsqu’un retour d’anomalie est récupéré.

Les statuts configurés doivent exister dans la table status de Maarch Courrier.

Exemples de statuts :

 ACTE_ATT ACTE_CTRL ACTE_NOTIF

3) Batch

Le script de récupération des acquittements FAST-ACTES est exécuté en tâche planifiée.

Exemple de lancement manuel :

 php /var/www/html/MaarchCourrier/bin/fastActes/process_acknowledgements.php
--config /var/www/html/MaarchCourrier/custom/maarch_courrier/config/config.json

Le paramètre --config doit pointer vers le fichier config.json de l’instance Maarch Courrier concernée.


4) Planification

Le batch doit être planifié via crontab.

Exemple d’exécution toutes les 30 minutes :

 */30 * * * * php /var/www/html/MaarchCourrier/bin/fastActes/process_acknowledgements.php --config /var/www/html/MaarchCourrier/custom/maarch_courrier/config/config.json

Il est recommandé d’éviter les heures exactes afin de limiter les appels simultanés vers la plateforme FAST.

Exemple :

 7,37 * * * * php /var/www/html/MaarchCourrier/bin/fastActes/process_acknowledgements.php --config /var/www/html/MaarchCourrier/custom/maarch_courrier/config/config.json

5) Fonctionnement

Le batch effectue les opérations suivantes :

  1. connexion au WebDAV FAST-ACTES avec le certificat configuré ;
  2. listing du répertoire WebDAV ;
  3. détection des fichiers XML de retour :
  4. flux 1-2 : accusé de réception ;
  5. flux 1-3 : anomalie ;
  6. téléchargement du fichier XML ;
  7. lecture du numéro interne ACTES dans le XML ;
  8. recherche de l’envoi correspondant dans Maarch Courrier ;
  9. intégration du XML en tant que pièce jointe du courrier ;
  10. mise à jour du statut du courrier ;
  11. ajout d’un historique ;
  12. suppression du fichier XML sur le WebDAV si le traitement est terminé avec succès.

6) Accusé de réception

Lorsqu’un fichier de type 1-2 est détecté, il est considéré comme un accusé de réception.

Exemple de nom de fichier :

 999-999100081-20260529-111260529766317-DE-1-2_117.xml

Le batch :

  • récupère le XML depuis le WebDAV ;
  • extrait le NumeroInterne ;
  • retrouve l’envoi correspondant ;
  • ajoute le XML en pièce jointe du courrier ;
  • passe le courrier au statut configuré dans statuts.arRecu ;
  • met à jour l’envoi en base ;
  • ajoute une entrée d’historique ;
  • supprime le XML du WebDAV.

Exemple d’historique ajouté :

 Accusé de réception FAST-ACTES reçu pour l'envoi 111260529766317

7) Anomalie

Lorsqu’un fichier de type 1-3 est détecté, il est considéré comme un retour d’anomalie.

Exemple de XML :

<actes:AnomalieActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"> actes:Date2026-05-29</actes:Date> actes:Nature006</actes:Nature> actes:DetailLe fichier acte.pdf est introuvable</actes:Detail> <actes:ActeRecu actes:Date="2026-05-29" actes:NumeroInterne="111260529766317" actes:CodeNatureActe="3"/> </actes:AnomalieActe>

Le batch :

  • récupère le XML depuis le WebDAV ;
  • extrait le NumeroInterne ;
  • extrait le détail de l’anomalie ;
  • retrouve l’envoi correspondant ;
  • ajoute le XML en pièce jointe du courrier ;
  • ajoute une note sur le courrier avec le détail de l’anomalie ;
  • passe le courrier au statut configuré dans statuts.anomalie ;
  • met à jour l’envoi en base ;
  • ajoute une entrée d’historique ;
  • supprime le XML du WebDAV.

Exemple de note ajoutée :

 Envoi vers TDT non validé : pour l'envoi réalisé le 29/05/2026 à 10:15 par Jean Dupont, le fichier acte.pdf est introuvable.

8) Rattachement à l’envoi Maarch Courrier

Le rapprochement entre le retour FAST-ACTES et l’envoi Maarch Courrier se fait via le numéro interne ACTES.

Ce numéro est présent :

  • dans le XML d’envoi 1-1 ;
  • dans la table fast_actes_transmissions ;
  • dans le XML retour 1-2 ou 1-3.

Exemple :

 actes:NumeroInterne="111260529766317"

Si aucun envoi correspondant n’est trouvé, le fichier n’est pas supprimé du WebDAV afin de permettre un retraitement ultérieur.


9) Pièce jointe créée

Le fichier XML de retour est intégré au courrier via l’API REST de création de pièce jointe.

Les informations suivantes sont utilisées :

  • resIdMaster : identifiant du courrier principal.
  • title :
  • Accusé de réception FAST-ACTES pour un AR ;
  • Anomalie FAST-ACTES pour une anomalie.
  • chrono : nom du fichier XML récupéré.
  • format : XML.
  • type : simple_attachment.
  • status : TRA.

Un historique de création de pièce jointe est également ajouté automatiquement par Maarch Courrier.


10) Suppression du WebDAV

Le fichier XML est supprimé du WebDAV uniquement si l’ensemble du traitement est réussi.

Le fichier est conservé sur le WebDAV si :

  • l’envoi Maarch Courrier correspondant est introuvable ;
  • le XML ne peut pas être parsé ;
  • la pièce jointe ne peut pas être créée ;
  • le statut du courrier ne peut pas être mis à jour ;
  • l’historique ne peut pas être créé.

Cela permet au batch de retraiter le retour lors de son prochain passage.


11) Contrôles utiles

Lister le WebDAV

 curl -sk
--cert-type P12
--cert /usr/local/share/ca-certificates/depot.p12:pwdcertif
-X PROPFIND
-H "Depth: 1"
"https://recette.efast.fr/ascl/webdav/999100081/xelians/"

Rechercher les retours 1-2 ou 1-3

 curl -sk
--cert-type P12
--cert /usr/local/share/ca-certificates/depot.p12:pwdcertif
-X PROPFIND
-H "Depth: 1"
"https://recette.efast.fr/ascl/webdav/999100081/xelians/"
| grep -E "1-2|1-3"

Rechercher un envoi précis

 curl -sk
--cert-type P12
--cert /usr/local/share/ca-certificates/depot.p12:
-X PROPFIND
-H "Depth: 1"
"https://recette.efast.fr/ascl/webdav/999100081/xelians/"
| grep "111260529766317"

12) Vérifications en base

Vérifier l’envoi

SELECT id, res_id, internal_number, status, acknowledgement_filename, acknowledgement_received_at, anomaly_message FROM fast_actes_transmissions WHERE internal_number = '111260529766317';

Vérifier le statut du courrier

 SELECT res_id, status FROM res_letterbox WHERE res_id = 111;

Vérifier la pièce jointe créée

SELECT res_id, res_id_master, title, identifier, attachment_type, status, format, creation_date FROM res_attachments WHERE res_id_master = 111 ORDER BY res_id DESC;

Vérifier l’historique

 SELECT table_name, record_id, event_type, event_id, info, event_date FROM history WHERE record_id = '111' ORDER BY id DESC;

Vérifier les notes en cas d’anomalie

 SELECT id, identifier, note_text, creation_date FROM notes WHERE identifier = 111 ORDER BY id DESC;

13) Remarques

Les fichiers XML récupérés sont supprimés du WebDAV uniquement après traitement réussi. Les statuts configurés dans fastActesConfig.json doivent exister dans la table status. Le batch doit être lancé toutes les 30 minutes au maximum, de préférence à des horaires décalés. Si plusieurs instances Maarch Courrier utilisent FAST-ACTES, prévoir un script ou une planification dédiée pour chaque custom.


14) Exemple de retour attendu

Après récupération d’un AR, on doit constater :

  • le fichier XML 1-2 n’est plus présent sur le WebDAV ;
  • une pièce jointe Accusé de réception FAST-ACTES est créée ;
  • le courrier passe au statut défini dans statuts.arRecu ;
  • l’envoi passe au statut A dans fast_actes_transmissions ;
  • une ligne d’historique est ajoutée.

Après récupération d’une anomalie, on doit constater :

  • le fichier XML 1-3 n’est plus présent sur le WebDAV ;
  • une pièce jointe Anomalie FAST-ACTES est créée ;
  • une note d’anomalie est ajoutée au courrier ;
  • le courrier passe au statut défini dans statuts.anomalie ;
  • l’envoi passe au statut E dans fast_actes_transmissions ;
  • une ligne d’historique est ajoutée.