Aller à : navigation, rechercher

Maarch RM/Implémentation

Référentiel des archives

Cet article détaille le modèle de données implémenté par Maarch RM pour le référentiel des archives.

Cette base de connaissance utilisée pour les opérations d'accès et de gestion est maintenue à jour dans la base de données de l'application. Elle est alimentée lors des versements d'archives par l'extraction des informations à partir du paquet d'information versé, puis modifiée lors des opérations de gestion telles que les modifications de la règle de conservation, le gel ou le dégel, la restitution ou l'élimination.

Maarch RM implémente un modèle de base pour répondre aux exigences de conservation sécurisée des archives tel que défini par les normes et standards existants (ISO 14721 OAIS, NF Z42-013 notamment, l'enjeu étant aussi de permettre d'évoluer aisément pour prendre en compte les évolutions de ces recommandations et de nouvelles normes et standards futurs). Ce modèle inclut les entités suivantes :

  • un registre des archives, pour leur référencement, classement, identification, structure hiérarchique et associative, intégrité, règles de gestion.
  • un journal du cycle de vie pour tracer les événements ayant trait à la conservation des archives
  • un journal de l'application pour tracer tous les événements de sécurité et d'utilisation de l'application
  • des référentiels fonctionnels pour la sécurité et l'encodage de valeurs utilisées dans les données d'archives

A côté de ce référentiel central, Maarch RM est conçu aussi pour que la communauté d'utilisateurs puisse implémenter des modèles de description qui correspondent au domaine des archives conservées. C'est le cas notamment pour la sphère publique, pour lesquelles Maarch RM fournit un modèle de description des archives correspondant aux contenus de description échangés entre les acteurs via le SEDA. Maarch RM fournit aussi un exemple d'implémentation de description pour les archives administratives et financières de la sphère privée (PME/PMI).

Nous détaillerons ici le modèle disponible, avec l'idée que celui-ci n'est pas limitatif mais au contraire qu'il est possible, et même souhaitable, que chaque communauté implémente le modèle de description qui correspond au mieux à ses besoins spécifiques, car c'est la force de Maarch RM de pouvoir s'adapter à tous les besoins.

Registre des archives

Il s'agit de la base de connaissance centrale des archives, qui fournit toutes l'information de description nécessaire à la gestion de la conservation sécurisée. Il est composé d'une classe pour les archives, une pour les documents et une pour les ressources numériques (un document pouvant être physique).

archive
 |_ service producteur (domaine référentiels fonctionnels)
 |_[0..1] <<description>> (domaine personnalisé)
 |_[0..*] objet d'archive 
 |_[0..*] document 
           |_ [0..1] ressource numérique 

Une entité "archive" est rattachée à un service producteur pour garantir l'étanchéité et établir les droits d'accès des personnes et organisations aux données archivées. Elle possède potentiellement un objet de description, qui implémente un modèle adapté à la communauté.

Une entité "archive" peut contenir d'autres entités archives, appelées alors "objets d'archives", à la manière d'un dossier qui contiendrait des sous-dossiers. Les objets d'archives héritent des règles de gestion de leur conteneur, mais peuvent les redéfinir localement (voir plus bas).

Une entité "archive" peut contenir un ou plusieurs entités "document", qui représentent les documents d'archives stockés. Chaque contenu de document peut exister sous une forme numérique dans le système d'archivage, auquel cas la ressource numérique associée sera représentée par une entité "ressource numérique" (voir plus bas "digitalResource").

L'entité archive

La classe "archive" fournit les propriétés suivantes:

archive : {
    archiveId : texte non nul,
    originatorArchiveId : texte,
    depositorArchiveId : texte,
    archiveName : texte,
    retentionRuleCode : texte,
    retentionStartDate : date,
    retentionDuration : durée non nulle,
    finalDisposition : texte non nul,
    disposalDate : date,
    accessRuleCode : texte,
    accessRuleDuration : durée,
    accessRuleStartDate : date,
    accessRuleComDate : date,
    originatorOrgRegNumber : texte non nul,
    originatorOwnerOrgId : texte non nul,
    depositorOrgRegNumber : texte non nul,
    archiverOrgRegNumber : texte non nul,
    archivalAgreementReference : texte,
    archivalProfileReference : texte,
    serviceLevelReference : texte,
    depositDate : date non nulle,
    lastCheckDate : date,
    lastDeliveryDate : date,
    lastModificationDate : date,
    status : texte non nul
}

