SUGCON EUROPE 2025 Belgium – Takeaways part 2

This is a second part of my key takeaways from the recently concluded SUGCON Europe 2025. In my previous blog, I covered the keynotes from Sitecore leadership including the key announcements. In this blog post, I will cover the rest of my key takeaways from the conference.

Key highlight sessions continued

Session: Building the Future: Extending XM Cloud with Marketplace Apps

  • Spyros Misichronis (Marketplace Architect, Sitecore)
  • Liz Nelson (Product Lead of XM Cloud)

Summary: Liz and Spyros gave a high level overview of the Sitecore XM Cloud Marketplace Apps, headlining it as “Extensibility Umbrella” comprising of a Public Portal and Developer Marketplace.

Session key takeaways:

  • Developers can now leverage the CLI, SDK on GitHub to build extensions to integrate with XM Cloud APIs.
  • Developers can embed features into Pages directly or creating standalone tools.
  • Developers can build applications that enhances functionality and streamline workflows
  • Spyros’s live demo of building a sample Marketplace App showcased that we can start leveraging existing the developer tooling right now to build the apps.

Session: Leading in the new era of AI

  • Hans Verbeeck (Technology Manager @ Microsoft)

Summary: Hans session covered the journey of AI to date, highlighting how things have changed from the early days of Scaling Laws that pretty much limited computing capacity. With computing capacity and storage readily available with cloud and data centres, Microsoft has made rapid progress with Copilots, AI platform and Agent Frameworks. He amplified the need to make a choice between Buy or Build in this new era of AI and he was leaning towards “better of Buying” or “consider Buying before Building”.

Session key takeaways

  • When it comes to AI, better of Buying” or “consider Buying before Building”
  • Think of what you can Buy first
  • Copilot is the UX for AI, Copilot is for Humans
  • Agents are for Processes
  • Sitecore Stream is AI-enabled capabilities with Sitecore products, that is underpinned by Brand-aware AI, Copilots & Agents and Agentic Workflows.
  • Sitecore Stream leverage Azure’s scalability, reliability, security, advanced analytics, AI and machine learning
  • Call to action: Read more about Sitecore Stream from official docs

Session: Lessons learned – 2 years after building our first XM Cloud platform

  • Derk Hudepol (Avanade CX Solution lead & Architect and Technology MVP)

Summary: In this session Derk took us through his journey with XM Cloud over the past two years at BDR Thermea. They had started small—with just one site—after building a solid core platform. From there, things really took off as they expanded to support five brands and over ten sites, adding features like eCommerce and search along the way. Derk also shared the lessons learnt and some tips and tricks working with XM cloud.

Session key takeaways

  • Have a solid basis for your CM Cloud solution
  • It is challenging to keep up with a continuously updating platform (XM Cloud)
  • Less is more, XM Cloud provided a lot better adoption compared to XP platform
  • Implement workflows from Day 1 for XM Cloud projects
  • Experience Edge comes with a lot of benefits, but also has challenges around rate limiting, stale content /cache issues and lack of Admin UI
  • You can read more insights on his blog: https://blog.derkhudepol.nl/

Session: Building advanced RAG systems with Sitecore products. Putting AI assistants in Production

  • Sergey Baranov (Technology MVP)

Summary: Sergey’s session was a classic of how to get value from your data leveraging AI. In his well researched and presented session, he demonstrated how to unlock the potential of your data by transforming it into meaningful interactions with advanced Retrieval-Augmented Generation (RAG) systems.

Sergey explored how to design advanced virtual agents using RAG, connecting LLMs with Sitecore tools like CDP, Personalize, and OrderCloud to create personalized, data-driven customer interactions, while also covering optimization, cost-efficiency, and quality monitoring

Session key takeaways

  • Know differences between traditional Virtual Assistants and Naive RAG systems
  • Understand Large Language Models (LLM) limitations when building RAGs, such as limited knowledge, hallucinations, no personalisation
  • Naive RAG versus Advanced RAG: the former improves responses of LLM responses, the latter improves the quality of RAG
  • GPT-40 mini is recommended for RAGs (actually always leverage mini versions in RAGs)

Session: The Future of Design Library for Multi-Site, Multi-Channel Content

  • Liz Nelson (Product Lead of XM Cloud)
  • Eirini Kalampogia (Product Director, Sitecore)

Summary: Liz doesn’t need introduction, but Eirini this was her first presentation. During the session Liz and Eirini shared how a centralized Design Library helps manage components and design across complex multi-site, multi-channel ecosystems. It improves consistency, streamlines workflows, and boosts developer efficiency through integration with client codebases, unified templates, and usage metrics—creating a one-stop hub for scalable, high-quality digital experiences. The session had a live demo that showcased identifying “duplicate” components with new Design Library – a common pain point marketers face today.

Session key takeaways

  • Design system is needed so that we can have consistency across channels, have visibility of components, with faster delivery cycles (and reduced tech debt).
  • Design library gives marketers autonomy they much so need
  • Design at scale is a smarter way to manage components
  • Avoiding fragmentations of components (marketer vs developer), code & no-code means better together
  • Look out for future announcements on Design Library and capabilities available within Sitecore products. Especially leveraging AI component generation, whereby a marketer starts component creation (no-code) and developer later takes AI-generated code and improves it. And marketer plays with it iteratively
  • The vision being “A single platform where devs build structure, marketers bring stories to life and AI scales the creative output across audiences and channels”

Session: Sitecore Stream in Platform DXP

  • Vignesh Vishwanath (Product Manager, Sitecore)

Summary: This was a session by Vignesh where he provided a full overview of the Sitecore Stream module within Sitecore Platform DX. He showcased the available features today as well what is in the roadmap.

Session key takeaways

  • Demonstrated Language translation with Stream Translate (which adds new item version)
  • You can use Stream with Content Structure, Content Auditing (review and suggest improvements)
  • You can use Stream for Image to Alt Text
  • You can use Stream for Component Generation (leveraging prompts)
  • Highly recommend further reading from official Sitecore docs

Session: The joys and challenges of managing thousands of websites in a single Sitecore instance

  • Adam Najmanowicz (Developer)

Summary: Adam need no introduction. His session theme was basically lessons learnt, tips and tricks from the joys and challenges of managing a large number of websites in a single Sitecore instance.

