A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Oskar Zetterberg
Sep 19, 2012
  10428
(1 votes)

PageTypeBuilder 2.0 with EPiServer CMS 7 Preview

This is a long overdue post about getting PageTypeBuilder 2.0 working with EPiServer 7 Preview.

I´m not sure the changes I made is the best or even correct, but they work. Joel Abrahamsson, please comment on this.

 

Lets begin.

Get the source for PageTypeBuilder 2.0

Update the references from EPiServer CMS 6 to CMS 7.

Changes have to be made in three files, TabDefinitionUpdater.cs, PageDefinitionUpdater.cs and PageTypeRepository.cs.

 

First up, PageTypeRepository

Add a new private member to the class and add a constructor

private EPiServer.DataAbstraction.IContentTypeRepository _contentTypeRepository;
public PageTypeRepository()
{
_contentTypeRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentTypeRepository>();
}

In each of the Load methods (should be three of them) change PageType.Load(arg) to

var pageType = (PageType)_contentTypeRepository.Load(arg).CreateWritableClone();
where arg is string name, Guid guid or int id.

Last change IEnumerable<IPageType> List() from

PageType.List().Select(pageType => new WrappedPageType(pageType)).Cast<IPageType>();

to

return _contentTypeRepository.List().Select(pageType => new WrappedPageType((PageType)pageType)).Cast<IPageType>();

Now, compile and you will get four errors about ambiguous references due to referencing the new EPiServer dll. Clear them up by adding changing

ITabDefinitionRepository to PageTypeBuilder.Abstractions.ITabDefinitionRepository where the errors occurs.

Compile again and you will have a working PageTypeBuilder although there are 78 warnings all of them marking obsolete methods or calls.

That’s it.

 

 

 
Sep 19, 2012

Comments

Tore Gjerdrum
Tore Gjerdrum Sep 20, 2012 02:04 PM

Hi Oskar,

Nice blog post! Helped me a lot!

Just one question. Which build version of EPiServer did you perform this upgrade against? Versjon 7.0.449.1?

Regards, Tore

Oskar Zetterberg
Oskar Zetterberg Sep 20, 2012 02:44 PM

Glad to be able to help. I used the public preview, 7.0.449.1. It should work with more recent versions as well as the only big change I made is to use the IContentTypeRepository.

Tore Gjerdrum
Tore Gjerdrum Sep 24, 2012 10:29 AM

Hi again,

I am using the 7.0.524 version. Everything compiles, but I get an error when trying to run the site. Did you upgrade the site or did you start from scratch?

Multiple custom attributes of the same type found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Reflection.AmbiguousMatchException: Multiple custom attributes of the same type found.

/Tore

Anders Murel
Anders Murel Sep 24, 2012 04:05 PM

The problem is that we're using the obsolete attribute PageDefinitionTypePlugin in several of our referenced assemblies. While I do not understand why an obsolete attribute should give this type of errors, changing it to PropertyDefinitionTypePlugin solved this error.

Please login to comment.
Latest blogs
Troubleshooting with Azure Application Insights Using KQL

Users at least get access to Azure Application Insights even within minimum access level if you are requesting access to DXP management portals at...

K Khan | Dec 21, 2025

Looking back at Optimizely in 2025

Explore Optimizely's architectural shift in 2025, which removed coordination cost through a unified execution loop. Learn how agentic Opal AI and...

Andy Blyth | Dec 17, 2025 |

Cleaning Up Content Graph Webhooks in PaaS CMS: Scheduled Job

The Problem Bit of a niche issue, but we are building a headless solution where the presentation layer is hosted on Netlify, when in a regular...

Minesh Shah (Netcel) | Dec 17, 2025

A day in the life of an Optimizely OMVP - OptiGraphExtensions v2.0: Enhanced Search Control with Language Support and Synonym Slots

Supercharge your Optimizely Graph search experience with powerful new features for multilingual sites and fine-grained search tuning. As search...

Graham Carr | Dec 16, 2025

A day in the life of an Optimizely OMVP - Optimizely Opal: Specialized Agents, Workflows, and Tools Explained

The AI landscape in digital experience platforms has shifted dramatically. At Opticon 2025, Optimizely unveiled the next evolution of Optimizely Op...

Graham Carr | Dec 16, 2025

Optimizely CMS - Learning by Doing: EP09 - Create Hero, Breadcrumb's and Integrate SEO : Demo

  Episode 9  is Live!! The latest installment of my  Learning by Doing: Build Series  on  Optimizely Episode 9 CMS 12  is now available on YouTube!...

Ratish | Dec 15, 2025 |