<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Blog posts by Hieu Nguyen</title><link href="http://world.optimizely.com" /><updated>2026-03-04T09:38:12.0000000Z</updated><id>https://world.optimizely.com/blogs/hieu-nguyen/</id> <generator uri="http://world.optimizely.com" version="2.0">Optimizely World</generator> <entry><title>Optimizely CMS SaaS Migration Tool</title><link href="https://world.optimizely.com/blogs/hieu-nguyen/dates/2026/3/optimizely-cms-saas-migration-tool/" /><id>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Migrating and synchronizing environments in &lt;strong&gt;Optimizely CMS SaaS&lt;/strong&gt; can be challenging, especially when working with multiple environments such as development, staging, and production.&lt;/p&gt;
&lt;p&gt;Currently, CMS SaaS provides &lt;strong&gt;export/import functionality&lt;/strong&gt;, but it does &lt;strong&gt;not yet include built-in tools for comparing or migrating entities between environments&lt;/strong&gt;. As a result, developers often need to manually verify whether content types, display templates, or other entities exist in another environment before performing imports. This process can be time-consuming and error-prone.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Optimizely CMS SaaS Migration Tool&lt;/strong&gt; aims to help address this gap by providing a lightweight interface to compare environments and assist with migration tasks.&lt;/p&gt;
&lt;h2&gt;Key Capabilities&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Connect to multiple CMS SaaS environments using OAuth2 (Client Credentials) + CMS APIs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compare &lt;strong&gt;content types&lt;/strong&gt; and &lt;strong&gt;display templates&lt;/strong&gt; between source and target environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;View structured differences to quickly identify missing or mismatched entities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Export comparison results as JSON for reference or automation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Track environment parity before performing export/import operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes the tool particularly useful for &lt;strong&gt;tracking down differences in content types and display templates&lt;/strong&gt; across environments, something that currently requires manual investigation when using the native SaaS tooling.&lt;/p&gt;
&lt;h2&gt;Current Status&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Content comparison and migration functionality is still under active development. At the moment, the tool should primarily be used to check whether a content item (with the same ID) exists in the target environment rather than relying on it for full content synchronization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Access the Tool&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/chrno1209/optimizely-cms-saas-migration-tool&quot;&gt;https://github.com/chrno1209/optimizely-cms-saas-migration-tool&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Live Deployment (Vercel)&lt;/strong&gt; &amp;ndash; use instantly in the browser&lt;br /&gt;&lt;a href=&quot;https://optimizely-cms-saas-migration-tool.vercel.app/&quot;&gt;https://optimizely-cms-saas-migration-tool.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why This Tool Matters&lt;/h2&gt;
&lt;p&gt;As members of the &lt;strong&gt;Optimizely community (&amp;ldquo;Optimizers&amp;rdquo;)&lt;/strong&gt;, many of us are looking forward to &lt;strong&gt;official built-in capabilities for environment comparison and migration&lt;/strong&gt; within CMS SaaS. While those features are being developed, tools like this can serve as a helpful interim solution.&lt;/p&gt;
&lt;p&gt;This project provides an &lt;strong&gt;alternative approach to visualize differences and verify environment parity&lt;/strong&gt;, helping developers reduce manual checks and better manage schema consistency across environments.&lt;/p&gt;
&lt;p&gt;If you are working with &lt;strong&gt;Optimizely CMS SaaS today&lt;/strong&gt;, this tool may help simplify part of your workflow while we wait for the official platform features to arrive.&lt;/p&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;
&lt;p&gt;&lt;img class=&quot;clickable&quot; style=&quot;width: 100%; height: auto;&quot; src=&quot;/link/69d8728032d8498fb8a1f0ff48fb277f.aspx&quot; alt=&quot;&quot; width=&quot;2560&quot; height=&quot;1353&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;clickable&quot; style=&quot;width: 100%; height: auto;&quot; src=&quot;/link/3e4fe90153c64ce195a78dc5c148bb48.aspx&quot; alt=&quot;&quot; width=&quot;2560&quot; height=&quot;1353&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;clickable&quot; style=&quot;width: 100%; height: auto;&quot; src=&quot;/link/0998194709744c829bb9695128255ce1.aspx&quot; alt=&quot;&quot; width=&quot;2560&quot; height=&quot;1353&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</id><updated>2026-03-04T09:38:12.0000000Z</updated><summary type="html">Blog post</summary></entry> <entry><title>Simplify Optimizely CMS Configuration with JSON Schema</title><link href="https://world.optimizely.com/blogs/hieu-nguyen/dates/2024/12/simplify-optimizely-cms-configuration-with-json-schema/" /><id>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Optimizely CMS is a powerful and versatile platform for content management, offering extensive configuration options that allow developers to fine-tune their applications. However, navigating and correctly setting up these options in &lt;code&gt;appsettings.json&lt;/code&gt; can sometimes feel daunting&amp;mdash;especially for new developers or those unfamiliar with the full breadth of available settings.&lt;/p&gt;
&lt;p&gt;To address this challenge, I&amp;rsquo;m excited to introduce the &lt;strong&gt;Optimizely JSON Schema.&lt;/strong&gt; This schema is designed to streamline the configuration process for developers, providing them with an enhanced, developer-friendly experience in popular IDEs like Visual Studio Code and JetBrains Rider.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/f20b7f222812411dbf02bfb8a991a3a2.aspx&quot; alt=&quot;&quot; width=&quot;1082&quot; height=&quot;396&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Why a JSON Schema?&lt;/h3&gt;
&lt;p&gt;When configuring Optimizely CMS, developers rely on &lt;code&gt;appsettings.json&lt;/code&gt; to define their application&#39;s behavior. While the official &lt;a href=&quot;https://docs.developers.optimizely.com/content-management-system/docs/configuration&quot;&gt;Optimizely CMS documentation&lt;/a&gt; provides thorough information, manually looking up settings and ensuring their correctness can slow down development and increase the risk of errors.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how the Optimizely JSON Schema helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete Support&lt;/strong&gt;: Provides autocomplete suggestions for configuration keys, reducing the need to memorize or constantly refer to external documentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation on the Fly&lt;/strong&gt;: Highlights invalid or unsupported configuration keys and values, ensuring your &lt;code&gt;appsettings.json&lt;/code&gt; is always accurate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inline Documentation&lt;/strong&gt;: Displays descriptions and valid values for settings directly in the IDE, offering context as you type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistent Structure&lt;/strong&gt;: Encourages adherence to best practices in structuring and naming settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Features of the Optimizely JSON Schema&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Comprehensive Coverage of Optimizely CMS Settings&lt;/strong&gt;&lt;br /&gt;The schema encapsulates all documented configuration options for Optimizely CMS, based on the official &lt;a href=&quot;https://docs.developers.optimizely.com/content-management-system/docs/configuration&quot;&gt;Optimizely Configuration Documentation&lt;/a&gt;. More options will be added in future (e.g: eCommerce).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;IDE Integration&lt;/strong&gt;&lt;br /&gt;It works seamlessly with IDEs that support JSON Schema, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;li&gt;JetBrains Rider&lt;/li&gt;
&lt;li&gt;Visual Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Quick Start Setup&lt;/strong&gt;&lt;br /&gt;Simply &lt;a href=&quot;https://github.com/chrno1209/Optimizely-Json-Schema&quot;&gt;download here&lt;/a&gt; and reference the schema in your &lt;code&gt;appsettings.json&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &quot;$schema&quot;: &quot;appsettings-schema.json&quot;,
    ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;Benefits for Developers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster Configuration&lt;/strong&gt;: Save time with instant suggestions and error-checking.&lt;br /&gt;&lt;img src=&quot;/link/45709fbc0b914588b37f78e1a6bed474.aspx&quot; alt=&quot;Image image.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error Reduction&lt;/strong&gt;: Minimize misconfigurations that could lead to runtime errors.&lt;br /&gt;&lt;img src=&quot;/link/f19a95cfc24740da96c0c0a04a43492e.aspx&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved Developer Experience&lt;/strong&gt;: Eliminate the constant back-and-forth between code and documentation.&lt;br /&gt;&lt;img src=&quot;/link/96dea71452a349239427eb5c4857f182.aspx&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;How to Get Started&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install the schema&lt;/strong&gt;: Head over to the &lt;a href=&quot;https://github.com/chrno1209/Optimizely-Json-Schema&quot;&gt;GitHub repository&lt;/a&gt;&amp;nbsp; to download JSON Schema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reference the Schema&lt;/strong&gt;: Add the schema URL to your &lt;code&gt;appsettings.json&lt;/code&gt; file as shown in the example above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Explore Settings&lt;/strong&gt;: Start typing in your configuration file to experience the power of autocompletion, validation, and inline documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contribute&lt;/strong&gt;: Found an undocumented configuration or want to improve the schema? Feel free to submit issues or pull requests to the GitHub repository.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;Release Changes&lt;/h3&gt;
&lt;h4&gt;12/12/2024: Initial Schema (Version 1.0)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Launched the first version of the JSON Schema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Included all major configuration options for Optimizely CMS based on official documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added support for autocomplete, validation, and inline documentation in JSON editors.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;01/10/2025: Refactor and Optimize Schema (Version 1.1)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Refactored the schema to improve performance and readability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimized the structure for better autocomplete suggestions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced validation rules to catch edge cases and unsupported values more effectively.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The Optimizely JSON Schema is here to make your life as an Optimizely developer easier. By integrating the schema into your IDE, you&amp;rsquo;ll spend less time searching through documentation and more time building great experiences with Optimizely CMS.&lt;/p&gt;
&lt;p&gt;Feel free to share your feedback and suggestions in the comments below or on the project&amp;rsquo;s GitHub page. Let&amp;rsquo;s make working with Optimizely CMS configurations smoother than ever!&lt;/p&gt;</id><updated>2024-12-19T07:54:40.0000000Z</updated><summary type="html">Blog post</summary></entry></feed>