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.
It's easier than ever to import blobs and databases into the Optimizely DXP integration environment without involving support.
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.
Learn how to identify the most frequently used content types in your Optimizely CMS installation using SQL.
Find out what security.txt is, why it's essential, and how you can easily implement it in your Optimizely site!
Do you find the traditional editor interface complicated and cluttered? Would you like an editorial AI assistant you can chat with? You can!
.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.
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!
Enum properties in Episerver/Optimizely has been used for more than 10 years. I've made a few minor enhancements.
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!
The all new semantic AI powered search feature, and GraphQL API, for Optimizely CMS is finally released! Check it out!
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!
You can now auto-translate content using your favorite online AI service, inside the old trustworthy Episerver.Labs.LanguageManager!
These days, AI is everywhere! Why not put some AI into your database too? What could possibly go wrong?
The NuGet package EPiServer.CMS.Core versions up to 12.16.0 included a reference to SixLabors.ImageSharp. Now, that has ended...
How to fix an issue in Optimizely CMS where the scheduled job «Change Log Auto Truncate» would fail with a timeout.
Optimizely CMS 12.22.0 introduced a new menu system and support for Optimizely Identity.
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!
Update default branch for manual and scheduled builds in Azure DevOps Pipelines.
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!
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.
Still using the old version of Sanity Studio? Now is the perfect time to upgrade to Sanity Studio v3!
Optimizely CMS adds deep linking from broken links report to edit mode. Makes it easier to track down those broken links!
Todays update makes it easier to add content directly from TinyMCE!
For years, the Generic PropertyList has been widely used, despite it being unsupported. Today a better option is released!
In the past, we have used different tricks to achieve this. Now, the LinkItem property is finally built-in in Optimizely CMS 12!
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!
When Optimizely released version 12 of their CMS, it was not possible to configure how links should be validated. Now it is!
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.
What is really the right way? And who decides what's the right way? I don't...
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...
Some of the new AI services have received a lot of attention recently. Can you integrate them in Optimizely CMS? Of course, you can!
After upgrading to the latest version of EPiServer.CMS.TinyMce, the dropdown with formats disappears. Learn how to get it back!
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.
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.
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!
The default max file upload size in CMS 12 is 4MB. Learn how to increase it!
Jeg fikk et kjapt intervju med nykommeren ChatGPT, som stilte opp på kort varsel, og svarte på mine spørsmål – på norsk!
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!
Not all URLs will work when the trailing slash is added, and that could cause problems. Hopefully it will be fixed soon.
Can you run Optimizely CMS on .NET 7? Yes! Can you upgrade in less than a day? Probably!
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.
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.
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!
With Episerver.CMS.UI 12.12.0 the Report Center is finally re-introduced in the core product.
Microsoft has not been clear about its recommendation for extension method namespaces, until now.
Upgrade-assistant produces a very long log file in the CLEF format. Use Compact Log Viewer to make sense of it!
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.
Access tokens are easily renewed, if you know how!
The addon that gives you super powers directly in your browser is upgraded to support CMS 12 and .NET 6. Enjoy!
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.
GitHub Code Search lar deg raskt og enkelt søke i både egen og andres kode.
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! 👻
.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.
.NET 5 has reached end of support - you should update to .NET 6 today!
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...?
Wave goodbye to the EPiStateMarker cookie!
.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 from one page type to another! Great! But what about blocks and media...?
In Optimizely DXP, you can't access the live production environment directly. However, you can still download the database and blobs!
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!
Is it possible to upgrade an add-on to support .NET 5 and Optimizely CMS 12 in just three minutes? Hold my beer!
Sanity has launched a new feature called field groups. Field groups work almost as tabs. Learn how to make them work exactly like tabs!
Learn how to renew your Optimizely Content Cloud developer certification for free!
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 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!
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!
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 recently launched their GROQ-powered webhooks, and they are really powerful! But there is a bug...
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!
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!
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!
The Optimizely (formerly Episerver) user interface has a link to the User Guide, you can update this link if you want to.
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.
When upgrading Optimzely Content Cloud, the database schema might need updating too. Confused? Let me explain...
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!
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!
Yesterday Optimizely announced the addition of 11 new Most Valuable Professions - OMVPs! Congrats and welcome!
Content Manager is finally updated, and it's now possible to create and publish content without going through a bunch of meaningless steps.
Increase web performance by lazy loading images! With native browser support it's easier than ever!
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?
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.
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!
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!
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!
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!
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.
If you are faced with this error message when you log into Episerver Edit mode, do not fear. It can be easily fixed.
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.
Files uloaded to an Episerver Form, can not be accessed without logging in. Unless...
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.
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.
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!
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!
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!
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.
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.
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.
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.
Descriptive alt texts on images are important, but in TinyMCE the field is called «Image Description». You can change that!
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.
The time zone of an WebApp will be UTC by default, but you may change it with an AppSetting.
After disappearing in Episerver.CMS.UI 11.21.0, the globe is finally back in Episerver.CMS.UI 11.30.0.
A few missing pieces of localization configuration could stop «My Settings» from working. Let's fix it!
When creating Episerver tools, editors and plugins, maintaining a consistent look and feel is a good thing. See what icons are available!
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!
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.
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.
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!
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!
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!
See how to modify the global Episerver menu!
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.
Starting today, Episerver's eLearning courses for both business users and developers will be made available for free.
Safely rename an Episerver property, and retain the value it had before it was renamed, using a migration step.
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!
I made a module for Episerver CMS that uses Microsoft Azure Cognitive Services Computer Vision API to generate automatic metadata for uploaded images.
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!
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.
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.
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!
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!
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.
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.
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!
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
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 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!
Do not confuse your editors. If they do not use the property, the do not need to see it!
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.
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 could make your website unusable in China. I explain why this happens, how you can fix it.
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.
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!
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!
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.
See how to replace the language code in the Episerver page tree with the full language name.
You can add a placeholder, watermark, or (as Episerver calls it) a prompt to some properties. See how it's done!
How to fix a Configuration Error after upgrading to Episerver CMS 11.
Jeg sjekker ut de nye egenskapene til Episerver, ser hvordan de fungerer, og hvordan vi kan gjøre tilpasninger.
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å.
Add custom help text, or headings to Episerver edit mode.
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!