03 ‐ Données R.H. exploitées - EsupPortail/esup-emc2 GitHub Wiki
Principe des synchronisations des données du SIRH
Les données du SIRH des établissements sont présentées à EMC2 via des vues. Ainsi, les données utilisées par EMC2 sont maîtrisables par l'établissement et non directement par l'application EMC2.
La bibliothèque unicaen/synchro se chargera de lire les données et de mettre à jour le modèle de données interne à EMC2. Pour cela, il suffira de programmer une tâche (via cron ou un service/timer) qui exécutera régulièrement cet appel (N.B. à l'Université de Caen Normandie cet appel s'exécute tous les jours).
La définition des données exploitées et du nom des vues est disponible dans le fichier config/autoload/synchro.local.php.
Dans ce fichier, il est aussi possible d'apporter des modifications aux noms des tables et colonnes (celui-ci est relativement explicite).
Dans la suite les colonnes marquées par O sont des colonnes devant recevoir une valeur et N pouvant être laissées vide. Pour la gestion des dates, afin d'éviter les erreurs liées au système local il est recommandé de les fournir au format textuel avec la notation "YYYY-MM-DD".
Dans la suite le terme témoin désigne des colonnes varchar(1) recevant la valeur 'O' pour oui et 'N' pour non.
Les vues
Les données liés aux corps, grades, correspondances, ...
CORRESPONDANCE_TYPE
Cette vue liste les différents types de correspondance présents dans vos établissements comme par exemple :
- BAP : Branche d'activités professionnelles
- ...
Nom de la vue : V_EMC2_CORRESPONDANCE_TYPE
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_CORRESPONDANCE) - O
codeidentifiant unique alphanumérique - O
libelle_courtreprésentation courte du type de correspondance (par exemple "B.A.P.") - O
libelle_longreprésentation longue du type de correspondance (par exemple "Branche d'activités professionnelles") - N
descriptionbrève description - O
date_debutdate de mise en service du type de correspondance dans l'établissement - N
date_findate de retrait du type de correspondance dans l'établissement
CORRESPONDANCE
Cette vue liste les correspondances présentes dans vos établissements comme par exemple :
- A,BAP_A_SVTE,"SCIENCES VIVANT, TERRE ET ENVIRONNEMENT"
- B,BAP_B_SCSCM,SCIENCES CHIMIQUES ET DES MATÉRIAUX
- ...
Nom de la vue : V_EMC2_CORRESPONDANCE
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
codeidentifiant unique alphanumérique - O
lib_courtreprésentation courte de la correspondance (par exemple "BAP_A_SVTE") - O
lib_longreprésentation longue de la correspondance (par exemple "SCIENCES VIVANT, TERRE ET ENVIRONNEMENT") - O
type_idreprésente un type de correspondance de la vue V_EMC2_CORRESPONDANCE_TYPE - O
date_debutdate de mise en service de la correspondance dans l'établissement - N
date_findate de retrait de la correspondance dans l'établissement
CORPS
Cette vue liste les corps présents dans vos établissements comme par exemple :
- IGE,INGENIEUR D'ETUDES (RECH ET FORM),833,A
- INF ENES,INFIRMIERS ENES CATEGORIE A,986,A
- BIBAS,BIB. ASSISTANT SPE (NES),8HH,B
- ...
Nom de la vue : V_EMC2_CORPS
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
codeidentifiant unique alphanumérique - O
lib_courtreprésentation courte du corps (par exemple "IGE") - O
lib_longreprésentation longue du corps (par exemple "INGENIEUR D'ETUDES (RECH ET FORM)") - O
categoriereprésente la catégorie associée (par exemple A) - O
date_debutdate de mise en service du corps dans l'établissement - N
date_findate de retrait du corps dans l'établissement
GRADE
Cette vue liste les grades présents dans vos établissements comme par exemple :
- IGE CN,INGENIEUR D'ETUDES CLASSE NORMALE,8331
- IGE HC,INGENIEUR D'ETUDES HORS CLASSE,8332
- ...
Nom de la vue : V_EMC2_GRADE
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
codeidentifiant unique alphanumérique - O
lib_courtreprésentation courte du grade (par exemple "IGE CN") - O
lib_longreprésentation longue du grade (par exemple "INGENIEUR D'ETUDES CLASSE NORMALE") - O
date_debutdate de mise en service du grade dans l'établissement - N
date_findate de retrait du grade dans l'établissement
EMPLOI_TYPE
Cette vue liste les emploi-types présents dans vos établissements comme par exemple :
- REFE2C23,E_E2C23,"Administrateur systèmes informatiques, réseaux et télécommun"
- REFE2C45,E2C45,Ingénieur-e en ingénierie logicielle
- ...
Nom de la vue : V_EMC2_EMPLOITYPE 'id' => 'id',
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
codeidentifiant unique alphanumérique - O
lib_courtreprésentation courte de l'emploi type (par exemple "E2C45") - O
lib_longreprésentation longue de l'emploi type (par exemple "Ingénieur-e en ingénierie logicielle") - O
date_debutdate de mise en service de l'emploi type dans l'établissement - N
date_findate de retrait de l'emploi type dans l'établissement
Les données liées aux structures
STRUCTURE_TYPE
Cette vue référence les différents de types de structures des établissements. Par exemple :
- ETAB, Établissement
- COMP, Composante
- SREC, Structure de recherche
- ...
Nom de la vue : V_EMC2_STRUCTURE_TYPE
- O
ididentifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_STRUCTURE) - O
codeidentifiant unique alphanumérique - O
libellelibellé du type de la structure (par exemple "Structure de recherche") - N
descriptiondescription lié au type de la structure
STRUCTURE
Cette vue référence les différentes structures des établissements.
Dans les données suivantes le terme parent désigne la structure parente de la structure courante (cette donnée est exploitée pour le calcul de l’arborescence des structures).
Dans les données suivantes le terme niv2 désigne les structures de niveau 2 (en dessous de la structure principale) rattachées à la structure courante (et sert à l'accélération des calculs de chaines hiérarchique).
N.B.: Si ne fait pas sens (comme dans le cas de la structure chapeau) alors laisser vide.
Nom de la vue : V_EMC2_STRUCTURE
- O
ididentifiant unique alphanumérique (est utilisé comme clef étrangère par les vues V_EMC2_AGENT_AFFECTATION, V_EMC2_STRUCTURE_RESPONSABLE, et V_EMC2_STRUCTURE_GESTIONNAIRE, ...) - N
codeidentifiant unique alphanumérique - N
sigleidentifiant unique alphanumérique - O
libelle_courtlibellé court de la structure (par exemple "DSI") - O
libelle_longlibellé long de la structure (par exemple "Direction du système d'information") - O
type_idtype de la structure voir la vue V_EMC2_STRUCTURE_TYPE - N
email_generiqueadresse électronique de la structure (utilisée à des fin d'affichage) - O
date_ouverturedate d'ouverture de la structure - N
date_fermeturedate de fermeture de la structure - N
parent_ididentifiant de la structure parent (référence interne à V_EMC2_STRUCTURE) - N
niv2_ididentifiant de la structure parent (référence interne à V_EMC2_STRUCTURE)
Les données liées aux agents et à leurs carrières
AGENT
Cette vue regroupe les données connues sur la civilité des agent·es de l'établissement.
N.B. : Il est à noter que les données à propos du genre et de la date de naissance sont présentes pour répondre à une enquête ministérielle. Celles-ci n'ont pas été demandées ces dernières années (depuis 2020) et pourraient être supprimées pour respecter le RGPD.
Nom de la vue : V_EMC2_AGENT
- O
c_individuidentifiant unique alphanumérique (clef primaire) - O
prenomle prenom de l'agent - O
nom_usagele nom d'usage - N
nom_famillele nom de famille - N
sexeF pour les femmes et M pour les hommes - N
date_naissancedate de naissance de l'agent - O
loginnom d'utilisateur dans le SI (sert à l'association des utilisateurs à leurs données RH) - O
emailadresse électronique qui sera exploité par le système d'envoi de courrier électronique - O
t_contrat_longtémoin représentant si l'agent est en contrat long (!!attention!! les règles dépendant des règles de calcul de chaque établissement le choix est de laisser cela dans le SIRH)
AGENT_GRADE
Cette vue fait le lien entre un·e agent·e et ses différents grades, corps, correspondances et emploi-type. Il est à noter que cette vue référence aussi la structure pour lequel ces grades/corps sont associées (il doit s'agir d'un héritage du SIRH).
Remarque: Si c'est trop difficile il est possible de référencer la structure mère par exemple l'univserité
Nom de la vue : V_EMC2_AGENT_GRADE
- O
ididentifiant unique numérique - O
structure_ididentifiant de la structure "porteuse" (référence V_EMC2_STRUCTURE) - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - N
correspondance_ididentifiant de la correspondance associée (référence V_EMC2_CORRESPONDANCE) - O
corps_ididentifiant du corps associé (référence V_EMC2_CORPS) - O
grade_ididentifiant du grade associé (référence V_EMC2_GRADE) - N
emploitype_ididentifiant de l'emploi-type associé (référence V_EMC2_EMPLOITYPE) - O
date_debutdate de début de cette association - N
date_findate de fin de cette association
AGENT_ECHELON
Cette vue lit les échelons et leur date de franchissement des agent·es.
N.B. : Une supposition est faite ici sur le fait que les échelons ne sont que numériques.
Nom de la vue : V_EMC2_AGENT_ECHELON
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
echelonreprésentation numérique de l'échelon - O
date_debutdate de passage à l'échelon - N
date_findate de fin de cet échelon
AGENT_QUOTITE
Cette vue est liée à la quotité travaillée par les agent·es.
N.B : Si aucune quotité n'est renseignée pour un agent la supposition faite ici est que l'agent·e à une quotité travaillée de 100%.
Nom de la vue : V_EMC2_AGENT_QUOTITE
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
quotitereprésentation numérique de la quotité travaillée (ici 50 signifie 50%) - N
modalitechaine de caractère remontant la modalité de service associé (par exemple: Temps partiel) - O
date_debutdate de début de la quotité de travail - N
date_findate de fin de la quotité de travail
AGENT_POSTE
Cette vue a été ajoutée pour faire remonter les postes du SIRH. L'usage de cette table n'est faite que par Aix-Marseille Université pour le moment et peut-être laissée vide si aucun besoin n'est remonté dans votre établissement.
Nom de la vue : V_EMC2_AGENT_POSTE
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
code_postele code du poste dans le SIRH - O
libelle_postel'intitulé du poste
AGENT_STATUT
Liste des statuts des agent·es exploités dans les applications EMC2 et Mes-formations
N.B. : Plusieurs points à propos des statuts
- les statuts proviennent initialement du concentrateur de données de Caen. EMC2 ne possède pas les clefs de calcul de ceux-ci.
- Certains statuts ne sont pas exploités, il serait intéressant de réduire cette liste (à discuter par les établissements)
Nom de la vue : V_EMC2_AGENT_STATUT
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
structure_ididentifiant de la structure "porteuse" (référence V_EMC2_STRUCTURE) - O
date_debutdate de début de l'association - N
date_findate de fin de l'association - O
t_titulaire - O
t_cdi - O
t_cdd - O
t_administratifpermet d'identifier le personnel BIATSS - O
t_enseignant - O
t_chercheur - O
t_vacataire - O
t_doctorant - O
t_heberge - O
t_detache_inest en détachement "entrant" dans l'établissement - O
t_detache_outest en détachement "sortant" hors de l'etablissement - O
t_dispoest en disponibilité - O
t_emeriteest en émiritat - O
t_retraite - O
t_conge_parental - O
t_longue_maladie - O
t_postdoc
AGENT_REF
Liste des autres références ou matricules connues des agents.
N.B. : Par exemple à l'Université de Caen Normandie les agents on un Octopus Id qui est l'identifiant principale et pour des raisons d'affichage ou d'import il est nécessaire de remonter l'identifiant SIHAM.
Nom de la vue : V_EMC2_AGENT_REF
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
sourcel'identifiant textuel de la source de la référence (par exempleSIHAM,OCTOPUS) - O
id_sourcela référence/matricule
Les données liés aux chaînes hiérarchiques
AGENT_SUPERIEUR
Cette vue liste les des supérieur·es hiérarchiques direct·es des agent·es
Nom de la vue : V_EMC2_AGENT_SUPERIEUR
- O
ididentifiant unique (chaine de caractère) - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
superieur_ididentifiant du supérieur·e (référence V_EMC2_AGENT) - O
date_debutdate de début de la validité de la relation - N
date_findate de fin de la validité de la relation
Remarque: Pas de besoin particulier en terme des périodes, elles peuvent être données de façon monolithique comme de façon segmentée. Faite ce qui est le plus facile en fonction de votre SI/établissement.
AGENT_AUTORITE
Cette vue liste les des autorités hiérarchiques des agent·es
Nom de la vue : V_EMC2_AGENT_AUTORITE
- O
ididentifiant unique (chaine de caractère) - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
autorite_ididentifiant de l'autorité (référence V_EMC2_AGENT) - O
date_debutdate de début de la validité de la relation - N
date_findate de fin de la validité de la relation
Remarque: Pas de besoin particulier en terme des périodes, elles peuvent être donnée de façon monolithique comme de façon segmentée. Faite ce qui est le plus facile en fonction de votre SI/établissement.
Les données liées affectations et responsabilités de structure
STRUCTURE_RESPONSABLE
Cette vue liste les responsables des structures et sera exploitée par la suite pour déterminer automatiquement le rôle de "responsable de structure".
Nom de la vue : V_EMC2_STRUCTURE_RESPONSABLE
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
structure_ididentifiant de la structure (référence V_EMC2_STRUCTURE) - N
fonction_idréférence l'identifiant de la fonction dans le concentrateur de données (par exemple Responsable administratif) - O
date_debutdate de début de la responsabilité - N
date_findate de fin de la responsabilité
STRUCTURE_GESTIONNAIRE
Cette vue liste les responsables des structures et sera exploitée par la suite pour déterminer automatiquement le rôle de "gestionnaire de structure".
Nom de la vue : V_EMC2_STRUCTURE_GESTIONNAIRE
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
structure_ididentifiant de la structure (référence V_EMC2_STRUCTURE) - N
fonction_idréférence l'identifiant de la fonction dans le concentrateur de données (par exemple Gestionnaire de laboratoire) - O
date_debutdate de début de la gestion - N
date_findate de fin de la gestion
AGENT_AFFECTATION
Cette vue gère les affectations des agent·es aux structures.
Nom de la vue : V_EMC2_AGENT_AFFECTATION
- O
ididentifiant unique numérique - O
agent_ididentifiant de l'agent·e associé·e (référencec_individude V_EMC2_AGENT) - O
structure_ididentifiant de la structure (référence V_EMC2_STRUCTURE) - O
t_principaleest l'affectation principale de l'agent (attention à essayer de maintenir une seule affection principale) - O
t_hierarchiqueest une affectation hiérarchique - O
t_fonctionnelleest une affectation fonctionnelle - N
quotitequotité d'affectation à la structure (ici 50 signifie 50%) - O
date_debutdate de début de l'affectation - N
date_findate de fin de l'affectation
Forcer une synchronisation partielle ou complète
Le module unicaen/synchro
Le module unicaen/synchro exploite un fichier de configuration comme celui de config/autoload/synchro.local.php.
Ce fichier décrit dans quelle base de données (modèle de données) les données sont lues et vers quelles autres les écrire.
return [
'synchros' => [
// d'autres synchros avant
'AGENT_QUOTITE' => [
'order' => 5300,
'source' => 'OCTOPUS',
'orm_source' => 'orm_octopus',
'orm_destination' => 'orm_default',
'table_source' => 'V_EMC2_AGENT_QUOTITE',
'table_destination' => 'agent_carriere_quotite',
'correspondance' => [
'id' => 'id',
'agent_id' => 'agent_id',
'modalite' => 'modalite',
'date_fin' => 'd_fin',
'date_debut' => 'd_debut',
'date_fin' => 'd_fin',
],
'id' => 'id',
],
// d'autres synchros après
],
Les clefs orm_source et table_source décrivent le lieu de lecture des données.
Et les clefs orm_destination et table_destination décrivent le lieu d'écriture des données.
Il est à noter que les orm_source et orm_destination sont définis dans le fichier de configuration config/autoload/database.local.php
La clef correspondance décrit une table de correspondance des colonnes source vers les colonnes destinations.
Finalement la clef id décrit la clef des données sources qui servira de clef primaire dans la base de données destination (!!attention!! sera surement renommée primary_key dans une future version de unicaen/synchro).
Lancer une synchronisation
Principe générale
Il existe deux méthodes de synchronisation : partielle pour une vue et totale pour toutes les vues.
Pour lancer un synchronisation totale on peut utiliser la commande suivante dans le répertoire de l'application.
user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser
Pour lancer la synchronisation d'une vue données
user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser AGENT
Attention toutefois lors d'une synchronisation locale à ce que les données liées soient bien à jour.
Exemple d'une synchronisation
Voici les résultats pour la synchronisation des grades des agents.
user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser
Synchronisation [AGENT_GRADE]
Debut: 24/11/23 16:31:59:169702
6414 entrées dans les données sources.
6408(~3971) entrées dans les données cibles actives.
Lecture: 24/11/23 16:32:00:296970(00:0:1:127268)
#Retrait: 4
#Ajout: 8
#Restauration: 2
#Modification: 2
Fin: 24/11/23 16:32:00:410201
Durée de la synchronisation: 00:0:1:240499
done!
La synchronisation laisse des traces sur les populations des données sources et cibles ainsi que le détails des nombres d'opérations réalisées.
6414 entrées dans les données sourcesla données sources contient 6414 lignes6408(~3971) entrées dans les données cibles actives.la données cible contient 6408 lignes et 3971 lignes "effacées"#Retrait: 4 #Ajout: 8 #Restauration: 2 #Modification: 2reporte les opérations faites pour synchroniser les données.
Troubleshooting
Assurez vous bien avoir les drivers additionnels pour la récupération des données R.H. Dans le cas où les données R.H. sont dans une base de données :
- oracle : les drivers oracle sont toujours un peu pénible mais vous avez probablement déjà une méthode d'installation
- mysql : les drivers
mysqlsont fournis par le paquetphp8.2-mysql