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érence c_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érence c_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érence c_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érence c_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

  1. les statuts proviennent initialement du concentrateur de données de Caen. EMC2 ne possède pas les clefs de calcul de ceux-ci.
  2. 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érence c_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
  • 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érence c_individu de V_EMC2_AGENT)
  • O source l'identifiant textuel de la source de la référence (par exemple SIHAM, 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érence c_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érence c_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érence c_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érence c_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érence c_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 lignes
  • 6408(~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 paquet php8.2-mysql