eGandalf
Optimizely
Nov 18, 2015
visibility 4167
star star star star star star
(4 votes)

An Ektron-to-Episerver Starter Kit

Over the last several months, I’ve been working with Allan Thraen and others to find and research ways to make the transition from Ektron CMS to Episerver Digital Experience Cloud as smooth as possible.

As was discussed last week at Ascend in Las Vegas, there is no push-button solution. Too much between the systems lacks a one-to-one mapping and Ektron’s platform allowed too much leeway in avoiding best practices for any fully-automated utility to be practical to develop and maintain.

Instead, I focused my energies on a handful of helpful paths.

For this post, I’d like to introduce you to a bit of code worked up between Allan and myself. If you want to skip the explanation, links to both sets of code are at the bottom of the article.

The first bit of code is Allan’s addition of a REST API to Episerver. This code extends the ServiceAPI, which is used to provide authentication and authorization protection, to add some content endpoints to your Digital Experience Cloud instance. For complete details, I suggest you follow through to his Github repo and readme.

In the second repository, I’ve coded up a few class libraries and console applications. Full details, including limitations, are in the ReadMe, but the general idea is to first move an Ektron Menu structure into Epi to be used as the basis for the content tree. Then, selectively move Ektron content from a Folder in the source CMS into a selected location within the newly generated content tree in the CMS.

Note that these are not officially supported projects, though Allan and I want to provide as much community support as we can. Feel free to file issues through Github and reach out to us if you would like to help contribute or create your own forks of either project (though we may want to incorporate anything cool you build :).

Github Repos:

  1. Allan Thraen’s Service API Extensions 
  2. James Stout’s Ektron Integration & Console Apps
Nov 18, 2015

Comments

error Please login to comment.
Latest blogs
Surviving a Dirty Feed. Part 3: Error Handling and Event Batching

Committing a 250,000-row Optimizely catalog import row by row, returning a per-row failure report, and coalescing catalog events into one per batch.

Stanisław Szołkowski | Oct 16, 2026 |

Building UI Extensions for Optimizely SaaS CMS

Introduction Developers have been extending the functionality of Optimizely PaaS CMS for years using addons built in C# and deployed as NuGet...

Mark Stott | Oct 15, 2026

Cheapskate AI Translator: Because Translation Should Not Require a Second Mortgage

There is a particular kind of software project that begins with a detailed architecture document, a product roadmap, and a carefully assembled...

Linh Doan Cuu | Oct 15, 2026

Computed Fields in CMS 13 Content Contracts with Optimizely Graph

Content Contracts in Optimizely CMS 13 allow different content types to share a common structure when querying Optimizely Graph. But what if the...

Mardy | Oct 14, 2026