Données d'identification

archiveId : Identifiant d'archive ou de l'objet d'archive fourni par le système d'archivage, par extension le Service d'archives. Il est calculé automatiquement dès la réception de l'archive par le composant d'échange de données (MEDONA/SEDA).

originatorArchiveId : Identifiant d'archive ou de l'objet d'archive fourni par le Service Producteur.

depositorArchiveId : Identifiant d'archive ou de l'objet d'archive fourni par le Service Versant.

archiveName : Intitulé de l'archive.

Données de gestion : règle de conservation

retentionRuleCode : Identifiant de la règle de conservation associée dans le référentiel du SAE.

retentionStartDate : Date de départ du calcul pour la règle de conservation.

retentionDuration : Durée de conservation (DUA).

finalDisposition : Sort final, conserver ou détruire.

disposalDate : Date de fin de conservation.

Données de gestion : règle de communicabilité et d'accès

accessRuleCode : Identifiant de la règle de communicabilité/d'accès associée dans le référentiel du SAE.

accessRuleDuration : Durée de la non-communicabilité.

accessRuleStartDate : Date de départ du calcul pour la règle de communicabilité.

accessRuleComDate : Date de communicabilité.

originatorOrgRegNumber : Identifiant du Service Producteur associé dans le référentiel du SAE.

originatorOwnerOrgId : Identifiant de l'organisme d'appartenance du Service Producteur associé dans le référentiel du SAE.

depositorOrgRegNumber : Identifiant du Service Versant associé dans le référentiel du SAE.

archiverOrgRegNumber : Identifiant du Service d'Archives associé dans le référentiel du SAE.

Données de gestion : administration

archivalAgreementReference : Identifiant de l'accord de versement associé dans le référentiel du SAE.

archivalProfileReference : Identifiant du profil d'archives associé dans le référentiel du SAE.

serviceLevelReference : Identifiant du niveau de service associé dans le référentiel du SAE.

depositDate : Date de dépôt dans le SAE.

lastCheckDate : Date de dernier contrôle d'intégrité dans le SAE.

lastDeliveryDate : Date de dernier contrôle d'intégrité dans le SAE.

lastModificationDate : Date de dernière modification dans le SAE.

status : Statut de l'archive dans son cycle de vie (en cours de conservation, gelée, en cours de restitution, d'élimination, etc...)

L'entité document

document: {
    docId : texte non nul,
    originatorDocId : texte,
    depositorDocId : texte,
    control : texte,
    copy : booléen,
    status : texte,
    type : texte non nul,
    description : texte,
    language : texte,
    purpose : texte,
    creation : date,
    issue : date,
    receipt : date,
    response : date,
    submission : date
}

Données d'identification

docId : Identifiant du document fourni par le SAE, par extension par le Service d'Archives.

originatorDocId : Identifiant du document fourni par Service Producteur.

depositorDocId : Identifiant du document fourni par Service Versant.

Données d'administration

control : Liste d'indicateurs de contrôle pour les opérations au versement notamment.

copy : Indicateur de copie.

status : Statut du document.

Données descriptives

type : Type de document, contenu d'information, information de représentation, information de pérennisation, plein-texte, journal du cycle de vie...

description : Texte descriptif.

language : Un ou plusieurs codes de langue de contenu (texte/audio)

purpose : Objet du document.

creation : Date de création du document.

issue : Date de publication du document.

receipt : Date de réception du document.

response : Date de réponse au document.

submission : Date de validation du document.

L'entité digitalResource

Cette classe représente un contenu numérique stocké sur les supports à des adresses conservées dans une seconde entité "address".

digitalResource
 |_ [2..*] address
digitalResource : {
    resId : texte non nul,
    clusterId : texte non nul,
    fileName : texte,
    size : entier non nul,
    created : date,
    updated : date,
    puid : texte non nul,
    mimetype : texte non nul,
    fileExtension : texte,
    hash : texte non nul,
    hashAlgorithm : texte non nul
}

