Rétention des messages SOAP en cas d'incident de production DMP

Comment récupérer les trames SOAP pour analyse par le centre de service du sesam-vitale ?

Dorénavant depuis la prise en charge de la demande DMP-440 : pouvoir remonter la conversation soap à l’éditeur en réponse pour analyse, il est possible de récupérer l’échange SOAP grâce à deux nouveaux points d’entrée dans les APIs REST :

dmpc-admin swager

Le premier permet de récupérer la liste des erreurs survenues et qui sont sauvegardés sur le disque de la DevBox-Santé :

get {
  url: {{base_url}}/dmp/errors
  body: none
  auth: none
}

Retourne une Map de fichiers horodatés indexés par l’identifiant de l’échange SOAP (exchangeId), comme par exemple:

{
  "4abaf23c-fb0b-4313-9cce-6bbfeb89c21a": {
    "time": "2024-06-21T11:43:26.763+02:00",
    "path": "file:///C:/Users/lfo/AppData/Local/Temp/dbx-dmp-logs16131058871974231716/20240621114326dbx-dmp-error4abaf23c-fb0b-4313-9cce-6bbfeb89c21a.log"
  }
}

Le deuxième point d’entrèe permet de télécharger le fichier contenant cet échange SOAP pour analyse par le centre-de-service@sesam-vitale.fr .

Pour connaître l’exchangeId qui concerne l’erreur à diagnostiquer, deux manières de faire :

  • Soit vous connaissez la date et l’heure de l’incident, et vous rechercher l’échange SOAP à cette date.
  • Soit au moment de la récupération de l’erreur DMP par le proxy REST vous récupérez l’exchangeId retourné
    • Exemple :

       {
      "message": "org.apache.cxf.binding.soap.SoapFault: Le champ Resource_id est incorrect : 27707632208291^^^&1.2.250.1.213.1.4.10&ISO^NH",
      "errorType": "DmpCxfSoapFaultInException",
      "messageEnum": "DMP_SERVER_ERROR",
      "exchangeId": "4abaf23c-fb0b-4313-9cce-6bbfeb89c21a",
      "stackTrace": [
          "fr.devboxsante.dmp.core.cxf.DmpCxfWsEndPointFactory$2.handleMessage(DmpCxfWsEndPointFactory.java:95)",
          "org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)",
          ...
      ]}