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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_CORRESPONDANCE) - O
code
identifiant unique alphanumérique - O
libelle_court
représentation courte du type de correspondance (par exemple "B.A.P.") - O
libelle_long
représentation longue du type de correspondance (par exemple "Branche d'activités professionnelles") - N
description
brève description - O
date_debut
date de mise en service du type de correspondance dans l'établissement - N
date_fin
date 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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
code
identifiant unique alphanumérique - O
lib_court
représentation courte de la correspondance (par exemple "BAP_A_SVTE") - O
lib_long
représentation longue de la correspondance (par exemple "SCIENCES VIVANT, TERRE ET ENVIRONNEMENT") - O
type_id
représente un type de correspondance de la vue V_EMC2_CORRESPONDANCE_TYPE - O
date_debut
date de mise en service de la correspondance dans l'établissement - N
date_fin
date 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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
code
identifiant unique alphanumérique - O
lib_court
représentation courte du corps (par exemple "IGE") - O
lib_long
représentation longue du corps (par exemple "INGENIEUR D'ETUDES (RECH ET FORM)") - O
categorie
représente la catégorie associée (par exemple A) - O
date_debut
date de mise en service du corps dans l'établissement - N
date_fin
date 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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
code
identifiant unique alphanumérique - O
lib_court
représentation courte du grade (par exemple "IGE CN") - O
lib_long
représentation longue du grade (par exemple "INGENIEUR D'ETUDES CLASSE NORMALE") - O
date_debut
date de mise en service du grade dans l'établissement - N
date_fin
date 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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_AGENT_GRADE) - O
code
identifiant unique alphanumérique - O
lib_court
représentation courte de l'emploi type (par exemple "E2C45") - O
lib_long
représentation longue de l'emploi type (par exemple "Ingénieur-e en ingénierie logicielle") - O
date_debut
date de mise en service de l'emploi type dans l'établissement - N
date_fin
date 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
id
identifiant unique numérique (est utilisé comme clef étrangère par la vue V_EMC2_STRUCTURE) - O
code
identifiant unique alphanumérique - O
libelle
libellé du type de la structure (par exemple "Structure de recherche") - N
description
description 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
id
identifiant unique numérique (est utilisé comme clef étrangère par les vues V_EMC2_AGENT_AFFECTATION, V_EMC2_STRUCTURE_RESPONSABLE, et V_EMC2_STRUCTURE_GESTIONNAIRE) - N
code
identifiant unique alphanumérique - N
sigle
identifiant unique alphanumérique - O
libelle_court
libellé court de la structure (par exemple "DSI") - O
libelle_long
libellé long de la structure (par exemple "Direction du système d'information") - O
type_id
type de la structure voir la vue V_EMC2_STRUCTURE_TYPE - N
email_generique
adresse électronique de la structure (utilisée à des fin d'affichage) - O
date_ouverture
date d'ouverture de la structure - N
date_fermeture
date de fermeture de la structure - N
parent_id
identifiant de la structure parent (référence interne à V_EMC2_STRUCTURE) - N
niv2_id
identifiant 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_individu
identifiant unique alphanumérique (clef primaire) - O
prenom
le prenom de l'agent - O
nom_usage
le nom d'usage - N
nom_famille
le nom de famille - N
sexe
F pour les femmes et M pour les hommes - N
date_naissance
date de naissance de l'agent - O
login
nom d'utilisateur dans le SI (sert à l'association des utilisateurs à leurs données RH) - O
email
adresse électronique qui sera exploité par le système d'envoi de courrier électronique - O
t_contrat_long
té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
id
identifiant unique numérique - O
structure_id
identifiant de la structure "porteuse" (référence V_EMC2_STRUCTURE) - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - N
correspondance_id
identifiant de la correspondance associée (référence V_EMC2_CORRESPONDANCE) - O
corps_id
identifiant du corps associé (référence V_EMC2_CORPS) - O
grade_id
identifiant du grade associé (référence V_EMC2_GRADE) - N
emploitype_id
identifiant de l'emploi-type associé (référence V_EMC2_EMPLOITYPE) - O
date_debut
date de début de cette association - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
echelon
représentation numérique de l'échelon - O
date_debut
date de passage à l'échelon - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
quotite
représentation numérique de la quotité travaillée (ici 50 signifie 50%) - N
modalite
chaine de caractère remontant la modalité de service associé (par exemple: Temps partiel) - O
date_debut
date de début de la quotité de travail - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
code_poste
le code du poste dans le SIRH - O
libelle_poste
l'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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
structure_id
identifiant de la structure "porteuse" (référence V_EMC2_STRUCTURE) - O
date_debut
date de début de l'association - N
date_fin
date de fin de l'association - O
t_titulaire
- O
t_cdi
- O
t_cdd
- O
t_administratif
permet d'identifier le personnel BIATSS - O
t_enseignant
- O
t_chercheur
- O
t_vacataire
- O
t_doctorant
- O
t_heberge
- O
t_detache_in
est en détachement "entrant" dans l'établissement - O
t_detache_out
est en détachement "sortant" hors de l'etablissement - O
t_dispo
est en disponibilité - O
t_emerite
est en émiritat - O
t_retraite
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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
source
l'identifiant textuel de la source de la référence (par exempleSIHAM
,OCTOPUS
) - O
id_source
la 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
id
identifiant unique (chaine de caractère) - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
superieur_id
identifiant du supérieur·e (référence V_EMC2_AGENT) - O
date_debut
date de début de la validité de la relation - N
date_fin
date 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
id
identifiant unique (chaine de caractère) - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
autorite_id
identifiant de l'autorité (référence V_EMC2_AGENT) - O
date_debut
date de début de la validité de la relation - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
structure_id
identifiant de la structure (référence V_EMC2_STRUCTURE) - N
fonction_id
référence l'identifiant de la fonction dans le concentrateur de données (par exemple Responsable administratif) - O
date_debut
date de début de la responsabilité - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
structure_id
identifiant de la structure (référence V_EMC2_STRUCTURE) - N
fonction_id
référence l'identifiant de la fonction dans le concentrateur de données (par exemple Gestionnaire de laboratoire) - O
date_debut
date de début de la gestion - N
date_fin
date 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
id
identifiant unique numérique - O
agent_id
identifiant de l'agent·e associé·e (référencec_individu
de V_EMC2_AGENT) - O
structure_id
identifiant de la structure (référence V_EMC2_STRUCTURE) - O
t_principale
est l'affectation principale de l'agent (attention à essayer de maintenir une seule affection principale) - O
t_hierarchique
est une affectation hiérarchique - O
t_fonctionnelle
est une affectation fonctionnelle - N
quotite
quotité d'affectation à la structure (ici 50 signifie 50%) - O
date_debut
date de début de l'affectation - N
date_fin
date 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 sources
la 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: 2
reporte 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
mysql
sont fournis par le paquetphp8.2-mysql