4.2. Collection Unit¶
4.2.1. Utilisation de la collection Unit¶
La collection Unit contient les informations relatives aux unités archivistiques.
4.2.2. Exemple de XML en entrée¶
Ci-après, la portion d’un bordereau de transfert (manifest.xml) utilisée pour compléter les champs du JSON. Il s’agit des informations situées entre les balises <ArchiveUnit>.
<?xml version="1.0" encoding="UTF-8"?>
<ArchiveUnit id="ID44">
    <Management>
        <DisseminationRule>
            <Rule>DIS-00002</Rule>
            <StartDate>2000-01-01</StartDate>
            <RefNonRuleId>DIS-00001</RefNonRuleId>
        </DisseminationRule>
    </Management>
    <Content>
        <DescriptionLevel>RecordGrp</DescriptionLevel>
        <Title>Gare du Nord</Title>
        <Description>Cette unité de description hérite de son parent de la règle ACC-00003 avec pour StartDate 01/01/2000, bloque l'héritage de la règle DIS-00001 mais déclare la règle DIS-00002 avec pour StartDate 01/01/2000</Description>
        <StartDate>2017-04-05T08:11:56</StartDate>
        <EndDate>2017-04-05T08:11:56</EndDate>
    </Content>
    <ArchiveUnit id="ID75">
        <ArchiveUnitRefId>ID32</ArchiveUnitRefId>
    </ArchiveUnit>
</ArchiveUnit>
4.2.3. Exemple de JSON stocké dans la collection Unit¶
Les champs présentés dans l’exemple ci-après ne font pas état de l’exhaustivité des champs disponibles dans le SEDA. Ceux-ci sont référencés dans la documentation SEDA disponible au lien suivant : https://redirect.francearchives.fr/seda/
{
    "_id": "aeaqaaaaamhad455abcwsalep4lzf2iaaaea",
    "_og": "aebaaaaaamhad455abcwsalep4lzfvaaaaca",
    "_mgt": {
        "AccessRule": {
            "Rules": [
                {
                    "Rule": "ACC-00002",
                    "StartDate": "2000-01-01",
                    "EndDate": "2025-01-01"
                }
            ]
        }
    },
    "DescriptionLevel": "Item",
    "Title": "Stalingrad.txt",
    "TransactedDate": "2017-04-04T08:07:06",
    "SedaVersion": "2.1",
    "ImplementationVersion": "1.7.0-SNAPSHOT",
    "_storage": {
        "_nbc": 2,
        "offerIds": [
            "offer-fs-1.service.int.consul",
            "offer-fs-2.service.int.consul"
        ],
        "strategyId": "default"
    },
    "_sps": [
        "RATP"
    ],
    "_sp": "RATP",
    "_ops": [
        "aeeaaaaaaohi422caa4paalep4lxwoyaaaaq",
        "aeeaaaaaaohi422caaieaalesqjo5hqaaaaq",
        "aeeaaaaaaohi422caaieaalesqkbhnaaaaaq",
        "aeeaaaaaaohi422caaieaalesqml2vyaaaaq"
    ],
    "_opi": "aeeaaaaaaohi422caa4paalep4lxwoyaaaaq",
    "_unitType": "INGEST",
    "_up": [
        "aeaqaaaaamhad455abcwsalep4lzf2iaaada"
    ],
    "_us": [
        "aeaqaaaaamhad455abcwsalep4lzf2aaaaeq",
        "aeaqaaaaamhad455abcwsalep4lzf2iaaada",
        "aeaqaaaaamhad455abcwsalep4lzf2iaaabq"
    ],
    "_graph": [
        "aeaqaaaaamhad455abcwsalep4lzf2iaaabq/aeaqaaaaamhad455abcwsalep4lzf2aaaaeq",
        "aeaqaaaaamhad455abcwsalep4lzf2iaaaea/aeaqaaaaamhad455abcwsalep4lzf2iaaada",
        "aeaqaaaaamhad455abcwsalep4lzf2iaaada/aeaqaaaaamhad455abcwsalep4lzf2iaaabq"
    ],
    "_uds": {
        "1": [
            "aeaqaaaaamhad455abcwsalep4lzf2iaaada"
        ],
        "2": [
            "aeaqaaaaamhad455abcwsalep4lzf2iaaabq"
        ],
        "3": [
            "aeaqaaaaamhad455abcwsalep4lzf2aaaaeq"
        ]
    },
    "_us_sp": {
        "RATP": [
            "aeaqaaaaamhad455abcwsalep4lzf2aaaaeq",
            "aeaqaaaaamhad455abcwsalep4lzf2iaaada",
            "aeaqaaaaamhad455abcwsalep4lzf2iaaabq"
        ]
    },
    "_min": 1,
    "_max": 4,
    "_glpd": "2018-07-09T12:50:30.733",
    "_v": 3,
    "_tenant": 3,
    "Description": "",
    "_history": [
     {
       "ud": "2018-07-25T15:28:49.040",
       "data": {
         "_v": 0,
         "_mgt": {
           "ClassificationRule": {
             "ClassificationAudience": "ClassificationAudience0",
             "ClassificationLevel": "Secret Défense",
             "ClassificationOwner": "ClassificationOwner0",
             "ClassificationReassessingDate": "2016-06-03",
             "NeedReassessingAuthorization": true,
             "Rules": [
               {
                 "Rule": "CLASS-00001",
                 "StartDate": "2015-06-03",
                 "EndDate": "2025-06-03"
               }
             ]
           }
         }
       }
     }
   ]
}
4.2.4. Détail du JSON¶
La structure de la collection Unit est composée de la transposition JSON de toutes les balises XML contenues dans la balise <DescriptiveMetadata> du bordereau de transfert conforme au standard SEDA v.2.1., c’est-à-dire toutes les balises se rapportant aux unités archivistiques.
Cette transposition se fait comme suit :
« _id »: identifiant unique de l’unité archivistique.
- Il s’agit d’une chaîne de 36 caractères correspondant à un GUID.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _og » (objectGroup): identifiant du groupe d’objets représentant cette unité archivistique.
- Il s’agit d’une chaîne de 36 caractères correspondant au GUID du champ _id du groupe d’objets de la collection objectGroup.
 - Cardinalité : 0-1
 