Session key takeaways

  • Don’t run in integrated mode for XM Cloud
  • Servers are “cattle not pets”
  • Go headless node from the very start of XM Cloud projects
  • Reusability of content and settings is super important

Session: Better XM/XP deployments with Kubernetes

  • Peter Procházka (Sitecore Solutions Architect @ Accenture and Technology MVP)

Summary: Pete’s session was mostly lesson learnt and his insights using Kubernetes with Sitecore XM/XP workloads. He showcased Kubernetes and how it enables cloud orchestration and self-healing among other features. This session was more valuable for anyone transitioning from IaaS or PaaS, as Pete shared useful reference architectures.

Session key takeaways

  1. Nice recap of what Traditional vs Cloud-based services workloads look like, IaaS vs CaaS
  2. Local developer workflows and process to follow
  3. Docker architecture, Image registry, Docker compose and override files
  4. Why Kubernetes (with declarative vs imperative use cases) and pros/cons for either approach
  5. DevOps /GitOps and tooling (Flux/Helm)
  6. Reach out to Pete or visit his blog for more details: https://tothecore.sk/

Session: Synchronizing Sitecore XM Cloud Content with Azure DevOps

  • Robbert Hock (Technology MVP)

Summary: This was a fast-paced 15-minute lightning talk in which Robbert Hock(who needs no introduction) shared how his team addressed a common challenge with Sitecore XM Cloud: keeping lower Sitecore XM Cloud environments synchronized with production. I will point you to read more about it on Robbert follow up blog post. Robbert actually demonstrated his solution as well as the Azure DevOps CI/CD pipelines his team had built.

Session: Sitecore’s Marketplace roadmap review & Developer program

  • Krassi Eneva (Senior Product Manager, Sitecore)
  • Justin Vogt (Principle Product Manager, Sitecore)

Summary: Already covered this as part of the Key Product Roadmaps announcements in part one post.

Other sessions attended

Below is a high level summary of other sessions I managed to attend

Session: Our Conversational AI future – Predicting the new web by looking to the past

  • Presented by Rob Coyle (Director of Product Design, Sitecore)

Summary: Rob session was on “a speculative future of Web and CMS” where he demonstrated concepts such as: “Show recommendations based on time to go home”. He explored futuristic use cases such as Content remixes and Agent rules.

Session: Unlocking Inclusivity – Alt-Text So Good, Even Robots Can’t Resist

  • Presented by Anna Pokorna (Ambassador MVP)

Summary: In this session, Anna shared how they leveraged AI to automate the generation of Image alt-text and metadata for their client. Thereby enhancing accessibility, SEO, and maintaining brand tone of voice. The solution was implemented over a year ago, well before Sitecore Stream was announced, highlighting Anna’s company forward-thinking approach as the industry now moves toward similar capabilities.

Session: Full Circle – The Architect of XM Cloud builds an XM Cloud Site (as a partner for the first time)

  • Presented Andy Cohen (Honorary MVP)

Summary: Andy Cohen doesn’t need further introduction — the founding architect of XM Cloud, was sharing his own story and experiences as he built his first project on XM Cloud—this time from a partner perspective. It was an interesting session that was well attended.

Session: Diversity in the Age of AI – Why It Matters More Than Ever?

  • Presented by Daniela Militaru (Senior Sales Engineer, Sitecore)

Summary: Daniela’s session was a group discussion in the format of a fire-side chat where the audience explored the vital role that diverse perspectives play in developing ethical, innovative, and effective AI solutions. Very engaging and great to see so many contributions from the engaged audience in this important AI topic.

Session: A walk-through of XM Cloud Content

Round up from Sitecore community

Below is a summary of related blog posts from our Sitecore community, whereby Sitecore MVPs, marketers and developers alike are sharing their key takeaways as well. Please note this list has not been presented in any particular ordering.

  1. SUGCON EU Excitement! The most interesting announcements from the Sitecore team, by Jeremy Davis: https://blog.jermdavis.dev/posts/2025/sugcon-excitement (accessed on 8th May 2025)
  2. 10 Highlights from SUGCON Europe 2025 in Antwerp, Belgium – by Rob McGovern: https://remarkable.global/insights/sugcon-europe-2025/ (accessed on 8th May 2025)
  3. LinkedIn post by Anna Pokorna summarizing her key takeaways (accessed on 8th May 2025)
  4. Key takeaways by Nick Allen summarized in 3x blog posts: https://www.thinkfreshfreelance.co.uk/blog/post/sugcon-europe-2025-keynote-insights (accessed on 8th May 2025)
  5. SUGCON Europe 2025: One Platform, Bold Future, by Nikhil Kulkarni: https://techienikhil.wordpress.com/2025/04/10/sugcon-europe-2025/ (accessed on 8th May 2025)
  6. Recap: SUGCON Europe 2025 – Synchronizing Sitecore XM Cloud with Azure DevOps, by Robbert Hock: https://www.kayee.nl/2025/04/11/recap-sugcon-europe-2025-synchronizing-sitecore-xm-cloud-with-azure-devops/ (accessed on 8th May 2025)
  7. My SUGCON Europe 2025 highlights, Jeroen Breuer: https://www.jeroenbreuer.nl/blog/my-sugcon-europe-2025-highlights/ (accessed on 8th May 2025)
  8. SPExAI Report Builder: A Winning Sitecore Hackathon submission (announced during SUGNCON Europe 2025): https://www.sitecoregabe.com/2025/04/spexai-report-builder-hackathon.html (accessed on 8th May 2025)
  9. SUGCON Europe 2025 – Recap, by Simon Hauck: https://sitecore.merkle.com/sugcon-recap/ (accessed on 8th May 2025)
  10. Unlocking the Sitecore Marketplace: A Deep Dive from SUGCON Europe 2025, by Akshay Sura: https://konabos.com/blog/unlocking-the-sitecore-marketplace-a-deep-dive-from-sugcon-europe-2025 (accessed on 8th May 2025)
  11. SUGCON Europe 2025 Takeaways, by Martin Miles: https://blog.martinmiles.net/post/sugcon-europe-2025-takeaways (accessed on 8th May 2025)
  12. SUGCON YouTube Channel with SUGCON Europe 2025 sessions, https://www.youtube.com/playlist?list=PLvwdDTmlDsRy5DRArU-nmWNlWED0vHuJS

