Blog posts by Ritu Madan2024-01-23T21:31:43.0000000Z/blogs/ritu-madan/Optimizely WorldDecoding DI in Optimizely CMS 12/blogs/ritu-madan/dates/2024/1/decoding-di-in-optimizely-cms-12/2024-01-23T21:31:43.0000000Z<p>DI or Dependency Injection is a complex topic, not just in Optimizely CMS, but in general in .net core implementations. Some aspects we get, like the different ways dependencies can be injected and which is better over others, while some leave us scratching our heads. Often times we end up doing a lot of troubleshooting, digging into internal code and finding the right alternatives to DI, to get things to work.</p>
<p>The biggest blocker here is understanding the order in which steps get executed, modules get initialized and services get registered. Once this is clear, we know where to add our custom code and avoid any surprise runtime errors around missing service registrations. One such error led me to this discovery so sharing my findings and learnings.</p>
<p>Read the complete post <a href="https://blogs.perficient.com/2024/01/23/decoding-di-in-optimizely-cms-12/">here </a>for details.</p>Custom form element with dependencies/blogs/ritu-madan/dates/2024/1/custom-form-element-with-dependencies/2024-01-17T18:26:42.0000000Z<p>Episerver Forms are cool as is. They provide solid ground to build basic forms out of the box. But often times, we have custom needs that require us to customize or add to the out of the box functionality.</p>
<p>In my case, I needed a custom form element that can support some unique requirements and at the same time I needed this to support the built in dependency logic.</p>
<p>For those of you unfamiliar with the forms dependency logic, see the Optimizely document <a href="https://support.optimizely.com/hc/en-us/articles/4413192345101-Form-element-types#DependenciesTab">here</a>.</p>
<p>Read the complete blog <a href="https://blogs.perficient.com/2024/01/17/optimizely-cms-custom-form-element-with-dependencies/">here </a>for all the fun details on how this was achieved with minor code tweaks.</p>Special symbols in TinyMCE/blogs/ritu-madan/dates/2024/1/special-symbols-in-tinymce/2024-01-10T23:27:54.0000000Z<p>TinyMCE has evolved over the years, allowing more and more flexibility with the features it offers and capabilities it allows to customize. And this is pretty handy as every client has their unique needs and requirements for what they want their Rich Text Editors to do.</p>
<p>My use case - pretty straightforward - among the many customizations already on, we needed to accommodate very special symbols in the RTE. Now I'm not the first person to present this need ofcourse, which is why TinyMCE already had a plugin called Charmap that contains a whole ensemble of special symbols to use from. And talk about flexibility, it also gives you, the developer, the capability to customize this plugin and add more symbols to it, in case yours are not in the preset list.</p>
<p>And, what do you know.. not all of mine made the preset list cut, ofcourse! :)</p>
<p>So, I added them in there. Read the complete post <a href="https://blogs.perficient.com/2024/01/10/working-with-special-symbols-in-tinymce/">here</a> to find out exactly how! There are some good to know details in there for sure.</p>
Optimizely CMS 12 Upgrade takeaways/blogs/ritu-madan/dates/2023/8/optimizely-cms-12-upgrade-takeaways/2023-08-01T20:01:40.0000000Z<p>I've now gone through multiple CMS 12 upgrade projects. Each project had its own unique customizations and hence its own unique set of challenges when upgrading. I learnt something new, overcame a new hurdle, found/solved a new problem with every project. Some took quite a bit of time and synergy with Opti community, some back and forth on Opti support tickets, and solutions from other MVPs. So I thought it would be nice to put them all together in one place, for others on their upgrade journey, looking for same or similar solutions.</p>
<p>So here goes :</p>
<p>This <a href="https://blogs.perficient.com/2023/02/17/optimizely-cms-12-unique-upgrade-challenges/">first blog post</a> talks about things like Marketing connector and Visitor group related issues.</p>
<p>This <a href="https://blogs.perficient.com/2023/07/27/optimizely-cms-12-takeaways">second one</a> talks about small nitty gritty, more generic things, but if you don't know about them, they can end up giving you massive headaches.</p>
<p>Hope you find this one stop post helpful!</p>
<p>I am looking forward to hear other's upgrade stories and challenges faced/resolved, so please do share in comments if you encountered something unique.</p>Icon Library in Optimizely CMS/blogs/ritu-madan/dates/2023/5/icon-library-in-optimizely-cms/2023-05-15T21:20:56.0000000Z<p>Icons are graphical representations of different elements on a website. They make the webpages visually appealing and like any other image, have a stronger connection and retention to the end user’s memory than plain text. When used in moderation and the right way, they can be self-explanatory and reduce the need for text content in a lot of use cases.</p>
<p>Icon Library is basically a curated list/dictionary of icons that ties an icon to a meaningful name. This library can then be used to pick icons for the different elements of the website. A good use case would be websites that use icons heavily and need to give CMS Editors control to pick icons with content within CMS, in a way that's well in line with the site's theme and design as well as maintains consistency in terms of meaning and usage. It also allows to have dedicated user roles that control the creation and modification of the actual Icon Library, so they can ensure the icons added are per design and theme and that other user roles can't mess the list up. And by providing a select list of the icon library on content types, instead of a ContentReference property where any media can be added, it can be ensured that no icons outside of this curated list are added to content.</p>
<p>Please see my detailed post <a href="https://blogs.perficient.com/2023/05/15/icon-library-in-optimizely-cms/">here </a>on how to setup the Icon Library and then use it in CMS.</p>Bitbucket CI/CD pipelines for Optimizely CMS 12/blogs/ritu-madan/dates/2023/5/bitbucket-cicd-pipelines-for-optimizely-cms-12/2023-05-05T20:10:20.0000000Z<p>Recently, we had a client with code repository hosted on Bitbucket and they showed interest in setting up CI/CD pipelines for automating Optimizely CMS deployments from within Bitbucket. When I started researching, I found several blog posts and documentation around building Azure Devops pipelines for Optimizely CMS deployments. But none that would guide us through building Optimizely CI/CD pipelines in Bitbucket. So after spending quite some time understanding Bitbucket pipeline basics, a lot of trial and error and help from other fellow colleagues, I was able to setup a Bitbucket CI/CD build pipeline for my project.</p>
<p>This exercise was quite the learning as it wasn't just Bitbucket pipeline specific. I learnt Bash and Powershell scripting. I learnt how Azure Devops and Bitbucket pipelines are so drastically and syntactically different from each other.</p>
<p>I also learnt that this effort needed sharing, because this topic is relevant and very much in need of more readily available, one stop shop content. Hopefully, after this, others on the same path won't have to spend as much time figuring smaller pieces and syntax for Bitbucket pipelines like I did.</p>
<p>Please follow along to the detailed blog <a href="https://blogs.perficient.com/2023/05/05/bitbucket-ci-cd-pipelines-for-optimizely-cms-12/">here</a>, providing step by step breakdown of the Bitbucket pipeline code.</p>
<p>I will look forward to feedback and recommendation from others here, to make this better.</p>Optimizely CMS 12 – Unique upgrade challengeshttps://blogs.perficient.com/?p=3271902023-02-17T20:56:45.0000000ZBy now, a lot of us have already participated in one or more CMS 12 upgrade projects. The others are still evaluating whether they should do it now or wait some more. Regardless of when you do it, there will definitely be some unique upgrade challenges you will come across, as I and many others […]Optimizely CMS – the importance of GUIDs and Assembly Nameshttps://blogs.perficient.com/?p=3163902022-08-16T16:34:16.0000000ZIn Optimizely CMS world, we see GUIDs everywhere. They are the unique identifiers for content types and more. As part of developing with Optimizely CMS, developers are advised to always specify GUIDs in there Content Type declarations. If one isn’t specified, the DB assigns one dynamically when saving the Content type. A big reason for […]Optimizely CMS 12 – Dependency Injection(DI) – StructureMap vs ASP.Net Corehttps://blogs.perficient.com/?p=3119462022-06-30T19:43:59.0000000ZIf you are upgrading to Optimizely CMS 12, one of the breaking changes to consider is the change to the Dependency Injection(DI) framework. Earlier versions of Optimizely CMS had their own DI hosting framework that supported other concrete DI implementations, like StructureMap. With CMS 12 and ASP.Net Core, DI framework is built into the system. […]Optimizely Page Publish Options – Do’s and Dont’shttps://blogs.perficient.com/?p=3096022022-05-13T13:58:55.0000000ZPage Publish is the most basic feature of a CMS. This is what makes our content visible to the world. Episerver CMS (now known as Optimizely Content Cloud) too has the feature and some more flexibility built around it to aid our content authors. There’s the usual page publish, where you hit a button and […]Optimizely Search : How to search for all expired assetshttps://blogs.perficient.com/?p=3089372022-05-03T14:41:05.0000000ZFirst of all, I want to mention that EPiServer Find (now known as Optimizely Search and Navigation) is a great tool to search for content on an Optimizely site, whether its CMS or Commerce. It comes with a range of options to customize and with filtering and boosting ability to get the best results. Often […]Kathryn Bogen Recognized on 2022 CRN Women of the Channel Listhttps://blogs.perficient.com/?p=3098722012-05-19T18:06:00.0000000ZCRN’s annual Women of the Channel program honors some of the most influential women leaders within the channel. We’re proud to have five Perficient colleagues recognized in the 2022 CRN Women of the Channel list, and we’re highlighting their individual accomplishments in a special blog series. We previously celebrated Liza Sisler, Liz Stuart, and Lynn […]