Upgrading to SDL Web 8.5 can break your DD4T JMS decaching

Below a story about non-working decaching after upgrading to SDL Web 8.5 CMS.

Project setup

The project I work on has this environment configuration:

  • SDL Web 8 CMS (with update SP1 and Cache Channel Service)
  • DD4T 2.1 based .NET web application
  • ApacheMQ as JMS solution
  • We use DD4T.Caching.ApacheMQ NuGet package
  • Hosted in Azure cloud

Given this setup, everything is configured to flush the Application cache when a Content Manager publishes a Page, Dynamic Component Presentation or Taxonomy from the CMS. This works really well and we achieve the two most important goals: High-performance websites + No outdated content.

Upgrade to Web 8.5 problem

But then we decided to upgrade to SDL Web 8.5 (with a new server). The upgrade process itself is not as painful as it was in the past, but we had an issue: de-caching mechanism did not work anymore. We did the most obvious checks:

  • Check config settings of microservices
  • Firewall settings (ports open?)
  • MQ dashboard (publishers, subscribers, and messages)
  • Check log files for exceptions
  • Review the Topology Management config (java -jar .\discovery-registration.jar read)

Mysteriously, everything was fine. After some WebApp debugging sessions I found the issue. The JMS messages were changed and the TCM URI is now prefixed with '1:'. Maybe SDL decided to include the CacheEventTypeId? Examples:

  • SDL Web 8 sends 17:3565 for pages.
  • SDL Web 8.5 sends 1:17:3565 for pages.
  • SDL Web 8 sends 17:52916:154 for DCPs.
  • SDL Web 8.5 sends 1:17:52916:154 for DCPs

RCA and solving the issue

This causes a lookup issue when looking for depending cache items to flush within the TridionBackedCacheAgent. The agent stores pages in cache with 17:3565 and CCS tries to flush the cache with 1:17:3565. Since we have a custom implementation of the CacheAgent (for either reasons) we could fix it easily by using this code fragment in the CacheAgent:

private Regex RemoveFirstElemWhenWeb85 = new Regex("^(1:)(.*)");

private string GetDependencyCacheKey(string tcmUri)
            return "Dependencies:" + this.RemoveFirstElemWhenWeb85.Replace(tcmUri, "$2");

This code backward compatible with older version of Web/Tridion as long as you do not have a publication with the ID of 1 :-)


SDL Connect 2017 - Tridion Sites and Tridion Docs

The SDL Connect 2017 conference was held in San Jose, California. Connect is a yearly user and partner conference where language and CMS technology provider SDL announced their strategy and roadmap for the coming year(s). Below some notes from the sessions that I attended.
SDL Tridion DX
One of the most visible changes is bringing back the Tridion brand. At SDL Connect they announced the new SDL Tridion DX digital experience product. The product is actually a suite that combines web content management (SDL Tridion Sites) and DITA-based structured content management (SDL Tridion Docs).
Tridion DX contains a unified experience layer with the support of Tridion Open Content API targeted to any digital touchpoints: mobile, desktop, watches, bots, in-store displays, etc. With these APIs, it is possible to create content mash-ups blending marketing content, commerce content and product information. All this information can be personalized by leveraging AI and Machine Learning capabilities.
Tridion DX will be launched mid-2018 and will replace their 2 current content products SDL Web and SDL Knowledge Center. Until that date there can still be some confusion, since marketing will only use Tridion DX, but the underlying product names stay a bit longer: SDL Web 8.5 and SDL Knowledge Center 13.
SDL Knowledge Center and Tridion Docs
Tridion Docs will be the new name of SDL Knowledge Center (KC) by mid-2018. Until then the product will still be named KC version 13. Knowledge center is a product which enables companies to manage technical content (i.e. manuals) in a structured way. The product supports the industry standard Darwin Information Typing Architecture (DITA), which is an XML based structure to create, produce and publish information. Publishing targets are typically documentation portals, download centers, and support sites.
The end of October 2017 release of KC 13 has some major improvements:
  • Support for new delivery stack (DXA) shared with SDL Web with better touch points experiences
  • Upgrading is simplified by Powershell script support, automation, and centralized configuration
  • Enhanced translation workflow
  • Enhanced productivity by UI improvements
By using DXA in the delivery stack also new benefits are introduced:
  • Improved site navigation options (more flexible, can be based on taxonomy)
  • Multilanguage support for the UI
  • Personalization and filtering support
  • Search is now powered by Elastic Search
SDL Tridion Sites 9
Tridion Sites is the content management system that is formerly known as SDL Web 9. It is mostly used for managing multi-language/branded content for marketing and commerce sites. By combining both Sites and Docs in Tridion DX the content silo boundaries are removed and content managers have a more unified experience when working with content. For the customers of the content, this change will also be noticeable since the pre-sales marketing content is more aligned with the post-sales product content.
Experience regions can be used to partition a page. The regions are user-defined and customizable per page template. A region can be used to position components in a certain area of a page. Regions can also be restricted to be only used for e-commerce integrations.
Other announced features include:
  • Image editing support (basic manipulations like cropping, rotating and scaling). The manipulation is stored in the metadata and source image is untouched.
  • Tridion Open Content API for creating content mashups.
  • Integration Marketecture - integration with external CRM/Marketing/E-commerce systems via Accelerators and Connectors
  • Improved cloud support
  • Prescriptive Personalization (old SmartTarget/Fredhopper product) based on:
    • Web attributes (i.e. IP based geolocation, company, time of day or referrer source)
    • Database attributes (i.e. CRM or marketing databases)
    • Behaviour-driven (user actions on touchpoints)
  • Adaptive Personalization by using real-time AI and Machine Learning technology. See picture below.
West Coast meetup - preview of new CME UX design
During the West Coast community meetup, SDL showed that they are very busy working on a new UX design for their Content Management Explorer. The first UX drafts are very promising and radically changing the way we work with the CME. Also, they emphasized the goal of open API based platform with connectors for extensibility. The downside is that we need to wait until Tridion DX 10 is announced to see what they can deliver since it's quite a big step.

Code Generation 4 Tridion - VS 2017 update

There is a new version released of the CG4T extension for Visual Studio. I found some compatibility issues with the latest version of VS 2017 and VS 2017 Community Edition. During installation, you could get the message that pre-requisites were not found and installation could not continue.

This is now fixed, so if you had this issue, please try again. This issue was also in my other extension: Image Tools for image manipulations within VS.

You can found both extensions in the VS Marketplace.

Top 5 free Android Apps for Raspberry Pi

Below some great Android apps that you can use for working with your Raspberry Pi. All 5 Andriod apps are free to use and should work with the Raspbian operating system

1. RaspManager

This app enables you to view what is happing on your Pi. Overview of memory, CPU and network usage and start/stop services. You can take pictures when you have a camera module connected. The most interesting feature is to send / receive files from / to your phone / Pi.


2. RaspiCam Remote

This app automatically scans your network for Pi so that you can connect and control your camera module. Take a picture or start recording a video with your phone. Also you can download and view the result in the App.


3. Cayenne

This app automatically scans your network for Pi so that you can connect to it. Once Pi installation is completed you get a complete;y customizable dashboard with all the (GPOI) sensors available. This app is ideal to control your Pi with your phone.


4. Kodi Remote (Kore)

Many people use their Pi in their living room in combination with KODI (OpenElec). Want to start a video from your couch, this is the app to do it.


5. VNC Viewer

Last but not least: VNC Viewer app. This VNC client can be used to connect to Pi desktop. Can be a bit tricky to control with touch on smaller phones...