« _mgt »: contient les balises contenues dans le bloc <Management> du bordereau de transfert pour cette unité archivistique (le champ peut donc être vide).
- Il contient un tableau de catégories de règles de gestion appliquées à cette unité archivistique. Ces catégories sont, exhaustivement :
 
- AccessRule (délai de communicabilité)
 - AppraisalRule (durée d’utilité administrative)
 - ClassificationRule (durée de classification)
 - DisseminationRule (durée de diffusion)
 - ReuseRule (durée de réutilisation)
 - StorageRule (durée d’utilité courante)
 - Cardinalité 0-1, pour chaque catégorie.
 
Chaque catégorie peut contenir :
- Un tableau de règles de gestion (tableau d’objets, cardinalité 0-1)
 Chacune des règles de ce tableau est elle-même composée de plusieurs informations :
- « Rule »: identifiant de la règle, qui correspond à une valeur du champ RuleId de la collection FileRules. (cardinalité 0-1)
 - « StartDate » : « StartDate »: date de début du calcul de l’échéance. Cette date est déclarée dans le message ArchiveTransfer ou ajoutée a posteriori par une modification de l’unité archivistique. (cardinalité 0-1)
 - « EndDate »: date de fin d’application de la règle. Cette valeur est issue d’un calcul réalisé par la solution logicielle Vitam. Celui-ci consiste en l’ajout du délai correspondant à la règle dans la collection FileRules à la valeur du champ startDate (EndDate = StartDate + Durée) (cardinalité 0-1)
 
- Des données spécifiques aux catégories :
 
- Pour les catégories « StorageRule » et « AppraisalRule » uniquement : le champ « FinalAction » décrit le sort final des règles dans ces catégories (cardinalité 1-1). La valeur contenue dans le champ peut être :
 
