Affichage des articles dont le libellé est eDSN. Afficher tous les articles
Affichage des articles dont le libellé est eDSN. Afficher tous les articles

24 juillet 2026

Décoder les CRM de la DSNATTACHMENT

 Pour consulter le contenu de CRM stockés en BDSN

SQL> select convert(utl_raw.cast_to_varchar2(dbms_lob.substr(ATTACHMENT)),'WE8ISO8859P15','UTF8') from DSNATTACHMENT where declarationid='digix-in-the-sky-with-diamonds' and idretour='digix';

<?xml version="1.0" encoding="UTF-8"?><gipmds:rapport xmlns:gipmds="http://www.gip-mds.fr/" message= "L'attestation employeur d'annulation ci-dessous a bien été prise en compte par France Travail. Pour toutes demandes d'information, merci de vous orienter vers votre plateforme dédiée dsn-info.fr. Une assistance téléphonique est mise en place." profil="DSN" type="44" version="v01r06"><envoi> <envoi_identification><idflux>...</idflux><version_norme>P26V01</version_norme><point_de_depot>01</point_de_depot><type_envoi>01</type_envoi><essai_reel>02</essai_reel><emetteur_siret>...</emetteur_siret><nom_logiciel>eDSN / HR Access</nom_logiciel><editeur_logiciel>Sopra HR Software</editeur_logiciel></envoi_identification><envoi_bilan> <envoi_etat>OK</envoi_etat> </envoi_bilan></envoi><declaration> <declaration_identification><rang>1</rang><nature>07</nature><type>04</type><fraction>11</fraction><ordre>...</ordre><id_annulation>...<declaration_bilan> <etat>OK</etat><declaration_contenu> <salaries>1</salaries> </declaration_contenu> </declaration_bilan><declaration_anomalie><description><code>ANN_001</code><categorie>non-bloquant</categorie><message>Votre demande d'annulation de l'attestation ... a bien été prise en compte par France Travail.</message></description></declaration_anomalie></declaration></gipmds:rapport>

26 novembre 2025

eDSN - Erreur "Accès refusé pour certains SIRET" lors du téléchargement des BPIJ

Les commandes smart-download-bpij et bpijm2m:download-bpij émettent pour certains SIRET un message d'erreur 230 "Accès refusé pour certains SIRET".

Exemple pour une société avec 3 sirets actifs:
bpijm2m:download-bpij 'ADMIN/12300000-4560-7890-prod-000000000001/NET' '12345678000001,12345678000002,12345678000003' '20230125' '20230208' '/hr9prd/evm/m2m.work'
Erreur: Autorisation d'accès refusée pour 3 SIRET : 12345678000001,12345678000002,12345678000003
com.soprahr.karaf.shell.ext.CommandExitException: Accès refusé pour certains SIRET
at com.soprahr.karaf.shell.ext.CommandExitStatus.set(CommandExitStatus.java:83)
...

Du coté de evMedia, ce message est associé à un code retour 230. 

L'erreur n'est pas bloquante et les BPIJ des autres SIRET sont bien téléchargés.

La réponse du GIP est un flux XML qui est enregistré dans edsn-home/bpij-download :

<?xml version='1.0' encoding='UTF-8'?><smart-download-bpij startDate="2025-11-15" endDate="2025-11-25"><unmapped/><download-bpij declarant="ADMIN/12345678-123e-4a56-87f0-b6ab1235e46e/NET/12345678000001/ACME/EDSN-PROD" startDate="2025-11-15" endDate="2025-11-25"><siret>12345678000001</siret><siret>12345678000002</siret><siret>12345678000003</siret>
<gip-response pageencours="1" pagetotal="1" elapsedSeconds="3.857076893"><declare siret="12345678000001" status="OK" message="pas de BPIJ sur la période" bpijCount="0"/>
<declare siret="12345678000002" status="KO" message="lien déclarant déclaré non validé" bpijCount="0"/><declare siret="12345678000003" status="OK" bpijCount="3" bpijDownloadElapsedSeconds="1.378876929"/>

...

On voit donc que pour le siret 12345678000002 le status="KO" a comme message "lien déclarant déclaré non validé".

