<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Blog posts by Johnny Mullaney</title><link href="http://world.optimizely.com" /><updated>2025-10-20T12:09:48.0000000Z</updated><id>https://world.optimizely.com/blogs/johnny-mullaney/</id> <generator uri="http://world.optimizely.com" version="2.0">Optimizely World</generator> <entry><title>How Optimizely MCP Learns Your CMS (and Remembers It)</title><link href="http://johnnymullaney.com/?p=3906" /><id>In Part 1, I introduced the “discovery-first” idea—an MCP that can plug into any SaaS CMS and learn how it’s structured on its own. This post gets into the details: how the MCP discovers your schema, builds a usable map of it, and remembers what it learns so that subsequent requests feel instant. Discovery &amp;#8211; &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2025/10/20/how-optimizely-mcp-learns-your-cms-and-remembers-it/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;How Optimizely MCP Learns Your CMS (and Remembers&amp;#160;It)&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2025-10-20T12:09:48.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Building a Discovery-First MCP for Optimizely CMS – Part 1 of 4</title><link href="http://johnnymullaney.com/?p=3886" /><id>This post kicks off a four-part series on how we’re evolving the Optimizely Model Context Protocol (MCP). The project is still in beta and open source, but it’s already capable of something new: connecting to any Optimizely SaaS CMS, discovering its schema in real time, and generating valid queries without a predefined map. You can &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2025/10/13/building-a-discovery-first-mcp-for-optimizely-cms-part-1-of-4/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Building a Discovery-First MCP for Optimizely CMS &amp;#8211; Part 1 of&amp;#160;4&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2025-10-13T11:19:07.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Playing with MCP: An Experimental Server for Optimizely CMS</title><link href="http://johnnymullaney.com/?p=3844" /><id>I’ve been tinkering with something experimental: an MCP server for Optimizely CMS. MCP, or Model Context Protocol, is a way for AI tools to talk to external systems. It’s not a REST API, and it’s not GraphQL either. Think of it more like a common “protocol wrapper” that lets AI assistants discover what a server &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2025/09/24/playing-with-mcp-an-experimental-server-for-optimizely-cms/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Playing with MCP: An Experimental Server for Optimizely&amp;#160;CMS&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2025-09-24T11:48:57.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>How to Reset or Complete a Stuck Optimizely DXP Integration Deployment using the Optimizely Deployment API</title><link href="http://johnnymullaney.com/?p=3411" /><id>If you&amp;#8217;ve deployed to Optimizely&amp;#8217;s Integration environment without specifying the DirectDeploy parameter in your PowerShell command, your deployment might get stuck in an &amp;#8220;AwaitingVerification&amp;#8221; state. Without a record of the deployment ID, the deployment pipeline can become blocked. Unlike Pre-Production or Production environments, the Optimizely PaaS portal does not offer a UI option to reset &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2025/03/31/how-to-reset-or-complete-a-stuck-optimizely-dxp-integration-deployment-using-the-optimizely-deployment-api/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;How to Reset or Complete a Stuck Optimizely DXP Integration Deployment using the Optimizely Deployment&amp;#160;API&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2025-03-31T10:10:13.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Optimizely SaaS CMS: Balancing TCO and ROI in Your CMS Hosting Decision</title><link href="http://johnnymullaney.com/?p=2391" /><id>With Optimizely SaaS CMS coming soon, I&amp;#8217;ve been talking with companies about the tricky business of picking the right core system software for their business. These chats really got me thinking, so I decided to jot down some thoughts to tackle the tricky topics of Total Cost of Ownership (TCO) and Return on Investment (ROI) &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2024/04/08/optimizely-saas-cms-balancing-tco-and-roi-in-your-cms-hosting-decision/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Optimizely SaaS CMS: Balancing TCO and ROI in Your CMS Hosting&amp;#160;Decision&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2024-04-08T16:46:15.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Opticon 2023:The Launch of “Optimizely One”</title><link href="http://johnnymullaney.com/?p=2179" /><id>After another excellent Opticon event, I tool time to distil my thoughts and write up some key takeaways which can be summarised in two words: Choice and Instructions! Check out my LinkedIn article here: https://www.linkedin.com/pulse/opticon-2023the-launch-optimizely-one-johnny-mullaney-jmdle</id><updated>2023-11-23T20:25:49.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Overriding Optimizely CMS Approval Sequences</title><link href="http://johnnymullaney.com/?p=2112" /><id>Optimziely CMS Approval Sequences are an important tool for organisations that use CMS to translate, review and quality check content before publishing. A typical Optimziely CMS Approval sequences configuration involves multiple stages of approval, each requiring actions such as click to Approve/Decline and Commenting. The Problem I recently worked with a client who needed to &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2023/10/24/overriding-optimizely-cms-approval-sequence/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Overriding Optimizely CMS Approval&amp;#160;Sequences&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2023-10-24T11:59:40.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Hight Value Data: Reshaping Brands and Driving E-Commerce Revolution</title><link href="http://johnnymullaney.com/?p=2063" /><id>I&amp;#8217;ve just published a new article on how high-value data is reshaping brands and driving the e-commerce revolution to the FTT blog. In this piece, I delve into the importance of customer data as the fuel that propels your e-commerce revolution discussing how companies like Netflix and Spotify leverage comprehensive customer views and tailored content &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2023/07/19/hight-value-data-reshaping-brands-and-driving-e-commerce-revolution/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Hight Value Data: Reshaping Brands and Driving E-Commerce&amp;#160;Revolution&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2023-07-19T14:35:58.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Optimizely Data Platform (ODP) -&gt; Commerce Cloud: Product Attribute Connector</title><link href="http://johnnymullaney.com/?p=1987" /><id>The most powerful E-Commerce segmentation is possible when your data platform knows everything about your products. Then you can segment, personalise, experiment and sell to customers who are interested in various types of products. This post explains how you can easily extend your product catalog data in ODP with First Three Things ODP Product Attribute &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2023/03/02/optimizely-data-platform-odp-commerce-cloud-product-attribute-connector/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Optimizely Data Platform (ODP) -&amp;#62; Commerce Cloud: Product Attribute&amp;#160;Connector&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2023-03-02T11:23:24.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>A Marketing Managers Guide to a modern DXP Solution Architecture</title><link href="http://johnnymullaney.com/?p=1949" /><id>As a Solution Architect, I nerd out on new technologies, plugging systems together, good code, solving problems and the general process of designing software. And that is why I have been writing technical blog posts for a few years.&#160; This time I decided to write an article that was aimed at a non-technical audience. I &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2023/02/09/a-marketing-managers-guide-to-a-modern-dxp-solution-architecture/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;A Marketing Managers Guide to a modern DXP Solution&amp;#160;Architecture&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2023-02-09T10:26:56.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Creating Behavioural based Customer Segments in ODP- Post 2 of 4</title><link href="http://johnnymullaney.com/?p=1891" /><id>In Blog Post 1, I talked about the foundations of delivering a super personalised experience to customers using Optimzely products. In this post we&amp;#8217;ll discuss the first pillar &amp;#8211; Segmentation. Specifically, the technical implementation which sets the foundations for the super powerful Segmentation of your customer base. Use Optimizely&amp;#8217;s Data Platform (ODP) to harmonise data &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/10/26/creating-behavioural-based-customer-segments-in-odp-post-2-of-4/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Creating Behavioural based Customer Segments in ODP- Post 2 of&amp;#160;4&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-10-26T11:48:26.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Pillars of delivering a Tailored Customer Experience on Optimizely DXP- Post 1 of 4</title><link href="http://johnnymullaney.com/?p=1878" /><id>New Era Cap&amp;#160;has been manufacturing baseball caps for American sports teams since the early 1930s. They are a heritage brand with their roots firmly laid in Baseball, one of America&amp;#8217;s most popular sports. Over their considerable history they have expanded to new sporting domains and evolved into a popular culture lifestyle brand with their products &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/08/10/pillars-of-delivering-a-tailored-customer-experience-on-optimizely-dxp-post-1-of-4/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Pillars of delivering a Tailored Customer Experience on Optimizely DXP- Post 1 of&amp;#160;4&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-08-10T09:57:29.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Integrating Optimizely Data Platform (ODP) for GDPR compliance</title><link href="http://johnnymullaney.com/?p=1799" /><id>The most common concern I&amp;#8217;ve seen raised in Europe is how best to integrate ODP with your website in accordance with GDPR compliance data protection regulations. Some ODP Background ODP consists of the following key data entities that will be synced between your website and ODP. Products Product catalog structure and master data Customers The &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/06/14/integrating-optimizely-data-platform-for-gdpr-compliance/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Integrating Optimizely Data Platform (ODP) for GDPR&amp;#160;compliance&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-06-14T09:32:01.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Manually Importing Products from Commerce Cloud to Optimizely Data Platform (ODP)</title><link href="http://johnnymullaney.com/?p=1813" /><id>ODP has a turn key Integration app called the Commerce Cloud Connector which can be responsible for the synchronisation of Contact, Order and Product data between your Optimizely Commerce Cloud instance and ODP. However in Europe the Commerce Cloud Connector is not due to be released until the end of June 2022. In Europe, due &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/04/28/manually-importing-products-from-commerce-cloud-to-optimizely-data-platform-odp/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Manually Importing Products from Commerce Cloud to Optimizely Data Platform&amp;#160;(ODP)&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-04-28T08:00:00.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Experimenting with your Keyword Search&#160;Algorithm – 2 of 2</title><link href="http://johnnymullaney.com/?p=1765" /><id>In post 1 in the series we set up a CMS manageable Search Algorithm Settings Page and plugged that into our Search &amp;#38; Navigation query. We&amp;#8217;ll now build on that to create an Experiment that will help us determine the optimal algorithm configuration. Extend the Search Algorithm Settings Page Firstly we will extend our Algorithm &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/02/17/experimenting-with-your-keyword-search-algorithm-2-of-2/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Experimenting with your Keyword Search&#160;Algorithm &amp;#8211; 2 of&amp;#160;2&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-02-17T09:00:00.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Experimenting with your Keyword Search Algorihtm</title><link href="http://johnnymullaney.com/?p=1742" /><id>This series will discuss an approach to experimenting with your Keyword Search Algorithm using the Optimizely Search &amp;#38; Navigation, Commerce Cloud and Experimentation products. Search &amp;#38; Navigation At a basic level the following happens on a keyword search: Customer attempts a keyword search on your Commerce Cloud website Commerce Cloud code builds a Search &amp;#38; &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2022/02/01/experimenting-with-your-keyword-search-algorihtm/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Experimenting with your Keyword Search&amp;#160;Algorihtm&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2022-02-01T09:00:00.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Foundations of “Good SEO” with Optimizely</title><link href="http://johnnymullaney.com/?p=1703" /><id>Maximising traffic acquisition through good SEO practices is a key strategic goal of any commercial website. Recently I&amp;#8217;ve been working with some brands on SEO optimisation from a technical perspective and have spent some time trying to map out what exactly &amp;#8220;Good SEO&amp;#8221; means. So what is Good SEO? That&amp;#8217;s a tough question! In my &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2021/11/22/foundations-of-good-seo-with-optimizely/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Foundations of &amp;#8220;Good SEO&amp;#8221; with&amp;#160;Optimizely&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2021-11-22T10:00:00.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Optimizely Block Output Caching</title><link href="http://johnnymullaney.com/?p=1681" /><id>There are lots of good quality Blog and Forum posts about differing ways to implement Block level Donut style Output caching in Optimizely. The below is the approach I prefer to implement Donut style Output Caching for Blocks. It keeps things simple while making sure that cache is unique for visitor groups and languages. Using &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2021/10/27/output-cache-an-optimizely-block/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Optimizely Block Output&amp;#160;Caching&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2021-10-27T08:55:36.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Personalising Headless Content across Channels</title><link href="http://johnnymullaney.com/?p=1650" /><id>Personalising Headless CMS content across channels can be achieved with Optimizely Visitor Groups when a property in the http request can identify the source. For example a mobile app request sent to a Headless CMS could include the following Http Header key value: &amp;#8220;mobile-app-request&amp;#8221;:true Request Header Visitor Group Criterion A visitor group criterion is required &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2021/09/29/personalising-headless-content-across-channels/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Personalising Headless Content across&amp;#160;Channels&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2021-09-29T09:00:50.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>My Experience with Optimizely Fullstack (via Rollouts) – 4 of 4</title><link href="http://johnnymullaney.com/?p=1582" /><id>In this final post of the series, we will investigate the result of a real world experiment and discuss what the results of the experiment meant to the roadmap of this project. So far&#160;we have talked about&#160;working with Optimizely Fullstack&#160;from a development perspective and&#160;integrating with a Commerce application. Then we configured and coded our first &amp;#8230; &lt;a href=&quot;https://johnnymullaney.com/2021/09/16/my-experience-with-optimizely-fullstack-via-rollouts-4-of-4/&quot; class=&quot;more-link&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;My Experience with Optimizely Fullstack (via Rollouts) &amp;#8211; 4 of&amp;#160;4&quot;&lt;/span&gt;&lt;/a&gt;</id><updated>2021-09-16T11:29:49.0000000Z</updated><summary type="html">Blog post</summary></entry></feed>