Données d'identification

resId : Identifiant de la ressource dans le système.

clusterId : Identifiant de la grappe de stockage, qui fournit la liste des supports de stockage utilisés.

fileName : Nom de fichier reçu/restitué.

Données d'administration

size : Taille en octets.

created : Date de création.

updated : date de dernière modification.

Données de représentation

puid : Identifiant du format dans le référentiel PRONOM.

mimetype : Type MIME du contenu.

fileExtension : Extension de fichier reçu/restitué.

Données d'intégrité

hash : Empreinte numérique.

hashAlgorithm : Algorithme de l'empreinte numérique.

Description des archives publiques

Il s'agit d'un objet complexe qui comporte une entité principale "contentDescription", qui peut être accompagnée d'une ou plusieurs entités "keyword" représentant des mot-clés et "custodialHistory" pour l'historique de conservation.

contentDescription
 |_[0..*] custodialHistory
 |_[0..*] keyword

Description du contenu

contentDescription : {
    contentDescriptionId : texte non nul,
    description : texte,
    descriptionLevel : texte,
    filePlanPosition : texte,
    language : texte,
    latestDate : date,
    oldestDate : date,
    otherDescriptiveData : texte,
    accessRuleCode : texte,
    accessRuleDuration : durée,
    accessRuleStartDate : date,
    accessRuleComDate : date,
    repositoryOrgRegNumber : texte
}

contentDescriptionId : Identifiant interne de la description.

description : Texte descriptif de l'archive.

descriptionLevel : Niveau de description (item, fonds, série...).

filePlanPosition : Positions dans le plan de classement du producteur.

language : Langues de l'archive.

latestDate : Fin de période couverte.

oldestDate : Début de période couverte.

otherDescriptiveData : Autres données descriptives en format libre.

accessRuleCode : Identifiant de la règle de communicabilité/d'accès associée dans le référentiel du SAE pour la description.

accessRuleDuration : Durée de la non-communicabilité de la description.

accessRuleStartDate : Date de départ du calcul pour la règle de communicabilité de la description.

accessRuleComDate : Date de communicabilité de la description.

repositoryOrgRegNumber : Identifiant du site de dépôt.

Mots-clés

keyword : {
    contentDescriptionId : texte non nul,
    content : texte,
    reference : texte,
    type : texte,
    accessRuleCode : texte,
    accessRuleDuration : durée,
    accessRuleStartDate : date,
    accessRuleComDate : date
}

contentDescriptionId : Identifiant de la description à laquelle est associé le mot-clé.

content : Contenu du mot-clé.

reference : Identifiant dans le référentiel utilisé (thésaurus mot-matière), quivi de l'identification du référentiel lui-même.

type : Type de mot-clé (personne, organisation, lieu...)

accessRuleCode : Identifiant de la règle de communicabilité/d'accès associée dans le référentiel du SAE pour le mot-clé.

accessRuleDuration : Durée de la non-communicabilité du mot-clé.

accessRuleStartDate : Date de départ du calcul pour la règle de communicabilité du mot-clé.

accessRuleComDate : Date de communicabilité du mot-clé.

Historique de conservation

custodialHistory : {
    contentDescriptionId : texte non nul,
    when : date,
    item : texte non nul
}

contentDescriptionId : Identifiant de la description à laquelle est associé l'historique.

when : Date de l'événement.

item : Description de l'événement.

Description des archives administratives PME/PMI

Elle se compose d'une entité "adminDescription".

adminDescription: {
    descriptionId : texte non nul,
    companyCode : texte,
    companyName : texte,
    thirdPartyCode : texte,
    thirdPartyName : texte,
    thirdPartyTaxIdentifier : texte,
    reference : texte,
    date : date,
    natureCode : texte,
    year : texte,
    quarter : texte,
    month : texte,
    relatedAgency : texte,
    employeeNumber : texte,
    employeeName : texte
}

Bordereaux d'échange

Les bordereau d'échange de données d'archive font aussi l'objet d'un enregistrement dans le système, car ils représentent les attestations des échanges et de l'activité des acteurs sur le système d'archivage.

message
 |_ [0..*] unitIdentifier