- Pour StorageRule : « Transfer », « Copy » ou « RestrictAccess » (énumaration issue du FinalActionStorageCodeType en SEDA 2.1)
 - Pour AppraisalRule : « Keep » ou « Destroy » (énumaration issue du FinalActionAppraisalCodeType en SEDA 2.1)
 - Pour ClassificationRule uniquement :
 
- « ClassificationLevel » : niveau de classification, obligatoire et systématiquement renseigné (cardinalité 1-1)
 - « ClassificationOwner »: propriétaire de la classification, obligatoire et systématiquement renseigné (cardinalité 1-1)
 - « ClassificationAudience » : permet de gérer les mentions additionnelles de limitation du champ de diffusion (exemple : « spécial France »), champ optionnel (cardinalité 0-1)
 - « ClassificationReassessingDate » : date de réévaluation de la classification, optionnelle. (cardinalité 0-1)
 - « NeedReassessingAuthorization » : indique si une autorisation humaine est nécessaire pour réévaluer la classification, optionnel (cardinalité 0-1)
 
- Des paramètres de gestion d’héritage de règles, dans un objet nommé « Inheritance » (cardinalité 0-1). Cet objet peut avoir comme valeur :
 
- « PreventInheritance » :
 
- « true » ou « false », utilisé pour bloquer l’héritage de toutes les règles de gestion de la même catégorie
 - Cardinalité 1-1 à partir du moment où le champ Inheritance existe
 - « PreventRulesId » :
 
- Tableau d’identifiants de règles de gestion qui ne doivent pas être héritées d’un parent
 - A l’entrée il s’agit de la valeur de la balise <RefNonRuleId> du SEDA
 - Cardinalité 1-1 à partir du moment où le champ Inheritance existe
 
Extrait d’une unité archivistique ayant un bloc « _mgt » possédant des règles de gestions :
"_mgt": {
        "AppraisalRule": {
            "Rules": [
                {
                    "Rule": "APP-00001",
                    "StartDate": "2015-01-01",
                    "EndDate": "2095-01-01"
                },
                {
                    "Rule": "APP-00002"
                }
            ],
            "Inheritance": {
                "PreventInheritance": true,
                "PreventRulesId": []
            },
            "FinalAction": "Keep"
        },
        "AccessRule": {
            "Rules": [
                {
                    "Rule": "ACC-00001",
                    "StartDate": "2016-06-03",
                    "EndDate": "2016-06-03"
                }
            ]
        },
        "DisseminationRule": {
            "Inheritance": {
                "PreventInheritance": true,
                "PreventRulesId": []
            }
        },
        "ReuseRule": {
            "Inheritance": {
                "PreventRulesId": [
                    "REU-00001", "REU-00002"
                ]
            }
        },
        "ClassificationRule": {
            "ClassificationLevel": "Secret Défense",
            "ClassificationOwner": "Projet_Vitam",
            "Rules": [
                {
                    "ClassificationReassessingDate": "2025-06-03",
                    "NeedReassessingAuthorization": true,
                    "Rule": "CLASS-00001"
                }
            ]
        }
    },
« DescriptionLevel »: niveau de description archivistique de l’unité archivistique.
- Il s’agit d’une chaîne de caractères.
 - Ce champ est renseigné avec les valeurs situées entre les balises <DescriptionLevel> présentes dans le bordereau de transfert.
 - Cardinalité : 1-1
 
« Title »: titre de l’unité archivistique.
- Il s’agit d’une chaîne de caractères.
 - Ce champ est renseigné avec les valeurs situées entre les balises <Title> dans le bordereau de transfert.
 - Cardinalité : 0-1, le modèle d’une unité archivistique doit comporter au moins un champ Title et/ou au moins un champ Title_
 
« Title_ »: titres de l’unité archivistique par langue
- Il s’agit d’un tableau JSON.
 - Les titres sont organisés sous la forme de clef : valeur, la clef étant l’indicatif de la langue en xml:lang et la valeur le titre. Par exemple : « fr »: « Ceci est un titre. »
 - Cardinalité : 0-1, le modèle d’une unité archivistique doit comporter au moins un champ Title et/ou au moins un champ Title_
 
