RAZL connections using Environment variables

RAZL is a really handy addition to a Sitecore developers toolbox. It allows for content comparison and sync between environments. Great for pre-production environments where you need to “refresh” some content or get a brand new environment up to date with the latest stuff your content producers have been working on. Razl v5+ also offers powershell scripting, so you can easily sync the same items across many environments ….it’s handy. But it can be challenging to deploy in a repeatable way when not using containers, due to it’s installation method and security model.

Read More »

Core Web Vitals – Measuring UX – Slides

There has been a lot of discussion lately about Core Web Vitals CWV, Measuring User Experience and how this relates to SEO and website performance. At a recent Perth Sitecore User Group I dug into what CWV are, what they are trying to achieve….and busted a few myths along the way. I explored some of the tools to help measure and improve your CWV, how to better interpret them (100 Lighthouse score is not the be all and end all!) and what that REALLY means to your SEO with Googles more recent changes.

Read More »

Get to know an MVP podcast

Recently I joined Nicole Montero on the Core sampler podcast in an episode of “Get to know an MVP” to talk about getting involved in the community and being a Sitecore MVP. Unfortunately I was quite sick at the time, but it was a fun to share my experiences and something that forced me to reflect on not only my achievements but the achievements of the community as a whole. Well worth checking out many of the great episodes, which are all listed here on the Sitecore MVP website.

You can listen to my episode below.

Read More »

Multisite cookie handling

The problem

Recently I had a requirement for the following scenario, which at first seemed straight forward, but ended up needing a little more work than expected!

On an existing mulitsite XP SXA/JSS install I needed:

  • 2 sites to share an analytics cookie for cross site tracking of contacts
    • EG. Sites with the following hostnames abc.site.com and def.site.com should share the same SC_ANALYTICS_GLOBAL_COOKIE cookie by setting the cookie domain to .site.com .
  • Other sites to just use their default hostname for the analytics cookie.
    • EG. my.example.com

In simpler scenarios there is the option to just change the Analytics.CookieDomain setting in config to the appropriate domain, however, this applies instance-wide and there is no OOTB provision to do this on a site by site basis. Using this method I couldn’t ensure cookies would be set on the correct domain for .site.com and my.example.com

Read More »

Headless (r)evolution in Sitecore – Slides

Just before the Turkey and Christmas induced coma at the end of last year, I presented to the Perth Sitecore User Group on the evolution and future of Headless architectures in the Sitecore ecosystem. We explored some of the history, a glance at current offerings in Sitecore 10 and a glimpse into what the future might look like with Static Site Generation (SSG) and Experience Edge.

Read More »

JSS Node Proxy and CSPs

Lately I’ve been digging into JSS delivery topologies and in particular SSR proxy options. As a starting point, I’ve been using the sample node headless proxy from the Sitecore JSS Github repo. In my dev scenario I was hitting a local Standalone Sitecore instance in Docker, and immediately noticed the images being referenced from Sitecore were getting blocked by the Content Security Policy (CSP). This is due to the CSP being set on all requests to the CM via a web.config setting, and then it being repeated back to the browser via the node proxy.

Read More »

JSS headless SSR proxy “unable to verify the first certificate”

When developing a new JSS solution I was looking to have a play locally in headless mode. Unfortunately I hit an issue after standing up a newly minted Sitecore 10 SXA/JSS instance in docker and using it as the apiHost running the node-headless-ssr-proxy sample app locally. After setting up the appropriate values for the proxy and ensuring the react app was in place, I was getting the following error for all SSR layout service requests.

[HPM] Proxy created: /  -> https://xp0cm.localhost
server listening on port 3001!
FetchError: request to https://xp0cm.localhost/sitecore/api/jss/dictionary/jss-sandbox/en?sc_apikey=%7BXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX%7D failed, reason: unable to verify the first certificate
    at ClientRequest.<anonymous> (C:\repos\sandbox\node-proxy\node_modules\node-fetch\lib\index.js:1444:11)
    at ClientRequest.emit (events.js:315:20)
    at TLSSocket.socketErrorListener (_http_client.js:426:9)
    at TLSSocket.emit (events.js:315:20)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  type: 'system',
  errno: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
  code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}
Read More »