<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by Eric Herlitz</title> <link>https://world.optimizely.com/blogs/Eric-Herlitz/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>Handling Multiple OpenID Connect Providers in Optimizely CMS with .NET 8</title>            <link>https://www.herlitz.io/2025/11/12/handling-multiple-openid-connect-providers-in-optimizely-cms-with-.net-8/</link>            <description>&lt;p&gt;When you need to authenticate against more than one OpenID Connect provider in the same ASP.NET Core app – say &lt;strong data-start=&quot;243&quot; data-end=&quot;262&quot;&gt;IdentityServer&lt;/strong&gt;&amp;nbsp;for the public site and &lt;strong data-start=&quot;287&quot; data-end=&quot;309&quot;&gt;Microsoft Entra ID&lt;/strong&gt; for Optimizely CMS – you quickly run into challenges: duplicate cookie schemes, mismatched role claims, and broken callback paths.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2025/11/12/handling-multiple-openid-connect-providers-in-optimizely-cms-with-.net-8/</guid>            <pubDate>Wed, 12 Nov 2025 08:35:15 GMT</pubDate>           <category>Blog post</category></item><item> <title>Speeding Up Local Development with a Fake OpenID Authentication Handler</title>            <link>https://www.herlitz.io/2025/10/20/speeding-up-local-development-with-a-fake-openid-authentication-handler/</link>            <description>&lt;p&gt;When working with OpenID authentication, local development often grinds to a halt waiting for identity servers, clients, and users to be configured. In this post, I’ll show how we built a lightweight &quot;local authentication&quot; module that mimics OpenID for development – no external dependencies required.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2025/10/20/speeding-up-local-development-with-a-fake-openid-authentication-handler/</guid>            <pubDate>Mon, 20 Oct 2025 15:09:38 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely CMS in a terminal (console app)</title>            <link>https://www.herlitz.io/2024/02/22/optimizely-cms-in-a-terminal-console-app/</link>            <description>&lt;p&gt;If you ever wanted an efficient and easy way to use the APIs and resources of an Optimizely CMS-project this is for you. No more database hacks to fetch or manipulate data.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2024/02/22/optimizely-cms-in-a-terminal-console-app/</guid>            <pubDate>Thu, 22 Feb 2024 08:04:52 GMT</pubDate>           <category>Blog post</category></item><item> <title>Implementing EmbeddedLocalization in Optimizely CMS 12</title>            <link>https://www.herlitz.io/2023/01/27/implementing-embeddedlocalization-in-optimizely-cms-12/</link>            <description>&lt;p&gt;My previous post on translation (Translating Optimizely CMS 12 UI components) gives an overview of how to implement the FileXmlLocalizationProvider, how a folder structure can be implemented and some advice how to find the XML-elements to translate in the CMS UI. This post will cover how to implement the alternative of FileXmlLocalizationProvider which is the EmbeddedXmlLocalizationProviderInitializer or commonly implemented using the AddEmbeddedLocalization extension method.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 407px; top: 92.2px;&quot;&gt;

&lt;/div&gt;</description>            <guid>https://www.herlitz.io/2023/01/27/implementing-embeddedlocalization-in-optimizely-cms-12/</guid>            <pubDate>Fri, 27 Jan 2023 12:25:19 GMT</pubDate>           <category>Blog post</category></item><item> <title>Translating Optimizely CMS 12 UI components</title>            <link>https://www.herlitz.io/2023/01/26/translating-optimizely-cms-12-ui-components/</link>            <description>&lt;p&gt;Optimizely CMS 12 have been out for a while now, but still some elements haven&#39;t been properly translated resulting in a GUI defaulting to english. While that may be fine with many of us I still do have some customers who refuse to see the benefits of learning a bit of english. Anyways, it is good practice to implement translations of elements in all web sites which would include the Optimizely CMS GUI.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2023/01/26/translating-optimizely-cms-12-ui-components/</guid>            <pubDate>Thu, 26 Jan 2023 17:33:08 GMT</pubDate>           <category>Blog post</category></item><item> <title>Setting up the ImageEditor in Optimizely CMS 12</title>            <link>https://www.herlitz.io/2023/01/25/setting-up-the-imageeditor-in-optimizely-cms-12/</link>            <description>&lt;p&gt;Setting up certain configurations on Opimizely CMS 12 differs quite a bit from prior versions of (Episerver CMS 11 and older). Here&#39;s a small guide on how to read and use the documentation from Optimizely regarding the ImageEditor.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2023/01/25/setting-up-the-imageeditor-in-optimizely-cms-12/</guid>            <pubDate>Wed, 25 Jan 2023 17:44:23 GMT</pubDate>           <category>Blog post</category></item><item> <title>Resolving Optimizely CMS error &quot;InvalidOperationException: The view &#39;Bootstrapper&#39; was not found.&quot;</title>            <link>https://www.herlitz.io/2023/01/20/resolving-optimizely-cms-error-invalidoperationexception-the-view-bootstrapper-was-not-found/</link>            <description>&lt;p&gt;Bootstrapper errors are not very common during development in Optimizely CMS but they do occur on special occasions.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2023/01/20/resolving-optimizely-cms-error-invalidoperationexception-the-view-bootstrapper-was-not-found/</guid>            <pubDate>Fri, 20 Jan 2023 15:13:32 GMT</pubDate>           <category>Blog post</category></item><item> <title>Validate Optimizely XhtmlString property length</title>            <link>https://www.herlitz.io/2022/12/21/validate-optimizely-xhtmlstring-property-length/</link>            <description>&lt;p&gt;Since the built in attributes [StringLength], [MinLength] and [MaxLength] doesn&#39;t work when using a XhtmlString property we need to implement a custom ValidationAttribute.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 425px; top: -28px;&quot;&gt;