{
    "fr": "FrenchMySIP",
    "en": "EnglishMySIP"
},
« Description »: description de l’unité archivistique.
- Il s’agit d’une chaîne de caractères.
 - Ce champ est renseigné avec les informations situées entre les balises <Description> de l’unité archivistique concernée dans le bordereau de transfert.
 - Cardinalité : 0-1, le modèle d’une unité archivistique doit comporter au moins un champ Description et/ou au moins un champ Description_
 
« Description_ »: description de l’unité archivistique par langue.
- Il s’agit d’un tableau JSON
 - Les titres sont organisés sous la forme de clef : valeur, la clef étant l’indicatif de la langue en xml:lang et la valeur la description. Par exemple : « fr »: « Ceci est une description. »
 - Cardinalité : 0-1, le modèle d’une unité archivistique doit comporter au moins un champ Description et/ou au moins un champ Description_
 
"Description_": {
    "fr": "Une autre description",
    "en": "another description"
},
« XXXXX »: des champs facultatifs peuvent être contenus dans le JSON lorsqu’ils sont renseignés dans le bordereau de transfert au niveau du Content de chaque unité archivistique.
- Se reporter à la documentation descriptive du SEDA 2.1 et notamment le schéma ontology.xsd pour connaître la liste des métadonnées facultatives.
 
ArchiveUnitProfile: profil d’archivage de l’unité archivistique utilisé lors de l’entrée.
- Correspond à l’identifiant du profil d’archivage associé à l’unité archivistique
 - Chaîne de caractères.
 - Cardinalité : 0-1
 
« SedaVersion »: version du SEDA utilisé lors de l’entrée de cette unité archivistique.
- Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 - Exemple de valeur : « 2.1 »
 
« ImplementationVersion »: version du modèle de donnée actuellement utilisé par l’unité archivistique.
- Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 - Exemple de valeur : « 1.7.0-SNAPSHOT »
 
« _history » : données historiques de l’unité archivistique
- Champ peuplé par la solution logicielle Vitam au moment d’une mise à jour d’une unité archivistique, uniquement si la mise à jour déclenche une historisation
 - Cardinalité : 0-1
 - Ce champ contient les clés suivantes :
 
- « ud » : date du changement de la métadonnée
 - « data » : les données qui sont historisées. Dans l’exemple ci dessous, on constate qu’au 25 juillet 2018, l’unité archivistique a historisé une règle de classification située dans le bloc management (_mgt) de son modèle.
 
- Le champ data contient de plus le champ _v qui est la version de l’enregistrement de l’unité archivistique avant modification. Ce champ est repris du champ « _v » à la racine du modèle de données de l’unité archivistique
 
"_history": [
 {
   "ud": "2018-07-25T15:28:49.040",
   "data": {
     "_v": 0,
     "_mgt": {
       "ClassificationRule": {
         "ClassificationAudience": "ClassificationAudience0",
         "ClassificationLevel": "Secret Défense",
         "ClassificationOwner": "ClassificationOwner0",
         "ClassificationReassessingDate": "2016-06-03",
         "NeedReassessingAuthorization": true,
         "Rules": [
           {
             "Rule": "CLASS-00001",
             "StartDate": "2015-06-03",
             "EndDate": "2025-06-03"
           }
         ]
       }
     }
   }
 }
]
Le champ _history peut également être créé depuis les données contenues dans un bordereau de transfert :
<History>
              <UpdateDate>2018-08-02T14:06:23.374</UpdateDate>
              <Data>
                  <Version>0</Version>
                  <Management>
                      <ClassificationRule>
                          <ClassificationLevel>Secret Défense</ClassificationLevel>
                          <ClassificationOwner>ClassificationOwner0</ClassificationOwner>
                      </ClassificationRule>
                  </Management>
              </Data>
          </History>
          <History>
              <UpdateDate>2018-08-02T14:30:20.137</UpdateDate>
              <Data>
                  <Version>1</Version>
                  <Management>
                      <ClassificationRule>
                          <ClassificationLevel>Confidentiel Défense</ClassificationLevel>
                          <ClassificationOwner>ClassificationOwner0</ClassificationOwner>
                      </ClassificationRule>
                  </Management>
              </Data>
  </History>
