<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Blog posts by Pär Wissmark</title><link href="http://world.optimizely.com" /><updated>2026-01-26T17:06:46.0000000Z</updated><id>https://world.optimizely.com/blogs/par-wissmark/</id> <generator uri="http://world.optimizely.com" version="2.0">Optimizely World</generator> <entry><title>An “empty” Optimizely CMS 13 (preview) site on .NET 10</title><link href="http://parwissmark.wordpress.com/?p=237" /><id>Optimizely CMS 13 is currently available as a preview. If you want a clean sandbox on .NET 10, the fastest path today is to scaffold a CMS 12 “empty” site using the official templates (because the templates/CLI are still on the CMS 12 generation), then retarget to net10.0 and move all Optimizely packages to the [&amp;#8230;]</id><updated>2026-01-26T17:06:46.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Building simple Opal tools for product search and content creation</title><link href="http://parwissmark.wordpress.com/?p=159" /><id>Optimizely Opal tools make it easy for AI agents to call your APIs – in this post we’ll build a small ASP.NET host that exposes two of them: one for product search and one for CMS content creation. We’ll walk through a concrete example: a small ASP.NET utility API that exposes two tools via Opal [&amp;#8230;]</id><updated>2025-12-13T23:27:22.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Optimizely Opal — working notes from me</title><link href="http://parwissmark.wordpress.com/?p=152" /><id>A short, practical orientation I use when introducing Opal. Lately I’ve been helping customers and developers understand Opal, and I kept finding myself giving the same explanations: what Opal actually does, what it is, where it fits, and how to introduce it without disrupting the processes people rely on. These notes capture what has consistently [&amp;#8230;]</id><updated>2025-11-26T22:41:01.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Locating Blocks Stored in “For This Page” When Retiring Block Models</title><link href="http://parwissmark.wordpress.com/?p=118" /><id>When maintaining a long-lived Optimizely CMS site, you’ll eventually need to deprecate block types. The usual approach is to remove the block class from your codebase and then delete the corresponding content type from the CMS Admin interface. However, the CMS will not let you delete a content type if any content instances still use [&amp;#8230;]</id><updated>2025-09-19T23:51:09.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Understanding Optimizely CMS&#160;12&#160;Base Classes and Common Interfaces</title><link href="http://parwissmark.wordpress.com/?p=81" /><id>Optimizely CMS 12 is built around a powerful and flexible content model. By understanding the core base classes and interfaces, developers can build scalable solutions, improve maintainability, and fully leverage the CMS’s extensibility. In this post, we’ll break down the most important building blocks to help you work more efficiently with Optimizely. Base classes Optimizely [&amp;#8230;]</id><updated>2025-08-28T08:54:44.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Detecting Content Types and Properties That Exist Only in the Database</title><link href="http://parwissmark.wordpress.com/?p=56" /><id>In long-running Optimizely projects, it’s not uncommon to find content types or properties that exist only in the database. Maybe they were created during an early phase of the project, left behind after a refactoring or added directly via the UI during an urgent fix. The problem? In this post, I&amp;#8217;ll walk through how to [&amp;#8230;]</id><updated>2025-08-12T20:24:54.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Simplified caching in EPiServer 8</title><link href="http://parwissmark.wordpress.com/?p=10" /><id>In many cases we need to retrieve a lot of pages and at the same time think about performance, such as the page&amp;#8217;s loading time. That&amp;#8217;s when caching comes in handy&#128578; In this example we want to cache a ContentReferences of news pages. We use a cache prefix to keep track of the different cache [&amp;#8230;]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://pixel.wp.com/b.gif?host=parwissmark.wordpress.com&amp;#038;blog=94999523&amp;#038;post=10&amp;#038;subd=parwissmark&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</id><updated>2015-08-07T15:44:23.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Major headache when working with EPiServer add-ons and continuous release</title><link href="http://parwissmark.wordpress.com/?p=2" /><id>EPiServer is currently releasing updates according to the “continuous release” approach. I think this is a nice approach as the customer can take advantage of the new features without having to go through large migration projects. However a problem occurs when you are using official add-ons with EPiServer and the add-ons don’t use the same [&amp;#8230;]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://pixel.wp.com/b.gif?host=parwissmark.wordpress.com&amp;#038;blog=94999523&amp;#038;post=2&amp;#038;subd=parwissmark&amp;#038;ref=&amp;#038;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</id><updated>2015-07-04T11:55:05.0000000Z</updated><summary type="html">Blog post</summary></entry></feed>