How to export your content from Optimizely CMS when the contract is ending
The built-in export packages carry content items, content types, categories, files and visitor groups in the .episerverdata format, but they do not carry permissions, so a full exit from Optimizely CMS also needs API extraction for anything the package leaves behind. A renewal, a licensing change or a data residency requirement is usually the trigger, and the first task is to inventory what the platform holds before any export runs. Ask your Optimizely contact and your administrators which CMS version you run (CMS 12, CMS 13 or the SaaS offering), because the export options, package contents and limits differ between them. Confirm the exact behavior against Optimizely's current documentation for that version, not against older guides or forum posts.
Plan on two extraction paths. The package route moves the content tree, content types, categories, media files and visitor group definitions into a file your team can keep under its own control, which is the starting point for a rebuild. Permissions, editor roles and workflow assignments do not come across, so someone must record who holds which access today and recreate it in the target system. Where the package does not cover a data set you need, such as published page versions, specific property values or media metadata, the content must be read through the platform's APIs and written to structured files. Decide early whether the linked-files option is needed for media, since that choice determines whether assets physically leave the source environment.
Run a test export against a copy of production before the contract decision is final. Compare item counts, a sample of multi-language pages, blocks and media references, and confirm that the files you need can be opened and read without Optimizely running. Record the results in a short exit log: what was exported, by which method, what was excluded and who signed off. If the exit is tied to a data residency rule, keep the export files, API output and access records inside the jurisdiction that rule requires. Scope this work in writing with a partner so the extraction, verification and evidence steps are agreed before any work starts.
Which Optimizely CMS export tools carry each content type
This table shows which content types the Optimizely CMS export package carries, how each one leaves the system, and the limits you should confirm before planning a migration. Read the rows as a checklist of what the package covers and what still needs an API extraction. The main takeaway is that the export package alone is rarely a complete migration source, so plan API extraction alongside it.
| Data type | Export method | Format | Known limits |
|---|---|---|---|
| Content items and pages | Export package created from the CMS editing interface | .episerverdata package file | Confirm maximum package size, item count and version history depth with Optimizely or test on a copy |
| Content types | Included in the same export package | .episerverdata package file | Confirm how page and block types are read on import, and test a representative sample |
| Categories | Included in the same export package | .episerverdata package file | Confirm whether category hierarchies and references survive import in your CMS version |
| Files and media | Included in the package, with the linked-files option | .episerverdata package file with linked file references | Confirm whether linked files are copied or referenced, and how large files are handled |
| Visitor groups | Included in the same export package | .episerverdata package file | Permissions do not survive import, and personalization rules must be rebuilt and tested on the target |
| Content reachable through content APIs | Read page by page through the content APIs | JSON responses | Confirm which endpoints, authentication and request limits apply to your version and hosting plan |
What an Optimizely export package does not carry and how to recover it
An Optimizely export package moves content structure and content, but several things depend on the source environment, the codebase or the storage behind the site. Each card below names one gap, the recovery step that closes it and the question to settle with your Optimizely partner or in a test import before cutover.
User and group permissions
Editor, administrator and group roles are tied to the Optimizely environment that defined them, so permissions do not survive import. Content can arrive with no owner or access rules, and editors may find nothing they are allowed to edit. Before exporting, record each role, group and its content access in a spreadsheet, then recreate them on the target and test one account per role. Ask your partner which accounts and groups the package references and whether identity provider mappings must be rebuilt.
Linked files and media references
With the linked-files option, the package carries references to media, and the files themselves must be copied separately from the source storage. A reference that points to a path missing on the target shows as a broken image or download. Copy the media folder or blob container, keep the original paths intact and check a sample of pages in a test import. Confirm with your partner which storage location the package expects and whether any file lives outside it.
Visitor groups and personalization rules
Visitor groups hold the criteria that decide which content a visitor sees, such as location, cookies or profile fields. Their logic is tied to the source platform, so the rules must be rebuilt on the target rather than assumed to run after import. Export each criterion into a table alongside the content it affects, rebuild each rule with the personalization tooling you choose, then test the same visitor profiles on both sites. Confirm with your partner which visitor group definitions the package includes.
Configuration and code outside the package
A content package covers content, content types, categories, files and visitor groups, but the site often depends on more than that. Custom property editors, initialization code, scheduled jobs, search indexes, redirect lists, language settings and form data may sit outside the package entirely. Inventory them from the codebase and admin screens before export, and assign each item an owner. Ask your partner for the exact package contents, then run a test import to see what arrives.
Why a migration to another CMS usually needs API extraction as well
A package is built for Optimizely to read back, so its structure reflects Optimizely's content model rather than the design of the platform you are moving to. That is fine for restoring a site inside Optimizely, but it means the package alone is rarely the right input for a different CMS. Plan a second extraction through the content APIs for the migration itself, and treat the package as a reference copy and a rollback point. Before you write any extraction code, confirm with your Optimizely partner or in your own environment which content API your version exposes, since SaaS, CMS 12 and CMS 13 differ in what they offer.
An API extraction captures what the package format does not map cleanly: the rendered, published state of each page, the references between content items, and the data your templates pull at runtime. Read published content only, and record the link targets, content references and media URLs in a form the new CMS can resolve. Do not assume that a reference in the package maps to the same identifier in the target. Build an ID map as you extract, so that redirects, internal links and block references can be rewritten after import.
The target platform sets its own delivery rules, and the extraction and the target design must agree on them. Umbraco's Content Delivery API, for example, is opt-in and has to be enabled in configuration, returns unpublished content for preview only when an API key is supplied, and serves protected content only when member authentication is enabled. If your extraction runs with an editor's key, you may capture drafts that should never reach the public site. Decide early which content is public, which is preview only and which requires login, and check each category against the target's documented behavior in the Umbraco Content Delivery API documentation.
Sequence for a complete Optimizely CMS export
This sequence turns one Optimizely CMS site into a set of separate outputs: an inventory, a package, a record of permissions and visitor groups, API extracts of published content, copied media and a tested import. No single export carries all of these, so each output needs its own check.
Inventory the site and its content types
Before exporting anything, list every page type, block type, media type, category, visitor group and language in use on the site. Record which content is published, which is in draft, and which pages are referenced by others. Ask your Optimizely partner or internal CMS administrator to confirm the CMS version and any add-ons in use, since these affect what can be exported. The output is a written inventory that you will compare against each later step. It is done when every content type has a named owner and a target equivalent in the new CMS, or a note that no equivalent exists yet.
Export the package from a non-production instance
Run the export from a staging or test instance first, using the Optimizely export feature for content items, content types, categories, files and visitor groups. The export is written in the .episerverdata format. Store the file in a location with access controls, since it contains page content and may contain personal data. Keep a copy of the export log. The output is one package file and a log. It is done when the package opens and its item counts match the inventory from the previous step.
Record permissions and visitor group rules separately
Assume that editor roles, user accounts and access permissions will not survive an import into another system. Document each role, the sections of the site it can edit and the users assigned to it. For visitor groups, write down the criteria that define each group and which content or personalized blocks depend on it. The export carries visitor groups, but the rules must be checked against the target platform's own access and personalization model. The output is a permissions register and a visitor group rule sheet. It is done when an administrator has signed off on both documents.
Run API extraction for published content and references
Because a package is designed for Optimizely, it is usually not enough for moving content to another CMS. Use the Optimizely content APIs to read published content, language versions, content references and block relationships as structured data. Compare the results with the inventory to confirm that every published page and block has been captured. Keep the raw JSON files alongside the package. The output is a set of structured extracts. It is done when a sample of pages with nested blocks and cross-references can be rebuilt from the extracts alone.
Copy media files and confirm link targets
Copy every media file referenced by the content, including images, documents and linked files, into storage you control. Where the package includes files as a linked option, check that the references still resolve after the copy. Build a list of asset paths and their new locations so that the content migration can rewrite them. Confirm that file names, sizes and checksums match the source where your tooling supports it. The output is a media manifest mapping old to new paths. It is done when a random sample of assets opens correctly from the new storage location.
Confirm each step with a test import
Import the package and the extracts into a test instance of the target CMS, then compare the results with the inventory, the permissions register and the media manifest. Check page counts, block nesting, language versions, broken links and missing images. Record each discrepancy and the step that caused it, then repeat the affected step. The output is an import report with a list of open defects. It is done when the report shows no unexplained gaps and each remaining item has an agreed owner and fix.
How to verify an Optimizely export before you rely on it
Treat an Optimizely export as unverified until you have compared it with the source. Start with item counts by type: pages, blocks, content types, categories, files and visitor groups should match between the source instance and the extracted copy, and any gap should be explained before you move on. Then spot-check published pages in every language and every site in the source, because a package can carry the default language cleanly while a second language or a secondary site arrives incomplete. For each sampled page, compare the title, the main content areas, the URL and the media, and record which pages you checked so the review can be repeated.
Next, confirm that every file referenced by content exists in the copy. Images, documents and linked media that content points to must be present, not only the items listed in the package manifest, so check referenced paths against the files on disk and note any that are missing. Then check that internal links and redirects resolve in a test build of the target site, since a link that worked in Optimizely may point to a page ID or path that the new CMS assigns differently. Where the export was produced with the linked-files option, confirm which media files were included and which still depend on the original storage location.
A successful import into a test environment of the target CMS is the only proof that a package works for that target. Reading the package without importing it tells you what it contains, not whether your destination will accept it. Keep the source export file, the extraction logs and your verification notes together, labeled with the date each was produced and the Optimizely version of the source. Ask your implementation partner or the Optimizely administrator to confirm which source version and export settings were used, because an export made later from the same site can differ.
What to plan before the Optimizely contract renewal or termination
The export itself is only one part of leaving Optimizely. The cards below cover the timing, access, environment and ownership decisions that sit around it, so the export runs on a schedule your contract allows. Confirm every notice period and access term in your own Optimizely agreement, not from this page.
Start the export and test import early
Work back from the notice deadline in your Optimizely agreement and schedule a trial export and a test import into the target platform before that date. A first import usually surfaces block and content type mismatches, broken media references and missing visitor group logic, and each of those needs time to fix. Record which package version and export settings produced each test so a later rerun can be compared with it.
Confirm read access after termination
Find out in writing whether you keep read access to the Optimizely environment after the contract ends, for how long, and through which tools. If access stops at the end date, the final production export must be complete before then, and any content that was not exported has no fallback. Ask whether read-only API access is included, since the API extraction described in this guide often needs it.
Map which environments hold different content
Production, staging and development environments often hold content that does not match. Editors may have made changes in staging that never went live, and development may contain test pages, block types or visitor groups that exist nowhere else. List each environment, the last date it was synchronized, and which of them must be exported. Decide which version is the source of truth before the export starts.
Plan the target platform's lifecycle dates
Check the support calendar of the target before you commit to it. For example, Umbraco 17 is an LTS release published on November 27, 2025, with end of life on November 27, 2028, while Umbraco 13 reaches end of life on December 14, 2026. Choose a version whose support window covers the years you expect to run the site, and schedule upgrades so they do not fall in the same period as the migration.
Agree who owns the evidence
Decide before the export who keeps the export logs, checksums, record counts, verification reports and sign-off records, and where they are stored after the Optimizely account closes. Name an internal owner for each item, and agree how long the evidence must be retained under your records policy. Without a named owner, reconciliation questions raised months later may have no answer.
Questions buyers ask before exporting from Optimizely CMS
Can our own team run the Optimizely CMS export without an outside partner?
Yes, an internal team with admin access to the source site can produce the export package, and it is a sensible first step even if a partner runs the rest. The package carries content items, content types, categories, files and visitor groups in .episerverdata format, but that format is specific to Optimizely. A team moving to another CMS still needs to decide how each content type maps to the new model, which items need API extraction, and what happens to personalization. The export itself is the easy part. The judgment about what the target system needs is where internal teams most often run short of time or experience. Before anyone exports, ask for a written inventory of sites, languages, content types and media so you can see what the package will and will not cover.
What makes the export and migration effort go up or down?
The main drivers are the number of sites, the number of languages, the count and complexity of custom properties, the amount of personalization, and the volume of media. Each site multiplies the mapping work, and each language adds fallback rules and translated fields to check. Custom properties and block types need a target equivalent, so a heavily customized content model takes longer to map than a standard one. Visitor groups and personalized content have no direct counterpart in most open-source CMSs, so they are rebuilt by hand. Large media libraries add transfer time, link checking and rights review. When you request a quote, ask the provider to list each of these drivers with its count from your environment, so the scope reflects your estate rather than a generic template.
How long does an Optimizely CMS export and migration take, and what sets that time?
Duration depends on the estate and the decisions made along the way, and no general figure applies to every site. The largest time factors are the content model mapping, the number of test imports needed before the output is accepted, the rebuild of personalization and permissions, and editor review of migrated content. Media transfer and URL redirect planning also add work that is easy to underestimate. Schedules often slip when content owners are not available to approve mappings, so agree on review windows early. Ask any provider for a written plan with named milestones, the number of rehearsal imports included, and the acceptance criteria for each stage. Fixed-scope engagements are usually agreed in writing before work starts, which makes the timeline easier to check against the scope.
What does the migration need from our internal team?
It needs three kinds of people. Developers who know the current content model must explain how page types, blocks and properties are used, because the export does not explain intent. An editor or content lead must check migrated content, navigation and media against the live site before cutover. Someone who holds the contract must make scope decisions, approve changes and own the vendor relationship. Expect the developers to spend time on mapping questions and the editor to spend time on review cycles, and plan for both during normal sprints. If the internal developers do not know the target CMS, ask the provider how knowledge will be transferred and documented, and what the team should be able to maintain once the engagement ends.
Do user permissions and roles need to be rebuilt by hand after export?
Yes. Permissions do not survive the import, so roles, editor access, approval workflows and group assignments must be recreated in the target system. Start by documenting the current access matrix from the source site: who can edit which sites, who approves publishing, and who manages users. Map each role to a target role and test it with a small group of editors before full rollout. Visitor group rules used for personalization are a separate rebuild, since they control what visitors see rather than what editors can change. Access rebuilding is a common source of publishing incidents after cutover, so include it in the written scope, name who signs off on it, and keep an audit trail of what was granted and why.
What does the linked-files option change in the export, and how should we test it?
The linked-files option determines how media is handled in the package, and the exact behavior should be confirmed against the Optimizely version you run before you rely on it. In practice, teams need to know whether files travel inside the package or whether the package only references them at their original locations. If files stay linked to an existing storage location, that storage must remain available and under control throughout the migration and for any retained archive. Test the option with a representative subset of pages that use images, documents and video. Check that every file resolves, that metadata such as alt text and captions survives, and that the target CMS serves the files at the URLs you plan to keep. Record the result in the acceptance notes.
When is it worth bringing in an outside partner for the export?
An outside partner is worth considering when the estate is large, when the team lacks people who know the target CMS, when the content holds regulated or sensitive data, or when the cutover window is tight. Partners also help when API extraction is needed alongside the package, because the work then includes writing and testing extraction scripts. DeployOpen plans, implements, integrates, backs up and documents self-hosted open-source platforms inside the client's own infrastructure, and most engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts. Ask any provider to state in writing what is excluded, which evidence you receive at each stage, and how the handover to your team works. DeployOpen does not publish prices, so request a quote built from that written scope.
How DeployOpen scopes and delivers an Optimizely content export
DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside your own infrastructure, and an Optimizely content export is handled the same way. We start from a written scope that names the sites, content types, media and access rules involved, then deliver the extraction, verification and handover work in your environment.
How we scope
- Inventory which Optimizely sites, languages, content types and media libraries the export must cover.
- Confirm whether you need a package export, API extraction, or both, based on your target CMS.
- Record which permissions, visitor groups and workflows must be rebuilt by hand rather than imported.
- Agree deliverables and timelines in writing before any work starts, as engagements are fixed-scope.
How we build
- Run package exports in a staging copy and check that content items, files and linked-files options behave as documented.
- Write API extraction scripts that pull published content, media and references into neutral JSON files.
- Test the extracted data against a sample target schema so gaps appear before cutover, not after.
- Keep the extraction repeatable so a final delta export can be run on the migration date.
How we hand over
- Document the export procedure, the data mapping and every item that was excluded or rebuilt manually.
- Provide a reconciliation report listing item counts and failed or skipped media for your review.
- Store exported packages and extraction outputs in storage you control, with access limited to named staff.
- Walk your team through the runbook so the export can be rerun or audited without DeployOpen.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Support can cover re-running extractions during a phased migration or after content model changes.
- Ask any provider, DeployOpen included, to confirm which Optimizely versions and export features are covered.
- Confirm with your legal and records team how retained exports and personal data will be disposed of.

