10 octobre 2025

Utiliser l'API de l'INSEE pour tester un SIRET

L'INSEE met à disposition une API pour consulter les propriétés des SIRET enregistrés. Il est nécessaire de créer un compte pour invoquer ses services en HTTP. Suivez leur guide : Insee_API_publique_modalites_connexion.pdf

Vous obtenez une clé (en bas à droite) que vous allez utiliser dans vos transactions.


Vous pouvez tester sur : https://www.data.gouv.fr/dataservices/api-sirene-open-data/ 

A noter : l'API indique une limitation à 30 transactions par minute pour les usages open data

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 !

28 juillet 2025

Personnaliser le Makefile pour conserver les sources des programmes Cobol

Lors des générations, HR Access rédige puis compile les programmes exécutables. Puis les sources sont détruits. Il peut être intéressant de conserver ces sources pour :

  • Relecture de code
  • Recompilation après adaptations manuelles
  • Recompilation après migration technique

Pour cela, on pourra par exemple :

  • Créer un répertoire $SIGACS/prod/cbl
  • Adapter le fichier $SIGACS/adm/cfg/Makefile pour y ajouter une copie et compression du source


Par exemple sur ce chapitre (à reproduire sur les autre en adaptant les suffixes) :

#-----------------------------------------------------------------
#       Build the dynamically loadable module from a .pco
#       Pro*Cobol program.
#

.pco.gnt: $(*).pco
        @echo "--- "
        @echo "---    $(*).pco  -->  $(*).gnt "
        @echo "--- "
        @echo "$(PROCOB) $(PROFLAGS) iname=$(*).pco oname=$(*).cbl"

        @cp $(*).pco ${SIGACS}/prod/cbl; gzip -f $(*).pco

        @cd `dirname $(*)`; $(PROCOB) $(PROFLAGS) iname=$(*).pco oname=$(*).cbl
        @$(COB_VAR) cd `dirname $(*)` ; $(COB) -vP -u $(COBFLAGS) $(*).cbl
        @chmod 775 $(*).gnt