Conclusion and next steps

Overall, I observed a positive sentiment during this conference. There was positive energy and buzz throughout the event, and this was echoed in various social media posts as well. I have also provided a round up from Sitecore community for your convenience – I hope you get time to read through the blog posts to corroborate my key takeaways and feedback from other attendees. SUGCON Europe is a key event in Sitecore calendar and there is already talk about next year! We are also looking forward to SUGCON ANZ later in the year and Sitecore Symposium is back again in Orlando during November 2025. In the meantime, stay tuned.

SUGCON EUROPE 2025 Belgium – Takeaways part one

Sitecore User Group Conference Europe 2025 has just concluded. It was held over two days in Antwerp city, Belgium last week (3-4 April 2025) and I was one of the lucky attendees. In this blog post, I will be sharing my experiences and key takeaways from the conference.

Firstly, I would like to thank the SUGCON organizers and the Sitecore community for making the event such a success. The choice of venue was spot on! Held in A Room with a ZOO – Antwerp, Belgium, the venue was most accessible via train seamlessly connected to the adjacent Belle Époque international station, which links to the European rail network. And right next to the Antwerp Central Station, the most beautiful station in the world. The food and hospitality were top notch, with variety of Belgian cuisine and desserts on the menu.

Secondly, the event schedule was the best you could have asked for. It catered for both developers and marketers alike, with keynotes from Sitecore leadership team, Sitecore product updates, great Sitecore community contents and demos alike. This year SUGCON also provided an accompanying SUGCON app to help personalise your sessions, keep track schedule and the room switches! Whether it was the usual ad hoc chit chat along corridors with other attendees, over lunch and dinner everyone was engaged. Including a Community Scavenger hunt app powered by Deckle, that kept everyone engaged and exploring the venue with many prizes won by those on top of the leaderboard at close of the event!

Keynote: Powering the Future of Sitecore Together

  • Dave O’Flanagan (CEO, Sitecore)
  • Roger Connolly (CPO, Sitecore)
  • Danny Robinson(CTO, Sitecore)

Keynote from Dave: This was Dave’s 4th SUGCON, and his first as Sitecore CEO. Dave shared stats that highlighted the key role our Sitecore community in success of Sitecore, such as 100+ user groups with over 30k members across 30+ countries, producing over 1k+ developer artefacts. Keynote was held in the “Darwin Room” which had a huge skeleton of a whale provided a great backdrop of his “Adapt” messaging. He reminded us, to echo famous Darwin mantra, that those who “evolve” and “adapt” thrive and survive. We are at what he called “The AI Inflection point”. His key message was he’s very much building Sitecore as an “AI First” company going forward. We will see marketing significantly change, let’s embrace the “The Intelligent DXP” built on a world-class CMS that is underpinned by AI (Sitecore Stream). With AI capabilities already being infused across Sitecore products and as AI agents are becoming more capable, Sitecore can deliver on their promises such as personalisation.

Keynote from Roger: Roger swiftly picked on from where Dave left and his messaging revolved around Content with Context will fuel the AI future. Content is King. Simple. He challenged whether “Is AI the UX of the future?” as we are seeing UX patterns shifting fast. With AI capabilities already being infused across Sitecore products, you can use Sitecore Stream with DXP 10.2+ and XM Cloud to generate content. As well as Contextual AI tagging and Visual Search in Content Hub which solves the metadata and retrieval main issues he sees within Content Hub. He also touched on the changing face of Search in the AI age and showcased the AI-powered A/B/n testing, personalisation and language translation tools available to us now.

Keynote from Danny: Last but not least, Danny shared his vision and roadmap with his key messaging also revolving around Innovating faster with AI. He re-emphasized Dave’s “Intelligent DXP” by showcasing how he is evolving the architecture for the future. He is also very much driven in improving developer experience by enabling developers with tools and SDKs they need. He sees this as ground-up, embedded AI capabilities, federated content, AI-powered site creation and bringing Sitecore Stream to all products. He promised that on June 4th, 2025 he will be making a significant future innovation announcement, so keep an eye on that date.

Key product roadmaps and announcements 

Throughout the conference, we were given key product roadmap announcements.

a) Delivery on the promise, Sitecore Stream set of AI capabilities are available now.

Sitecore Stream in itself is not a product, but a set of AI capabilities that are already being infused across Sitecore products.

  • Available now on DXP 10.2+
  • Available now on XM Cloud
  • Available now for A/B/n testing/personalisation
  • Available now on Content Hub for Contextual AI metadata auto tagging and AI Visual Search

b) Sitecore’s Marketplace & Developer program

We had two separate sessions around Sitecore Marketplace. First session by Liz Nelson (Product Lead of XM Cloud) and Spyros Misichronis (Marketplace Architect, Sitecore) where they showcased the Sitecore XM Cloud Marketplace Apps, which she called an “Extensibility Umbrella” comprising of a Public Portal and Developer Marketplace.

  • Developers can now leverage the CLI, SDK on GitHub to build extensions to integrate with XM Cloud APIs.
  • Developers can embed features into Pages directly or creating standalone tools.
  • Developers can build applications that enhances functionality and streamline workflows

Spyros Misichronis demonstrated a live demo of building a sample Marketplace App leveraging the developer tooling.

The second session was by Krassi Eneva and Justin Vogt (Product Managers from Sitecore) who took a deep dive into more detail and showcased different use cases for Sitecore’s Marketplace and Developer program. Sitecore Marketplace brings the following benefits: faster time to value, flexibility & extensibility and growth & enablement.

  • Contribute to the community or build for your use cases. Sitecore is providing three models for this
    • Custom Single Tenant – Built for a specific organization & available right away
    • Custom Multi Tenant – Build for selected number of organizations & partner managed
    • Public – Available to any Sitecore customer or partner
  • What can you build? This is about what experience can you tailor for your end-users and not what type of apps. Scope is wide and covers creation of the following:
    • apps to the Sitecore portal
    • apps within XM Cloud
    • apps within custom touchpoints such as panels in Page Builder in context of a page, fields editor and panels within sites dashboard
  • Early Access Developer Program – Sitecore’s Marketplace Early Access Program is currently in progress and Sitecore is actively working with the following:
    • Technology Partners
    • Sitecore Partners
    • Internal Sitecore teams
    • Individual community members
  • Is this like an App store we are used to? Similar analogy if you like. You are responsible for testing your own apps, responsible for supporting them in the marketplace. Apps once submitted will undergo review process before approval to Sitecore’s marketplace