Le mapping est le suivant :
- La balise <History> du bordereau devient le tableau « _history » dans la base de données
 - <Data> devient « data »
 - <Version> devient « _v »
 - <Management> devient « _mgt »
 
« _storage »: contient trois champs qui permettent d’identifier les offres de stockage.
- Il s’agit d’un JSON constitué des champs suivants :
 
- « strategyId »: identifiant de la stratégie de stockage.
 - « offerIds »: liste des offres de stockage pour une stratégie donnée
 - « _nbc »: nombre d’offres.
 - Ne peut être vide
 - Cardinalité : 1-1
 
« _sps »: services producteurs auxquels l’unité archivistique a été rattachée (au titre de leurs fonds symboliques)
- Il s’agit d’un tableau contenant les identifiants de tous les services producteurs référençant l’unité archivistique.
 - Il s’agit d’un tableau de chaînes de caractères.
 - Ne peut être vide. Il comprend au minimum le service versant déclaré dans le bordereau de transfert.
 - Cardinalité : 1-1
 
« _sp »: service producteur responsable de l’unité archivistique, qui appartient à son fond propre.
- Il s’agit du service producteur inscrit dans le bordereau de transfert lié au transfert de l’unité archivistique et déclaré dans la balise <OriginatingAgencyIdentifier> du message ArchiveTransfer.
 - Il s’agit d’une chaîne de caractères.
 - Cardinalité : 1-1
 
« _ops » (operations): tableau contenant les identifiants d’opérations auxquelles cette unité archivistique a participé.
- Il s’agit d’une chaîne de 36 caractères correspondant au GUID du champ _id de l’opération enregistré dans la collection LogbookOperation.
 - Ne peut être vide.
 - Cardinalité : 1-1
 
« _opi » : identifiant de l’opération à l’origine de la création de cette unité archivistique.
- Il s’agit d’une chaîne de 36 caractères correspondant au GUID du champs _id de la collection LogbookOperation.
 - Ne peut être vide.
 - Cardinalité : 1-1
 
« _unitType »: champ indiquant le type d’unité archivistique concerné.
Il s’agit d’une chaîne de caractères.
La valeur contenue doit être conforme à l’énumération UnitType. Celle-ci peut être :
- INGEST : unité archivistique issue d’un SIP
 - FILING_UNIT : unité archivistique issue d’un plan de classement
 - HOLDING_UNIT : unité archivistique issue d’un arbre de positionnement
 Cardinalité : 1-1
« _up » (unit up): tableau recensant les _id des unités archivistiques parentes (parents immédiats).
- Il s’agit d’une chaîne de 36 caractères correspondant à un GUID. Valeur du champ _id d’une unité archivistique enregistré dans la collection Unit.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _us »: tableau contenant la parentalité, c’est à dire l’ensemble des unités archivistiques parentes, indexé de la manière suivante : [ GUID1, GUID2, … ].
- Tableau de chaînes de 36 caractères.
 - Champ peuplé par la solution logicielle Vitam.
 - Vide pour la racine uniquement
 - Cardinalité : 1-1
 
« _graph » : Tableau des chemins de l’unité archivistique
- Il s’agit d’un tableau contenant tous les chemins pour accéder à l’unité archivistique depuis les racines. Ces chemins sont composés sous la forme id1/id2/id3/…/idn Où chaque id est un identifiant d’unité archivistique. id1 étant l’unité courante et où idn est l’identifiant de l’unité de plus haut niveau.
 - Cardinalité 1-1
 
« _us_sp »: Liste des unités archivistique parentes concernant tous les niveaux de parentalité
- Il s’agit d’un tableau contenant les identifiants de tous les services producteurs de tous les parents liées à l’unité archivistique.
 - Il s’agit d’un tableau de chaînes de caractères.
 - Vide uniquement si l’unité archivistique n’a pas de parents
 - Cardinalité : 1-1
 