message : {
    messageId : texte non nul,
    schema : texte non nul,
    type : texte non nul,
    status : texte non nul,
    timestamp : date non nulle,
    reference : texte non nul,
    comment : texte non nul,
    userId : texte non nul,
    senderOrgRegNumber : texte non nul,
    senderOrgName : texte,
    recipientOrgRegNumber : texte non nul,
    recipientOrgName : texte,
    archivalAgreementReference : texte,
    replyCode : texte,
    operationDate : date,
    relatedReference : texte,
    requestReference : texte,
    authorizationReference : texte,
    authorizationReason : texte,
    authorizationRequesterOrgRegNumber : texte,
    derogation : booléen,
    dataObjectCount : entier,
    size : entier,
    active : booléen,
    archived : booléen
}
unitIdentifier : {
    messageId : texte non nul,
    objectClass : texte non nul,
    objectId : texte non nul,
}

Les journaux

Le journal du cycle de vie

Le journal du cycle de vie trace les événements ayant trait à la gestion, aux entrées et aux sorties des données d'archives dans le système.

Chaque événement comporte une série d'informations de base, auxquelles sont ajoutées des informations complémentaires dont le nombre et la nature sont adaptés au type d'événement.

event : {
    eventId : texte non nul,
    eventType : texte non nul,
    timestamp : date non nulle,
    accountId : texte non nul,
    objectClass : texte non nul,
    objectId : texte non nul,
    description : texte,
    ...
    <<autres informations>>
    ...
}

eventId  : Identifiant unique de l'événement dans le journal généré par le système.

eventType : Type de l'événement (voir plus bas).

timestamp : Date et heure, à la microseconde, de l'événement.

accountId : Identifiant du compte utilisateur ou du compte de service ayant déclenché l'événement.

objectClass : Type d'objet impacté par l'événement : archive, document, contenu numérique, bordereau d'échange, profil d'archive...

objectId : Identifiant unique de l'objet impacté.

description : Texte descriptif.

<<autres informations>>> : Information spécifique détaillées dans l'article consacré à la journalisation , qui utilise des champs parmi ceux détaillés dans le modèle et fourni dans les classes suivantes :

  • archive pour le registre des archives (identifiant et identifiants des acteurs),
  • document pour les documents d'archives,
  • digitalResource pour les contenus numériques stockés,
  • message pour les messages échangés

Le journal de l'application

Le journal de l'application trace les événements liés à l'exploitation du logiciel par les utilisateurs, pour ce qui concerne la sécurité, les actions réalisées ou les erreurs.

event : {
    eventId : texte non nul,
    eventDate: date non nulle,
    accountId : texte non nul,
    path : texte non nul,
    variables : texte,
    input: texte,
    info: texte,
    input: output
}


eventId  : Identifiant unique de l'événement dans le journal généré par le système.

eventDate: Date et heure, à la microseconde, de l'événement.

accountId : Identifiant du compte utilisateur ou du compte de service ayant déclenché l'événement.

path : Type de l'événement représenté par le chemin d'accès au service (fonction) appelé.

variables: Paramètres d'appel à la fonction.

input : Données transmises au système en entrée (*)

output : Données renvoyées par le système en sortie (*)

info : Informations collectées automatiquement par le système lors de l'écriture de la trace (**)

(*) La nature et la quantité des données d'entrée et de sortie inclues à la trace sont limitées par Maarch RM, ce pour plusieurs raisons:

  • elles peuvent être complexes et difficiles à représenter dans une ligne de journal. La plupart des logiciels qui produisent des traces n'y incluent en effet pas le détail des données échangées (serveur http, application de bureau..). Cependant, les informations très significatives peuvent être extraites et/ou les données transformées en texte compréhensible lorsque nécessaire ou possible.
  • leur écriture dans un fichier peut constituer une faille de sécurité ou présenter un problème de confidentialité. Maarch RM omet volontairement les informations de type mot de passe.

(**) Ces informations sont collectées automatiquement par le système. Aujourd'hui l'adresse internet du client de l'interface homme-machine est tracée, mais d'autres informations utiles pourront être ajoutées ultérieurement.

Les types d'événement tracés sont fournis en annexe de l'article concernant la journalisation.