This was a major announcement that brings a solution to plug in gaps currently available in XM Cloud as result of moving from Platform DXP. They demonstrated cool apps like copying content between XM Cloud environments, leveraging third party content translations within XM Cloud UI among others. Interesting space to keep an eye on.

c) XM Cloud Content (previously known as “Content Service”)

Alistair Deneys (System Architect, Sitecore) session focused on showcasing the progress made with the Enterprise-grade, innovative headless “CMS” which we now know will be called XM Cloud Content. He set context by giving the brief history and evolution of CMS from the monolith old days, through headless and a look at the future as XM Cloud Content. He also introduced the XMC Content Architecture, diving into domain models covering the following:

  • Content Types define structure
  • Taxonomies define classification
  • Content is stored in Content Items
  • Fragments allow composition. He highlighted the preference for composition over inheritance in the design

He gave a live demonstration of the core set of APIs that underpin XM Cloud Content, walking through various scenarios on how you can build content using API-first.

Some of the key capabilities from XM Cloud Content are:

  • Entity lifecycle – Draft/Published/Archived
  • Worksets – new concept of publishing
  • Content Delivery – GraphQL endpoints includes tenant name. “IsDirectQuery=false” keeps query cleaner. Persisted queries, restrict query tokens to specific persisted queries, schema pinning
  • Fragments with composition over inheritance enables re-usability of set of fields thus a mechanism of delivering “system functionality and extensions”
  • Separate queries for “Pages” content, say, articles, news, etc
  • Query Token security enhancements such as disabling of Introspection
  • Content management capabilities: environment merging, availability & archive dates on content items, more field types, content collections among others
  • Sitecore Change Logs are running from XM Cloud Content

Developers will be excited with XM Cloud Content, although what was demonstrated is still in early development. Watch this space and future announcements.

d) Modernizing the JSS SDK and Starter Kits for XM Cloud

Liz Nelson (Product Lead of XM Cloud) and Christian Hahn (Technical Product Manager) unveiled groundbreaking updates to the JSS SDK and starter kits, designed to simplify workflows, eliminate legacy complexity, and enhance flexibility.

Welcome the “new” one. In summary, in the new solution

  • Split responsibilities
  • Only get what you really need
  • Reduce complexities and sizes

Some of key improvements shared in the session

  • disk size of the starter kit site folder reduced from 8MB down to 600KB
  • almost halving the bundle size
  • overall improvements in First Contentful Paint FCP metric of 200 milliseconds
  • editorial performance gains, with about 10x as many UI components can be added to an editable page

The SDK and documentation are available now, and currently in “Beta” but confident developers can start building new projects. Watch this space for announcements on the final releases which will be soon.

e) June 4th, 2025 – Future Innovation Announcement

Look out for an announcement from Danny Robinson(CTO, Sitecore) in June 4th

f) November 3-5, 2025 – Sitecore Symposium Orlando 2025

Sitecore Symposium 2025 is back and will be held at Walt Disney World Dolphin Resort, Orlando, the week of November 3, 2025. Ready to start your submission and step into the spotlight at Sitecore Symposium 2025 in Orlando, they are currently calling for speakers.

Key highlight sessions

With a total of about forty (40) sessions, it is impossible to attend them all. Below are some of my key highlight sessions that I attended. I will complete the list in a follow up blog post.

Session: XM/XP to XM Cloud Best Practices – Free Workshop

Summary: This was an early bird free workshop sponsored by Brimit which covered the best practices, decisions and considerations when migrating to XM Cloud. If you thinking of making the move, this session amplified what a migration path could look like. Sitecore provides XM/XP Migration Navigator as well and you can reach out directly to them.

Session: Optimizing your Content Hub development – Free Workshop

Summary: Another early bird free workshop sponsored by Brimit highlighting the productivity gains by leveraging Content Hub CLI in your workloads. A live CLI demo for developers and key takeaways in terms of best practices and optimising Content Hub DevOps journey.

Conclusion and Next steps

I observed a positive sentiment overall during the conference. There was positive energy and buzz throughout, and this was echoed in various social media posts as well. I look forward to reading and reviewing more feedback from other attendees. SUGCON Europe is a key event in our calendar and there is already talk about next year! We are also looking forward to SUGCON ANZ later in the year and Sitecore Symposium back again in Orlando during November 2025, with call for speakers now open.

You can continue with part 2 where I am covering more key highlight sessions.

Please give us any feedback or comments.

How to plug your Content Hub data into your Observability platform and gain insights

Context

If you are already leveraging enterprise observability in your enterprise, this blog post is about how you can plug your Content Hub data to gain actionable insights. If you are not, then this blog post can help you start your journey towards embracing enterprise observability, plug your Content Hub data to gain insights.

In today’s complex IT landscape, enterprise observability goes beyond traditional monitoring by aggregating data from diverse sources to provide deep, actionable insights. Your Sitecore Content Hub platform is an upstream data source that you can plug in. You can push your Content Hub data such Assets, Projects, raw events and reporting logs—turning raw data into meaningful, proactive decision-making insights about your content supply chain. You can understand, for example, how your assets are being utilized, download footprints among more actionable insights.

Reference Architecture

I have shared a reference architecture at the top of this blog, which you can adopt for your use cases. Broadly you will need the following architectural components so you can push data from Content Hub into your observability platform and its visualization.

1. ETL Tooling

You will need tooling that will connect to your Content Hub instance to extract the data. Typically this tooling will provide capabilities to allow you to also transform and load the data to your target data lake. This process is known as Extract-Transform-and-Load(ETL).

Tooling such as Cribl and others are perfect for this. These tools and techniques perform an ETL (extraction, transformation, and loading) type functions on the raw data and shape it into a format suitable for analysis.

I will recommend working with Data Engineers with specialist skills in ETL to help with this process.