On a contrôlé que :

  • Le compte déclarant M2M (SIRET 12345678000001) de eDSN se connecte bien à Net-Entreprises 
  • La tuile "Attestation de salaire" est accessible et fonctionne 
  • La page de téléchargement des BPIJ s'affiche correctement
  • La liste des SIRETs actifs de la société présente les SIRETs actifs dont le 12345678000002 en erreur 

Suite à ouverture d'un incident auprès du GIP, la CNAM a renvoyé cette explication :

"l’accès à la tuile « Attestation de salaire » n’est pas utilisé par l’API BPIJ pour la gestion des habilitations. Pour qu’un déclarant puisse lister et télécharger les BPIJ d’un déclaré donné dans l’API BPIJ, il est nécessaire qu’il ait au préalable réalisé en DSN un signalement d’arrêt pour ce déclaré."

Donc le compte déclarant associé au SIRET 12345678000001 ne peut pas accéder aux BPIJ du déclaré 12345678000002 car il n’a jamais réalisé en DSN un signalement d’arrêt pour ce SIRET 12345678000002.

Pour les établissements concernés, cela signifie que les gestionnaires n'ont jamais utilisé eDSN pour faire des envois d'AT mais toujours utilisé le mode déclaratif manuel en utilisant le portail Net-Entreprises.

L'erreur disparaitra après leur premier envoi de signalement AT en M2M ...

Merci à David pour cette analyse précise.

26 septembre 2025

eDSN - M2M et message d'erreur "Utilisateur non-inscrit au service"

Depuis quelques jours, l'applicatif eDSN n'arrive plus à déposer de DSN ou à télécharger de CRM. Dans le doute, l'équipe MOA a mis à jour le mot de passe du compte sur le site de Net Entreprises et sur eDSN mais le blocage persiste.

A la lecture des logs, le message qui apparaît est : "Utilisateur non-inscrit au service"

Il ne s'agit pas d'un problème de mot de passe, c'est un problème d'autorisation.

Sur Net Entreprises, le compte a perdu le droit de déposer des DSN et d'en consulter les CRM. Quand on est connecté, cela se voit par l'absence du pavé coloré intitulé "DSN"


Si la MOA se connecte avec le compte utilisé pour déposer des DSN de TEST, les droits sont corrects :


Il s'agit en fait d'une erreur de manipulation. Il faut trouver le responsable de la MOA qui dispose d'un compte administrateur sur Net Entreprises pour qu'il corrige le compte utilisé par eDSN. Une fois le compte corrigé, il faudra attendre 24h pour que le GIP-MDS prenne en compte la modification !

16 juin 2025

Ajouter un certificat au keystore de eDSN

Lundi matin Net-Entreprises informe du remplacement des autorités de certification du site de France Travail pour le mercredi (sic) ... Ceci peut impacter les flux M2M de eDSN lors du téléchargement des Attestations d'Emploi Rematérialisées (CRM de nature 44).

Net entreprises fournit les nouveaux certificats. Vous pouvez les installer dans le "keystore" votre eDSN, ou attendre que le support client mette à disposition une nouvelle version.

Quelques notions de base :

HandShake : les serveurs contrôlent qu'ils se connaissent avant d'échanger des données. Le serveur distant va présenter son certificat. eDSN va le contrôler par rapports à ceux dont il dispose. S'il n'est pas reconnu, une erreur sera levée :

SSLHandshakeException invoking https://teledeclarants.francetravail.fr: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Certificat : Fichier qui assure de l'identité de son titulaire. Il est certifié par une autorité.

CA : autorité de certification, organisme qui valide l'authenticité d'un certificat (on peut trouver des CA intermédiaires et des ROOT CA racine. Les "intermédiaires" sont certifiés par une autre autorité. Seuls les "racine" sont "autocertifiés"). Par analogie, votre acte de naissance peut être certifié par un agent de votre mairie, qui lui même peut être certifié par un notaire.

Le keystore eDSN est un "Magasin de clés". Le keystore fourni par eDSN ne contient que les CA intermédiaires et racines des services M2M. Tant que ceux ci restent valables, le handshake sera correct.

En testant l'URL France Travail (avec la commande "m2m-plus certificates") on constate la présence d'un certificat dont la fin de validité est au 18/06/2025, une CA et une rootCA "Entrust" à fin 2030. 

