Skip to content
An in-development framework for managing data migrations from previous versons to 4.x.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Migration Utilities Build Status

A framework to support migration of data from Fedora 3 to Fedora 4 repositories.


The main class (org.fcrepo.migration.Migrator) iterates over all of the fedora objects in a configured source (org.fcrepo.migration.ObjectSource) and handles them using the configured handler (org.fcrepo.migration.StreamingFedoraObjectHandler). The configuration is entirely contained within a Spring XML configuration file in src/main/resources/spring/migration-bean.xml.


A basic migration scenario is implemented that may serve as a starting point for your own migration from Fedora 3.x to Fedora 4.x.

How to use

Background work

  • Determine the disposition of your FOXML files:
    • Will you be migrating from exported (archive or migration context) FOXML?
      • If so, you will need all of the export FOXML in a known directory.
    • Will you be migrating from from a native fcrepo3 filesystem?
      • If so, fcrepo3 should not be running, and you will need to determine if you're using legacy or akubra storage
  • Determine your fcrepo4 url (ex: http://localhost:8080/rest/,

It is strongly recommended that you set up a local, empty Fedora 4 repository for testing migration of your resources because you can easily throw away the repository (or simply delete its data directory) when you're done testing, or if you wish to test a different migration configuration. One should wait until one is fully content with the representation of one's migrated content in Fedora 4 before migrating content into an active or production repository.

Getting started:

  1. Download and extract the distribution zip file or clone the repo and build from source
  • If you download a release, the jar file will be in the root of the directory.
  • If you build from source, the jar file will be in the target directory.
  1. Choose an example configuration file that best suits your needs
  1. Make necessary changes to the configuration to reflect your needs and local set up
  • Most importantly you'll want to set the appropriate fedora 4 URL to which you want to migrate the resources
  • Unless you just want to migrate the included test set, you'll also want to point the configuration to your fedora3 FOXML data files
  1. Run the migration scenario you have configured in the Spring XML configuration file:
java -jar migration-utils-{version}-driver.jar <relative-or-absolute-path-to-configuration-file>

Property Mappings

fcrepo3 Object properties to fcrepo4

fcrepo 3 fcrepo4 Example
PID fedora3model:PID† yul:328697
state fedoraaccess:objState Active
label fedora3model:label† Elvis Presley
createDate fcrepo:created 2015-03-16T20:11:06.683Z
lastModifiedDate fcrepo:lastModified 2015-03-16T20:11:06.683Z
ownerId fedora3model:ownerId† nruest

fcrepo3 Datastream properties to fcrepo4

fcrepo3 fcrepo4 Example
DSID dcterms:identifier OBJ
Label dcterms:title‡ ASC19109.tif
MIME Type ebucore:hasMimeType† image/tiff
State fedoraaccess:objState Active
Created fcrepo:created 2015-03-16T20:11:06.683Z
Versionable fedora:hasVersions‡ true
Format URI premis:formatDesignation‡ info:pronom/fmt/156
Alternate IDs dcterms:identifier‡
Access URL dcterms:identifier‡
Checksum cryptofunc:hashalgorithm cryptofunc:sha1 "c91342b705b15cb4f6ac5362cc6a47d9425aec86"

auditTrail mapping

fcrepo3 event fcrepo4 Event Type
addDatastream premis:ing‡
modifyDatastreamByReference audit:contentModification/metadataModification‡
modifyObject audit:resourceModification‡
modifyObject (checksum validation) premis:validation‡
modifyDatastreamByValue audit:contentModification/metadataModification‡
purgeDatastream audit:contentRemoval‡

† The fedora3model namespace is not a published namespace. It is a representation of the fcrepo3 namespace info:fedora/fedora-system:def/model.

‡ Not yet implemented

Note: All fcrepo3 DC (Dublin Core) datastream values are mapped as dcterms properties on the Object in fcrepo4. The same goes for any properties in the RELS-EXT and RELS-INT datastreams.

Additional Documentation


The migration-utils software is built with Maven 3 and requires either Java 8 or Java 11.

mvn clean install

The executable utility will be found in the target directory.


Current maintainers

You can’t perform that action at this time.