Digital team reviewing a controlled Optimizely DAM asset migration
Back to Blog
Posted by Mahdi
Optimizely CMS migration

Optimizely CMS 13 DAM Migration: Prevent Broken Assets

Migrate Optimizely CMS 12 DAM references to CMS 13 safely. Prepare Graph, run the migration job, verify assets and plan recovery before cutover.

Optimizely CMS 13.3 now includes a scheduled job to convert legacy Digital Asset Management references from CMS 12 into the Graph-backed format used by CMS 13. This matters because an application can complete its code upgrade and still show broken or empty images, videos and files in the editor or on the live website when old references remain.

Optimizely published the dedicated migration procedure on 6 October 2026. It is timely for organisations moving to CMS 13 because DAM is no longer only a picker or media-library concern: it sits inside the content delivery path, editorial workflow and governance model. A failed or incomplete conversion can affect campaign pages, product content, downloads, rich text, translations, historical versions and content restored from trash.

This guide is for Australian business owners, marketing and digital managers, CMS owners, developers and technology decision-makers planning or reviewing an Optimizely CMS 12-to-13 upgrade. It focuses on the operational evidence needed to migrate safely—not only the command that starts the job.

Why this Optimizely migration is trending now

CMS 13 changes how Optimizely DAM assets reach the website. CMS 12 content can still contain references to the older DAM content provider, while CMS 13 delivers DAM assets through External Sources indexed in Optimizely Graph. Optimizely's new CMS 13.3 migration job bridges those models.

The business issue is immediate rather than theoretical. Without conversion, editors may see empty asset fields and customers may encounter missing campaign imagery, documents or video. The affected reference may be buried in a nested block, a rich-text field, an older language version or an unpublished draft, so checking a few visible pages is not enough.

The release also removes a common upgrade ambiguity. Teams now have a supported migration mechanism and a published set of prerequisites, but they still need to decide when to run it, how to prove coverage, what recovery point to preserve and who signs off before production.

Broken assets are more than a visual defect

Map the customer, editorial and operational consequences before treating the work as a background data task.

Customer journeys

Missing product media, campaign images, videos or downloads can weaken conversion, trust and accessibility.

Editorial workflow

Empty asset fields can block preview, approval, localisation and scheduled campaign work.

Search and delivery

Graph-backed frontends and APIs need references that resolve to the expected asset types, URLs and renditions.

Historic content

Old versions, drafts and trash matter because teams may compare, republish or restore them later.

Governance

Asset tracking, ownership and usage evidence depend on the new DAM relationship being complete.

Recovery

In-place updates and cleanup make a tested backup and restoration plan part of the release, not an optional extra.

Controlled workflow for migrating Optimizely DAM references from CMS 12 to CMS 13
Migration workflow

Move references only after Graph is ready

The safe sequence is inventory, synchronise, back up, migrate, verify, clean up and monitor—with evidence at each gate.

First confirm whether the site is affected

The migration is relevant when a CMS 12 implementation used the Optimizely DAM integration and stored DAM references in content that is moving to CMS 13. Do not assume every media item is affected. Locally uploaded CMS media and external assets can follow different paths.

Build an inventory before changing anything:

  • the CMS 12 and target CMS 13 versions, environments and deployment owners;
  • the DAM or CMP instance, asset types and Graph instance connected to the target;
  • content properties that can contain DAM references, including rich text and nested blocks;
  • languages, sites, brands, applications and content branches in scope;
  • frontends and APIs that render the assets, including headless and server-rendered paths;
  • scheduled jobs, exports, feeds, search indexes and mobile applications that consume asset data;
  • the number of references and content versions expected before migration.

Include content outside the obvious page tree. Optimizely says the job processes published items, drafts, old versions, all languages and trash. That breadth protects future restores and republication, but it also means the test dataset and run-time estimate need to represent the full repository.

Meet every prerequisite before the first run

Optimizely's checklist is deliberately strict. The target must run CMS 13.3 or later, DAM features must be activated, and assets must have finished synchronising from CMP into Optimizely Graph. The required Graph content sources for images, videos and files should exist, CMP credentials should be configured, the DAM tracking job should complete without errors, and a full database backup should be available.