4 octobre 2023

eDSN - Erreur : la table d'historique contrat doit être initialisée

Suite à une recopie de données entre bases, eDSN ne démarre plus correctement. Dans les logs on trouve le message : 
Erreur : la table d'historique contrat doit être initialisée si la gestion intégrée des blocs 41 est activée (com.soprahr.edsn.historiquecontrat.cfg)

Pour recharger cette table il faut lancer la commande dsn:init-historique-contrat ou dsn:init-historique-contrat-ext... mais celle ci sera introuvable !? Ceci tient au fait que eDSN est en erreur ...

Les étapes consistent en effet à :
  1. Inhiber la gestion du bloc 41 avec la table historiquecontrat
  2. Redémarrer eDSN
  3. Recharger la table
  4. Réactiver la gestion du bloc 41 avec la table historiquecontrat
  5. Redémarrer eDSN
 
Pour inhiber (respectivement activer) l'option, éditer le fichier edsn-home/conf/com.soprahr.edsn.historiquecontrat.cfg et passer le paramètre enable à false (respectivement true)

Après redémarrage lancer la commande dsn:init-historique-contrat (la version dsn:init-historique-contrat-ext permet de paralléliser) en précisant les périodes de début/fin (respecter la profondeur de rappel en paie)

Dans mon cas la fermeture du VPN a interrompu un premier lancement. La table est donc partiellement alimentée. Il faut donc recommencer et répondre à la question « confirmez-vous … » en avant plan ...

Mais le traitement étant long, il vaut mieux le lancer en arrière-plan pour ne pas subir de nouvelle interruption.

Pour cela on crée un script lanceur à déclencher avec nohup &.  Le "echo oui" est chargé de répondre à la demande de confirmation ... !


init-histo.ksh 
{ echo "dsn:init-historique-contrat-ext -t 5 202208 202308" ; echo oui; } | /hr9dev/edsn-9.1.3/bin/client


nohup ksh init-histo.ksh > init-histo.log 2>&1 &
[1] 25100788


cat init-histo.log 

Espace DSN (9.1.3) - Environnement de Production : non
Apache Karaf Runtime (4.3.9)
...
edsn> dsn:init-historique-contrat-ext -t 5 202208 202308

L'historique des contrats est deja alimente. Confirmez-vous sa reinitialisation (les donnees actuelles seront perdues) ? (oui/non)

oui
Traitement de la periode 202208
Traitement de la periode 202209
Traitement de la periode 202210
Traitement de la periode 202211
Traitement de la periode 202212
Traitement de la periode 202301
Traitement de la periode 202302
Traitement de la periode 202303
Traitement de la periode 202304
Traitement de la periode 202305
Traitement de la periode 202306

Traitement de la periode 202307
Traitement de la periode 202308
Initialisation terminee
edsn>


Puis mise à jour de com.soprahr.edsn.historiquecontrat.cfg (enable = true) et redémarrage de eDSN.

28 juillet 2023

OpenHR, HRaSpace, 4You eDSN evMedia ne démarrent pas & Java - ZipException: Invalid CEN header

Alban m'informe que suite à un upgrade Java les applicatifs HR (Web, OpenHR) comme Karaf (4You, eDSN 9.0, evMedia, simulateur M2M) peuvent se trouver bloqués au démarrage.

Exemple de message dans le Karaf.log :

SEVERE: Could not launch framework
java.lang.RuntimeException: Error installing bundle listed in startup.properties with url: mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.3.7 and sta
        at org.apache.karaf.main.Main.installAndStartBundles(Main.java:613)
        at org.apache.karaf.main.Main.launch(Main.java:308)
        at org.apache.karaf.main.Main.main(Main.java:183)
        at com.soprahr.evm.main.Main.main(Main.java:130)
Caused by: org.osgi.framework.BundleException: Unable to cache bundle: mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.3.7
        at org.apache.felix.framework.Felix.installBundle(Felix.java:3231)
        at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:147)
        at org.apache.karaf.main.Main.installAndStartBundles(Main.java:606)
        ... 3 more
Caused by: java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)
        at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1730)
        at java.base/java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1262)


Ceci est lié à un nouveau contrôle réalisé par les JVM des derniers updates Java 11 ou 17 de juillet 2023.

