Projet

Général

Profil

Actions

Anomalie #33077

ouvert

M2M - Envoi d'un pli numérique entre instance A et instance B, l'instance B ne peut pas effectué d'action sur le pli reçu

Ajouté par Cynthia APURA il y a 16 jours. Mis à jour il y a 16 jours.

Statut:
R&D - A étudier
Priorité:
1-Majeur
Assigné à:
Version cible:
-
Début:
18/03/2025
Echéance:

Description

Bonjour,

Nous avons identifié une anomalie lors de la réception d'un pli numérique entre *** et ### intégration.

Lors de l'envoi d'un pli numérique de *** vers ### intégration, le courrier est bien reçu sur ### intégration, sous l'entité **** ****. 
Cependant, dès qu'un utilisateur tente d'effectuer une action sur ce courrier, l'erreur suivante apparaît :

<pre>"message": "Slim Application Error",
"exception": [ {
"type": "Error",
"code": 0,
"message": "Attempt to assign property \"OrganizationDescriptiveMetadata\" on null",
"file": "/var/www/html/MaarchCourrier/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php",
"line": 103,
"trace": [ {
"file": "/var/www/html/MaarchCourrier/src/app/action/controllers/ActionMethodController.php",
"line": 191,
"function": "sendMessageExchangeReview",
"class": "MessageExchange\\controllers\\MessageExchangeReviewController",
"type": "::"
}, {
"file": "/var/www/html/MaarchCourrier/src/app/resource/controllers/ResourceListController.php",
"line": 546,
"function": "terminateAction",
"class": "Action\\controllers\\ActionMethodController",
"type": "::"
}, {
"file": "/var/www/html/MaarchCourrier/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php",
"line": 38,
"function": "setAction",
"class": "Resource\\controllers\\ResourceListController",
"type": "->"
},</pre>

L'origine du problème a été identifiée dans le fichier suivant :

<pre>src/app/external/messageExchange/controllers/ReceiveMessageExchangeController.php</pre>
Ligne 143 : 
<pre>$resource = ResModel::getById(['id' => $resLetterboxReturn]);</pre>

Dans cet appel, Maarch tente de récupérer un courrier en fonction de son ID, mais la partie ['select'] => [...] est absente.
Dans la méthode getById de la classe ResModelAbstract, aucune vérification n'est effectuée sur la présence de la clé select, 
ce qui génère d'abord un warning PHP.
Dans la méthode select de la classe DatabaseModel, une vérification impose que la clé select soit renseignée. 
En son absence, une erreur est déclenchée.
Bien que cette erreur n'ait pas d'impact direct sur l'application, elle bloque la récupération du pli numérique, qui devient alors incomplet. 
C'est ce qui explique l'erreur rencontrée lors d'une tentative d'action sur celui-ci.
Versions concernées
Version observée : 2301
Versions également impactées : 24.3.2 (les lignes en cause y sont également présentes)

Pouvez-vous ajouter un correctif pour les versions 23 & 24 ?

Cordialement,

En tant qu'utilisateur de INSTANCE B je reçois un pli numérique envoyé depuis INSTANCE A, celui-ci est bien reçu sous l'entité INSTANCE A.

Constaté

Lorsqu'un utilisateur tente d'effectuer une action sur le courrier reçu, l'erreur suivante apparaît :

"message": "Slim Application Error",
"exception": [
    {
        "type": "Error",
        "code": 0,
        "message": "Attempt to assign property \"OrganizationDescriptiveMetadata\" on null",
        "file": "/var/www/html/MaarchCourrier/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php",
        "line": 103,
        "trace": [
            {
                "file": "/var/www/html/MaarchCourrier/src/app/action/controllers/ActionMethodController.php",
                "line": 191,
                "function": "sendMessageExchangeReview",
                "class": "MessageExchange\\controllers\\MessageExchangeReviewController",
                "type": "::"
            },
            {
                "file": "/var/www/html/MaarchCourrier/src/app/resource/controllers/ResourceListController.php",
                "line": 546,
                "function": "terminateAction",
                "class": "Action\\controllers\\ActionMethodController",
                "type": "::"
            }
        ]
    }
]

Origine du problème d'après le client

Le problème a été identifié dans le fichier suivant :

src/app/external/messageExchange/controllers/ReceiveMessageExchangeController.php

Ligne 143 : $resource = ResModel::getById(['id' => $resLetterboxReturn]);

Dans cet appel, Maarch tente de récupérer un courrier en fonction de son ID, mais la partie ['select'] => [...] est absente.
Dans la méthode getById de la classe ResModelAbstract, aucune vérification n'est effectuée sur la présence de la clé select, ce qui génère un warning PHP.
Dans la méthode select de la classe DatabaseModel, une vérification impose que la clé select soit renseignée. En son absence, une erreur est déclenchée.
Cette erreur bloque la récupération du pli numérique, le rendant incomplet, ce qui explique l'erreur rencontrée lors d'une tentative d'action sur celui-ci.

Attendu
L'action sur le courrier reçu doit pouvoir être effectuée sans erreur.

Pas à pas
Sur INSTANCE A, envoyer un pli numérique vers INSTANCE B.
Se connecter à INSTANCE B avec un utilisateur, accéder au courrier reçu
Tenter d'effectuer une action sur ce courrier.

Reproduis
Je ne peux pas tester de mon côté je n'ai pas de M2M paramétré
Le client a reproduit en 2301 et sur la 24.3.1

Mis à jour par Cynthia APURA il y a 16 jours

  • Statut changé de A qualifier à R&D - A étudier

Mis à jour par Cynthia APURA il y a 16 jours

  • Description mis à jour (diff)
Actions

Formats disponibles : Atom PDF