Writing
Blog
Mostly tech — Optimizely, .NET, AI, the web. A few opinions. Occasional Norwegian.
2026
-
Azure Devops NodeTool@0 is deprecated.EN
Azure DevOps is phasing out the NodeTool@0 task. The fix is straightforward.
-
Optimizely CMS 13 breaking changes: GetContentTypePropertyDisplayNameEN
When upgrading from CMS 12 to 13, resolving property display names may not work as before. Here’s what changed.
-
Optimizely CMS 13 breaking changes: IValidate<T>EN
Custom IValidate
validators in Optimizely CMS 13 are no longer auto-discovered. They must be registered explicitly when upgrading from CMS 12. -
Convert Blocks in Optimizely CMS: Now Supporting CMS 12 and CMS 13EN
An add-on for Optimizely CMS that lets you convert block types, similar to pages. Now updated for CMS 12 and 13.
-
LM Studio opens outside the screenEN
LM Studio may open outside the screen when switching monitors. Reset the saved window position to fix it.
-
Optimizely CMS 13 and PageReference is obsoleteEN
Learn what to to with the warning: 'PageReference' is obsolete: 'Use ContentReference instead.'
-
Optimizely CMS 13 and the Alloy demo siteEN
The Alloy demo site now runs on Optimizely CMS 13. Here’s a quick guide to getting it up and running locally.
-
Optimizely CMS 13 and the first bug fixesEN
The first bug fixes for Optimizely CMS 13 is here!
-
Optimizely CMS 13 and errors when creating pages after upgradeEN
After upgrading to Optimizely CMS 13, I ran into issues creating pages and deleting media. The fix was easy!
-
Optimizely CMS 13 and the new login/admin/edit URLEN
What happened to /episerver/cms after upgrading to Optimizely CMS 13?
-
How to Disable automatic indexing in Optimizely Search & NavigationEN
Learn how automatic event-based indexing works in Optimizely Search & Navigation and how you can temporarily disable it.
-
Disabling the scheduler also stops event-based indexing in Optimizely CMSEN
If you disable the scheduler in Optimizely CMS, should event-based indexing for Search & Navigation stop working too? It does!
-
Install additional voice packages in Windows 11, for use with the Web Speech APIEN
How to install voice packages in Windows 11 for use with the Web Speech API.
2025
-
Running Optimizely CMS 12 on .NET 10 in AzureEN
Upgrade your Optimizely CMS website to .NET 10!
-
Har du noen gang ventet på å bli avslørt?NO
Lang erfaring fjerner ikke nødvendigvis følelsen av å ikke være god nok. Det kan også gjøre fallhøyden større. En historie om bedrager-syndrom.
-
Set window Always On Top, Windows 11EN
Add a keyboard shortcut using AutoHotkey!
-
Optimizely CMS Roadmap – AI, automation and the future of digital experiencesEN NO
A summary of the roadmap for Optimizely CMS from the Opticon conference on September 30, 2025.
-
Get last edited content from Optimizely CMSEN
Learn how to query the last updated blocks and pages from Optimizely CMS
-
Get last run of a scheduled job in Optimizely CMSEN
Learn how to get the last execution time of a scheduled job in Optimizely CMS.
-
Optimizely CMS and HTML validation message: Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.EN
When using the W3C Markup Validation Service, some annoying information messages pop up because Optimizely CMS adds the trailing slash to self-closing tags. Let's fix that!
-
Kan agentene overta jobben din?NO
En gjennomgang av agent-modus i ChatGPT. La agentene jobbe for deg!
-
SQL addon for Optimizely CMS 12 updated with new featuresEN
First released in 2021, the SQL Studio addon for Optimizely CMS lets you query your database directly from the edit UI. The latest update adds support for GPT-5, a new UI for managing saved queries.
-
Check NuGet packages for vulnerabilities in you Azure DevOps build pipelineEN
This is a very simple security gate that checks for NuGet packages with vulnerabilities and stops the build to stop insecure deployments.
-
Problem with Realtek(R) USB GbE Family ControllerEN
How to solve an issue with the Svive USB-to-Ethernet adapter on Windows 11.
-
The remote server returned an error: (400) Bad Request – when configuring Azure Storage for an older Optimizely CMS siteEN
How to fix a strange issue that occurred when I moved editor-uploaded files for some old Optimizely CMS 11 solutions to Azure Storage.
-
Enable Opal AI for your Optimizely productsEN
Learn how to enable Opal AI, and meet your infinite workforce.
-
Exporting Optimizely databases causing errorsEN
Solutions to a couple of recurring issues when migrating databases to the cloud.
-
First time speaking at NDC OsloEN NO
This is my thirteenth time attending the conference – and my first time giving a talk.
-
Opal AI available in Optimizely CMS (SaaS)EN
Use Opal AI to translate your content!
-
Managed Identity for Connecting your Optimizely site to a Database in AzureEN
Are you using a connection string with username and password to connect to your Azure database? Use managed identity instead!
-
COGNITIVE_SERVICE_TRANSLATE_ERROREN
COGNITIVE_SERVICE_TRANSLATE_ERROR
-
Unable to view Optimizely Forms submissions when some values are too longEN
I discovered a form where the form submissions could not be viewed in the Optimizely UI, only downloaded. Learn how to fix the issue.
-
Using the 1996 text-based Browser 'Links' to optimize website accessibilityEN
Use a text-based browser from the late 1990s to improve the accessibility of your modern Optimizely website!
-
The missing globe can finally be installed as a nuget package!EN
Do you feel like you're dying a little bit every time you need to click "Options" and then "View on Website"? Do you also miss the old "Globe" in Optimizely CMS? Your prayers have been heard: a NuGet package is available, and the Globe is back!
-
Run DeepSeek R1 Locally – With All 671 Billion ParametersEN
Learn how to run DeepSeek R1, with all 671 billion parameters, locally without requiring huge amounts of RAM or expensive GPU power. All you need are a few tricks up your sleeve and a lot of patience!
-
Run models distilled from DeepSeek-R1 locally!EN
Learn how to run models distilled from DeepSeek-R1 locally, on your own computer, using tools like Ollama, LM Studio, and Open WebUI.
2024
-
Increase timeout for long running SQL queries using SQL addonEN
Learn how to increase the timeout for long running SQL queries using the SQL addon.
-
Overriding the help text for the Name property in Optimizely CMSEN
I recently received a question about how to override the Help text for the built-in Name property in Optimizely CMS, so I decided to document my process for figuring it out...
-
Custom form element view in Optimizely CMS 12EN
Do you want full control over the form element markup? Create your own views!
-
Set Default Culture in Optimizely CMS 12EN
Take control over culture-specific operations like date and time formatting.
-
Add extra MIME type mappings in .NET 9EN
Struggling to get those woff-font-files working in .NET?
-
I'm running Optimizely CMS on .NET 9!EN
It works 🎉
-
XSS Vulnerabilities Patched with TinyMCE 6.8.4EN
Two different XSS vulnerabilities were fixed in the latest update of the NuGet package EPiServer.CMS.TinyMce. Update today!
-
Sorting reference field dropdown in SanityEN
Sorting a reference field dropdown in Sanity is undocumented, but still possible.
-
Change texts in TinyMCE, inside Optimizely CMS 12EN
Not happy with some of the default texts in TinyMCE? Don't worry, simply update them.
-
Problem with language file localization after upgrading to Optimizely CMS 12EN
Avoid common problems with xml file localization when upgrading from Optimizely CMS 11 to CMS 12.
-
Optimizely Forms: You cannot submit this form because an administrator has turned off data storage.EN
Do not let this error message scare you, the solution is quite simple!
-
Add your own tools to the Optimizely CMS 12 admin menuEN
The menus in Optimizely CMS can be extended using a MenuProvider, and using the path parameter you decide what menu you want to add additional menu items to.
-
Optimizely CMS and weekly updatesEN
Learn how reporting bugs in Optimizely CMS not only helps improve the platform but also benefits you and the entire user community.
-
Set icon for your Optimizely CMS custom form elementsEN
Set your own icon on custom form elements in Optimizely CMS
-
Optimizely CMS image anonymization now available for Linux!EN
The famous image anonymization add-on for Optimizely CMS, with at least 5 downloads, is now finally available for use on Linux. Supports simultaneous anonymization of unlimited(?) numbers of faces. Perfect for data storage in the EU, where GDPR imposes strict restrictions on the use of personal information.
-
Auto-translate with OpenAI GPT-4o in Optimizely CMSEN
Improvements for Episerver.Labs.LanguageManager! It's now possible to auto-translate both a page and its children at the same time! Additionally, my new extension allows for OpenAI GPT-4o, or any other model from OpenAI, to be used as the translation provider.
-
Microsoft announces Natural language to SQLEN
Finally, Microsoft launches "Natural language to SQL," after it has been available for several months in Optimizely CMS!
-
Do not upgrade to EPiServer-CMS-Core 12.21.4 without reading this!EN
Todays update of EPiServer.CMS.Core 12.21.4 alters default sort order in an unexpected way, when you are working with muligple languages and have fallback languages set up. Please do test this throughly, if you want to update.
-
New Security Improvement released for Optimizely CMS 11EN
A new security improvement has been released for Optimizely CMS 11. You should update now!
-
Exclude content from search enginesEN NO
Best practices for excluding your Optimizely CMS test content from search engines like Google, along with some tips on what to do—and what not to do—if your content is already indexed.
-
Optimizely and the never-ending story of the missing globe!EN
I've worked with Optimizely CMS for 14 years, and there are two things I'm obsessed with: Link validation and the globe that keeps disappearing on me! Now, the globe is back again!
-
Identify Azure web app instance id's for an Optimizely CMS siteEN
When running Optimizely CMS in Azure, you will be using an instance bound cloud license. What instances are counted, and how can you check them? Let me explain...
-
Adjust log levels in Optimizely DXPEN
You may adjust the log levels for your site in Optimizely DXP yourself, but only for the Integration environment. Follow this step-by-step guide.
-
Copy database and blobs to Optimizely DXPEN NO
It's easier than ever to import blobs and databases into the Optimizely DXP integration environment without involving support.
-
Change locale/culture for a Linux-based Azure WebAppEN
When running your .NET website on a Linux-based WebApp, you might want to set the current culture to make sure dates are formatted correctly, etc.
-
List number of pages per pagetype in Optimizely CMSEN
Learn how to identify the most frequently used content types in your Optimizely CMS installation using SQL.
-
Security.txt – What? Why? How?EN
Find out what security.txt is, why it's essential, and how you can easily implement it in your Optimizely site!
2023
-
Publish content to Optimizely CMS using a custom GPT from OpenAI 🤖EN
Do you find the traditional editor interface complicated and cluttered? Would you like an editorial AI assistant you can chat with? You can!
-
I'm running Optimizely CMS 12 on .NET 8!EN
.NET 8 is launched, and the Optimizely team has announced support for .NET 8 in Optimizely products. Still, I had some problems. This is how I solved them.
-
Open AI GPT - using AI to feed an AI: Talk to my blog!EN
This Monday, OpenAI rolled out custom versions of ChatGPT that you can create for a specific purpose, called GPTs. It essentially functions as a chatbot with the powers of GPT-4. I used Optimizely Graph semantic search for my first GPT, so I can talk to my blog!
-
Sortable enum properties for Optimizely CMSEN
Enum properties in Episerver/Optimizely has been used for more than 10 years. I've made a few minor enhancements.
-
How to type «special characters» – and ALT-codes without the numpadEN
I'm used to typing some special characters using the ALT-key + the numbers on my keyboards numpad. A while ago I switched to a keyboard without a numpad, and I had to figure out how to live without it!
-
Semantic, AI-powered, search is coming to Optimizely CMSEN
The all new semantic AI powered search feature, and GraphQL API, for Optimizely CMS is finally released! Check it out!
-
Translating UI elements in Optimizely CMS 12EN
When Optimizely CMS is part of your website, most of your content will probably be translated using the localization features of the CMS. However, a few global texts might be practical to handle outside the CMS. Don't screw it up!
-
Auto-translate with OpenAI in Optimizely CMSEN NO
You can now auto-translate content using your favorite online AI service, inside the old trustworthy Episerver.Labs.LanguageManager!
-
Unleash AI in the Database!EN
These days, AI is everywhere! Why not put some AI into your database too? What could possibly go wrong?
-
Optimizely CMS 12 and SixLabors.ImageSharpEN
The NuGet package EPiServer.CMS.Core versions up to 12.16.0 included a reference to SixLabors.ImageSharp. Now, that has ended...
-
Optimizely CMS Scheduled Job «Change Log Auto Truncate» timeoutEN
How to fix an issue in Optimizely CMS where the scheduled job «Change Log Auto Truncate» would fail with a timeout.
-
Optimizely CMS with new menu systemEN
Optimizely CMS 12.22.0 introduced a new menu system and support for Optimizely Identity.
-
Updated Optimizely Link Status Report – Missing property names!EN
A couple of months ago Optimizely CMS introduced Deep linking from broken links report to Optimizely edit mode! One problem I discovered was that the «Property Name» does not show up in the Link Status report for existing content until you publish a change. I propose a fix!
-
Encountered error(s) while parsing pipeline YAML: Could not get the latest source version for repository hosted on Azure Repos using ref refs/heads/master.EN
Update default branch for manual and scheduled builds in Azure DevOps Pipelines.
-
Optimizely CMS Link Validation Job now finally uses GET instead of HEAD!EN
Previously the Optimizely CMS Link Validation job has used HTTP HEAD to check the status of external links. This has led to a lot of links erroneously being incorrectly listed as broken. As of today, Optimizely has started using HTTP GET!
-
Automatic Alt Text for images using Optimizely CMS 12EN
You may use this addon to generate alt text for your images automatically, which enhances accessibility, SEO, and assists content creators. The addon may also generate other types of relevant meta data.
-
Upgrade to Sanity Studio v3EN
Still using the old version of Sanity Studio? Now is the perfect time to upgrade to Sanity Studio v3!
-
Deep linking from broken links report to Optimizely edit modeEN
Optimizely CMS adds deep linking from broken links report to edit mode. Makes it easier to track down those broken links!
-
New ways to add content from within TinyMCE in Optimizely CMS 12EN
Todays update makes it easier to add content directly from TinyMCE!
-
Optimizely finally releases new and improved list properties!EN
For years, the Generic PropertyList has been widely used, despite it being unsupported. Today a better option is released!
-
The new LinkItem property in Optimizely CMS, and why it mattersEN
In the past, we have used different tricks to achieve this. Now, the LinkItem property is finally built-in in Optimizely CMS 12!
-
Power Optimizely CMS with the brand new GPT-4 language model!EN
On March 14th, OpenAI released a waiting list for access to their GPT-4 language model, which was also made available for paying users of ChatGPT the same day. I got access 20 minutes ago, and this is how you can use it in Optimizely CMS!
-
Configuring link validation in Optimizely CMS 12EN
When Optimizely released version 12 of their CMS, it was not possible to configure how links should be validated. Now it is!
-
Power Optimizely CMS using the same language model as ChatGPTEN
On March 1st, OpenAI released their Chat completion API using the gpt-3.5-turbo language model, the same language model used by ChatGPT. Learn how you can add ChatGPT-capabilities to Optimizely CMS.
-
Drit i hva andre mener – skriv for din egen del!NO
Du burde antagelig blogge mer, og mitt råd er helt enkelt: Skriv for din egen del, og drit i hva andre måtte mene!
-
Is there really a RIGHT way to delete content directly in the Optimizely CMS database?EN
What is really the right way? And who decides what's the right way? I don't...
-
Delete content directly from the Optimizely databaseEN
Do you know your way around the Optimizely CMS database? Deleting, or updating, content directly in the database is pretty straightforward, but of course not recommended...
-
Integrating generative AI in Optimizely CMS: A quick test with OpenAIEN
Some of the new AI services have received a lot of attention recently. Can you integrate them in Optimizely CMS? Of course, you can!
-
Breaking changes in EPiServer.CMS.TinyMce 4.0.0EN
After upgrading to the latest version of EPiServer.CMS.TinyMce, the dropdown with formats disappears. Learn how to get it back!
-
Image preview in Optimizely CMS12 all properties viewEN
With these simple steps, you can now see an Image and its Metadata, including size and dimensions, when editing an Image property in Optimizely Content Cloud 12.
-
Localized page types and properties in Optimizely CMS 12EN
If you have editors that use different languages, you might want localized content type and property names. Learn how it's done in CMS 12.
-
ChatGPT created Snake for my 404 page!EN NO
I discovered that I didn't have a 404 page! Since I wanted something that stood out from the crowd, I asked ChatGPT to create a retro-inspired Snake game for it!
2022
-
Upload files larger than 4MB in Optimizely CMS12EN
The default max file upload size in CMS 12 is 4MB. Learn how to increase it!
-
Spør den kunstige intelligensen! 10 kjappe!NO
Jeg fikk et kjapt intervju med nykommeren ChatGPT, som stilte opp på kort varsel, og svarte på mine spørsmål – på norsk!
-
Optimizely SendGrid SMTP host is deprecatedEN
SendGrid is a services for sending email that is included in Optimizely DXP. Previously smtp.episerver.net was the recommended SMTP server to use, but then it stopped working!
-
Optimizely shortcuts in CMS 12 will get a trailing slash appended!EN
Not all URLs will work when the trailing slash is added, and that could cause problems. Hopefully it will be fixed soon.
-
Optimizely CMS running on .NET 7!EN
Can you run Optimizely CMS on .NET 7? Yes! Can you upgrade in less than a day? Probably!
-
Warning CS0618: 'TextIndexer' is obsolete: 'This class is no longer used by CMS and will be removed in a future release.'EN
I do not like warnings, and I prefer to get rid of them. If I upgrade to the latest version of Optimizely CMS and then Install Episerver Search & Navigation – I get this warning.
-
Warning NU1603: EPiServer.Find.Cms 14.2.1 depends on System.Linq.Async (>= 6.0.0 && < 7.0.0) but System.Linq.Async 6.0.0 was not found. An approximate best match of System.Linq.Async 6.0.1 was resolved.EN
I do not like warnings, and I prefer to get rid of them. If I upgrade to the latest version of Optimizely CMS and then Install Episerver Search & Navigation – I get this warning.
-
Bring the Report Center back in Optimizely CMS 12EN NO
The Report Center has been a part of Optimizely CMS since its first debut in version 5R2 in 2008, but in CMS 12, it's removed! Don't despair! Make your own Report Center!
-
The Report Center is finally back in Optimizely CMS 12EN
With Episerver.CMS.UI 12.12.0 the Report Center is finally re-introduced in the core product.
-
DO NOT use the Microsoft.Extensions.DependencyInjection namespace for non-official Microsoft packagesEN
Microsoft has not been clear about its recommendation for extension method namespaces, until now.
-
How to view upgrade-assistant log filesEN
Upgrade-assistant produces a very long log file in the CLEF format. Use Compact Log Viewer to make sense of it!
-
If you want to upgrade – do not upgrade upgrade-assistant!EN
Today was the day. I was finally ready for upgrading to Optimizely CMS 12! It did not go very well, because I decided to start by upgrading upgrade-assistant.
-
DevOps Error: Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired!EN
Access tokens are easily renewed, if you know how!
-
SqlStudio for Optimizely CMS 12 and .NET6EN
The addon that gives you super powers directly in your browser is upgraded to support CMS 12 and .NET 6. Enjoy!
-
Improve build speed in Optimizely CMS 12EN
In Episerver.CMS.UI 12.11 that was released today, we are promised improved build speed in projects by copying shell module files only when they change or are missing.
-
Bedre kodesøk på GitHubNO
GitHub Code Search lar deg raskt og enkelt søke i både egen og andres kode.
-
Fixing invisible broken links in Optimizely CMS!EN
On some websites, I find broken ghost links in the «Link Status» report! When I open the page in edit mode I'm unable to find them. I went on a ghost busting mission to get rid of them for good! 👻
-
Output cache in Optimizely CMS 12 that vary by visitor groupEN
.NET5 and .NET6 has no concept of output caching, and neither does Optimizely Content Cloud 12. When adding output cache, there are a few things to consider - visitor groups are one of them.
-
Upgrade from .NET 5 to .NET 6EN
.NET 5 has reached end of support - you should update to .NET 6 today!
-
Scheduled Jobs in Optimizely CMS 12EN
In Optimizely CMS 12 the admin mode is given a real facelift. There are graphs and stuff! But is it still the same under the hood...?
-
Finally kill the EPiStateMarker cookie!EN
Wave goodbye to the EPiStateMarker cookie!
-
Quick and dirty output cache in Optimizely CMS12EN
.NET5 and .NET6 has no concept of output caching, and neither does Optimizely Content Cloud 12. Don't let that stop you from caching your output!
-
Optimizely CMS 12 can finally convert pages!EN
Optimizely CMS 12 can finally convert pages from one page type to another! Great! But what about blocks and media...?
-
Download database + blobs from your Optimizely DXP projectEN
In Optimizely DXP, you can't access the live production environment directly. However, you can still download the database and blobs!
-
GDPR compliant image upload in Optimizely Content Cloud 12EN NO
Google Analytics might be illegal, cookies can't be used without active consent, GDPR and Schrems II are almost a household name. You should be very careful with personal data, at least if you are based in the EU!
-
Speed-upgrading an add-on for Optimizely CMS 12 🚀EN
Is it possible to upgrade an add-on to support .NET 5 and Optimizely CMS 12 in just three minutes? Hold my beer!
-
Group Sanity fields in tabsEN
Sanity has launched a new feature called field groups. Field groups work almost as tabs. Learn how to make them work exactly like tabs!
-
Get your Optimizely Content Cloud developer certification for free!EN
Learn how to renew your Optimizely Content Cloud developer certification for free!
-
Optimizely Content Delivery API - getting started smoothly!EN
The Content Delivery API adds headless capabilities to your traditional Optimizely Content Cloud CMS. Get started smoothly, without doing the same mistakes as I did...
-
Optimizely Content Manager - still not production-ready!EN
Optimizely Content Manager is a lightweight editing UI that aims to make publishing content easier, as it takes away some of the complexity. I like the idea, but here are still some major issues!
2021
-
Change timezone for a Linux-based Azure WebAppEN
The time zone for a Windows-based Azure WebApp can be set using the WEBSITE_TIME_ZONE app setting. If you try the same with a Linux-based WebApp you may find yourself in trouble. Read how to do it!
-
Sanity and Slack integration with GROQ-powered webhooksEN
The newly released GROQ-powered webhooks for Sanity unlock some interesting new possibilities. Use the query language GROQ to define which documents should trigger a webhook and what its payload should be. See how to post messages directly to Slack!
-
Sanity and GROQ-powered webhooks are great, but there is a bug!EN
Sanity recently launched their GROQ-powered webhooks, and they are really powerful! But there is a bug...
-
Easier bulk deletion of Sanity documents, using Sanity CLIEN
Using Sanity Studio, you can delete documents one by one. What if you want to delete hundreds of documents? Do it the easy way, with Sanity CLI, GROQ CLI and xargs!
-
Bulk deletion of Sanity documents using Sanity CLI, Notepad++ and regexEN
Using Sanity Studio, you can delete documents one by one. What if you want to delete hundreds of documents? Do it the hard way, with Sanity CLI, Notepad++ and regex!
-
Developers, developers, developers!EN
When Episerver rebranded to Optimizely, the World website lost its developer focus and the community updates are not as easy to find anymore. Learn where to find them now!
-
Replace the link to the Optimizely User GuideEN
The Optimizely (formerly Episerver) user interface has a link to the User Guide, you can update this link if you want to.
-
Custom icons in the Optimizely/Episerver CMS page treeEN
By default, all pages in your Optimizely page tree look the same. With custom icons, you can add your personal touch, and make it easier to visually separate the different types of pages.
- EN
-
Optimizely Content Cloud (CMS) and updates to the database schemaEN
When upgrading Optimzely Content Cloud, the database schema might need updating too. Confused? Let me explain...
-
Episerver Scheduled jobs - Add a GUID!EN
A scheduled job is Episerver's/Optimizely's way of running some piece of code at a configurable interval. If there is a chance that code could change in the future, you should add a GUID when you create it!
-
Critical bug in Episerver/Optimizely Forms 4.30.1/4.30.2 - upgrade ASAP!EN
Episerver Forms submission data older than 30 days can be unexpectedly deleted, even if the form is configured to keep submissions forever. If you are using version 4.30.1 or 4.30.2 - I would recommend upgrading ASAP!
-
New Optimizely Most Valuable Professionals!EN
Yesterday Optimizely announced the addition of 11 new Most Valuable Professions - OMVPs! Congrats and welcome!
-
Content Manager Update!EN
Content Manager is finally updated, and it's now possible to create and publish content without going through a bunch of meaningless steps.
-
Lazy loading images in Episerver/Optimizely xhtml string propertiesEN
Increase web performance by lazy loading images! With native browser support it's easier than ever!
-
Access-Control-Allow-Origin with multiple origin domains (CORS)EN
Cross-Origin Resource Sharing (CORS) can be blocked (default), or easily be enabled for a single domain, or all domains. But, what if you want to enable CORS for a list of domains?
-
Content Manager, the greatest thing since sliced bread?EN
No! Optimizely Content Manager is a lightweight editing UI that aims to make publishing content easier, as it takes away some of the complexity. I like the idea, but here are two main issues left before Content Manager could be used in a production environment.
-
Scroll to the top, and beyond!EN
Do you ever find yourself switching from on-page editing view to all-properties editing view to access basic information about the current page in Episerver CMS? You don't have to do that! Just scroll upwards!
-
New SQL addon for Episerver CMSEN
I enjoy poking around in the Episerver database, so I made an addon to make it easier! Enjoy autocomplete, save your favorite queries for later - but be careful!
-
Restore point-in-time backup for Azure SQL databaseEN
If you are doing manual updates directly to your Episerver database, or performing an upgrade that updates the database schema it could be a good idea to have a backup from the exact time right before the change is made. In Azure, you always have!
-
Hiding sensitive information in Episerver, inspired by the Junior Woodchucks' GuidebookEN NO
A new Episerver addon use technology described in the Junior Woodchucks' Guidebook over 2000 years ago, to safely store your Episerver data! Check it out!
-
Flytt hjem: Azureressurser i Norway EastNO
For noen måneder siden var det ikke fritt frem for å opprette SQL-databaser i Azure-regionen Norway East - men nå er det! Jeg viser hvordan man kan flytte en Azure SQL-database på tvers av regioner.
-
Real-time Updates: A real-time connection could not be established with the serverEN
If you are faced with this error message when you log into Episerver Edit mode, do not fear. It can be easily fixed.
-
Locate Episerver content with restricted access rightsEN
If someone deletes a page from an Episerver site, you can figure out what happened by looking at the changelog. What if someone changes access rights? I show how to locate pages that have their access rights set explicitly.
-
Episerver Forms - public access to uploaded filesEN
Files uloaded to an Episerver Form, can not be accessed without logging in. Unless...
-
Deploying to Episerver DXP - Part 1: Integration, direct deployEN
When deploying your site to Episerver DXP, there are so many options. Some are quite fast, some are super slow. I show how to deploy to the Integration environment the fast way, using Azure DevOps.
-
Deploying to Episerver DXP - Part 2: Preproduction and Production, Deployment APIEN
When deploying your site to Episerver DXP, there are so many options. I show how to deploy using Azure DevOps, the deployment API, and Epinova's DXP deployment extension.
2020
-
Episerver Find finally renamed to Episerver Search & Navigation!EN
With Update 346, released today, the product name has finally been changed from «Episerver Find» to «Episerver Search & Navigation» in the user interface. Upgrade now, and get a free Server Error!
-
Episerver Scheduled jobs - Make it fail!EN
If you write code that is likely to fail, it is good practice to wrap that section of code in a try-catch-clause and handle the exception. For scheduled jobs, it's the opposite! If something fails, be sure to throw that exception!
-
Episerver Scheduled jobs - Give feedback!EN
Have you ever wondered what your long-running scheduled job is doing right now? Are you waiting for it to finish, and considering if you have time for a coffee? Make your jobs give feedback!
-
Episerver Scheduled jobs - Stop and restart!EN
Have you ever wanted to kill a long-running scheduled job? You can! Also, make sure the job restarts if the hosting environment shuts down.
-
Syntax highlight code snippets in Episerver - Part 1: The basicsEN
Episerver is perhaps not the most used platform for developer blogs, but adding code snippets can be useful in other scenarios too. Adding syntax highlighting to TinyMCE is easy, using the Code Sample plugin. It works well with both Prism.js and Highlight.js, two popular syntax highlighters.
-
Syntax highlight code snippets in Episerver - Part 2: Styles and language supportEN
After completing part 1, setting up syntax highlighting with the bare minimum, it's time to let your code shine. Highlight.js has 95 different styles, or themes. Find one that you like, and go for it! Also, customize the list of available programming languages.
-
Syntax highlight code snippets in Episerver - Part 3: Display language labelEN
I would like to display the name of the programming language in the top right corner of my code snippets. One problem with this is, that I do not want to add any extra markup. I want to use the unmodified Code Sample plugin, I want to be able to change or reposition the label in the future.
-
Change text in Episerver TinyMCE UIEN
Descriptive alt texts on images are important, but in TinyMCE the field is called «Image Description». You can change that!
-
Episerver uses the file name as alternative text for imagesEN
When publishing images online, it's important with good alt-texts. Episerver has a bug that, by default, creates very unhelpful alt-texts. I explain, and present a workaround.
-
Change timezone for an Azure WebAppEN NO
The time zone of an WebApp will be UTC by default, but you may change it with an AppSetting.
-
The globe is back!EN
After disappearing in Episerver.CMS.UI 11.21.0, the globe is finally back in Episerver.CMS.UI 11.30.0.
-
«My Settings» throws ArgumentNullExceptionEN
A few missing pieces of localization configuration could stop «My Settings» from working. Let's fix it!
-
Episerver icons - use them!EN
When creating Episerver tools, editors and plugins, maintaining a consistent look and feel is a good thing. See what icons are available!
-
What happened to Episerver Social Reach?EN
Reading the documentation, Episerver Social Reach sounds like a nice tool, being able to post to multiple social media from the same user interface. I'm sorry, but Episerver Social Reach is dead!
-
Gruppering av egenskaper i Episerver CMSNO
Når egenskapene i Episerver blir for mange, kan det lett oppleves kaotisk. Jeg viser hvordan vi kan rydde og gruppere, så det blir enklere å finne frem.
-
Identify your Episerver content!EN
You can have multiple pages with the same name, you can even have a block and an image with the same name. When we are communicating about content, the name is not always the best.
-
Bedre bildehåndtering for redaktører i EpiserverNO
I løpet av de to siste årene har det kommet flere forbedringer som gjør det enklere for redaktører å jobbe med bilder i Episerver CMS. Forbedringene for har kommet gradvis over tid. Her kommer en oppsummering!
-
Edit mode search for Episerver page idEN
The search bar above the page tree in edit mode makes it easy to locate content without browsing the page tree. If you want to search for the page id, we should make some improvements!
-
Convert Episerver Blocks!EN
Content in Episerver CMS is organized using pages and blocks. If you by accident create the wrong page type, Episerver provides a feature for converting pages to a different page type. But what about blocks? Can they be converted? No! I had a look, and I was able to convert blocks too!
-
Remove «Reports» from the global Episerver menu - and the forum is great!EN
See how to modify the global Episerver menu!
-
Attribute to set TinyMCE settings per property in EpiserverEN
After the introduction of TinyMCE editor v2, creating an initialization module is the recommended way of configuring TinyMCE in Episerver. This works well when you want the same configuration for all your XhtmlString properties, but that is not always the case.
-
Free online training from Episerver!EN NO
Starting today, Episerver's eLearning courses for both business users and developers will be made available for free.
-
Renaming an Episerver page property using a migration stepEN
Safely rename an Episerver property, and retain the value it had before it was renamed, using a migration step.
-
Episerver and renaming a custom propertyEN
Until the release of EPiServer.CMS.Core 11.14.0 renaming a custom property was not that easy, now we can just add a GUID to our PropertyDefinitionTypePlugIn-attribute!
-
Automatic Alt Text for images in Episerver using Microsoft Azure Cognitive ServicesEN
I made a module for Episerver CMS that uses Microsoft Azure Cognitive Services Computer Vision API to generate automatic metadata for uploaded images.
2019
-
Make Episerver string textbox property wider!EN
Using UIHint you may choose if a string property should be displayed as a single-line or a multi-line editor. But why is the multi-line editor so wide, and the single-line editor so narrow? We can fix that!
-
Property count per tab in Episerver edit modeEN
Using an EditorDescriptor, it is possible to add a property count to each tab in edit mode. Now, we can easily see how many properties that reside in each tab.
-
Episerver image anonymization using Microsoft Cognitive Services and Face APIEN
With the introduction of the GDPR storing personal information is not something that should be taken lightly. Using Azure Cognitive Services it is possible to identify what's in the images that editors, or users, upload to your site. You may then choose to take action, based on the identified content and your policy.
-
Inspect your Episerver Find index!EN
Have you ever published a meaningless change to a Episerver page, just to make sure the Find index is up to date? Have you struggled with the Find UI to figure out what’s indexed for the page you just had opened in edit mode? One simple addon solves both problems!
-
Upgrade Episerver CMS + Find at the same time = everything blows up!EN
When upgrading both Episerver CMS and Episerver Find at the same time. Do not trust Episerver to handle updating both database schemas, things might blow up!
-
Undocumented breaking change in Episerver.Find 13.2.0 affecting on-premise Find installationsEN
After upgrading to Episerver.Find Episerver.Find 13.2, queries started to fail. Adding an undocumented setting introduced in 13.2.4 is necessary for on-premise installations.
-
«No parameterless constructor defined for this object» after upgrade to Episerver CMS 11EN
After upgrading from CMS 10 to CMS 11, I was puzzled by this exception occurring on all pages. It turned out it was quite an easy fix, and also documented in the list of breaking changes.
-
Put the globe back in Episerver!EN
In the latest update of the Episerver UI, a handy shortcut (the globe) was removed from the toolbar. Using dojo and javascript, I created a module that puts the globe back!
-
Move property to a non-existing tab!EN
I’ve previously described how you can move built-in Episerver properties to a different tab. This will only work perfectly if the destination tab already contains another property for the same page. If not, the title will look strange, the sort order will be missing, etc. Today we will move a property to a non-existing tab!
-
Content URL, with or without shortcut?EN
There are several methods that will give you an URL to a Episerver content, but they do not all work the same. I dive into the details
-
What’s in your head?EN
In Episerver CMS, you are probably familiar with the concept of grouping properties into tabs. I show how you may move Episerver's built-in properties, and even tamper with the special tab PageHeader.
-
Episerver DateTime property without the Time!EN
Episerver has several built-in property types you may add to your content types, including DateTime that displays a date and time picker. Sometimes you do not want the time, only the Date!
-
Hiding Episerver’s Category propertyEN
Do not confuse your editors. If they do not use the property, the do not need to see it!
-
Episerver pagetree search shows encoded html entities after upgrading to the new UIEN
When the new and refreshed editor UI was released, the search box above the page tree in edit mode broke! I show you how to fix it, using a custom search provider.
-
The horrors of the Episerver Link Validation JobEN
Preventing broken links is an important part of maintaining a website. Episerver's Link Validating job tries to help us, but unfortunately, it has its shortcomings.
-
Episerver Find and The Great Wall of ChinaEN
Episerver Find could make your website unusable in China. I explain why this happens, how you can fix it.
-
Culture specific image properties in EpiserverEN
MediaData, the base class for files and images in Episerver, does not implement ILocalizable and thus does not have the option to include culture-specific properties. I present a workaround.
-
Image preview in Episerver all properties viewEN
Editing image properties would be more intuitive if we could see both the image and the properties at the same time! Let's add image preview to All properties view!
2018
-
DropDownList in on-page editing?EN
The attributes [SelectOne] and [SelectMany] can be used in combination with a SelectionFactory to create Episerver properties in the form of DropDownLists and CheckBoxLists. Let's make them work in one-page edit!
-
Change text in the Episerver UIEN
The texts in the Episerver UI can sometimes be confusing for the editors. Luckily, we can override all texts stored in Episervers language files, in two easy steps.
-
Show full language name in the Episerver page treeEN
See how to replace the language code in the Episerver page tree with the full language name.
-
Property prompt for EpiserverEN
You can add a placeholder, watermark, or (as Episerver calls it) a prompt to some properties. See how it's done!
-
Episerver help texts, improvedEN NO
Add custom help text, or headings to Episerver edit mode.
-
Episerver remote UDP events after upgrading to CMS 11EN
How to fix a Configuration Error after upgrading to Episerver CMS 11.
-
Episerver og de nye listeegenskapeneNO
Jeg sjekker ut de nye egenskapene til Episerver, ser hvordan de fungerer, og hvordan vi kan gjøre tilpasninger.
-
Episervers modulinnstillingerNO
Et Episerver-nettsted av en viss størrelse vil normalt ha en del konfigurasjon som avanserte redaktører og administratorer har et forhold til, og trenger å endre. Her er en måte å løse det på.
-
Episerver.Forms and the solving of a performance issueEN
A form with more than a handful form elements can get incredible slow, if you use the element «Rich text (with placeholder)». I came across a form that took 25 seconds to load, resulting in over 700 calls to the database. Some rewriting got the loading time down to 256 milliseconds!