java -version

openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS, mixed mode, sharing)

ou

java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)


Pour inhiber ce contrôle il est nécessaire d'ajouter à la ligne de commande Java (en général via la variable JAVA_OPTS ou EXTRA_JAVA_OPTS dans le script setenv) le paramètre suivant :

-Djdk.util.zip.disableZip64ExtraFieldValidation=true



1 juin 2023

Référentiel CNIL / Données a caractère personnel dans les SIRH

 La CNIL a publié en 2019 un référentiel relatif aux traitements de données a caractère personnel mis en œuvre aux fins de gestion du personnel.

https://www.cnil.fr/sites/default/files/atoms/files/referentiel_grh_novembre_2019_0.pdf

Ce document recense notamment les délais de conservation des données (chapitre 7).

« Les données à caractère personnel ne doivent être conservées sous une forme permettant l’identification des personnes que le temps strictement nécessaire à la réalisation des finalités poursuivies »



Dans la pratique HR Access, les archives de paie, de rappel, et périodes DSN persistent dans la base active ... à juste titre puisqu'elles sont (au moins pour les 12 à 24 premiers mois) toujours interrogées.


Au delà de 5 à 6 ans, ces archives doivent normalement être purgées.

On trouve aussi des règles de sécurité (chapitre 10) à mettre en œuvre. 

« Soit l’organisme adopte les mesures suivantes, soit il justifie de leur équivalence ou du fait de ne pas avoir besoin ou pouvoir y recourir »

Par exemple :


On notera aussi :
  • Tester sur des données fictives ou anonymisées
  • Limiter les flux réseau au strict nécessaire
  • Installer sans délai les mises à jour critiques 
  • Limiter l’accès aux outils et interfaces d’administration aux seules personnes habilitées
  • Chiffrer les données avant leur envoi à un organisme extérieur
  • Prévoir et tester régulièrement la continuité d'activité
  • Détruire les archives obsolètes de manière sécurisée 

Concernant l'authentification des utilisateurs, un peu de lecture :



28 septembre 2022

Reinitialiser les mots de passe de eDSN en mode commande

L'utilisateur de eDSN peut modifier son mot de passe via l'interface ... s'il a réussi à se connecter !

S'il faut le réinitialiser, l'usage est de se connecter au serveur et de mettre à jour le fichier XML de configuration des comptes.

.../conf/ grep Digix users.xml

    <user id="Digix" firstName="Di" lastName="Gix" password="dummy">


Une commande a été mise à disposition depuis eDSN 8 pour le modifier depuis la console SSH. Comme pour l'IHM, il est nécessaire de connaitre l'ancien :

edsn>usermanager:change-password Digix

Ancien mot de passe :****

Nouveau mot de passe :*****

Confirmation du nouveau mot de passe :*****

Le mot de passe a été changé

edsn>

Le fichier a été mis à jour et le mot de passe est chiffré :

    <user id="Digix" firstName="Di" lastName="Gix" password="{CRYPT}PCNY5VyVhXY+FnUph1L7nGQ/Wc1pmofjFe4MCROoMS+BoTshxymSX9TkTXOc3ewH{CRYPT}">


NB : Si un addon d'authentification spécifique a été mis en place, la commande appellera la méthode de changement de mot de passe - pour peut qu'elle ait été développée ...

27 septembre 2022

Requêtes SQL sur les processus de workflow ACTIVITI de eDSN

eDSN fonctionne avec des processus de workflow. Ces derniers sont gérés par l'open source ACTIVITI.
Pour lister les processus en cours, il est donc possible de le faire par SQL dans les tables ACT_*

Quelques éléments donnés par la doc ACTIVITI :

The database names of Activiti all start with ACT_. The second part is a two-character identification of the use case of the table. This use case will also roughly match the service API.

  • ACT_RE_*: RE stands for repository. Tables with this prefix contain static information such as process definitions and process resources (images, rules, etc.). 
  • ACT_RU_*: RU stands for runtime. These are the runtime tables that contain the runtime data of process instances, user tasks, variables, jobs, etc. Activiti only stores the runtime data during process instance execution, and removes the records when a process instance ends. This keeps the runtime tables small and fast. 
  • ACT_ID_*: ID stands for identity. These tables contain identity information, such as users, groups, etc. (absentes sur eDSN) 
  • ACT_HI_*: HI stands for history. These are the tables that contain historic data, such as past process instances, variables, tasks, etc. (absentes sur eDSN) 
  • ACT_GE_*: general data, which is used in various use cases.

