Appearance
To apply PREMIS well, record who did what to which object, when, and with what result — consistently, for every preservation action. PREMIS (PREservation Metadata: Implementation Strategies) models this with four entities: Objects, Events, Agents and Rights. The best-practice core is disciplined event logging plus fixity. Below is a working checklist and concrete XML so your preservation history stays auditable years later.
What problem does PREMIS actually solve?
A digital object you cannot account for is a liability. PREMIS answers the audit question: can you prove this file has not silently changed, and document every transformation it has undergone? It records the history an OAIS-compliant repository needs — ingestion, fixity verification, format migration — so that in ten years you can show a chain of custody, not just a file.
What are the four PREMIS entities?
| Entity | Answers | Typical content |
|---|---|---|
| Object | What is preserved? | File, representation, bitstream; format, size, fixity |
| Event | What happened? | Ingest, fixity check, migration; date, outcome |
| Agent | Who or what did it? | Person, organisation, software (with version) |
| Rights | What may be done? | Licences, statutes, permissions, restrictions |
Most operational metadata is Objects and Events; Rights is often handled in a dedicated rights schema instead.
How do you record fixity correctly?
Fixity is the heart of preservation. Store a checksum on the object and re-verify it on a schedule. In PREMIS:
xml
<premis:objectCharacteristics>
<premis:fixity>
<premis:messageDigestAlgorithm>SHA-256</premis:messageDigestAlgorithm>
<premis:messageDigest>9f86d081884c7d659a2feaa0c55ad015a...</premis:messageDigest>
<premis:messageDigestOriginator>sha256sum 9.4</premis:messageDigestOriginator>
</premis:fixity>
<premis:size>4823551</premis:size>
<premis:format>
<premis:formatDesignation>
<premis:formatName>image/tiff</premis:formatName>
</premis:formatDesignation>
</premis:format>
</premis:objectCharacteristics>Best practice: prefer SHA-256 over MD5 for new work, store the algorithm name alongside the digest, and never overwrite a previous fixity value — append a new check as an event.
How do you log a preservation event?
Every action gets an event with a type, date, detail, outcome, and a link to the agent that performed it:
xml
<premis:event>
<premis:eventType>fixity check</premis:eventType>
<premis:eventDateTime>2025-03-09T08:14:22Z</premis:eventDateTime>
<premis:eventDetailInformation>
<premis:eventDetail>SHA-256 verified against ingest manifest</premis:eventDetail>
</premis:eventDetailInformation>
<premis:eventOutcomeInformation>
<premis:eventOutcome>success</premis:eventOutcome>
</premis:eventOutcomeInformation>
<premis:linkingAgentIdentifier>
<premis:linkingAgentIdentifierValue>archivematica-1.16</premis:linkingAgentIdentifierValue>
</premis:linkingAgentIdentifier>
</premis:event>The rule of thumb: if it could affect the integrity or renderability of the object, it is an event.
Which events should you always capture?
A defensible minimum set:
- Ingestion — object entered the repository.
- Message digest calculation — first checksum recorded.
- Fixity check — each scheduled re-verification (and its result).
- Virus check — scanner name, version, outcome.
- Format identification — via DROID/Siegfried, with the PUID recorded.
- Normalisation / migration — old and new format, both as related objects.
Do you need to hand-write PREMIS?
Rarely. Archivematica, RODA and Preservica generate PREMIS automatically and embed it in a METS wrapper. Your job is to understand and review what they emit, set sensible policies (which algorithm, how often to check fixity), and spot-check that events carry agents and outcomes. Hand-authoring is for small bespoke collections or for learning.
What are the best-practice pitfalls to avoid?
- Events without agents. "A migration happened" with no agent is unaccountable; always link the software and its version.
- Outcome-free events. Record
success/fail, not just that a check ran. - MD5 for new collections. Use SHA-256; reserve MD5 only for matching legacy manifests.
- Discarding old objects on migration. Keep the original and link it via
relationship. - Untimestamped or local-time events. Use UTC ISO 8601 timestamps so chronology is unambiguous.
Key Takeaways
- PREMIS records who did what to which object, when, with what outcome.
- Four entities: Object, Event, Agent, Rights — operational work is mostly Objects and Events.
- Store fixity (prefer SHA-256) and re-verify on a schedule, logging each check as an event.
- Every event needs a type, UTC timestamp, outcome and linked agent with version.
- Capture ingest, digest, fixity, virus scan, format ID and migration events at minimum.
- Tools (Archivematica, Preservica, RODA) emit PREMIS automatically — review, don't hand-roll, at scale.
- PREMIS 3.0 is current and usually lives inside a METS
amdSec.
Frequently Asked Questions
What are the four PREMIS entities?
PREMIS models preservation around four entities: Object (the thing preserved), Event (something that happened to it), Agent (who or what did it), and Rights (permissions and restrictions). Most day-to-day work is Objects and Events.
When should I record a PREMIS event?
Record an event for any action that changes or verifies an object's preservation state: ingestion, fixity check, virus scan, format migration, normalisation and metadata extraction. Each event should name its agent and outcome.
Do I have to write PREMIS by hand?
No. Tools like Archivematica, RODA and Preservica emit PREMIS automatically as part of their ingest pipeline. Hand-authoring is mainly for small collections or for understanding what the tools generate.
What is the difference between PREMIS and METS?
PREMIS describes preservation facts (events, fixity, agents); METS is a container that packages descriptive, administrative and structural metadata together. PREMIS is commonly embedded inside a METS amdSec.
How do I record a checksum in PREMIS?
Use objectCharacteristics with a fixity element containing messageDigestAlgorithm (e.g. SHA-256) and messageDigest (the hash value). Re-verify it on a schedule and log each check as an event.
Is PREMIS still current?
Yes. PREMIS 3.0 is the current version, maintained by the Library of Congress PREMIS Editorial Committee, and it remains the de facto standard for preservation metadata.