GateEvidence to keepWhy it matters
CMS package baselineDeployed version and package lock or bill of materialsThe migration capability is tied to CMS 13.3 or later.
DAM activationConfigured instance and enabled asset typesThe editor and asset tracking need the intended DAM connection.
Graph readinessCompleted sync, available content sources and sample resolved assetsConverted references are useful only if the new source can resolve them.
CMP accessCredential test and least-privilege ownerReference conversion can continue without credentials, but cleanup will be skipped.
Tracking healthSuccessful DAM Tracking Assets job resultIt proves the CMS can communicate with CMP before the one-off job starts.
Recovery pointBackup identifier, completion time and restore procedureThe job updates versions in place and cannot be undone from the admin UI.

Treat these as release gates. A green application build does not prove that Graph contains the right assets or that the editorial experience can use them.

Rehearse with production-shaped content

Optimizely recommends staging and regression testing for CMS 13 breaking changes. For DAM migration, a thin developer database is especially risky because it may not contain the old versions, translations, rich text, deep block structures and deleted content that expose edge cases.

  1. Create a current recovery point. Export or copy the database using the process appropriate to the hosting model, and record how it will be restored. Optimizely notes that DXP database export and import can take hours and, in extreme cases, days, so lead time belongs in the release schedule.
  2. Use representative content. Include high-value pages, complex ContentAreas, rich text, local blocks, block lists, documents, videos, renditions, multiple languages, drafts and trash.
  3. Capture the baseline. Record reference counts, representative page screenshots, Graph responses, asset identifiers, broken-reference totals and tracking-job results.
  4. Run the same build and configuration. The rehearsal should use the CMS packages, Graph connection, DAM activation, credentials and frontend code planned for production.
  5. Measure duration and load. The migration scans content versions. Record time, resource use, log volume and any effect on editors or background jobs.

The goal is a repeatable runbook with expected counts and decision points. If the rehearsal result cannot be explained, production is not ready.

Run the CMS 13.3 migration as a controlled release

The technical mechanism is straightforward: add the EPiServer.Cms.DamMigration package at an appropriate CMS 13.3-or-later version, register the DAM migration services, configure the CMP client, enable Optimizely:Cms:DamMigration:Enabled, and deploy the tested build.

Then use CMS Admin > Scheduled Jobs:

  1. run Optimizely DAM Tracking Assets and confirm it completes without errors;
  2. open Optimizely DAM Legacy Asset Migration;
  3. start the job inside the approved change window;
  4. monitor job history and application logs until it completes or stops;
  5. record the counts of resolved DAM assets, patched CMS versions, cleanup results and failures.

Do not paste secrets into tickets, chat or screenshots. Store CMP credentials through the normal deployment secret mechanism, separate them by environment and limit access to the people and services that need it.

The job updates the legacy reference, walks content and then removes old tracking and mapping records. Those are different outcomes. A message that references were converted but cleanup was skipped should be recorded as partial completion, with an owner and next step.

Verify the migration at four levels

A successful scheduled-job message is necessary, but it is not sufficient. Test the stored data, the editorial interface, the delivery layer and the customer experience.

LevelMinimum checksEvidence
Reference dataExpected totals migrated; failures explained; drafts, versions, languages and trash includedJob history, logs and before-versus-after counts
Editorial experienceExisting assets display; picker opens; replacements save; preview works; usage is visibleRole-based acceptance results and representative screenshots
Graph and frontendAsset types resolve; URLs and renditions load; alt text and metadata are correct; caches refreshGraph query assertions, HTTP checks and page tests
Business journeysCampaign pages, product content, downloads, video, search, forms and localisation remain usableEnd-to-end test results signed by content and business owners

Choose test cases by risk, not convenience. Prioritise revenue pages, current campaigns, regulated documents, customer downloads, high-traffic templates and content with complex nesting. Include a restore-from-trash test in the rehearsal environment because the job intentionally migrates trash to prevent restored content from pointing at deleted legacy mappings.

Handle stopped runs and partial cleanup deliberately

Optimizely says the migration can be run more than once. References already converted are skipped, and work completed before a stop is retained. That makes the job resumable, but not consequence-free.