2. Data lake tooling

A data lake is commonly referred to as a data warehouse architecture, provides the capability to read and write data in a cloud object storage. This is the central repository where data from your various sources gets aggregated at scale.

Data will be extracted from Content Hub, transformed and loaded into a Snowflake database for example. This is where it all comes together. The data lake tooling will allow you to create a logical data model to help with analysis of your data. I will recommend working with Data Engineers with specialist skills in ETL and Data lake to help with this process.

3. Reporting UX tooling

You will need to turn your data into visuals. This architecture component is a user-friendly report-creation tool such as Microsoft Power BI

How to extract data from Content Hub

Content Hub provides a REST API for querying data held within your instance. All objects in Sitecore Content Hub are modeled as resources that represent the state of objects at the time of a request. Standard HTTP requests and responses are used to query and manipulate object states and standard HTTP headers are used to augment the request and response

All data is sent and received as JSON.

Authenticating and securing REST APIs

Access to the REST API is restricted to authenticated users. You can authenticate requests using these three options:

Tips and tricks: Query vs Scroll REST APIs

Querying API provides the most flexibility in terms of filtering data for specific entities using specific indexed metadata fields. This is a GET request type, and you access is such as shown below

GET http://<HOSTNAME>/api/entities/query/

For example, you can query all M.Asset entities by using the Definition.Name property as shown below

GET http://<hostname>/api/entities/query?query=Definition.Name=='M.Asset'

Due to deep paging restrictions, you can only retrieve up to 10,000 results. Any attempt to get more results results in an error message “Unable to execute search query. Status code:400” as shown below

Scroll API can be used to retrieve a large number of results (without the limitation seen in Querying API). Scroll only supports the GET method. The only difference with the Querying API is the paging arguments. This is also a GET request type, as shown below

GET http://<HOSTNAME>/api/entities/scroll/

This is the API I will recommend to be leveraged in scenarios when extracting all results from a single query from Content Hub into your Observability platform.

If you have concerns around data volumes and performance concerns for your Content Hub instance, reach out to your Sitecore Customer Technical Support for further guidance

Next steps

In this blog post, I have at a reference architecture that you can adopt to plug your Content Hub data into your Observability platform. I explained the various components of the architecture including some of the tooling you can leverage for your ETL and data warehousing and visualizations. I finished with strategies you can leverage to extract Content Hub data leveraging the Querying and Scroll APIs.

I hope my approach helps you address similar scenarios in your use-cases. Please let me know if you have any comments above and would like me to provide further or additional details.

Content Hub DevOps: Resolving unable to delete entity because it’s being used in one or more policies errors

Context and background

Content Hub permissions and security model is underpinned by the user group policies model, whereby Content Hub users can perform actions based on their access rights. The official docs provides clear definition of the anatomy and architecture of the user group policies. For example, a user group policy consists of one or more rules, with each rule determining the conditions under which group members have permissions to do something.

While all the technical details of group policies are nicely abstracted away from our business users, there are use cases when you will need to in fact grapple with technical details of the policies. Such as when you can’t delete your taxonomies or entities, simply because you have used them in one or more rules in your policies.

In this blog post, I will outline this pain point and recommend a solution.

Unable to delete entity ‘…’ because it’s being used

Yes that is right. If you have used a taxonomy value or some other entity as part of your user group policy definition – then it makes sense you can not delete it. That is expected logic, we have a clear dependency within the system. In which case, we need to break or remove this dependency first.

Below is a sample screenshot of this error message. In this example, the highlighted taxonomy value can not be deleted yet, until the dependency has been removed.

User group policy serialization as JSON

If you haven’t set up DevOps as part of your Content Hub development workflow, then we need to cover some basics around user group policies serialization. You can leverage Content Hub Import/Export feature to export all polices into a ZIP package, as detailed below:

  1. Using the Manage page, navigate to Import/Export.
  2. On the Import/Export page, in the Export section, select only the Policies check box and click Export. This will generate a ZIP package with all policies.
  3. Click View downloads at the right bottom of the screen.
  4. On the Downloads page, click the Download Order icon when the status of the package is ready for download. This will download the ZIP package with all policies.
  5. Unzip the downloaded package. This will have JSON files of all policies

A look at M.Builtin.Readers.json for example

Below is a snippet from the M.Builtin.Readers.json, which a serialized version of the M.Builtin.Readers user group (one of the out-of-the-box user groups)

Remember a group policy consists of one or more rules, with each rule having one or more conditions under which group members have permissions to do something.

I have highlighted one of the conditions within the first rule in this user group policy. This condition shows the dependency on one of the taxonomies, M.Final.LifeCycle.Status

On line 20, the reference (“href”) indicates which taxonomy child value is being used, which is M.Final.LifeCycle.Status.Approved

The full content of this file are available from my GitHub Gist for your reference.

How to safely delete or remove taxonomy references from user group policy JSON file

The serialized user group policy JSON file is a plain text file. So any a text editor of choice can be used to edit this file, and delete all references to the taxonomy with a dependency. And then save the changes in updated JSON file. That is it.

Due care has to be taken to ensure that the rest of the JSON file is not modified.

Once all references are deleted and verified, you can create a new ZIP package with the changed files, to be imported back into Content Hub.

It is recommended your certified Content Hub developers should make these changes (and validate them, say, using a text file comparison tool such as Beyond Compare). For example, you need to compare the original ZIP package with the newly created one to make sure that their structure is the same.

Finally, the newly created ZIP package can be imported using the Import/Export functionality as detailed in official docs.

DevOps: Automating removing taxonomy or entities references from user group policies

I have previously blogged about enabling DevOps as part of your Content Hub development workflow.

The current pain point becomes a bread-and-butter problem to solve assuming you already embraced Content Hub DevOps.

With some business logic implemented as part of your CI/CD pipelines, all references to taxonomy values or entities can be safely and reliably deleted from user group polices. This can be done with automation scripts and other tooling that comes with DevOps, truly bringing you ROI in your DevOps infrastructure.