A noter : dans le Makefile les commandes doivent être précédées de tabulations (et non d'espaces)

12 juillet 2025

Collecter les données et produire un rapport AWR Oracle

Avec le pack "Diagnostic" Oracle permet d'obtenir un rapport d'activité grâce à AWR (Automatic Workload Repository). 

Un premier paramétrage consiste à définir un intervalle et une rétention (dans cet exemple : de 20mn et 30j - soit 43200 minutes). Pour cela des droits administrateur sont nécessaires :

sqlplus / as sysdba
SQL> begin
  2  dbms_workload_repository.modify_snapshot_settings(RETENTION=>43200, INTERVAL=>20);
3  end;
4  /
PL/SQL procedure successfully completed.

SQL> select *  from dba_hist_wr_control;

DBID,SNAP_INTERVAL,RETENTION,TOPNSQL,CON_ID,SRC_DBID,SRC_DBNAME
1260426948,+00000 00:20:00.0,+00030 00:00:00.0,DEFAULT,0,1260426948,hr9


Pour que ce rapport AWR ne soit pas vide (c'est à dire plein de commentaire "No data exists for this section of the report") il est aussi nécessaire d'activer le pack et les statistiques :


SQL> ALTER SYSTEM set CONTROL_MANAGEMENT_PACK_ACCESS = 'DIAGNOSTIC+TUNING';

1 juillet 2025

Quand Vim ou Karaf perturbent les copier/coller avec des 00~ ou des \e[200~

 Dans certains cas, accéder à Vim ou à la console cliente SSH de Karaf vient perturber les copier coller (clic droit sous Putty).

Par exemple :


Logging in as karaf
   _____ _                 __      __                    __  ______   __  ___
  / ___/(_)___ ___  __  __/ /___ _/ /____  __  _______  /  |/  /__ \ /  |/  /
  \__ \/ / __ `__ \/ / / / / __ `/ __/ _ \/ / / / ___/ / /|_/ /__/ // /|_/ /
 ___/ / / / / / / / /_/ / / /_/ / /_/ __ / /_/ / /    / /  / // __// /  / /
/____/_/_/ /_/ /_/\__,_/_/\__,_/\__/\___/\__,_/_/    /_/  /_//____/_/  /_/

Simulateur M2M (5.6.0)
Apache Karaf Runtime (4.4.6)
simulateur-m2m> shutdown -f
hr9dev@lnxsrv001:/hr9dsn> ls -l | grep sim

lrwxrwxrwx 1 hr9dev users 21 2024-10-21 11:35 simulateur-m2m -> simulateur-m2m-5.6.0/
drwxr-xr-x 9 hr9dev users 27 2025-07-01 06:32 simulateur-m2m-5.6.0
drwxr-xr-x 8 hr9dev users 79 2025-05-20 14:30 simulateur-m2m-5.7.0

Copier coller Putty du nom de répertoire (sélection puis clic droit) ... Boum :

hr9dev@lnxsrv001:/hr9dsn> rm 00~simulateur-m2m01~

En fin de ce post on vous explique le pourquoi du comment (c'est lié au mode de collage entre crochets, ou "bracketed paste mode" ... "When bracketed paste mode is set, pasted text is bracketed with control sequences so that the program can differentiate pasted text from typed-in text") ...

Pour supprimer ce fonctionnement, dans votre session, tapez (l'avant dernier caractère est un L minuscule) :

printf "\e[?2004l"

(sous Vim exécutez ":set paste" )

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. 

6 juin 2025

OPHRS3003 I/O error when pre-processing message

OpenHR semble démarré, 

Mais un ce message d'erreur apparaît quand on lance le serveur de Query ou HRaSpace :

2025-06-06T08:34:20,897 INFO  [        ][               ][main] - OPHRS1001 Starting OpenHR server - Release 7.40.06003.00000 
2025-06-06T08:34:20,901 INFO  [        ][               ][main] - OPHRS1002 Loading configuration from file </hr9dev/openhr/conf/dispatcher.properties>
2025-06-06T08:34:20,914 INFO  [        ][               ][main] - HR component versions:
   hr-openhr-api=2.0.2
   hrapplication=7.40.06003.00000
 
2025-06-06T08:34:20,914 INFO  [        ][               ][main] - System properties:
   file.encoding=ISO-8859-1
   file.separator=/
   hr.bootjars.dirs=/hr9dev/openhr/lib/boot
   hr.jars.dirs=/hr9dev/openhr/lib
...
2025-06-06T08:20:13,809 INFO  [        ][               ][main] - OPHRS1011 Server's configuration is 
... 
    hr_design.executable=RTSDGN TYBXBHR
...
2025-06-06T08:34:20,918 INFO  [        ][               ][main] - OPHRS1030 HR Design Server address has been automatically set to <127.0.0.1>.
2025-06-06T08:34:20,919 INFO  [        ][               ][main] - OPHRS1080 HR Design server's encoding is <ISO8859-15>
2025-06-06T08:34:20,926 INFO  [        ][               ][main] - OPHRS1051 Registered service <RemoteService>
2025-06-06T08:34:20,927 INFO  [        ][               ][main] - OPHRS1051 Registered service <LocalService>
2025-06-06T08:34:20,927 INFO  [        ][               ][main] - OPHRS1050 MessageDispatcher successfully initialized
2025-06-06T08:34:20,944 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1070 Service <Default>: pool size set to <5> instances
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1071 Service <Default>: idle time-out set to <200> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1072 Service <Default>: working time-out set to <2000> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1073 Service <Default>: maximum retry count set to <1>
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1074 Service <Default>: delay before retry set to <1> second(s)
2025-06-06T08:34:20,945 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1075 Service <Default>: message's maximal wait time (in queue) is <10> second(s)
2025-06-06T08:34:20,946 INFO  [00000001][xxx.xxx.xxx.xxx][MessageProcessor-1] - OPHRS1077 Queued a new message for service <Default>
2025-06-06T08:34:45,281 ERROR [00000003][172.18.236.29  ][MessageProcessor-2] - OPHRS3003 I/O error when pre-processing message (Client: <172.18.236.29/43318>)
com.hraccess.commons.io.InvalidBlockSizeException: Found an invalid input block size of 808464432 bytes
        at com.hraccess.commons.io.CompressedBlockInputStream.readAndDecompress(CompressedBlockInputStream.java:92) ~[hr-kernel-3.0.0.jar:?]
        at com.hraccess.commons.io.CompressedBlockInputStream.read(CompressedBlockInputStream.java:185) ~[hr-kernel-3.0.0.jar:?]
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) ~[?:?]
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) ~[?:?]
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) ~[?:?]
...
 


Un premier constat est la présence d'une erreur de type I/O (accès en lecture/écriture)

On constate aussi que l'erreur se produit 15 secondes après la fin du "démarrage" de OpenHR (en fait, le démarrage de HRD Query : ce dernier invoque OpenHR pour obtenir des informations qui lui sont nécessaires).


Si l'on compare les logs OpenHR avec celles d'un autre environnement, on constate que le démarrage OpenHR de l'environnement incidenté est incomplet. Il devrait se poursuivre par un :

OPHRS1004 HR Design server version is <7.000>
Loading XML bean definitions from file [/logi/hraccess90/hr9de5/openhr/conf/services.xml]
Loading XML bean definitions from file [/logi/hraccess90/hr9de5/openhr/conf/security.xml]
OPHRS1109 Servers context initialized
OPHRS1013 Merged configuration is
... 

 

Et surtout par un message :

OPHRS1999 OpenHR server is ready for business (Release <7.000>)

En l'occurrence, OpenHR devrait démarrer l'exécutable RTSDGN

Les trois origines possible de l'erreur que j'ai rencontrées sont :

  • Mauvais paramétrage : dans le fichier openhr/conf/dispatcher.properties le paramètre hr_design.executable contenait les mots clefs "RTSDGN $HRPREFBHR" issus du livrable de l'éditeur. Il a suffit de corriger la configuration pour indiquer "RTSDGN TYBXBHR".
  • Mauvaise recomplation : dans $SIGACS/bin l'exécutable RTSDGN provenait de la copie depuis une machine dont les binaires n'étaient pas compatible. Il a fallu recompiler les programmes C, regénérer les programmes Cobol, relinker le RTSDGN.
  • Absence de licence : la licence Cobol nécessaire à l'exécution des programmes a été perdue ou est obsolète. Exécutez une chaine batch pour le constater : un message explicite se retrouvera dans les logs. Nous avions une licence de test dont la date de fin était dépassée. Il a fallu en installer une nouvelle.

(On peut aussi imaginer un problème d'accès lié aux droits Unix)

28 mars 2025

Execution error : error code: 162, Arithmetic overflow or underflow

A l'occasion d'une migration Linux, le projet a recompilé l'application avec une nouvelle version de Microfocus Cobol et de nouvelles options.

A l'occasion de tests batch, le programme de calcul de paie s'interrompt parfois avec l'erreur :

Execution error : file 'JFCALDBI'
error code: 162, pc=0, call=1, seg=0
162     Arithmetic overflow or underflow

Il se trouve qu'un traitement de paie effectue une division par zéro.

En effet les options utilisées avec le nouveau compilateur Visual Cobol sont moins permissives que celles de l'ancien Server Express. 

  • NOCHECK
    • (NO)CHECKDIV qui contrôle  les divisions par zéro
    • (NO)CHECKNUM qui contrôle la numéricité des rubriques
  • BOUND contrôle les débordements de tableau occursés.

L'option NOCHECK désactive les options CHECKNUM et CHECKDIV. 
Avec NOCHECKDIV une division par zéro provoque une erreur bloquante du programme.

Si cela se produit en développement ou recette, il est possible d'activer des traces, repérer le traitement fautif et lui ajouter un contrôle pour ne pas provoquer l'erreur. Problème : si l'arrêt brutal du programme se produit en production, il met en danger l'exploitation des traitements batch.  

Pour débloquer la situation et laisser passer les divisions par zéro et les débordements de tableaux, retirer -C NOCHECK et -C BOUND puis placer les options suivantes dans le fichier adm/cfg/config :

COBFLAGS=-C ASSIGN=EXTERNAL -C SEQUENTIAL=LINE -C NOANIM -C NOCSI -C CHECKDIV -C NOCHECKNUM -C NOSERIAL -C IBMCOMP -C SIGN=EBCDIC -C WRITELOCK -C NOTRUNC -C NOBOUND -C PERFORM-TYPE=MF -C COPYLIST -C NORESEQ -C TRACE -U

Recompiler les programmes.

On supprime NOCHECK que l'on décompose en CHECKDIV et NOCHECKNUM.
On remplace BOUND par NOBOUND.

Attention toutefois : si le programme semble se dérouler normalement, une division par zéro donne "an undefined result" ... Quand au débordement de tableau, il écrase les variables définies au delà.

27 mars 2025

Migration, évolution de mksh, comportement de la commandes de test

Les commandes de test avec les opérateurs AND et OR suivants [ condition1 -a condition2 ] et  [ condition1 -o condition2 ] peuvent ne pas être interprétées de la même manière en fonction de la version de mksh.

Avec l'ancienne machine :

hr9@srv001:/home/adm/hr9> echo "$KSH_VERSION"
@(#)MIRBSD KSH R39 2009/08/01
hr9@srv001:/home/adm/hr9> VAR1=""
hr9@srv001:/home/adm/hr9> VAR2=""
hr9@srv001:/home/adm/hr9> [ ! "${VAR1}" -a "${VAR2}" ] && echo "Erreur"
<Pas d'erreur>

Avec la nouvelle machine

hr9@srv002:/home/adm/hr9> echo "$KSH_VERSION"
@(#)MIRBSD KSH R56 2018/01/14
hr9@srv002:/home/adm/hr9> VAR1=""
hr9@srv002:/home/adm/hr9> VAR2=""
hr9@srv002:/home/adm/hr9> [ ! "${VAR1}" -a "${VAR2}" ] && echo "Erreur"
Erreur

Consigne :
  • Ne pas utiliser dans les tests les opérateurs "-a" (AND) et "-o" (OR)

Préférer les syntaxes : 
  • pour AND : [ condition1 ] && [ condition2 ]
  • pour OR : [ condition1 ] || [ condition2 ]
ou
  • pour AND : [[ condition1 && condition2 ]]
  • pour OR : [[ condition1 || condition2 ]]
Et les regroupements :
[[ (condition1 && condition2) || condition3 ]]

Attention aux autres subtilités de l'opérateur [[ ... ]] (opérateurs numériques < == >, globalisation ... )

7 mars 2025

Tester l'ouverture des flux avec Test-NetConnection de PowerShell

Ci dessous un script PowerShell pour tester les connexions depuis un poste client Windows vers un serveur HR Access.

Dans cet exemple le serveur HR est à l'adresse 192.168.126.1 et la base de données sur 192.168.126.2
Les ports du LISTENER, du HTTP, AP0, SSH sont 1521, 1100, 1101 et 22
L'applicatif doit être démarré et à l'écoute.

Avoir exécuté la commande ipconfig /flushdns dans une fenêtre de commande DOS
Exécuter, dans une fenêtre PowerShell, le script ci-dessous :

$ipList = @(
@{IP="192.168.126.2"; Port=1521},
@{IP="192.168.126.1"; Port=1100},
@{IP="192.168.126.1"; Port=1101},
@{IP="192.168.126.1"; Port=22 }
)

$logFile = "test-netconnection.log"
"" | Out-File -FilePath $logFile

Write-Host "Les résultats sont enregistrés dans $logFile" -ForegroundColor Cyan

foreach ($entry in $ipList) {
$ip = $entry.IP
$port = $entry.Port
$result = Test-NetConnection -ComputerName $ip -Port $port

if ($result.TcpTestSucceeded) {
$message = "${ip}:${port} est accessible"
Write-Host "${ip}:${port} est accessible" -ForegroundColor Green
} else {
$message = "${ip}:${port} est injoignable"
Write-Host "${ip}:${port} est injoignable" -ForegroundColor Red
}

$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timestamp - $message" | Out-File -FilePath $logFile -Append
}

Résultat (si les flux sont ouverts et les applications à l'écoute) :

192.168.126.2:1521 est accessible
192.168.126.1:1100 est accessible
192.168.126.1:1101 est accessible
192.168.126.1:22 est accessible

6 mars 2025

Wallet Oracle et SQLPlus

Créer un wallet Oracle permet d'y stocker les mots de passe de coinnexion, et ainsi d'éviter de retrouver des sqlplus HR/PASSWORD dans les scripts d'exploitation

Exemple (sur une machine disposant du client Oracle)

La base est HR9DEV hébergée par le serveur HOST_HR9DEV, les comptes HR et JETSPEED. Nous allons créer des alias HR9DEV_HR et HR9DEV_JETSPEED.

Les commandes permettent d'indiquer le mot de passe en ligne. Pour éviter qu'il ne soit accessible dans l'historique de commande, préférer répondre à la question  qui sera posée.

mkdir $HOME/.wallet

chmod 700 $HOME/.wallet

cd $HOME/.wallet

mkstore -wrl . -create

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Enter password: *******
Enter password again: *******

mkstore -wrl . -createCredential HR9DEV_JETSPEED JETSPEED

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Your secret/Password is missing in the command line
Enter your secret/Password: ***
Re-enter your secret/Password: ***
Enter wallet password: *******

11 octobre 2023

Corriger les messages "QRKRN2023 Error while parsing data" ou les filtrer avec log4j StringMatchFilter

Vous avez peut être rencontré dans les logs de HRD Query ces messages :
WARN - QRKRN2023 Error while parsing date 58,50
ou
QRKRN3024 Element /RPT/GRP[@level='...']/.../DTL/FLD[@id='...'] has no matching element in the datamodel

Noter qu’il ne faut pas lire « QRKRN2023 Error while parsing date » mais « Error while parsing data » (faute de typo)

Ces dizaines de milliers de messages encombrent parfois les fichiers de logs et provoquent une surcharge d’écriture sur disque. D’autre part ces fichiers log étant à rotation (5 fichiers de 5 mo en standard) - leur remplissage rapide peut faire perdre des messages d’erreur importants plus anciens.

Pour supprimer ces messages il faut corriger les traitements d'édition concernés

En l’occurrence un champ numérique
  • Ne doit pas contenir d’espaces en début
  • Doit avoir un séparateur de décimales sous la forme d’un « . » et non d’une « , »
Dans l’attente d’une correction des éditions HR - et à titre de « solution temporaire », il peut être utile de mettre en place un filtrage des messages par log4j

Dans $SIGACS/query/conf/query_log.properties ajouter les lignes en rouge suivantes, puis redémarrer le serveur de Query batch :

# ========================
# logs configuration file
# ========================

#
# OFF < FATAL < ERROR < WARN < INFO < DEBUG < ALL.
#

log4j.rootLogger = info, consoleappender, fileappender
log4j.logger.com.hraccess = INFO, consoleappender, fileappender
log4j.additivity.com.hraccess = false

# =================================================================================

# By default, the activation of the debug mode causes :
# - The generation of EditingFileConnectorXXXXX.zip, BatchEditingConnectorXXXXX.zip
#   files in the logs directory.
# - The persistence of LYTXXXXX.tmp directories in the work directory
#
# To avoid this behaviour while activating the debug mode uncomment either of
# the following lines.
# =================================================================================

 

#log4j.logger.com.hraccess.log.hrjs.workfiles=off
#log4j.logger.com.hraccess.log.qrkrn.workfiles=off

 

# CONSOLE
log4j.appender.consoleappender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleappender.target=System.out
log4j.appender.consoleappender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p %c{1} - %m%n

 

# MAIN LOG FILE
log4j.appender.fileappender=org.apache.log4j.RollingFileAppender
log4j.appender.fileappender.File=${hrjmods.log.dir}/qrsrv.log
log4j.appender.fileappender.MaxFileSize=5MB
log4j.appender.fileappender.MaxBackupIndex=5
log4j.appender.fileappender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p - %m%n

# Filtres pour laisser passer QRKRN2023, QRKRN3024 puis autoriser DEBUG INFO WARN ERROR FATAL
log4j.appender.fileappender.filter.01=org.apache.log4j.varia.StringMatchFilter
log4j.appender.fileappender.filter.01.StringToMatch=QRKRN2023
log4j.appender.fileappender.filter.01.AcceptOnMatch=false
log4j.appender.fileappender.filter.02=org.apache.log4j.varia.StringMatchFilter
log4j.appender.fileappender.filter.02.StringToMatch=QRKRN3024
log4j.appender.fileappender.filter.02.AcceptOnMatch=false
log4j.appender.fileappender.filter.11=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.11.levelToMatch=DEBUG
log4j.appender.fileappender.filter.11.AcceptOnMatch=true
log4j.appender.fileappender.filter.12=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.12.levelToMatch=INFO
log4j.appender.fileappender.filter.12.AcceptOnMatch=true
log4j.appender.fileappender.filter.13=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.13.levelToMatch=WARN
log4j.appender.fileappender.filter.13.AcceptOnMatch=true
log4j.appender.fileappender.filter.14=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.14.levelToMatch=ERROR
log4j.appender.fileappender.filter.14.AcceptOnMatch=true
log4j.appender.fileappender.filter.15=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.15.levelToMatch=FATAL
log4j.appender.fileappender.filter.15.AcceptOnMatch=true
# Filtre pour bloquer tous les messages qui ne sont pas déjà  autorisés
log4j.appender.fileappender.filter.20=org.apache.log4j.varia.DenyAllFilter

 

# THREAD APPENDER
log4j.appender.threadappender=com.hraccess.logging.ThreadFileAppender
log4j.appender.threadappender.Directory=${hrjmods.log.dir}
log4j.appender.threadappender.layout=org.apache.log4j.PatternLayout
log4j.appender.threadappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p - %m%n


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.

25 septembre 2023

Déclencher Design Center en ligne de commande

 La ligne de commande de Design Center permet de paramétrer un raccourci Windows

  • /I Répertoire du SIGAGIP.INI (description des environnements)
  • /H Répertoire du HRACCESS.INI (paramètres Design Center)

Encadrer les chemins avec des doubles quotes, coller le chemin à la lettre d'option 

Exemple de raccourci :

"C:\Program Files (x86)\Sopra HR Software\Design Center\hrstudio.exe" /H"%USERPROFILE%\Documents\Program Data\HR Access Solutions"

Il est possible de demander une connexion automatique :

  • /U Utilisateur
  • /P Mot de passe
  • /E Code associé à l'environnement (chapitres du SIGAGIP.INI)

"C:\Program Files (x86)\Sopra HR Software\Design Center\hrstudio.exe" /UDIGIX /PDIGIXPWD /EPPCLIUNO

La ligne de commande permet aussi de déclencher une macro contenant des commandes enregistrées avec Design Center ou créées de toute pièce (plus de détails dans le compagnon, ou directement via le fichier Compagnon/F_MACROS.htm dans le répertoire de Design Center)

  • /M Code macro
Par exemple pour lancer une publication :

"C:\Program Files (x86)\Sopra HR Software\Design Center\hrstudio.exe" ... /MPUB_TA0FR

Des comptes rendus sont créés dans le répertoire des macros (le chemin modifiable via le menu Outils/Options, onglet Avancé) :

  • <NomduScript>.trc1 : contenu de la barre d'état

  • <NomduScript>.trc2 : compte rendu d'exécution du script


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