<rss version="2.0">
  <channel>
    <link>https://orcharddojo.net/Contents/ContentItems/orcharddojoblog00000000000</link>
    <description><![CDATA[]]></description>
    <item>
      <title>Help shape Orchard Core's new website, a new website using Orchard Core - This week in Orchard (17/07/2026)</title>
      <link>https://orcharddojo.net/blog/help-shape-orchard-core-s-new-website-a-new-website-using-orchard-core-this-week-in-orchard-17-07-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>OCAT CSS Classes for Admin Editors</h3><p>This change by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> focuses on improving the consistency and maintainability of the Orchard Core admin UI by standardizing form layouts, enhancing accessibility, and refining the structure of several view files. The main changes include removing the <em>TheAdminThemeOptions</em> and the <em>CssOrchardHelperExtensions</em>, so admin editor views now use static CSS classes prefixed with <em>ocat-</em> (Orchard Core Admin Theme) instead of C# helper methods that injected CSS classes at runtime.</p><p>For example, in <em>BooleanField.Edit.cshtml</em>, the <em>Orchard.GetFieldWrapperClasses()</em> helper was replaced by <em>ocat-wrapper</em> and <em>Orchard.GetEndClasses()</em> by <em>ocat-end-offset</em>.</p><p><img alt="Replace CssOrchardHelperExtensions with ocat classes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260717/replace-cssorchardhelperextensions-with-ocat-classes.png"></p><p>The <a href="https://docs.orchardcore.net/en/latest/reference/themes/admin-theme/" target="_self">docs about the Admin Theme Conventions</a> mention the available OCAT CSS classes for Admin Editors, the Content Part and Field Wrapper classes with some examples about how to use OCAT classes in custom views.</p><p>The <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#admin-theme-removal-of-theadminthemeoptions-and-css-helper-extensions" target="_self">release notes for Orchard Core 3.0</a> list the CSS helper extensions that were removed along with the new CSS classes to use instead.</p><h3>Enable Liquid Support for Workflow Tasks alongside JavaScript</h3><p>Thanks to <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, all workflow tasks that previously only supported JavaScript now also support Liquid. Additionally, <em>LiquidTask</em> was added to mimic <em>ScriptTask</em>.</p><p>As you can see, the <em>SetProperty</em> task now includes a <em>Syntax</em> selector for switching between JavaScript and Liquid.</p><p><img alt="Enable Liquid support for Workflow tasks" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260717/enable-liquid-support-for-workflow-tasks.png"></p><p>All affected workflow edit views (<em>ForEachTask</em>, <em>ForLoopTask</em>, <em>IfElseTask</em>, <em>SetOutputTask</em>, <em>SetPropertyTask</em>, <em>WhileLoopTask</em>, and the new <em>LiquidTask</em>) have been updated to use the <em>ocat-*</em> CSS class conventions mentioned previously required by the admin theme.</p><p>You can also find a new AI agent skill called <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/.agents/skills/orchardcore-admin-edit-views/SKILL.md" target="_self">OrchardCore Admin Edit Views</a> under <em>.agents/skills/</em> to document the <em>ocat-*</em> CSS class patterns so future AI-assisted development correctly uses the two-column admin edit view layout.</p><h3>Demos</h3><h4>Help Shape Orchard Core's New Website</h4><p><a href="https://github.com/buzznick" target="_self">Nick Jackson</a> presents a demo of the proposed Orchard Core website redesign, outlining design decisions, targeted audiences, content structure, and plans for feedback and further development.</p><p>The redesign targets two audiences: .NET developers evaluating the framework, and the business decision-makers (agency owners, CTOs, clients) who need reassurance that Orchard Core is a safe, mature choice. Nick explained the design reasoning in detail: the visual style intentionally mirrors the existing admin UI for consistency, the layout is clean and modular to match the product itself, the color palette leans on Orchard Core's green tones for a trustworthy feel, and icons and stock photography were minimized in favor of real screenshots and contributor data. <a href="https://github.com/orgs/OrchardCMS/discussions/19367" target="_self">His post on GitHub</a> also includes a factual comparison table against Umbraco and ABP, positioning Orchard Core as a combined CMS/application framework that's free and community-led.</p><p>The stated goals are to drive more installs/trials and to reassure business stakeholders about cost, governance, and longevity, with a toggle letting visitors switch between developer-focused and business-focused messaging.</p><p><img alt="New Orchard Core Website" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260717/new-orchard-core-website.png"></p><p><a href="https://orchardcorewebsite.blob.core.windows.net/demo/v1/index.html" target="_self">See the preview</a> and share your feedback on direction, accuracy, and tone.</p><p><a href="https://www.youtube.com/watch?v=aWh1ovEnyxE" target="_self">Watch it on YouTube</a> and <a href="https://github.com/OrchardCMS/OrchardCore.Website/pull/17" target="_self">check out the pull request</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/aWh1ovEnyxE" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>A new website using Orchard Core: GoRide</h3><p>GoRide is a hyperlocal marketplace, their mission is to bring merchants together to offer you the best possible bike rental fleet. Check out their <a href="https://lombiq.link/jmp/5fd55cdf" target="_self">Orchard Core site here</a>!</p><p><img alt="GoRide" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260717/goride.png"></p><p>For more Orchard Core sites in the wild, visit <a href="https://lombiq.link/jmp/38134ed" target="_self">Show Orchard</a>, a community showcase of representative Orchard CMS and Orchard Core websites maintained by <a href="https://lombiq.link/jmp/eae10736" target="_self">Lombiq Technologies</a>. Show Orchard itself runs on Orchard Core on <a href="https://lombiq.link/jmp/48bc2175" target="_self">DotNest</a>. Read the <a href="https://lombiq.link/jmp/4e6e9030" target="_self">case study</a> on how we migrated it from Orchard 1!</p><p>If you're considering a similar migration, the Lombiq team is available to help. <a href="https://lombiq.link/jmp/25ded690" target="_self">Get in touch</a>!</p><h3>Orchard Harvest 2026 Program</h3><p>The Orchard Harvest 2026 conference will be held in Vancouver, and we look forward to seeing you all this autumn in Canada. Our confirmed dates for this year are September 10th and 11th.</p><p>Don't miss this limited-time offer: just $280 for two days of all-access learning and networking. <a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your early-bird tickets</a> to the conference now!</p><p>The full Orchard Harvest 2026 program is live! Be sure to check out the <a href="https://orchardcore.net/harvest" target="_blank">conference's updated official website</a> for the program!</p><p>As we move forward, we will keep community members informed of the details, and you will find every detail in this newsletter, too!</p><p>Don't miss the biggest Orchard Core event of the year!</p><p><img alt="Orchard Harvest 2026 Program" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/orchard-harvest-2026-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 414 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=HbIYY-55so4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 17 Jul 2026 09:04:10 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/help-shape-orchard-core-s-new-website-a-new-website-using-orchard-core-this-week-in-orchard-17-07-2026</guid>
    </item>
    <item>
      <title>Never Let Your SSL Expire Again, Convert Alerts to Dismissible Toasts - This week in Orchard (10/07/2026)</title>
      <link>https://orcharddojo.net/blog/never-let-your-ssl-expire-again-convert-alerts-to-dismissible-toasts-this-week-in-orchard-10-07-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Add import/export support for OrchardCore.Security settings</h3><p><em>OrchardCore.Security</em> lacked the ability to import/export its settings: no <em>IRecipeStepHandler</em> implementation (making even hand-crafted recipes impossible) and no <em>IDeploymentSource</em>. <a href="https://github.com/okalangkenneth" target="_self">Kenneth Okalang</a> fixed this by adding a <em>SecurityDeploymentStartup</em> that registers a site settings property deployment step for <em>SecuritySettings</em> via <em>AddSiteSettingsPropertyDeploymentStep</em>. Both import and export (via recipe steps and deployment plans) are now available through the standard UI.</p><p>In the admin UI, navigate to <em>Settings -&gt; Security -&gt; Security Headers</em> to configure the content security policy, permissions policy, and referrer policy.</p><p><img alt="Security headers settings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/security-headers-settings.png"></p><p>To export, go to <em>Tools -&gt; Deployments -&gt; Plans</em>, create a new deployment plan, and add the <em>Security settings step</em>. Execute the plan and download the result. Unzipping the archive reveals a <em>Recipe.json</em> with the settings for all three <em>Security Headers</em> tabs.</p><p><img alt="Execute security settings deployment plan" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/execute-security-settings-deployment-plan.png"></p><h3>Convert Alerts to Dismissible Toasts</h3><p>Notification messages generated by <em>INotifier</em> will now display as toast alerts. By default, only <em>Success</em> notifications are automatically dismissed after 5 seconds, while <em>Error</em>, <em>Warning</em>, and <em>Information</em> notifications remain visible until manually dismissed.</p><p>Developers can customize the dismissal timeout or disable automatic dismissal entirely. All notification types can also be manually closed by users using the X button.</p><p>This improves the user experience by preventing transient success messages from permanently occupying screen space, while ensuring more important notifications remain visible without affecting the layout or positioning of HTML components such as buttons.</p><p><img alt="Toast Notification" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/toast-notification.png"></p><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> also updated <a href="https://docs.orchardcore.net/en/latest/reference/modules/Notifications/#ui-notifications-with-inotifier" target="_self">the docs of the Notifications module</a> with code examples about how to send a notification, or how to customize the toast messages by overriding the <em>Message</em> and the <em>NotifyMessages</em> shapes.</p><p><img alt="Notifications Module Docs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/notifications-module-docs.png"></p><h3>Demos</h3><h4>Never Let Your SSL Expire Again - SSL Check Feature</h4><p><a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> created <em>SSL Check</em>, a new feature that will be part of the Orchard Core Security module. Enable it under <em>Tools -&gt; Features</em>. Once active, the <em>Multi-Tenancy -&gt; Tenants</em> page shows a colored <em>SSL</em> badge next to each tenant domain indicating certificate expiration status.</p><p><img alt="SSL Badge Tenants page" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/ssl-badge-tenants-page.png"></p><p>The thresholds are configurable under <em>Configuration -&gt; Security -&gt; SSL Checker</em>. Tenants within the warning threshold get a yellow badge; those within the critical threshold get a red badge.</p><p><img alt="SSL Checker Settings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/ssl-checker-settings.png"></p><p>The feature also integrates with the Admin Dashboard: enable the <em>Admin Dashboard</em> feature, and a widget appears on the admin home page summarizing all domains and their expiration dates.</p><p><img alt="SSL Widget Admin Dashboard" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/ssl-widget-admin-dashboard.png"></p><p>And it's still not all of it! A <a href="https://www.youtube.com/watch?v=0ZByxvkyOH8" target="_self">recording is available on YouTube</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/0ZByxvkyOH8" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Sponsorship Spotlight: Antoine Griffard</h3><p><a href="https://github.com/agriffard" target="_self">Antoine Griffard</a> has been contributing to Orchard since its earliest days (more than 15 years). In our new Sponsorship Spotlight series, he talks about what keeps him going: "If you give some time and effort to contributing, everything you did will be yours forever."</p><p><a href="https://lombiq.link/jmp/408149f5" target="_self">Read the full interview</a> to hear his story, from his first MVP Summit to the upcoming Orchard Harvest conference in Vancouver this September.</p><p><img alt="Sponsorship Spotlight: Antoine Griffard" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260710/sponsorship-spotlight-antoine.png"></p><h3>Orchard Harvest 2026 Program</h3><p>The Orchard Harvest 2026 conference will be held in Vancouver, and we look forward to seeing you all this autumn in Canada. Our confirmed dates for this year are September 10th and 11th.</p><p>Don't miss this limited-time offer: just $280 for two days of all-access learning and networking. <a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your early-bird tickets</a> to the conference now!</p><p>The full Orchard Harvest 2026 program is live! Be sure to check out the <a href="https://orchardcore.net/harvest" target="_blank">conference's updated official website</a> for the program!</p><p>As we move forward, we will keep community members informed of the details, and you will find every detail in this newsletter, too!</p><p>Don't miss the biggest Orchard Core event of the year!</p><p><img alt="Orchard Harvest 2026 Program" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/orchard-harvest-2026-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 414 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=HbIYY-55so4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 10 Jul 2026 10:08:24 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/never-let-your-ssl-expire-again-convert-alerts-to-dismissible-toasts-this-week-in-orchard-10-07-2026</guid>
    </item>
    <item>
      <title>Rethinking the Media Gallery, Explore Long-Term Orchard Core Support in Action - This week in Orchard (03/07/2026)</title>
      <link>https://orcharddojo.net/blog/rethinking-the-media-gallery-explore-long-term-orchard-core-support-in-action-this-week-in-orchard-03-07-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Jint async scripting APIs</h3><p>JavaScript global methods received the new <em>GlobalMethod.AsyncMethod</em> property, which is accessible in JavaScript as a function using the given name and the <em>Async</em> suffix. This is non-breaking, but we suggest using the new methods where applicable going forward. In cases where the method value is immediately returned, this is very simple, for example, replacing <em>deleteContentItem</em> with <em>deleteContentItemAsync</em>:</p><pre class="language-js"><code class="language-js"><span class="token string-property property">"ContentItemId"</span><span class="token operator">:</span> <span class="token string">"[js: deleteContentItem('blogContentItemId')]"</span></code></pre><p>can be replaced with</p><pre class="language-js"><code class="language-js"><span class="token string-property property">"ContentItemId"</span><span class="token operator">:</span> <span class="token string">"[js: deleteContentItemAsync('blogContentItemId')]"</span></code></pre><p>which works without any need to <em>await</em>, because the expression returns a <em>JavaScript Promise</em> object, which is automatically awaited by the engine.</p><p>So, the idea here is that we have <em>async</em> methods, like <em>deleteContentItemAsync</em>, which means we can call <em>await</em> on them. But at the same time, if we don't call <em>await</em>, then the new code will handle that, and await it.</p><p>If you check out the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Scripting/#content-orchardcorecontents" target="_self">related page in the Orchard Core documentation</a>, you can see the new versions of the functions.</p><p>Using the new version avoids a sync-over-async call that can cause a thread deadlock, so it's always preferable. Thanks for the contribution to <a href="https://github.com/sarahelsaig" target="_self">Sára El-Saig</a>!</p><p><img alt="Scripting module documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260703/scripting-module-documentation.png"></p><h3>CancellationToken to NotificationServices and use Result Pattern</h3><p>This change by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> introduces support for cancellation tokens throughout the email and SMS sending infrastructure and improves code documentation by adding XML doc comments. The most significant changes include updating public APIs to accept <em>CancellationToken</em> parameters, propagating these tokens through internal calls, and enhancing method documentation for clarity and maintainability.</p><p>So, the <em>IEmailService.SendAsync()</em>, <em>ISmsService.SendAsync()</em>, <em>IEmailProvider.SendAsync()</em>, and <em>ISmsProvider.SendAsync()</em> methods now accept a <em>CancellationToken</em>. This is a source- and binary-breaking change for custom email services, providers, and event handlers. Update your implementations and overrides to include the new <em>cancellationToken</em> parameter.</p><p>Check out the release notes of v3.0, where you can find the mentioned changes under the <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#notifications-module" target="_self">Notifications Module</a> and <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#email-interfaces" target="_self">Email Interfaces</a> sections.</p><p><img alt="Add CancellationToken to NotificationServices and use Result Pattern" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260703/add-cancellationtoken-to-notificationservices-and-use-result-pattern.png"></p><h3>Demos</h3><h4>Rethinking the Media Gallery - Now Powered by Vue 3</h4><p>The goal of this feature is to migrate the Media Library to Vue 3. It means migrating all the components (for example, the Media Picker) to Vue 3. Here you can <a href="https://github.com/OrchardCMS/OrchardCore/pull/14256" target="_self">find the pull request</a> containing the changes by <a href="https://github.com/Skrypt" target="_self">Jasmin Savard</a>.</p><p>This change also involves adding new media-related features. If you navigate to <em>Tools -&gt; Features</em> and search for "<em>media</em>", you will see several new ones:</p><ul><li>The <strong>Media SignalR</strong> and <strong>Media SignalR - Azure</strong> features enable real-time media updates via SignalR. When enabled, changes to media files and folders are broadcast to connected clients. You can use SignalR locally as a SignalR host, where the tenant becomes the host of the SignalR server. SignalR will synchronize changes across browsers, so you will see them instantly.</li><li>The <strong>Media TUS Uploads</strong> feature enables resumable file uploads using the TUS protocol. When enabled, it replaces the default chunked upload mechanism with the TUS standard, allowing uploads to be paused and resumed.</li><li><strong>The Media SignalR - Redis</strong> feature uses Redis as the backplane for real-time media updates, enabling multi-instance deployments.</li></ul><p>Now let's quickly see the new Media Library in action!</p><p>The navigation is different; we have different icons at the top. We can go to a grid with images and to a table view with more details about the files, but without the images. We can set the thumbnail size and the number of how many items we want to display per page. It also saves the preferences in your browser's local storage.</p><p><img alt="Media Library Vue 3" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260703/media-library-vue3.gif"></p><p>We have new modals in the Media Library. If we create a new subfolder, we can set the folder name in this modal. Or if we want to move/copy a file to a new folder, we can select the destination folder in another modal. As you can see, we have toast notifications for actions that happen on the Media Library. If you upload files, you can see the <em>Upload</em> modal at the bottom-right with the progress bar and a pause button.</p><p>And it's still not all of it! If you want to see the new Media Library in action, <a href="https://youtu.be/oKXDAA_Hi3o" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/oKXDAA_Hi3o" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Case study: Long-term Orchard Core maintenance for the City of Santa Monica</h3><p>Several years ago, we helped migrate <a href="https://www.santamonica.gov/" target="_self">santamonica.gov</a> from Orchard 1 to Orchard Core. Since then, our collaboration has continued with a different but equally critical focus: long-term maintenance and reliability.</p><p>Over the past couple of years, our work has centered on the kind of improvements that are rarely visible from the outside, yet essential for any long-running public website:</p><ul><li>Keeping Orchard Core up to date through major version upgrades.</li><li>Adding comprehensive automated testing, including accessibility, security, and visual regression checks.</li><li>Improving developer experience with predictable local setup.</li><li>Cleaning up and standardizing the codebase to make future changes easier.</li><li>Identifying and resolving performance bottlenecks.</li></ul><p>The goal was to leave the project in a state where development can continue safely and efficiently, without regressions, surprises, or accumulated technical debt.</p><p>As <a href="https://www.linkedin.com/in/sushmita-inamdar-36987822a" target="_self">Sushmita Inamdar</a>, Software Developer at the City of Santa Monica, put it:</p><p><em>"Lombiq continues to be an invaluable partner in maintaining and improving our Orchard Core platform… Their work behind the scenes has significantly improved the reliability, security, and maintainability of our platform."</em></p><p>We're grateful for the trust and the ongoing collaboration, and we're glad to keep supporting a mission-critical public website as it evolves.</p><p>If you run an Orchard Core site and are thinking about upgrades, testing, performance, or long-term maintenance, <a href="https://lombiq.link/jmp/bfd3b80a" target="_self">this case study</a> may be useful for planning your next steps.</p><p>Do you run an Orchard Core site that needs upgrading, testing, performance work, or long-term maintenance? <a href="https://lombiq.link/jmp/88f1c169" target="_self">Get in touch with us</a>, and we can help you plan the next steps.</p><p><img alt="City of Santa Monica case study" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260703/city-of-santa-monica-case-study.png"></p><h3>Orchard Harvest 2026 Program</h3><p>The Orchard Harvest 2026 conference will be held in Vancouver, and we look forward to seeing you all this autumn in Canada. Our confirmed dates for this year are September 10th and 11th.</p><p>Don't miss this limited-time offer: just $280 for two days of all-access learning and networking. <a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your early-bird tickets</a> to the conference now!</p><p>The full Orchard Harvest 2026 program is live! Be sure to check out the <a href="https://orchardcore.net/harvest" target="_blank">conference's updated official website</a> for the program!</p><p>As we move forward, we will keep community members informed of the details, and you will find every detail in this newsletter, too!</p><p>Don't miss the biggest Orchard Core event of the year!</p><p><img alt="Orchard Harvest 2026 Program" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/orchard-harvest-2026-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 414 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=HbIYY-55so4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 03 Jul 2026 10:35:38 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/rethinking-the-media-gallery-explore-long-term-orchard-core-support-in-action-this-week-in-orchard-03-07-2026</guid>
    </item>
    <item>
      <title>Sponsorship Spotlight: Antoine Griffard</title>
      <link>https://orcharddojo.net/blog/sponsorship-spotlight-antoine-griffard</link>
      <description><![CDATA[<p><strong>Gábor</strong>: When did you first come across Orchard?</p><p><strong>Antoine</strong>: In 2009-2010, I discovered the Orchard project in version 0.5 on Codeplex. It was originally managed by a team of people at Microsoft. I knew <a href="https://github.com/bleroy" target="_self">Bertrand Le Roy</a>, one of the project managers, whom I had met in 2007 in Redmond when I went to my first MVP Summit. A few months later, another developer I knew, <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a>, joined the team. In 2010, version 1.0 was released with ASP.NET MVC Razor views, and the project switched to an open-source approach. I started contributing to issues, docs, translations, and modules like Fields. An election was organized to select the first Steering Committee members. Bertrand was the benevolent dictator at that time. There was an Orchard gallery (which ran the first version of the NuGet Gallery) where you could deploy your own modules and themes. In 2012, the first conference was held in Santa Monica, where I was lucky to meet in person some of the contributors I had been in touch with. Among them, two young Hungarian students.</p><p><strong>Gábor</strong>: I think we all know who those two Hungarians could be!</p><p><strong>Antoine</strong>: Yes, that was the first time I met <a href="https://github.com/piedone" target="_self">Zoltán</a> and <a href="https://github.com/BenedekFarkas" target="_self">Benedek</a> in person. If I remember correctly, there was no Lombiq at that time.</p><p><strong>Gábor</strong>: You are correct: Lombiq was founded a year later, in 2013. We have just had our 13th anniversary. But they started contributing to Orchard and were part of the community even before Lombiq was founded. Speaking of which, why do you like contributing to Orchard?</p><p><strong>Antoine</strong>: After using the Framework and CMS, I felt like I had to give back a little. I switched from someone who uses a tool to someone who contributes to make it better and help people. For me, if you keep something for yourself, it is lost, but if you give some time and effort to contributing, everything you did will be yours forever. If you think about it, the contribution is the reward itself.</p><p><strong>Gábor</strong>: You are totally right. It's a very good feeling to see that the code you write could be part of something others will use or improve later. But what do you like most about Orchard?</p><p><strong>Antoine</strong>: Technically, I really like its modularity and extensibility. It offers many modules out of the box, and you can extend them with your own modules and themes. What I like most about Orchard Core is that it has made me a better developer in so many ways.</p><p><strong>Gábor</strong>: Are you contributing to other open-source projects too?</p><p><strong>Antoine</strong>: Probably not enough (laughs), but I try to contribute to other projects like Blazor component libraries (e.g., Fluent Blazor UI), Microsoft documentation, and products (e.g., Aspire). Sharing my knowledge is an important part of being a Microsoft MVP.</p><p><strong>Gábor</strong>: I know we started our discussion about some members of the community, but what do you think about the community in general?</p><p><strong>Antoine</strong>: The weekly meetings and discussion forums like <a href="https://orchardcore.net/discord" target="_self">Discord</a> make you feel like you're part of a community. And being able to meet people and travel all around the world for conferences like Orchard Harvest is priceless.</p><p><strong>Gábor</strong>: You attended the last two Harvests as well. In 2024, we organized it in Las Vegas, and last year the conference took place in Prague, Czechia. And <a href="https://orchardcore.net/harvest" target="_self">we will organize it again this year</a>: The next Orchard Core conference will take place in Vancouver, Canada, on September 10th and 11th! Will you be able to join, Antoine? If I remember correctly, you attended every single Harvest so far.</p><p><strong>Antoine</strong>: Hopefully yes, I'm working on it!</p><p><strong>Gábor</strong>: Thank you for the interview!</p><p><br></p><p>Stay tuned for the upcoming parts of the Sponsorship Spotlight series! If you don't want to miss them, sign up for the <a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7407473393501077505" target="_self">Lombiq Technologies Newsletter</a> and stay up to date with what's new, insightful, and happening at Lombiq.</p><p>Check out our <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f" target="_self">Orchard Dojo newsletter</a> too for news about Orchard!</p>]]></description>
      <pubDate>Wed, 01 Jul 2026 10:03:07 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/sponsorship-spotlight-antoine-griffard</guid>
    </item>
    <item>
      <title>Orchard Harvest 2026 program, Your website should integrate with your business systems - This week in Orchard (26/06/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-harvest-2026-program-your-website-should-integrate-with-your-business-systems-this-week-in-orchard-26-06-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Set up tenants faster with improved shared and preset database support</h3><p>The idea here is that if you have a setup with multiple tenants on the same database, you will need some sort of prefix to distinguish which one belongs to which. Today, the UI doesn't even require you to select the pattern; only the prefix is there to use. But if you don't use the prefix, you might get an error. So the <em>RequireTablePrefix</em> lets you make it required. But then, if you don't want that altogether, maybe you will have some sort of auto-generated prefix, and then you don't have to prompt the user at all. You can say just make the prefix the same as the tenant name and use that pattern everywhere. It allows users to make the tenants a bit easier to follow by using a given pattern.</p><p>So, if you check out <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#database-presets-required-prefixes-and-generated-database-names" target="_self">the release notes for Orchard Core 3</a>, you can see a new set of configuration options for creating table prefixes in multitenancy. The new <em>RequireTablePrefix</em> option can require a table prefix, and the new <em>TablePrefixPattern</em> lets you create a Liquid configuration like <em>ShellSettings.Name</em> to force the prefix to use the <em>ShellSettings.Name</em>. And this way, you don't have to provide it; it will be computed automatically. Thanks for the contribution from <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p><img alt="Tenants Setup Improvements" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/tenants-and-setup-improvements.png"></p><h3>Add Settings Recipe Step sections in the docs</h3><p>We were missing some documentation on how to customize settings via recipe steps. So, we can configure all the settings, but there is no documentation on which properties to provide for each setting. This contribution by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> is fixing the gap between what we can do and how we can do it. If people don't know what to do, then they will never do it. And if the Agent doesn't find the example, it will not know what to write in the recipe.</p><p>It means that from now on, you will find a <em>Recipe Configuration</em> section for all modules with settings that can be configured via the <em>Settings</em> recipe step. <a href="https://docs.orchardcore.net/en/latest/reference/modules/Users/#recipe-configuration" target="_self">Here you can find an example</a> showing how to configure the <em>Login</em>, <em>Registration</em>, and <em>Reset Password settings</em>, etc.</p><p><img alt="Settings recipe step sections in the docs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/settings-recipe-step-sections-in-the-docs.png"></p><h3>Demos</h3><h4>Lock Down Your Health Checks</h4><p>The <a href="https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules" target="_self">OrchardCoreContrib.Modules repository</a> contains a set of modules for Orchard Core that are driven by the community members who love Orchard Core. The repository contains several modules, and this time we will focus on the <em>Health Checks Module</em>, which provides health checks for your website. You can also add this module <a href="https://www.nuget.org/packages/OrchardCoreContrib.HealthChecks/" target="_self">as a NuGet package</a> to your project. Now, if you go to <em>Tools -&gt; Features</em> and search for <em>Health Checks</em>, you will see four features:</p><ul><li><strong>Health Checks</strong>: Provides health checks for the website.</li><li><strong>Health Checks Blocking Rate Limiting</strong>: Adds blocking behavior to the health checks rate limiter. Clients exceeding the limit are temporarily blocked to prevent DoS attacks.</li><li><strong>Health Checks IP Restriction</strong>: Restricts access to health checks endpoints by IP address.</li><li><strong>Health Checks Rate Limiting</strong>: Limits requests to health checks endpoints to prevent DOS attacks.</li></ul><p>Let's see how we can configure and use those!</p><p>As you can see, we have an <em>AllowedIPs</em> array under <em>Access</em>, where we can set the collection of IP addresses permitted to access health check endpoints.</p><p>The <em>RateLimiting</em> provides configuration options for rate limiting applied to health check endpoints. Here you can see that we set the maximum number of concurrent permits to 5 and the time window for which rate limiting is applied to 10 seconds. The duration a client is blocked after the rate limit is exceeded is 10 seconds.</p><p><img alt="Health Checks" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/health-checks.png"></p><p>As you can see, the health check URL is <em>/health</em>. So, if we hit that, we will get a detailed response because <em>ShowDetails</em> is <em>true</em>, which lets us show the details of the checks' dependencies. The <em>Status</em> is <em>Unhealthy</em> because one tenant is not running (<em>Tenant's health check</em> is provided by the <a href="https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules/blob/main/src/OrchardCoreContrib.Tenants/README.md" target="_self">OrchardCoreContrib.Tenants module</a>).</p><p>If we hit the endpoint more times than allowed within a given time frame, we will be blocked for 10 seconds, as specified by the <em>BlockDuration</em> property. And as always, if you want to see this module in action, <a href="https://www.youtube.com/watch?v=yHSuyVPbi4g" target="_self">head to YouTube for a demo</a> of this module by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/yHSuyVPbi4g" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Your website should integrate with your business systems</h3><p>When visitors submit a form, your team shouldn't be copy-pasting data into CRMs, sending Slack messages, or updating spreadsheets by hand. That's slow, inconsistent, and doesn't scale. Orchard Core makes integration simple without requiring custom code by:</p><ul><li>Sending form submission data directly to Zapier, Make, or n8n.</li><li>Triggering CRM updates, email workflows, and team notifications automatically.</li><li>Receiving webhook calls from external systems to create or update content inside your CMS.</li></ul><p>The result: your website stays stable while your business workflows evolve freely in the automation layer.</p><p>Ready to connect your website to your business systems?</p><p>DotNest's managed Orchard Core hosting lets you set this up without any infrastructure overhead. <a href="https://lombiq.link/jmp/84faec9e" target="_self">Check out our post for the details</a> and <a href="https://lombiq.link/jmp/279d8ced" target="_self">get in touch</a> to explore what's possible for your team.</p><p><img alt="Your website should integrate with your business systems" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/your-website-should-integrate-with-your-business-systems-dotnest.png"></p><h3>Orchard Harvest 2026 Program</h3><p>The Orchard Harvest 2026 conference will be held in Vancouver, and we look forward to seeing you all this autumn in Canada. Our confirmed dates for this year are September 10th and 11th.</p><p>Don't miss this limited-time offer: just $280 for two days of all-access learning and networking. <a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your early-bird tickets</a> to the conference now!</p><p>The full Orchard Harvest 2026 program is live! Be sure to check out the <a href="https://orchardcore.net/harvest" target="_blank">conference's updated official website</a> for the program!</p><p>As we move forward, we will keep community members informed of the details, and you will find every detail in this newsletter, too!</p><p>Don't miss the biggest Orchard Core event of the year!</p><p><img alt="Orchard Harvest 2026 Program" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260626/orchard-harvest-2026-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 414 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=HbIYY-55so4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 26 Jun 2026 09:27:58 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-harvest-2026-program-your-website-should-integrate-with-your-business-systems-this-week-in-orchard-26-06-2026</guid>
    </item>
    <item>
      <title>Orchard Core 3.0, Admin Theme in Orchard Core: The Developer cheat sheet - This week in Orchard (19/06/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-core-3-0-admin-theme-in-orchard-core-the-developer-cheat-sheet-this-week-in-orchard-19-06-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Admin Theme in Orchard Core: The Developer cheat sheet</h3><p>When building modules or custom admin pages in Orchard Core, knowing how to work with the Admin Theme is essential for creating a consistent and maintainable user experience. Whether you're styling forms or building custom editors, Orchard Core gives you a clean, framework-agnostic toolkit to do it right.</p><p>Ready to build better admin experiences in Orchard Core? Dive into the <a href="https://docs.orchardcore.net/en/latest/reference/themes/admin-theme/" target="_self">Admin Theme Conventions documentation</a> added by our new contributor, <a href="https://github.com/JasonPG2007" target="_self">Quoc Bao An Nguyen</a>, and start crafting custom admin interfaces that are flexible, maintainable, and visually consistent, no matter which theme your users choose.</p><p><img alt="Admin Theme conventions" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260619/admin-theme-conventions.png"></p><h3>Skip the Admin Dashboard: Configure ReCaptcha programatically</h3><p>You currently need to configure ReCaptcha settings from settings. This is a good and necessary way to do it, but for environment-based settings (like different ones for staging and prod), it'd be better to make them configurable via configuration providers as well. <em>ReCaptchaSettings</em> is almost ready for this. We can solve this in a similar way to what we have in a lot of other modules:</p><ul><li>Provide an extension method to do environment configuration, similar to <em>ConfigureAzureADSettings()</em>.</li><li>Check that everywhere where <em>ReCaptchaSettings</em> is used, it's used as an <em>IOptions&lt;ReCaptchaSettings&gt;</em> and not directly as site settings (except when the site settings are edited). E.g., <em>ReCaptchaLoginFilter</em> goes directly to the site settings instead of going the options way.</li></ul><p>With the latest updates by <a href="https://github.com/ghazi1567" target="_self">ghazi1567</a>, you can now streamline this process using the <em>ConfigureReCaptchaSettings()</em> extension method. This allows you to map your settings directly from <em>appsettings.json</em>, ensuring the <em>SiteKey</em> and <em>SecretKey</em> are applied automatically during application initialization. Check out the <a href="https://docs.orchardcore.net/en/latest/reference/modules/ReCaptcha/#recaptcha-settings-configuration" target="_blank">documentation of the ReCaptcha module for the details,</a> and thanks again, <a href="https://github.com/ghazi1567" target="_blank">ghazi1567,</a> for your first contribution!</p><p><img alt="ReCaptcha settings configuration" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260619/recaptcha-settings-configuration.png"></p><h3>Demos</h3><h4>Route Smarter: Chat Response Handlers</h4><p>There is a feature in the <a href="https://orchardcore.crestapps.com/docs/ai/" target="_blank">AI Suite</a> that is extremely helpful if you are exposing a chat widget to the public. It can change the chat's response using a chat response handler. This allows you to handle cases, like handing over a connection or a chat happening with AI. It means, like, you start a conversation with AI, and then the AI can decide to route you to a real person. So, using Chat Response Handlers lets you register custom handlers that route prompts to external systems, such as live agent platforms (e.g., Genesys, Twilio, Flex, LivePerson), rather than to AI.</p><p>This enables scenarios like:</p><ul><li><strong>Live agent handoff</strong>: An AI function detects the user needs human support and transfers the session to a live agent queue.</li><li><strong>Hybrid AI + human</strong>: AI handles initial triage, then a human agent takes over mid-conversation.</li><li><strong>Non-AI chat profiles</strong>: Configure a profile to skip AI entirely and route all prompts to an external system from the start.</li></ul><p><img alt="Chat Response Handlers" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260619/chat-response-handlers.png"></p><p><a href="https://www.youtube.com/watch?v=1FkqkNS9ZWA" target="_self">Check out this recording on YouTube</a> to see how Orchard can transfer you to a human agent via the <a href="https://lombiq.link/jmp/3149e504" target="_self">AI Chat Admin Widget and Frontend Widget</a>. In this demo by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, you can see that the AI Suite sends over the session with the context to Genesys, where the user can continue the conversation with a human.</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/1FkqkNS9ZWA" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Core 3.0</h3><p>The community yesterday released the third major version of Orchard Core with several new features and additions! This release is packed with performance improvements, bug fixes, and a variety of enhancements, making it our best version yet. Whether you're building a new project or maintaining an existing one, Orchard Core 3.0 brings stability and power to your fingertips. Why Upgrade to Orchard Core 3.0?</p><ul><li><strong>Enhanced Performance</strong>: Your sites and applications will run faster, smoother, and more efficiently.</li><li><strong>Rock-Solid Stability</strong>: We've squashed numerous bugs, ensuring a more reliable and enjoyable development experience.</li><li><strong>Seamless Development</strong>: By sticking to version control best practices, we've ensured no breaking changes in any patch or minor release, allowing developers to confidently create modules and libraries that will work across the entire 3.x series.</li></ul><p>Prior to initiating this upgrade, thoroughly review the <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/" target="_self">documented list of breaking changes</a> (such as Orchard Core 3.0 requiring .NET 10) to ensure a smooth, hassle-free transition.</p><p>Orchard Core is available as a NuGet package that you can easily add to your ASP.NET Core solution. Here's how you can <a href="https://docs.orchardcore.net/en/latest/getting-started/" target="_self">get started with Orchard Core</a>.</p><p>As you can see from the release notes, Orchard Core 3.0 contains many new additions compared to the previous version. From week to week, we try to summarize the latest features of the new release to make sure you will get the most out of your new version! If you are curious about what you can achieve, you will find all the information you need in this blog post series over the coming weeks!</p><p><img alt="Orchard Core 3 release notes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260619/orchard-core-3-relese-notes.png"></p><h3>Lombiq at BeerUP Tech Fest</h3><p>We had a blast at <a href="https://digitalk.tech/beerup-tech-fest-2026" target="_self">Digitalk-tech's BeerUP Tech Fest</a>! It was indeed more like a festival, with two tracks of talks running late into the night and a festival atmosphere in the garden. Met many people from Budapest's wider tech community and made many valuable connections.</p><p><a href="https://github.com/barthamark" target="_self">Márk Bartha</a>, <a href="https://github.com/piedone" target="_self">Zoltán István Lehóczky</a>, <a href="https://github.com/I3undy" target="_self">Milán Keszthelyi</a>, and <a href="https://github.com/domonkosgabor" target="_self">Gábor Domonkos</a>, as pictured, manned our table at the <a href="https://www.linkedin.com/company/vivetech" target="_self">ViVeTech Nyrt</a>, booth and engaged with attendees. Zoltán also gave the ".NET web architecture in regulated environments: CMS or custom development" talk, sharing our experiences working with clients in the healthcare, finance, insurance, construction, and government sectors.</p><p><img alt="Lombiq at BeerUP Tech Fest" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260619/lombiq-beerup-tech-fest.png"></p><h3>Orchard Harvest 2026 Early Bird tickets!</h3><p>We're excited to open registration for Orchard Harvest 2026!</p><p>This year, we've also created a short "convince your boss" one-pager to help you make the case for attending. It highlights the practical takeaways, business value, and networking opportunities waiting at the event.</p><p>If you want to learn from real-world Orchard Core use cases, get a better sense of where the platform is heading, and connect with experts and active community members, this is for you. We'll be sharing this year's speakers and topics over time, so stay tuned!</p><p><a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your spot today for the early bird pricing</a> and get ready to level up your skills at Orchard Harvest!</p><p><img alt="Orchard Harvest 2026" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/orchard-harvest-2026-pager.jpg"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 415 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=onZW40R6hII" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 19 Jun 2026 10:20:58 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-core-3-0-admin-theme-in-orchard-core-the-developer-cheat-sheet-this-week-in-orchard-19-06-2026</guid>
    </item>
    <item>
      <title>Mastering Lucene Query Syntax in Orchard Core, How to quickly spin off your Orchard Core site? - This week in Orchard (12/06/2026)</title>
      <link>https://orcharddojo.net/blog/mastering-lucene-query-syntax-in-orchard-core-how-to-quickly-spin-off-your-orchard-core-site-this-week-in-orchard-12-06-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Mastering Lucene Query Syntax in Orchard Core</h3><p>Lost in your content? Lucene's got the map. From fuzzy searches to regex wizardry, Orchard Core's query syntax lets you hunt down any document with pinpoint precision, wildcards, ranges, booleans, and all. Whether you're searching for "everything" (*:*) or something that almost matches, Lucene speaks your language.</p><p>Thanks to <a href="https://github.com/Manuel-dev-ing" target="_self">Manuel Tamayo Montero</a>, you can now find <a href="https://docs.orchardcore.net/en/latest/guides/lucene-query-syntax/" target="_self">a new guide in the Orchard Core documentation</a> with several examples of operators, expressions, fuzzy searches, and wildcard searches.</p><p><img alt="Lucene Query Syntax Documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260612/lucene-query-syntax-documentation.png"></p><h3>Use Jint async scripting APIs</h3><p>Jint 4.8 can now await promises and .NET task interop asynchronously. Orchard's JavaScript scripting paths were still executing through synchronous evaluation, which meant script-exposed async services had to block with <em>GetAwaiter().GetResult()</em>.</p><p>This change by <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> is about supporting async JavaScript scripts, but more importantly, supporting the asynchronous execution of any JavaScript script. Previously, the <em>Evaluate</em> method was not async; now there is an <em>EvaluateAsync</em> method in Jint. This way we don't have to call <em>GetAwaiter().GetResult()</em> on scripting, and we can just <em>await</em> the result. It allows workflows and other features relying on JavaScript to run asynchronously without blocking.</p><p><img alt="Use Jint async scripting APIs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260612/use-jint-async-scripting-apis.png"></p><h3>Demos</h3><h4>How to quickly spin off your Orchard Core site?</h4><p>The idea is to have an Electron app for people who are not really technical, or for those who just want to experiment with Orchard Core and quickly spin off a site. <a href="https://github.com/buzznick" target="_self">Nick Jackson</a> demos an application that lets you do that without going to an IDE.</p><p>If you hit the <em>New</em> button, you can choose between two different creation modes to set up your site:</p><ul><li><strong>Express</strong>: Quick setup with sensible default. Here you just need to pick a name, email, and recipe.</li><li><strong>Custom</strong>: Full control over database port, directory, and more.</li></ul><p>In both cases, you can select which modules and themes you want to install. For a custom installation, you can select which Orchard Core version to install, choose the recipe, the database provider, and so on.</p><p><img alt="Electron app select modules and themes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260612/electron-app-select-modules-and-themes.png"></p><p>So, it's just a quick experiment using a desktop app to see how it can run with Orchard. And as always, if you want to see how you can use this application, <a href="https://youtu.be/LiOWG8rEj8A" target="_self">head to YouTube for a quick demo</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/LiOWG8rEj8A" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Rebuilding DotNest.com: Orchard Core, Tailwind 4, and a more maintainable workflow</h3><p>As you may know, we recently rebuilt <a href="https://lombiq.link/jmp/71c416c5" target="_self">DotNest.com</a> (our managed Orchard Core hosting platform), treating it as more than a visual refresh. The project had three main focuses:</p><ul><li>Better Landing Page structure.</li><li>Modernized Front-End Workflow.</li><li>Practical AI-Assisted development.</li></ul><p><a href="https://lombiq.link/jmp/992937dc" target="_self">Our post</a> concludes that all three areas yielded real benefits: cleaner content management, faster UI development, and clearer insights into where AI assistance genuinely helps versus where human oversight is essential. That experience ultimately led to the <a href="https://github.com/Lombiq/Tailwind-Agent-Skills" target="_self">Tailwind Agent Skills</a> and <a href="https://github.com/Lombiq/Orchard-Core-Agent-Skills" target="_self">Orchard Core Agent Skills</a> repositories.</p><p>If you're planning an Orchard Core website, a redesign, or a modernization project, <a href="https://lombiq.com/contact-us" target="_self">reach out to us</a>. We're always happy to help teams build Orchard Core solutions that remain easy to evolve as requirements grow over time.</p><p><img alt="Rebuilding DotNest.com" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260612/rebuilding-dotnest.png"></p><h3>Orchard Harvest 2026 Early Bird tickets!</h3><p>We're excited to open registration for Orchard Harvest 2026!</p><p>This year, we've also created a short "convince your boss" one-pager to help you make the case for attending. It highlights the practical takeaways, business value, and networking opportunities waiting at the event.</p><p>If you want to learn from real-world Orchard Core use cases, get a better sense of where the platform is heading, and connect with experts and active community members, this is for you. We'll be sharing this year's speakers and topics over time, so stay tuned!</p><p><a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your spot today for the early bird pricing</a> and get ready to level up your skills at Orchard Harvest!</p><p><img alt="Orchard Harvest 2026" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/orchard-harvest-2026-pager.jpg"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 416 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=kMZXFRfacsk" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 12 Jun 2026 09:22:21 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/mastering-lucene-query-syntax-in-orchard-core-how-to-quickly-spin-off-your-orchard-core-site-this-week-in-orchard-12-06-2026</guid>
    </item>
    <item>
      <title>Orchard Harvest 2026 Early Bird tickets, exploring Orchard Core's Next-Gen Visual Layout Editor Feature - This week in Orchard (05/06/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-harvest-2026-early-bird-tickets-exploring-orchard-core-s-next-gen-visual-layout-editor-feature-this-week-in-orchard-05-06-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>How to create and install a custom module?</h3><p>Did you know that with just a few configuration tweaks and a single project reference, you can extend Orchard Core CMS with your very own custom module that is fully integrated into the admin UI and discoverable at runtime? Thanks to <a href="https://github.com/Manuel-dev-ing" target="_self">Manuel Tamayo Montero</a>, this guide in the <a href="https://docs.orchardcore.net/en/latest/guides/create-install-custom-module/" target="_self">Orchard Core documentation</a> reveals the simple steps that most developers overlook when trying to get a custom module up and running.</p><p><img alt="How to create and install a custom module" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/create-and-install-a-custom-module-guide.png"></p><h3>Category filtering for Deployment Steps</h3><p>If you have the <em>Workflows</em> feature enabled, you can let users visually implement business rules using flowchart diagrams. Whenever you add events or tasks to your workflow, the modal organizes them into categories, and you also have a filter to find the next executable step more easily.</p><p>And this is a nice, helpful experience for users, so why don't we have it for the deployment steps too? <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> thought that the same UI could be helpful when adding <em>Deployment Steps</em> to <em>Deployment Plans</em>. To check it out, head to <em>Tools -&gt; Deployments -&gt; Plans</em> and click on the <em>Add Deployment Plan</em> button. Give it a name, then add steps to your plan. And as you can see on the screen below, the <em>Available Steps</em> modal now also shows categories, helping you find the step you want to add to your plan much more quickly.</p><p><img alt="Category filtering for Deployment Steps" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/category-filtering-for-deployment-steps.png"></p><h3>Demos</h3><h4>New visual Layout Editor for Orchard Core</h4><p>This time, we will see a visual drag-and-drop editor for arranging content type editor fields into tabs, cards, and columns in Orchard Core. Here you can find <a href="https://github.com/Buzz-Interactive/Buzz.OrchardCore.EditorLayout" target="_self">the repository for the Editor Layout feature</a> developed by <a href="https://github.com/buzznick" target="_self">Nick Jackson</a>.</p><p>By default, Orchard Core renders all parts and fields on a content type's editor in a single flat list. This module lets you organize them into a structured layout using a drag-and-drop interface, without writing any placement.json or code.</p><p>So, after adding this module to your Orchard Core web project as a project reference, we can set up our site. For the demo, we used the <em>Blog</em> recipe. Once our site is up, we need to enable the <em>Editor Layout</em> feature under <em>Configuration -&gt; Features</em>. Let's try this out by modifying the content definition of the predefined <em>Blog Post</em> content type. To do that, we navigated to <em>Content -&gt; Content Definition -&gt; Content Types,</em> then clicked <em>Edit</em> next to the <em>Blog Post</em> content type. At the bottom of the content type editor, we will find a button labeled <em>Editor Layout</em>. Click on it and use the switch to enable the editor layout, which shows us a visual representation of what we can build in the editor.</p><p><img alt="Blog Post editor layout" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/blog-post-editor-layout.png"></p><p>Here we can arrange our parts and fields:</p><ul><li>Add tabs to create tabbed sections on the editor.</li><li>Add cards within a tab to group fields in a bordered card.</li><li>Add columns within a tab or card to place fields side by side.</li><li>Drag items from the Available Items sidebar into tabs, cards, or columns.</li><li>Reorder items by dragging them within or between containers.</li></ul><p>First, we added a new column to the <em>Content</em> card placed on the <em>Content</em> tab. It means we now have two columns in the <em>Content</em> card, and both columns will be set to 50% width by default to fill the space. But of course, we can change the width if we want. Once we have that, we move the <em>Banner Image</em> field to this new column inside the <em>Content</em> card.</p><p>We can also add new tabs by clicking on the <em>Add Tab</em> button. In the <em>Add Tab</em> modal, we can set the name of the new tab. We decided to move the <em>Autoroute Part</em> to the default <em>Content</em> card of this newly created <em>Settings</em> tab. We can easily do that by selecting the <em>Autoroute</em> on the left and dropping this into this card. Orchard will automatically notice that we have already used this part in the <em>Content</em> tab and remove it from there.</p><p>Save this editor layout and edit our predefined <em>Blog Post</em> content item to check how our new editor for this content type will look. As you can see, the blog post editor reflects the layout we set up.</p><p><img alt="Editor Layout" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/editor-layout.gif"></p><p>And you can build a much more complex editor by using this feature! If you are curious about how you can do that, <a href="https://www.youtube.com/watch?v=nLqRLybkl9s" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/nLqRLybkl9s" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 Early Bird tickets!</h3><p>We're excited to open registration for Orchard Harvest 2026!</p><p>This year, we've also created a short "convince your boss" one-pager to help you make the case for attending. It highlights the practical takeaways, business value, and networking opportunities waiting at the event.</p><p>If you want to learn from real-world Orchard Core use cases, get a better sense of where the platform is heading, and connect with experts and active community members, this is for you. We'll be sharing this year's speakers and topics over time, so stay tuned!</p><p><a href="https://www.tickettailor.com/events/lombiqtechnologiesltd/2247098" target="_self">Secure your spot today for the early bird pricing</a> and get ready to level up your skills at Orchard Harvest!</p><p><img alt="Orchard Harvest 2026" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260605/orchard-harvest-2026-pager.jpg"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 416 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=g--d4HCA1Fc" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 05 Jun 2026 09:00:14 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-harvest-2026-early-bird-tickets-exploring-orchard-core-s-next-gen-visual-layout-editor-feature-this-week-in-orchard-05-06-2026</guid>
    </item>
    <item>
      <title>Let Your AI Agents Talk to Each Other - A2A in Orchard Core, Who Are We Building the New OrchardCore.net For? - This week in Orchard (29/05/2026)</title>
      <link>https://orcharddojo.net/blog/let-your-ai-agents-talk-to-each-other-a2a-in-orchard-core-who-are-we-building-the-new-orchardcore-net-for-this-week-in-orchard-29-05-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Sort user roles alphabetically in the admin UI</h3><p><a href="https://github.com/gvkries" target="_self">Georg von Kries</a> made this change to ensure that user roles are consistently displayed in alphabetical order across the admin interface. This affects role filters, user edit forms, and user role displays, improving usability and readability. Let's see some samples for this!</p><p>If you navigate to the admin UI of Orchard Core and head to <em>Access Control -&gt; Users</em>, you can see all of the available users in your site. If you hit the <em>Role</em> dropdown, you can see the <em>Filter by role</em> list, where the roles are now ordered alphabetically. And if you hit <em>Edit</em> near any of the users, you can see the list of the roles that you can assign to the currently-selected user. As you can see, the roles here are also ordered alphabetically.</p><p><img alt="Sort user roles alphabetically in admin UI" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/sort-user-roles-alphabetically-in-admin-ui.png"></p><h3>Add DocumentsAddedOrUpdated and DocumentsDeleted events to IDocumentIndexHandler</h3><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> added new events needed to allow other projects to implement the <em>IDocumentIndexHandler</em> for synchronization, such as when an index is updated or when another data source is updated. It means these events help keep external systems in sync with changes to the document index.</p><p>The news events are:</p><ul><li><strong>DocumentsAddedOrUpdatedAsync</strong>, that notifies the handler after documents have been added to or updated in a provider-specific index.</li><li><strong>DocumentsDeletedAsync</strong>, that notifies the handler after documents have been removed from a provider-specific index.</li></ul><p>If we check it out quickly, we may notice how these new events are utilized across Orchard Core. As you may know, we have three different index managers in Orchard to support Lucene, Elasticsearch, and Azure AI Search. If we check out one, for example, the <em>LuceneIndexManager.cs</em>, you can see how we utilize the new events at the end of the <em>DeleteDocumentsAsync</em> and <em>AddOrUpdateDocumentsAsync</em> methods.</p><p><img alt="Utilizing new events in LuceneIndexManager" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/documentsaddedorupdated-and-documentsdeleted-events-to-idocumentindexhandler.png"></p><h3>Demos</h3><h4>Let Your AI Agents Talk to Each Other - A2A in Orchard Core</h4><p>One of the issues you will notice is that the more code you write using AI, the more you couple your code with your system. Long system prompts in your code come really nasty, really quickly if you have a whole lot of them. <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> created a structure that lets you define AI templates for prompts and profiles. Let's see an example for each of them!</p><p>Prompt templates are discovered from module files and other registered Orchard template providers. The common Orchard pattern is to place them in a module under <em>Templates/Prompts/</em>. You can find one here, called <a href="https://github.com/CrestApps/CrestApps.OrchardCore/blob/main/src/Modules/CrestApps.OrchardCore.Omnichannel.Sms/Templates/Prompts/sms-conclusion-analysis.md" target="_self">SMS Conclusion Analysis</a>.</p><p>The <em>Prompts</em> folders contain markdown files with prompts that support Liquid to generate the system prompt. So, you don't have to define it in the code. You can see that they contain a <em>title</em>,<em>a description</em>, etc., and, of course, the <em>prompt</em> itself. The good thing about that is you don't really have to couple your code with prompts. Everything is separated, and with the help of Liquid, it's really helpful because we don't have to have system code all over the place, and we can reuse it or inject one into another.</p><p><img alt="Prompt template" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/promp-template.png"></p><p>The other one is a set of templates for AI Profiles, which are very similar in structure. AI profile templates are the Orchard Core-friendly way to stamp out repeatable AI profile configurations inside the admin UI and recipes. <a href="https://github.com/CrestApps/CrestApps.OrchardCore/blob/main/src/Modules/CrestApps.OrchardCore.AI/Templates/Profiles/executor-agent.md" target="_self">Here you can see a sample of it</a>, this one called <em>Executor Agent</em>. It's preconfigured; you can just apply it.</p><p><img alt="Profile template" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/profile-template.png"></p><p>Now let's see how you can use these along with another new feature called the <em>Agent-to-Agent Protocol (A2A)</em>. The A2A modules bring the Agent-to-Agent protocol to Orchard Core, enabling tenants to connect to remote agents or expose local agent profiles to other clients. We will demo all of these by navigating to the admin UI and clicking the <em>Add Profile</em> button on the <em>Artificial Intelligence -&gt; Profiles</em> page. Here, you will notice the new <em>Apply Template</em> dropdown, which contains predefined templates from the markdown files. We don't need to use them, but if we do and select one, it prefills everything based on the template right after we click on the <em>Apply</em> button. Obviously, you can override and change everything here that you want.</p><p><img alt="Using a Profile template" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/using-a-profile-template.png"></p><p>If you notice, there is a new profile type, called <em>Agent</em>. By creating a new profile type called <em>Agent</em>, you're creating an agent accessible via the A2A protocol. Before accessing that profile, we need to enable the <em>Agent-to-Agent (A2A) Host</em> feature, which exposes all AI Agent profiles through the A2A protocol, enabling external agents and clients to discover and communicate with locally hosted agents.</p><p>Now we open another app provided by the <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_self">AI Suite</a> called <em>A2AClientSample</em>. The easiest way to have this is to set the <em>CrestApps.Aspire.AppHost</em> as the startup project of the solution, and run it. It will start an Aspire host, which will also set up this sample project for you. Once you have it, click on the <em>Go to Agents</em> button to discover all agents exposed by the A2A host, view their skills, and send messages. Here you can see that we created two agents, the <em>Planner Agent</em> and the <em>Research Agent,</em> via profile templates. We can access those two via the A2A protocol and send prompts to them using the <em>Message text</em> area.</p><p><img alt="A2A Client" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/agents-a2a-protocol.png"></p><p>And that's still not all of it! If you want to see these features in action, <a href="https://www.youtube.com/watch?v=aMVt_4RqDgc" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/aMVt_4RqDgc" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Who Are We Building the New OrchardCore.net For?</h3><p><a href="https://github.com/buzznick" target="_self">Nick Jackson</a> started a proposal to identify the target audience for a redesigned <a href="https://orchardcore.net/" target="_self">OrchardCore.net website</a>, which identifies two main groups.</p><p>The primary audience is the .NET Developers, who have already chosen .NET and are evaluating Orchard Core as a framework to avoid building common features (user accounts, permissions, multi-tenancy, etc.) from scratch. Three personas are outlined: architects/tech leads, developers building sites or products, and existing contributors. Key competitors named are Umbraco (for content sites) and abp.io (for business applications). These users want to quickly assess code quality, maintenance health, getting-started steps, and built-in features.</p><p>The secondary audience is the Business Decision-Makers, people who fund or approve platform choices but don't write code, like agency owners, product managers, CTOs, and clients whose agency chose Orchard Core for them. They care about cost, longevity, licensing, hiring availability, and plain-language explanations of what the platform does.</p><p>The core design philosophy is that, rather than trying to appeal to all developers, the site deliberately focuses on the .NET audience, so every page can be specific and relevant by using .NET terminology, naming .NET alternatives, and showing .NET code instead of being vague for everyone.</p><p>Who should the <a href="https://orchardcore.net/" target="_self">OrchardCore.net</a> redesign speak to? Take a look at our audience proposal and share your thoughts. Do you agree with the personas? Are we missing anyone? Chime in, push back, and help shape the redesign's direction <a href="https://github.com/orgs/orchardCMS/discussions/19264" target="_self">in this GitHub discussion</a>.</p><p><img alt="Orchard Core website renewal" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260529/orchard-core-website-renewal.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 417 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=g--d4HCA1Fc" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 29 May 2026 11:30:17 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/let-your-ai-agents-talk-to-each-other-a2a-in-orchard-core-who-are-we-building-the-new-orchardcore-net-for-this-week-in-orchard-29-05-2026</guid>
    </item>
    <item>
      <title>How Does AI Stay Personalized Across Sessions? Orchard Harvest 2025 recordings are up! - This week in Orchard (22/05/2026)</title>
      <link>https://orcharddojo.net/blog/how-does-ai-stay-personalized-across-sessions-orchard-harvest-2025-recordings-are-up-this-week-in-orchard-22-05-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>File Upload Limit documentation</h3><p>There was a question about how to set file upload size limits, and we came up with an idea to have a global solution so we don't have to set custom limits every time we create new actions. <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> added a new section to the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Media/#file-upload-limit" target="_self">Orchard Core documentation</a> explaining how file upload limits work and how to customize them.</p><p><img alt="File upload limit documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260522/file-upload-limit-documentation.png"></p><h3>New Transliterate Liquid Filter</h3><p><a href="https://github.com/urbanit" target="_self">Sotiris Roussos</a> introduced a new <em>transliterate</em> Liquid filter to the <em>OrchardCore.Liquid</em> module. It converts Unicode text (e.g., Greek, Cyrillic, Arabic, Chinese, etc.) into its closest ASCII/Latin representation using the <a href="https://github.com/anyascii/anyascii" target="_self">AnyAscii library</a>. It also means that, from now on, the <em>Slugify</em> string filter transliterates the provided string. The same applies to the <em>Media Slugify</em> module (if enabled) for Media files. Let's see how this works!</p><p>We set up our site using the <em>Agency</em> recipe, which enables the <em>Templates</em> module by default and provides a template for the <em>Landing Page</em> content type, which we can use for our small presentation. But first, don't forget to enable the <em>Localization</em> feature, as the <em>transliterate</em> filter is part of it.</p><p>Another thing to mention is the <em>Media Slugify</em> module, which transforms newly created folders and files into SEO-friendly versions by generating slugs. By default, transliteration happens when the feature is enabled. But there are configuration values you can use to enable or disable transliteration. You can read more about it in the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Media.Slugify/" target="_blank">Media Slugify module's documentation</a>.</p><p>But for now, let's navigate to <em>Design -&gt; Templates</em> and edit the predefined <em>Content__LandingPage</em> template. As you can see, we used the <em>transliterate</em> filter in line 6, which transliterates the non-Latin text to <em>Ellinika</em>.</p><p><img alt="New Transliterate Liquid Filter" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260522/new-transliterate-liquid-filter.png"></p><h3>Demos</h3><h4>How Does AI Stay Personalized Across Sessions?</h4><p>The <em>AI Memory</em> feature of the <a href="https://orchardcore.crestapps.com/docs/intro" target="_self">AI Suite for Orchard Core</a> provides persistent, user-scoped AI memory, enabling the AI to remember durable, non-sensitive preferences and background details for authenticated users across multiple conversations.</p><p>To test this quickly, <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_blank">clone the repository from GitHub</a>, then head to Orchard's admin UI and select <em>Tools -&gt; Features</em>. Here you will find three features related to memory:</p><ul><li><strong>AI Memory</strong>: Provides persistent, user-scoped AI memory for AI profiles and chat interactions.</li><li><strong>AI Memory indexing using Azure AI Search</strong>: Provides services to index AI memory in Azure AI Search indexes.</li><li><strong>AI Memory indexing using Elasticsearch</strong>: Provides services to index AI memory in Elasticsearch indexes.</li></ul><p>For now, we want authenticated user memories to be stored in the core AI Memory feature and indexed into Elasticsearch for semantic lookup, so we will enable the <em>AI Memory indexing using Elasticsearch</em> feature. After, we have to make sure that we have an AI Memory (Elasticsearch) index set up (we can do that under <em>Search -&gt; Indexes</em>).</p><p>But why is it good for us, or what's the advantage of using AI Memory? We can use memory for durable, non-sensitive information, like:</p><ul><li>response style preferences,</li><li>formatting preferences,</li><li>active projects or workstreams,</li><li>recurring topics the user commonly asks about,</li><li>stable background context that the user explicitly wants remembered.</li></ul><p><img alt="Set up an AI Profile" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260522/set-up-ai-profile.png"></p><p>OK, now let's see it in action using a <em>Profile</em>. Head to <em>Artificial Intelligence -&gt; Profiles</em> and create a new one or edit an existing <em>AI Profile</em>. Here, you will notice that we have ticked the <em>Enable user memory</em> checkbox. Now start a chat with this profile and ask something like, <em>"Who am I?</em>"</p><p>As you can see, the profile has information about me; it knows my name because it's stored in the memory (this information comes from the internal memory).</p><p><img alt="Chat with an AI Profile" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260522/chat-with-a-profile.png"></p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=dsjxCNQrbGE" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/dsjxCNQrbGE" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2025 recordings are up!</h3><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. It was an excellent opportunity to share knowledge, discuss development plans and ideas, and, foremost, meet the community.</p><p>We recorded every session, and they are now available on YouTube (the last recording will be available in a few hours)! If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_self">subscribe to this YouTube channel</a>, and you can find the playlist of last year's Harvest recordings <a href="https://www.youtube.com/playlist?list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">here</a>.</p><p><img alt="Orchard Harvest 2025 Recordings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260522/orchard-harvest-2025-playlist.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 417 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=g--d4HCA1Fc" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 22 May 2026 09:22:44 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/how-does-ai-stay-personalized-across-sessions-orchard-harvest-2025-recordings-are-up-this-week-in-orchard-22-05-2026</guid>
    </item>
    <item>
      <title>Content Transfer module, a new website using Orchard Core - This week in Orchard (15/05/2026)</title>
      <link>https://orcharddojo.net/blog/content-transfer-module-a-new-website-using-orchard-core-this-week-in-orchard-15-05-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>SMS Health Checks feature</h3><p>The <em>Health Checks</em> module enables the health checks feature from ASP.NET Core, and the health check endpoint is available at <em>/health/live</em> for each tenant. This module now includes a health check that reports the status of the Twilio SMS service. Thanks for the contribution by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>!</p><p>To make this work, don't forget to enable <em>Health Checks</em> and <em>SMS</em> features under <em>Tools -&gt; Features</em>. Once you have that, head to <em>Settings -&gt; Communication -&gt; SMS</em> and set up your Twilio Account Info on the <em>Twilio</em> tab. As you can see here, the status is <em>Healthy</em>, which means we set up our Twilio account correctly and Twilio itself is working.</p><p><img alt="SMS Health Check feature" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/sms-health-check-feature.png"></p><h3>Reduce allocations by using .TryGet&lt;&gt; method over .As&lt;&gt;</h3><p>The <em>ISite</em> interface now includes a new method, <em>bool TryGet&lt;T&gt;(out T settings)</em>, to support checking for optional site settings without allocating a new instance when a settings object is missing.</p><p>This is a minor breaking change for custom <em>ISite</em> implementations, which must now implement this method.</p><p>So, if you check out the changes in Orchard, you can see that we prefer <em>.TryGet&lt;&gt;</em> method over <em>.As&lt;&gt;</em> to reduce allocations, and prefer <em>.TryGet&lt;&gt;</em> and <em>.GetOrCreate&lt;&gt;</em> extensions to improve readability. Thanks for the contribution by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p><img alt="Reduce allocations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/reduce-allocations.png"></p><h3>Demos</h3><h4>Content Transfer module</h4><p>This time, <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> introduces the new <em>Content Transfer</em> module, which provides bulk import and export of content items using Excel files. You can find the code for this module <a href="https://github.com/OrchardCMS/OrchardCore/pull/14630" target="_self">in this pull request</a>.</p><p>First, let's head to <em>Tools -&gt; Features</em> and enable the <em>Content Transfer</em> module to import and export content to and from Excel files. This allows us to configure a content type to make it importable and exportable.</p><p>Let's say we want to make the <em>Article</em> content type importable and exportable. To do that, we need to navigate to <em>Design -&gt; Content Definition -&gt; Content Types</em> and hit <em>Edit</em> near the <em>Article</em> one. Put a tick in the <em>Allow bulk import</em> and <em>Allow bulk export</em> checkboxes.</p><p><img alt="Allow Bulk import export" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/allow-bulk-import-export.png"></p><p>Once you have that, you can go to <em>Content</em>, where you will see the two new options: <em>Bulk Export</em> and <em>Bulk Import</em>. We want to export, so we select the <em>Bulk Export</em> option and click the <em>Export</em> button in the upper right. We select the <em>Article</em> from the <em>Content type</em> drop-down (that's the only content type we can export right now), and if we select <em>Partial Export</em> as the <em>Export scope</em>, we can filter down the data. We can filter by owners or version, or specify the date range for created and modified. For now, we simply export all published and click the <em>Export Data</em> button.</p><p><img alt="Bulk export" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/bulk-export.png"></p><p>When you do that, it provides you with these files in two ways. If there are only a few items, it returns the file in real time. If there are too many, it will queue them for later access. And to access it later, you can use the list on the <em>Bulk Export</em> page to download the data you require.</p><p>If we want to import data, we need to select the <em>Bulk Import</em> option from the menu. Hitting the <em>Import</em> button in the top-right corner lets you select the content type you want to import. First of all, based on the content type, you can see the file's requirements, such as accepted file formats and file size limits. Under you can see the column requirements, such as which fields are required. You can also download a template to see a sample of the accepted file format.</p><p><img alt="Bulk import" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/bulk-import.png"></p><p>Hitting <em>Upload</em> will start importing the records in the background. At the list on the <em>Bulk Import</em> page, you can see the progress of the import, and the errors if you have any (like "<em>Your permalink is already in use</em>" if the <em>AutoroutePart_Path</em> contains an existing permalink).</p><p><img alt="Imported content" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/imported-content.png"></p><p>As you can see, the <em>Bulk Import</em> page shows we imported 232 articles, and the process completed without any errors. If we navigate to <em>Content -&gt; Content Items</em>, we can see several Article content items that we just created a few minutes ago.</p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=cZMVh52DspE" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/cZMVh52DspE" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>A new website using Orchard Core: JobsIreland</h3><p>At JobsIreland, they aim to help people to get jobs and help employers connect with the right people. Whether you're looking for your next job or finding the right person to join your team, JobsIreland can help you. <a href="https://showorchard.com/gallery/business/jobsireland" target="_self">Check out their Orchard Core site here</a>!</p><p><img alt="JobsIreland Show Orchard" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260515/jobs-ireland.jpg"></p><p>If you are interested in more websites using Orchard and Orchard Core, don't forget to visit <a href="https://showorchard.com/" target="_self">Show Orchard</a>. Show Orchard is a website that showcases representative Orchard CMS and Orchard Core websites from around the internet. Ryan Drew Burnett started it, but since he no longer works with Orchard, it is now maintained by our team at <a href="https://lombiq.com/" target="_self">Lombiq Technologies</a>. Oh, and in case you haven't heard about it yet, Show Orchard is also running on Orchard Core in <a href="https://dotnest.com/" target="_self">DotNest</a> for more than two years now! Here's the <a href="https://dotnest.com/blog/show-orchard-case-study-migrating-an-orchard-1-dotnest-site-to-orchard-core" target="_self">case study</a> about how we migrated it from Orchard 1!</p><p>If you're considering migrating your Orchard 1 website to Orchard Core, this is an excellent time. Should you have any questions or encounter challenges, don't hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. <a href="https://dotnest.com/contact-us" target="_self">Get in touch with us today</a>, and let's start making your Orchard Core website even better!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 418 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=tzAyFAxyJXE" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 15 May 2026 11:43:10 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/content-transfer-module-a-new-website-using-orchard-core-this-week-in-orchard-15-05-2026</guid>
    </item>
    <item>
      <title>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)</title>
      <link>https://orcharddojo.net/blog/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</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Improve feature dependency display and interactivity</h3><p>There is a minor UI issue on the <em>Features</em> page: the dependency tags for some features can be crowded because they recursively list all dependencies for a module.</p><p><a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> had an idea to fix this by not listing all the dependencies here. And after a discussion with <a href="https://github.com/gvkries" target="_self">Georg von Kries</a>, the final decision was to show only the direct dependencies by default. Transient dependencies are hidden by default and revealed by clicking the ellipsis icon, which then displays a <em>Show indirect dependencies</em> tooltip.</p><p><img alt="Improve feature dependency display and interactivity" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/improve-feature-dependency-display-and-interactivity.png"></p><p>As you can see, we are on the <em>Features</em> page under <em>Tools</em>, and we hover over the ellipsis icon next to the <em>Layers</em> feature. The <em>Layers</em> feature has three direct dependencies (<em>Widgets</em>, <em>Scripting</em>, <em>Rules</em>), and clicking the ellipsis icon shows the indirect dependencies as well.</p><h3>New protect global method provider</h3><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> added a new global method provider, <em>protect</em>, to the list of JavaScript methods provided by Orchard Core, which can be used to protect the specified value using the ASP.NET Core Data Protection API with the given purpose string. Let's see how it's working!</p><p>First, we navigated to <em>Tools -&gt; Features</em> and enabled the <em>View or Download Content as JSON</em> feature, which added the <em>JSON Import</em> option under the <em>Tools -&gt; Deployments</em> submenu. Here you can see that we stored our <em>my-secret-value</em> secret in the <em>ApiKey</em> setting, which is part of the <em>MyModule</em> module.</p><p><img alt="New protect global method provider" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/new-protect-global-method-provider.png"></p><p>Please note that the protect function is intended for use only in development and testing scenarios. Storing secrets in recipe files for production environments is not recommended and should be avoided. Use a secure secret management solution (e.g., Azure Key Vault, environment variables) for production deployments.</p><h3>Demos</h3><h4>AI Initial Prompt Behavior and AI Chat Session Analytics</h4><p>In the Profiles now, you have more power, more capabilities to do more things in the <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_self">AI Suite</a>, like data processing after the session has ended.</p><p>But before that, there is another thing that <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> added, which is to set up an initial prompt. If the initial prompt is enabled on the profile, the session is created immediately with an assistant message from the configured Initial prompt, which appears in chat history when the page loads or when a new session is started. It's a nice-to-have feature, for example, <a href="https://orcharddojo.net/blog/ai-chat-admin-widget-and-frontend-widget-dotnest-has-a-new-look-this-week-in-orchard-24-04-2026" target="_self">for chat widgets</a>, where the chat widget can immediately welcome the user with some initial message. We have a profile called GitHub profile, and immediately after we start a new chat session with it, it greets us with the initial prompt we provided.</p><p><img alt="Initial prompt for profiles" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/initial-prompt-for-profiles.png"></p><p>Now let's move on to the <em>Data Processing &amp; Metrics</em> tab. If you want to extract data or do something with the data for a chat session, you can enable data extraction by putting a tick in the <em>Enable data extraction checkbox,</em> and you can add extraction entries by clicking the <em>Add Entry</em> button. Here you can see we say to extract the customer's first name, last name, and email address.</p><p><img alt="Data extraction" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/data-extraction.png"></p><p>There is another option called post-session processing, which you can enable by putting a tick in the <em>Enable post-session processing</em> checkbox. Here, you can add tasks you want to do after the session ends. Like, create a task here that just generates a summary of the conversation and sends me an email. In this case, we will know what people are doing with our chat widgets. And in the <em>Instructions</em>, we say to create a summary, use the sendEmail tool, and set up the email subject, body, and so on.</p><p><img alt="Post session processing" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/post-session-processing.png"></p><p>You can also enable session metrics. When you do that, session metrics such as usage, token consumption, response latency, and user feedback are captured for analytics. Metrics can be viewed in the <em>Chat Analytics dashboard</em>. The other thing you can do is to enable conversation metrics. When enabled, AI evaluates each session against defined goals and assigns scores to measure session success and conversion rates. This operates independently of session metrics.</p><p>Now let's talk about analytics! The <em>AI Chat Session Analytics</em> feature provides comprehensive analytics and reporting for AI chat sessions. By using it, you can track conversation metrics, user engagement, model performance, and user satisfaction through an admin dashboard. Once you enable the <em>AI Chat Session Analytics</em> feature under <em>Tools -&gt; Features</em>, you will find the analytics dashboard under <em>Artificial Intelligence -&gt; Reports -&gt; AI Chat Session Analytics</em>. The analytics dashboard provides a comprehensive view of AI chat performance through multiple report sections. You can use the filters panel at the top to narrow results by date range and AI profile.</p><p><img alt="AI Chat session analytics" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/ai-chat-session-analytics.png"></p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=VqM57tqax1U" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, and don't forget to <a href="https://orchardcore.crestapps.com/docs/ai/chat-analytics#metrics-reference" target="_self">check out the official documentation</a> to read more about the dashboard and the metrics!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/VqM57tqax1U" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application deadline for Orchard Harvest extended to May 15</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the <strong>15th of May</strong>, 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.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260508/speaker-application-form-extended.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and are currently publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos are published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for the Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 419 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=Eme0163E4CQ" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 08 May 2026 12:24:25 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/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</guid>
    </item>
    <item>
      <title>Copilot Integration, Last call: Speaker application for Orchard Harvest 2026 - This week in Orchard (01/05/2026)</title>
      <link>https://orcharddojo.net/blog/copilot-integration-last-call-speaker-application-for-orchard-harvest-2026-this-week-in-orchard-01-05-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Support static data migration methods</h3><p>Public static data migration methods are now supported for <em>Create</em>, <em>CreateAsync</em>, <em>UpdateFromX</em>, <em>UpdateFromXAsync</em>, <em>Uninstall</em>, and <em>UninstallAsync</em>, so CA1822 suppressions are no longer required for migration steps that don't use instance state. It means that all methods could now be static if we don't use services, and we can remove the warnings that say mark members as static.</p><p><img alt="Support static data migration methods" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/support-static-data-migration-methods.png"></p><h3>Make List Part pagination configurable</h3><p>From now on, for the <em>List Part</em>, you can choose to use the current <em>PagerSlim</em>, which just shows next and previous, or use page numbers as well. But don't forget that showing page numbers, too, requires an additional database query to determine the total item count. By default, we are still using <em>PagerSlim</em>. Thanks to <a href="https://github.com/ahlxjg" target="_self">Jack Liu</a> for his first contribution!</p><p>We can try this out quickly by setting up our site using the <em>Blog</em> recipe. The <em>Blog</em> recipe provides us with the <em>Blog</em> content type, which has the <em>List Part</em> attached. If we navigate to <em>Design -&gt; Content Definition -&gt; Content Types</em> and click <em>Edit</em> next to <em>Blog</em>, we can find the attached <em>List Part</em>, where we can see the new <em>Show full pager</em> checkbox.</p><p><img alt="List Part show full pager" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/list-part-show-full-pager.png"></p><p>Now, let's see the differences between using a full pager and not using one. On the left side of the screen, we can see the full pager in use. In this case, you can see the page numbers and the &lt;&lt; &gt;&gt; arrows to be able to jump to the first and the last page of the list. The right side of the screen shows you the <em>PagerSlim usage</em>, where you can only navigate to the previous and next pages.</p><p><img alt="PagerSlim and Full Pager differences" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/pager-slim-full-pager-differences.png"></p><h3>Demos</h3><h4>Copilot Integration</h4><p>Let's continue our journey with the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI suite</a>, this time with the AI Copilot Orchestrator!</p><p>If you navigate to <em>Tools -&gt; Features</em> and enable the <em>AI Copilot Orchestrator</em> feature, it will provide a GitHub Copilot SDK-based orchestrator for AI chat sessions. Then, you can go to <em>Settings -&gt; Artificial Intelligence</em>, where you will see a new <em>Copilot</em> section. You can set the authentication type and choose between <em>GitHub Signed-in User</em> and <em>API Key (BYOK)</em>. The API Key can be used if you have this service hosted in Azure. For the sake of the demo, we chose the GitHub signed-in user authentication type and followed the steps mentioned to create a GitHub app.</p><p><img alt="Copilot authentication" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/copilot-authentication.png"></p><p>Now, we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em>, where we can create a new chat or continue an existing one. Here you can select the orchestrator to use for this chat interaction. The orchestrator controls how tools are selected and how the AI execution loop is managed. If you select the <em>GitHub Copilot Orchestrator</em> here, the site will ask you to log in to your GitHub account. Once you have it, a new drop-down will display where you can select the Copilot model to use for this interaction.</p><p><img alt="Chat with Copilot" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/chat-with-copilot.png"></p><p>Copilot will be aware of all the capabilities that you select under the <em>Capabilities</em> tab, and it is also aware of the documents that you can attach under the <em>Documents</em> tab. And the same applies to profiles. You can reach profiles under <em>Artificial Intelligence -&gt; Profiles</em>, where you can edit/create profiles and set the orchestrator nearly the same way. Here you can <a href="https://orcharddojo.net/blog/managing-ai-models-and-profiles-reorganize-the-admin-menu-this-week-in-orchard-21-02-2025" target="_self">read more about Profiles and Chat Interactions</a>.</p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=nnLqWw8e1YM" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, and don't forget to check out the <a href="https://orchardcore.crestapps.com/docs/ai/copilot/" target="_self">official documentation about the Copilot Integration</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/nnLqWw8e1YM" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the <strong>5th of May</strong>, 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.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and are currently publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos are published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for the Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>Bringing Orchard Core into the classroom at Óbuda University</h3><p>Ever wonder how a CMS can make university courses more practical? At <a href="https://uni-obuda.hu/en/" target="_self">Óbuda University</a>, Orchard Core did just that. Students learn ASP.NET Core by building live sites on DotNest. They go through milestones, create custom forms and workflows. We talked with our project leader, <a href="https://github.com/domonkosgabor" target="_self">Gábor Domonkos</a>, about how it started, what students build, and why it prepares them for real careers.</p><p>Students gain practical experience, the university gets a more hands-on subject, and the industry gets people who are better prepared for real projects. We believe more universities could benefit from this kind of collaboration, whether with Orchard Core or other open-source technologies. And if you are exploring something similar, we are always happy to share what has worked for us so far.</p><p>Check out <a href="https://lombiq.com/blog/bringing-orchard-core-into-the-classroom-at-obuda-university" target="_self">the full interview here</a>!</p><p><img alt="Orchard Core University interview" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/orchard-core-university-interview.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 419 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=GujHioQ17Bs" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 01 May 2026 09:03:41 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/copilot-integration-last-call-speaker-application-for-orchard-harvest-2026-this-week-in-orchard-01-05-2026</guid>
    </item>
    <item>
      <title>AI Chat Admin Widget and Frontend Widget, DotNest has a new look - This week in Orchard (24/04/2026)</title>
      <link>https://orcharddojo.net/blog/ai-chat-admin-widget-and-frontend-widget-dotnest-has-a-new-look-this-week-in-orchard-24-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Warn against unsafe Liquid output in SQL queries</h3><p>A SQL query is actually a Liquid template. This allows your queries to be shaped based on the parameters it gets. But you could srew up with SQL and Liquid if you start by injecting Liquid in a value, as you can see below. Because in that case, you can inject any SQL and expose all your databases. So, do not inject user-provided values directly with Liquid output expressions, as this can lead to SQL injection.</p><p>Use SQL parameters (<em>@name</em> or <em>@name:default</em>) for all user-provided values, and only use Liquid templates to change the shape of the query.</p><p><img alt="Warn against unsafe Liquid output in SQL queries" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/warn-against-unsafe-liquid-output-in-sql-queries.png"></p><p>This change by <a href="https://github.com/gvkries" target="_blank">Georg von Kries</a> adds some validation, so whenever you edit a SQL query like the one we mentioned, it will tell you not to use this kind of usage in Liquid. The <em>SqlLiquidOutputExpressionDetector</em> will detect the issues based on the resolved <em>FluidParser</em>. What matters here is the <em>OutputStatementDetector</em>, which inherits from <em>AstVisitor</em> in Fluid and lets you detect specific statements. Here you can see the <em>VisitOutputStatement</em>, which checks for curly braces; when it finds them, the <em>ContainsOutputStatement</em> checks whether they contain curly braces. And in this case, we emit a warning to let users know to be careful when doing that.</p><p><img alt="SqlLiquidOutputExpressionDetector" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/sqlliquidoutputexpressiondetector.png"></p><p>And we can easily try it out by navigating to <em>Search -&gt; Queries -&gt; All Queries</em> and adding the query we mentioned above. Once we hit save, Orchard warns us that potentially unsafe Liquid output expressions (<em>'{ ... }'</em>) were detected in this query template.</p><p><img alt="Unsafe Liquid SQL Query sample" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/unsafe-liquid-sql-query-sample.png"></p><h3>Add IJSLocalizer infrastructure and framework-agnostic JavaScript localization helpers</h3><p>This is about providing localization for JavaScript files. In a nutshell, this will load the localization from the PO files and make it available in JavaScript.</p><p>When a Vue, TypeScript, or plain JavaScript component needs translated strings, it cannot call <em>IStringLocalizer</em> directly. <em>IJSLocalizer</em> bridges this gap: each module registers one implementation that knows how to map a group name to a dictionary of localized strings, which a Razor view or layout can serialize and pass into a scoped module entry point before the script runs. Check out the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Localize/javascript-localization/" target="_self">documentation of the JavaScript Localization</a> to see how you can register a custom implementation, pass localizations to the browser, use localizations in JavaScript or TypeScript, and more with examples!</p><p><img alt="JavaScript localization documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/javascript-localization-docs.png"></p><h3>Demos</h3><h4>AI Chat Admin widget and Frontend widget</h4><p>Let's continue our journey with the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI suite</a>, this time with the widgets!</p><p>If you head to <em>Design -&gt; Widgets</em> and hit the <em>Add Widget</em> button for one of the defined Zones, you will find a new option called <em>Artificial Intelligence Chat</em>. Once you have it, you can select whichever profile you want to use with this widget. If you are not familiar with AI profiles, you can <a href="https://orcharddojo.net/blog/managing-ai-models-and-profiles-reorganize-the-admin-menu-this-week-in-orchard-21-02-2025" target="_self">check out our previous post</a> or head to the <a href="https://orchardcore.crestapps.com/docs/ai/#ai-profiles" target="_blank">official documentation for CrestApps Orchard Core</a> to learn more. Once you select your profile and navigate to the frontend of your site, you will notice the new AI Chat widget there, and you can start a chat with it.</p><p><img alt="AI Chat Frontend Widget" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/ai-chat-frontend-widget.png"></p><p>The other new feature that we want to highlight today is called <em>AI Chat Admin Widget</em>, which provides a floating AI chat widget on every admin page, allowing users to interact with a predefined AI profile. You can enable it under <em>Tools -&gt; Features</em>. Once you enable it, you can configure it under <em>Settings -&gt; Artificial Intelligence</em>, where you will find a new section called <em>Admin Widget</em>. Here, you need to select the API Profile to use for the admin widget. Users with the appropriate permission can chat with this profile from any admin page. But you can also set the maximum number of previous chat sessions to display in the widget history panel and the primary color for the admin chat widget. After that, you will see a UI similar to the frontend, with the same capabilities.</p><p><img alt="AI Chat Admin Widget" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/ai-chat-admin-widget.png"></p><p>And it's still not all of it! If you want to see these features in action, don't forget to <a href="https://www.youtube.com/watch?v=RLi9XCISItI" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/RLi9XCISItI" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the <strong>5th of May</strong>, 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.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and are currently publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos are published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for the Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>DotNest has a new look!</h3><p>The previous site was starting to show its age. Not just visually, but also in day-to-day site management UX. So we took a step back and rebuilt the frontend from the ground up.</p><p>The new site is built with Tailwind CSS and a much more user-friendly content management approach. Our goal was a simple, straightforward UX that stays out of the way of the content, no unnecessary fluff, just clarity and focus. Stay tuned for an in-depth case study!</p><p>Take a look <a href="https://dotnest.com/blog/dotnest-has-a-new-look-0" target="_self">at this post here</a>, and if you're curious, you can <a href="https://dotnest.com/" target="_self">create Orchard Core sites here for free</a>!</p><p><img alt="DotNest has a new look!" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/dotnest-has-a-new-look-post.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 419 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=Ngrl1ffZ2G4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 24 Apr 2026 10:25:28 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/ai-chat-admin-widget-and-frontend-widget-dotnest-has-a-new-look-this-week-in-orchard-24-04-2026</guid>
    </item>
    <item>
      <title>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings - This week in Orchard (17/04/2026)</title>
      <link>https://orcharddojo.net/blog/speaker-application-for-orchard-harvest-2026-and-orchard-harvest-2025-recordings-this-week-in-orchard-17-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Independent Render Liquid and Sanitize HTML settings for HTML and Markdown components</h3><p>The current <em>SanitizeHtml</em> settings' hint could be a little bit misleading, and enabling or disabling it causes potentially unwanted behavior because the hint only refers to preventing custom scripts, which is true, but it does much more by default. This, in itself, is trivial to fix. However, the <em>SanitizeHtml</em> setting also governs whether Liquid markup is rendered. If <em>SanitizeHtml</em> is <em>false</em>, that means Liquid is rendered. This prevents a simple use case where (script) sanitization is desired, but Liquid should still be rendered.</p><p>Regardless of the setting, the Liquid code is always validated. This is problematic when Liquid code is included as a code sample (in a &lt;code&gt; block) and is invalid, e.g., because it references a Liquid tag that is not available in the current system. This affects <em>HtmlBody Part</em>, <em>Html Field</em>, <em>Markdown Part</em>, and <em>Markdown Field</em>.</p><p>Let's see <a href="https://github.com/BenedekFarkas" target="_self">Benedek Farkas</a>'s solution to this issue! If you set up your site using the <em>Blog</em> recipe, you will get a predefined <em>Blog Post</em> content type with the <em>MarkdownBody Part</em> attached. If you edit the settings of the attached <em>MarkdownBody Part</em>, you will notice the new <em>Render Liquid</em> option, which lets you control whether your Liquid markup is rendered or displayed raw. Please note that the Liquid rendering support is here only for backward compatibility and will be removed in version 4.0. As you can see, both settings are <em>false</em> in our case.</p><p><img alt="New Render Liquid setting" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/new-render-liquid-setting.png"></p><p>Now, let's create a new <em>Blog Post</em> with some sample content. As you can see in the screen below, the Liquid code is not validated because the <em>Render Liquid</em> option is disabled.</p><p><img alt="Creating a Blog Post" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/creating-a-blog-post.png"></p><h3>New Data Localization Liquid filter</h3><p>And while we are talking about Liquid, let's take a look at a new Liquid filter by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>, that localizes dynamic data string using the current culture. We fire up the blog post that we created earlier and make sure that the <em>Render Liquid</em> option is set to <em>true</em>. Then we have to make sure that our site supports multiple cultures under <em>Settings -&gt; Localization -&gt; Cultures</em>. We used the <em>Dynamic Translations UI</em> under <em>Settings -&gt; Localization -&gt; Dynamic Translations</em> to add a Hungarian translation for the <em>Blog Post</em> content type. If that UI is new to you, it's OK; that's quite a recent addition <a href="https://orcharddojo.net/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026" target="_self">that you can read about in detail in this post</a>.</p><p><img alt="Dynamic Translations UI" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/dynamic-translations-ui.png"></p><p>Now let's see how that filter works! As you can see, we want to display the localized value of the <em>Blog Post</em> string, and the context for the string is <em>Content Types</em>. If we publish this content item and view it in the front end, we will see that the site displays the text <em>Blog Post</em> as <em>Blogposzt</em>.</p><p><img alt="New Data Localization Liquid Filter" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/new-data-localization-liquid-filter.png"></p><h3>Demos</h3><h4>AI Documents for Chat Interactions and Chat Sessions</h4><p>We will continue the demo from last week, where we discussed the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI Data Source module of the AI Suite</a>, which provides AI data source management, knowledge base indexing, and RAG search capabilities for Orchard Core. If you haven't read it yet, <a href="https://orcharddojo.net/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026" target="_self">you can find it here</a>.</p><p>Let's say we don't want to have only data in the indexes; we also want to use the uploaded documents, work with them, and ask questions about them. The features called <em>AI Documents (OpenXML)</em> and <em>AI Documents (PDF)</em> extend the <em>AI Documents</em> feature by allowing PDF and OpenXML files (ie, docx, xlsx, pptx). If we enable the <em>AI Documents for Chat Interactions</em> feature, we will be able to upload documents in the Chat Interactions UI.</p><p>Now we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em>, where we can start a new chat or continue an existing one. You will notice the <em>Documents</em> tab, which allows you to attach documents to chat against your own data. The content will be extracted and used as context for AI responses. But as you can see, it warns you to select an index profile for indexing documents in chat interactions.</p><p><img alt="Index not configured warning" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/index-not-configured-warning.png"></p><p>To do that, we need to navigate to <em>Settings -&gt; Artificial Intelligence</em> and select an index profile.</p><p><img alt="Select index profile for documents" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/select-index-profile-for-documents.png"></p><p>Now we can go back to the Chat Interactions UI, attach documents, and ask questions like "<em>summarize the file</em>". AI can do that because the document is processed and indexed, so we can retrieve data from the index.</p><p>There is another feature called <em>AI Documents for Chat Sessions</em>, which provides document upload and Retrieval-Augmented Generation (RAG) support for AI Chat Sessions and Widgets. The difference between <em>Chat Interaction</em> and <em>Chat Session</em> is that Chat Interaction is a playground that you can reach under <em>Artificial Intelligence -&gt; Chat Interactions</em>, the one that we showed you previously. There is nothing preconfigured.</p><p>If you want to have a Chat Session, you have to create a <em>Profile</em> first under <em>Artificial Intelligence -&gt; Profiles</em>. A Profile allows you to preconfigure system instructions, setting up an initial prompt, the Profile Type, and so on. But what's interesting for us here is the content of the <em>Documents</em> tab. If you enable the <em>AI Documents for Profiles</em> feature, you can allow Documents and Attachments in this tab, which means users can upload documents to chat sessions using this profile, as you can read. If we upload a file here and create a new chat based on the profile (which we can do by clicking on the <em>Actions</em> button and select the <em>New chat</em> from the drop-down menu near the profile under <em>Artificial Intelligence -&gt; Profiles</em>), we can chat about the content of the uploaded document without having the need to upload the given documents again and again because it's preconfigured.</p><p><img alt="Profile documents" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/profile-documents.png"></p><p>And it's still not all of it! If you want to see these features in action, don't forget to <a href="https://www.youtube.com/watch?v=bWkENl3UkCY" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/bWkENl3UkCY" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the 5th of May, 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.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and starting next Monday, we will begin publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos will be published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for upcoming Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>Event management backend for one of the largest retailers - Avastec case study by Lombiq</h3><p>When a live, high–traffic event platform needs new features urgently, you don't get the luxury of rewrites or downtime.</p><p>That was the situation when <a href="https://avastec.com/" target="_self">Avastec</a> asked us to take over and continue the development of an Orchard Core–based headless event management backend used by one of the world's largest retailers.</p><p>The system was already in production, powering a public Node.js frontend. The goals were clear:</p><ul><li>ship new functionality quickly,</li><li>improve performance and reliability,</li><li>keep upgrades safe and traceable,</li><li>all without disrupting users.</li></ul><p>Our work focused on long-term maintainability under real delivery pressure:</p><ul><li>Replacing recipe-based data migrations with code-based migrations for better traceability.</li><li>Introducing automated UI tests to protect core user journeys.</li><li>Delivering new features like ticketing, GDPR integrations, multi-brand rollout, and QR code-based entry management.</li><li>Adding observability via Azure Application Insights to support stable operations.</li></ul><p>All of this was done incrementally, without breaking the live experience.</p><p>As <a href="https://www.linkedin.com/in/stevetayloruk" target="_self">Steve Taylor</a>, CTO and Founder of Avastec, put it:</p><p><em>"They (...) delivered improvements without disrupting a live, high-traffic platform… balancing rapid feature delivery with long-term maintainability and performance."</em></p><p>This project is a good example of what Orchard Core enables when combined with disciplined engineering practices: fast change, low risk, and systems that keep improving instead of accumulating debt.</p><p>Read the <a href="https://lombiq.com/blog/event-management-backend-for-one-of-the-largest-retailers" target="_self">full case study here</a>!</p><p><img alt="Avastec case study" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/avastec-case-study.png"></p><p>Do you want to launch an event management platform on Orchard Core? We have actually built several more too, <a href="https://lombiq.com/contact-us" target="_self">get in touch with us</a>!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 421 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 17 Apr 2026 12:03:20 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/speaker-application-for-orchard-harvest-2026-and-orchard-harvest-2025-recordings-this-week-in-orchard-17-04-2026</guid>
    </item>
    <item>
      <title>AI Knowledge Base Indexing, Arguments Source Generation - This week in Orchard (10/04/2026)</title>
      <link>https://orcharddojo.net/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>New OrchardCore.ContentFields.Core module</h3><p>Every time you want to use any content field, for example, creating your own migrations, you have to reference the <em>OrchardCore.</em><em>ContentFields</em> project. But it's unnecessary because in this case, you don't really need anything more than the class derived from <em>ContentField</em> and the corresponding settings.</p><p>Thanks to <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>, all the content fields were moved to a new <em>OrchardCore.ContentFields.Core</em> project. From now on, if you just want to use the fields, you don't need to include the entire <em>OrchardCore.ContentFields</em> module, just the core one.</p><p><img alt="New OrchardCore.ContentFields.Core module" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/new-orchardcore-contentfields-core-module.png"></p><h3>Arguments Source Generation</h3><p>This is to improve the performance. The idea is that we have a <em>From</em> method here in the <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/src/OrchardCore/OrchardCore.DisplayManagement/Arguments.cs" target="_self">Arguments class</a>. When we create shapes, we can pass custom properties. These properties have to be in an instance of type <em>INamedEnumerable</em>. It lets you list arguments and also get them by name and position. And by using the <em>Arguments.From</em>, you can pass any kind of objects, including anonymous objects, and it will convert these objects to an <em>INamedEnumerable</em>. And it will do that by reflection.</p><p>The idea from <a href="https://github.com/gvkries" target="_self">Georg von Kries</a> is to use source generators. The first case is when we do <em>Arguments.From</em> and then we pass a custom class. What it will do is enhance this custom class, which has to be partial. It will return a dedicated <em>INamedEnumerable</em> instance that won't use reflection.</p><p><img alt="Source Generators Documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/source-generators-docs.png"></p><p>You can also see an <em>ArgumentsFromInterceptor</em>, which is a next-level source generator. It's when you call something like the <em>From</em> method, but it won't actually call it. It will replace the invocation of <em>From</em> with something else, such as directly instantiating an object that implements <em>INamedEnumerable</em>. And it will use the <em>From</em> method as a marker.</p><p><img alt="ArgumentsFromInterceptor" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/argumentsfrominterceptor.png"></p><p> Check out Orchard Core's <a href="https://docs.orchardcore.net/en/latest/topics/source-generators/" target="_blank">documentation for</a> real-world examples, the migration guide, architecture details, and best practices!</p><h3>Demos</h3><h4>AI Knowledge Base Indexing</h4><p>Before redesigning the UI in the <a href="https://orchardcore.crestapps.com/docs/ai/" target="_self">AI Suite</a> and integrating everything into the AI mechanism, we used multiple providers and relied heavily on the <a href="https://learn.microsoft.com/en-us/dotnet/ai/microsoft-extensions-ai" target="_self">Microsoft.Extensions.AI libraries</a>. It was a provider-driven communication, and there was no such thing as trying to understand what this user wants, or trying to give that user as much power as we can, or trying to rewrite their prompt. The whole design now looks like a standalone orchestrator. This means the prompt goes to the orchestrator, which is determined by your settings. It is not responsible for a lot more than just sending the prompt. Now we have a true orchestrator.</p><p>So, the orchestrator was redesigned to handle prompt routing, provider selection, and data retrieval, enabling the use of any index as a data source for AI interactions, and supporting document upload and retrieval-augmented generation (RAG).</p><p>How does that all work? First, don't forget to <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_blank">clone the CrestApps Orchard Core Modules repository</a> and run the solution. Once you are done, enter the admin area and go to <em>Search -&gt; Indexes</em>, where you will see two new sources when you click the <em>Add index</em> button. Let's focus on the <em>AI Knowledge Base Index</em>!</p><p><img alt="AI Knowledge Base Index" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/new-ai-knowledge-base-index.png"></p><p>That index automatically lets you embed any data from any index. It can become available for the orchestrator. So, it automatically chunks, embeds, and indexes source documents into a master AI Knowledge Base index for efficient vector search.</p><p>We also created another index for content, which we called <em>articles</em>. It stores the data for Article content items.</p><p><img alt="Articles index" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/articles-index.png"></p><p>We want to expose this data to AI. To do that, we navigated to <em>Artificial Intelligence -&gt; Data Sources</em> and clicked the <em>Add data source</em> button. This UI has changed a lot. Now you can select whichever index that you want to pull the data from and the knowledge base index. And then you can define whichever fields you want.</p><p><img alt="Creating a new Data Source" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/creating-a-new-data-source.png"></p><p>Now you have a data source! It means we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em> and add a new interaction. Here you can see the <em>Data source</em> drop-down, which is similar to what we had in the past. And now, if you ask questions, it will look up the data in the selected index and pull it from there, too.</p><p><img alt="Chat Interactions" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/chat-interactions.png"></p><p>If you want to see this feature in action, don't forget to <a href="https://www.youtube.com/watch?v=wgabQmwbuFw" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/wgabQmwbuFw" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Helping out the builders of Ontario - RESCON case study by Lombiq</h3><p>When your homepage shows outdated content, it's not just a bug; it affects credibility.</p><p><a href="https://rescon.com/" target="_self">Residential Construction Council of Ontario (RESCON)</a> runs a headless Orchard Core backend with a separate Vue frontend. Over time, their homepage widgets started surfacing older news and posts again, even though everything looked fine right after publishing.</p><p>We investigated the architecture, traced the issue back to a search indexing inconsistency, and made a deliberate choice: Instead of endlessly hardening the setup, we simplified the system. In the case study, we walk through:</p><ul><li>The original architectural setup.</li><li>The real root cause.</li><li>Why simplify beat hardening?</li><li>What we improved beyond the immediate fix.</li></ul><p>If you're running Orchard Core in a headless or multi-layer setup, this will likely feel familiar. <a href="https://lombiq.com/blog/helping-out-the-builders-of-ontario-rescon-case-study" target="_self">Read the full case study here</a>!</p><p><img alt="RESCON case study Lombiq" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/rescon-case-study-lombiq.png"></p><p>If your Orchard Core application behaves unpredictably, whether it's publishing inconsistencies, performance issues, or architectural drift over time, we can help diagnose and stabilize it. <a href="https://lombiq.com/contact-us" target="_self">Get in touch</a> and let's take a look!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 421 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 10 Apr 2026 11:06:18 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026</guid>
    </item>
    <item>
      <title>Admin Menus Localization support, MCP Prompts and MCP Resources support - This week in Orchard (03/04/2026)</title>
      <link>https://orcharddojo.net/blog/admin-menus-localization-support-mcp-prompts-and-mcp-resources-support-this-week-in-orchard-03-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Remove implicit CancelAsync from ValidateAsync</h3><p>This change means the code won't cancel the current session if an issue occurs during validation in the <em>DefaultContentManager.ValidateAsync()</em> method. It's up to the caller of the validation, because this can discard unrelated pending changes from other components sharing the session.</p><p>So, session cancellation is now the caller's responsibility, matching the expected pattern in which the consumer decides how to handle a validation failure. <em>ValidateAsync()</em> only performs validation and returns the result. It no longer cancels the session on failure. The change has been mentioned <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#content-manager-validateasync-behavior" target="_self">in the release notes of the upcoming v3 of Orchard Core</a>. There is another page in the documentation that describes how to create a new content type, adding content parts to a type, consuming content parts and fields from C#, etc. That page also <a href="https://docs.orchardcore.net/en/latest/reference/modules/ContentTypes/#consuming-content-parts-and-fields-from-csharp" target="_self">contains an example</a> of consuming your content item as your content part in a controller. And in that code, you can see that inside the <em>UpdateProductPriceAsync</em> method, we first validate the content item. If validation fails, we cancel the session to discard any pending changes.</p><p><img alt="Remove implicit CancelAsync from ValidateAsync" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/remove-implicit-cancelasync-from-validateasync.png"></p><h3>Fluent Placement Location Builder</h3><p>A new <em>PlacementLocationBuilder</em> fluent API has been added as a type-safe alternative to manually constructing placement location strings in display drivers. The builder uses a single class where all methods return the same instance for easy chaining, following the placement nesting hierarchy (Zone -&gt; Tab -&gt; Card -&gt; Column). Each method in the chain returns the same builder instance, so all methods are available at any point after <em>.Zone()</em>. Note that levels can be skipped, for example <em>.Zone().Card()</em> without a <em>.Tab()</em> is valid.</p><p>To help you better understand this change, <a href="https://github.com/MikeAlhayek" target="_blank">Mike Alhayek</a> also updated the documentation with the available methods and added <a href="https://docs.orchardcore.net/en/latest/reference/modules/Placement/#examples_1" target="_self"> some nice examples</a>!</p><p><img alt="Fluent Location API Examples" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/fluent-location-api-examples.png"></p><h3>Demos</h3><h4>Admin Menus Localization support</h4><p>The <a href="https://docs.orchardcore.net/en/latest/reference/modules/AdminMenu/" target="_self">Admin Menu module</a> allows users to create custom admin menus in the Admin UI. If you set up your site using the <em>Blog</em> recipe, you will notice that it provides an admin menu by default, which you can see under <em>Tools -&gt; Admin Menus</em>.</p><p><a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> shows the new feature here, which is about having a way to localize admin menus as well. To test this quickly, make sure your site supports at least two cultures under <em>Settings -&gt; Localization -&gt; Cultures</em>. It's also recommended to enable the <em>Admin Culture Picker</em> feature under <em>Tools -&gt; Features</em>, which provides a culture picker shape for the admin area.</p><p>Now, thanks to the <a href="https://orcharddojo.net/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026" target="_self">Dynamic Translations feature</a> and this addition, we can easily translate admin menus by going to <em>Settings -&gt; Localization -&gt; Dynamic Translations</em>. Here, you can select the <em>Admin Menus</em> under the <em>Category</em> drop-down and add translations to the available admin menus on your site, as well as to their admin menu nodes. Let's add the Hungarian translations to these!</p><p><img alt="Admin Menus dynamic translations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/admin-menus-dynamic-translations.png"></p><p>Now let's head to <em>Tools -&gt; Admin Menus</em> and use the admin culture picker to switch to Hungarian. And as you can see, all of the nodes will display in the selected culture for which we have added translations.</p><p><img alt="Localized Admin Menus" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/localized-admin-menus.png"></p><p>If you want to see this feature in action, <a href="https://www.youtube.com/watch?v=pYGCslhYhp4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/pYGCslhYhp4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h4>MCP Prompts and MCP Resources support</h4><p>Last year, <a href="https://orcharddojo.net/blog/model-context-protocol-mcp-client-feature-improve-title-part-settings-this-week-in-orchard-25-04-2025" target="_blank">we wrote about</a> the MCP Client features that you can use to connect your application to remote MCP servers using standard HTTP requests and to connect your application to MCP servers running locally, typically in containers.</p><p>Now let's talk about MCP Servers! The <em>MCP Server Feature</em> allows your Orchard Core application to expose its AI tools and capabilities to external MCP clients. This feature supports the SSE transport type, enabling real-time communication.</p><p>First of all, you need to clone the <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_self">CrestApps - Orchard Core repository</a>, which contains the Artificial Intelligence Suite, which is a comprehensive and extensible AI ecosystem built on Orchard Core, designed to unify and streamline AI integration and management.</p><p>Now we can go to <em>Tools -&gt; Features</em> to enable the <em>Model Context Protocol (MCP) Server</em> feature. This time, we will focus on MCP Prompts and Resources, which we will find in the admin UI under <em>Artificial Intelligence -&gt; Model Context Protocol -&gt; Prompts/Resources</em>. Under the <em>Prompts</em> one, you can use the UI to add MCP Server prompts. Here you can see that we added an MCP Prompt named <em>analytics.user.activity</em> that returns a detailed activity report for a specific user within a given date range. And you can see that we defined some arguments as well, such as the user's unique identifier and the maximum number of records to return.</p><p><img alt="User Activity Report MCP Promtp" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/user-activity-report-mcp-prompt.png"></p><p>You can add MCP Server resources by hitting the <em>Resources</em> option on the menu. If you click the <em>Add Resource</em> button, you'll see a modal where you can choose from the available resource types.</p><p><img alt="Available Resource Types" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/available-resource-types.png"></p><p>For this demo, we selected the <em>Recipe Step Schema</em>, which provides a JSON schema for a specific recipe step.</p><p><img alt="Recipe Step Schema Resource Type" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/recipe-step-schema-resource-type.png"></p><p>The repository contains an <a href="https://aspire.dev/get-started/what-is-aspire/" target="_self">Aspire app</a> called <em>CrestApps.Aspire.AppHost</em>. If you run this application, it provides a sample app called <em>McpClientSample</em> that helps you to see what's available on your server. This sample app connects to the MCP server hosted by <em>CrestApps.OrchardCore.Cms.Web</em> and demonstrates listing tools, prompts, and resources.</p><p>If you hit <em>Go to Tools</em> in the navigation tabs, that will list all the MCP tools exposed by the MCP server and invoke them with custom arguments.</p><p>If you select <em>Go to Prompts</em>, the sample app will list all MCP prompts and retrieve each prompt's details. Here, you can see that the top two are the ones that we defined via the UI. The rest of those are coming from the Agent Skills project. If you haven't heard about it, <a href="https://orcharddojo.net/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026" target="_self">we wrote about this project a few weeks ago</a>.</p><p><img alt="MCP Prompts" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/mcp-prompts.png"></p><p>And if you click on <em>Resources</em>, the app will list concrete MCP resources with fixed URIs and read their content directly. All of these, again, come from the Agent Skills project.</p><p>Lastly, there is a <em>Resource Templates</em> option where you can browse parameterized resource templates, fill in variables, and read content. Here you can see the one that we defined earlier in the UI with a parameter. Here is our <em>RecipeStep</em> resource. If we provide a value for <em>stepName</em> (such as <em>feature</em>), you will actually get information about that feature. So, it just gives you information about the recipe step.</p><p><img alt="Calling our Resource Template" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/calling-our-resource-template.png"></p><p>And that's not all of it! As always, if you want to see more, <a href="https://www.youtube.com/watch?v=A3lD4N-S3zc" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/A3lD4N-S3zc" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 Location</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>After Las Vegas in 2024 and Prague in 2025, the 2026 conference will take place in Vancouver, Canada. Why Vancouver? A few simple reasons:</p><ul><li>Last year was Europe, so repeating it would have locked out many attendees on the other side of the ocean.</li><li>As we mentioned, compared to a US location, we heard more explicit pushback this time, while Canada remained a broadly acceptable option.</li><li>Vancouver offers the best possible "in-between" choice: reachable from both North America and Europe and still a fresh destination for most of the community.</li></ul><p>So if you are building on Orchard Core, contributing to it, or evaluating it for your next platform, this is your chance to connect directly with maintainers, contributors, and fellow teams using Orchard in production.</p><p>We'll share dates and venue soon. For now, you can already start planning for 2026 September in Vancouver.</p><p>If you're considering attending, what would make Vancouver a "must go" for you: session topics, workshops, or community time? Please <a href="https://github.com/orgs/OrchardCMS/discussions/18889" target="_self">share your thoughts with us under this discussion</a>.</p><p><img alt="Orchard Harvest 2026 Vancouver" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/orchard-harvest-vancouver-2026.png"></p><p>And as always, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 422 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 03 Apr 2026 09:07:55 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/admin-menus-localization-support-mcp-prompts-and-mcp-resources-support-this-week-in-orchard-03-04-2026</guid>
    </item>
    <item>
      <title>Orchard Harvest 2026 Location, Bulk option for attaching Localization Part to content types - This week in Orchard (27/03/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-harvest-2026-location-bulk-option-for-attaching-localization-part-to-content-types-this-week-in-orchard-27-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Data Protection guide</h3><p>Thanks to <a href="https://github.com/lamualfa" target="_self">Laode Muhammad Al Fatih</a>, there is now a <a href="https://docs.orchardcore.net/en/latest/guides/data-protection/" target="_blank">new guide</a> that provides information on implementing data protection in Orchard Core applications, particularly in multi-tenant and load-balanced environments. The guide also explains when you should use Distributed Data Protection and what providers do that.</p><p>For detailed information about implementing data protection with Azure Blob Storage, including configuration options and Liquid templating, <a href="https://docs.orchardcore.net/en/latest/reference/modules/DataProtection.Azure/" target="_self">see the following page</a>.</p><p>For detailed information on implementing data protection with Redis, including configuration options and persistence considerations, <a href="https://docs.orchardcore.net/en/latest/reference/modules/Redis/#data-protection" target="_blank">see this page</a>.</p><p><img alt="Data Protection guide" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/data-protection-guide.png"></p><h3>Configurable EasyMDE editor settings to Markdown WYSIWYG editors</h3><p>Currently, the EasyMDE editor used by <em>the Markdown Field</em> and <em>Body Part</em> is not customisable. The toolbar buttons, spell checker, and other editor options are hardcoded, meaning site administrators have no way to tailor the editing experience to their needs, for example, removing unused toolbar buttons, enabling the spell checker, or adjusting other EasyMDE configuration options. This contrasts with the <em>HTML Body Part</em>'s Trumbowyg editor, which already supports configurable options via a settings panel.</p><p><a href="https://github.com/buzznick" target="_self">Nick Jackson</a> added the same level of configurability to both Markdown WYSIWYG editors. That means there is a new settings panel with a CodeMirror textarea for customizing EasyMDE editor options on both the <em>Markdown Field</em> and the <em>MarkdownBody Part</em> when using the WYSIWYG editor. The custom options are validated as valid JavaScript objects using <a href="https://github.com/adams85/acornima" target="_self">Acornima</a>. Toolbar button names are automatically mapped to their full definitions from mdeToolbar, preserving media/shortcode integration, and empty/null options fall back to the default toolbar configuration.</p><p>To try this out, let's set up a site using the <em>Blog</em> recipe. The <em>Blog</em> recipe provides us a <em>Blog Post</em> content type which has a <em>MarkdownBody Part</em> attached. Head to <em>Design -&gt; Content Definition -&gt; Content Types</em> and edit the content definition of the <em>Blog Post</em> content type. If we hit <em>Edit</em> near the attached <em>MarkdownBody Part</em>, we will see a textarea, where we can provide the editor options for the WYSIWYG editor. Let's say we wanted a very simple editor with just some basic options: undo/redo, text formatting, and the ability to insert Shortcodes and Images from the Media Library.</p><p><img alt="MarkdownBody Part WYSIWYG editor options" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/markdownbody-part-wysiwyg-editor-options.png"></p><p>If we hit <em>Save</em>, we can go to the <em>Blog</em> option on the menu and edit our predefined blog post. And as you can see, the MarkdownBody text area will only show the buttons on the toolbar that we have previously defined.</p><p><img alt="MarkdownBody toolbar" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/markdownbody-toolbar.png"></p><h3>Demos</h3><h4>Bulk option for attaching the Localization Part to content types</h4><p>After enabling the <em>Content Localization</em> feature, users must manually add the <em>Localization Part</em> to each content type they want to localize. This is not immediately obvious and can lead to confusion. Once the user enables the <em>Content Localization</em> feature, they would expect that localization to work on content types. But they discover that they need to manually edit each content type and attach the <em>Localization Part</em>. Users should be guided on what to do next after enabling the <em>Content Localizatio</em>n feature, or have an easier way to enable localization for multiple content types.</p><p>In this demo, <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> provides a solution to that: a bulk attachment option. If you <a href="https://github.com/OrchardCMS/OrchardCore/pull/18899" target="_self">check out this PR</a>, you will see that he provided a settings page that lists all content types with checkboxes and allows users to add and remove the <em>Localization Part</em> to multiple content types at once. Now let's see this in action quickly!</p><p>First, make sure you have enabled the <em>Content Localization</em> module under <em>Tools -&gt; Features</em>. After, you will see a new option in the menu under <em>Settings -&gt; Localization</em>, called <em>Content Localization</em>. On this page, users can select multiple content types at once. We can say that we want to attach the <em>Localization Part</em> to the <em>Article</em>, <em>Blog Post</em>, and <em>Page</em> content types. Once you hit <em>Save</em> at the bottom of the page, the <em>Localization Part</em> will be attached to the content types you have selected. If you deselect a content type from this list, the <em>Localization Part</em> will be removed from that content type.</p><p><img alt="Content Localization Settings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/content-localization-settings.png"></p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=U14fkEKw0e4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/U14fkEKw0e4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 Location</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>After Las Vegas in 2024 and Prague in 2025, the 2026 conference will take place in Vancouver, Canada. Why Vancouver? A few simple reasons:</p><ul><li>Last year was Europe, so repeating it would have locked out many attendees on the other side of the ocean.</li><li>As we mentioned, compared to a US location, we heard more explicit pushback this time, while Canada remained a broadly acceptable option.</li><li>Vancouver offers the best possible "in-between" choice: reachable from both North America and Europe and still a fresh destination for most of the community.</li></ul><p>So if you are building on Orchard Core, contributing to it, or evaluating it for your next platform, this is your chance to connect directly with maintainers, contributors, and fellow teams using Orchard in production.</p><p>We'll share dates and venue soon. For now, you can already start planning for 2026 September in Vancouver.</p><p>If you're considering attending, what would make Vancouver a "must go" for you: session topics, workshops, or community time? Please <a href="https://github.com/orgs/OrchardCMS/discussions/18889" target="_self">share your thoughts with us under this discussion</a>.</p><p><img alt="Orchard Harvest 2026 Vancouver" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/orchard-harvest-vancouver-2026.png"></p><p>And as always, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 423 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=mugneTGE3AA" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 27 Mar 2026 09:22:21 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-harvest-2026-location-bulk-option-for-attaching-localization-part-to-content-types-this-week-in-orchard-27-03-2026</guid>
    </item>
    <item>
      <title>AI-driven theme editor on the admin UI, Available Storage indicator for the Media Library - This week in Orchard (20/03/2026)</title>
      <link>https://orcharddojo.net/blog/ai-driven-theme-editor-on-the-admin-ui-available-storage-indicator-for-the-media-library-this-week-in-orchard-20-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Available Storage Indicator for the Media Library</h3><p>The idea behind this new addition is to somehow notify the user about the free space available on the local file system when storing media items. Your site can contain multiple items in the Media Library, and it's best to track available storage space directly in the admin UI.</p><p>Thanks to <a href="https://github.com/sarahelsaig" target="_self">Sára El-Saig</a> from <a href="https://lombiq.com" target="_self">Lombiq</a>, the Media Library screen now includes an <em>Available Storage</em> indicator. If the media items are stored on the local file system, it automatically shows the free disk space on the drive used for storage. The available storage is checked when uploading or copying files in the media store, providing a more informative warning when space is exhausted. If you enter the admin area of Orchard Core and select the <em>Library</em> submenu under <em>Media</em>, you will see the available storage indicator in the top-right corner. As you can see, we currently have 362.28 GB of free space on the local file system.</p><p><img alt="Available Storage indicator" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/available-storage-indicator.png"></p><p>But it's just applies when you are storing your media items on the local file system. If you use a different underlying file store (e.g., Azure Blob Storage, Amazon AWS) or want to enforce additional storage constraints (e.g., usage quotas), that's also possible. To do that, you need to create a new event handler that implements <em>IMediaEventHandler.MediaPermittedStorageAsync(MediaPermittedStorageContext)</em> method. Note that if you want to use multiple event handlers, you should update the <em>PermittedStorage</em> value using the <em>MediaPermittedStorageContext.Constrain(long)</em> method rather than manually editing the <em>PermittedStorage</em> value.</p><p><img alt="IMediaEventHandler.MediaPermittedStorageAsync method" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/imediaeventhandler-mediapermittedstorageasync-method.png"></p><h3>Anchor Tag Helper documentation</h3><p>We have had an <em>Anchor Tag Helper</em> for a while in Orchard Core, but the documentation was a bit outdated, as it only documented the <em>&lt;img&gt;</em> Tag Helpers, not the one for <em>&lt;a&gt;</em> tags. <a href="https://github.com/Manuel-dev-ing" target="_blank">Manuel Tamayo Montero</a> added some lines to <a href="https://docs.orchardcore.net/en/latest/reference/modules/Media/#razor-anchor-tag-helper" target="_blank">the documentation</a> to help developers use it.</p><p><img alt="Razor Anchor Tag Helper documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/razor-anchor-tag-helper-documentation.png"></p><p>Please don't forget that when using tag helpers in Razor, you must take a direct reference to the <em>OrchardCore.Media</em> NuGet package in each theme or module that uses the Tag Helpers.</p><h3>Demos</h3><h4>AI-driven theme editor on the admin UI</h4><p><a href="https://github.com/barthamark" target="_self">Márk Bartha</a> from <a href="https://lombiq.com/" target="_self">Lombiq</a> started building a proof of concept for an admin UI-based theme editor with AI integration. If you want custom themes, you have the option to host your theme in the Media Library using the <a href="https://github.com/Lombiq/Hosting-Media-Theme" target="_self">Media Theme feature for Orchard Core</a>. It would be great if we could edit this theme right from the admin UI. Normally, you can edit templates using the <em>Templates</em> feature, but since it's in the Media Library, you don't have the option for that. This feature is to solve this problem.</p><p>Here you can see a sample project from a conference site with some dummy data. This editor UI shows the Media Theme folder from the Media Library. Here you can see the templates and all the assets used. You can edit them just as you would in your IDE. Of course, you can also create new templates right from this IDE. After you provide a name for the template and click <em>Save</em>, the template will be saved, and the specified shape will become active. And it applies to any other allowed file types, not just to templates.</p><p><img alt="Theme editor" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/theme-editor.png"></p><p>He also started to integrate AI into this editor. If you click on the <em>AI</em> button between <em>Delete </em>and <em>Shortcuts</em>, a new <em>Theme Editor AI</em> section will open where you can enter prompts, like "<em>Please implement the detail and summary shapes of the Talk content type</em>". Here, you can see the capabilities defined for the created profile, <em>ThemeEditor.</em><em>OpenAI</em>, where you can see what features the AI can access.</p><p><img alt="Theme editor tools" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/theme-editor-tools.png"></p><p>So, it can act as an agent, create or edit files, and you can review the changes. You don't need to accept these changes right away; they will be persisted in the DB. And once you review them, you can hit the <em>Apply</em> button. It means that these files will also be available in this IDE, and you can save them; the changes will be applied automatically.</p><p><img alt="Reviewing AI made changes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/reviewing-ai-made-changes.png"></p><p>As with Copilot, you can include specific files in the context and add content types. Once you execute a new follow-up prompt, it will include all these and give you access to them as well.</p><p><img alt="Add content types to context" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/add-content-types-to-context.png"></p><p>And that's still not all of it! If you want to learn more about this feature, <a href="https://www.youtube.com/watch?v=l_EzVKWV5nA" target="_self">head to YouTube for a recording</a>!</p><div class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/l_EzVKWV5nA" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></div><h2>News from the community</h2><h3>Orchard Harvest 2026 survey results</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. Please keep in mind that these are just preliminary results and haven't led to any specific outcomes yet.</p><p>It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>During <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">our weekly meeting</a>, some attendees suggested that future surveys should list specific cities rather than countries to avoid ambiguity, as the size of the US and Canada makes country-level choices insufficient for planning. So, we discussed potentially creating a new questionnaire listing a limited set of candidate cities in Canada, North America, and Europe, allowing participants to rank their preferences to achieve a more democratic and actionable outcome. Whatever the next step will be, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><p><img alt="Orchard Harvest 2026 survey results" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/orchard-harvest-survey-2026-results.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 424 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=AtHx-X-SRrI" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 15:03:46 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/ai-driven-theme-editor-on-the-admin-ui-available-storage-indicator-for-the-media-library-this-week-in-orchard-20-03-2026</guid>
    </item>
    <item>
      <title>CrestApps Agent Skills, Orchard Harvest 2026 survey results - This week in Orchard (13/03/2026)</title>
      <link>https://orcharddojo.net/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Obsolete synchronous CustomSettingsService.GetSettingsType method</h3><p><a href="https://github.com/gvkries" target="_self">Georg von Kries</a> updated <em>CustomSettingsDisplayDriver</em> to use the asynchronous <em>GetSettingsTypeAsync</em> method instead of the synchronous <em>GetSettingsType</em> in both the <em>EditAsync</em> and <em>UpdateAsync</em> methods. He also updated <em>CustomSettingsService.GetSettingsAsync(string settingsTypeName, Action isNew)</em> to use <em>await GetSettingsTypeAsync</em> instead of the synchronous version, and refactored the return pattern to be fully async.</p><p>And finally, he marked <em>CustomSettingsService.GetSettingsType</em> as obsolete, with a message directing users to use <em>GetSettingsTypeAsync</em> instead. This change improves performance by avoiding blocking calls and prepares the codebase for the future removal of the synchronous API.</p><p><img alt="Obsolete synchronous CustomSettingsService.GetSettingsType method" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/obsolete-synchronous-customsettingsservice-getsettingstype-method.png"></p><h3>Refactor ShapeResult for less allocations</h3><p>This is about having an optimized storage for display type locations. Instead of always allocating the <em>_otherLocations</em> dictionary for display type/location pairs, the code now stores up to two pairs in dedicated fields (<em>_firstDisplayType</em>, <em>_firstLocation</em>, <em>_secondDisplayType</em>, <em>_secondLocation</em>) before falling back to a dictionary for additional pairs. This reduces memory allocations for common cases with only one or two display types.</p><p>As you can see in the screen below, there is a <em>Location(string displayType, string location)</em> method. Inside that method, we checked the value of the <em>_otherLocations</em> dictionary. If <em>_otherLocations</em> has no value, let's update it and use the provided location. Otherwise, if this is the <em>_firstDisplayType</em>, then we don't need to create a dictionary. We save the display type allocation again. If there is a first display type, then maybe it's the second one. So, still no dictionary. Otherwise, let's create a new dictionary with the first, with the second, and with the custom display type. It means converting the properties for the first and the second location into the <em>_otherLocations</em> dictionary and resetting the <em>_firstDisplayType</em>, <em>_firstLocation</em>, <em>_secondDisplayType</em>, and <em>_secondLocation</em> fields.</p><p><img alt="Refactor ShapeResult for less allocations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/refactor-shaperesult-for-less-allocations.png"></p><p><a href="https://github.com/gvkries" target="_self">Georg von Kries</a> also refactored fluent API methods (e.g., <em>Prefix</em>, <em>Location</em>, <em>Displaying</em>, <em>Processing</em>, <em>Name</em>, <em>Differentiator</em>, <em>OnGroup</em>, <em>Cache</em>, <em>RenderWhen</em>) to appear before the core implementation logic, improving code organization and discoverability.</p><h3>Demos</h3><h4>CrestApps Agent Skills</h4><p>In the Model Context Protocol Server (MCP), the server provides tools, such as actions. It can also serve prompts, like the things you can reuse, and also something called resources. It means the MCP can provide resources, can provide tools, and prompts. You can ask MCP to provide you with a document, for example, and that would be a resource that it could use. For more information about the MCP integration with Orchard Core, <a href="https://orcharddojo.net/blog/model-context-protocol-mcp-client-feature-improve-title-part-settings-this-week-in-orchard-25-04-2025" target="_self">check out our blog post from last year</a>.</p><p>So, how can we take skills and provide them as part of the MCP server's resources? It means that if someone wants to connect to the MCP server, they will have access to all these skills and the resources to define their modules.</p><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> created a new repository called <a href="https://github.com/CrestApps/CrestApps.AgentSkills" target="_self">CrestApps.AgentSkills</a> that contains shared AI agent skills and MCP tooling for .NET applications and Orchard Core-based projects. There are three parts to this project:</p><ul><li>CrestApps.AgentSkills.Mcp: Provides a reusable MCP skill engine for any .NET app without building custom parsers/providers.</li><li>CrestApps.AgentSkills.OrchardCore: Used for Orchard Core local development by copying skills to .agents/skills.</li><li>CrestApps.AgentSkills.Mcp.OrchardCore: Exposes Orchard Core skills as MCP prompts and MCP resources at runtime.</li></ul><p>Another project inside is a <a href="https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/src/CrestApps.AgentSkills" target="_self">non-packagable skill repository</a> that serves as the single source of truth for all agent skills in this solution. As you can see, it contains a bunch of Orchard-related skills. This package is intended for local development. Once installed in your web project, it automatically provides a wide range of Orchard Core skills out of the box. After installation, you should see an <em>.agents</em> folder at your solution root. As long as you keep the NuGet package up to date, you'll always get the latest Orchard Core skills, and your agent will automatically discover them.</p><p><img alt="CrestApps.AgentSkills" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/crestapps-agentskills.png"></p><p>If you want to learn more, <a href="https://crestapps.com/orchard-core/the-ai-agent-skills" target="_self">check out this blog post</a> from Mike about this ecosystem for more details! And as always, don't forget to <a href="https://www.youtube.com/watch?v=e_QqViJTncQ" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/e_QqViJTncQ" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><p>And while we are speaking about skills, if you remember, we showed our agent skills for Orchard Core that can also help you with many Orchard Core-related tasks, such as implementing appropriate shape templates with correct alternates. If you haven't heard about it yet, <a href="https://orcharddojo.net/blog/orchard-harvest-2026-survey-lombiq-orchard-core-agent-skills-this-week-in-orchard-27-02-2026" target="_self">check out this post</a>, where you can also see a demo of the <a href="https://github.com/lombiq/orchard-core-agent-skills" target="_self">Lombiq Orchard Core Agent Skills project</a>!</p><p>And that's still not all of it! Last week, we mentioned that <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> also had the idea of adding Agent Skills to Orchard Core, primarily for developers. The goal is that when you clone Orchard, you will have access to these skills. You can <a href="https://orcharddojo.net/blog/enhanced-blocks-editor-for-content-creators-last-call-orchard-harvest-2026-survey-this-week-in-orchard-06-03-2026" target="_self">read about those new skills here</a>.</p><h2>News from the community</h2><h3>Orchard Harvest 2026 survey results</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. Please keep in mind that these are just preliminary results and haven't led to any specific outcomes yet.</p><p>It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>During <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">our weekly meeting</a>, some attendees suggested that future surveys should list specific cities rather than countries to avoid ambiguity, as the size of the US and Canada makes country-level choices insufficient for planning. So, we discussed potentially creating a new questionnaire listing a limited set of candidate cities in Canada, North America, and Europe, allowing participants to rank their preferences to achieve a more democratic and actionable outcome. Whatever the next step will be, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><p><img alt="Orchard Harvest 2026 survey results" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/orchard-harvest-survey-2026-results.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 423 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:24:10 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026</guid>
    </item>
  </channel>
</rss>