Sample/suggested CI/CD pseudo code

  1. Define a CI/CD “user group policies clean-up” step to be invoked whenever we are deleting “entities” from your Content Hub instance.
  2. Using a Regex, scan and systematically delete such entities from your user group policies JSON files (depending on how you’ve setup your DevOps, all policies should be serialized to policies folder)
  3. Ensure your “user group policies clean-up” step runs ahead of any deletion of the entities (or taxonomy values). Remember you can’t delete an entity if it is being referenced in your user group policy.
  4. Work with your DevOps engineers to validate the steps and test any changes in non-production environment(s), before applying to production environment.

Remember to also look at my related blog post on DevOps automation for your Action Scripts.

Next steps

In this blog post, I have discussed a common pain point when you are Unable to delete entity because it’s being used in one or more policies. I explained why this is the case, and looked into technical details of user group policy architecture. I provided a solution, which can be automated with a robust DevOps culture adoption for Content Hub.

I hope my approach helps you address similar scenarios in your use-cases. Please let me know if you have any comments above and would like me to provide further or additional details.

My Sitecore contributions in 2024

It is that time of the year once again, and the Sitecore MVP 2025 applications are open.

Below is a summary of my contributions for 2024:

Content contributions

This year I mostly created content within Content Hub, Sitecore Experience Edge and Sitecore Personalize space. This is where I felt there were gaps based on industrial client work I have done this year. I believe I have produced content that meets expectations in terms of quality, quantity, and visibility and more importantly, adds value to our community. This has been through blog posts, code sharing via GitHub, YouTube content, Product Feedback via Gartner Peer Reviews among other social channels:

Gartner Peer Reviews:

Sitecore Hackathon 2024:

Code and architectural artifacts:

In person events

I’m a regular attendee and an active member of Sitecore User Group London. Include a chance to attend the in person event post Symposium hosted by Sitecore in their London Paddington office.

Engagement

I have continued online and offline conversations and driven Sitecore community engagement throughout 2024 in order to amplify the content I have created.

Next steps

For 2025, I look forward keeping up producing more valuable content in terms of quality, quantity, and visibility to our Sitecore community. I will be putting myself forward for public speaking events throughout the calendar year. I intent to continue identifying any gaps and filling them, providing product feedback, improvements, and references

Stay tuned and best of luck with those submitting the Sitecore MVP 2025 applications.

Content Hub tips & tricks: Extending MRM project permissions to improve your ways of working

Background and context

Content Hub’s Marketing Resource Management (MRM) module provides a robust project management tool within the context of creation and development digital assets as part of the wider DAM solution. For example, you can capture project summaries and briefs, model your assets creative development process using stages, tasks or even jobs. Basically, you can use this tool to map to your ways of working, sharing responsibilities as you will do in a typical project. Only that MRM provides three default roles of Managers, Contributors and Readers which does what they say on the tin. But does this meet your needs?

In this blog post, I will share tips and tricks on how you can go a step further and enhance the default project roles so that you can have a more fine-grained control of permissions to meet the needs of your team members in your projects.

What you get with default Managers, Contributors and Readers project roles

In brief, project roles work like user groups. In a similar way that user group membership determines what you can access and the actions you can take so do project roles. The role you are assigned determines what you can access and the actions you can take for specific project.

  • Managers have overall visibility of the project, can create projects, edit project information, and manage all defined stages, tasks or jobs within the project
  • Contributors can make contributions to the project, such as add assets and fragments to projects.
  • Readers have read only access to assets and fragments in the project

Clearly these three broad definitions above will not always map exactly to your business use cases. For example, you may need your Readers to do more, such as download or preview some assets.

Stay tuned for details on how to get a detailed view of granular permissions available for each of these roles and tips you can use to enhance or extend them.

Can I modify or extend the default permissions for the project roles?

The good news is that these default project roles are not system-owned. These are simply role templates that you can extend yourself so that the permissions closely meet your business needs.

Below is a sample comparison of the default Readers (left-hand-side) and Contributors (right-hand-side)

For example, a Contributor role allows all permissions to M.Asset within Readers role plus the following additional permissions:

  • Create
  • AddVersion
  • DownloadOriginal
  • DownloadPreview 
  • Order
  • CreateAnnotations, among others

Likewise, there are different permissions for M.File for both roles, as shown above.

For the detailed list of all the available permissions and what they mean please visit the official documentation page.

Tip 1: Getting full list of all role templates

You can access the full list of all role templates in your Content Hub instance by accessing the URL below (assuming you have super user access). BASE_URL is your Content Hub instance base URL.

BASE_URL/en-us/admin/entitymgmt/entity/1471

also

BASE_URL/en-us//admin/entitymgmt/entities/50

And below is a sample list:

And below is the Details page for the Contributor role template, which you get by clicking on View detail link above.

Tip 2: Viewing and editing role template using entity management page

Warning: You have to take caution when making changes to the role templates. Ensure you are only making changes after consulting with business owners and assessed and agreed on required permission changes to be made.

  1. Follow Tip 1 above to find and select a role template, say Contributor
  2. Click on the Pencil or edit button shown below
  3. This will open the edit page, shown below
  4. You can copy the text and keep note of it before making any changes. You can repeat this step for all the default project role templates, so you can compare what is different between them, to further help you assess what you need to fine tune for your use cases.
  5. Make the required updates, ensure you are using the valid list of permission shared above
  6. Click Save to apply your changes
  7. Repeat step for all your role templates that need the updates.

Tip 3: Exporting role templates into Excel

Role templates are entities in your Content Hub instance, as such you can export them into Excel.

A typical use case is to export any changes made in a lower environment (say DEV) and apply them into another environment (say QA), by leveraging Excel import into target environment.

  1. You need to create a new subpage to used for the export purposes. From Manage -> Pages. Then identify which section you will be creating the new page. Then select “Add subpage” option. Refer to detailed steps available on the docs for further guidance.
  2. On your newly created subpage, add a Search component and a Selection component as shown below
  3. Configure the Search component so we can search and display Role templates. You can use the Filters tab as shown below, and choose the M.RoleTemplate definition. You can refer to detailed steps available on the docs for further guidance.
  4. Ensure your Selection component is linked with the Search component.
  5. Then Enable export to Excel option on the Selection component as shown below
  6. This is it, your subpage is ready.
  7. On you subpage, select all the role templates that you need to export, and select Export to excel

Next steps

