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 »: