<rss version="2.0">
  <channel>
    <link>https://orcharddojo.net/Contents/ContentItems/orcharddojoblog00000000000</link>
    <description><![CDATA[]]></description>
    <item>
      <title>Hosting Orchard Core at Exoscale</title>
      <link>https://orcharddojo.net/blog/hosting-orchard-core-at-exoscale</link>
      <description><![CDATA[<p>It's not all about hyperscalers: You can run your Orchard Core app in the cloud even if not using Azure, AWS, or some other giant like these. Let's see how we can do this with&nbsp;<a href="https://www.exoscale.com/" target="_self" style="color: rgba(13, 110, 253, 1)">Exoscale</a>!</p>
<h2 style="color: rgba(33, 37, 41, 1)">Blog post series overview</h2>
<p>This post is part of our series about hosting Orchard Core at European cloud providers. Orchard Core has built-in support for a lot of Azure services, including&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Media.Azure/" target="_self" style="color: rgba(13, 110, 253, 1)">Media storage</a>,&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/KeyVault.Azure/" target="_self" style="color: rgba(13, 110, 253, 1)">secret storage</a>,&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Email.Azure/" target="_self" style="color: rgba(13, 110, 253, 1)">e-mail delivery</a>&nbsp;and&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Sms.Azure/" target="_self" style="color: rgba(13, 110, 253, 1)">sending SMS</a>,&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/AzureAISearch/" target="_self" style="color: rgba(13, 110, 253, 1)">AI search</a>, and even observability with Azure Application Insights with the&nbsp;<a href="https://github.com/Lombiq/Orchard-Azure-Application-Insights" target="_self" style="color: rgba(13, 110, 253, 1)">Lombiq module</a>. AWS also has support for&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Media.AmazonS3/" target="_self" style="color: rgba(13, 110, 253, 1)">Media storage</a>. For cloud-hosted full-text search we can use&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Elasticsearch/" target="_self" style="color: rgba(13, 110, 253, 1)">Elasticsearch</a>, and&nbsp;<a href="https://docs.orchardcore.net/en/latest/reference/modules/Redis/" target="_self" style="color: rgba(13, 110, 253, 1)">Redis</a>&nbsp;to aid with horizontal scaling. How does using a smaller cloud provider, without specific support from Orchard Core, compare?</p>
<p>We've looked into hosting a vanilla Orchard Core app as a proof of concept, and are sharing our experiences here. The goal was to run Orchard Core with a minimal hosting environment, but with a stateless web server (so, keeping the database and Media storage separate). This could've been simplified to only use a web server (and keep the database in a local SQLite file, as well as use local Media files), but we wanted to go a bit more realistic than that. To be able to play around with the web server from the GUI too, we've chosen Windows as the OS if available. Additionally, we also checked if the platform helps with any of the other common infrastructure requirements, like sending e-mails or observability.</p>
<p>Note that while we usually received some credits from the cloud providers for testing, they are not paying for these reviews, and any endorsement or critique is our own.</p>
<h2 style="color: rgba(33, 37, 41, 1)">What's Exoscale?</h2>
<p>Exoscale&nbsp;is a cloud provider from Switzerland, with hosting locations back at home, as well as in Germany, Austria, Bulgaria, and since July also in Croatia.</p>
<p>As far as services interesting for Orchard Core hosting go, they offer VMs with load balancing, AWS S3-compatible object storage, and databases as a service. Managed&nbsp;Kubernetes is also available, but for the sake of this post, trying to host a simple app, we won't create a cluster. Instead of Redis, you can create Valkey instances (Valkey is an open-source fork of Redis), which, for now, should&nbsp;<a href="https://github.com/OrchardCMS/OrchardCore/discussions/15913" target="_self" style="color: rgba(13, 110, 253, 1)">just work</a>&nbsp;with Orchard Core's Redis support. While OpenSearch is also available,&nbsp;<a href="https://github.com/OrchardCMS/OrchardCore/issues/12145" target="_self" style="color: rgba(13, 110, 253, 1)">that's incompatible</a>&nbsp;with Orchard's Elasticsearch integration. DNS management is also available, though that's something I'd keep at Cloudflare for a real-life app. I'd also use Cloudflare as a CDN, despite Exoscale offering a CDN layer (with Akamai) on top of their object storage; but since in Orchard Core we don't serve Media files from storage directly, that wouldn't help anyway.</p>
<p>If you want to send e-mails, implement observability, or add search and indexing other than with Lucene on the web server, you're on your own.</p>
<h2 style="color: rgba(33, 37, 41, 1)">Creating an Orchard Core hosting environment</h2>
<p>You surely already guessed, but we'll need three Exoscale services:</p>
<ul>
    <li>A <a href="https://www.exoscale.com/compute/" target="_self">Compute Instance</a>, i.e. a VM, for the web server.</li>
    <li>A&nbsp;<a href="https://www.exoscale.com/dbaas/" target="_self">DBaaS database</a>; we'll use PostgreSQL. We could also create <a href="https://www.exoscale.com/marketplace/listing/microsoft-sql-server-payg/" target="_self">SQL Server instances</a>, but not only would the minimum 2-core VM be an overkill for our purposes, it's also much more expensive, starting at about EUR 247/month (vs a Postgres DBaaS starting at EUR 42/month).</li>
    <li><a href="https://www.exoscale.com/object-storage/" target="_self">Object Storage</a>&nbsp;for Media.</li>
</ul>
<p>Let's start with the server! I went with the Swiss zone, since there's no place like home, and opted with a 2-CPU plan with 2 GB of RAM. For this site, 1 CPU would also be more than enough (while to cater for Windows, I'm more comfortable with 2 GB of RAM instead of 1), but there's no 1-CPU 2 GB RAM instance type.</p>
<p style="text-align: center"><img alt="Creating an Exoscale Compute Instance" src="/media/BlogPost/other-posts/2025/hosting-orchard-core-at-exoscale/creating-a-compute-instance.webp"><br></p>
<p>You may notice two things here:</p>
<ul>
    <li>On the right, there's a warning about having to create Security Groups for ingress rules first. (Somewhat confusingly the ADD button below it actually creates the compute instance, not a Security Group.) To be able to actually connect to the VM, we also need to edit the default Security Group (or perhaps more diligently, create a new one), then open up the ingress port 80 with TCP (for HTTP), as well as add a rule for RDP. As a last step, you'll also need to add <code>0.0.0.0/0</code> (i.e. all IPs) under External Sources, allowing anyone to connect to our web server.</li>
    <li>Those ENABLE buttons for instances Mega and up mean that you need to ask Exoscale support to allow them "after a manual screening process". This I find a bit strange.</li>
</ul>
<p>Until the server started, so in the meantime, I created an Object Storage bucket in the same zone (to minimize latency, these resources should all be in the same zone):</p>
<p style="text-align: center"><img alt="Creating an Object Storage bucket" src="/media/BlogPost/other-posts/2025/hosting-orchard-core-at-exoscale/adding-bucket.webp?2"></p>
<p>It seems that unlike with other cloud providers where you create a storage account, then a bucket under it, here everyone shares the same storage account. Thus, bucket names should be globally unique. This doesn't seem appealing at a first glance, but apart from the naming issue, I didn't find any practical problem with it.</p>
<p>Somewhat counterintuitively, the storage access and secret keys are API keys. You can create these <a href="https://community.exoscale.com/community/iam/quick-start/#creating-roles-and-generating-api-keys" target="_self">following the docs</a>; for the sake of simplicity, I created a key for the Owner role, but for a production app, you should follow the docs' recommendations and create a restricted role just to access this bucket.</p>
<p>Finally, we also need a single-node Postgres database server:</p>
<p style="text-align: center"><img alt="Creating a managed database" src="/media/BlogPost/other-posts/2025/hosting-orchard-core-at-exoscale/adding-postgresql-dbaas.webp"></p>
<p>Note that this runs on its own VM. The IP filter is necessary for the web server to access the DB server; the provided CIDR matches the exact IP of it.</p>
<p>This is everything we need, so now we can continue with setting up Orchard Core in this environment.</p>
<h2 style="color: rgba(33, 37, 41, 1)">Deploying Orchard Core to the web server</h2>
<p>You can deploy an ASP.NET Core app, including an Orchard Core-using one, with Web Deploy to IIS, using automated deployment from a GitHub Actions workflow, or just by copying its publish outputs to the server. Here, I opted with the simplest option: I published the web app to a folder from Visual Studio (but running&nbsp;<code style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; color: rgba(214, 51, 132, 1)">dotnet publish</code>&nbsp;from the CLI would be equally suitable), and copied the resulting files to the server via Remote Desktop. Then I could simply run the web app:</p>
<p style="text-align: center"><img alt="The Orchard Core app running under Windows Server" src="/media/BlogPost/other-posts/2025/hosting-orchard-core-at-exoscale/app-running.webp"></p>
<p>The app listens to port 80 because I added an&nbsp;<em>appsettings.Production.json</em>&nbsp;file configuring it:</p>
<pre class="language-js" style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace"><code class="language-js" style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace">{
  "Kestrel": {
    "Endpoints": {
      "HttpEndpoint": {
        "Url": "http://*:80"
      }
    }
  }
}</code></pre>
<p>This allows you to simply open the IP of the server in a browser, or point a DNS A record to it. Our site is now available on the internet! ...after we allowed the exe of our web app through the Windows Firewall, that is.</p>
<p>You may notice that this is a really barebones approach: There's no IIS, no HTTPS, no proper deployment. And you're right! This is a focused example of getting Orchard Core running, but we'll return to the missing pieces later.</p>
<h2 style="color: rgba(33, 37, 41, 1)">Setting up Orchard Core</h2>
<p>Running the Orchard Core setup is standard: Just fill out the usual settings on the setup screen, and point the app to the Postgres DB. For the latter, you can copy the Postgres connection string from the Exoscale Console, take the password of the default user from the DB's Users menu, and ask your favorite AI tool to turn them into an&nbsp;Npgsql connection string that .NET uses.</p>
<p>Once setup finishes, you can configure Media storage too. I've elaborated above how to set up a bucket; the service URL for it will be in the format <code>https://sos-{zone}.exo.io</code>, with our Switzerland zone being <code>ch-dk-2</code>.</p>
<p>Now it's time to configure the connection for the app. Again, you can use the&nbsp;<em>appsettings.Production.json</em>&nbsp;file to add something like below, resulting in the following full file:</p>
<pre class="language-js" style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace"><code class="language-js" style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace">{
  "Kestrel": {
    "Endpoints": {
      "HttpEndpoint": {
        "Url": "http://*:80"
      }
    }
  },
  "OrchardCore": {
    "OrchardCore_Media_AmazonS3": {
      "ServiceURL": "https://sos-ch-dk-2.exo.io",
      "Credentials": {
        "SecretKey": "add the secret of the user you created",
        "AccessKey": "add the access key of the user you created"
      },
      "CreateBucket": true,
      "RemoveBucket": true,
      "BucketName": "oc-media"
    }
  }
}</code></pre>
<p>Be sure to change the&nbsp;<code style="font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; color: rgba(214, 51, 132, 1)">ServiceURL</code>&nbsp;value to that of your instance, as indicated on its Overview page (under "S3 endpoint"). That's actually an undocumented configuration key that comes very handy when, as we do here, you connect to an S3 account outside of AWS.</p>
<p>Now restart the app (so it reads the updated configuration file) and enable the&nbsp;Amazon Media Storage feature from the Orchard Core admin. It'll work, despite it not running in Amazon. Magic!</p>
<p>And with this, our app fully works!</p>
<h2>Why would you (not) use Exoscale?</h2>
<p>OK, so we've seen that running Orchard Core under Exoscale works. This is not a huge surprise, but it's nice to get it verified and have the basics figured out. Why would we do this, though, instead of choosing the beaten path with Azure or AWS, for example?</p>
<h3>European</h3>
<p>Exoscale is not just hosting in Europe, but the company itself is also based in a European country. If that matters for you, either for sentimental reasons or as a matter of company policy (like using a provider that's not under the&nbsp;<a href="https://en.wikipedia.org/wiki/CLOUD_Act" target="_self" style="color: rgba(13, 110, 253, 1)">US CLOUD Act</a>), it can be a big plus. Note though, that while Switzerland is highly aligned with the EU legally, it's not an EU member state, nor part of the European Economic Area.</p>
<h3>Costs</h3>
<p>Exoscale can be a lot cheaper. At €17/month, the Exoscale server provides roughly the same as an A1_v2 Azure VM, which costs €45/month.</p>
<p>However, the smallest managed Postgres instance at €42/month is way above what we'd use on Azure for an entry-level app, where an S0 Azure SQL DB would be around €13/month.</p>
<p>So, in the end, Exoscale costs around EUR 60/month, while the roughly equivalent service in Azure would be basically the same.&nbsp;We do get more with Exoscale (a dedicated VM for the DB, and I think the web server is faster too), a lot more room to grow, but the cost advantage, in itself, disappears, at least in the beginning.&nbsp;</p>
<p>For an entry-level app the storage is cents in both cases, but if you increase your usage, Exoscale's storage costs can be dramatically lower (EUR 0,00002750/GB vs Azure's Standard Hot tier at EUR 0,0185/GB). Network costs at Exoscale (EUR&nbsp;0,02/GB for egress) and per-operation costs at Azure (there's no simple number for this) complicate things, though, so be sure to calculate what's applicable for your app.</p>
<p>All this being said, at Azure, we'd rather use App Services: This is a higher-level "websites as a service", offering a bunch of convenience features like automated deployment, staged publishing, and configuration management. The smallest proper App Services-based infrastructure (with a staging slot and separate staging and production DBs) comes at around €90/month, though, but that also contains a lot of features lacking from VMs.</p>
<h3>Simplicity</h3>
<p>Without consulting any resource, just by playing with the Console, I could fully understand the Exoscale offering (I think...) within like half an hour. Getting the full Orchard Core environment running wouldn't have been much more, have I not written this post at the same time (plus getting stuck on the mentioned storage configuration).</p>
<h3>The cons</h3>
<p>Coming from frequently using the cushy but extremely complex ecosystem of Azure, using a more basic provider like Exoscale&nbsp;is certainly an interesting change. It seems to me that ultimately, there's a lot of work to do if you want to have a full-blown, highly automated hosting environment for Orchard Core, with an option for horizontal scaling. Below are the features that I'd consider necessary, and while these are given with Azure, you need to roll your own solutions with Exoscale:</p>
<ul>
    <li>Staged publishing (blue-green deployment): You'd need to set up multiple VMs or multiple sites, and manage swapping staging with production somehow on your own.</li>
    <li>Automated deployments: I think under a Windows server, the easiest would be to set up Web Deploy and use it from an automation platform like GitHub Actions.</li>
    <li>Observability: You'd either need to host an&nbsp;observability platform yourself, or use an external service.</li>
    <li>The lack of a search/indexing service is less of an issue, because you can just use the Elastic Cloud (what's the option in Azure and AWS too), and I'd consider the lack of an e-mail service not a huge issue either (you can just use something like SendGrid). Managed Valkey is good, but starting at&nbsp;€43/month, it's not priced for an easy entry (just as Postgres), although it also provides a lot more resources than the lowest tiers of&nbsp;Azure Cache for Redis do (for a lower price).</li>
    </ul><p>Yes, you could build an all-in-one infrastructure with Kubernetes, and have containers with services for all the above features (and a DB and storage as well), but that's a large complexity you need to manage. Using Terraform, supported by Exoscale, to ramp up your infrastructure can cut down on manual repetition (and aid portability to other providers to an extent), but is also work that you have to invest. And at the entry level, managed solutions for services like SQL and Redis (instead of hosting your own VMs/containers) can be more cost-efficient too (but that flips if your app's demand increases).</p><p>There are also three notable things I very much didn't like about Exoscale's pricing:&nbsp;</p>
<ul>
            <li>All prices on the&nbsp;<a href="https://www.exoscale.com/pricing/" target="_self" style="color: rgba(13, 110, 253, 1)">pricing page</a>&nbsp;are shown for usage hours only. That's necessary, but a metric frequently a lot more useful is the monthly cost. While I can always multiply by 730 to get an approximation of a month, it would be much clearer to have it indicated in the pricing table already. Also, I'd welcome seeing these hourly and monthly costs indicated in the Exoscale Console, when creating resources, too. The <a href="https://www.exoscale.com/calculator/" target="_self">Pricing Calculator</a> helps, and it does show monthly costs too, but it's better to show this information everywhere.</li>
            <li>The prices in EUR, CHF, and USD are exactly the same. Given that 1 CHF is 1,07 EUR, and 1 EUR is 1,16 USD as of writing this, there's a significant difference in your costs depending on what you pay with (you pay almost 25% more in CHF than USD). According to the website, "Your account can be setup in either CHF, EUR or USD, depending on your initial legal residence." This seems like an arbitrary disadvantage for Swiss users, and an advantage to non-EU ones. The latter is a surprising policy for a company primarily targeting EU customers. I'd welcome the price differences to disappear.</li><li>You can only pay in advance, at least as a new customer. This requires you to either be ready to top up your balance any time you get a low credit notification, or you need to park an excessive amount at Exoscale. In either case, it's also a manual process. It would be better if they would just charge my card after each month's usage.</li>
</ul>
<h2 style="color: rgba(33, 37, 41, 1)">So, what should I do?</h2><p>Based on the feature set, Exoscale can be a good choice to host your Orchard Core app if you don't need anything beyond what's easily possible with the existing offering, or if you already invested into a portable Kubernetes-based infrastructure. However, I think the particularities of Exoscale's pricing are not for everyone.</p>
<p>And if you need help hosting Orchard Core at Exoscale, Azure, or onboard of a satellite (not kidding),&nbsp;<a href="https://orcharddojo.net/contact-us" target="_self" style="color: rgba(13, 110, 253, 1)">drop us a line</a>!</p>]]></description>
      <pubDate>Mon, 10 Aug 2026 04:00:31 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/hosting-orchard-core-at-exoscale</guid>
    </item>
    <item>
      <title>Catch Slow SQL Before Production, How to use Orchard Core Agent Skills? - This week in Orchard (07/08/2026)</title>
      <link>https://orcharddojo.net/blog/catch-slow-sql-before-production-how-to-use-orchard-core-agent-skills-this-week-in-orchard-07-08-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>New Allow Remember Me Login Setting</h3><p>This feature by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> adds a new <em>AllowRememberMe</em> setting in <em>LoginSettings</em>, so administrators can control whether the <em>Remember Me</em> option is available on the login form at all. When it's off, the checkbox is neither shown nor respected, so the option is a real security policy control, not just a UI toggle.</p><p>To try it out, head to <em>Settings -&gt; Security -&gt; User Login</em>, where you will find the new <em>Allow user to be remembered during login</em> checkbox, defaulting to <em>true</em>. Turn it off, and the <em>Remember me</em> checkbox disappears from the login screen entirely.</p><p><img alt="New Allow Remember Me login setting" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260807/new-allow-remember-me-login-setting.png"></p><h3>How to use Orchard Core Agent Skills?</h3><p>Orchard Core has had several agent skills for a while, but no documentation on how to use or contribute to them, until now. Thanks to <a href="https://github.com/agriffard" target="_self">Antoine Griffard</a>, there is a <a href="https://docs.orchardcore.net/en/latest/contributing/using-skills/" target="_self">new documentation page</a> that covers where the skills live, which ones are available, and how to use them. For teams onboarding new developers (or new AI agents) onto Orchard Core, that's one less thing to figure out by trial and error.</p><p><img alt="Using Orchard Core Agent Skills docs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260807/using-orchard-core-agent-skills-docs.png"></p><p>Antoine also added <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/.agents/skills/orchardcore-recipe-creator/SKILL.md" target="_self">a new skill</a>, <em>Orchard Core Setup Recipe Creator</em>, which creates Orchard Core setup recipes (.recipe.json) that provision a tenant on setup: enabling features, setting themes, defining content types, importing content, roles, and settings. Use it when you need a setup recipe, a starter recipe, or automated tenant configuration.</p><p><a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> improved the <em>orchardcore-tester</em> skill, so an agent can reliably stand up an Orchard Core site for browser-based functional testing. <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/.agents/skills/orchardcore-tester/SKILL.md" target="_self">Find the updated skill</a>, which tests Orchard Core features through browser automation: admin features, content management, media library, and module testing.</p><h3>Demos</h3><h4>Catch Slow SQL Before Production - Lombiq's Query Monitoring Explained</h4><p>This week, you can see a new feature in the <a href="https://github.com/Lombiq/UI-Testing-Toolbox" target="_self">Lombiq UI Testing Toolbox for Orchard Core</a>: automated SQL query monitoring for UI tests. It flags three common performance problems as tests run:</p><ul><li>duplicate SQL queries (the classic SELECT N+1 signal)</li><li>duplicate queries with identical parameters (usually a missing cache)</li><li>and oversized result sets (usually a missing filter or paging).</li></ul><p>It's disabled by default since it adds overhead, so you enable it for the tests where it matters, either as manual assertions after specific page changes or automatically on every page load, with configurable thresholds and execution filters. When a check fails, you get the URL, failure category, threshold, and full SQL call stack, so you can tell right away whether it's a real regression or just needs tuning.</p><p>The easiest way to try it out is to clone <a href="https://github.com/Lombiq/Open-Source-Orchard-Core-Extensions" target="_self">Lombiq's Open-Source Orchard Core Extensions solution</a>. This Orchard Core Visual Studio solution contains most of Lombiq's open-source Orchard modules and themes, as well as related utilities and libraries, including our <a href="https://github.com/Lombiq/UI-Testing-Toolbox" target="_self">UI Testing Toolbox for Orchard Core</a> with several samples and documentation.</p><p>You will find a class called <em>SqlQueryMonitoringTests</em> in the <em>Lombiq.Tests.UI.Samples</em> project that contains several well-documented tests. We will run the first one, called <em>SqlQueryMonitoringExplicitAssertions</em>. But before doing that, we added a <em>for loop</em> to our code that will query all of our published content items a hundred times, so we have something for the monitor to catch.</p><p><img alt="Triggering an error" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260807/triggering-an-error.png"></p><p>If we run our test and check the Test Detail Summary, we will see two failure categories:</p><ul><li>DuplicateCommandText</li><li>DuplicateCommandWithParameters</li></ul><p>Below the categories, you can see guides, threshold configuration values, and call stacks to help you identify and fix the errors raised by our feature.</p><p><img alt="Executing the test" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260807/executing-the-test.png"></p><p>For teams maintaining a codebase long-term, this is the kind of check that catches performance regressions in code review instead of in production, backed by the same open-source toolkit (Selenium, Atata, xUnit, cross-browser, CI-ready) Lombiq uses on its own client projects. Watch the <a href="https://www.youtube.com/watch?v=YBdzXsREkxI" target="_self">demo on YouTube for more</a>, or check <a href="https://github.com/Lombiq/UI-Testing-Toolbox/blob/dev/Lombiq.Tests.UI/Docs/SqlQueryMonitoring.md" target="_self">the docs for setup details</a>.</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/YBdzXsREkxI" 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 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/20260731/orchard-harvest-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 411 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=BXOebnvxWO8" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 07 Aug 2026 11:05:01 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/catch-slow-sql-before-production-how-to-use-orchard-core-agent-skills-this-week-in-orchard-07-08-2026</guid>
    </item>
    <item>
      <title>Orchard Core Just Got a New Home, Content Version Pruning Feature - This week in Orchard (31/07/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-core-just-got-a-new-home-content-version-pruning-feature-this-week-in-orchard-31-07-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Content Version Pruning Feature</h3><p>The new <em>Content Version Pruning</em> feature provides a background task that periodically deletes old archived content item versions; versions that are neither the latest nor the published one. On sites that are edited often, every save or publish leaves the previous version behind in the database. Over time, these accumulate, growing the storage footprint and slowing version-history queries. Pruning keeps that history bounded. The latest draft and the published version of an item are never deleted; only superseded (archived) versions are eligible.</p><p>To try it out, head to <em>Tools -&gt; Features</em> and enable the <em>Content Version Pruning</em> feature. After that, you will find a new settings page under <em>Settings -&gt; Content Version Pruning</em>, where you can configure its behavior. As you can see, you can configure the retention days for content item versions, automatically pruning old, non-latest, and non-published versions while keeping at least one version per item, with options to specify which content types to prune.</p><p>Here we said to prune the non-latest, non-published versions of the <em>Blog Post</em> content items that are older than 30 days, while keeping one version of the most recent archived versions, regardless of age.</p><p><img alt="Content Version Pruning Feature" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260731/content-version-pruning-feature.png"></p><p>Deletions are flushed in batches to keep the unit of work bounded, and a failure to delete one version is logged and skipped without aborting the run.</p><p>Note that pruned versions are permanently removed from the database and cannot be restored. Choose a retention period and version-keep count that match your audit and rollback needs before enabling the task.</p><p>Thanks, <a href="https://github.com/PUXVSE" target="_blank">PUXVSE,</a> for your first contribution, and <a href="https://github.com/agriffard" target="_blank">Antoine Griffard</a> for the documentation!</p><h3>New "Add &amp; Configure" and "Save &amp; Configure" buttons in the content editor UI</h3><p>This change by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> lets you add a content part or a content field and configure it in one step, instead of adding it first and then hunting for it again to set it up. It introduces new <em>Add &amp; Configure</em> and <em>Save &amp; Configure</em> buttons to the content editor, with more dynamic controls and clearer feedback, and updated backend logic to support the new flows. The <em>Add Selected Parts</em> button in <em>AddPartsTo.cshtml</em> is now only visible when at least one part is selected, with dynamic show/hide logic via JavaScript.</p><p>Here we have a site set up with the <em>Blog</em> recipe, and we want to add a new <em>Text Field</em> called <em>Quote</em> to the predefined <em>Blog Post</em> content type. 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>Blog Post</em> content type. Then hit the <em>Add Field</em> button, select the <em>Text Field</em>, and click the <em>Save &amp; Configure</em> button to immediately configure the newly added field.</p><p><img alt="New Save and Configure button" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260731/new-save-and-configure-button.gif"></p><h3>Demos</h3><h4>Orchard Core Just Got a New Home</h4><p>Over the past two weeks, you could see demos of <a href="https://lombiq.link/jmp/ace361f5" target="_self">how the community shaped the Orchard Core website</a>, including the <a href="https://lombiq.link/jmp/9c5fd031" target="_self">page that promotes Orchard Harvest</a>.</p><p>The <a href="https://orchardcore.net/" target="_self">new Orchard Core website</a> is live! <a href="https://github.com/buzznick" target="_self">Nick Jackson</a> demoed the final version, walking through the technical build and the content updates.</p><p>The site is built on vanilla Orchard Core (upgraded to Orchard Core 3), with only the Tailwind module added for styling; external modules were intentionally left out to keep the implementation clean. Highlights include automated daily NuGet download stats via workflows, clickable speaker bios, historical Orchard Harvest event pages, and a "stay up to date" section. The site also hits double-A accessibility standards with strong Google Lighthouse scores on both mobile and desktop.</p><p>Thanks again to <a href="https://github.com/buzznick" target="_self">Nick Jackson</a> for the build, and to the whole team for the feedback that shaped it!</p><p><img alt="New Orchard Core Website" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260731/new-orchard-core-website.png"></p><p><a href="https://www.youtube.com/watch?v=klhd_x2BUYU" target="_self">Check out the recording</a> and let us know what you think!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/klhd_x2BUYU" 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>Sign in with Microsoft: SSO for Orchard Core</h3><p>Tired of making users juggle yet another username and password? <a href="https://lombiq.link/jmp/769327d0" target="_self">Our article shows</a> how to plug Microsoft sign-in (personal accounts or Entra ID/Microsoft 365) straight into your ASP.NET Core or Orchard Core app, so people log in with credentials they already trust, while Orchard Core keeps full control over roles and permissions behind the scenes.</p><p>You can test-drive the whole flow on <a href="https://lombiq.link/jmp/4a8beec1" target="_self">DotNest</a> without writing a line of custom code. Check out <a href="https://docs.orchardcore.net/en/latest/reference/modules/Microsoft.Authentication/" target="_self">the official documentation</a>, or <a href="https://lombiq.link/jmp/31fa103" target="_self">contact us</a> if you want help wiring Microsoft SSO into your app or portal.</p><p><img alt="Integrate Microsoft Log in DotNest" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260731/integrate-microsoft-login-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/20260731/orchard-harvest-program.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 413 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_ksUNlZGZw" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 31 Jul 2026 09:48:15 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-core-just-got-a-new-home-content-version-pruning-feature-this-week-in-orchard-31-07-2026</guid>
    </item>
    <item>
      <title>Sponsorship Spotlight: Hisham Bin Ateya</title>
      <link>https://orcharddojo.net/blog/sponsorship-spotlight-hisham-bin-ateya</link>
      <description><![CDATA[<p><strong>Gábor</strong>: When did you first come across Orchard?</p><p><strong>Hisham</strong>: My journey with Orchard started before Orchard Core, when Orchard CMS was hosted on <a href="https://en.wikipedia.org/wiki/CodePlex" target="_self">CodePlex</a> and simply called Orchard. To be honest, I didn't use Orchard 1 for production, just exploring what was there. I have been following Orchard Core since the beginning, when it was called Orchard vNext. It was a prototype, if I recall, and I started my first contribution on May 25, 2017.</p><p><strong>Gábor</strong>: Right, the very first commits to the Orchard Core repo were made by <a href="https://github.com/Jetski5822" target="_self">Nicholas Mayne</a> in November of 2014.  That was more than 10 years ago! And why do you like contributing to Orchard?</p><p><strong>Hisham</strong>: For me, Orchard Core is not the first project I contributed to. Open-source software is close to my heart. I had already contributed to many projects before Orchard Core. After dedicating a lot of time to Orchard Core, I found it helped me understand many aspects of the ecosystem.</p><p>This has helped me use Orchard Core in my daily development and in production websites, as well as help the community as much as I can.</p><p><strong>Gábor</strong>: What do you like most about Orchard?</p><p><strong>Hisham</strong>: Flexibility, Extensibility, and Community.</p><p><strong>Gábor</strong>: Have you tried other CMSs too?</p><p><strong>Hisham</strong>: Sure, I tried many CMSs and frameworks, including DotNetNuke (DNN), Umbraco, Oqtane Framework, and Kentico CMS in the ASP.NET Core space. I also tried many PHP CMSs, including Drupal and Joomla.</p><p>For me, Orchard Core is one of the top 3 I have ever seen, but it has a steep learning curve; there are specialized terms, such as drivers and shapes.</p><p><strong>Gábor</strong>: And what do you think is the difference between Orchard and the other CMSs?</p><p><strong>Hisham</strong>: Orchard Core is not just a CMS; it's a web application framework with a CMS built on top of it, which is unique compared to other OSS projects.</p><p>It contains many modules, more than enough to start building your websites and web applications without worrying about the framework and cross-cutting concerns such as multitenancy, modularity, localization, logging, and much more.</p><p>I'd like to mention that Orchard Core is very flexible and extensible, and you can do many things even if you don't own the source code. It is the only product I have ever seen that provides such flexibility, in my opinion, but it also introduces some complexity.</p><p><strong>Gábor</strong>: You mentioned that you are contributing to other open-source projects too. What are these projects? Are you contributing to the ones you mentioned?</p><p><strong>Hisham</strong>:  Yes, of course. I also contributed to many open-source software projects before Orchard Core, including the <a href="https://github.com/oqtane/oqtane.framework" target="_self">Oqtane Framework</a>. I contributed to <a href="https://github.com/simplcommerce/simplcommerce" target="_self">SimplCommerce</a>, as well as to ASP.NET Core in its early days, when it was called DNX (Dot Net eXecution environment).</p><p>I'm running and maintaining a few libraries, such as <a href="https://www.nuget.org/packages/My.Extensions.Localization.Json/" target="_self">JSON Localizer</a>, which has over 700K downloads on NuGet.</p><p>I'm also helping with many projects, especially in localization. For more details, you can check out <a href="https://github.com/hishamco" target="_self">my GitHub profile</a>.</p><p><strong>Gábor</strong>: Congratulations on reaching more than 700K downloads! And you also have a repository on GitHub called <a href="https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules" target="_self">Orchard Core Contrib Modules</a>. Could you tell us more about it?</p><p><strong>Hisham</strong>: Yes, I started a GitHub organization named "Orchard Core Contrib (OCC)", which is from the community to the community. It contains several repositories, including APIs, modules, and themes, that are not included by default in the official Orchard Core release. There were features that started there and were later moved to Orchard Core, which is impressive.</p><p>However, I faced many challenges maintaining these 59 packages, and the number is increasing over time, which requires significant time and support to keep these projects running.</p><p>But I will not forget the very useful feedback and contributions I received from the community. On that note, I invite any Orchard developer to contribute to this great project, which is community-to-community, as I mentioned before.</p><p><strong>Gábor</strong>: I'm glad to hear that you receive useful feedback from the community. It's always a good feeling when others use and care about a project.</p><p><strong>Hisham</strong>: I agree. The community is one of the most important things that made this project a success story. Many OSS projects have lost traction when there was no community around them.</p><p>Finally, I can't find the words to express my gratitude to Lombiq for their financial support for my contributions.</p><p><strong>Gábor</strong>: It's our pleasure to support the developers who power open source. One last question: are you planning to join <a href="https://orchardcore.net/harvest" target="_self">this year's Harvest</a>?</p><p><strong>Hisham</strong>: Unfortunately, no, due to the difficulties in reaching Canada and the US.</p><p><strong>Gábor</strong>: I'm sad that you can't make it. Thank you for the interview, and I hope to see you at Harvest next year!</p><p><br></p><p>Stay tuned for the upcoming parts of the Sponsorship Spotlight series! And if you missed the previous part, you can <a href="https://lombiq.link/jmp/72eac9cb" target="_self">check it out here</a>, where we talked with <a href="https://github.com/agriffard" target="_self">Antoine Griffard</a>, one of the main developers of Orchard Core. If you don't want to miss our upcoming Sponsorship Spotlight series, 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>Tue, 28 Jul 2026 09:47:41 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/sponsorship-spotlight-hisham-bin-ateya</guid>
    </item>
    <item>
      <title>Orchard Harvest's new website; Ready to simplify your Orchard Core hosting? - This week in Orchard (24/07/2026)</title>
      <link>https://orcharddojo.net/blog/orchard-harvest-s-new-website-ready-to-simplify-your-orchard-core-hosting-this-week-in-orchard-24-07-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Improve Features Management UI</h3><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> reworked the <em>Features</em> page in the admin UI:</p><ul><li>Removed the jQuery dependency in favor of vanilla JavaScript.</li><li>Search now matches on both feature description and feature ID.</li><li>New filters hide On Demand and Always Enabled features by default, with an option to show them.</li><li>You can now select all features within a category at once.</li><li>Dependency badges switched to the lighter badge style, matching the pattern used elsewhere in the UI, including the Content Management screens.</li></ul><p>The GIF below shows the <em>Visibility</em> filter hiding features by default, then selecting every feature under one category in a single click.</p><p><img alt="Improve Features management UI" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260724/improve-features-management-ui.gif"></p><h3>Shape Debugging Site Settings</h3><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> introduced a new site-level "Debugging" settings group that lets site owners turn shape debugging (HTML comments around rendered shapes) on or off directly from the admin UI, instead of requiring code changes.</p><p>To enable it, go to <em>Settings -&gt; Debugging</em> and tick <em>Write shape debug information</em>. When enabled, Orchard Core writes HTML comments around rendered shapes so you can inspect which shape binding or template produced a fragment on a running site.</p><p>In our example, we have a site set up with the <em>Blog</em> recipe and checked the source code of the homepage. As you can see, the rendered shapes are wrapped with comments on any page you inspect. The opening comment contains the shape type and the binding used. Razor bindings report the <em>.cshtml</em> path, while Liquid bindings report a virtual <em>.liquid</em> source.</p><p><img alt="Shape Debugging Site Settings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260724/shape-debugging-site-setting.png"></p><h3>Demos</h3><h4>Inside Orchard Harvest's New Website</h4><p><a href="https://github.com/buzznick" target="_self">Nick Jackson</a> presented the redesign concepts for the Orchard Harvest website: layout changes, improved navigation, dynamic content blocks, and enhancements to the <a href="https://try.orchardcore.net/" target="_self">Try Orchard Core</a> site.</p><p><a href="https://orchardcorewebsite.blob.core.windows.net/demo/v1/harvest-upcoming.html" target="_self">The preview</a> shows the new hero section, call-to-action buttons, sponsorship logos, and streamlined navigation. The redesign supports dynamic layouts for pre- and post-conference states, including sections for submitting talks, past event photos, and sponsor information. Speaker profiles are simplified with links to GitHub or LinkedIn, and the schedule is presented in an accordion style to save vertical space and highlight breaks.</p><p>Nick also showcased <a href="https://orchardcorewebsite.blob.core.windows.net/demo/v1/try.html" target="_self">improvements to the Try Orchard Core demo site</a>, clarifying the signup process, emphasizing privacy and free access, and adding frequently asked questions for user reassurance.</p><p><img alt="Orchard Harvest Site Redesign" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260724/orchard-harvest-site-redesign.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=1F3XnDm2HkU" 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/1F3XnDm2HkU" 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>Ready to simplify your Orchard Core hosting?</h3><p>We launched DotNest, our fully managed Orchard Core hosting platform, on Microsoft Marketplace, already powering more than 6,000 websites worldwide. IT teams, marketing teams, and digital agencies can now provision a fully managed Orchard Core site in minutes, directly through their existing Azure subscription: no separate procurement, no infrastructure to manage.</p><p>What you get: automatic updates, native Azure integration, extensive theming and content-modeling freedom, built-in ecommerce, enterprise-grade performance, and GDPR compliance out of the box.</p><p>Skip the infrastructure work. Explore <a href="https://marketplace.microsoft.com/en-us/product/saas/lombiq.dotnest-production" target="_self">DotNest on Microsoft Marketplace</a>, or visit <a href="https://lombiq.link/jmp/82bbd237" target="_self">DotNest.com</a> to learn more.</p><p><a href="https://lombiq.link/jmp/f1c79bf2" target="_self">Read the announcement</a> on our site!</p><p><img alt="DotNest Azure Marketplance" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260724/dotnest-azure-marketplace.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 413 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_ksUNlZGZw" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 24 Jul 2026 09:21:26 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo.net/blog/orchard-harvest-s-new-website-ready-to-simplify-your-orchard-core-hosting-this-week-in-orchard-24-07-2026</guid>
    </item>
    <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>
  </channel>
</rss>