Mid 2026, away from the spotlight of fancy SitecoreAI user interfaces, AI-driven content orchestration and CDN-based content delivery lies a vast sea of legacy Sitecore XM/XP setups tucked away in on-prem data centers or self-managed cloud VMs.
A great new feature on Sitecore XM Cloud and also XM/XP 10.3+ is the possibility to set up Webhooks for a variety of events eg. item_saved, item_created etc. There is a limitation though if you’re on Platform DXP (10.3+):
Sitecore‘s „HTML Cache“ feature on renderings has been a great tool since the early days of Sitecore. While in the world of headless, we‘re actually caching JSON instead of HTML, the functionality of this cache remains the same:
When building a site on Sitecore Headless / JSS you’ll eventually end up hosting it on a Headless Proxy Node instance. The Headles Proxy will perform server-side rendering of the page HTML for initial requests i.E. when you hit F5 (browser refresh). Subsequent requests are then usually rendered in the browser. So far so good.
In the previous post, we have set up an index with computed field allowing us to query Sitecore items by referenced assetId. We can now use this to build a nice widget on Contenthub’s asset details page:
Widget that displays all Sitecore items referencing this asset(more…)
ContentHub integrates nicely with Sitecore XM through Sitecore Connect for ContentHub. Probably the most popular use case is referencing assets stored in ContentHub’s DAM instead of using classic Media Items. This is integrated nicely through an extension of the image field:
In some cases, authors might want to search ContentHub for a DAM asset by its ID. Out of the box, this is not possible via the search GUI but it can be enabled with a trick:
Add field to M.Asset’s Schema
The field doesn’t need to be displayed on any pages as it will be populated automatically.
Create script and trigger
Create, compile and publish a script under Manage > Scripts:
using Stylelabs.M.Sdk;
using Stylelabs.M.Sdk.Contracts.Content;
try {
long assetId = Context.TargetId.Value;
var client = MClient;
var assetToUpdate = await client.Entities.GetAsync(assetId);
// Write Asset ID to SearchableAssetId field (for search in fulltext index)
if (assetToUpdate.GetPropertyValue<string>("SearchableAssetId") != assetId.ToString()) {
MClient.Logger.Info($"Setting SearchableAssetId to: {assetId}");
assetToUpdate.SetPropertyValue("SearchableAssetId", assetId.ToString());
client.Entities.SaveAsync(assetToUpdate);
}
}
catch (Exception e) {
MClient.Logger.Info(e.ToString());
return;
}
2. Create an action that references your script
3. Create a trigger, that fires when “SearchableAssetId” is empty
General TabConditions tabActions tab
Testing
In order to test, you’ll need to re-save a DAM asset. This will trigger our script asychronously and eventually update the search index. It might take a few minutes for the index to be updated.
When all is done, you should be able to search for assets by their IDs.
Sitecore’s Scheduled Agents and Tasks have been around forever and are well-known members of the XM suite. Less known is a gotcha you might run into when implementing long running operations (i.E. background import/export, bulk updates,…)