Par exemple, pour comptabiliser les processus et tâches en cours :

set markup csv on quote off
select regexp_substr(PROC_DEF_ID_,'^[^:]+:'),TASK_DEF_KEY_,count(*) from act_ru_task group by regexp_substr(PROC_DEF_ID_,'^[^:]+:'), TASK_DEF_KEY_ order by 1,2;
controlReport:,consultControlReport,47
flowFile:,consultFlowFile,4
manageSignalementEnvoi:,downloadSignalementEnvoi,9
monthlyDeclaration:,manageDeclarationCancel,1
monthlyDeclaration:,manageDeclarationError,2
monthlyDeclaration:,validateDeclaration,1477
signalementDeclaration:,manageSignalement,10
signalementDeclaration:,manageSignalementError,96
synchronizeSignalement:,consultSynchronizeSignalement,63
temporaryDeclaration2:,consultErroneousTemporaryDeclaration,22
temporaryDeclaration2:,consultTemporaryDeclaration,10378
uncertifiedCancelAndReplaceDeclaration:,manageUncertifiedCancelAndReplaceDeclarationError,2
uncertifiedDeclaration:,manageUncertifiedDeclarationError,3
uncertifiedSignalementDeclaration:,manageUncertifiedSignalementError,63
uncertifiedSignalementDeclaration:,validateUncertifiedSignalement,2

Noter qu'un nombre important de processus en cours va impacter négativement les performances batch et transactionnelles de eDSN. Pour purger les processus orphelins (faisant référence à une déclaration qui n'existe plus), l'application fournit une commande qu'il est intéressant d'automatiser :

admin:purge-orphans [-p SSAAMM]

Pour visualiser les messages d'erreur des processus :

select substr(J.PROCESS_INSTANCE_ID_,1,10) , regexp_substr(J.PROC_DEF_ID_,'^[^:]+:'), '-' , substr(J.EXCEPTION_MSG_,1,200)||'...'  from ACT_RU_JOB J where J.EXCEPTION_MSG_ is not NULL;
135011326  signalementDeclaration:                                          - Unknown property used in expression: ${setSignalementToBeSentStatusDelegate}...
136827668  controlReport:                                                   - Unknown property used in expression: ${deleteControlReportDelegate}...

 

Afficher en ligne toutes les propriétés (text_) du processus d'un workflow (ici 138338880) :

select proc_inst_id_, listagg(name_||'='||text_,' ') within group (order by name_) from act_ru_variable
 where proc_inst_id_ =
138338880 group by proc_inst_id_;

138338880
adminContentPath=synchronizeSignalementReports/admin/ARRET_TRAVAIL/138338880.csv beginDateRefresh= consideredEventCount=1355 done= format=csv generationDate= groups=nogroup koEventCount=17 lastInvolvedUser=admin maxDate=2022-10-24T03:03:09Z month=9 okEventCount=18 periodeDsn= processCreationDate=2022-09-24-05:02:19 processCreator=admin requestDate= signalementType=ARRET_TRAVAIL totalEventCount=1390 userContentPath=synchronizeSignalementReports/admin/ARRET_TRAVAIL/138338880.csv userId=admin year=2022

Ainsi, pour repérer un processus orphelin :

select proc_inst_id_ from act_ru_variable where name_ = 'declarationTechnicalId' and text_ not in (select id from dsndeclaration);

Ou avec ses propriétés :
select v.proc_inst_id_, listagg(v.name_||'='||v.text_,' ') within group (order by v.name_) from edsn.act_ru_variable v
join edsn.act_ru_variable w on v.proc_inst_id_ = w.proc_inst_id_ and w.name_ = 'declarationTechnicalId'
where w.text_ not in (select id from dsndeclaration) group by v.proc_inst_id_;