« _uds »: tableau contenant la parentalité, c’est à dire l’ensemble des unités archivistiques parentes, ainsi que le niveau de profondeur relative.
- Il s’agit d’un tableau de JSON.
 - Ces informations sont réunies dans le tableau sous la forme de clef/valeur, la clé étant la profondeur du parent (de type entier), la valeur étant elle même un tableau d’identifiant d’unité archivistique. Exemple d’une unité qui a un parent direct, lui même ayant deux parents.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
"1": [
    "aeaqaaaaamhad455abcwsalep4lzf2iaaada"
],
"2": [
    "aeaqaaaaamhad455abcwsalep4lzf2iaaabq",
    "aeaqaaaaamhad455abcwsalep4lzf2iaaabq"
],
« _min »: profondeur minimum de l’unité archivistique par rapport à une racine.
- Calculée, cette profondeur correspond au minimum des profondeurs, quels que soient les racines concernées et les chemins possibles.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _max »: profondeur maximale de l’unité archivistique par rapport à une racine.
- Calculée, cette profondeur correspond au maximum des profondeurs, quels que soient les racines concernées et les chemins possibles.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _glpd »: Date de la dernière modification du graph dont l’unité dépend
- Il s’agit d’une date.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _v »: version de l’enregistrement décrit.
- Il s’agit d’un entier.
 - Champ peuplé par la solution logicielle Vitam.
 - 0 correspond à l’enregistrement d’origine. Si le numéro est supérieur à 0, alors il s’agit du numéro de version de l’enregistrement.
 - Cardinalité : 1-1
 
« _tenant »: identifiant du tenant.
- Il s’agit d’un entier.
 - Champ peuplé par la solution logicielle Vitam.
 - Cardinalité : 1-1
 
« _elimination »: tableau contenant les résultats pour l’unité archivistique d’une opération d’analyse d’élimination
- Champ peuplé par la solution logicielle Vitam au moment d’une indexation lors d’une phase d’analyse d’élimination.
 - Cardinalité : 1-1
 Ce bloc contient les clés suivantes :
« OperationId »: GUID de l’opération d’élimination
- Tableau de chaînes de 36 caractères
 - Ne peut être vide
 - Cardinalité : 1-1
 « GlobalStatus »: ce champ indique le statut de l’unité archivistique lors de son indexation
- les valeurs ne peuvent être que DESTROY ou CONFLICT
 - Ne peut être vide.
 - Cardinalité : 1-1
 « DestroyableOriginatingAgencies » : Service(s) producteur(s) pour lesquel(s) l’unité archivistique est éliminable
- Il s’agit d’une chaîne de caractères.
 - Cardinalité : 0-n
 « NonDestroyableOriginatingAgencies »: Service(s) producteur(s) pour lesquel(s) l’unité archivistique n’est pas éliminable
- Il s’agit d’une chaîne de caractères.
 - Cardinalité : 0-n
 « ExtendedInfo » : tableau donnant des informations complémentaires dans les cas de CONFLICT
- Cardinalité : 0-n
 « ExtendedInfoType »: ce champ indique les situations impliquant un CONFLICT
- Il s’agit d’une chaîne de caractères.
 - Cardinalité : 0-n
 
- les valeurs attendues dans ce tableau sont soit :
 
- « KEEP_ACCESS_SP » l’unité archivistique n’est pas éliminable car l’accès est conservé pour un service producteur autre que le service producteur principal. Pour chaque cas de KEEP_ACCESS_SP l’unité parente est obligatoirement spécifiée avec son GUID, ainsi que le service producteur concerné.
 
- « ParentUnitId »: « guid »,
 - « DestroyableOriginatingAgencies »
 - « ACCESS_LINK_INCONSISTENCY » l’unité archivistique n’est pas éliminable car sa suppression occasionnerait une incohérence dans le fonds d’archives. Pour chaque cas de ACCESS_LINK_INCONSISTENCY l’unité parente est obligatoirement spécifiée avec son GUID, ainsi que le service producteur concerné.
 
- « ParentUnitId »: « guid »,
 - « DestroyableOriginatingAgencies »: