Our blog contains the activity stream of Orchard Dojo: general news, new resources or tutorials are announced here.

Orchard Harvest 2026 program, Your website should integrate with your business systems - This week in Orchard (26/06/2026)

The full Orchard Harvest 2026 conference program is live, with the event taking place in Vancouver on September 10-11. Grab your early-bird ticket for just $280 and join the community for two days of sessions and networking!

Form submissions shouldn't end up in manual copy-paste routines. Orchard Core connects directly with Zapier, Make, and n8n to automatically trigger CRM updates, notifications, and more. DotNest's managed hosting makes the whole setup hassle-free!

The Health Checks module by Hisham Bin Ateya lets you restrict access by IP, apply rate limiting, and DoS protection for your health check endpoints, all configurable via JSON.

Managing multiple tenants on the same database just got easier. New RequireTablePrefix and TablePrefixPattern options, introduced by Mike Alhayek, let you enforce or auto-generate table prefixes (e.g., using the tenant name), so your setup is consistent and error-free out of the box.

No more guessing which properties to use for the Settings recipe step. Every module with configurable settings now includes a dedicated Recipe Configuration section with examples!

Ready to explore? Let's dive in!

Latest tutorials

Featured tags

AI
IIS
SMS
MCP
API
SEO
All tags >

Orchard Harvest 2026 program, Your website should integrate with your business systems - This week in Orchard (26/06/2026)

The full Orchard Harvest 2026 conference program is live, with the event taking place in Vancouver on September 10-11. Grab your early-bird ticket for just $280 and join the community for two days of sessions and networking!

Form submissions shouldn't end up in manual copy-paste routines. Orchard Core connects directly with Zapier, Make, and n8n to automatically trigger CRM updates, notifications, and more. DotNest's managed hosting makes the whole setup hassle-free!

The Health Checks module by Hisham Bin Ateya lets you restrict access by IP, apply rate limiting, and DoS protection for your health check endpoints, all configurable via JSON.

Managing multiple tenants on the same database just got easier. New RequireTablePrefix and TablePrefixPattern options, introduced by Mike Alhayek, let you enforce or auto-generate table prefixes (e.g., using the tenant name), so your setup is consistent and error-free out of the box.

No more guessing which properties to use for the Settings recipe step. Every module with configurable settings now includes a dedicated Recipe Configuration section with examples!

Ready to explore? Let's dive in!

AI Initial Prompt Behavior and AI Chat Session Analytics, Speaker application deadline for Orchard Harvest extended to May 15 - This week in Orchard (08/05/2026)

This week, Mike Alhayek shows new features to the AI Suite: Initial Prompt, data extraction, post-session processing, and AI Chat Session Analytics!

But before that, check out how Hisham Bin Ateya and Georg von Kries improved the feature dependency display and interactivity, and the new protect global method provider by Mike Alhayek!

Harvest speaker applications are now open until May 15! If you’ve been considering speaking at Orchard Harvest, this is a great opportunity to share your ideas with the Orchard Core community. Join us on the 10th and 11th of September in Vancouver!

Let's see the details!

IntelliSense for recipes, Orchard Core Commerce 3.1 - This week in Orchard (06/02/2026)

See how we replaced the dynamic ContentCard shapes with strongly typed shapes to enhance Orchard Core development! Take a look at the updated documentation for the UserDisplayName shape if you struggled to display user information in your custom format. You could also see a demo about how to expose recipe step metadata and JSON schemas, enabling IDE autocompletion, AI tooling integration, and recipe validation. Oh, and have we mentioned that Orchard Core Commerce has just got a fresh new release?

Show a badge if a user is locked out, Lombiq Orchard Visual Studio Extension v.1.8.1 - This week in Orchard (27/06/2025)

This week's topics include displaying a badge when a user is locked out, renaming the ResetIndexProfile and RebuildIndexProfile recipe steps, and enhancing documentation for the indexing module. And have we mentioned that we've released a new version of our Orchard Visual Studio Extension, which now includes support for Razor Pages to the Dependency Injector?

Add Recipe Roles permission behavior, how to add media management to an ASP.NET Core app? - This week in Orchard (24/01/2025)

This week's topics are migrating the OpenID module to OpenIddict 6, adding Recipe Roles permission behavior, and we will mention our latest Orchard Nuggets post, where you can learn how to add media management to an ASP.NET Core app. Without further ado, let's dive in!

Users with permission can disable Two-Factor Authentication, Orchard Nuggets: How to add an audit trail to an ASP.NET Core app - This week in Orchard (15/11/2024)

New NamedRecipeStepHandler base class and users with permission can disable Two-Factor Authentication are the topics for this week. Don't forget to check out our newest Orchard Nuggets post about how to add an audit trail to an ASP.NET Core app! Let's see the details!

Dynamic index tables, allow any user to manage two-factor authentication - This week in Orchard (28/06/2024)

Allow any user to manage two-factor authentication, show recipe error instead of throwing an exception, and a demo about Dynamic index tables are the topics for the week. You can still apply to speak at Harvest 2024 and share your insights on Orchard Core's future, CMS roles, AI tools, cloud integrations, and more! Let's see the details! Orchard Core updates Allow any user to manage two-factor authentication Two-factor authentication (2FA) is now available for all users. Previously, only users with permission to access the admin area could set up their 2FA methods, although all users could still use 2FA if it was set up by an admin. To enable this change, the method IsRequiredAsync() in both the ITwoFactorAuthenticationHandlerCoordinator and ITwoFactorAuthenticationHandler interfaces has been updated to IsRequiredAsync(IUser user). Summary of changes The feature OrchardCore.Users.EmailConfirmation was removed. This feature was recently added and was enabled by dependency only. Its services have been moved up to the OrchardCore.Users feature since it is a core functional and needed by OrchardCore.Users. Using the 2FA email method now requires email confirmation using the existing email confirmation process. As mentioned, the method IsRequiredAsync() in both the ITwoFactorAuthenticationHandlerCoordinator and ITwoFactorAuthenticationHandler was changed to IsRequiredAsync(IUser user). OK, so, what does it look like in action? First of all, you have to make sure that you have at least one two-factor authentication method enabled. To do that, you have to navigate to Configuration -> Features and enable the regarding features. We enabled two modules: Two-Factor Authenticator App Method: Provides users with a two-factor authentication method through any Authentication App. Two-Factor Email Method: Provides users with a two-factor authentication method through an Email service. Orchard Core provides a third two-factor authentication method through an SMS service but these two will be enough for demonstration. After that, we need to have a user without any special roles. We created a user under Security -> Users, where we used John as the user's name. Make sure that this user is enabled to be able to log in as John. The last thing we have to do is to make sure that the Default Theme is the current site theme because that theme renders the navbar by default and includes the dropdown with the Security-related settings. And as you can see in the screen below, we logged in as John. If you click Security on the dropdown menu that we mentioned earlier, you may notice that John can enable the two-factor authentication by adding one of the below two-factor methods. The SMS is not here, because we have only enabled the App Method and the Email Method features. Show recipe error instead of throwing an exception Currently, when importing a recipe and something goes throw, implementations of IRecipeStepHandler or IRecipeEventHandler will throw exceptions to report errors if something fails to import. In a production environment, the user gets a white page, which leaves them lost on what had happened. This is no longer the recommended approach for error reporting. Now, to handle errors, we have introduced a new property named Errors in the RecipeExecutionContext. This property allows you to log errors instead of throwing exceptions. These errors should be localized and must not contain any sensitive data, as they are visible to the end user. Exceptions are still used for logging additional information, but these are not shown to the end user. Additionally, if an error occurs, a new custom exception, RecipeExecutionException, is thrown. Let's say you want to import a deployment package or import JSON from text. Assume that the JSON contains some errors in both cases. Here, you can see that Orchard Core shows the error to the user so they have feedback instead of dumping an exception or a white page. And the same applies if you want to execute a recipe that contains errors. Demos Dynamic Index Tables When using YesSql index tables, you have to build these index tables using code. This solution provides you with a way to build index tables without the need to write code. Using the admin UI, you can select the content type you want to index and you can add the table columns using a nice UI. You can also use a script to execute to build the column value mapping. Here, you can return how you wanted to be your content item indexed. In the screen below, you can see the index table for the content type called Comic Book. In the Map Script editor, we defined what we should need to return when retrieving the values inside the DisplayText, IssueVolumeNumber, and ReleaseDate columns. After that, if you do a SELECT * query for this index table, you may notice that the table contains the columns defined in the previous step. And it's just the top of everything this feature offers. If you are curious about the details, check out this demo video on YouTube for more! News from the community Orchard Harvest 2024 date and location Get ready to power up your Orchard skills at Orchard Harvest Conference 2024! Join us on September 12th-13th at the Orleans Hotel and Casino in lively Las Vegas for two days packed with learning, coding, and community fun. What can you expect at Orchard Harvest Conference 2024? Hands-On Workshops: Elevate your coding game with interactive sessions led by industry experts. Insider Insights: Learn best practices, advanced techniques, and real-world insights from qualified developers. Global Connections: Connect with fellow enthusiasts, exchange ideas, and forge meaningful relationships within the Orchard community. Special Perks: Participants get exclusive discounts on accommodations at the Orleans Hotel and Casino. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on our YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today and take advantage of early-bird pricing at Orchard Harvest Conference 2024. We also opened the registration form for the speakers: https://forms.office.com/e/fewh7hh20d This year's leading themes: Leading up to a v3.0, what will the future Orchard Core look like? What's the role of a CMS nowadays (with the decoupled/headless operating models, and AI development tools) Explore some advanced topics such as Shapes, Placements, Cloud Integrations, Performance, module extensibility, etc. Showcases on implementing Orchard Core in action. We've extended the sign-up period by another 2 weeks, so if you haven't signed up yet, you can still sign up now! Apply to be a speaker until the 29th of June, midnight Anywhere on Earth! We'll notify you whether your talk is selected for Harvest in 1 or 2 weeks after the application period. The chosen speakers will receive complimentary tickets for the event. Want to support our mission? Become a sponsor! Reach out to us at [email protected] or [email protected] to explore sponsorship opportunities. Secure your spot today and get ready to level up your skills at Orchard Harvest Conference 2024! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 473 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Support comments in recipes, multitenant decoupled Blazor InteractiveServer example - This week in Orchard (05/04/2024)

Support comments in recipes, support Create and CreateAsync in DataMigrationManager, and a demo about a Multitenant Decoupled Blazor InteractiveServer Example! Let's see the details! Orchard Core updates Support comments in recipes The recipe reader doesn't support comments in JSON (it's a mode that isn't turned on). This can be annoying when you have a lot of recipes and need to make notes in them as to why you did something. It's because System.Text.Json by default doesn't support comments. We parse using JOptions.Document that is not configured to allow comments. From now on, the settings of the JOptions have been changed to allow comments in recipes. Support Create and CreateAsync in DataMigrationManager You could run into a problem with data migrations: your migrations may not proceed after a module's initialization. The reason for that could be a change of synchronous code to asynchronous. It can happen because you may forget to add the Async suffix in the CreateAsync method. That could be OK, but there is inconsistency in the behavior of UpdateFromX(Async) and Create(Async). Updates work correctly no matter what suffix but Create does not. Now, this behavior has been unified; both Create and CreateAsync methods are now supported. Demos Multitenant Decoupled Blazor InteractiveServer Example In this demo, you can see how to use Orchard Core in a decoupled scenario. There's also a discussion under a GitHub PR to add a Blazor guide for decoupled CMS. Sijmen Koffeman decided to follow this guide and make this a multi-tenant application because that would be very interesting to do in his current situation where he maintains a line of business applications that they provide to several tenants. He took the example from the guide and made it further, and that works so far. In his demo, you can do a deep dive into the code that sits inside the Orchard Core Multitenant Decoupled Blazor InteractiveServer Example repository to see the current state of this work. Head to YouTube for a recording to know more! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 472 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Add search handler, Gravatar Module - This week in Orchard (06/04/2023)

Add search handler; fix bad async usage in RecipeHarvester, and a demo about the Gravatar Module! Check out our post for the details! Orchard Core updates Add search handler You may need a way to be able to log search attempts. Like if a search is leading to 0 hits, you want to know about it and report on it. This is something we can easily add by adding a handler that is called after a search is executed. So, this feature is about adding an ISearchHandler which is called from the search controller. This handler has a SearchedAsync method that is triggered after a search is executed. In the following screen, you can see the ISearchHandler interface itself, and the code that invokes its SearchedAsync method. Fix bad async usage in RecipeHarvester The IRecipeReader interface has a GetRecipeDescriptor method, which is now marked as obsolete. Instead of that, you will need to use the new GetRecipeDescriptorAsync in the future. The reason for that is the HarvestRecipesAsync method in the RecipeHarvester was not awaited, and the solution was to have a foreach loop to do an await GetRecipeDescriptorAsync() since it doesn't require thread safety. Demos Gravatar Module Gravatar (globally recognized avatar) is a service for providing globally unique avatars. On Gravatar, users can register an account based on their email address, and upload an image of their choice to be associated with that email address. And the OrchardCoreContrib.Modules repository contains a module that utilizes the Gravatar service! So, for this demo, we will clone the following GitHub repository, which contains a set of modules for Orchard Core CMS that is driven by community members who love Orchard Core. This will encourage all the passionate developers to build modules that aren't included in Orchard Core. Such modules may be necessary for the community or essential for any sort of CMS. The module that enables user avatars using the Gravatar service is called the Gravatar Module. If you run this solution and enter the admin site using the admin username and admin@OCC123 password, you can navigate to Configuration -> Features and search for the "gravatar" word to enable the Gravatar feature. This will mean that now you can utilize the new Gravatar HTML Tag Helper and the gravatar_url Liquid Filter. Let's try them out! To use the new Liquid Filter, we created a new content type with the Liquid Part attached to be able to add some Liquid code to our content item. We created a new content item of this content type and called it Gravatar Liquid Filter Demo. Here we constructed a list that contains the names and email addresses of some of the main Orchard Core contributors. Please note that the reason why we can use these email addresses here is that all of these addresses have an associated Gravatar. The gravatar_url Liquid Filter calls the GetAvatarUrl method of the GravatarService to retrieve the Gravatar image URL. Once we have the URL, we can use it as the src for the img HTML tag. The Gravatar Tag Helper is already utilized by the Gravatar module. If you check out the navigation bar of the admin site, you can see the Gravatar of the currently logged-in user here instead of the default one. That's because the module contains a UserMenu.cshtml file which overrides the given shape. Here we used the email address of the currently logged-in user and also provided a size, which is the width of the rendered image. And as always, if you would like to learn more about this module, don't forget to check out this recording on YouTube! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 434 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!