&lt;/div&gt;</description>            <guid>https://www.herlitz.io/2022/12/21/validate-optimizely-xhtmlstring-property-length/</guid>            <pubDate>Wed, 21 Dec 2022 15:16:01 GMT</pubDate>           <category>Blog post</category></item><item> <title>Creating a new CMS database using the Optimizely CLI</title>            <link>http://www.herlitz.nu/2022/06/30/creating-a-new-cms-database-using-the-optimizely-cli/</link>            <description>&lt;p&gt;CLI tools are getting more and more popular once again. In this short blog post, I&#39;ll guide you on how to set up a new Optimizely CMS database and add an admin user to the database.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/06/30/creating-a-new-cms-database-using-the-optimizely-cli/</guid>            <pubDate>Thu, 30 Jun 2022 17:29:11 GMT</pubDate>           <category>Blog post</category></item><item> <title>Creating a new CMS database using the Optimizely CLI</title>            <link>https://www.herlitz.io/2022/06/30/creating-a-new-cms-database-using-the-optimizely-cli/</link>            <description>&lt;p&gt;CLI tools are getting more and more popular once again. In this short blog post, I&#39;ll guide you on how to set up a new Optimizely CMS database and add an admin user to the database.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/06/30/creating-a-new-cms-database-using-the-optimizely-cli/</guid>            <pubDate>Thu, 30 Jun 2022 17:29:11 GMT</pubDate>           <category>Blog post</category></item><item> <title>Creating page types in Optimizely CMS 12 using the command line</title>            <link>http://www.herlitz.nu/2022/05/12/creating-page-types-in-optimizely-cms-12-using-the-command-line/</link>            <description>&lt;p&gt;Creating page types and similar using the Optimizely CLI may be a new approach to many but when you get the basics it is very powerful. Here are some advices on how to script and setup content types and controllers a bit more automated.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/05/12/creating-page-types-in-optimizely-cms-12-using-the-command-line/</guid>            <pubDate>Thu, 12 May 2022 13:32:10 GMT</pubDate>           <category>Blog post</category></item><item> <title>Creating page types in Optimizely CMS 12 using the command line</title>            <link>https://www.herlitz.io/2022/05/12/creating-page-types-in-optimizely-cms-12-using-the-command-line/</link>            <description>&lt;p&gt;Creating page types and similar using the Optimizely CLI may be a new approach to many but when you get the basics it is very powerful. Here are some advices on how to script and setup content types and controllers a bit more automated.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/05/12/creating-page-types-in-optimizely-cms-12-using-the-command-line/</guid>            <pubDate>Thu, 12 May 2022 13:32:10 GMT</pubDate>           <category>Blog post</category></item><item> <title>Programmatically rewriting all  site and host definitions to HTTPS in Optimizely CMS</title>            <link>http://www.herlitz.nu/2022/05/05/programmatically-rewriting-all--site-and-host-definitions-to-https-in-optimizely-cms/</link>            <description>&lt;p&gt;Some sites have many host definitions, and some want&#39;s to enforce HTTPS within Optimizely CMS.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/05/05/programmatically-rewriting-all--site-and-host-definitions-to-https-in-optimizely-cms/</guid>            <pubDate>Thu, 05 May 2022 13:31:26 GMT</pubDate>           <category>Blog post</category></item><item> <title>Programmatically rewriting all  site and host definitions to HTTPS in Optimizely CMS</title>            <link>https://www.herlitz.io/2022/05/05/programmatically-rewriting-all--site-and-host-definitions-to-https-in-optimizely-cms/</link>            <description>&lt;p&gt;Some sites have many host definitions, and some want&#39;s to enforce HTTPS within Optimizely CMS.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/05/05/programmatically-rewriting-all--site-and-host-definitions-to-https-in-optimizely-cms/</guid>            <pubDate>Thu, 05 May 2022 13:31:26 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely CMS 12 CLI tools, getting started</title>            <link>http://www.herlitz.nu/2022/05/03/optimizely-cms-12-cli-tools-getting-started/</link>            <description>&lt;p&gt;Since the launch of CMS 12, the usage of CLI tools (command-line interfaces) has accelerated. This is mostly awesome since it is costly and not very platform multi-platform to build graphical user interfaces. CLI tools are also simpler to ship and install and usually more powerful.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/05/03/optimizely-cms-12-cli-tools-getting-started/</guid>            <pubDate>Tue, 03 May 2022 09:03:08 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely CMS 12 CLI tools, getting started</title>            <link>https://www.herlitz.io/2022/05/03/optimizely-cms-12-cli-tools-getting-started/</link>            <description>&lt;p&gt;Since the launch of CMS 12, the usage of CLI tools (command-line interfaces) has accelerated. This is mostly awesome since it is costly and not very platform multi-platform to build graphical user interfaces. CLI tools are also simpler to ship and install and usually more powerful.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/05/03/optimizely-cms-12-cli-tools-getting-started/</guid>            <pubDate>Tue, 03 May 2022 09:03:08 GMT</pubDate>           <category>Blog post</category></item><item> <title>Running Optimizely CMS behind NGINX Reverse Proxy</title>            <link>http://www.herlitz.nu/2022/03/27/running-optimizely-cms-behind-nginx-reverse-proxy/</link>            <description>&lt;p&gt;A reverse proxy is a server that acts as a single point of entry to as many services (e.g. web sites) as you like on your internal network. The reverse proxy typically sits behind the firewall and directs requests to the appropriate backend server. The firewall is configured to allow certain traffic to be transmitted from and to the reverse proxy. Reverse proxies are typically implemented to scale different types of services, increase security, performance, and reliability.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/03/27/running-optimizely-cms-behind-nginx-reverse-proxy/</guid>            <pubDate>Sun, 27 Mar 2022 19:27:44 GMT</pubDate>           <category>Blog post</category></item><item> <title>Running Optimizely CMS behind NGINX Reverse Proxy</title>            <link>https://www.herlitz.io/2022/03/27/running-optimizely-cms-behind-nginx-reverse-proxy/</link>            <description>&lt;p&gt;A reverse proxy is a server that acts as a single point of entry to as many services (e.g. web sites) as you like on your internal network. The reverse proxy typically sits behind the firewall and directs requests to the appropriate backend server. The firewall is configured to allow certain traffic to be transmitted from and to the reverse proxy. Reverse proxies are typically implemented to scale different types of services, increase security, performance, and reliability.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/03/27/running-optimizely-cms-behind-nginx-reverse-proxy/</guid>            <pubDate>Sun, 27 Mar 2022 19:27:44 GMT</pubDate>           <category>Blog post</category></item><item> <title>Setting a static license path in Optimizely CMS 12</title>            <link>http://www.herlitz.nu/2022/03/03/setting-static-license-path-in-optimizely-cms-12/</link>            <description>&lt;p&gt;There is an alternative to having license files in the project root directory where you instead set a path to where you store your license files. This is an excellent way to also remove the need of extra deployments to update the license file.&lt;/p&gt;</description>            <guid>http://www.herlitz.nu/2022/03/03/setting-static-license-path-in-optimizely-cms-12/</guid>            <pubDate>Thu, 03 Mar 2022 13:10:45 GMT</pubDate>           <category>Blog post</category></item><item> <title>Setting a static license path in Optimizely CMS 12</title>            <link>https://www.herlitz.io/2022/03/03/setting-static-license-path-in-optimizely-cms-12/</link>            <description>&lt;p&gt;There is an alternative to having license files in the project root directory where you instead set a path to where you store your license files. This is an excellent way to also remove the need of extra deployments to update the license file.&lt;/p&gt;</description>            <guid>https://www.herlitz.io/2022/03/03/setting-static-license-path-in-optimizely-cms-12/</guid>            <pubDate>Thu, 03 Mar 2022 13:10:45 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>