(pour les processus d'envoi, la liste des Id est stockée en hexadecimal dans une table ACT_GE_BYTEARRAY ... pas très lisible !)

Pour repérer les actions automatiques (réglées sur un timer ACTIVITI) et leur échéance :

select J.DUEDATE_ echeance, J.PROCESS_INSTANCE_ID_ pid, REGEXP_SUBSTR(J.PROC_DEF_ID_,'^[^:]+:') process_type, V.NAME_, V.TEXT_
from ACT_RU_JOB J
left outer join ACT_RU_VARIABLE V
on J.PROCESS_INSTANCE_ID_ = V.PROC_INST_ID_ and V.NAME_ in ('declarationTechnicalId','fluxId','contentPath','userContentPath')
where J.TYPE_='timer' and TEXT_ is not null
order by 1,3

ECHEANCE,PID,PROCESS_TYPE,NAME_,TEXT_
2027-09-26-00.00.00,61537997,signalementDeclaration:,declarationTechnicalId,de5e85b8-7b10-40cf-8316-a1f82d1f7651
2022-09-27-15.40.22,62638457,controlReport:,contentPath,controlReports/202209/john.doe@acme.com/messages-62638457.csv
2022-09-28-17.51.33,62593312,flowFile:,contentPath,flows/202208/flux_62593312_42206902100034-NET-1.dsn
2022-10-23-03.51.27,62640501,monthlyDeclaration:,declarationTechnicalId,05744771-8d5f-46bb-8f89-871418b8b794

8 juillet 2022

eDSN - Fermer l'accès à interface Web

eDSN permet de réserver l'interface à une liste d'utilisateurs privilégiés.
Pour cela passez par edsn-admin, onglet "Utilisateurs" et alimentez la liste blanche.

La liste est gérable aussi par fichier de configuration :

com.soprahr.edsn.admin.cfg

usersWhiteList = admin


Si ce mode de fonctionnement ne suffit pas, vous pouvez aussi fermer les webapps en mode commande (ceci vaut aussi pour evMedia. Attention, cette fois le navigateur de l'utilisateur affichera une erreur d'accès) :

evmedia>web:list
ID | State       | Web-State   | Level | Web-ContextPath | Name
---+-------------+-------------+-------+-----------------+-------------------------------------
47 | Active      | Deployed    | 80    | /evm-admin      | com.soprahr.evm.admin.webapp (3.1.0)
69 | Active      | Deployed    | 80    | /evm-ij         | com.soprahr.evm.sat.webapp (3.1.0) 

evmedia>web:stop 47
evmedia>web:list
ID | State       | Web-State   | Level | Web-ContextPath | Name
---+-------------+-------------+-------+-----------------+-------------------------------------
47 | Active      | Undeployed  | 80    | /evm-admin      | com.soprahr.evm.admin.webapp (3.1.0)
69 | Active      | Deployed    | 80    | /evm-ij         | com.soprahr.evm.sat.webapp (3.1.0)
evmedia>web:start 47





24 novembre 2021

eDSN, evMedia - "Bad history file syntax!" ou "MalformedInputException: Input length = 1"

Un upgrade eDSN ou evMedia peut entrainer une mise à jour de la version du Karaf embarqué. A cette occasion le fichier contenant l'historique des commandes peut avoir changé de format et l'ancien fichier être considéré comme illisible. Dans le pire des cas cela provoque un blocage de l'accès aux sessions SSH ...


En cas de présence de ce message le edsn.log, la console SSH est accessible

2021-11-24T09:56:28,514 | INFO  | 4)-nio2-thread-1 | ServerSessionImpl                | Session edsn@/127.0.0.1:46726 authenticated
2021-11-24T09:56:28,750 | WARN  | onsole user edsn | jline                            | Failed to load history
java.lang.IllegalArgumentException: Bad history file syntax! The history file `/home/adm/hr9re1/.karaf/karaf.history` may be an older history: please remove it or use a different history file.
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:185) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:169) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.lambda$load$0(DefaultHistory.java:86) ~[!/:?]


Il suffit de se connecter à la console et de réinitialiser l'historique par la commande ssh suivante :

edsn> shell:history --clear


Le cas d'erreur suivant est plus gênant puisque le client SSH est alors inaccessible :

Au lancement du client eDSN par exemple :

edsn>

Error executing command: java.nio.charset.MalformedInputException: Input length = 1

 

Dans edsn.log

