This guide is for DAM managers, metadata specialists and integrators who have to move assets from one system to another: a legacy DAM, a file share, or another vendor's platform. It covers the decisions that decide whether the move works: what to migrate at all, how to map metadata, how to keep identifiers, links and rights intact, how to prove that every file arrived unchanged, and when it is safe to switch the old system off. It does not recommend platforms or migration service providers.
Key takeaways
- A migration is a data project, a business-change project and a technology project at once. Run it as a project with an owner from the business, not as a file copy handled by IT alone.
- Write down how people need to find, open, use, understand and trust the assets before choosing tools. Those needs become the acceptance criteria you test against.
- Not everything should move. Decide per collection whether to migrate, archive, leave in place for a while, or dispose of it.
- Map metadata field by field and value by value in a documented crosswalk. Fields with the same label can mean different things, and some values will have no home in the target.
- Keep every legacy ID, original file name and published URL, and build an old-to-new identifier map. Redirect published links instead of letting them break.
- Prove integrity with checksums you compute yourself at the source. Do not rely only on hashes reported by either platform.
- Plan the load around the target API's rate limits and bulk paths. Make it idempotent so that a failed batch can be re-run without creating duplicates.
- Run pilots on representative data outside production, rehearse the cut-over with a rollback plan, and keep the old system read-only until the new one has passed acceptance testing.
Why it matters
Moving information from one data structure and application to another can lose content, context or access, so that people can no longer find, open, work with, understand or trust it R1. The UK National Archives, writing about records systems, gives failure modes that apply directly to a DAM:
- Exports are incomplete. It is rare for a system's export to capture everything it holds, and the target's import may not accept everything either. Files can become separated from their metadata or from related objects R1.
- Metadata changes meaning or value. Fields that look alike, such as "date" or "author", may be used differently in the two systems. Dates are especially at risk: the creation date can be reset to the migration date, and partial dates can be blanked or padded with invented days R1.
- Relationships do not travel. Versions, renditions, attachments, shortcuts and links between items are managed internally and there is no standard way to export them R1.
- Access controls are lost. If permissions are not replicated, people can end up with access they should not have R1.
In a DAM these failures show up as assets nobody can find, campaign images with no rights information, broken images on websites and in emails, and integrations that fail silently because an ID changed. Practitioners consistently report that migration effort is underestimated and grows with the age of the source system R15 Unverified (2014 article; the observation is qualitative). No reliable, freely available industry statistics on migration duration or failure rates were found, so none are quoted here.
Migrations also expose earlier schema debt. Every overloaded field, free-text keyword and undocumented convention has to be interpreted during mapping. This is one reason the metadata schema & governance guide recommends documenting fields before you need to move them.
Core concepts
| Term | Meaning in this guide |
|---|---|
| Source / target | The system assets leave and the system they move to. |
| Inventory | A measured description of what the source holds: counts, sizes, formats, fields and how full they are, relationships, permissions, integrations. |
| Crosswalk | A table that maps each source element to its target equivalent; the "visual product of mapping" R3. In a DAM it maps fields, values of controlled vocabularies, statuses and permissions to the target metadata schema. |
| Identifier map | A table of old asset ID → new asset ID, kept permanently after the migration. |
| Fixity | Evidence that a file has not changed, checked by comparing checksums before and after transfer R7. |
| Pilot (trial) migration | An end-to-end run on a representative subset, outside production. |
| Delta | Assets created or changed in the source after the main extract and before cut-over. |
| Cut-over | The moment users and integrations switch to the target. It may be a single event ("big bang") or a phased or rolling switch. |
| Rollback | A tested way back to the pre-migration state if the cut-over fails R1. |
| Acceptance criteria | Measurable conditions, agreed in advance, that the migrated data must meet R1 R2. |
Recommended practices
1. Decide what to migrate, and whether to migrate at all
Migration is costly and risky, so confirm the business need first R1. For each collection, choose one route:
| Route | When it fits |
|---|---|
| Migrate | Assets in active use, or needed for reuse, rights evidence or brand history. |
| Archive elsewhere | Assets of lasting value but rarely used. They can go to a cheaper store with reduced features R1. |
| Leave in place for a limited period | Short retention left and little use; supporting the old system briefly may cost less than moving R1. |
| Dispose | Assets past retention, superseded or duplicated. Disposal is preferable to migrating information nobody needs R1. |
Typical candidates for disposal in a DAM are exact duplicates (found by checksum, see duplicate detection), expired assets with no archival value, abandoned uploads and orphaned renditions. Decide this with the business owners and record it; "we didn't migrate it" must be a decision, not an accident.
2. Turn user needs into acceptance criteria before choosing a method
The National Archives frames requirements around information, not features: what must remain findable, openable, workable, understandable and trustworthy R1. In DAM terms:
- Found: which fields, facets, collections and folder paths do people actually search and browse with?
- Opened: which formats and renditions must be viewable? Are there formats the target cannot accept or preview?
- Worked with: downloads, crops, templates, sharing links, integrations to CMS, PIM or creative tools.
- Understood: descriptions, captions, campaign and product context, version history.
- Trusted: rights and licences, approval status, provenance, audit trail.
Separate critical requirements from desirable ones, because systems rarely match feature for feature R1. If a supplier carries out the migration, agree acceptance criteria and documented exceptions with them in advance, and ask for the schema mapping and a proof of concept before the live run R1.
3. Build the inventory from data, not from memory
Export or query the source and measure it. As a minimum, record:
- Asset counts and total size by file type, plus the largest files (target upload limits matter).
- File formats, identified with a profiling tool rather than by extension. The National Archives' free DROID tool profiles formats and helps find duplicates R1.
- Every metadata field with its type, number of filled values, number of distinct values and examples of odd values.
- Vocabularies and taxonomies, versions, renditions, derivatives, collections, saved searches, comments and annotations.
- Users, groups, roles and permission rules, including rules driven by metadata.
- Rights, expiry and embargo data, model and property releases, and where these documents live.
- Integrations and published URLs: which websites, apps and feeds embed or call the source.
- Audit logs and usage statistics you may need to keep.
Stanford Libraries, migrating nearly 5 million repository objects, built reporting tools on a cached copy of the source to find missing MIME types, missing dimensions and unusual values before mapping R4. The same approach scales down: a spreadsheet of field fill rates and value counts will show most problems before they reach the target. Also assess the source's export capabilities (schema, volumes, speed) and the target's import capabilities R2.
4. Map metadata in a documented crosswalk
Write a crosswalk at field level and, for controlled fields, at value level. Getty's Introduction to Metadata lists the usual mismatches R3:
| Mismatch | DAM example | Typical handling |
|---|---|---|
| One field split into several (or several merged) | "Credit" in the source holds photographer and agency | Split with rules; keep the raw value in a legacy field |
| No exact equivalent | Source "Status: Archived-Internal" has no target status | Map to the nearest value and flag it, or add a value |
| No target element | Source has "Shoot brief ref" | Create a field, map into a notes field, or decide to drop it |
| Hierarchy vs flat | Nested keyword tree into a flat tag list | Keep full paths or migrate the tree as a taxonomy |
Other rules that save rework:
- Check meaning, not labels. Look at how the target uses and displays each field before mapping into it R1.
- Fix date formats explicitly. Decide what happens to partial dates, time zones and empty dates, and test that the import does not overwrite them R1. Normalising to
YYYY-MM-DDbefore import was a step in Oregon State University's journal migration R5. - Carry the past in read-only fields. Keep the source ID, the source system name, the original file name (see file naming conventions) and, where helpful, the source folder path. The folder path often carries context that is not in any field R1.
- Expect embedded and DAM-only metadata to differ. Files may carry XMP or IPTC values that are older or newer than the values in the source database. Decide which one wins for each field, and whether the target should re-read embedded metadata at ingest.
- Watch the exchange format. CSV has no single formal specification, so quoting, delimiters and character encoding vary between tools R12. State the encoding (UTF-8) and the delimiter for multi-value fields in the crosswalk, and test with values that contain commas, quotes, line breaks and accented characters.
5. Clean before you move, not during the move
Data quality problems should be fixed before migration to reduce cost and risk R1. Clean in the source, or in an intermediate staging copy, so that you can re-run the extract. Normalise vocabularies, merge synonyms, fix obvious typos and fill required fields that the target will enforce. Two limits apply:
- Do not redesign the whole information model during the migration. Agree the target schema, freeze it for the duration and log any change requests for later.
- Do not let cleanup hide information. Keep raw legacy values where a transformation loses detail, as Oregon State did when it moved rich issue-level metadata into a description field because the target had no equivalent R5.
6. Preserve identity: IDs, links and relationships
The target will assign its own IDs. Plan for what points at the old ones.
- Identifier map. Export a permanent old-ID → new-ID table. Integrations, analytics, archived campaign records and support tickets will need it.
- Published URLs. Public links, embeds and CDN URLs are used in places you do not control. "Cool URIs don't change" argues that a URI should outlive the system behind it and should not contain things that change, such as file extensions, status or organisational structure R9 Unverified (1998 document; the principle is still the reference). Where URLs must change, answer old URLs with permanent redirects:
301or308(the latter keeps the request method) R10. Use410 Gonefor assets you deliberately retired R10. Boston College kept its legacy repository identifiers in new persistent links resolved through a handle server, so that old references kept working R6. - Relationships. List the relationship types the source holds (versions, renditions, derivatives, parent-child, related assets, collections) and test each one after import. Check that version history stays attached to the current version R1. For renditions, decide whether to migrate them or regenerate them in the target; regeneration is often simpler R1, except for hand-made crops or approved variants that cannot be recreated.
7. Carry rights, restrictions and permissions explicitly
Rights data is the part of a migration where a mapping mistake creates legal exposure. Treat it as its own workstream:
- Map every usage rights field, expiry date, embargo, territory and channel restriction, and the link to release forms and licences. See Digital rights & usage management for the underlying model.
- Map permissions and roles, including any that depend on metadata. If sensitivity or restriction markers cannot be mapped, restricted assets may become visible to everyone R1.
- Test with deliberately restricted, expired and embargoed sample assets, logged in as users of each role.
- Decide what happens to audit trails. If the target cannot import them, keep them in an accessible store outside the DAM for as long as you may need them as evidence R1.
8. Move files with integrity checks
- Compute checksums at the source for every original before transfer, or record those that the source supplies, and verify them at the target. The Digital Preservation Coalition notes that MD5 is enough to detect accidental damage, while SHA-256 gives stronger protection against deliberate alteration R7.
- Package large transfers with manifests. BagIt (RFC 8493) is a simple folder layout in which a manifest lists every payload file with its checksum. A bag is "valid" only when it is complete and every checksum verifies R8. Even if you do not adopt BagIt, copy the idea: a manifest per batch, verified on arrival.
- Do not rely only on platform hashes. DAM APIs differ: some expose an MD5 or CRC32, some none, and some change the value after metadata edits (see How DAM platforms support this). If the target or your tooling writes metadata into files at ingest, the file bytes, and therefore the checksum, change. In that case, keep the pre-ingest checksum as a field and document why the values differ.
- Record what happened. The PREMIS preservation metadata standard, maintained at the Library of Congress, defines event types such as migration, fixity check, filename change and metadata modification R13. A DAM does not need full PREMIS, but a migration log per asset (extracted, transferred, verified, imported, with dates) is what lets you answer "what happened to this file?" years later.
9. Engineer the load for the target's API and bulk paths
Most migrations into SaaS DAMs end up as API calls. Plan for:
- Rate limits. HTTP
429 Too Many Requestssignals rate limiting and may carry aRetry-Afterheader saying how long to wait R11. Throttle the loader, honourRetry-After, back off exponentially and log every rejected call. Check whether limits are per key, per user, per IP address or per tenant. A tenant-wide limit means the migration competes with live integrations, so schedule bulk loads accordingly. - The vendor's bulk path. Some platforms provide a bulk import, fetch or migration route that is preferred over the everyday upload API for large volumes. Use it where it exists and still validate its output.
- Pagination on export. Extract with stable sort orders or cursors, and check that the exported count matches the source count, so that pages are not skipped or duplicated.
- Idempotency. Key each import on the source ID (stored in a target field), so that a re-run updates or skips rather than creating duplicates. Fotoware describes migration as importing the binaries with new primary keys and then patching metadata onto them, which only works if the link between old and new keys is kept R17.
- Large files. Use the target's chunked or resumable upload where available, and record failures for retry rather than stopping the whole batch.
10. Pilot, then rehearse
- Develop and test the process outside the production system R2.
- Pilot on representative data and representative volumes R2: every file type, the oldest and newest assets, the largest files, assets with many versions, restricted assets and assets with unusual characters in names or values. Oregon State tested on three issues chosen from different periods before migrating the whole run R5.
- Test the mapping against real records, not only against the crosswalk. Stanford found that unit tests alone were insufficient because the data was so varied, and ran round-trip tests against cached real objects, in the end against all of them R4.
- Repeat the pilot until the reconciliation report (practice 12) is clean, then run a full rehearsal to measure the real duration of each step.
11. Plan the cut-over and the rollback
Choose the cut-over model deliberately:
| Model | How it works | Watch out for |
|---|---|---|
| Big bang | Freeze the source, migrate, switch everyone at once | Long freeze for large libraries; all risk on one date |
| Phased | Move by collection, brand or region | Users working in two systems; cross-collection links |
| Rolling / parallel | Run both systems, write new data to both, read from the new one first | More engineering; needs a clear end date |
Stanford ran a rolling migration: all creates and updates went to both the old and the new datastore, reads preferred the new one and fell back to the old, and a parallelised script moved the rest, over 4 million objects in under a week R4. Whatever the model:
- Announce a content freeze or a delta process for changes made after the main extract.
- Have a tested rollback plan in case the migration fails R1, and agree in advance who decides to roll back, and by when.
- Switch integrations and redirects in a planned order, and keep a list of every system that was repointed.
12. Validate, accept, then decommission
Validation should compare the source and the target, not just look at the target:
- Counts: assets, versions, renditions and collections, by type and collection.
- Fixity: 100% of originals verified against source checksums.
- Metadata: fill rates per field before and after; sampled field-by-field comparisons, with extra samples for dates, rights and multi-value fields.
- Access: role-based tests on restricted and embargoed assets.
- Findability: the most frequent searches and browse paths return what users expect. Fotoware suggests checking the top use cases with employees before go-live R17.
- Links: a sample of published URLs and embeds resolves or redirects correctly.
Involve users in acceptance testing R1. When results fall short, the National Archives' checklist offers three responses: refine and re-run the migration, fix the data in the target, or accept low-impact issues and document them R2. Only then dispose of the source data and decommission the system R1 R2. Keep the source read-only for a defined, limited period if some information could not be migrated, update information registers and ownership, and archive the crosswalk, identifier map, manifests and migration log alongside the target R1.
Common pitfalls
- Treating migration as a file copy. Files arrive; metadata, relationships and permissions do not. The National Archives warns against IT-led migrations that do not engage the business, and against business-led ones that ignore technical constraints R1.
- Mapping by label. Two fields called "Date" or "Owner" can mean different things R1.
- Losing the old IDs. Without an identifier map, every downstream system that stored a source ID breaks, and nobody can trace an asset back.
- Breaking published links. Images in emails, PDFs and partner sites point at the old URLs. Plan redirects or keep URLs stable R9 R10.
- Dates reset to the migration date. Check created, captured and modified dates explicitly in the test plan R1.
- Restricted assets becoming public. Permissions and restriction metadata were not mapped or tested R1.
- Trusting the vendor hash. Platform checksums may be missing, use different algorithms, or change after metadata edits. Compute your own.
- Ignoring rate limits. A loader that ignores
429responses can block itself or starve production integrations R11. - Redesigning everything mid-flight. A changing target schema invalidates the crosswalk and the tests. Freeze it.
- Decommissioning too early. Switching off the source before acceptance testing removes the rollback option R1 R2.
Checklist
Copy and adapt:
How DAM platforms support this
The wiki's API pages (rate limits, uploads, data model, limits & quirks) and the Ingestion & storage sections of the Features pages hold the facts that shape a migration plan. The examples below show the kind of difference to look for; they are not a ranking, and they cover only a few of the platforms documented on the wiki. Check current behaviour through each solution's sources page.
| Migration concern | Examples on the wiki |
|---|---|
| Rate-limit scope affects loader design | Bynder API: a request budget per public IP address, with a temporary block once it is exceeded. Aprimo API: a limit per environment shared by all integrations of the tenant, so a bulk load competes with live traffic. |
| Checksums exposed by the API, or not | MediaValet API returns an MD5 in the asset's file block; Aprimo API records a CRC32 per file version; Brandfolder API documents no checksum field; Canto API exposes MD5 but its help centre warns the value can change after metadata-only edits. |
| Vendor-preferred bulk path | Sitecore Content Hub features: the upload API is meant for everyday uploads, and bulk work is pointed to fetch jobs or Excel import. Frontify API: the vendor's migration guidance keys each file on an external ID, with libraries created first. |
| URLs that change when assets move | Cloudinary API: in fixed-folder environments the folder is part of the public ID, so moving or renaming changes delivery URLs; its features page notes the vendor's advice to test such migrations in a non-production environment. |
Several vendors also describe assisted or paid migration offers on their features and integrations pages. The wiki records these as facts and does not evaluate them. For platform-level facts, see the comparison table. The guide Choosing a DAM: requirements & RFP covers import and export criteria.
Further reading
- The most complete free treatment of migration risk: requirements, export and import limits, metadata, relationships, access control, testing and decommissioning.
- A stage-by-stage project checklist, from initiation to decommissioning, with useful risk questions.
- A clear explanation of crosswalks and why mappings between schemas lose or blur information.
- Strategies for Digital Library MigrationFree accessEight strategies from a migration of nearly 5 million objects, including reports, round-trip mapping tests and a rolling migration.
- A small, well-documented example of a metadata-first pipeline with pilot batches and date normalisation.
- Fixity and checksumsFree accessWhen to generate and check checksums, and how MD5 and SHA-256 differ in purpose.
- RFC 8493 — The BagIt File Packaging FormatFree accessA simple, tool-supported way to move batches of files with checksum manifests.
- Levels of Digital PreservationFree access (CC BY-SA)A self-assessment matrix covering storage, fixity, security, metadata and file formats; useful for setting the integrity bar of a migration.
- Cool URIs don't changeFree accessOld but still the clearest argument for keeping public asset URLs stable across system changes.
- A DAM practitioner's view of inventory items and incremental extract-transform-load; dated, but the inventory list remains useful.
- How to execute a successful DAM migration project in 10 stepsFree accessVendor publicationA step list from goals to post-migration governance; supporting reading only.
- The 3 key steps for successful DAM content migrationFree accessVendor publicationA short description of audit, target structure and metadata mapping, including re-keying assets; supporting reading only.
Sources
| Id | Title | URL | Type | Accessed | Notes |
|---|---|---|---|---|---|
| R1 | The National Archives (UK) — Migrating information between records management systems | cdn.nationalarchives.gov.uk | Official | 2026-10-01 | June 2017, Open Government Licence. §3.1 six principles; §4.3 suppliers; §5.2–5.4 alternatives, scope, completeness; §6.2 export/import, data integrity (dates), data quality; §7 testing, roll-back, decommissioning; Appendix: metadata, file plan, versions/renditions, links, audit trails, access control, formats. Written for EDRMS/ECM/CMS; applied here by analogy to DAM |
| R2 | The National Archives (UK) — Project checklist for records management systems migration | cdn.nationalarchives.gov.uk | Official | 2026-10-01 | June 2017. Develop off-line; representative data and volumes; export/import capability assessment; three responses to failed tests; decommissioning |
| R3 | Getty Research Institute — Introduction to Metadata, 3rd ed., "Metadata Matters: Connecting People and Information" (M. S. Woodley, rev. M. Baca) | getty.edu | Third-party | 2026-10-01 | 2016. Crosswalk definition and typical mapping mismatches |
| R4 | Littman et al. — Strategies for Digital Library Migration, Code4Lib Journal 56 | journal.code4lib.org | Third-party | 2026-10-01 | 2023-04-21. Stanford Digital Repository (almost 5 million objects); reports, round-trip tests against cached real objects, rolling migration (over 4 million objects in under a week) |
| R5 | Key — An XML-Based Migration from Digital Commons to Open Journal Systems, Code4Lib Journal 52 | journal.code4lib.org | Third-party | 2026-10-01 | 2021-09-22. Oregon State University Libraries; pilot on three issues; date normalisation; granularity loss into description field |
| R6 | Mayo, Jazairi, Walker, Gaudreau — BC Digitized Collections: Towards a Microservices-based Solution to an Intractable Repository Problem, Code4Lib Journal 44 | journal.code4lib.org | Third-party | 2026-10-01 | 2019-05-06. Legacy PIDs reused in persistent links via a handle server |
| R7 | Digital Preservation Coalition — Digital Preservation Handbook: Fixity and checksums | dpconline.org | Third-party | 2026-10-01 | When to check fixity; MD5 vs SHA-256; tools. Typed for consistency with the wiki's other guides |
| R8 | RFC 8493 — The BagIt File Packaging Format (V1.0) | rfc-editor.org | Official | 2026-10-01 | IETF, October 2018, Informational. Payload manifests with checksums; complete vs valid bags; SHA-512 default |
| R9 | W3C — Cool URIs don't change (T. Berners-Lee) | w3.org | Official | 2026-10-01 | 1998; Unverified old, cited for the principle only |
| R10 | RFC 9110 — HTTP Semantics | rfc-editor.org | Official | 2026-10-01 | IETF, June 2022. §15.4.2 301, §15.4.9 308 (method preserved), §15.5.11 410 Gone |
| R11 | RFC 6585 — Additional HTTP Status Codes, §4 (429 Too Many Requests) | rfc-editor.org | Official | 2026-10-01 | IETF, April 2012. 429 and optional Retry-After |
| R12 | RFC 4180 — Common Format and MIME Type for CSV Files | rfc-editor.org | Official | 2026-10-01 | IETF, October 2005, Informational. "No formal specification" of CSV; quoting rules; charset parameter |
| R13 | Library of Congress — PREMIS Preservation Metadata Maintenance Activity; PREMIS event type vocabulary | loc.gov | Official | 2026-10-01 | PREMIS Data Dictionary 3.0; page updated 2026-08-11. Event types (migration, fixity check, filename change, metadata modification) read from id.loc.gov via its JSON serialisation (the HTML page returned 403 to automated fetching) |
| R14 | National Digital Stewardship Alliance — Levels of Digital Preservation | ndsa.org | Third-party | 2026-10-01 | Version 2.1, March 2026, CC BY-SA 4.0; matrix on OSF. Further reading only |
| R15 | DAM News — Planning and implementing digital asset migration (R. Windsor) | digitalassetmanagementnews.org | Third-party | 2026-10-01 | 2014-12-16; Unverified dated. Trade publication run by a DAM consultancy; no vendor sponsorship stated on the page. Qualitative observation on underestimated effort; inventory list |
| R16 | Wedia — How to execute a successful DAM migration project in 10 steps | wedia-group.com | Vendor | 2026-10-01 | Vendor publication, 2023-12-06 (updated 2025-11-08). Further reading only, not a basis for any recommendation |
| R17 | Fotoware — The 3 key steps for successful DAM content migration | fotoware.com | Vendor | 2026-10-01 | Vendor publication, 2026-05-28. Supporting source only (re-keying assets; top use-case checks) |