In this blog post, we have looked at Content Hub’s Marketing Resource Management (MRM) module. We looked at the default project roles of Managers, Contributors and Readers and what they offer. I shared some tips and tricks on how you can extend the permissions for these roles to closely meet the needs of your project management use cases. I hope you find this useful for your similar use cases.

Stay tuned and please give us any feedback or comments.

Content Hub tips & tricks: How to securely share your DAM assets with external users by leveraging collections – part 2

Background

On the previous post, I looked at how to securely share your DAM assets externally by leveraging collections. Among other things, we covered four options you can use to secure the asset collections. One of the options involved defining a permissions policies on M.Asset (model for your assets) based on M.Collection (model for your asset collections). However, this option seems to come with some nuances and will not work by default. I will carry on the conversation to demonstrate how to make this option to work.

Why doesn’t the policy definition work?

In simple terms, the above policy states that we would like to allow all assets belonging to our collection named “External” to be downloadable. Simple. But it doesn’t work.

But why?

This is because the “Inherits security” setting for the CollectionToAsset relation is turned off by default. In other words, this means security related metadata (from the parents towards the children) can not be inherited while this setting is turned off.

M.Asset is a child of M.Collection (as shown below in the schema details for M.Asset definition). To access M.Asset schema page, click on Manage -> Schema -> then search for M.Asset

How do I turn on “Inherits security” for the CollectionToAsset relation?

Short answer is you can’t modify this by yourself. You will need support from Sitecore Technical Support to make this change for you. Please note CollectionToAsset is a system relation and is locked down to Super users as well.

You can raise Sitecore Support Cases using the Support portal and request the team to enable the “Inherits security” on CollectionToAsset on your environments. This should be actioned swiftly after which your policy definitions can start to work as expected.

Next steps

In this blog post, we have looked at how to make user group permissions policies on M.Asset based on M.Collection work. We looked at nuances that make this not to work by default and how to resolve and get it working. I hope you find this useful for your similar use cases.

Stay tuned and please give us any feedback or comments.

Content Hub tips & tricks: How to securely share your DAM assets with external users by leveraging collections – part 1

Background

One of the great values you get with your investments in Sitecore Content Hub platform is the collaboration capabilities with your external partners and users in your content supply chains. Siecore Content Hub provides out-of-the box the Asset Collections capability, which enables you to group your assets. Which seamlessly allows collaboration on that asset collection through comments, for example.

However, there is a catch.

When you create an asset collection and want a fine grained control on whether these assets should be downloadable, this doesn’t always seem to work as expected.

For example, you have a collection named “External” with only “Asset test 1” and “Asset test 2” included. And you need these two assets to be downloadable. However, when this collection is shared, there are scenarios when other additional assets will seem to appear within External collection, instead of just “Asset test 1” and “Asset test 2” as expected.

In this blog post, I will be sharing some top tips and tricks on how you can be in control of this process, ensuring you only share assets that need to be shared, securely.

How do I create an asset collection

The existing official docs provide step-by-step guidance on how to create asset collections. I will repeat the main steps below, for the sake of to keeping the flow in this blog post.

To create an asset collection:

  1. On the menu bar, click Collections.
  2. In the top-right corner of the Collections page, click + Collection.
  3. In the Collection dialog, populate the details of the collection you are creating
  4. Click Save.

How do I add assets to my asset collection

Again, the existing official docs provide robust step-by-step guide on how to add asset to a collection. Please note that it is best practice to add existing assets to your collection – which are at the correct stage of your content lifecycle. Avoid uploading new assets directly at this stage.

How do I share my asset collection

You can share the collection by following the following three main steps:

  1. On the collection details page, click Share link share link icon.
  2. In the Share link dialog, turn on the Create external link switch. This will then generate for you a link
  3. To share the link via email, use the Click Email email icon button, which should prompt for emailing details. You can alternatively use the Copy link button to copy the URL and share it as well

Tips and tricks on securing you asset collections

Now that we have covered the basics on how to create an asset collection and share it, I will focus on top tips and tricks of ensuring we are sharing the collection using best practices and for the correct external collaborators.

Top tip 1 – Leverage user groups to manage external collaborators

User groups underpins the permissions model within Content Hub. Members of a user group are granted permissions and privileges according to the user group policies assigned to that group. By managing permissions and privileges using groups, you can streamline how they are assigned.

  • Read-only external collaborators – Define a separate user group for your external collaborators who need a read-only access. These are not expected to make any contributions, but may be to give them a status update of your assets.
  • Contributor external collaborators – Define a separate user group for your external collaborators who you would like to give you comments and feedback on shared assets.
  • Download external collaborators – Define a separate user group for your external collaborators who you would like download your shared assets. The use case is when you would like them them to use download the shared assets for allowed activities such are offline brands channels.
  • Add external collaborators to a user group – Always add external collaborators as users in your Content Hub instance, then assign them one of the above user groupings. Sitecore Content Hub allows users belonging to an external domains to be added using Users Manager (and they can sign in with their username and passwords) Depending on your security policies and governance, it is possible to also leverage Single sign on with External domains. If you need guidance, reach out to your Security and Identity team or Sitecore Technical support.

Top tip 2 – Leverage user group policies to lock down UX and pages

You need to make a decision which pages your external collaborators can view. For example, should they access your Asset details page, which will potentially give them access to additional meta data?

If you have followed Top tip 1 above, all you need to do is define user group policies for each relevant user groups.

Below is an example of how you can give access to allow viewing Asset details page(s) such as Asset details or Video asset details page as shown below.

Top tip 3 – Additional policies – downloadable assets based on a taxonomy value

You recall the scenario I described at the start of the blog. You have a collection named “External” with only “Asset test 1” and “Asset test 2” included. How will you go about ensuring only these two assets are downloadable?

  1. Define taxonomy, use this to tag and identify external assets:
    • This option requires you to define some form of Taxonomy, say, ExternalAsset which entities Yes or No. For all externally shareable assets, you will need to tag them with value of Yes. You can then leverage this Taxonomy within your User Group policies definitions to narrow down which assets can be downloadable. As an example, this policy below shows how I can narrow which asset is downloadable based on M.AssetType value of Video
  2. This clearly works. However, with this option you will need to ensure all assets are tagged accordingly before sharing them externally. This could add more work to your content workflows.