2021-11-15T11:21:26,946 | ERROR | onsole user edsn | ShellUtil                        | Exception caught while executing command

java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1

        at java.io.BufferedReader$1.hasNext(BufferedReader.java:577) ~[?:?]

        at java.util.Iterator.forEachRemaining(Iterator.java:132) ~[?:?]

La solution est alors de réinitialiser l'historique des commandes Karaf en détruisant le fichier. 

Dans notre cas : 

rm -f ~/.karaf/karaf.history

30 juin 2020

eDSN : Unable to parse deployed file .../conf/users.xml

Ce matin eDSN n'est pas accessible
La liste des bundles montre que l'application est incidentée

edsn>bundle:list | grep -v Active
START LEVEL 100 , List Threshold: 50
 ID | State   | Lvl | Version            | Name
----+---------+-----+--------------------+--------------------------------------
 32 | Failure |  80 | 6.0.11             | com.soprahr.edsn.admin
 42 | Failure |  80 | 6.0.11             | com.soprahr.edsn.backlog.rest
 46 | Failure |  80 | 6.0.11             | com.soprahr.edsn.bizcontrol.management.impl
 47 | Failure |  80 | 2.2.3              | com.soprahr.edsn.bizcontrol.standard.impl
 48 | Failure |  80 | 6.0.11             | com.soprahr.edsn.command
 50 | Waiting |  80 | 6.0.11             | com.soprahr.edsn.common.command
 53 | Failure |  80 | 6.0.11             | com.soprahr.edsn.data.control.server
 54 | Failure |  80 | 6.0.11             | com.soprahr.edsn.data.rest
 62 | Failure |  80 | 6.0.11             | com.soprahr.edsn.extractor.impl
 64 | Waiting |  80 | 6.0.11             | com.soprahr.edsn.historiquecontrat.impl
 68 | Failure |  80 | 6.0.11             | com.soprahr.edsn.m2m.rest
 74 | Failure |  80 | 6.0.11             | com.soprahr.edsn.notification.impl
 76 | Failure |  80 | 6.0.11             | com.soprahr.edsn.paiement.impl
 79 | Failure |  80 | 6.0.11             | com.soprahr.edsn.persistance.jpa
 82 | Failure |  80 | 6.0.11             | com.soprahr.edsn.producer.impl
 84 | Waiting |  80 | 6.0.11             | com.soprahr.edsn.report.controlimpl
 85 | Waiting |  80 | 6.0.11             | com.soprahr.edsn.report.forcageimpl
 93 | Failure |  80 | 6.0.11             | com.soprahr.edsn.usermanager.proxy
 94 | Failure |  80 | 6.0.11             | com.soprahr.edsn.usermanager.rest
 95 | Failure |  80 | 6.0.11             | com.soprahr.edsn.workflow.activiti



Dans les logs, le message est explicite :

2020-06-30T08:56:23,480 | ERROR | N/edsn-home/conf | BpmnDeploymentListener           | Unable to parse deployed file /hraprd/EDSN/edsn-home/conf/users.xml
org.xml.sax.SAXParseException: La balise de fin pour le type d'élément "user" doit se terminer par un délimiteur '>'

Un fichier d'utilisateurs incorrect a donc été mis en ligne. Correction, arrêt, démarrage ...

Avant de déployer un nouveau fichier, utilisez un outils de contrôle XML (ex: le plugin XML Parsing de notepad++ ci dessous), testez le sur un environnement de recette ...




Autre point : ce fichier doit être en UTF8. C'est à dire qu'il ne faut donc pas y saisir les caractères accentués ANSI. Si vous avez besoin de ces caractères spéciaux, vous pouvez avec Notepad++ utiliser le menu "Encodage" / "Encodez en UTF8". Ou sous Unix la commande de conversion (source users.xml.ansi, cible users.xml) :

iconv -f ISO-8859-15 -t UTF-8 users.xml.ansi > users.xml

En cas de caractères non UTF8 vous aurez le message :

2020-06-30T14:45:25,771 | WARN  | N/edsn-home/conf | fileinstall                      | Failed to update artifact /hraprd/EDSN/edsn-home/conf/users.xml
javax.xml.bind.UnmarshalException: null
...
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Octet 2 de la séquence UTF-8 à 3 octets non valide.
...