When a run stops, preserve the job message and logs before restarting. Separate failures into at least four groups:

  • Unresolved reference: the legacy identity could not be mapped to a Graph-backed asset.
  • Content update failure: the reference was identified but a content version could not be patched.
  • Cleanup skipped: reference changes remain, but old CMP tracking or mapping records were not removed.
  • Delivery defect: data migrated, but the editor, Graph query or frontend still cannot render the expected asset.

Optimizely identifies missing CMP credentials, external content-provider items, authentication errors and excessive rate-limit errors as cleanup stop conditions. Do not label the entire migration complete because visible production pages look correct. Reconcile every failure or document why the remaining record must stay.

Be precise about rollback

The CMS 13.3 job updates content versions in place and Optimizely says it cannot be undone from the admin interface. A rollback therefore needs more than redeploying the previous application package.

Define the recovery decision before production:

  • what failure rate or customer impact triggers a stop;
  • whether a resumable fix is safer than restoring the database;
  • which application, database, Graph, cache and integration states must be aligned after recovery;
  • how new editorial changes made during the window will be preserved or replayed;
  • who can authorise restore, how long restore takes and what customer communication is required.

Optimizely's DXP documentation describes database export to a bacpac, but teams should validate the recovery mechanism for their own hosting arrangement and environment. A backup identifier is not proof of recovery. Record a tested restore procedure, responsible people, credentials, timing and post-restore validation.

Turn the migration guide into an owned release

A short plan gives content, development and operations teams time to prove readiness before production.

Week 1: inventory

Map DAM references, content shapes, languages, applications, Graph sources, owners and business-critical pages.

Week 1: prepare

Confirm CMS 13.3+, DAM activation, CMP credentials, tracking health, Graph synchronisation and recovery access.

Week 2: rehearse

Run against production-shaped content, measure duration and reconcile every migration and cleanup result.

Week 2: test

Validate editor, Graph, frontend, metadata, renditions, localisation, versions, trash and critical customer journeys.

Week 3: cut over

Use an approved window, named decision owner, monitored job and clear stop or restore thresholds.

Week 4: close

Disable the one-off job, retain tracking, review alerts, archive evidence and assign unresolved follow-up work.

Close the migration without weakening ongoing governance

After the result is accepted, Optimizely instructs teams to set Optimizely:Cms:DamMigration:Enabled back to false. This hides the one-off job so it is not started accidentally. Keep DAM tracking enabled so the recurring tracking job can continue reporting which assets are used.

Also add permanent checks:

  • alert on failed DAM tracking and Graph synchronisation jobs;
  • monitor broken asset responses and missing rendition URLs from outside the CMS;
  • include asset-field, rich-text and locale regression cases in future CMS releases;
  • record the Graph content sources and DAM instance as managed dependencies;
  • review access to CMP credentials and rotate them under the organisation's secret policy;
  • retain migration counts, approvals and test evidence with the upgrade record.

CMS upgrades are not complete when the application starts. They are complete when editors can work, customers receive the intended experience, operational signals are healthy and the team can explain how the result was verified.

Questions to ask your Optimizely partner

  • Which CMS 12 content properties and applications contain legacy DAM references?
  • Can you show that every required asset type has finished synchronising into the intended Graph instance?
  • What before-and-after counts will prove that drafts, versions, languages, rich text, blocks and trash were covered?
  • Has the migration been rehearsed against production-shaped data using the production package versions and configuration?
  • How long did the rehearsal take, and what load or editor impact was observed?
  • Which failures are safe to retry, and which require a database restore?
  • How will editorial changes made during the migration window be handled if recovery is required?
  • Which Graph queries, frontends and business journeys are included in acceptance testing?
  • Who signs off the editor experience, customer experience, cleanup result and ongoing monitoring?
  • What will be disabled, retained and monitored after the one-off job is complete?

A strong answer includes an inventory, baseline counts, job evidence, test results and named owners. A generic statement that the migration job completed is not enough for a business-critical website.

Optimizely DAM migration FAQ

CMS 13 asset migration questions

Optimizely upgrade support

Protect content and assets through your CMS 13 migration

VaniTech can inventory legacy DAM references, prepare Graph and CMS 13, rehearse the migration, test editor and customer journeys, and provide ongoing Optimizely support.