Top tip 4 – Additional policies – downloadable assets based on current asset collection

You could be asking, why can’t I apply the additional policy for downloadable assets based on the current asset collection? Good question.

If you try this approach, your User group policy will look like this instead.

This is perfectly fine. You could have thought this will work, right?

This option does not work. It seems you can not define a policy on M.Asset (model for your assets) based on M.Collection (model for your asset collections) by default.

While grappling with this issue, I reached out to Sitecore Technical support for guidance. Good news is we have a technical solution for this specific problem. Stay tuned on my next blog post when I will cover how you can make a group policy definition policy on M.Asset based on M.Collection such as in the screenshot above work.

Next steps

In this blog post, we have looked at Content Hub asset collections a great feature for collaboration capabilities with your external users during your digital assets lifecycle. We have looked at some of the top tips you can leverage to secure your collections when sharing them with your external collaborators. I hope you find this useful for your similar use cases.

On the follow up blog post, I will look into details how to resolve the specific problem identified above. Please give us any feedback or comments.

Content Hub DevOps: Managing your action script code lifecycle in CI/CD pipelines

Context and background

When working with automated CI/CD pipelines with you Sitecore Content Hub, you need to be aware of the development lifecycle for your Action Scripts. This is to ensure your source code repo for your scripts doesn’t get ‘bloated with orphaned‘ script code files. In this blog post, I will cover how to manage the development lifecycle of your Action Scripts to mitigate against this problem.

What happens when you serialize action scripts into source control

I have previously blogged on Content Hub DevOps, especially on leveraging Content Hub CLI to extract a baseline of your Content Hub components. For example ch-cli system export --type Scripts --wait --order-id command allows you to export Actions, Scripts and Triggers package. When you unzip or extract the files within this package, you will notice there is a scripts folder. This will have two types of files: .json files and .csx files (assuming your actions scripts are written in C#.NET)

Script .json file type

For each action script packaged from your Sitecore Content Hub instance, it will have two files. One of them is the script .json file.
Below is a sample action script json file:

This file contains all the relevant meta-data about the action script. In particular, you will notice that it is referencing a second file using the ScriptToActiveScriptContent relations property. Using our sample above, this json file is referencing this code file “ZOGG4GbbQpyGlTYM7r1GfA

Script .csx code file

The code file based on C#.NET, is similar to the sample shown below.

What happens when you modify the code in your scripts

Each time you make changes to your Action Script source code and successfully build it, Content Hub will generate a new code file version behind the scenes. This will be automatically linked to its corresponding script .json file.

To visualise this, you will notice that when you serialise your Action Script again from your Content Hub instance, a new code file will be generated.

If you now compare the previous code file with the new one, it will become obvious which changes Content Hub has made to the .json file. Below is a sample comparison.

What should you do with the ‘old’ code file

We have now established what is going on whenever the source code in your action script is changed and successfully rebuilt. Each time, a new file will be generated. The old file will remain in your source code repository, unused and effectively ‘orphaned’.

My recommendation is to design your DevOps process that will always clean-up or delete all files from your scripts folder in your source code, before pulling the latest serialised files from your Content Hub instance.

You can do this in an automated way leveraging the Content Hub CLI commands. Alternatively, you can do it old school way leveraging PowerShell commands to delete all files from scripts folder before serializing new ones again. Whichever mechanism you leverage, ensure old and used code files do not bloat your source code repo.

Next steps

In this blog post, I have discussed what happens when you make code changes to your action scripts. I explained why you will have ‘old’ or ‘orphaned’ code files within your script folder that will bloat your source code repo. I also covered steps you can take to mitigate this problem.

I hope my approach helps you address similar scenarios in your use-cases. Please let me know if you have any comments above and would like me to provide further or additional details.

Content Hub tips & tricks: Overriding Created by or Modify by ‘ScriptUser’ in your scripts

Background

If you currently leveraging Action scripts as part of your Content Hub solution, you probably noticed that any updates done to your entities are tagged as Created by or Modified by ‘Scriptuser’. You may as well not be aware that actually this is how the Content Hub platform works by design. At present, all scripts operate under the Scriptuser account

But how do I override the ‘Scriptuser’ account?

Frustratingly, there isn’t much documentation around this ‘Scriptuser’ on the official docs. You are not alone in this. That is why I have put together this blog post to help provide a solution to this problem.

It is not all doom and gloom. In fact, if you look around in Sitecore docs, the IMClient provides a capability to impersonate a user, using the the ImpersonateAsync method.

Below is a definition from Sitecore docs:

ImpersonateAsync(string)

Creates a new IMClient that acts on behalf of the user with the specified username. The current logger will be copied to the new client.

So we will need a function to get an impersonated MClient

Looks like we have a solution then. All we need to do now is define function within our Action Script, that will create an instance of an impersonated MClient. This impersonated client will in effect allow us to override the Scriptuser with the current user triggering our Action Script. Which is the solution to our current problem.

Good news, I have already defined such a function for you. I have named this function GetImpersonatedClientAsync, a shown below.

You should be familiar on how to load an entity property, by leveraging the PropertyLoadOption in your EntityLoadConfiguration, as shown above. That is how I am able to retrieve the Username property from the current user entity (currently authenticated user within Content Hub). This will be the user that has triggered our Action Script.

It is need as a parameter when calling the MClient.ImpersonateAsync as shown on line 35 above.

I have left the details of how triggering of an Action script happens, since I have covered this topic in my previous blog posts, such as this one.

However, I would like to call out that the UserId of the authenticated user is always available within the Action Script via accessing the Context object. Below is a snippet of how I have done this on line 10.

Saving changes with Impersonated MClient

We now need to use the impersonated MClient in all instances where we are saving changes in our Action Script. Below is a code snippet on how to achieve this. You can see on line 15, I am using the impersonated userClient. You can easily compare this with line 20, which is a fallback option that uses default MClient.

You can view the full source code of the above script from my public GitHub Gist.

Next steps

In this blog post, we have looked at a how to override the Scriptuser within an action script. I have walked you through a sample action script and also shared sample source code for your reference. I hope you find this useful for your similar use cases.

Stay tuned and leave please us any feedback or comments.