<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Company Blog]]></title><description><![CDATA[The Heart Of Hutte: Company And Product Updates.]]></description><link>https://hutte.io/company-blog/</link><image><url>https://hutte.io/company-blog/favicon.png</url><title>Company Blog</title><link>https://hutte.io/company-blog/</link></image><generator>Ghost 5.49</generator><lastBuildDate>Thu, 06 Nov 2025 19:13:20 GMT</lastBuildDate><atom:link href="https://hutte.io/company-blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[New in Hutte: Integration Manager role, favorite work items, and more]]></title><description><![CDATA[We’ve added a lot of upgrades to Hutte recently, including a new member role called an “Integration Manager” who can help you set up your new Hutte project.]]></description><link>https://hutte.io/company-blog/new-in-hutte-integration-manager-role/</link><guid isPermaLink="false">66cdf2edd7797da91f076742</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Ben Barnhart]]></dc:creator><pubDate>Tue, 20 Aug 2024 09:40:00 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/08/Sprint-40--1-.png" medium="image"/><content:encoded><![CDATA[<h2 id="new-role-in-hutte-integration-manager">New role in Hutte: Integration Manager</h2><img src="https://hutte.io/company-blog/content/images/2024/08/Sprint-40--1-.png" alt="New in Hutte: Integration Manager role, favorite work items, and more"><p>You can now invite a team member as an <strong>Integration Manager</strong>, whose only function is to help <strong>set up a Hutte project</strong> by linking to a Salesforce Org and a Git repository.</p><p>In some organizations, the user setting up Hutte might not have permissions on their Git host to run through the relevant authorization steps. Or you might just want to delegate these project setup steps to your IT department. An Integration Manager is the perfect solution for both of these cases.</p><p>Adding an Integration Manager <strong>doesn&#x2019;t add any additional costs</strong> to your Hutte plan. You&#x2019;ll find this option under your &#x201C;Members&#x201D; tab. Click on &#x201C;Invite Integration Manager&#x201D; to open the invitation dialogue box.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Invite-Integration-Manager--3-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1949" height="583" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Invite-Integration-Manager--3-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Invite-Integration-Manager--3-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Invite-Integration-Manager--3-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Invite-Integration-Manager--3-.png 1949w" sizes="(min-width: 720px) 720px"></figure><p><strong>Enter the email address </strong>you&#x2019;d like to send the invitation to, and specify the Hutte project you&#x2019;d like to add them to.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Invite-dialogue--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1817" height="1018" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Invite-dialogue--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Invite-dialogue--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Invite-dialogue--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Invite-dialogue--2-.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>After you click &#x201C;Send Invite,&#x201D; that team member will <strong>receive an invitation email </strong>with an account creation link.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Email--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1949" height="479" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Email--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Email--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Email--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Email--2-.png 1949w" sizes="(min-width: 720px) 720px"></figure><p>Following that link will bring them to the account creation screen. Once they&#x2019;ve set up their login details, they&#x2019;ll be added to your Hutte project, where they&#x2019;ll see the two project setup steps in <strong>the &quot;Project Settings.&quot;</strong></p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/link-Salesforce--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1943" height="752" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/link-Salesforce--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/link-Salesforce--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/link-Salesforce--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/link-Salesforce--2-.png 1943w" sizes="(min-width: 720px) 720px"></figure><p>The Integration Manager will only have access to these two project setup steps, where they can <strong>link the project</strong> to a Salesforce Organization and a <a href="https://hutte.io/whitepapers/git-based-development/?ref=hutte.io">Git repository.</a></p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/link-Git--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1949" height="655" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/link-Git--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/link-Git--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/link-Git--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/link-Git--2-.png 1949w" sizes="(min-width: 720px) 720px"></figure><h2 id="mark-your-important-work-items-with-a-favorite-star">Mark your important work items with a &apos;favorite&apos; star</h2><p>You can now mark your most important<strong> Scratch Orgs and Sandbox </strong>features with a &apos;favorite&apos; star.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/8ymZ0Tq0S8I?start=1&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="How to configure and use a pool of Scratch Orgs in Hutte"></iframe></figure><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Favorite-star--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1817" height="735" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Favorite-star--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Favorite-star--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Favorite-star--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Favorite-star--2-.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>This will allow you to find them quickly when <strong>filtering your list </strong>of work items.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Filter-favorites--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1943" height="609" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Filter-favorites--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Filter-favorites--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Filter-favorites--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Filter-favorites--2-.png 1943w" sizes="(min-width: 720px) 720px"></figure><p>This is particularly useful for users working in larger teams who want to easily keep track of which features they are <strong>currently working on. </strong>You can mark a work item as a &apos;favorite&apos; in the list view, or in that item&#x2019;s detail view. Your favorites are tied to your personal user account and appear only for you.</p><h2 id="custom-buttons-in-dropdown-menus-will-now-show-descriptions-on-hover">Custom buttons in dropdown menus will now show descriptions on hover</h2><p>We&#x2019;ve made a small improvement to custom buttons in Hutte. If you add a custom button to your project through your Hutte.yml, you&#x2019;re able to <strong>see its description </strong>when you hover over it.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Button-description-hover--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="2000" height="323" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Button-description-hover--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Button-description-hover--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Button-description-hover--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Button-description-hover--2-.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>If you have more than two or <strong>three custom buttons, </strong>the &apos;overflow&apos; buttons will be collected in a drop-down menu on the right-hand side. Previously, there was an issue where these &apos;overflow&apos; buttons did not show their descriptions when hovering over them. This has now been fixed.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Project-Count--4-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1949" height="465" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Project-Count--4-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Project-Count--4-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Project-Count--4-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Project-Count--4-.png 1949w" sizes="(min-width: 720px) 720px"></figure><p>You can add custom buttons by adding a custom script to your project&#x2019;s Hutte.yml file. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text"><strong><em>Learn more: </em></strong>Find out how to add custom buttons in our <a href="https://docs.hutte.io/en/?ref=hutte.io">Help Center</a>.</div></div><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/08/Custom-button-description--2-.png" class="kg-image" alt="New in Hutte: Integration Manager role, favorite work items, and more" loading="lazy" width="1817" height="869" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/08/Custom-button-description--2-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/08/Custom-button-description--2-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/08/Custom-button-description--2-.png 1600w, https://hutte.io/company-blog/content/images/2024/08/Custom-button-description--2-.png 1817w" sizes="(min-width: 720px) 720px"></figure><h2 id="explore-these-improvements-firsthand">Explore these improvements firsthand</h2><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x260E;&#xFE0F;</div><div class="kg-callout-text"><strong>Get in touch</strong> with us to discover how we can customize a superior user experience for you!</div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Request</span> a demo!</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[From pragmatic coding to AI: The evolution of Salesforce DevOps (Trails Podcast episode #18 with Robert Sösemann)]]></title><description><![CDATA[Join us in this episode as we delve into Robert Sösemann’s perspective as a Salesforce MVP and Technical Architect. We talk about the evolution from pragmatic coding to AI in Salesforce DevOps. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/pragmatic-coding-to-ai-the-evolution-of-salesforce-devops/</link><guid isPermaLink="false">66ba2aded7797da91f07667c</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Mon, 12 Aug 2024 16:29:04 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/08/Kanan-Gafarov.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article highlights</header>
    <ul>
            <li>The journey began with a shift from <b>traditional Java programming</b> to exploring Salesforce, leading to the creation of a new business track focused on low-code solutions and the development of influential tools.</li>
            <li>Key contributions include the integration of PMD into the Salesforce ecosystem, <b>emphasizing clean code</b> and quality standards, and the pivotal role in replacing Checkmarx with PMD for security reviews.</li>
            <li>A realistic approach to AI was developed, focusing on   <b>enhancing workflows</b> rather than replacing human creativity, particularly in combining deterministic Apex code with AI-driven insights.</li>
    </ul>
</div><!--kg-card-end: html--><h2 id="episode-18-robert-s%C3%B6semann-salesforce-mvp-and-technical-architect">Episode 18: <a href="https://www.linkedin.com/in/rsoesemann/?ref=hutte.io">Robert S&#xF6;semann</a>, Salesforce MVP and Technical Architect</h2><img src="https://hutte.io/company-blog/content/images/2024/08/Kanan-Gafarov.png" alt="From pragmatic coding to AI: The evolution of Salesforce DevOps (Trails Podcast episode #18 with Robert S&#xF6;semann)"><p></p><h2 id="watch-me-%F0%9F%8E%AC">Watch me &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/wJQZfW8-4f0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="From pragmatic coding to AI: The evolution of Salesforce DevOps with Robert S&#xF6;semann"></iframe></figure><h2 id="listen-to-me%F0%9F%8E%99%EF%B8%8F">Listen to me&#x1F399;&#xFE0F;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: From pragmatic coding to AI: The evolution of Salesforce DevOps (Trails Podcast episode #18 with Robert S&#xF6;semann)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/5v7eG53BDGtvjKCvuhMTRd?si=30d415471d36407e&amp;utm_source=oembed"></iframe></figure><h2 id="i-spied-on-your-linkedin-and-saw-that-your-first-salesforce-related-job-started-in-2012-could-you-share-with-us-briefly-your-career-in-the-salesforce-ecosystem-how-it-all-started-and-how-it-evolved">I spied on your LinkedIn and saw that your first Salesforce-related job started in 2012. Could you share with us briefly your career in the Salesforce ecosystem, how it all started, and how it evolved?</h2><p>That&apos;s a long story. I studied computer science and followed the normal career steps of a programmer. I worked a lot in internet companies. At one point in my career, I worked for a Java consultancy and sat in a very boring IBM training class. It was a time when people were very hyped by business process management, drawing diagrams, and trading software, like a <strong>kind of low code. </strong>In that two-day seminar, I was Googling a platform I had worked on years ago called Salesforce. Back then, it was a CRM where you could change the color of buttons.</p><p>I found that this platform had dramatically increased with an app store and a <a href="https://hutte.io/trails/apex-developer-guide/?ref=hutte.io">programming language called Apex.<strong> </strong></a>I spoke to my boss and said, &quot;Hey, we need to do this as a separate new business track.&quot; I called it &quot;Pragmatic Business Software using Low Code and Salesforce.&quot; At that time, I was also thrilled with Lean, Kanban, and Scrum. And I made it. The company later became a smaller German PDO, and we were doing Salesforce. We went to German companies and convinced them to trust the American cloud. </p><p>We even created one of the most <strong>excellent </strong><a href="https://hutte.io/trails/salesforce-appexchange-in-depth-review/?ref=hutte.io"><strong>free AppExchange</strong></a><strong> packages. </strong>Maybe you have stumbled across it. It is called Opportunity Planning Wall, and you could use it to move opportunity cards. Salesforce later stole it for their own Kanban view.</p><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Check us out</h6>
				<p>on AppExchange!<br></p>
			</div>
			<div class="btn">
				<a href="https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000JMy1aUAD&amp;ref=hutte.io">Learn more</a>
			</div>
		</div>
	</div><!--kg-card-end: html--><p>The other thing is that internal Salesforce teams like to test their metadata with the CLI. The CLI needs to know about their metadata, which may ship in the CLI six weeks before it&apos;s available to users. In doing so, internal teams are using the same CLI. We have to do a lot of releases besides those things. The other thing you&apos;ll see a lot is workarounds for server issues, where there&apos;s some new error, and it&apos;s returnable.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4CA;</div><div class="kg-callout-text">If we&apos;re polling for a deployment, and there are new connection reset errors, we would like to be able to put the workaround for that and ship it. That gives the server-side team more time to figure that out <strong>without impacting customers</strong> using the CLI. However, it may be a little while before they can release their fix, and it may be the next major Salesforce version before they can release their fix. It&apos;s nice to be able to patch those things because they break all of our tests, just like they break your deployments.</div></div><h2 id="was-it-in-classic-still">Was it in Classic still?</h2><p>Yes, it was still in Classic with Visualforce and jQuery, but this is how it started. I fell in love with getting things done. I was often overwhelmed in the Java world. There was <strong>so much open-source, </strong>and it was changing too fast. In Salesforce, the mindset was that there was one solution or no solution at all, and then you had to build around that.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text"><em><strong>Read more: </strong></em><a href="https://hutte.io/webinars/salesforce-open-source/?ref=hutte.io"><em>Accelerate your Salesforce implementation projects with open-source.</em></a></div></div><p>At that point, I hadn&apos;t programmed before. I programmed during my time at university, but then I became a manager and stuff like that. I learned how to code hands-on. I always stayed in it and wanted to stay in the Salesforce ecosystem.</p><h2 id="youre-also-an-mvp-a-frequent-speaker-and-you-publish-stuff-one-thing-that-many-people-in-the-ecosystem-associate-your-name-with-is-pmd-pmd-is-a-static-code-analyzer-correct-me-if-im-wrong-but-you-ported-it-to-apex-first-i-think-you-also-grew-this-into-being-capable-of-doing-code-analysis-or-static-code-analysis-on-metadata-beyond-code-so-no-code-solutions-like-flow-can-you-share-with-us-how-it-started-how-the-idea-came-about-and-the-process-of-launching-this-open-source">You&apos;re also <a href="https://hutte.io/trails/what-is-a-salesforce-mvp/?ref=hutte.io">an MVP,</a> a frequent speaker, and you publish stuff. One thing that many people in the ecosystem associate your name with is PMD. PMD is a static code analyzer. Correct me if I&apos;m wrong, but you ported it to Apex first. I think you also grew this into being capable of doing code analysis or static code analysis on metadata beyond code. So, no code <a href="https://hutte.io/trails/salesforce-flow/?ref=hutte.io">solutions like Flow.</a> Can you share with us how it started, how the idea came about, and the process of launching this open-source?</h2><p>That was a fun story. It was around 2015. I was working for a successful ISV in the AppExchange space. We were still a startup, but the development team grew. In the beginning, it was just me and a few guys who wrote the code. We were ambitious to <strong>make the </strong><a href="https://hutte.io/company-blog/salesforce-code-analyzer-recipe/"><strong>code clean,</strong></a> but we needed to grow the team, so we hired students. As always, I wanted to control things. I didn&apos;t want to micromanage people, but I still like enforcing my quality standards. </p><p>I thought it would be nice to have tools in Apex that I knew from Java, like code analyzers. Then I thought, &quot;Cool, what&apos;s there?&quot; There was only one guy who ported PMD with what&apos;s called CodeScan. I think it belongs to AutoRabbit now, but it was one guy in Australia. I asked him, &quot;Hey, can we open-source it? And he said, &quot;No, that&apos;s my money. Sorry, I can&apos;t do it.&quot; A few students and I looked into that and saw that adding new languages to PMD is easy or doable. But the problem was the parser. PMD depends on breaking down the file and language into AST nodes, an abstract syntax tree. Writing such a parser was too hard back then because we didn&apos;t know the language.</p><blockquote>Did you know that over 80% of Salesforce Developers believe that contributing to open-source projects like PMD, SFDX CLI, or other Salesforce-related tools significantly enhances their problem-solving skills and career opportunities? This reflects a growing recognition of the importance of open-source in professional development within the Salesforce ecosystem.</blockquote><p>Others had mastered it, but I said we should not do it. In an &apos;under the shower&apos; kind of moment, I thought there must be a parser, and it <strong>must be open-source</strong> in a way where the Eclipse IDE, when opening a class, shows you a tree of methods and everything. I got into contact with Salesforce, and there was a closed-source parser. But we could repurpose it. </p><p>Salesforce was interested and provided documentation. We created a language model for Apex, which could do it. To make it usable, we took the Java rules and ported many of them, which apply to Apex from Java.</p><p>I was invited to Dreamforce to give a speech. All the IDE providers put PMD in there. From then on, it never stopped being a topic. I never contributed as much code as in 2016. From then on, I tried to convince companies like Gearset to contribute, or I was <a href="https://hutte.io/trails/copado-vs-gearset-vs-hutte/?ref=hutte.io">working for Copado </a>and <a href="https://hutte.io/company-blog/transitioning-to-salesforce-devops/">Manuel Moya,</a> who works for you. We also contributed a bigger part to PMD. When you asked me what I did in the last few years, there were two topics. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F6E0;&#xFE0F;</div><div class="kg-callout-text">One was working together with Salesforce since it made PMD an integral part of their own tooling. The other one, I would say, was getting PMD on par with all the commercial tools. Those commercial tools always said PMD is not as good because it&apos;s only for <strong>Apex and Visualforce.</strong></div></div><p>The other topic was it only works like static. It doesn&apos;t understand the runtime behavior across files. This part was developed by Salesforce. It&apos;s called the Graph Engine. It&apos;s not part of PMD, but years ago, we looked into making that part of PMD. And it just didn&apos;t work out. I didn&apos;t do a lot of that, but I was involved. The other part was making it possible to scan XML, the more prominent part of a local platform. This took little work because PMD is already able to do that. Conference talks and articles were needed to tell people they can do it and how to do it, but code-wise in PMD.</p><h2 id="what-is-the-current-adoption-of-metadata-types-where-people-use-pmd-rules-to-enforce-a-certain-quality-is-there-even-a-limit-could-everyone-come-up-with-new-rules-to-enforce-whatever-quality-standards-on-any-type-of-metadata">What is the current adoption of metadata types where people use PMD rules to enforce a certain quality? Is there even a limit? Could everyone come up with new rules to enforce whatever quality standards on any type of metadata?</h2><p>Yes. I think in the <a href="https://hutte.io/company-blog/simplify-salesforce-project-setup-with-template-repository-and-apex-collection-frameworks/"><strong>Hutte template repository,</strong></a> there are even samples of that.</p><h2 id="absolutely-yes-a-few-metadata-types-are-covered-like-common-use-cases-we-hear-from-people-we-talk-with-one-that-always-raises-an-eyebrow-is-the-ability-to-for-example-have-a-simple-check-to-only-accept-or-reject-the-pull-request-where-a-field-is-added-without-a-description-help-text-that-is-part-of-many-manual-review-processes-in-teams-the-idea-to-automate-this-is-new-to-many-i-think-it-can-be-a-huge-win-for-a-team-to-adopt-such-a-relatively-simple-rule">Absolutely, yes. A few metadata types are covered, like common use cases we hear from people we talk with. One that always raises an eyebrow is the ability to, for example, have a simple check to only accept or reject the pull request where a field is added without a description help text. That is part of many manual review processes in teams. The idea to automate this is new to many. I think it can be a huge win for a team to adopt such a relatively simple rule</h2><p>You can do it everywhere because everything that is not Apex is XML. It&apos;s always metadata XML with Apex PMD rules coded in Java. The more extensive power is creating custom rules in XPath and having them as an XPath snippet in your rule set. That not only works for Apex but for all XML. The most<strong> complicated one is </strong><a href="https://hutte.io/trails/salesforce-flow/?ref=hutte.io"><strong>Flow.</strong> </a>But in my example, I have a repository. It&apos;s called <a href="https://github.com/rsoesemann/unhappy-soup?ref=hutte.io">Unhappy Soup. </a>There is an example which detects many cases of DML in a Flow loop. It&apos;s not as good as if we would parse it with Java code, but it&apos;s good enough.</p><p>You can use it for everything. People use it for permission sets, profiles, and security settings. The restriction is what people put into version control. Salesforce is trying to get more and more states of an org into metadata. When you get that out, you can parse and test it. The imagination is the limit. I was at a conference in London called London&apos;s Calling, where Andy Utkan talked about Flow-based practices. I told him, &quot;Hey, we should implement them as PMD rules.&quot; The question is: Do people who make a lot of Flow get them into version control? That&apos;s a different question.</p><h2 id="thats-the-problem-we-aim-to-solve-%E2%80%93-to-make-it-easy-to-open-the-world-of-git-based-development-to-non-technical-or-low-coder-team-members-did-the-integration-or-adoption-of-pmd-rules-into-what-became-the-salesforce-code-analyzer-change-anything-do-you-think-it-helped-the-adoption-of-pmd-rules-in-the-broader-salesforce-ecosystem">That&apos;s the problem we aim to solve &#x2013; to make it easy to open the world of <a href="https://hutte.io/whitepapers/git-based-development/?ref=hutte.io">Git-based development</a> to non-technical or low-coder team members. Did the integration or adoption of PMD rules into what became the <a href="https://hutte.io/company-blog/salesforce-code-analyzer-recipe/">Salesforce Code Analyzer</a> change anything? Do you think it helped the adoption of PMD rules in the broader Salesforce ecosystem?</h2><p>Yes, it made me happy because back then, when I was working at this PDO, we struggled with Checkmarx and hated it. I told a colleague, &quot;Maybe we will replace Checkmarx one day.&quot; When I spoke with Salesforce, they didn&apos;t say yes but also didn&apos;t say no. It seems to be expensive for Salesforce under the hood, but they replaced it, and it&apos;s perfect. What&apos;s also great is that Salesforce could have bought one of the commercial vendors, but they decided not to do it and <strong>completed PMD</strong> with missing things, like the Graph Engine, which does dynamic analysis. I think this was a smart move. </p><p>For me, there&apos;s always cognitive dissonance, as most people care about PMD because they care about security. But honestly, I do not care so much about security. Those checks were never my ambition. I wanted my Developers to write simple, clean code. All commercial providers only mostly do this security narrative because it&apos;s easy. There is no deeper aid. But when I come with clean code, a million haters say: &quot;That&apos;s a luxury.&quot; That&apos;s always my ambition. Security is important, especially on Salesforce, but so many people care about this narrative. I don&apos;t want to be in that space. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text">The analyzer is still a tool that checks relevant things for Salesforce to <strong>avoid risking reputation.</strong> But honestly, Salesforce doesn&apos;t care as much about well-crafted code. They tell the story of how everybody can become a millionaire and a Developer. So, I&apos;m happy PMD became so important in the Salesforce space because PMD is also a way to enforce the things that I care about.</div></div><h2 id="not-everyone-might-be-aware-but-checkmarx-was-the-tool-that-you-were-obliged-to-run-when-doing-security-reviews-as-an-isp-to-publish-your-work-on-appexchange">Not everyone might be aware, but Checkmarx was the tool that you were obliged to run when doing security reviews as an ISP to publish your work on AppExchange</h2><p>You don&apos;t need to do it anymore. <strong>You can use PMD.</strong></p><h2 id="i-think-it-is-important-that-this-tooling-is-not-limited-to-this-use-case-of-isvs-who-sprint-towards-reaching-security-reviews-however-every-salesforce-or-small-team-with-two-developers-might-benefit-from-going-git-based-im-tapping-this-potential-by-having-automated-code-reviews-or-assisted-code-reviews-or-in-a-flow-that-might-fall-back-on-them-later-as-an-org-scales-to-enforce-good-practices-like-certain-quality-challenge-standards">I think it is important that this tooling is not limited to this use case of ISVs who sprint towards reaching security reviews. However, every Salesforce or small team with two Developers might benefit from going Git-based. I&apos;m tapping this potential by having automated code reviews or assisted code reviews, or in a Flow that might fall back on them later as an org scales to enforce good practices like certain quality challenge standards</h2><p>I use it in my private open-source repository. When you check my GitHub, I have a rule set in every root node and in <a href="https://aquivalabs.com/?ref=hutte.io">Aquiva</a>, the company I work for. We have an internal PMD ruleset pushed into every new repository. We do it for the open-source projects we do. It&apos;s perfect. It&apos;s not tied to an IDE. All the rules are in a file where you can check and see how they evolve. Some rules are too opinionated, and then you move them out, and it&apos;s perfect. I love it. It works everywhere with all the tools and<strong> in the IDE.</strong> It&apos;s simple and doesn&apos;t cost a lot.</p><p>I would say the biggest hurdle that I&apos;ve heard in the last nearly ten years is what people do when they first run PMD and have thousands of issues. That gets complicated.</p><h2 id="do-you-have-any-advice-would-you-advise-starting-with-a-very-loose-or-small-ruleset-and-then-gradually-building-it-out-or-is-there-any-adoption-lets-think-of-a-team-that-owns-a-salesforce-org-they-work-git-based-and-are-now-automating-quality-checks-what-would-you-advise-as-a-strategy">Do you have any advice? Would you advise starting with a very loose or small ruleset and then gradually building it out? Or is there any adoption? Let&apos;s think of a team that owns a Salesforce org. They work Git-based and are now automating quality checks. What would you advise as a strategy?</h2><p>The general narrative is to often reduce the rules to not see it. Don&apos;t feel obliged to do anything but learn. I would say running PMD and seeing thousands of issues just mandates that you <strong>learn your development team. </strong>They should understand what you know, and there can be false positives.</p><p>In most cases, there are thousands of instances of horrible naming conventions.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><strong>Here are five short tips for Salesforce Developers to improve their naming conventions:</strong></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Use descriptive names</strong>: Make names clear and descriptive, like &quot;AccountTriggerHandler&quot; instead of &quot;ATH.&quot;</em></em></em></li><li><em><em><em><strong>Follow consistent patterns</strong>: Stick to a naming pattern, such as &quot;ObjectName_Action&quot; or &quot;Opportunity_UpdateTrigger.&quot;</em></em></em></li><li><em><em><em><strong>Avoid abbreviations</strong>: Skip unnecessary abbreviations to maintain clarity, like &quot;Case_ClosedDate__c&quot; instead of &quot;CSD__c.&quot;</em></em></em></li><li><em><em><em><strong>Include object type suffixes</strong>: Use suffixes like &quot;_Trigger, _Class&quot; or &quot;_Field&quot; to indicate the component type.</em></em></em></li><li><em><strong>Prefix custom fields</strong>: Start custom fields with a standard prefix like &quot;Custom_&quot; to easily distinguish them from standard fields.</em></li></ol></div></div><p>Many people say, &quot;Let&apos;s ignore that rule,&quot; but why not sit together for an hour in the team and say, &quot;Hey, why do we do such lousy work?&quot; It&apos;s like when you write a letter to your mom, and you mix uppercase and lowercase all the time in German. It&apos;s unprofessional work. That&apos;s my opinion. </p><p>You should first look at<strong> the security issues. </strong>PMD has a severity level that tells you whether it is critical or not. But that&apos;s the part where people think they have to learn and understand too much, but that&apos;s the critical part. Coming into a position where it feels safe to say we will do that later, but we should change something in the way we work now. </p><p>My impression is that people don&apos;t want to do it. It&apos;s always this stress story. &#x201C;I have too much stuff to do. I cannot care about PMD and all the commercial providers. They do it smarter. They have fewer rules.&#x201D; When you pay money, you don&apos;t want to have pain. And that&apos;s the good thing about open-source. This is the pain that makes you learn. Put the pain where the pain belongs.</p><h2 id="i-want-to-touch-upon-one-more-topic-ai-because-you-have-dedicated-a-lot-of-time-to-this-topic-id-like-to-hear-from-you-what-excites-you-about-ai-in-the-context-of-salesforce-without-necessarily-limiting-it-to-the-new-products-that-salesforce-has-launched-maybe-you-can-just-share-a-bit-from-maybe-two-years-back-in-your-journey">I want to touch upon one more topic, AI, because you have dedicated a lot of time to this topic. I&apos;d like to hear from you what excites you about AI in the context of Salesforce without necessarily limiting it to the new products that Salesforce has launched. Maybe you can just share a bit from maybe two years back in your journey</h2><p>As an intro note, my dad was also in IT and wrote his doctorate thesis about neural networks on those big computers in the seventies. I always heard about AI, but I thought it was too complicated for a guy like me who was not good at math. So, I feared this a little bit, and my dad always told me to go into that because <strong>that&apos;s the future.</strong> However, I could ignore it as it never appeared in the Salesforce space. </p><p>But two years ago, when GPT-4 came out, and the world was on fire and in the crazy zone, I took the opportunity to look deeper. I was lucky that at Aquiva, our founders took this very seriously and said, &quot;Let&apos;s not just join the hype but look into how we can make this useful for our work and our customers&apos; work.&quot; </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F916;</div><div class="kg-callout-text">We founded an AI task force where we had time and money to do experiments and build some apps. You have probably heard my talks, and that helped with two things. It got me and all of us into a realistic mindset. Generative AI won&apos;t destroy society or kill our jobs. It&apos;s less powerful than I thought in the beginning, but it&apos;s too good to ignore. I honestly believe that the use cases the world has found are of little use in creating more shabby email texts or summarizing terrible spam emails. The same goes for code. I still believe a programmer should write every line. If the programmer <strong>sped up their work</strong> by using AI to inform themselves to think about designs, that&apos;s good.&#xA0;</div></div><p>But every little character should be written by a person. That&apos;s my belief. This is also true for blog texts, books, and everything in between. The world should not see anything which is generated. It must go through a human who can act. That&apos;s my opinion. So, I like it. I especially like this combination of old-school code, deterministic Apex code, and AI.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><strong>Here are five tips for combining old-school Salesforce code, deterministic Apex, and AI:</strong></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Leverage legacy code</strong>: Identify reusable patterns in your old-school Salesforce code and wrap them in deterministic Apex methods for consistency.</em></em></em></li><li><em><em><em><strong>Integrate AI models</strong>: Use AI for data-driven decisions within your Apex code, such as predicting field values or automating workflow steps based on historical data.</em></em></em></li><li><em><em><em><strong>Ensure determinism</strong>: Keep AI outputs stable in your Apex by caching results or setting deterministic thresholds to avoid variability in critical processes.</em></em></em></li><li><em><em><em><strong>Use AI for refactoring</strong>: Employ AI tools to analyze old Salesforce code and suggest improvements or optimizations that align with modern best practices.</em></em></em></li><li><em><strong>Blend automation</strong>: Combine AI-driven triggers with deterministic Apex logic to automate complex decision-making while ensuring predictable outcomes.</em></li></ol></div></div><p>I&apos;m not so thrilled by those email generation things or even rag-finding things in vector databases. They&apos;re interesting, but not so much. There is a little bit of AI and a<strong> little bit of code,</strong> and the AI chooses and parametrizes the right code. That&apos;s cool. So, I love those copilots, and I think they will be a little bit in the future. I&apos;m unsure if you asked that, but I often get asked that. I think it will change the way we build apps. Do you remember those times when all providers said they were API first before building UI for humans? We build an API because then we can connect.</p><p>You don&apos;t care so much about the UI and the use cases. You build mini tools, actions, or skills. There&apos;s a general multipurpose user interface with language or text. The app does what you&apos;d invent. Today, the apps are like a recipe or a restaurant, where there are three meals. But in the future, it will just be a good kitchen with a good cook. You say, &quot;What do we have? We can do everything.&quot; That would be my hope. Less app development and more creativity. That&apos;s also in the space where Salesforce is with low code. More people can come closer to computers and find out what they want.</p><h2 id="do-you-have-any-specific-advice-to-founders-or-tech-leaders-on-how-to-deal-with-gen-ai">Do you have any specific advice to founders or tech leaders on how to deal with gen AI?</h2><p>Yes, I do. But first, I want to say Aqiva is not only a PDO. We&apos;re also a huge SI partner. Many of our partners are Salesforce customers and have a deep interest in how we can use Salesforce AI. Salesforce successfully created fear-based marketing by telling everyone that you can only trust them with the Trust Layer. I think that&apos;s a good story, but it&apos;s a little bit overdone. In the past, we also sent Salesforce data over secure internet protocols to APIs. Why not do it now? The benefit of doing it with Salesforce is significant because<strong> everything is declarative</strong> and per default in a safe way. But as we all know, it also comes with huge price tags.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F9BE;</div><div class="kg-callout-text">I also believe it will take a while until all those things are super capable, stable, or packageable. We&apos;re just not there yet. It would be wrong if people just wait. They should get started today with doing experiments. I recommend customers either ask us to help them or they do what we did like experimenting with off-platform AI. We have built an open-source app called MyOrgButler, which is a copilot. It is capable and works much better, in my opinion. It uses an open AI API and is secure. But it can do the same things.&#xA0;</div></div><p>As a partner, you don&apos;t lose much because you are still coding your actions in Apex and Flow as you would for Einstein Copilot. The only thing which sits in OpenAI is this moderation and instructions, and the definition of which tools it can call. But you could build and package such a copilot today with <strong>90% of the code </strong>in Salesforce and have them unchanged in the future. When Salesforce Copilot comes out, you move this little part from OpenAI into Salesforce. I recommend everyone to act and experiment now. Make the things in a way where you can later change the technology.</p><h2 id="is-there-any-app-you-have-encountered-on-appexchange-that-excites-you-in-the-direction-you-mentioned-%E2%80%93-not-providing-a-menu-with-three-items-but-having-a-more-open-ended-interface-for-users-to-achieve-all-kinds-of-stuff-through-an-app">Is there any app you have encountered on AppExchange that excites you in the direction you mentioned &#x2013; not providing a menu with three items but having a more open-ended interface for users to achieve all kinds of stuff through an app?</h2><p>Yes, absolutely. I should not do marketing for other companies, but this new ISV wins all the demo jams, OneSight. You have probably heard about that. They have a chat with your org, and you say, &quot;Can you do that for me?&quot; And it just does it. That&apos;s cool because it basically makes doing declarative <strong>Salesforce even simpler. </strong>Just imagine bringing Developer thinking into the world of Admins so that they can do their work in a professional way. But think about if they don&apos;t even have to cope with all those metadata artifacts. They just speak to an AI. Instead of turning Admins into Developers by teaching them DevOps, you skip this whole part and have the AI build it in a conversation.</p><h2 id="i-fully-agree-as-long-as-the-ai-respects-good-practices-and-version-control">I fully agree as long as the AI respects good practices and version control</h2><p>That fear of hallucination ended quickly for us. We saw that the more you <strong>give the AI instructions, </strong>what Salesforce calls &#x201C;grounding,&#x201D; the less this hallucination is. If you use those instructions, it works. For example, I always make a demo, then go into the CRM and ask this in the chat window: &quot;I&apos;m a sales guy. What should I work on first today?&quot; And sometimes, it just translates that into a socket query looking for the earliest closing opportunity. However, in some talks, it opens a list view where that data is also shown. Sometimes I thought: &quot;My demo doesn&apos;t work.&quot; But then I thought: &quot;Wow, it&apos;s creative.&quot; Sometimes, these hallucinations also lead to new ideas of doing things.</p><h2 id="do-you-have-any-vision-of-bringing-the-two-topics-we-talked-about-together-leveraging-large-language-models-in-the-world-of-code-analysis-pmd">Do you have any vision of bringing the two topics we talked about together? Leveraging large language models in the world of code analysis PMD?</h2><p>It shifted. Initially, I saw that running OpenAI and ChatGPT on code presented more issues than PMD. I was thinking that maybe this would replace such clunky, old-fashioned tools. I talked to Daniel Ballinger, who runs Apex at Salesforce, and they gave me a different twist on that. They know that more code will be generated in the future by AI. There will be even more risk that something doesn&apos;t work. They considered PMD <strong>a tool to safeguard this </strong>because only deterministic code, only old-fashioned, clunky analysis, can ensure this. So, PMD may become even more important as a fast and static way to check if code generated by Developers is feasible.</p><h2 id="so-it-will-become-part-of-a-trust-layer">So, it will become part of a Trust Layer</h2><p>Maybe that. It&apos;s always the thing you do that is very complicated, and the <strong>check is quite easy. </strong>That&apos;s my hope that I can still run this topic for some years.</p><h2 id="i-think-what-could-also-be-interesting-is-making-the-results-more-actionable-for-a-team-for-example-you-mentioned-the-fear-of-having-a-lot-of-failures-on-your-ci-once-you-put-your-pmd-quality-rules-in-place-but-to-break-that-down-to-a-team-for-example-into-a-prioritized-action-is-something-where-i-think-a-large-language-model-might-be-helpful">I think what could also be interesting is making the results more actionable for a team, for example. You mentioned the fear of having a lot of failures on your CI once you put your PMD quality rules in place, but to break that down to a team, for example, into a prioritized action, is something where I think a large language model might be helpful</h2><p>Absolutely. There should be enough information on the Internet to help people understand, combine, and <strong>make recommendations</strong> based on this list of a thousand things. The LLM could actually come up with that. That should not become part of PMD. Let&apos;s find a provider who makes some bucks by putting a small LLM wrapper on top of PMD to do that. You could do it at Hutte. I would love it.</p><h2 id="evolve-your-devops">Evolve your DevOps</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><p>Who would you like our next expert to be? Let us know on<strong><a href="https://www.linkedin.com/company/28909971/admin/dashboard/?ref=hutte.io"> our LinkedIn page!</a></strong></p>]]></content:encoded></item><item><title><![CDATA[How to practice continuous learning and adaptability with Salesforce open-source (Trails Podcast episode #17 with Shane McLaughlin)]]></title><description><![CDATA[Join us in this episode as we delve into Shane McLaughlin’s perspective as a Salesforce Platform Architect. We talk about practicing continuous learning and adaptability with Salesforce open-source. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/continuous-learning-and-adaptability-with-salesforce-open-source/</link><guid isPermaLink="false">66ba0127d7797da91f0765c7</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Mon, 12 Aug 2024 15:16:00 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/08/Shane-McLaughlin.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article highlights</header>
    <ul>
            <li>Shane transitioned from <b>managing e-commerce</b> to becoming a Salesforce Developer after realizing the potential of the platform during a challenging project.</li>
            <li>Shane played a key role in breaking down the Salesforce CLI into <b>open-source plugins,</b> improving accessibility and collaboration across the Salesforce ecosystem.</li>
            <li>Shane contributed to the evolution of Salesforce DevOps by leveraging tools like  <b>Scratch Orgs</b> and promoting a fast-paced release cycle to enhance Developer efficiency.</li>
    </ul>
</div><!--kg-card-end: html--><h2 id="episode-17-shane-mclaughlin-salesforce-platform-architect">Episode 17: <a href="https://www.linkedin.com/in/mclaughlinshane/?ref=hutte.io">Shane McLaughlin,</a> Salesforce Platform Architect</h2><img src="https://hutte.io/company-blog/content/images/2024/08/Shane-McLaughlin.png" alt="How to practice continuous learning and adaptability with Salesforce open-source (Trails Podcast episode #17 with Shane McLaughlin)"><p></p><h2 id="watch-me-%F0%9F%8E%AC">Watch me &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/0_47mqd-6tQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="How to practice continuous learning with Salesforce open-source with  Shane McLaughlin"></iframe></figure><h2 id="listen-to-me%F0%9F%8E%99%EF%B8%8F">Listen to me&#x1F399;&#xFE0F;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: How to practice continuous learning and adaptability with open-source (Trails Podcast episode #17 with Shane McLaughlin)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/66IlX0gb94sgly54rLv8ff?si=a0a9ba3e9cb445b6&amp;utm_source=oembed"></iframe></figure><h2 id="give-us-a-short-overview-of-your-developer-career">Give us a short overview of your Developer career</h2><p>I had a finance MBA and worked for a big utility company in Houston. They put me in charge of this little e-commerce business, and we would use Salesforce. That was the first time I&apos;d seen or touched it for our customer service. If you called us at the call center or emailed us, we&apos;d be doing <strong>typical Service Cloud things </strong>with it. It turns out the people we had hired to build the rest of the e-commerce business failed spectacularly at it.</p><p>I built it on Salesforce with the help of a couple of people working for me because we had no more budget left to do anything else. That was the awakening: &quot;I can do a lot more good for a company as a Salesforce Developer than I really could managing other people.&quot; The company said, &quot;I didn&apos;t know you could do that with Salesforce.&quot; So, that spun off a few years of building other business processes. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text">At that point, we built so much weird stuff that <strong>people hadn&apos;t seen </strong>that the Salesforce people were taking notice of it. At a time when that little business was not as interesting to the company, I decided to offer my services to Salesforce. They hired me there ten years ago.&#xA0;</div></div><p>I started off in sales engineering and then moved to platform product marketing, doing platform demos. That&apos;s how I started messing with the CLI and plugins to serve my demo needs and make it easier to distribute demo orgs. That&apos;s how I also got to know the CLI team and the product.</p><h2 id="fast-forward-to-2017-when-sfdx-and-the-salesforce-cli-were-publicly-announced-that-brought-a-lot-of-fresh-air-to-salesforce-devops-and-how-the-salesforce-developer-experience-is-shaped-do-you-have-any-specific-memories-of-that-time-i-assume-you-were-on-that-team-that-launched-sfdx-back-then">Fast-forward to 2017, when SFDX and the Salesforce CLI were publicly announced. That brought a lot of fresh air to Salesforce DevOps and how the Salesforce Developer experience is shaped. Do you have any specific memories of that time? I assume you were on that team that launched SFDX back then</h2><p>No, not at all. When that first came out, I just started moving to product marketing. I was aware of it in the sense that many people were working with it. We would need to be able to talk about it, do demos, use it in demos, etc. That was my introduction to it. As I was looking at it, at the same time, I had a giant spreadsheet that I inherited when I took that job. These are the orgs at these different booths that people might need to log into. Whenever you do one of these, you must spin up and create new orgs and put the usernames in there.</p><p>As we were looking at SFDX, it is useful not to demo it but to <strong>build demos with it.</strong> You should be able to push a button and have an org. When you&apos;re done with it, you should be able to throw it away because Scratch Orgs came first with SFDX. You should be able to throw it away and not have to do all the reset steps again. I was initially interested in using it to get rid of that spreadsheet. It was a dream being able to spin up Scratch Orgs and hand them out like candy.</p><h2 id="another-big-milestone-i-remember-from-sfdx-was-the-announcement-that-the-command-line-became-open-source-do-you-recall-when-that-was">Another big milestone I remember from SFDX was the announcement that the command line became open-source. Do you recall when that was?</h2><p>That was more of a gradual process. Some of that happened while I was on the team. Initially, there was just one giant monolith of the CLI, and then users could make plugins. We would copy all that to an open-source repo three times a year after a major Salesforce release came out. But it wasn&apos;t open-source in the way that it should have been. It was more of a static copy of a point in time. </p><p>To take that apart, we broke some of the stuff into libraries. In doing so, <a href="https://hutte.io/company-blog/hutte-vs-code-extension/"><strong>VS Code,</strong></a><strong> </strong>the VS Code extension for Salesforce and the DevOps Center, and anybody else who wanted to build things could consume those libraries. Those all went out first open-sourced. We started breaking that giant CLI into plugins so you&apos;d have the org commands.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F50C;</div><div class="kg-callout-text">We would open-source those as we gradually moved them out. That took about a year and a half. We don&apos;t own all the plugins on the CLI team. There&apos;s a packaging team responsible for the packaging plugins. At a point in time, we had to say, &quot;Okay, yours are moving out and going open-source.&#x201D; So, that happened gradually, but it was nice.&#xA0;</div></div><p>We got higher-quality contributions and bug reports. People would say, &quot;I changed this and fixed the bug.&quot; We said: &quot;Thanks, 90% of the work is already done. We&apos;ll check it, write some tests, and publish it. <strong>Open-source is exciting</strong> for us. We use a lot of open-source and have contributed to other open-source libraries. There have been a few things that we&apos;ve found, or sometimes the users have found, that don&apos;t quite work right, which we can contribute back. It&apos;s nice working in the open. I like the toolset a lot.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Tips for contributing to Salesforce&apos;s open-source projects:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Identify gaps:</strong> Look for areas within the Salesforce ecosystem that could benefit from additional features or improvements.</em></em></em></li><li><em><em><em><strong>Collaborate with the community:</strong> Engage with other Developers through GitHub discussions, </em><a href="https://github.com/hutte-recipes?ref=hutte.io"><em>GitHub recipes</em></a><em>, and open-source forums.</em></em></em></li><li><em><em><em><strong>Follow best practices:</strong> Adhere to coding standards and best practices to ensure your contributions are high-quality and easily integrable.</em></em></em></li><li><em><em><em><strong>Document your work:</strong> Provide clear documentation for your contributions to help others understand and utilize your additions effectively.</em></em></em></li><li><em><em><em><strong>Test thoroughly:</strong> Ensure your contributions are well-tested across different environments to maintain the reliability and stability of the project.</em></em></em></li></ol></div></div><h2 id="would-you-consider-your-team-pioneers-for-the-open-source-idea-inside-salesforce">Would you consider your team pioneers for the open-source idea inside Salesforce?</h2><p>Several teams have contributed open-source work. You see it a lot with developer relations. That was one of the first places where you needed to make it open-source so you could share it with everybody. They probably pioneered getting that stuff through security, using GitHub Actions and pull request processes and all that stuff. I would say we&apos;re probably one of the product teams. However, many teams are doing open-source work, especially some <strong>off the core platform. </strong></p><p>Salesforce.org &#x2013; the part of the company that builds tools for nonprofits &#x2013; has also been doing a lot of open-source work for a very long time.</p><blockquote>Did you know that nearly 40% of Salesforce Developers contribute to open-source projects, and approximately 45% of Salesforce implementations incorporate at least one open-source solution?</blockquote><h2 id="lightning-web-components-lwc-would-be-another-example-right"><a href="https://hutte.io/trails/salesforce-lightning-web-components/?ref=hutte.io">Lightning Web Components</a> (LWC) would be another example, right?</h2><p>That may have been open-source before the CLI was finished being open-source. You may have seen it, but we&apos;ve mostly moved all feature <strong>requests to GitHub discussions. </strong>Once GitHub discussions came out, we decided to adopt that to help prioritize not just bugs but also feature work.</p><h2 id="you-are-the-author-and-maintainer-of-the-awesome-sfdx-plugins-i-think-that-thats-how-many-people-in-the-ecosystem-probably-know-you-and-your-github-for-those-who-dont-know-i-would-say-its-a-curated-list-of-extensions-to-the-cli-we-also-touched-upon-it-briefly-with-my-last-podcast-guest-matthias-rolke-who-has-something-similar-now-could-you-share-what-inspired-you-initially-and-do-you-have-any-specific-plans-for-that-project">You are the author and maintainer of the awesome SFDX plugins. I think that that&apos;s how many people in the ecosystem probably know you and your GitHub. For those who don&apos;t know, I would say it&apos;s a curated list of extensions to the CLI. We also touched upon it briefly with my last podcast guest, <a href="https://hutte.io/company-blog/why-salesforce-devops-consultants-should-be-near-user-problems/">Matthias Rolke, </a>who has something similar now. Could you share what inspired you initially, and do you have any specific plans for that project?</h2><p>What inspired me initially was a lot of the ecosystem had an <a href="https://github.com/uhub/awesome-css?ref=hutte.io">inventory CSS. </a>I&apos;ve used those in a few places where finding a list of stuff is ideal. As new things came out, people put it on the list. I had some plugins from other people I was using then. I knew there would probably be a good chunk of them, and you&apos;ll see that was done on <strong>GitHub as myself </strong>and not as Salesforce. Salesforce is not recommending them.</p><p>Additionally, a guy on the internet gave us a list of things we&apos;ve added since then. We&apos;ve added the plugins to the CLI, which will show you a curated list in your CLI. It&apos;s nice to see the relative popularity and health of plugins.</p><h2 id="i-think-i-saw-yours-showing-up-first-if-im-not-mistaken">I think I saw yours showing up first, if I&apos;m not mistaken</h2><p>There may be a lot of older usage of that. It is primarily unmaintained. Some of those commands have drifted into the actual CLI. Some of them are not as useful now. Some were very specific to stuff I was building for product marketing. You&apos;ll see commands like, &quot;I need to set my user profile photo or activate a Lightning branding set.&quot; You might not care about these things if you&apos;re interested in CI testing, but things that you might care a lot about if you&apos;re <strong>doing workshops and demos</strong> that need to be properly branded with your &#x2018;fake company&#x2019; for your demo.</p><h2 id="id-like-to-touch-upon-telemetry-i-assume-your-team-has-pretty-unique-insights-into-the-clis-actual-usage-can-you-share-any-interesting-weird-or-funny-observations-about-the-usage">I&apos;d like to touch upon telemetry. I assume your team has pretty unique insights into the CLI&apos;s actual usage. Can you share any interesting, weird, or funny observations about the usage?</h2><p>We collect telemetry. We don&apos;t know who you are, and we have to scrub all the identifiable information out. We like to <strong>track what commands </strong>and flags are being used, but we don&apos;t get the values. We get which flags you&apos;re using. But we&apos;re also interested in the OS and version of the CLI you are running. We also track exceptions. If you get exit errors, we&apos;d like to see those and learn what they are. We may need to search in the code. </p><p>Regarding exciting things, I&apos;ve been interested in Salesforce&apos;s transition. 70% of daily executions are now on a new &apos;SFv2&apos; CLI, and about 30% of that are on some version of the old &apos;SFDXv7.&apos; You&apos;ll see most of that usage is on the very last SFDX that we published. You can write an update, but there&apos;s nothing to update to. It&apos;s the end of the line there. </p><p>If you want to talk about weird stuff, if you look at the top twenty versions, number 15 is really old. It&apos;s like &apos;7.123,&apos; which is almost three years old at this point. We don&apos;t have a reason why there might be a clump of usage on that really old CLI. We&apos;ve also been interested in some of the<strong> command migration </strong>for the new project deployment commands. </p><p>It is a set of things and people on the current or recent CLI. About 88% are on the new deploy commands. Only a few people have the current CLI but are still typing for things like &#x201C;Metadata API deployment.&#x201D; However, getting people to change their scripts and switch their habits may be harder, but they seem to be doing well.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Tips for maximizing Salesforce CLI efficiency:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Leverage plugins:</strong> Utilize third-party plugins to extend the CLI&apos;s functionality. The &#x201C;Discover&#x201D; command can help you find popular and well-maintained plugins.</em></em></em></li><li><em><em><em><strong>Stay updated:</strong> Regularly update your CLI to benefit from the latest features and security patches. </em><a href="https://hutte.io/trails/salesforce-release-updates/?ref=hutte.io"><em>Salesforce releases updates weekly.</em></a></em></em></li><li><em><em><em><strong>Use Scratch Orgs:</strong> Take advantage of Scratch Orgs for a streamlined development and testing environment that can be easily created and disposed of.</em></em></em></li><li><em><em><em><strong>Automate tasks:</strong> Implement scripts for repetitive tasks to save time and reduce errors. Use the new deploy commands to simplify deployment processes</em></em>.</em></li><li><em><strong>Monitor telemetry:</strong> Pay attention to telemetry data to understand common errors and improve your development practices.</em></li></ol></div></div><p>Some of the stuff has just died. For example, there&apos;s an old command, do you know &quot;force:source:status?&quot;</p><h2 id="i-remember-running-it-doesnt-it-give-you-the-overview-of-all-the-connections-one-has-or-am-i-confusing-it">I remember running it. Doesn&apos;t it give you the overview of all the connections one has? Or am I confusing it?</h2><p>That might be the org list. But no, this one tells you what&apos;s changed in the org and locally and what might be in conflict. Before, you did a pull or a push, and you would run this command to see what would go in which direction. People have stopped using that command. I think it&apos;s like<strong> less than 2%. </strong>They&apos;re using the new deploy preview or retrieve preview commands.</p><h2 id="there-are-people-who-are-not-publishing-their-plugins-and-keeping-them-for-themselves-how-many-are-on-your-list-in-your-directory-do-you-know">There are people who are not publishing their plugins and keeping them for themselves. How many are on your list in your directory? Do you know?</h2><p>I don&apos;t think we have that many on our public list. We had 295 different plugins that ran in the last seven days. These are all different plugins by different authors. <strong>Over 75%</strong> of those are not from us. About 230 are third-party plugins that someone&apos;s created. You&apos;ll see a lot of them have one user and a whole bunch of CI usage. This makes you think someone&apos;s done something helpful for their deployment processes or testing. A lot of them have company names. We can see if you name your plugin a company&apos;s name, and we can then have an idea of who that might be. The metrics for plugins have been interesting.</p><h2 id="you-are-probably-one-of-the-fastest-shipping-products-regarding-release-cycles-within-the-salesforce-product-landscape-do-you-still-maintain-a-release-frequency-of-every-two-weeks">You are probably one of the fastest shipping products regarding release cycles within the Salesforce product landscape. Do you still maintain a release frequency of every two weeks?</h2><p>We release every week. I&apos;ll explain how it works. Wednesday is our release day, and we have a nightly release that goes out. It&apos;ll be on the nightly channel if you ever want to play with what we merged the day before. Once a week on Wednesday,<strong> we promote nightly</strong> to become the release candidate. That set of changes will stay as a release candidate for a week. Users like to test the release candidate against their deployment pipeline. If anything is going to break, they tell us, and we can fix and patch it before it goes out. We appreciate that so much. That release candidate then becomes the official release the following Wednesday. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F512;</div><div class="kg-callout-text">It&apos;s interesting because &#x2013; at least in the JavaScript world &#x2013; there&apos;s a lot of stuff in the dependency stack with other packages and their dependencies. You&apos;ll often see vulnerability updates. Someone has a bug or a security issue, and they&apos;ll put out a patch release. We then want to pick that up quickly and get it into users&#x2019; hands.&#xA0;</div></div><p>We must patch frequently, even if we aren&apos;t fixing and releasing new features. However, you&apos;ll see new metadata types for Salesforce in the next major release. We want to get those in so people may <strong>start testing on preview Sandboxes</strong> and use those new features. As teams finish their metadata, we tend to add those.</p><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Try out</span> Sandbox Pooling!</h6>
			<div class="btn">
				<a href="https://hutte.io/company-blog/sandbox-pooling/">Try it now</a>
			</div>
		</div>
	</div><!--kg-card-end: html--><p>The other thing is that internal Salesforce teams like to test their metadata with the CLI. The CLI needs to know about their metadata, which may ship in the CLI six weeks before it&apos;s available to users. In doing so, internal teams are using the same CLI. We have to do a lot of releases besides those things. The other thing you&apos;ll see a lot is workarounds for server issues, where there&apos;s some new error, and it&apos;s returnable.</p><p>If we&apos;re polling for a deployment, and there are new connection reset errors, we would like to be able to put the workaround for that and ship it. That gives the server-side team more time to figure that out <strong>without impacting customers</strong> using the CLI. However, it may be a little while before they can release their fix, and it may be the next major Salesforce version before they can release their fix. It&apos;s nice to be able to patch those things because they break all of our tests, just like they break your deployments.</p><h2 id="but-there-is-a-lot-of-beauty-to-a-fast-release-cycle">But there is a lot of beauty to a fast release cycle</h2><p>It depends who you ask. If you like a certain version &#x2013; like we saw earlier in the telemetry &#x2013; if you think 7.200 is fantastic and it does everything you need it to do, you can keep using it.</p><h2 id="practice-makes-perfect">Practice makes perfect</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><p>Who would you like our next expert to be? Let us know on<strong><a href="https://www.linkedin.com/company/28909971/admin/dashboard/?ref=hutte.io"> our LinkedIn page!</a></strong></p>]]></content:encoded></item><item><title><![CDATA[New in Hutte: Self-hosted GitLab servers, project improvements, and more]]></title><description><![CDATA[We’ve been busy in July! We’ve improved a lot of small details about projects, upgraded our error message system, and added a lot more ways for you to control your Hutte experience. ]]></description><link>https://hutte.io/company-blog/new-in-hutte-project-improvements/</link><guid isPermaLink="false">66aa36e2d7797da91f0764df</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Mon, 29 Jul 2024 13:13:00 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/Sprint-39-cover.png" medium="image"/><content:encoded><![CDATA[<img src="https://hutte.io/company-blog/content/images/2024/07/Sprint-39-cover.png" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more"><p>You can now &#x201C;pause&#x201D; both users and projects in your organization, link your own self-hosted GitLab server to a project, and more!</p><h2 id="link-a-self-hosted-gitlab-server-to-your-new-project">Link a self-hosted GitLab server to your new project</h2><p>We&#x2019;ve added a new option to the project setup flow in Hutte. You can now link<strong> a self-hosted GitLab server</strong> as your project repository.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/GitLab-Hosted--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1949" height="840" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/GitLab-Hosted--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/GitLab-Hosted--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/GitLab-Hosted--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/GitLab-Hosted--1-.png 1949w" sizes="(min-width: 720px) 720px"></figure><p>All you&#x2019;ll need is your GitLab access token and your GitLab project URL.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/GitlabSelfhosted.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1817" height="760" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/GitlabSelfhosted.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/GitlabSelfhosted.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/GitlabSelfhosted.png 1600w, https://hutte.io/company-blog/content/images/2024/07/GitlabSelfhosted.png 1817w" sizes="(min-width: 720px) 720px"></figure><h2 id="renaming-a-project-on-the-setup-screen">Renaming a project on the setup screen</h2><p>We&#x2019;ve added a small quality-of-life improvement to the &quot;Project&quot; setup screen. You can now rename your Project directly<strong> on the setup screen</strong>, instead of needing to navigate to &quot;Project Settings&quot; first.</p><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/ls288g0u9x.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_ls288g0u9x seo=true videoFoam=true" style="height:100%;position:relative;width:100%">&#xA0;</div></div></div><!--kg-card-end: html--><h2 id="see-the-subscription-status-of-users-you%E2%80%99ve-invited-partner-plan">See the subscription status of users you&#x2019;ve invited (Partner plan)</h2><p>For our users on the Hutte Partner plan, you can now see<strong> the current subscription status</strong> of the customers that you&#x2019;ve invited to Hutte. Under your &quot;Invitations&quot; tab, you&#x2019;ll now see a column called &#x201C;Plan,&#x201D; which will show you which Hutte subscription plan each of your invited customers is currently using. If the customer hasn&#x2019;t accepted your invitation yet, this field will be blank.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Plan-Column--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1943" height="285" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Plan-Column--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Plan-Column--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Plan-Column--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Plan-Column--1-.png 1943w" sizes="(min-width: 720px) 720px"></figure><h2 id="%E2%80%9Cpausing%E2%80%9D-a-user-on-your-hutte-account">&#x201C;Pausing&#x201D; a user on your Hutte account</h2><p>We&#x2019;ve added the capability to <strong>&#x201C;pause&#x201D; users on your team </strong>instead of deleting them when you want to remove a seat. On your &quot;Org Overview&quot; screen, you&#x2019;ll be able see your number of active and inactive users at a glance.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Pause-users--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1943" height="365" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Pause-users--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Pause-users--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Pause-users--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Pause-users--1-.png 1943w" sizes="(min-width: 720px) 720px"></figure><p>You can deactivate (&#x201D;pause&#x201D;) a user from your &quot;Members&quot; tab.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Pause-user-account--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1817" height="513" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Pause-user-account--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Pause-user-account--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Pause-user-account--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Pause-user-account--1-.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>Deactivating a user will <strong>remove that seat </strong>from your billing, and that user won&#x2019;t be able to log in while their account is deactivated. But their account information will still be saved in the system, so if you ever want to reinstate their seat, you can easily re-activate their account with just a click.</p><h2 id="improved-project-usage-control-partner-and-enterprise-plan">Improved project usage control (Partner and Enterprise Plan)</h2><p>For our users on the Partner and Enterprise plans, we&#x2019;ve made a few upgrades to the way that you work with projects. </p><p>You can now <strong>pause (deactivate) a project</strong>. Just navigate to that project&#x2019;s &quot;Project Settings&quot; screen, and you&#x2019;ll see the option to deactivate the project at the bottom. This will free up a project slot in your plan, but the deactivated project will be preserved for as long as you need it, and you can re-activate it again with just a click. This is great for projects that might need to go on hold for an extended period of time, but will be picked back up again later.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Pause-project--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1817" height="693" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Pause-project--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Pause-project--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Pause-project--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Pause-project--1-.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>We&#x2019;ve also added a project counter to the project dashboard, which allows you to see your current number of active and paused projects.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Project-Count--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1949" height="613" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Project-Count--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Project-Count--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Project-Count--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Project-Count--1-.png 1949w" sizes="(min-width: 720px) 720px"></figure><h2 id="choosing-which-commit-sha-to-branch-out-from-when-creating-the-first-commit-on-a-sandbox-feature">Choosing which commit SHA to branch out from when creating the first commit on a Sandbox feature</h2><p>When you&#x2019;re pulling changes on a new Sandbox feature, Hutte automatically creates your feature branch using the branch name you specified when creating the feature; from the creation or last refresh date of the Sandbox you are using.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text">This default method is appropriate in most cases, and you will only need to change it in very specific scenarios, such as when you&#x2019;re working in a longer-living Sandbox and promoting metadata changes back to the Sandbox (although in most cases, you can avoid this by using <a href="https://www.google.com/search?client=safari&amp;rls=en&amp;q=sandbox+pooling+hutte.io&amp;ie=UTF-8&amp;oe=UTF-8&amp;ref=hutte.io">Hutte&#x2019;s Sandbox Pooling</a> feature).</div></div><p>But if you do need this level of granular control for your feature, Hutte now allows you to <strong>specify the exact point </strong>in time in the Git repository that you want to branch out from.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Choose-SHA-branch--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1949" height="1366" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Choose-SHA-branch--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Choose-SHA-branch--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Choose-SHA-branch--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Choose-SHA-branch--1-.png 1949w" sizes="(min-width: 720px) 720px"></figure><h2 id="better-error-messages-after-failed-sandbox-refresh-attempts">Better error messages after failed Sandbox refresh attempts</h2><p>We&#x2019;ve improved the error messages that happen when a Sandbox refresh fails. Previously, we used to show a generic error message when this occurred.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Refresh-error-message--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="2000" height="334" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Refresh-error-message--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Refresh-error-message--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Refresh-error-message--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Refresh-error-message--1-.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Now, Hutte will show <strong>more detailed error messages</strong> when a Sandbox refresh fails, giving you more information on the specific cause. This should make the error-causing problem much faster to correctly identify and fix.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Refresh-error-message-2--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1943" height="306" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Refresh-error-message-2--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Refresh-error-message-2--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Refresh-error-message-2--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Refresh-error-message-2--1-.png 1943w" sizes="(min-width: 720px) 720px"></figure><h2 id="timestamps-for-a-user%E2%80%99s-last-activity">Timestamps for a user&#x2019;s last activity</h2><p>We&#x2019;ve added a small improvement to the &quot;Members&quot; tab. There&#x2019;s a new column labeled &#x201C;Last activity&#x201D; where you can see when each member of your organization<strong> last performed an action</strong> in Hutte.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Last-Activity--1-.png" class="kg-image" alt="New in Hutte: Self-hosted GitLab servers, project improvements, and more" loading="lazy" width="1943" height="451" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Last-Activity--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Last-Activity--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Last-Activity--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Last-Activity--1-.png 1943w" sizes="(min-width: 720px) 720px"></figure><h2 id="fixed-date-fields-bug-for-certain-metadata-types">Fixed date fields bug for certain metadata types</h2><p>There is a Salesforce bug affecting some metadata types that causes the &#x201C;Last modified&#x201D; and &#x201C;Created date&#x201D; fields to show the date as January 1st, 1970. We&#x2019;ve fixed this by having Hutte now detect this bug and hide the date fields when it occurs, to prevent any confusion.</p><h2 id="fixed-visual-design-flaw-on-project-overview-screen">Fixed visual design flaw on &quot;Project Overview&quot; screen</h2><p>We also fixed a minor visual design flaw that could occur on the &quot;Project Overview&quot; screen in the &#x201C;Connected Repository&#x201D; box when the Git Org and default branch names were long.</p><h3 id="explore-these-improvements-firsthand">Explore these improvements firsthand</h3><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x260E;&#xFE0F;</div><div class="kg-callout-text"><strong>Get in touch</strong> with us to discover how we can customize a superior user experience for you!</div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Request</span> a demo!</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[New in Hutte: List view speed and UI improvements]]></title><description><![CDATA[In the past few weeks, we’ve made a lot of improvements to Hutte. List views should load much faster now, and we’ve added a few UI informational elements that will speed up your workflow and give you more information about your projects. And that’s just the start!]]></description><link>https://hutte.io/company-blog/new-in-hutte-list-view-speed/</link><guid isPermaLink="false">669f6ba3d7797da91f0764a0</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Fri, 19 Jul 2024 08:49:00 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/Sprint-38-Cover.png" medium="image"/><content:encoded><![CDATA[<h2 id="sandbox-%E2%80%9Chistory%E2%80%9D-tab-now-shows-which-org-it-was-refreshed-from">Sandbox &#x201C;History&#x201D; tab now shows which Org it was refreshed from</h2><img src="https://hutte.io/company-blog/content/images/2024/07/Sprint-38-Cover.png" alt="New in Hutte: List view speed and UI improvements"><p>We made a small upgrade to the <strong>Sandbox &#x201C;History&#x201D; tab. </strong>Now, next to each refresh, you&#x2019;ll see a sentence that tells you which Org the Sandbox was refreshed from.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Sandbox-History-tab--1-.png" class="kg-image" alt="New in Hutte: List view speed and UI improvements" loading="lazy" width="1969" height="926" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Sandbox-History-tab--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Sandbox-History-tab--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Sandbox-History-tab--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Sandbox-History-tab--1-.png 1969w" sizes="(min-width: 720px) 720px"></figure><h2 id="list-view-speed-improvement">List view speed improvement</h2><p>We&#x2019;ve made substantial improvements to the loading speed of listviews in Scratch Orgs and Sandbox features. This is particularly beneficial for projects with a large volume of completed features and/or terminated Scratch Orgs.</p><h2 id="mitigated-risk-of-overwriting-when-working-in-parallel-on-the-same-metadata">Mitigated risk of overwriting when working in parallel on the same metadata</h2><p>We&#x2019;ve made an improvement to the Sandbox workflow in Hutte that fixes the rare overwriting issue of simultaneous changes, which could arise when two users were working on the same metadata in different Sandboxes in parallel.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text">Previously, larger teams would sometimes encounter an issue where one team&#x2019;s work could be overwritten when two or more different teams were working on new features involving the same metadata, especially when working in<strong> longer-living Developer Sandboxes.</strong> Such overwrites were visible on Git but could easily be missed in reviews.</div></div><p>Now, when you commit for the first time on a new Sandbox feature, the feature branch will branch out from the time that corresponds to the last refresh date of the Sandbox you&#x2019;re using to develop the feature. This should eliminate the issue of overwriting other feature changes by accident.</p><h2 id="minor-updates-to-the-pull-changes-form">Minor updates to the &quot;Pull changes&quot; form</h2><p>We&#x2019;ve upgraded the layout of the &#x201C;Pull changes&#x201D; form in Hutte. They&#x2019;re mostly small things, such as removing the option to select a branch to branch out from after the first commit (since the branch has already been created by the first commit). </p><p>We also fixed some<strong> spacing and styling errors, </strong>and a couple of other things. You won&#x2019;t notice most of these changes, but they&#x2019;ll make using the &#x201C;Pull changes&#x201D; form just a tad smoother going forward.</p><h2 id="hideshow-empty-components-when-pulling-changes">Hide/show empty components when pulling changes</h2><p>We&#x2019;ve added a toggle to the &#x201C;All components&#x201D; tab that appears when you pull changes. It&#x2019;s toggled &#x201C;on&#x201D; by default, and hides all empty component types from the list of components. Toggle it &#x201C;off&#x201D; if you want to see the empty component types in the list.</p><p>We&#x2019;ve also added<strong> a refresh button </strong>as a permanent option inside each individual component section.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/pull-changes-component-toggle--1-.png" class="kg-image" alt="New in Hutte: List view speed and UI improvements" loading="lazy" width="1817" height="778" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/pull-changes-component-toggle--1-.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/pull-changes-component-toggle--1-.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/pull-changes-component-toggle--1-.png 1600w, https://hutte.io/company-blog/content/images/2024/07/pull-changes-component-toggle--1-.png 1817w" sizes="(min-width: 720px) 720px"></figure><h2 id="branch-name-will-no-longer-be-overwritten-when-naming-a-new-feature-or-scratch-org">Branch name will no longer be overwritten when naming a new feature or Scratch Org</h2><p>We made a minor fix to the workflow when making a new feature or Scratch Org in Hutte. Before, when a user would populate a branch name before naming a new feature or Scratch Org, the branch name would be overwritten when the user named the new feature/Scratch Org. This meant the user would have to <strong>go back and specify </strong>the correct branch a second time. We&#x2019;ve now fixed this so that the branch name won&#x2019;t be overwritten when this occurs.</p><h3 id="explore-these-improvements-firsthand">Explore these improvements firsthand</h3><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x260E;&#xFE0F;</div><div class="kg-callout-text"><strong>Get in touch</strong> with us to discover how we can customize a superior user experience for you!</div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Request</span> a demo!</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[New in Hutte: Jira Cloud overhaul, custom success messages, and more]]></title><description><![CDATA[June was a big month for Hutte improvements. We’ve given our Jira Cloud integration a UI and functionality upgrade that will make your Jira/Hutte work a breeze. We’ve also added the ability to create a custom success message for custom buttons, and many more updates that you’ll love.]]></description><link>https://hutte.io/company-blog/new-in-hutte-jira-cloud/</link><guid isPermaLink="false">669543aad7797da91f07640a</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Mon, 15 Jul 2024 16:52:02 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/Sprint-37-cover.png" medium="image"/><content:encoded><![CDATA[<h2 id="jira-cloud-integration-overhaul-and-new-functionality">Jira Cloud integration overhaul and new functionality</h2><ul><li>Working between Jira and Hutte is now easier than ever. Our Jira Cloud integration now works for<strong> Sandbox features and Scratch </strong>Orgs alike.</li><li>We&#x2019;ve added a few new features, such as the ability to &#x201C;<strong>lock in&#x201D; a default </strong>Org and the main active features related to the work item.</li><li>We&#x2019;ve added the ability to <strong>create a new feature </strong>in Hutte directly from the &#x201C;Issue View&#x201D; in Jira. This will streamline your workflow and save you some valuable time!</li></ul><img src="https://hutte.io/company-blog/content/images/2024/07/Sprint-37-cover.png" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more"><p></p><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/vgm6pyzxke.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_vgm6pyzxke seo=true videoFoam=true" style="height:100%;position:relative;width:100%">&#xA0;</div></div></div><!--kg-card-end: html--><p>When you create a new Hutte feature from Jira, the name will be pre-populated with a combination of &#x201C;Issue <strong>Reference&#x201D; and &#x201C;Issue Title&#x201D;</strong> from the Jira project. Using this default name means that when you later create a pull request for the feature, the issue reference will be continuously passed through, and can be referenced and used by an integration between your Git host and Jira, such as automatically completing your issue when the pull request is merged.</p><h2 id="custom-success-messages-for-custom-buttons">Custom success messages for custom buttons</h2><p>You can now add a custom success message to a custom button you&#x2019;ve created in your Hutte.yml. The <strong>property is called &quot;success_message.&quot; </strong>The text is fully customizable, allowing you to include text formatting options and hyperlinks.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Custom-success-message_.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1943" height="428" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Custom-success-message_.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Custom-success-message_.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Custom-success-message_.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Custom-success-message_.png 1943w" sizes="(min-width: 720px) 720px"></figure><p>You can find and configure your Hutte.yml under &#x201C;Project Settings&#x201D;.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Hutte.yml-1.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1949" height="725" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Hutte.yml-1.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Hutte.yml-1.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Hutte.yml-1.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Hutte.yml-1.png 1949w" sizes="(min-width: 720px) 720px"></figure><h2 id="setting-a-base-branch-for-sandbox-features">Setting a &quot;base branch&quot; for Sandbox features</h2><p>We&#x2019;ve introduced the option to set a &#x201C;base branch&#x201D; for Sandbox features. When you pull changes on a Sandbox feature, you&#x2019;ll now see a <strong>new &#x201C;From Git branch&#x201D; </strong>field in the commit information section.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text">Pulling changes on a Sandbox feature used to automatically branch the feature off from your project&#x2019;s main Git branch. Now, you can specify the branch from which you want to originate your feature changes before you commit.</div></div><p>By default, this will be set to your project&#x2019;s main Git branch. But you can easily <strong>select a different branch</strong> from the dropdown menu.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Change-git-branch_.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1982" height="1123" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Change-git-branch_.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Change-git-branch_.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Change-git-branch_.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Change-git-branch_.png 1982w" sizes="(min-width: 720px) 720px"></figure><h2 id="show-pool-org-status-on-take-from-pool%E2%80%9D-dialogue">Show Pool Org status on &quot;Take from Pool&#x201D; dialogue</h2><p>We&#x2019;ve added a small quality-of-life update to Scratch Org creation. When you&#x2019;re creating a new Scratch Org via the &#x201C;Take from Pool&#x201D; option, you can now<strong> see the current status </strong>of the default Pool Org without needing to expand the drop-down menu. Active Scratch Orgs in your pool will now have a green check mark next to them and say &#x201C;Active&#x201D; at the end of the name field.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Pool-Org-status_.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1982" height="1151" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Pool-Org-status_.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Pool-Org-status_.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Pool-Org-status_.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Pool-Org-status_.png 1982w" sizes="(min-width: 720px) 720px"></figure><h2 id="show-project-data-on-project-dashboard">Show project data on project dashboard</h2><p>We&#x2019;ve added more information to the project cards in your project dashboard. For each project, you can now see the number of members in the project in the third line. The fourth line now shows you either the number of<strong> active Scratch Orgs</strong> in the project (for Scratch Org projects), or the number of active and completed features in the project (for Sandbox projects).</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Project-card-Sandbox_.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1940" height="1151" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Project-card-Sandbox_.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Project-card-Sandbox_.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Project-card-Sandbox_.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Project-card-Sandbox_.png 1940w" sizes="(min-width: 720px) 720px"></figure><h2 id="speed-improvements-to-%E2%80%9Call-metadata-browser%E2%80%9D">Speed improvements to &#x201C;All Metadata Browser&#x201D;</h2><p>We&#x2019;ve made some improvements to the way <strong>Hutte fetches metadata</strong> that should speed up the process drastically, especially when retrieving Apex Classes.</p><h2 id="sandbox-pool-%E2%80%9Cno-refreshes-between%E2%80%9D-bug">Sandbox Pool: &#x201C;No refreshes between&#x201D; bug</h2><p>We fixed a rare edge-case bug that was causing Sandbox refreshes to occur outside of a blocked<strong> window of time</strong> instead of inside it, due to a customer&#x2019;s specific time zone and set time window.</p><h2 id="add-column-created-from%E2%80%9D-on-sandbox-list-view">Add column &quot;Created from&#x201D; on Sandbox list view</h2><p>We added a new column in the<strong> Sandbox list view, </strong>labeled &#x201C;Created from.&#x201D;</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/_Created-from_-column_.png" class="kg-image" alt="New in Hutte: Jira Cloud overhaul, custom success messages, and more" loading="lazy" width="1963" height="713" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/_Created-from_-column_.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/_Created-from_-column_.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/_Created-from_-column_.png 1600w, https://hutte.io/company-blog/content/images/2024/07/_Created-from_-column_.png 1963w" sizes="(min-width: 720px) 720px"></figure><p>This column indicates which Salesforce Organization each <strong>Sandbox was refreshed from. </strong>This allows Admin users to have a better understanding of their existing Sandboxes. For example, you&#x2019;ll be able to see which Org your Pool Orgs are being refreshed from at a glance.</p><h3 id="explore-these-improvements-firsthand">Explore these improvements firsthand</h3><p><strong>Get in touch </strong>with us to discover how we can customize a superior user experience for you!</p><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Request</span> a demo!</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte]]></title><description><![CDATA[Creating an Experience Cloud site in Salesforce generates significant metadata, which can be confusing when deploying the site to a higher environment. This raises the question: "What do we need to deploy, and how do we deploy it?" The answer is simple! ]]></description><link>https://hutte.io/company-blog/experience-cloud-lwr-aura-ci-cd/</link><guid isPermaLink="false">668b949ed7797da91f076248</guid><category><![CDATA[Hutte recipes]]></category><dc:creator><![CDATA[Manuel Moya]]></dc:creator><pubDate>Mon, 08 Jul 2024 09:40:35 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/How-to-create-an-Experience-Cloud--LWR-and-Aura--CI-CD-with-Hutte-2.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><div class="hutte-expert-panel-section">
    <div class="hutte-expert-panel-container">
        <div class="hutte-expert-panel">
            <h2>Hutte expert panel</h2>
            <div class="hutte-expert-list">
                <!-- Example Expert 1 -->
                <div class="hutte-expert">
                    <img src="https://ghost.hutte.io/trails/content/images/2024/05/image-2.png" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte">
                    <div class="hutte-expert-name"><strong>Harald Mayer</strong></div>
                    <div class="hutte-expert-company">Hutte CEO &amp; Founder</div>
                    <button class="hutte-about-btn" onclick="toggleBio(this)">About</button>
                    <div class="hutte-bio-content">Harald is the Co-Founder of Hutte, bringing his vision of no-code DevOps to life. His passion enables teams and individuals to focus on what matters most &#x2013; bringing value to the users they build for.</div>
                    <div class="hutte-social-links-expertpanel">
                        <a href="https://www.linkedin.com/in/harald-mayer/?ref=hutte.io" class="hutte-social-icon-expertpanel">
                            <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24" height="24" viewbox="0 0 48 48"><path fill="#0078d4" d="M42,37c0,2.762-2.238,5-5,5 H11c-2.761,0-5-2.238-5-5V11c0-2.762,2.239-5,5-5h26c2.762,0,5,2.238,5,5V37z"/><path fill="#fff" d="M12,19h5v17h-5V19z M14.485,17 h-0.028C12.965,17,12,15.888,12,14.499C12,13.08,12.995,12,14.514,12c1.521,0,2.458,1.08,2.486,2.499C17,15.887,16.035,17,14.485,17z M36,36h-5v-9.099c0-2.198-1.225-3.698-3.192-3.698c-1.501,0-2.313,1.012-2.707,1.99C24.957,25.543,25,26.511,25,27v9h-5V19h5v2.616 C25.721,20.5,26.85,19,29.738,19c3.578,0,6.261,2.25,6.261,7.274L36,36"/></svg>
                        </a>
                        <a href="https://twitter.com/hmayer?ref=hutte.io" class="hutte-social-icon-expertpanel">
                            <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="25" height="25" viewbox="0 0 30 30">
                                <path d="M 6 4 C 4.895 4 4 4.895 4 6 L 4 24 C 4 25.105 4.895 26 6 26 L 24 26 C 25.105 26 26 25.105 26 24 L 26 6 C 26 4.895 25.105 4 24 4 L 6 4 z M 8.6484375 9 L 13.259766 9 L 15.951172 12.847656 L 19.28125 9 L 20.732422 9 L 16.603516 13.78125 L 21.654297 21 L 17.042969 21 L 14.056641 16.730469 L 10.369141 21 L 8.8945312 21 L 13.400391 15.794922 L 8.6484375 9 z M 10.878906 10.183594 L 17.632812 19.810547 L 19.421875 19.810547 L 12.666016 10.183594 L 10.878906 10.183594 z"/>
                            </svg>
                        </a>
                    </div>
                </div>
                <!-- Example Expert 2 -->
                <div class="hutte-expert">
                    <img src="https://ghost.hutte.io/trails/content/images/2024/04/image.png" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte">
                    <div class="hutte-expert-name"><strong>Manuel Moya</strong></div>
                    <div class="hutte-expert-company">Salesforce DevOps Consultant &amp; Technical Architect</div>
                    <button class="hutte-about-btn" onclick="toggleBio(this)">About</button>
                    <div class="hutte-bio-content">Manuel Moya Ferrer is a highly skilled freelancer who serves as a technical architect, developer, and DevOps engineer. He specializes in Salesforce solutions, covering all technical aspects of their development lifecycle.</div>
                    <div class="hutte-social-links-expertpanel">
                        <a href="https://www.linkedin.com/in/manuel-moya-ferrer-11163168/?ref=hutte.io" class="hutte-social-icon-expertpanel">
                            <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24" height="24" viewbox="0 0 48 48"><path fill="#0078d4" d="M42,37c0,2.762-2.238,5-5,5 H11c-2.761,0-5-2.238-5-5V11c0-2.762,2.239-5,5-5h26c2.762,0,5,2.238,5,5V37z"/><path fill="#fff" d="M12,19h5v17h-5V19z M14.485,17 h-0.028C12.965,17,12,15.888,12,14.499C12,13.08,12.995,12,14.514,12c1.521,0,2.458,1.08,2.486,2.499C17,15.887,16.035,17,14.485,17z M36,36h-5v-9.099c0-2.198-1.225-3.698-3.192-3.698c-1.501,0-2.313,1.012-2.707,1.99C24.957,25.543,25,26.511,25,27v9h-5V19h5v2.616 C25.721,20.5,26.85,19,29.738,19c3.578,0,6.261,2.25,6.261,7.274L36,36"/></svg>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
function toggleBio(button) {
    let expertDiv = button.closest('.hutte-expert');
    let bioDiv = expertDiv.querySelector('.hutte-bio-content');
    if (button.textContent === 'About') {
        bioDiv.style.display = 'block';
        button.textContent = 'Less';
    } else {
        bioDiv.style.display = 'none';
        button.textContent = 'About';
    }
}
</script>
<!--kg-card-end: html--><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article highlights</header>
    <ul>
            <li>When deploying an Experience Cloud site, <b>use a Git-based strategy</b> with the Metadata API for seamless integration and efficient change tracking.</li>
            <li>Hutte offers an excellent UI/UX for managing Salesforce deployments. The recipes reference <b>detailed Salesforce documentation</b> to clarify deployment steps.</li>
            <li>Detailed recipes are provided for deploying sites using both Lightning Web Runtime (LWR) and Aura frameworks, <b>including GitHub setup,</b> metadata tracking, and automated deployment processes.</li>
    </ul>
</div>
<!--kg-card-end: html--><img src="https://hutte.io/company-blog/content/images/2024/07/How-to-create-an-Experience-Cloud--LWR-and-Aura--CI-CD-with-Hutte-2.png" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte"><p>As with any other metadata, it&apos;s recommended to use a Git-based strategy with the Metadata API for deployment. To make this process easier, Hutte provides an excellent UI and UX. As Salesforce <strong>offers <a href="https://help.salesforce.com/s/articleView?id=sf.networks_migrating_from_sandbox.htm&amp;type=5&amp;ref=hutte.io">detailed documentation </a></strong>to help users understand what needs to be deployed, these recipes will reference this documentation.</p><p>Due to differences in the steps required depending on whether your Experience Cloud site is Lightning Web Runtime (LWR) or Aura, we have created two step-by-step recipes. Refer to the steps that are applicable to you. </p><h2 id="steps-for-sites-using-the-lwr-framework">Steps for sites using the <a href="https://github.com/hutte-recipes/cicd-experience-cloud-lwr?tab=readme-ov-file&amp;ref=hutte.io">LWR framework</a></h2><p>To provide steps for a site using the LWR framework, we use the &quot;<a href="https://help.salesforce.com/s/articleView?id=sf.rss_build_your_own_lwr.htm&amp;type=5&amp;ref=hutte.io">Build your own (LWR)&quot;</a> template when creating a new site. Upon creation, we <strong>customize this new site</strong> by adding a placeholder Lightning Web Component (LWC). </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F578;&#xFE0F;</div><div class="kg-callout-text"><em><strong>Author&apos;s note: </strong>This template uses the<a href="https://developer.salesforce.com/docs/platform/lwr/overview?ref=hutte.io"> Lightning Web Runtime Enhanced</a> framework. </em>This recipe also includes the &quot;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&quot; recipe to validate (in a pull request) and deploy the Experience Cloud sites.</div></div><h3 id="prerequisites">Prerequisites</h3><h3 id="experience-cloud-site-creation">Experience Cloud site creation</h3><ul><li>In your Hutte Project, create<strong> a new Hutte feature,</strong> assigning the org where you will create the Experience Cloud site. It&apos;s important to create the Hutte feature before making changes so that we can track the new changes, making the commit experience more straightforward and quicker.</li><li>Use the<strong> &quot;</strong><a href="https://help.salesforce.com/s/articleView?id=sf.rss_build_your_own_lwr.htm&amp;type=5&amp;ref=hutte.io"><strong>Build your own (LWR)&quot;</strong></a> template to create the new site.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720426801385.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1381" height="1238" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720426801385.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720426801385.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720426801385.png 1381w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce&#xA0;</a></figcaption></figure><ul><li><strong>Deploy the </strong><a href="https://github.com/hutte-recipes/cicd-experience-cloud-lwr/blob/main/force-app/main/default/lwc/helloWorld/helloWorld.html?ref=hutte.io"><strong>&quot;helloWorld&quot; LWC.</strong></a> Navigate to the workspace builder and add the LWC mentioned above to the top of the site.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720427185296.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1574" height="1170" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720427185296.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720427185296.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720427185296.png 1574w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce&#xA0;</a></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720427331016.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1600" height="976" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720427331016.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720427331016.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720427331016.png 1600w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce&#xA0;</a></figcaption></figure><ul><li>To avoid future deployment issues, it&apos;s recommended that you <strong>add a &quot;urlPathPrefix&quot;</strong> to the site URL. You can do this by going to &quot;Administration&quot; and &quot;Settings.&quot;</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720427439044.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1296" height="992" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720427439044.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720427439044.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720427439044.png 1296w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce&#xA0;</a></figcaption></figure><ul><li><strong><strong><strong>Save the changes.</strong></strong></strong></li></ul><h3 id="github-setup"><a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">GitHub setup</a></h3><h3 id="prerequisites-1">Prerequisites</h3><ul><li>A GitHub repository with a <strong>valid SFDX project.</strong></li><li>A target org authenticated <strong>with SFDX locally.</strong></li></ul><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text">Refer to the &quot;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&quot; recipe for full step-by-step instructions.</div></div><h3 id="enable-%E2%80%9Cdigital-experiences%E2%80%9D-in-the-destination-org">Enable &#x201C;Digital Experiences&#x201D; in the destination org</h3><p>Ensure <strong>&#x201C;Digital Experiences&#x201D; is enabled</strong> in &quot;Setup,&quot; &quot;Feature Settings,&quot; &quot;Digital Experiences,&quot; and &quot;Settings.&quot; </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428582830.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1470" height="856" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428582830.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428582830.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428582830.png 1470w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce</a></figcaption></figure><p>Once we have completed the prerequisites, created the site, configured GitHub, and enabled &#x201C;Digital Experiences&#x201D; in the destination org, we can proceed with tracking the site changes in Git and deploying them. Here are the steps:</p><ul><li><strong>Commit the baseline metadata and the custom LWC: </strong>Navigate to the previously created Hutte feature and click &quot;Pull Changes.&quot; A long list of changes will be displayed, which is expected since Salesforce does a lot of behind-the-scenes work when creating a site. Only select the necessary changes as specified in the <a href="https://help.salesforce.com/s/articleView?id=sf.networks_migrating_from_sandbox.htm&amp;type=5&amp;ref=hutte.io">Salesforce docs</a> by looking at the &quot;ENHANCED LWR SITE&quot; column of the table. Include the LWC that was previously deployed and added to the site page. All other metadata will be automatically generated in the destination org upon deployment &#x2013; we won&apos;t need to deploy them.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720427886580.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1142" height="1155" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720427886580.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720427886580.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720427886580.png 1142w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Replace &quot;siteAdmin&quot; and &quot;siteGuestRecordDefaultOwner:&quot; </strong>Change these fields in GitHub to use the username of the site admin in the destination environment. </li></ul><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text"><em><strong>Author&apos;s note: </strong>This task requires some Git skills.</em></div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Need expert Git knowledge</h6>
				<p>and assistance?<br></p>
			</div>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Reach out to us!</a>
			</div>
		</div>
	</div><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720427940523.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1600" height="739" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720427940523.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720427940523.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720427940523.png 1600w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Troubleshooting error &quot;The value for urlPathPrefix in DigitalExperienceConfig isn&apos;t validerror:&quot;</strong> If you encounter this error during the next deployment, we recommend adding a &quot;urlPathPrefix,&quot; which will solve the problem.</li><li><strong>Create a pull request through Hutte: </strong>Creating a GitHub pull request (which we can do from our UI) allows another person to review the changes. A deployment validation will automatically run as part of the GitHub Action from the &quot;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&quot; recipe. This action validates that the changes included in the pull request can be deployed to the destination org without issues, without actually deploying any changes. Finally, check the details of the GitHub Action run to see the logs of the metadata changes being validated.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428160988.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1435" height="1053" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428160988.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428160988.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428160988.png 1435w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428261122.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1453" height="1262" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428261122.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428261122.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428261122.png 1453w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce</a></figcaption></figure><ul><li><strong>Merge the pull request and automated deployment to the destination org: </strong>Upon successful validation and code review, merge the pull request. An automated GitHub Action will deploy the changes to the destination org. </li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428320610.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1452" height="742" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428320610.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428320610.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428320610.png 1452w" sizes="(min-width: 720px) 720px"></figure><ul><li>After the GitHub Action is successful, <strong>verify the changes</strong> in the destination org.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428446919.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1454" height="754" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428446919.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428446919.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428446919.png 1454w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce</a></figcaption></figure><h2 id="steps-for-sites-using-the-aura-framework">Steps for sites using the <a href="https://github.com/hutte-recipes/cicd-experience-cloud-aura?ref=hutte.io">Aura framework</a></h2><p>To provide steps for a site using the Aura framework, we reference the <a href="https://help.salesforce.com/s/articleView?id=sf.networks_help_center_template.htm&amp;type=5&amp;ref=hutte.io">Help Center</a> template. The Help Center template uses the Aura framework, so the same guidelines in this recipe apply to any site using the Aura framework. This recipe also includes the &#x201C;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&#x201D; recipe to validate (in a pull request) and deploy the Experience Cloud sites.</p><h3 id="prerequisites-2">Prerequisites</h3><h3 id="experience-cloud-site-creation-1">Experience Cloud site creation</h3><ul><li>In your Hutte Project, create <strong>a new Hutte feature,</strong> assigning the org where you will create the Experience Cloud site. It&apos;s important to create the Hutte feature before making changes so that we can track the new changes, making the commit experience more straightforward and quicker.</li><li>Create<strong> </strong>a<strong><a href="https://help.salesforce.com/s/articleView?id=sf.networks_help_center_create.htm&amp;type=5&amp;ref=hutte.io"> Help Center site</a></strong> in your Development Org (Digital Experiences).</li><li><strong><strong>Add the</strong><a href="https://github.com/hutte-recipes/cicd-experience-cloud-aura/blob/main/docs/images/sample.jpeg?ref=hutte.io"><strong> &#x201C;sample image&#x201D;</strong></a><strong> </strong></strong>as a background to the hero component.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720426801385.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1381" height="1238" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720426801385.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720426801385.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720426801385.png 1381w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce&#xA0;</a></figcaption></figure><ul><li><strong>Save the changes.</strong></li></ul><h3 id="github-setup-1">GitHub setup</h3><h3 id="prerequisites-3">Prerequisites</h3><ul><li><strong>A GitHub repository</strong> with a valid SFDX project.</li><li><strong>A target org authenticated </strong>with SFDX locally.</li></ul><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F50E;</div><div class="kg-callout-text">Refer to the &quot;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&quot; recipe for full step-by-step instructions.</div></div><h3 id="enable-digital-experiences-in-the-destination-org">Enable Digital Experiences in the destination org</h3><p>Ensure <strong>&quot;Digital Experiences&quot; is enabled</strong> in &quot;Setup,&quot; &quot;Feature Settings,&quot; &quot;Digital Experiences,&quot; and &quot;Settings.&quot;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720428582830.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1470" height="856" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720428582830.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720428582830.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720428582830.png 1470w" sizes="(min-width: 720px) 720px"><figcaption>Image source: <a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_cms_lwr.htm&amp;release=230&amp;type=5&amp;ref=hutte.io">Salesforce</a></figcaption></figure><p>Once we have completed the prerequisites, created the site, configured GitHub, and enabled Digital Experiences in the destination org, we can proceed with tracking the site changes in Git and deploying them. Here are the steps:</p><ul><li><strong>Commit the baseline metadata: </strong>Navigate to the previously created Hutte feature and click &quot;Pull Changes.&quot; A long list of changes will be displayed, which is expected since Salesforce does a lot of behind-the-scenes work when creating a site. Only select the necessary changes as specified in the <a href="https://help.salesforce.com/s/articleView?language=en_US&amp;id=sf.networks_migrating_from_sandbox.htm&amp;type=5&amp;ref=hutte.io">Salesforce docs.</a> </li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720429850908.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1427" height="1189" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720429850908.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720429850908.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720429850908.png 1427w" sizes="(min-width: 720px) 720px"></figure><ul><li>All other metadata will <strong>be automatically generated</strong> in the destination org upon deployment &#x2013; we won&apos;t need to deploy them.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720429907072.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1427" height="1189" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720429907072.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720429907072.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720429907072.png 1427w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Commit extra metadata to avoid deployment issues: </strong>For Aura communities, including the Help Center community, commit the &quot;SiteDotCom&quot; instead of &quot;ExperienceBundle.&quot; Commit the &quot;CommunitiesLanding ApexPage,&quot; its Apex controller, and the respective Apex test class to avoid deployment issues.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720429946163.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1421" height="1224" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720429946163.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720429946163.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720429946163.png 1421w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Commit the customizations: </strong>Apart from the baseline site, we added a sample image to the hero component as a background. Add the &quot;ContentAsset&quot; that includes this change.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720430013319.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1401" height="1028" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720430013319.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720430013319.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720430013319.png 1401w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Replace &quot;siteAdmin&quot; and &quot;siteGuestRecordDefaultOwner:&quot; </strong>Change these fields in GitHub to use the username of the site admin in the destination environment. </li></ul><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F447;</div><div class="kg-callout-text"><em><strong>Author&apos;s note: </strong>This task requires some Git skills.</em></div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>In search of expert </h6>
				<p>Git knowledge?<br></p>
			</div>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us!</a>
			</div>
		</div>
	</div><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720430056198.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1600" height="512" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720430056198.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720430056198.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720430056198.png 1600w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Create a pull request through Hutte: </strong>Creating a GitHub pull request (which we can do from our UI) allows another person to review the changes. A deployment validation will automatically run as part of the GitHub Action from the &quot;<a href="https://github.com/hutte-recipes/cicd-incremental-deployment?ref=hutte.io">cicd-incremental-deployment</a>&quot; recipe. This action validates that the changes included in the pull request can be deployed to the destination org without issues, without actually deploying any changes. Lastly, check the details of the GitHub Action run to see the logs of the metadata changes being validated.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720430103398.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1416" height="1223" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720430103398.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720430103398.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720430103398.png 1416w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720430159316.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1459" height="1268" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720430159316.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720430159316.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720430159316.png 1459w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>Merge the pull request and automated deployment to the destination org: </strong>Upon successful validation and code review, merge the pull request. An automated GitHub Action will deploy the changes to the destination org. After the GitHub Action is successful, verify the changes in the destination org.</li></ul><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/screely-1720430258999.png" class="kg-image" alt="How to create an Experience Cloud (LWR and Aura) CI/CD with Hutte" loading="lazy" width="1578" height="638" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/screely-1720430258999.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/screely-1720430258999.png 1000w, https://hutte.io/company-blog/content/images/2024/07/screely-1720430258999.png 1578w" sizes="(min-width: 720px) 720px"></figure><h2 id="make-your-site-an-experience">Make your site an experience</h2><p>Deploying Experience Cloud sites, whether using the LWR or Aura framework, can be streamlined and efficient with the right tools and processes. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2705;</div><div class="kg-callout-text">By<strong> leveraging Hutte&apos;s intuitive interface</strong> and robust GitHub integration, you can simplify the deployment process and ensure that your sites are deployed accurately and efficiently.&#xA0;</div></div><p>Follow these recipes to manage your Experience Cloud deployments confidently, and take advantage of Hutte&apos;s features to enhance your CI/CD workflows.<br></p>]]></content:encoded></item><item><title><![CDATA[Why Salesforce DevOps Consultants should be near user problems (Trails Podcast episode #16 with Matthias Rolke)]]></title><description><![CDATA[Join us in this episode as we delve into Matthias Rolke’s perspective as a Salesforce DevOps Consultant. We talk about the importance of being close to user problems. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/why-salesforce-devops-consultants-should-be-near-user-problems/</link><guid isPermaLink="false">6682c357d7797da91f07610e</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Mon, 01 Jul 2024 15:41:09 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/Matthias-Rolke-01-2.png" medium="image"/><content:encoded><![CDATA[<h2 id="episode-16-matthias-rolke-salesforce-devops-consultant">Episode 16: <a href="https://www.linkedin.com/in/matthias-rolke/?ref=hutte.io">Matthias Rolke</a>, Salesforce DevOps Consultant</h2><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article highlights</header>
    <ul>
            <li>Starting as a <b>computer science student</b> in Munich, Matthias&apos; journey into Salesforce began serendipitously through a local consulting partner. This led to a seven-year tenure and a passion for development tools.</li>
            <li>Faced with slow and cumbersome development tools like the Eclipse-based Force.com IDE, Matthias was driven to improve the process, eventually <b>open-sourcing tools like &quot;force-dev-tool&quot;</b> during his master&apos;s thesis.</li>
            <li>The release of Salesforce DX and Scratch Orgs revolutionized Matthias&apos; approach to development, aligning perfectly with their passion for open-source solutions and leading to the development of innovative tools like the <b>SFDX browser plugin</b> and the &quot;sf-plugin-explorer&quot; website.</li>
    </ul>
</div>
<!--kg-card-end: html--><h2 id="tune-in-%F0%9F%8E%AC">Tune in &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/KV33DzRD9Pc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Why Salesforce DevOps Consultants should be near user problems"></iframe></figure><h2 id="listen-up-%F0%9F%8E%A7">Listen up &#x1F3A7;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: Why Salesforce DevOps Consultants should be near user problems (Trails Podcast episode #16 with Matthias Rolke)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/6L26dZbc7TTmiU0dYpxGPQ?si=0f289935898f4e72&amp;utm_source=oembed"></iframe></figure><h2 id="how-did-you-get-in-touch-with-salesforce-first-and-how-did-it-evolve">How did you get in touch with Salesforce first, and how did it evolve?</h2><img src="https://hutte.io/company-blog/content/images/2024/07/Matthias-Rolke-01-2.png" alt="Why Salesforce DevOps Consultants should be near user problems (Trails Podcast episode #16 with Matthias Rolke)"><p>I didn&apos;t know about Salesforce before, but I studied computer science in Munich and worked as a student. For my bachelor&apos;s, I worked at a Linux distribution company. This is basically where my knowledge of command-line tools and open-source comes from. During my master&apos;s, I was looking for a new job. At that time, many interesting companies were far outside of the city center. I searched nearby and found a Salesforce consulting partner. This is where I landed my job and stayed there for seven years, starting as <strong>a Salesforce developer</strong> doing Apex, Visualforce, and Aura.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F40C;</div><div class="kg-callout-text">I quickly learned that the development tools that existed back in 2011 were a nightmare. There was the Eclipse-based Force.com IDE, which was slow. That was for deployments only and the end migration tool. That quickly became my passion to look into those things.</div></div><h2 id="so-you-werent-hired-into-a-devops-or-release-manager-role-but-it-came-during-your-job-as-a-developer-right">So, you weren&apos;t hired into a DevOps or release manager role, but it came during your job as a developer, right?</h2><p>Exactly. For example, I hated how I had to do those things with the IDE. I loved the platform, but I hated using Eclipse. So, there was an excellent alternative IDE called MavensMate by Joe Ferraro. It was only for macOS, and my computer was a Windows PC at home. I was running Linux, so I just ported the MavensMate to Windows and Linux. That was also when I did my <strong>first pull request </strong>on GitHub, which was rejected. So, my first experience with open-source was horrible. </p><p>I can&apos;t blame Joe because he rewrote the whole tool to switch to Python instead of Ruby. But I liked looking into open-source tools &#x2013; that was my passion from day one. I then switched to deployment release management.</p><blockquote>Did you know that over 70% of Salesforce customers actively use or contribute to open-source tools to enhance their Salesforce implementations?</blockquote><h2 id="what-was-your-stack-back-then-for-deploying-or-releasing-was-that-your-default">What was your stack back then for deploying or releasing? Was that your default?</h2><p>No, the company default was change sets, and I explored how I could enhance that. With the end migration tool and package XML deployment, I discovered that creating outbound change sets in the UI is possible. You can then deploy them to your sandbox with a package XML referring to the <strong>outbound change set name</strong>. You were able to add the metadata components based on an XML package file. I improved my process from time to time to be faster and leverage Git for myself. Later on, I was able to bring this into the company.</p><h2 id="was-that-what-you-then-open-sourced-as-the-force-dev-tool">Was that what you then open-sourced as the &quot;force-dev-tool?&quot;</h2><p>That came later. In 2014, it was time to write my master&apos;s thesis. I was really in love with this topic, so I suggested it. The end result was a tool called &quot;force-dev-tool.&quot; This is what I developed in my master&apos;s thesis. In my master&apos;s thesis, I was writing a CLI, which didn&apos;t exist back then. But there was the end migration tool. A CLI was <strong>essential to automating things </strong>because it wasn&apos;t so scriptable. The other outcome of the thesis was implementing CI/CD with Salesforce. I explored implementing CI by doing validation deployments to an empty sandbox.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text">Your metadata is in your Git repository. As part of the CI job, you do a full validation deployment, including a test run to an empty sandbox. I had to prepare a sandbox by deleting all metadata and using my own tool to do that. This was a huge step because, previously, you couldn&apos;t have any kind of validation for your CI pipeline.</div></div><h2 id="salesforce-then-released-sfdx-which-included-a-command-line-it-was-probably-the-first-one-that-salesforce-published-or-made-accessible-can-you-share-your-perception-and-memory-about-the-launch-of-sfdx-and-scratch-orgs-also-how-did-it-impact-devops">Salesforce then released SFDX, which included a command line. It was probably the first one that Salesforce published or made accessible. Can you share your perception and memory about the launch of SFDX and Scratch Orgs? Also, how did it impact DevOps?</h2><p>That came as a huge surprise to me. I think Salesforce DX was announced at Dreamforce 16. This was after my thesis. It came out of nowhere. Back then, the CLI was slower than my tool. The massive launch was, as you said, Scratch Orgs. This blew my mind because I explored this for CI, having a <strong>clean or empty org. </strong>I knew the benefits of having that, but not for development. Scratch Orgs allowed you to get your own empty org for development, which wasn&apos;t possible in my world before. I was thus hooked. I participated in the pilot and knew that my first dev tool was eventually going to be deprecated. I embraced Salesforce DX completely.</p><h2 id="can-you-share-a-bit-about-your-open-source-work-on-the-generation-of-salesforce-cli-and-sfdx">Can you share a bit about your open-source work on the generation of Salesforce CLI and SFDX</h2><p>That comes back to my job, where I worked at the SI and later as an independent DevOps consultant. I like to see problems firsthand with the customer &#x2013; the more, the better. I was able to know what things don&apos;t work currently. This was always a good point for getting ideas for open-source projects. One was an SFDX browser plugin, filling the <strong>metadata API gaps </strong>with browser automation. You could perform clicks in a scripted headless browser, which was a massive success for our project. We were able to automate the missing pieces.</p><h2 id="you-mentioned-that-you-are-an-independent-salesforce-devops-consultant-dedicating-part-of-your-time-to-hutte-its-no-secret-that-you-have-been-vital-in-getting-the-product-to-where-it-stands-today-please-share-a-bit-about-your-choice-to-split-your-work">You mentioned that you are an independent Salesforce DevOps Consultant, dedicating part of your time to Hutte. It&apos;s no secret that you have been vital in getting the product to where it stands today. Please share a bit about your choice to split your work</h2><p>I need a variety of things that need to be fixed. Being able to build something on both ends &#x2013; the client and product side. I enjoy participating on both ends. That makes me really happy to <strong>see as many problems </strong>as possible. I think I have a passion for diving into problems, reporting bugs, and making them reproducible. This is part of my job, and I enjoy it.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><strong>Do you also have a passion for picking up problems? Here are some tips on how to spot Salesforce bugs:</strong></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Monitor user feedback:</strong> Pay attention to user-reported issues or complaints.</em></em></em></li><li><em><em><em><strong>Review error logs:</strong> Regularly check Salesforce logs for anomalies or recurring errors.</em></em></em></li><li><em><em><em><strong>Test edge cases:</strong> Validate Salesforce functionalities in various scenarios, including boundary conditions.</em></em></em></li><li><em><em><em><strong>Compare expected vs actual results:</strong> Ensure outputs match intended outcomes during testing phases.</em></em></em></li><li><em><em><em><strong>Check integration points:</strong> Verify data consistency across integrated systems or modules.</em></em></em></li><li><em><em><em><strong>Utilize debugging tools:</strong> Leverage Salesforce debugging tools like Developer Console or Debug Logs for insights.</em></em></em></li></ol></div></div><h2 id="sometimes-a-customer-or-user-reports-a-bug-that-we-can-trace-back-to-the-salesforce-cli-i-think-you-have-already-earned-yourself-a-reputation-for-diligently-reporting-bugs-to-the-cli-team-i-think-its-a-very-fruitful-collaboration-with-the-salesforce-team-owning-the-cli">Sometimes, a customer or user reports a bug that we can trace back to the Salesforce CLI. I think you have already earned yourself a reputation for diligently reporting bugs to the CLI team. I think it&apos;s a very fruitful collaboration with the Salesforce team owning the CLI</h2><p>The Salesforce CLI team is really open. They have a Slack channel, and they <strong>respond to GitHub issues.</strong> I only have praise for them. It&apos;s really great.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>If you regularly use GitHub, here are some best practices:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Use branches:</strong> Work on features or fixes in separate branches to isolate changes.</em></em></em></li><li><em><em><em><strong>Commit regularly:</strong> Make small, atomic commits with clear messages to track changes effectively.</em></em></em></li><li><em><em><em><strong>Pull requests:</strong> Use pull requests for code reviews, discussing changes, and integrating features into the main branch.</em></em></em></li><li><em><em><em><strong>Write descriptive comments:</strong> Explain the &quot;why,&quot; not just the &quot;what,&quot; in your commit messages and pull request descriptions.</em></em></em></li><li><em><em><em><strong>Use issues:</strong> Track tasks, enhancements, and bugs using GitHub Issues to manage project workflows effectively.</em></em></em></li><li><em><em><em><strong>Review code:</strong> Participate actively in code reviews to maintain code quality and share knowledge.</em></em></em></li><li><em><em><em><strong>Automate testing:</strong> Integrate automated tests into your workflow using GitHub Actions or other CI/CD tools.</em></em></em></li><li><em><em><em><strong>Documentation:</strong> Maintain clear and updated documentation in your repository&apos;s &quot;README&quot; and Wiki pages.</em></em></em></li><li><em><em><em><strong>Manage permissions:</strong> Grant appropriate permissions to collaborators and contributors based on their roles.</em></em></em></li><li><em><em><em><strong>Monitor security:</strong> Regularly review and update dependencies and enable security alerts for vulnerabilities.</em></em></em></li></ol></div></div><h2 id="do-you-have-any-ongoing-salesforce-open-source-projects">Do you have any ongoing Salesforce open-source projects?</h2><p>The Salesforce plugin ecosystem is quite good. There are well-known plugins from &quot;sfdx-hardis&quot; and &quot;sfdx-git-delta.&quot; I discovered most of them from Salesforce&apos;s Shane McLaughlin&apos;s list of SFDX plugins. This is a handpicked list. I think there are more beneficial plugins that are not known. I&apos;m building a website that allows others to explore and search for the necessary plugins. This is my current project. It&apos;s already public, but I look forward to getting some users and feedback. The name is <strong>&quot;sf-plugin-explorer.&quot; </strong></p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text">You can find <strong>&quot;sf-plugin-explorer&quot; in my <a href="https://github.com/amtrack/sf-plugin-explorer?ref=hutte.io">GitHub</a></strong><a href="https://github.com/amtrack/sf-plugin-explorer?ref=hutte.io"> repo amtrak.</a></div></div><h2 id="did-you-buy-a-domain-is-it-reachable-under-that-domain-or-do-i-have-to-check-out-your-repo-and-run-it-on-my-machine-to-access-it">Did you buy a domain? Is it reachable under that domain or do I have to check out your repo and run it on my machine to access it?</h2><p>It&apos;s a website published with GitHub pages. My goals for this project were that it shouldn&apos;t cost anything and that it should be <strong>as simple as possible. </strong>Right now, it looks really bad on purpose because I first want to improve the data and make it pretty later on. If it turns out to be a success, I will think about buying a domain. Right now, it&apos;s hosted for free and with the least amount of effort possible.</p><h2 id="problem-solving-made-simple">Problem-solving made simple</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Who would you like our next expert to be?</div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Let us know</h6>
				<p>on our LinkedIn<br></p>
			</div>
			<div class="btn">
				<a href="https://www.linkedin.com/company/28909971/admin/feed/posts/?ref=hutte.io">Learn More</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[How to deliver first and explain later in Salesforce DevOps (Trails Podcast episode #15 with Diéffrei Tiepo de Quadros)]]></title><description><![CDATA[Join us in this episode as we delve into Diéffrei Tiepo de Quadros’ perspective as a Salesforce Technical Architect. We talk about effectively delivering when it comes to Salesforce DevOps. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/salesforce-devops/</link><guid isPermaLink="false">666c52ccd7797da91f075fdf</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Fri, 14 Jun 2024 16:35:21 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/06/Di-ffrei-Tiepo-de-Quadros-01.png" medium="image"/><content:encoded><![CDATA[<h2 id="episode-15-di%C3%A9ffrei-tiepo-de-quadros-salesforce-technical-architect">Episode 15: <a href="https://www.linkedin.com/in/dieffrei/?originalSubdomain=br&amp;ref=hutte.io">Di&#xE9;ffrei Tiepo de Quadros,</a> Salesforce Technical Architect </h2><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article Highlights</header>
    <ul>
            <li>Hutte simplifies <b>sandbox creation</b> and management. It allows non-technical team members to easily create and access sandboxes with a single click, eliminating the need for complex CLI and Git commands.</li>
            <li>With Flxbl (formerly DX@Scale), multiple teams can deploy independently and frequently, <b>decoupling domains</b> and maintaining velocity even after merging multiple companies. This modularity ensures swift and efficient report creation and deployment.</li>
            <li>Engaging with the <b>Salesforce community</b> on platforms like Twitter and adopting Flxbl enabled the creation of feature-based packages and advanced permission set management, leading to continuous improvement and open-source collaboration.</li>
    </ul>
</div>
<!--kg-card-end: html--><h2 id="listen-up-%F0%9F%8E%A7">Listen up &#x1F3A7;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: How to deliver first and explain later in Salesforce DevOps (Trails Podcast episode #15 with Di&#xE9;ffrei Tiepo de Quadros)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/38zQdyCaYiNsSJ6XupUlfX?si=FMBjQLdhSny9824GJg_UyQ&amp;utm_source=oembed"></iframe></figure><h2 id="tune-in-%F0%9F%8E%AC">Tune in &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/_Owc0ZVZWyk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="How to deliver in Salesforce DevOps (Trails Podcast episode #15 with Di&#xE9;ffrei Tiepo de Quadros)"></iframe></figure><h2 id="what-is-your-history-with-salesforce-how-did-you-get-in-touch-with-salesforce-technology-and-in-which-role-when-was-it-and-how-did-your-career-in-the-ecosystem-evolve-from-there">What is your history with Salesforce? How did you get in touch with Salesforce technology, and in which role? When was it, and how did your career in the ecosystem evolve from there?</h2><img src="https://hutte.io/company-blog/content/images/2024/06/Di-ffrei-Tiepo-de-Quadros-01.png" alt="How to deliver first and explain later in Salesforce DevOps (Trails Podcast episode #15 with Di&#xE9;ffrei Tiepo de Quadros)"><p>First, I appreciate the work you have done with Hutte. I like the product because I was one of the first customers or beta users, so I love what has been done to it so far. I also appreciate the impact that Hutte has had in the ecosystem as far as <strong>DevOps is concerned. </strong></p><p>But talking a little bit about my career, I think my first contact with Salesforce was in 2008 when I came to my former manager and asked to work with something different. I was slightly saturated with the technologies they had been working on, like Java. And then she said, &quot;All right, I&apos;m going to give you a new opportunity. We just had some engineers come from San Francisco, and they learned some new technology.&quot; </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4B0;</div><div class="kg-callout-text">I was excited and curious to understand this new technology. In my company, when I created a field and added an edge to the report, <strong>it cost about $3K.</strong> I heard that I could do it very quickly with the new technology and platform without spending much money. That&apos;s how I joined Salesforce by working for an ISV. It was for fleet management, and I learned a lot. After that, I went to the open-source community and discovered they could use MavensMate with Sublime, which immensely helped me.</div></div><p>Another contact I had in the open-source community during that time was using ANT Migration Tool, but I didn&apos;t enjoy it as much. I then found another excellent repository. I think it was from Matthias (Salesforce DevOps Consultant, product supporter for Hutte, and future Trails Podcast guest). As far as I remember, he created a repository called &quot;<a href="https://github.com/amtrack/force-dev-tool?ref=hutte.io">force-dev-tool.</a>&quot; It&apos;s already archived, but it helped a lot.</p><blockquote>I also spoke with him briefly on Twitter (X). I like Twitter because I contact the product teams from Salesforce when I need something. It&apos;s a faster way to do that. </blockquote><p>Coming back to the point of my career, I moved to consulting. I worked on many large projects, but it was painful from a DevOps perspective. We used to utilize change sets, and we would spend six months developing everything in there. At some point,<strong> we just deployed UAT</strong>. Maybe one week before we went live, we would have ten engineers in a war room trying to create code coverage to deploy. It was a kind of integration test. </p><p>We didn&apos;t use that trick of adding a lot of &apos;i++&apos; in the code. We would say, &quot;Okay, let&apos;s create code coverage because the deadline is almost here, and we need to deploy to production.&quot; I was slightly frustrated because I already had some background in Java and other technologies. I saw that the Salesforce platform was very behind. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4DA;</div><div class="kg-callout-text">I tried to think about CI/CD automations. It was a bit hard initially to convince my team, as we didn&apos;t have Trailhead. We had Salesforce documentation. I started to look for more information to convince them. I always work in the same way. I use this<strong> strategy to deliver first</strong> and then explain later. I think that&apos;s how I achieved most of the things in a lot of successful cases in this situation specifically.&#xA0;</div></div><p>Around 2015, I traveled to Europe. It was my first project abroad. My team arrived to work for a month. In that month, we spent a lot of time building new functionality. We finally reached the last week and allocated time to plan to do the deployments and change sets. </p><p>One day before the deployment, my team went to the grocery store. We bought a lot of chocolate and coffee. Everybody was prepared to start creating and deploying the change sets, but the deployment was already done. I then introduced them to the way that they could do it. It wasn&apos;t CI/CD. It was using scripts from Force Dev Tools. </p><p>Everybody was shocked as we deployed everything in half an hour, and <strong>only minimal configurations </strong>were left to do. Management then invested the money and gave me some budget to apply CI/CD, which improved the Salesforce lifecycle and the value of the consulting firm.</p><h2 id="did-you-have-a-specific-job-title-as-a-devops-or-release-manager-or-were-you-one-of-the-developers-on-that-team-and-took-the-responsibility-to-improve-the-delivery-methodology">Did you have a specific job title as a DevOps or release manager, or were you one of the developers on that team and took the responsibility to improve the delivery methodology?</h2><p>When I moved to that consulting firm, I moved as a Salesforce Technical Architect. I was leading the development of best practices. At that time, I only knew a little because my background was more Java-based. When I learned from Salesforce,<strong> they&apos;d mention tests.</strong> But there are many tests, like unit, integration, and end-to-end tests. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2705;</div><div class="kg-callout-text"><em><strong>Author&apos;s note: </strong>Did you know that Salesforce requires a minimum of 75% code coverage by unit tests for deployment to production? However, many best practices suggest aiming for higher coverage, often around 85-90%.</em></div></div><p>You need to understand when you will use them, how you will run them, which stage of development you can run them, etc. So, I didn&apos;t move to the Salesforce ecosystem without this knowledge. A lot of the knowledge I got was through learning what didn&apos;t work. I didn&apos;t find any documentation. I think my primary source was Jeff Douglas&apos; blogs.</p><h2 id="i-think-in-2018-sfdx-became-generally-available-i-assume-you-were-an-early-adopter">I think in 2018, SFDX became generally available. I assume you were an early adopter?</h2><p>I think it was in 2013 when I remembered that the FinancialForce library was launched. But talking about Salesforce DX, I got very excited trying to find the link and install it. I remembered that they were working on one large project. Whenever I used <strong>a command to deploy</strong> the code to a scratch org, I got a non-descriptive error. Imagine you have 10K of metadata you&apos;re trying to deploy. It&apos;s very painful to work with that. But when I saw that, I thought that&apos;s the way to go.</p><h2 id="can-you-tell-us-how-flxbl-formerly-dxscale-evolved">Can you tell us how Flxbl (formerly DX@Scale) evolved?</h2><p>My contact with Flxbl was interesting because, in 2018, I moved to the Netherlands to have the opportunity to work abroad. It was one of my dreams. The first project I worked on was for a company that focused on building things properly. We used <strong>a lot of Flxbl, </strong>Salesforce DX, and packaging. </p><blockquote>We learned what to do and what not to do. For instance, when you use many namespaces and need to do some data migration, it&apos;s excruciating. So, this is a disclaimer to be careful if you are thinking of decoupling your domains using a namespace.</blockquote><p>But going back to the point, my involvement with Flxbl revolved around working for the first customer of the outsourcing company that they used to work for. My contract then came to an end, and my former manager moved to another company. </p><p>I texted him: &quot;Hey, I want to keep working with you because I like your leadership.&quot; I liked how he gave me flexibility and budget to work with excellent tools. I also saw the business impact of using the proper tools and techniques. I was then hired to work with him in this new company. At that time, he moved from a manager position to the CTO of the company. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x260E;&#xFE0F;</div><div class="kg-callout-text">My biggest challenge was to move or rebuild the production work from scratch. For instance, when you opened the triggers, you saw the logic there. There were no tests, or the minimum test was enough. You could see <strong>99% of the bad practices </strong>you can imagine there. My boss understood that, and he said: &quot;To fix that org is going to take a lot. It will maybe work if we just started from scratch.&quot; This was the first contact I had with Hutte and DX@Scale.&#xA0;</div></div><p>My CTO hired me to lead that development, but we already had a consulting company with some developers and an architect who was already building something. They were basically using things like change sets, and one of the first questions they had was: </p><ul><li>&quot;Okay, why are we going to change something that <strong>is already working?&quot;</strong> </li><li>I said, &quot;It&apos;s okay, but we are <strong>thinking about the future</strong> when the company grows. How are we going to be scalable? Maybe it was working well for that size of the company, but think about the future.&quot; </li><li>My CTO already knew about our experience and the way to go. So, it was terrific that the company&apos;s leadership understood <strong>where we should go.</strong></li></ul><p>My manager gave me the power to use scratch orgs, packaging, etc. As we know, one of the very painful parts of DevOps <strong>used to be scratch orgs. </strong>Scratch orgs were fantastic because you just created them from the source. It&apos;s source-based development. However, the time it took to create the scratch org was long. In the beginning, it used to take thirty-five minutes to install the package. But during the release period of Salesforce, it took two and a half hours.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Do you want to know about some more pain points when using Salesforce scratch orgs?</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em>The<strong> initial setup and configuration </strong>of scratch orgs can be time-consuming, particularly for complex projects.</em></em></em></li><li><em><em><em>There is difficulty in <strong>seeding scratch orgs </strong>with necessary test data, which can slow down development and testing processes.</em></em></em></li><li><em><em><em>Scratch orgs <strong>come with limited storage, </strong>which can be insufficient for large projects or extensive testing needs.</em></em></em></li><li><em><em><em><strong>Ensuring consistency </strong>across multiple scratch orgs can be challenging, leading to discrepancies and potential integration issues.</em></em></em></li><li><em><em><em><strong>Managing the lifecycle</strong> of scratch orgs (creation, usage, and deletion) can become cumbersome, especially in large teams.</em></em></em></li><li><em><strong>Performance can degrade </strong>over time, impacting the efficiency of development and testing activities.</em></li></ol></div></div><p>I was thinking about how we could fix that, so I started thinking about scratch org pooling. I considered creating a &#x201C;Node.js&#x201D; microservice to pass the DevHub and some basic information. When I went on Twitter, I remember somebody posting about Hutte. I contacted <a href="https://hutte.io/company-blog/how-to-start-salesforce-isv-company/">Evgenii (flair&apos;s CEO) </a>and a former developer and was introduced to this fantastic tool we could start using. Regarding pooling, developers didn&apos;t like (or know how) to use Git.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text"><em><strong>Read more: </strong>Are you in the dark when it comes to Git? </em><strong><a href="https://hutte.io/whitepapers/git-based-development/?ref=hutte.io"><em>Download our starter guide</em></a> </strong><em>to Git-based development.</em></div></div><p>My CTO really liked CI/CD, and Hutte was perfect as it allows those who don&apos;t know or have enough knowledge about the command line to go to Hutte, click a button, and create sandboxes or<strong> access</strong><a href="https://hutte.io/company-blog/sandbox-pooling/"><strong> sandbox pooling.</strong></a> I think that&apos;s the main point for a lot of companies. When I talk about Salesforce, they say, &quot;We need to use a lot of CLI and Git commands. And 67% of the team are administrators. How can we do that?&quot; I think you can do that with <a href="https://hutte.io/company-blog/enhance-your-salesforce-development-lifecycle-with-flxbl-dx-scale-and-hutte/">Hutte and Flxbl.</a></p><p>After one year of the project with Flxbl, it ran smoothly. We released weekly as a small team. After one year of the project, another large <a href="https://hutte.io/trails/salesforce-acquisitions/?ref=hutte.io">company acquired that company. </a>In two or three years, they acquired four or five different companies. When I moved to this new company for their new structure, my challenge was that we had one team working well and delivering fast. When they acquired all those companies with different teams and merged those orgs into one, they also had to keep the velocity. </p><blockquote class="kg-blockquote-alt">My first challenge was to make this scale scalable, as we no longer have just one team. We have seven teams, and I needed to figure out how to keep the value stream flowing to production. That was how I had the initial contact with Flxbl. </blockquote><p>The first thing I thought was that we <strong>had to have modularity.</strong> When you are working in the sales and service domain, for instance, sometimes you just need to create a report and deploy it to production. I started to create a draft of the solution. I went to Twitter again and asked the community which way to go, and that&apos;s how I got very involved. To make this story short, we had multiple teams releasing daily. Imagine having seven Salesforce teams deploying two or three times a day. It&apos;s unbelievable. </p><p>For instance, if you need a new report in production, you can quickly create the report and deploy. You don&apos;t need to wait hours for other domains. Decoupling the domains and having this modularity guided by a flexible framework was amazing for us. It was good that we had the observability tools as we could show leadership in the company that the budget and the time they spent on refactoring or modularizing was worth it. We had one big package split into 150 packages that allowed us to deploy many teams or different domains, decoupling and deploying every day.</p><h2 id="you-probably-started-taking-things-into-your-own-hands-creating-issues-pulling-requests-and-making-improvements-right">You probably started taking things into your own hands, creating issues, pulling requests, and making improvements, right?</h2><p>Exactly. Since I started using Flxbl, I have liked thinking outside the box and finding new ways to do things. When working on a small project, you might see only some of the pain points you will have in the future. With Flxbl, you can think about feature-based packages when you&apos;re deploying and thinking about modularity. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x274C;</div><div class="kg-callout-text">When considering feature-based packages, consider the granularity of the <strong>permission sets and groups. </strong>When you&apos;re deploying a permission set, sometimes the permission set group gets recalculated. If you deploy one package and it changes a permission set, and then in another second, you try to deploy, depending on the impact of the permission set groups you have, it can fail.&#xA0;</div></div><p>I submit a pull request where you can retrieve the metadata, check the status of the permission set group, and deploy the other packages just when the permission set groups get calculated. So, that was the first involvement I had with Flxbl. Nowadays, I am one of their maintainers as it&apos;s open-source. It&apos;s a struggle because I have a job and have to do it in my free time. So, I need to share this time with my family, daughter, and girlfriend, but that&apos;s life.</p><h2 id="it%E2%80%99s-all-in-the-delivery">It&#x2019;s all in the delivery</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Who would you like our next expert to be?</div></div><p></p><!--kg-card-begin: html-->	<div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Let us know</h6>
				<p>on our LinkedIn<br></p>
			</div>
			<div class="btn">
				<a href="https://www.linkedin.com/company/28909971/admin/feed/posts/?ref=hutte.io">Learn More</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[What to know about transitioning to Salesforce DevOps (Trails Podcast episode #14 with Manuel Moya)]]></title><description><![CDATA[Join us in this episode as we delve into Manuel Moya's perspective as a Salesforce DevOps Consultant. We will talk about DevOps and the Salesforce ecosystem. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/transitioning-to-salesforce-devops/</link><guid isPermaLink="false">66602187d7797da91f075eb0</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Wed, 05 Jun 2024 09:49:27 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/08/Manuel-Moya-01.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="episode-14-manuel-moya-salesforce-devops-consultant">Episode 14: <a href="https://www.linkedin.com/in/manuel-moya-ferrer-11163168/?originalSubdomain=es&amp;ref=hutte.io">Manuel Moya,</a> Salesforce DevOps Consultant</h2><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article Highlights</header>
    <ul>
            <li>Manuel first got in touch with Salesforce when he applied for a junior developer position at <b>FinancialForce</b> in his hometown. Despite not knowing anything about Salesforce at the time, he knew FinancialForce was a reputable company, so he pursued the opportunity.</li>
            <li>At FinancialForce, Manuel learned Salesforce&apos;s best practices and received mentorship that greatly enhanced his skills. Later, he moved to Copado to delve into the <b>DevOps side</b> of Salesforce.</li>
            <li>In his current role, Manuel enjoys working with various customers and choosing his projects, which allows him to maintain his technical skills. He remains excited about <b>technical work</b> and hands-on coding. </li>
    </ul>
</div>
<!--kg-card-end: html--><h2 id="watch-it-%F0%9F%8E%AC">Watch it &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/zqeCvpsF5kU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="What to know about transitioning to Salesforce DevOps (Trails Podcast episode #14 with Manuel Moya)"></iframe></figure><h2 id="listen-to-it-%F0%9F%8E%A7">Listen to it &#x1F3A7;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: What to know about transitioning to Salesforce DevOps (Trails Podcast episode #14 with Manuel Moya)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/1sjKmmwUXEFXO5oDFqhfI4?si=CbLVvAx6Q2Sz_qiRC-3g6A&amp;utm_source=oembed"></iframe></figure><h2 id="how-did-you-get-in-touch-with-salesforce-when-was-it-how-did-your-career-evolve-from-there-within-the-salesforce-ecosystem">How did you get in touch with Salesforce? When was it? How did your career evolve from there within the Salesforce ecosystem?</h2><img src="https://hutte.io/company-blog/content/images/2024/08/Manuel-Moya-01.jpg" alt="What to know about transitioning to Salesforce DevOps (Trails Podcast episode #14 with Manuel Moya)"><p>I started working with networking at Cisco and Juniper. I was <strong>configuring all these systems</strong> but was not finding happiness in this. I knew that what I wanted to do was code and work as a developer. But I needed to find out specifically which technology. I was looking for a company where I could learn how to be a good developer.</p><p>I saw an offer at that time in FinancialForce, here in the city where I have always lived. It was a junior developer offer. I didn&apos;t know anything about Salesforce, but I knew that FinancialForce was a good company to work with, so I interviewed there. One of the interviewers was Alba Rivas.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F399;&#xFE0F;</div><div class="kg-callout-text"><em><strong>Read more: </strong></em><a href="https://hutte.io/company-blog/why-open-source-and-ai-is-here-to-stay/"><em>Why open-source and AI is here to stay (Trails Podcast episode #13 with Alba Rivas)</em></a></div></div><p>I liked the people and decided to start there. I learned a lot about Salesforce&apos;s best practices, and the people working there were great mentors.</p><h2 id="you-started-with-a-big-isv-but-have-also-done-work-outside-the-isv-space-right">You started with a big ISV but have also done work outside the ISV space, right?</h2><p>I learned a lot about the enterprise ISV side because FinancialForce was a very mature company. I also learned about:</p><ul><li><strong>Development</strong></li><li><strong>Coding practices</strong></li><li><strong>Delivery processes</strong></li><li><strong>The complete development lifecycle. </strong></li></ul><p>I was very interested in the DevOps side of Salesforce. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4AC;</div><div class="kg-callout-text"><em><strong>Read more: </strong><a href="https://hutte.io/trails/salesforce-devops?ref=hutte.io">A comprehensive guide to Salesforce DevOps 2024</a></em></div></div><p>At that time, I decided to switch to Copado. I worked for a few years there as a technical lead. I went to Copado not only for DevOps but also to understand how work was done in a startup ISV. At that point in time, Copado was ending the startup phase because it was already quite a big company. It was going more into the mature company phase. I learned much about this migration and how you develop when you <strong>need more features. </strong>It&apos;s a different way of thinking.</p><p>After that, I also wanted to learn outside the ISV ecosystem, so I entered a kind of Salesforce consultancy. The primary mission was to <a href="https://hutte.io/trails/salesforce-appexchange-in-depth-review/?ref=hutte.io">create AppExchange </a>packages for customers. I worked as a developer and in similar roles for some time. I learned a lot about customer interactions, but I wanted to keep learning about DevOps because I knew there was much more to learn.</p><p>I decided to switch from a<strong> contractor to a freelancer,</strong> and I started working and contributing to Hutte and other companies as a technical architect and DevOps consultant.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>If you are considering becoming a consultant, here are some steps you can take:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><strong>Master Salesforce basics</strong>: Gain a solid understanding of Salesforce administration, development,<a href="https://hutte.io/trails/devops-statistics?ref=hutte.io"> and DevOps.</a></em></li><li><em><a href="https://hutte.io/trails/salesforce-devops-tools?ref=hutte.io"><strong>Learn DevOps tools</strong>:</a> Familiarize yourself with tools like Hutte, Jenkins, Copado, and SFDX.</em></li><li><em><strong>Get certified</strong>: Obtain relevant </em><a href="https://hutte.io/trails/salesforce-certifications?ref=hutte.io"><em>Salesforce and DevOps certifications.</em></a></li><li><em><strong>Hands-on experience</strong>: Work on real-world projects to apply your knowledge and improve your skills.</em></li><li><em><strong>Stay updated</strong>: Keep up with the latest trends and updates in Salesforce and DevOps.</em></li><li><em><strong>Network</strong>: Connect with other professionals in the Salesforce and DevOps communities.</em></li><li><em><strong>Develop soft skills</strong>: Improve your communication, problem-solving, and project management skills.</em></li><li><em><strong>Build a portfolio</strong>: Showcase your expertise through a portfolio of your work and contributions.</em></li><li><em><strong>Seek mentorship</strong>: Find a mentor who can guide you and provide valuable insights.</em></li><li><em><strong>Join communities</strong>: Participate in </em><a href="https://hutte.io/webinars/salesforce-open-source/?ref=hutte.io"><em>Salesforce webinars,</em></a><em> user groups, forums, and DevOps meetups.</em></li></ol><br></div></div><h2 id="what-excites-you-in-your-current-role-working-with-different-customers-and-choosing-your-projects-and-assignments">What excites you in your current role, working with different customers and choosing your projects and assignments?</h2><p>I always try to maintain my technical side. When you evolve from a lead developer position to a higher step in the ecosystem, such as a technical lead or architect, switching to more management or solution architecture tasks is very easy. I have also realized that it does not motivate me to wake up and work many hours. I<strong> like the technical side </strong>of Salesforce. Ultimately, it&apos;s also where I am valuable because I feel much more helpful in doing something I know I am quick at, more efficient, and enjoy. </p><h2 id="could-you-point-out-any-of-the-recent-announcements-or-feature-releases-on-the-salesforce-platform-that-specifically-excited-you-or-something-that-has-been-announced-that-youre-looking-forward-to">Could you point out any of the recent announcements or <a href="https://hutte.io/trails/salesforce-release-updates?ref=hutte.io">feature releases</a> on the Salesforce platform that specifically excited you or something that has been announced that you&apos;re looking forward to?</h2><p>Years ago, the one that amazed me was the release of custom data types. I think custom data types, especially to ISVs, made a massive contribution in extending the behavior of a package with extension packages, with<a href="https://hutte.io/trails/1gp-vs-2gp-managed-packages/?ref=hutte.io"> second-generation packaging. </a></p><p>On the other hand, one of the things that I have recently worked with <a href="https://hutte.io/trails/salesforce-flow?ref=hutte.io">is Flow </a>Orchestrator. I thought it was useful until I discovered it is a freemium product. You can use it for free, but after a certain number of requests, you must pay.</p><blockquote><a href="https://hutte.io/trails/ai-in-the-salesforce-ecosystem-2024/?ref=hutte.io">With AI </a>and all those kinds of features that Salesforce is releasing, you don&apos;t need a skilled developer. It&apos;s also an interesting step that Salesforce is taking. On the one hand, it is very positive because it has enormous potential. </blockquote><p>However, it is also concerning as the technical depth that can be created for the future uses these<a href="https://hutte.io/trails/how-ai-is-evolving-salesforce-roles/?ref=hutte.io"> AI systems</a> and gives you a solution, but it is not the best solution. You still need an intelligent person behind the scenes who understands how to implement the solution the AI gives you. This will create a lot of technical depth and maybe bad decisions that we will need to fight in the future. </p><h2 id="im-curious-to-hear-your-thoughts-about-git-based-development-in-salesforce">I&apos;m curious to hear your thoughts about Git-based development in Salesforce</h2><p>I wish I could say by next year, every company in the market will use Git-based development. But I think the reality is a bit different. On one side, I think companies are incrementally switching to Git. They are not all doing it simultaneously and will probably not all be doing it this year. But I think it&apos;s slowly evolving. However, many companies may need more resources, such as having skilled developers or a DevOps engineer on board, to cover this transition. </p><p>However, some companies only realize the challenges of the old way of developing or releasing when they <strong>have a deployment issue</strong> that has a real business impact. As this thinking is late in the game, they will try to switch the complete development lifecycle quickly. </p><p>We also need to talk about all the community contributions, like DX@Scale and CumulusCI.<a href="https://hutte.io/company-blog/enhance-your-salesforce-development-lifecycle-with-flxbl-dx-scale-and-hutte/"> Flxbl </a>is not from Salesforce, nor is DX@Scale. We have made a significant community contribution, which in the DevOps world has been immense and has made the transition to it much easier. If we talk about five or eight years ago, there was little for DevOps. Either you paid a product for it, or you used <a href="https://hutte.io/trails/salesforce-change-sets/?ref=hutte.io">change sets. </a>There is now an extensive landscape of options to make this transition easier. The community in this aspect of Salesforce has been incredible.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text"><em><strong>Read more</strong></em><strong>: </strong><em>Do you want to grasp Git better? </em><a href="https://hutte.io/whitepapers/git-based-development/?ref=hutte.io"><em><strong>Download our starter guide!</strong></em></a></div></div><h2 id="how-does-your-upcoming-travel-schedule-look-do-you-still-visit-many-events-did-you-apply-for-any-talking-slots">How does your upcoming travel schedule look? Do you still visit many events? Did you apply for any talking slots?</h2><p>I have been a speaker on four or five occasions, but I do it occasionally, only when I have a topic I am really enthusiastic about. This year has been a busy year. I wish I could have made it to dreamOl&#xE9; in Granada, but it wasn&apos;t possible because of a personal commitment. But talking about the future, I want to go to <a href="https://hutte.io/company-blog/tdx-2024-insights-from-premier-salesforce-developer-conference/">TDX,</a> which is the one that I have always been looking at. It&apos;s quite difficult to go to TDX, but if we need to create a wishlist, that will be on it. </p><p>Apart from that, another thing I have learned about events is that I have more<strong> fun at small community events, </strong>like dreamOl&#xE9;, CzechDreamin, or London&apos;s Calling, than at huge events like Dreamforce or the World Tour. These are huge events, and meeting with the people you are familiar with in the ecosystem is difficult. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4C5;</div><div class="kg-callout-text"><em><strong>Read more: </strong></em><a href="https://hutte.io/trails/top-salesforce-events-2024/?ref=hutte.io"><em>Top Salesforce events to attend: 2024 calendar</em></a><em>.</em></div></div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Here are some networking tips for your next Salesforce event:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><strong>Prepare ahead</strong>: Research attendees, speakers, and sessions to identify key people and topics of interest.</em></li><li><em><strong>Set goals</strong>: Decide what you want to achieve, whether making new connections, finding potential collaborators, or learning about new tools.</em></li><li><em><strong>Engage on social media</strong>: Use event hashtags and join online discussions before and during the event to connect with others.</em></li><li><em><strong>Arrive early</strong>: Start meeting people in a less crowded environment.</em></li><li><em><strong>Ask questions</strong>: Show genuine interest in others by asking about their work and experiences.</em></li><li><em><strong>Exchange business cards</strong>: Always have business cards handy and be ready to share them.</em></li><li><em><strong>Follow-up</strong>: Send personalized follow-up messages to new contacts to maintain the connection after the event.</em></li><li><em><strong>Attend social activities</strong>: Join lunches, dinners, and after-parties to network more relaxed.</em></li><li><em><strong>Volunteer</strong>: Offer to help at the event, which can provide additional opportunities to meet and interact with people.</em></li></ol></div></div><h2 id="until-next-time">Until next time</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Who would you like our <strong>next expert to be?</strong></div></div><p></p><!--kg-card-begin: html-->	<div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Let us know</h6>
				<p>on our LinkedIn<br></p>
			</div>
			<div class="btn">
				<a href="https://www.linkedin.com/company/28909971/admin/feed/posts/?ref=hutte.io">Learn More</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[New in Hutte: Improved customer invitations and more]]></title><description><![CDATA[There’s a lot happening in Hutte these days. We've made some significant upgrades to the "Invite Customer" flow for consultancies and SI partners using Hutte on the Partner plan. Additionally, we’ve made several quality-of-life upgrades that should save you a click or two.]]></description><link>https://hutte.io/company-blog/new-in-hutte-improved-customer-invitations/</link><guid isPermaLink="false">6687f6bad7797da91f0761b0</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Sun, 02 Jun 2024 13:43:00 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/07/Sprint-36-Cover.png" medium="image"/><content:encoded><![CDATA[<h2 id="inviting-customers-to-hutte-partner-plan">Inviting customers to Hutte (Partner plan)</h2><img src="https://hutte.io/company-blog/content/images/2024/07/Sprint-36-Cover.png" alt="New in Hutte: Improved customer invitations and more"><p>Now, you can pre-create a<strong> project for your customer</strong> and add a specific user from your team (automatically set to the person sending the invitation) who is instantly made a Project Admin. This allows them to assist your customer with the setup process.</p><p></p><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/f7u4jyejrc.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_f7u4jyejrc seo=true videoFoam=true" style="height:100%;position:relative;width:100%">&#xA0;</div></div></div><!--kg-card-end: html--><p>Additionally, a<strong> new &quot;Invitations&quot; tab</strong> has been added to your Org menu. This enables you to monitor sent invitations and their acceptance status.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Invitations-tab.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1817" height="527" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Invitations-tab.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Invitations-tab.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Invitations-tab.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Invitations-tab.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>When creating new projects on the Partner plan, this now defaults to <strong>an invite dialogue. </strong>You can easily toggle to creating an internal project at the click of a button.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/invite-customer-toggle.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1949" height="844" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/invite-customer-toggle.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/invite-customer-toggle.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/invite-customer-toggle.png 1600w, https://hutte.io/company-blog/content/images/2024/07/invite-customer-toggle.png 1949w" sizes="(min-width: 720px) 720px"></figure><h2 id="salesforce-deployment-status-now-linked-in-the-timeline">Salesforce deployment status now linked in the &quot;Timeline&quot;</h2><p>We made a small improvement to the <strong>deployment status interface.</strong> Now, if a deployment fails, you can click on the red box in the &quot;Timeline&quot; to open a deep link to a detailed &#x201C;Deployment Status&#x201D; page, where you can investigate the reasons why the deployment failed (e.g., a lack of test coverage, etc.).</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Failed-deployment-logs.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1943" height="873" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Failed-deployment-logs.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Failed-deployment-logs.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Failed-deployment-logs.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Failed-deployment-logs.png 1943w" sizes="(min-width: 720px) 720px"></figure><h2 id="license-type-now-defaults-to-developer%E2%80%9D-during-sandbox-creation">&quot;License type&quot; now defaults to &quot;Developer&#x201D; during Sandbox creation</h2><p>We made a minor improvement to save you a click: When you&#x2019;re creating a new Sandbox, the &#x201C;License type&#x201D; field will now<strong> default to &#x201C;Developer&#x201D; </strong>instead of starting empty.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/License-type-default.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1817" height="882" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/License-type-default.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/License-type-default.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/License-type-default.png 1600w, https://hutte.io/company-blog/content/images/2024/07/License-type-default.png 1817w" sizes="(min-width: 720px) 720px"></figure><h2 id="salesforce-connections-and-git-repositories-now-searchable-during-project-setup">Salesforce connections and Git repositories now searchable during project setup</h2><p>We&#x2019;ve <strong>added search functionality</strong> to the Hutte project setup flow.</p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/New-Project-Search.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1817" height="573" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/New-Project-Search.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/New-Project-Search.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/New-Project-Search.png 1600w, https://hutte.io/company-blog/content/images/2024/07/New-Project-Search.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>This is especially valuable for Enterprise customers with <strong>dozens of Salesforce Org </strong>connections and hundreds of GitHub repositories. </p><figure class="kg-card kg-image-card"><img src="https://hutte.io/company-blog/content/images/2024/07/Git-project-search.png" class="kg-image" alt="New in Hutte: Improved customer invitations and more" loading="lazy" width="1817" height="527" srcset="https://hutte.io/company-blog/content/images/size/w600/2024/07/Git-project-search.png 600w, https://hutte.io/company-blog/content/images/size/w1000/2024/07/Git-project-search.png 1000w, https://hutte.io/company-blog/content/images/size/w1600/2024/07/Git-project-search.png 1600w, https://hutte.io/company-blog/content/images/2024/07/Git-project-search.png 1817w" sizes="(min-width: 720px) 720px"></figure><p>No more scrolling through an endless list &#x2013; just type the name of the <strong>connection or repository </strong>you want to link in the search field. Even small amounts of time saved add up fast.</p><h3 id="explore-these-improvements-firsthand">Explore these improvements firsthand</h3><p><strong>Get in touch </strong>with us to discover how we can customize a superior user experience for you!</p><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__two">
			<h6><span>Request</span> a demo!</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Contact us</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Why open-source and AI is here to stay (Trails Podcast episode #13 with Alba Rivas)]]></title><description><![CDATA[Join us in this episode as we delve into Alba Rivas' perspective as a Salesforce Principal Developer Advocate. We will discuss how and why AI and open-source are here to stay within the Salesforce ecosystem. Explore her journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/why-open-source-and-ai-is-here-to-stay/</link><guid isPermaLink="false">66560089d7797da91f075df0</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Tue, 28 May 2024 17:01:42 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/05/Alba-Rivas-01.png" medium="image"/><content:encoded><![CDATA[<h2 id="episode-13-alba-rivas-salesforce-principal-developer-advocate">Episode 13: <a href="https://www.linkedin.com/in/alba-rivas/?original_referer=https%3A%2F%2Fwww.google.com%2F&amp;originalSubdomain=es&amp;ref=hutte.io">Alba Rivas,</a> Salesforce Principal Developer Advocate</h2><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article highlights</header>
    <ul>
            <li>Alba Rivas transitioned from a <b>back-end developer</b> working with various technologies to a Salesforce Principal Developer Advocate. Her journey involved learning Apex and actively participating in the Salesforce community, eventually becoming a Salesforce MVP and securing a role in developer advocacy.</li>
            <li>Alba highlighted significant feature releases like Lightning Web Components (LWC) and the integration of <b>generative AI</b> into Salesforce. She emphasized AI&apos;s transformative potential in developing custom applications and workflows and the introduction of tools like Einstein for Developers to assist in coding and testing.</li>
            <li>She discussed Salesforce&apos;s commitment to open-source technologies like LWC and <b>Salesforce CLI.</b> She noted the growing ecosystem of open-source libraries and plugins. She advocated for Git-based development practices, citing benefits like cost efficiency, customization, and improved software quality through community collaboration.</li>
    </ul>
</div>
<!--kg-card-end: html--><h2 id="listen-up-%F0%9F%8E%A7">Listen up &#x1F3A7;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: Why open-source and AI is here to stay (Trails Podcast episode #13 with Alba Rivas)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/4rVlqcDnKTWRlsXMdBRym8?si=6800e1fa168341d2&amp;utm_source=oembed"></iframe></figure><h2 id="tune-in-%F0%9F%8E%AC">Tune in &#x1F3AC;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/Q0KkSd8fyIM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Why open-source and AI is here to stay(Trails Podcast episode #13 with Alba Rivas)"></iframe></figure><h2 id="how-did-you-first-get-in-touch-with-the-salesforce-ecosystem-and-technology-and-how-did-your-career-evolve-from-there">How did you first get in touch with the Salesforce ecosystem and technology, and how did your career evolve from there?</h2><img src="https://hutte.io/company-blog/content/images/2024/05/Alba-Rivas-01.png" alt="Why open-source and AI is here to stay (Trails Podcast episode #13 with Alba Rivas)"><p>I have a technical background. I started telecommunications engineering here in Granada, the city where I live. My first jobs were as developers for other technologies. I knew Python, I did things with Java, and so on. Because of that, I was offered a position as <strong>a back-end developer</strong> in a partner of AppExchange that has some applications on the Salesforce marketplace. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F9D1;&#x1F3FB;&#x200D;&#x1F3EB;</div><div class="kg-callout-text">They basically taught me Apex at the beginning. Because the people at the company and the program for learning were so good, I got up to speed quickly and then evolved my career from there.</div></div><h2 id="did-you-then-move-from-working-for-an-appexchange-isv-partner-to-salesforce-itself">Did you then move from working for an AppExchange ISV partner to Salesforce itself?</h2><p>In the middle, I spent some months in a Salesforce training company, which offered <strong>courses about Salesforce development</strong> and Salesforce in general. Then, a position opened in the team I am currently in, which is developer advocacy for the platform. I knew many people from that team because I was very active in the Salesforce community. I was also a <a href="https://hutte.io/trails/what-is-a-salesforce-mvp?ref=hutte.io">Salesforce MVP. </a>When I heard about the position, I thought this was for me. I also liked teaching and training, so I applied for the position and got it.</p><h2 id="what-are-some-feature-releases-that-specifically-excited-you-in-the-past-or-is-there-anything-upcoming-that-you-are-looking-forward-to-when-we-look-at-the-whole-bandwidth-of-technology-the-salesforce-platform-offers-its-users-and-partners">What are some feature releases that specifically excited you in the past? Or is there anything upcoming that you are looking forward to when we look at the whole bandwidth of technology the Salesforce platform offers its users and partners?</h2><p>Lightning Web Components were a complete game changer. Before they were available, we had to<strong> code with Visualforce, </strong>and Aura was somewhere in the middle. When they came out, they were an open and standardized way of building front-end with well-accepted technologies in the development ecosystem. I was so glad that I could learn JavaScript very well and better CSS, HTML, and web components. It is entirely standard, although we provide a thin layer on top of that so you can use them in Salesforce more agilely.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F9E0;</div><div class="kg-callout-text">Everything opened up, which I enjoyed. I was a back-end developer, but I&apos;m now a full-stack developer, as I spent a lot of time learning web <strong>components in JavaScript</strong>. In the beginning, it was a challenge because the mindset of a back-end developer is quite different from that of a front-end developer. You need to invest some time in the beginning so that things stick in your mind and you understand what user interfaces are doing behind the scenes when you execute them in the browser.</div></div><p>The second one, of course, is AI. Generative AI has come here to stay, and it&apos;s been a small revolution. I think it has a lot of potential. There are many opportunities for companies to develop themselves and customer applications and create custom workflows using AI features. I think Salesforce is doing a great job of making things easy for customers regarding AI adoption.</p><blockquote>I was initially skeptical when we started to create our own AI products, but now that I&apos;ve been playing with them for a few months and implementing things myself, I think it&apos;s super powerful. There are many use cases that people can implement and for which they can leverage the help of AI.</blockquote><h2 id="do-you-see-ai-changing-the-life-of-salesforce-developers-lets-say-from-local-to-pro-already-now-or-do-you-think-it-will-take-more-time">Do you see AI changing the life of Salesforce Developers, let&apos;s say, from local to pro already now, or do you think it will take more time?</h2><p>I like saying that developers can get <a href="https://hutte.io/trails/ai-in-the-salesforce-ecosystem-2024/?ref=hutte.io">involved with AI</a> in two main ways. One of the ways to do this is by using the generative AI features of the<strong> platform to create apps. </strong>By the way, you can try it out for free, because you don&apos;t need a license for that, but using them in production depends on your company.</p><p>Suppose your company purchases those licenses or add-ons and invests in AI. In that case, developers must get involved with <a href="https://hutte.io/trails/salesforce-ai-powered-code-builder/?ref=hutte.io">Prompt Builder,</a> Copilot, and Model Builder. Their life will change in some sense because they will be developing generative <a href="https://hutte.io/trails/best-ai-podcasts/?ref=hutte.io">AI applications, </a>on top of the applications they are used to developing.</p><p>The second tool applies to every Developer &#x2013; <a href="https://hutte.io/trails/einstein-1-studio/?ref=hutte.io">Einstein for Developers. </a>It is an assistant that you can use in Visual Studio Code. It is an extension that you install, and it <strong>helps you generate code</strong> and learn how to generate code. There are three ways in which you can use it.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text"><em><strong>Read more: </strong>Try out </em><a href="https://hutte.io/company-blog/visual-studio-code-for-web/"><em>Hutte and Visual Studio Code for the Web</em></a><em>.</em></div></div><ul><li><strong>One way is prompt-based, </strong>which is probably helpful for beginners and those who are learning and want to ask Einstein to generate classes and methods that do certain things.</li><li>The <strong>next is inline suggestions.</strong> If you activate Einstein for Developers in your org, while you are typing and creating your code, Einstein will give you suggestions. Many times, those suggestions are very accurate because Einstein for Developers takes into account the files you have opened in your project. If you are using a certain style guide or programming methods, the suggestions will follow that same style.</li><li>The third way you can use it is<strong> to generate tests. </strong>You can go into a method, click the right button, and select &quot;Generate test.&quot; This one is complex, as creating tests is hard work. It&apos;s not going to be 100% right most of the time, but at least it&apos;s going to generate some structure. It&apos;s also going to do some work for you so that you can start playing with that test and finalize it. It saves you time and makes you much more productive.</li></ul><h2 id="do-you-have-any-thoughts-about-open-source-and-salesforce-and-how-they-play-together">Do you have any thoughts about open-source and Salesforce and how they play together?</h2><p>Salesforce was the first one to turn towards open-source because LWC is open-source. The Salesforce CLI is open-source and all its plugins &#x2013; not 100% of them, but most of them. I know there&apos;s been an <strong>ongoing effort to open-source </strong>all the different plugins and technology. LWR is also open-source. So, it&apos;s something that Salesforce is adopting as part of its philosophy and pushing internally and externally.</p><p>I think that&apos;s probably one of the reasons the general open-source ecosystem around Salesforce is growing. I can tell you that it is growing because I&apos;ve been looking at some of the repository statistics of open-source libraries:</p><ul><li>&#x201C;sfdx-git-delta&#x201D; from S&#xE9;bastien Colladon has<strong> 60K downloads a week, </strong>which is impressive.</li><li><a href="https://github.com/hutte-recipes/hutte-sfdmu?ref=hutte.io">SFDMU</a>, which is the Salesforce Data Move Utility, has <strong>6K downloads a week.</strong></li><li>We have DX@Scale (now Flxbl), which has <strong>4.3K weekly downloads.</strong></li></ul><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4D6;</div><div class="kg-callout-text"><em><strong>Read more: </strong></em><a href="https://hutte.io/company-blog/enhance-your-salesforce-development-lifecycle-with-flxbl-dx-scale-and-hutte/"><em>Enhance your Salesforce development lifecycle with Flxbl (&#x201C;DX@Scale&#x201D;) and Hutte</em></a>.</div></div><p>There are many more plugins, libraries, and frameworks people are open-sourcing, maintaining, and downloading. Many of them apply to DevOps, which allows our customers and partners to build their own DevOps workflows using a combination of paid and open-source features. Everything is open-source, which is terrific.</p><h2 id="do-you-think-that-going-git-based-will-become-more-mainstream-in-salesforce-teams">Do you think that going Git-based will become more mainstream in Salesforce teams?</h2><p>I think that&apos;s definitely going to be the trend. But I also think that there is a lot of work, a lot of education, and a lot of advocacy to do. Many people just don&apos;t know what&apos;s available. When I go to conferences, give talks, have discussions, and do some networking, many people don&apos;t even know that <strong>the Salesforce CLI exists.</strong></p><p>It&apos;s surprising for me as I&apos;m always learning the latest technologies because I work for Salesforce, and it&apos;s my job. But it&apos;s not that surprising for other people. I have many colleagues and friends who work in different companies, and they explain to me which practices are being followed. </p><blockquote class="kg-blockquote-alt">Sometimes, it&apos;s not a lack of knowledge, but a lack of investment from the company. A lack of investment usually means a lack of knowledge from company directives that don&apos;t see the value of investing in certain features. This could maybe be due to us (in Salesforce) not telling the whole story or telling the story in a way that conveys value.</blockquote><p>I do, however, think that many people are helping with this. For instance, open-source advocates who have been building libraries &#x2013; and yourself with this podcast &#x2013; are doing a fantastic job advocating the right thing. I hope that more people <strong>adopt Git-based development</strong> and proper CI/CD best practices in their Salesforce projects and implementations over time.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Here are some benefits of going Git-based:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Cost efficiency</strong>: Reduced licensing fees and lower overall costs.</em></em></em></li><li><em><em><em><strong>Customization</strong>: Enhanced flexibility to tailor solutions specifically to business needs.</em></em></em></li><li><em><em><em><strong>Community support</strong>: Access to a vast community of developers and users for collaboration and problem-solving.</em></em></em></li><li><em><em><em><strong>Transparency</strong>: Greater visibility into the codebase, fostering trust and security.</em></em></em></li><li><em><em><em><strong>Innovation</strong>: Faster implementation of new features and technologies due to collective contributions.</em></em></em></li><li><em><em><em><strong>Quality improvement</strong>: Continuous testing and feedback from the community help improve software quality and reliability.</em></em></em></li><li><em><em><em><strong>Vendor independence</strong>: Avoids vendor lock-in, providing greater control over your technology stack.</em></em></em></li><li><em><em><em><strong>Rapid deployment</strong>: Accelerated development cycles through shared resources and pre-built modules.</em></em></em></li></ol></div></div><p></p><!--kg-card-begin: html--><div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Do you want to up your</h6>
				<p>Git game?<br></p>
			</div>
			<div class="btn">
				<a href="https://hutte.io/whitepapers/git-based-development/?ref=hutte.io">Download our book!</a>
			</div>
		</div>
	</div><!--kg-card-end: html--><h2 id="whats-coming-up-for-you-on-your-travel-schedule-is-there-any-event-that-you-are-specifically-looking-forward-to">What&apos;s coming up for you on your travel schedule? Is there any event that you are specifically looking forward to?</h2><p>We are doing an AI + Data World Tour globally. I&apos;m presenting at several places. For instance, I did a workshop in Granada. I enjoyed it because it was very new for everyone. People usually have many questions, and I <strong>interact with them </strong>a lot during those meetings. I think that they are finding that super helpful. It&apos;s like a session in which we explain everything around the new generative AI features and how Data Cloud supports them.</p><p>In addition, I am attending two new community conferences. One of them was Wir sind Ohana in Berlin (it took place on 24 May), and the other is Portugal Dreamin&apos; in July in Lisbon. The passion that you see in first-time organizers is fantastic. I love that every time I go to a <a href="https://hutte.io/trails/top-salesforce-events-2024/?ref=hutte.io">first-time community conference,</a> it&apos;s like the best conference ever.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><em><strong>Are you going to a Salesforce event for the first time? Here are some tips:</strong></em></h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ul><li><em><em><em>Get an <strong>overview of event schedules: </strong>Take note of sessions relevant to your interests or professional development goals. Prioritize critical activities and strategically select sessions that align with your objectives.</em></em></em></li><li><em><em><em>Plan downtime for<strong> networking and exploration:</strong> While attending sessions is essential, remember to allocate time for networking and exploration. Attending events is 50% learning and 50% networking. Hence, schedule breaks between sessions to engage with fellow attendees, speakers, and exhibitors.</em></em></em></li><li><em><em><em><strong>Participate in Q&amp;A sessions:</strong> Prepare relevant questions in advance and actively participate in Q&amp;A segments after sessions and workshops. Engaging with speakers and fellow attendees during these sessions showcases your expertise and opens avenues for meaningful conversations.&#xA0;</em></em></em></li></ul></div></div><h2 id="until-next-time">Until next time</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Who would you like <strong>our next expert to be?&#xA0;</strong></div></div><p></p><!--kg-card-begin: html-->	<div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Let us know</h6>
				<p>on our LinkedIn<br></p>
			</div>
			<div class="btn">
				<a href="https://www.linkedin.com/company/28909971/admin/feed/posts/?ref=hutte.io">Learn more</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[New in Hutte: Billing user and enhanced billing page, and more]]></title><description><![CDATA[Dive into the details of our job abortion button and custom button interface, providing optimized usability. Additionally, uncover how browsing all metadata within your organization has been streamlined for a more intuitive experience. ]]></description><link>https://hutte.io/company-blog/billing-user-and-enhanced-billing-page-and-more/</link><guid isPermaLink="false">6644ae61d7797da91f075da3</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Wed, 15 May 2024 12:58:04 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/05/Screenshot-2024-05-31-at-13.35.35.png" medium="image"/><content:encoded><![CDATA[<img src="https://hutte.io/company-blog/content/images/2024/05/Screenshot-2024-05-31-at-13.35.35.png" alt="New in Hutte: Billing user and enhanced billing page, and more"><p>Last but not least, read on as we unveil further improvements, including our &apos;simple deploy&apos; functionality and enhanced billing options.</p><h2 id="job-abortion">Job abortion</h2><p>We&apos;ve added the ability to <strong>abort long-running operations </strong>on your Salesforce orgs. You&apos;ll find the new &quot;Abort&quot; button throughout Hutte &#x2013; whether you&apos;re executing custom scripts from custom buttons, pulling changes, or deploying a feature to a target org.</p><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/o8yxEw41p3mWZussRweK-lP4dtOmEzLyc9NycagWmy4j0rYbyZEpFzoRXjZ85C2W4s6KpbpxDRL60yM6z4mTApU_L7Sk0Wn0r9BE319nm6-FqT5iauynpxnUOXjzhzZsRTRs85wv-ZE6JpcTpAkNlqI" class="kg-image" alt="New in Hutte: Billing user and enhanced billing page, and more" loading="lazy" width="560" height="152"></figure><h2 id="improved-custom-button-interface">Improved custom button interface</h2><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/63s1p466le.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:50.83% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_63s1p466le seo=true videoFoam=true" style="height:100%;position:relative;width:100%"><div class="wistia_swatch" style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;"><img src="https://fast.wistia.com/embed/medias/63s1p466le/swatch" style="filter:blur(5px);height:100%;object-fit:contain;width:100%;" alt="New in Hutte: Billing user and enhanced billing page, and more" aria-hidden="true" onload="this.parentNode.style.opacity=1;"></div></div></div></div><!--kg-card-end: html--><p>We&apos;ve refined the positioning and <strong>alignment of main actions</strong> like &quot;Log in&quot; and &quot;Pull changes,&quot; as well as project-specific actions (custom buttons), to optimize the use of available screen space.</p><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/hKvaWBpwpo7hCvSx3pC1kHtnDrgFWg6lhcTjriKOFyTAXO0B04jIzravHtg9qJQtttakfAJadQTd8VevFphxtielrjgibIeBvRONJQyjt8UfD3i0c5v-RuQeawdEi7MKCZ9GNusuHAjYifY9C62ut4o" class="kg-image" alt="New in Hutte: Billing user and enhanced billing page, and more" loading="lazy" width="560" height="139"></figure><h2 id="enhancements-for-browsing-all-metadata-of-an-org">Enhancements for browsing all metadata of an Org</h2><p>We&apos;ve <strong>enhanced the loading behavior</strong> when browsing &quot;All Metadata&quot; in your connected Scratch Org or Sandbox. This update prevents occasional timeouts that happened previously and improves the user experience. Additionally, we&apos;ve introduced indicators to display the number of metadata components in each directory.</p><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/hTVr6O0KoSCCOo6AwCsvG9S3-iw-b9UTTcVD58vz--Vsqf1EuXkJh2OihwV6gNxRdDoc0Qw0uno8HBNZAidtDnP5iEeV-Ow4cz4NAcbyZ1FrDWiK4C5Tsro45arimX0-g18lm2_qAK9ZtMSs-_ew2NQ" class="kg-image" alt="New in Hutte: Billing user and enhanced billing page, and more" loading="lazy" width="560" height="183"></figure><h2 id="further-improvements-to-the-simple-deploy-functionality">Further improvements to the &apos;simple deploy&apos; functionality</h2><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/5jlia9e24g.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:50.83% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_5jlia9e24g seo=true videoFoam=true" style="height:100%;position:relative;width:100%"><div class="wistia_swatch" style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;"><img src="https://fast.wistia.com/embed/medias/5jlia9e24g/swatch" style="filter:blur(5px);height:100%;object-fit:contain;width:100%;" alt="New in Hutte: Billing user and enhanced billing page, and more" aria-hidden="true" onload="this.parentNode.style.opacity=1;"></div></div></div></div><!--kg-card-end: html--><p>While we suggest that deployments should ideally be managed by your pipeline, we understand there are situations where a quick deployment of metadata changes to a target organization is necessary.</p><p>Therefore, we continue to enhance our simple deploy functionality. The latest improvements<strong> display the type </strong>of deployment (validation or full deployment) and the target organization on the timeline. This way, you keep this information in view during and after your deployment.</p><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/qpRnDyoqPKneuls7KI8X_7dhimTiyCUc7JjY9nVu1wAEEF5A5zfBPdGDJqegf7jiujhQvqLWQj4bK8v069vvnX6GSKKrRAG1q8RYH6APQGv8eOdhpxo0lYjm1DHRVLXfWK14hhj1gJCARRlBXpuf4EM" class="kg-image" alt="New in Hutte: Billing user and enhanced billing page, and more" loading="lazy" width="560" height="152"></figure><h2 id="billing-user-and-enhanced-billing-page">Billing user and enhanced billing page</h2><!--kg-card-begin: html--><script src="https://fast.wistia.com/embed/medias/ol7y7mk40e.jsonp" async></script><script src="https://fast.wistia.com/assets/external/E-v1.js" async></script><div class="wistia_responsive_padding" style="padding:50.83% 0 0 0;position:relative;"><div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><div class="wistia_embed wistia_async_ol7y7mk40e seo=true videoFoam=true" style="height:100%;position:relative;width:100%"><div class="wistia_swatch" style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;"><img src="https://fast.wistia.com/embed/medias/ol7y7mk40e/swatch" style="filter:blur(5px);height:100%;object-fit:contain;width:100%;" alt="New in Hutte: Billing user and enhanced billing page, and more" aria-hidden="true" onload="this.parentNode.style.opacity=1;"></div></div></div></div><!--kg-card-end: html--><p>We have good news for organizations that handle Hutte billing separately from the actual user team! You can now conveniently invite a billing user who has access to our significantly improved billing page. They can also view the plan overview, which helps you select the most suitable paid plan for your needs. Billing users<strong> are free of charge, </strong>and there&apos;s no cap on the number you can create.</p><h2 id="additional-enhancements">Additional enhancements</h2><ul><li>We now<strong> show the pull request</strong> link on a Sandbox feature without refreshing it (when implicitly creating a pull request).</li><li>When parallel feature development in Sandboxes is enabled, this no longer applies to Pool Orgs<strong></strong></li><li>We have a<strong> new &#x2018;combobox&#x2019; component</strong> implemented throughout the app. </li></ul><h3 id="experience-these-transformations-firsthand">Experience these transformations firsthand</h3><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Reach out to us to unpack how we can tailor an exceptional user experience for you through<strong> a demo request!</strong></div></div><p></p><!--kg-card-begin: html--><!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body,html{
	margin:0px;
	padding:0px;
}
body *{
	box-sizing:border-box;
	font-family:"Roboto" ,sans-serif;
}
.container{
	max-width: 1230px;
	width: 100%;
	margin-left: auto;
	margin-right: auto;
	padding-left: 15px;
	padding-right: 15px;
}
.cta__wrapper{
	border-radius: 25px;
	background-color:#8380FF;
	min-height: 240px;
	padding-left: 50px;
	padding-right: 50px;
}
.cta__wrapper.cta__one{
	display: flex;
	flex-direction:column;
	align-items:flex-start;
	justify-content: flex-end;
	padding-bottom: 10px;
	background:url('https://ghost.hutte.io/trails/content/images/size/w1600/2024/05/line1-1.png');
	background-repeat: no-repeat;
	background-size: 900px;
	background-position: bottom right;
	background-color:#8380FF;
}
.cta__wrapper.cta__two{
	display: flex;
	flex-direction:column;
	align-items:flex-start;
	justify-content: flex-end;
	padding-bottom: 50px;
	background:url('https://ghost.hutte.io/trails/content/images/size/w1600/2024/05/line3.png');
	background-size: contain;
	background-repeat: no-repeat;
	background-position: 100.5%  center;
	background-color:#8380FF;
}
.cta__wrapper>h6 span{
	font-weight: bold;
}
.cta__wrapper .btn>a{
	min-height: 50px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding-left: 25px;
	padding-right: 25px;
	background-color:#FFFFFF;
	border-radius: 250px;
	color:#8380FF;
	font-size: 24px;
	line-height: 29px;
	font-weight: bold;
	text-decoration: none;
}
.cta__wrapper>h6{
	margin:0px;
	margin-bottom: 20px;
	font-size: 34px;
	line-height: 42px;
	font-weight: 300;
	color:#fff;
}
.cta__three{
	display: flex;
	justify-content: space-between;
	align-items: center;
	background:url('https://ghost.hutte.io/trails/content/images/size/w1600/2024/05/line3.png');
	background-repeat: no-repeat;
	background-size: contain;
	background-position: bottom right;
	background-color:#8380FF;
}
.cta__three .btn{
	position: relative;
	top:20px;
}
.cta__three .desc>p{
	margin:0px;
	font-size: 26px;
	line-height: 34px;
	color:#fff;
}
.cta__three .desc>h6{
	margin-top: 0px;
	margin-bottom: 12px;
	font-size: 34px;
	line-height: 42px;
	font-weight: bold;
	color:#fff;
}
@media  (max-width: 991px){
	.cta__wrapper.cta__one{
		background-size: 740px;
	}
}
.cta__wrapper.cta__three  .desc{
	max-width: 280px;
	width: 100%;
}
@media (max-width: 767px){
	.cta__wrapper.cta__one{
		padding-left: 25px;
		padding-right: 25px;
		padding-bottom: 35px;
	}
	.cta__wrapper.cta__two{
		padding-left: 25px;
		padding-right: 25px;
		padding-bottom: 35px;
	}
	.cta__wrapper.cta__three{
		padding-left: 25px;
		padding-right: 25px;
	}
	.cta__wrapper>h6{
		font-size: 28px;
		line-height: 34px;
	}
	.cta__wrapper .btn>a{
		min-height: 44px;
		padding-left: 19px;
		padding-right: 19px;
		font-size: 20px;
		line-height: 25px;
	}
	.cta__three .desc>h6{
		font-size: 28px;
		line-height: 34px;
	}
	.cta__three .desc>p{
		font-size: 20px;
		line-height: 24px;
	}
	.cta__wrapper.cta__one{
		background-size: 500px;
	}
	.cta__wrapper{
		min-height: 200px;
	}
}
@media (max-width: 520px){
	.cta__wrapper.cta__three{
		flex-direction:column;
		align-items: flex-start;
		justify-content: center;
	}
	.cta__three .btn{
		top:0px;
		margin-top:20px;
	}
	.cta__wrapper.cta__three{
		padding-top: 25px;
		padding-bottom: 25px;
	}
	.cta__wrapper.cta__two{
		background:url('https://ghost.hutte.io/trails/content/images/2024/05/line2semi.png');
	background-size: contain;
	background-repeat: no-repeat;
	background-position: 100.5%  center;
	background-color:#8380FF;
	}
}
@media (max-width: 480px){
	.cta__wrapper.cta__one{

	}
}
    </style>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<link rel="stylesheet" href="css/style.css">
	<link rel="preconnect" href="https://fonts.googleapis.com">
	<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
	<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&amp;display=swap" rel="stylesheet">
</head>
<body>
	<div class="container">
		<div class="cta__wrapper cta__one">
			<h6><span>Contact us</span> <br>to request a demo</h6>
			<div class="btn">
				<a href="https://hutte.io/contact-us/?ref=hutte.io">Get Started</a>
			</div>
		</div>
	</div>
</body>
</html><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Why community, learning, and sharing is essential in Salesforce DevOps (Trails Podcast episode #12 with Julian Joseph)]]></title><description><![CDATA[Join us in this episode as we delve into Julian Joseph's perspective as a Salesforce DevOps Engineer. We will discuss the importance of community, learning, and sharing in the Salesforce ecosystem. Explore his journey, gain insights, and discover valuable tips.]]></description><link>https://hutte.io/company-blog/why-community-learning-and-sharing-is-essential-in-salesforce-devops/</link><guid isPermaLink="false">6622814fd7797da91f075cfa</guid><category><![CDATA[Trails Podcast episodes]]></category><dc:creator><![CDATA[Samantha Spiro]]></dc:creator><pubDate>Fri, 19 Apr 2024 16:54:43 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/04/Julian-Joseph-01.png" medium="image"/><content:encoded><![CDATA[<h2 id="episode-twelve-julian-joseph-salesforce-devops-engineer">Episode twelve: <a href="https://www.linkedin.com/in/juliandjoseph/?ref=hutte.io">Julian Joseph</a>, Salesforce DevOps Engineer</h2><!--kg-card-begin: html--><div class="hutte-summary-box">
    <header>Article Highlights</header>
    <ul>
            <li>Community-driven development has played a crucial role in advancing Salesforce DevOps by fostering <b>open-source projects</b> like the Nonprofit Success Pack (NPSP), which started as a community initiative.
</li>
            <li>Automation in <b>Salesforce DevOps</b> has evolved significantly, enabling the creation of environments and managing metadata programmatically, though challenges remain in fully automating all processes.</li>
            <li>Git-based development is becoming a standard in the Salesforce ecosystem, with <b>over 90%</b> of Salesforce Developers using Git for version control, highlighting a shift towards more structured and reliable DevOps practices.</li>
    </ul>
</div>
<!--kg-card-end: html--><h2 id="listen-up-%F0%9F%8E%A7">Listen up &#x1F3A7;</h2><figure class="kg-card kg-embed-card"><iframe style="border-radius: 12px" width="100%" height="152" title="Spotify Embed: Why community, learning, and sharing is essential in Salesforce DevOps (Trails Podcast episode #12 with Julian Joseph)" frameborder="0" allowfullscreen allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" src="https://open.spotify.com/embed/episode/6KE1RlKvg9eAAyuecXVPCx?si=3LV1Z4WYS3-XVqZybXcNGQ&amp;utm_source=oembed"></iframe></figure><h2 id="watch-it-in-action-%F0%9F%8E%9E%EF%B8%8F">Watch it in action &#x1F39E;&#xFE0F;</h2><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/z-KRnKBo_qE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Why learning is essential in Salesforce DevOps (Trails Podcast episode #12 with Julian Joseph)"></iframe></figure><h2 id="please-give-us-a-brief-overview-of-how-you-first-became-involved-with-the-salesforce-ecosystem-and-how-your-career-evolved-from-there">Please give us a brief overview of how you first became involved with the Salesforce ecosystem and how your career evolved from there</h2><img src="https://hutte.io/company-blog/content/images/2024/04/Julian-Joseph-01.png" alt="Why community, learning, and sharing is essential in Salesforce DevOps (Trails Podcast episode #12 with Julian Joseph)"><p>I started as an intern on the nonprofit side of Salesforce work. The VP asked me to<strong> learn Salesforce,</strong> so I went the Admin route. It was before Trailhead existed, so I spent a lot of time looking at help articles and trying to understand what Salesforce was.</p><blockquote>Did you know that Salesforce&apos;s Trailhead platform launched in 2014 and has empowered over 30 million learners globally to skill up and advance their careers in the Salesforce ecosystem through interactive, gamified learning experiences? </blockquote><p>That led me to learn about the Nonprofit Success Pack (NPSP), one of the largest managed packages created by the community and then taken in-house at Salesforce itself. With that set of packages, I became familiar with installing them and getting them up and running at the nonprofit I worked for. From there, I transitioned into a job in San Diego, where I&apos;m now based.</p><p>I was working with another company in the nonprofit space. I was their first <strong>technical Salesforce-focused support person.</strong> They had a product on AWS (their app), but the integration was Salesforce. I focused on that managed package within that company, transitioning from technical support and working with customers to working with the dev team. </p><p>I also did a mix of testing and DevOps tasks building environments when scratch orgs were brand new. I then transitioned to Salesforce in their nonprofit division, working on NPSP. I moved to what many call &quot;the Mothership&quot; and worked there for a few years. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F91D;</div><div class="kg-callout-text">I became even more familiar with Salesforce DevOps and worked with what I consider to be the<strong> best Salesforce DevOps team </strong>there is (at least at that time). <a href="https://www.linkedin.com/in/jasonlantz?ref=hutte.io">Jason Lantz</a> and this team built open-source tooling. After that, I moved to another ISV, and most recently, I&apos;m a Salesforce customer for the first time.</div></div><h2 id="so-npsp-didnt-start-at-the-mothership-but-was-a-community-project-that-salesforce-took-on">So, NPSP didn&apos;t start at the Mothership but was a community project that Salesforce took on?</h2><p>Yeah, that&apos;s what I understood from <strong>people in the community.</strong> This was before I started using NPSP. I think the story goes that it was an open-source community project that was then brought into &#x201C;Salesforce.org.&#x201D;</p><p>They funded and supported it under the Salesforce Foundation, Salesforce&apos;s nonprofit. Later, &quot;Salesforce.com&quot; purchased &quot;Salesforce.org&quot; right when I joined. But it started in the community and is open-source.</p><h2 id="its-probably-one-of-the-packages-with-the-largest-subscriber-base-i-think-there-were-about-30k-subscriber-orgs-in-that-package-so-i-can-imagine-that-it-raised-some-challenges-for-devops-processes-and-pushed-the-tooling-that-salesforce-also-came-up-with-to-bring-in-proper-practices-around-packaging-and-distribution">It&apos;s probably one of the packages with the largest subscriber base. I think there were about 30K subscriber orgs in that package. So, I can imagine that it raised some challenges for DevOps processes and pushed the tooling that Salesforce also came up with to bring in proper practices around packaging and distribution</h2><p>I think CumulusCI itself was born out of the need to scale many of these issues that were being done with small <strong>one-off bash scripts</strong> or some smaller processes being done manually. But once you hit that set, scale, and size, you need to figure out a better way to distribute and update the package. It&apos;s actually a set of multiple packages, dependencies, and things like that.</p><h2 id="how-did-you-see-the-big-picture-of-the-salesforce-devops-ecosystem-evolve-over-the-past-few-years-until-now">How did you see the big picture of the Salesforce DevOps ecosystem evolve over the past few years until now?</h2><p>Much of my experience comes from the ISV side of DevOps, which is &apos;a niche within a niche, within a niche,&apos; because Salesforce itself has its flavor of DevOps from, if you say, &quot;Oh, I&apos;m a DevOps Engineer.&quot; I always have to caveat, &quot;No, I&apos;m a Salesforce DevOps Engineer,&quot; which is a little more focused on the ISV side. That&apos;s even its own kind of subset. In terms of how it&apos;s changed, I feel like I&apos;ve benefited from being more on the <strong>end-user side of DevOps, </strong>even though I&apos;ve also been developing some of these automations. </p><p>I think we&apos;ve gotten to a place where many of the tasks that were manual early on can be automated. Whether that&apos;s creating an environment with, for example, scratch orgs or even using the CLI to create sandboxes, it&apos;s about being able to create an environment in a programmatic way that used to be impossible. That was a huge achievement. And then getting deeper into metadata and data configuration while these processes <strong>were partially automated.</strong> </p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text"><strong><em>If you are looking for some tips on how to execute Salesforce DevOps, have a look at the strategies below: </em>&#x200C; </strong>&#x200C;</h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ol><li><em><em><em><strong>Automation</strong>: Automate your development, testing, and deployment processes as much as possible.</em></em></em></li><li><em><em><em><strong>Version control</strong>: Utilize version control systems like Git to track changes to your Salesforce metadata and collaborate effectively with your team.</em></em></em></li><li><em><em><em><strong>Modular development</strong>: Break down your Salesforce org into smaller, modular components.</em></em></em></li><li><em><em><em><strong>Continuous integration</strong>: Implement CI practices to automatically merge code changes into a shared repository and run automated tests.</em></em></em></li><li><em><em><em><strong>Continuous deployment</strong>: Aim for continuous deployment to automatically deploy changes to production or sandbox environments after successful testing and validation.</em></em></em></li><li><em><em><em><strong>Environment management</strong>: Establish clear processes for managing Salesforce environments, including sandbox creation, data seeding, and environment refreshes.</em></em></em></li><li><em><em><em><strong>Feedback loops</strong>: Establish feedback loops between Developers, Testers, and stakeholders to gather insights.</em></em></em></li><li><em><em><em><strong>Monitoring and analytics</strong>: Implement monitoring and analytics tools to track the performance of your Salesforce applications in real time.</em></em></em></li><li><em><em><em><strong>Training and collaboration</strong>: Invest in training and fostering collaboration among your team members to ensure everyone is aligned with DevOps practices and can contribute effectively to the development process.</em></em></em><br></li></ol><br></div></div><p>I&apos;d also say that any process you want to do can be automated today. That being said, I think there&apos;s still a long way to go to actually being able to practically automate everything. Just because you can&apos;t do it doesn&apos;t mean it&apos;s easy to do. For example, there are still some things that can be done programmatically that I&apos;ve personally built UI automations to do. </p><p>We&apos;ve come a long way in terms of having the capabilities to simplify things and actually create a<strong> full end-to-end development flow. </strong>But there&apos;s still a long way to go to actually wanting to do that in every situation and having enough resources to do it.</p><h2 id="with-git-being-somehow-de-facto-at-the-core-of-most-devops-processes-how-do-you-see-the-penetration-of-git-based-development-in-the-salesforce-ecosystem">With Git being somehow de facto at the core of most DevOps processes, how do you see the penetration of Git-based development in the Salesforce ecosystem?</h2><p>Between the partner community of, for example, ISV and OEM development versus customers on the ISV side, a good portion of midsize to larger ISVs are doing Git-based development.</p><blockquote>In fact, over 90% of Salesforce Developers use Git as their primary version control system for managing Salesforce metadata.</blockquote><p>Many would say they want to have a better branching strategy. But <strong>using version control</strong> as your source of truth is pretty common (less so on the customer side). I think one of the biggest reasons for that is the importance of sandboxes and how difficult it is to replicate your production environment without wanting to resort to the relatively easy way of creating a sandbox, getting all the metadata and configuration, and making modifications on top of it. </p><p>We will not see a huge shift until we move away from that being the base process in creating and distributing your next environment. That being said, I think the mindset is there.</p><p>From my experience, many teams want to make the change. They are probably <strong>using Git extensively</strong> for their branch management and then figuring out some way of sometimes deploying that to sandboxes when they can. It could also involve creating a data set or bash script and locating that in your version control. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F570;&#xFE0F;</div><div class="kg-callout-text">I think many teams are moving away from org-to-org deployment to moving towards deploying from version control. However, many of them are also hamstrung by the fact that it is <strong>easier to create a sandbox.</strong> When you&apos;re facing a time crunch, you&apos;re going to resort to that when you have that ability, and it&apos;s going to be a barrier to making that switch.</div></div><h2 id="i-feel-that-there-is-quite-a-positive-dynamic-in-the-salesforce-open-source-landscape-do-you-share-that-impression-did-you-have-touch-points-with-any-of-those-toolings-like-dxscale-beyond-your-hands-on-work-on-cumulusci-at-salesforce">I feel that there is quite a positive dynamic in the Salesforce open-source landscape. Do you share that impression? Did you have touch points with any of those toolings (like DX@Scale) beyond your hands-on work on CumulusCI at Salesforce?</h2><p>I see the open-source landscape for Salesforce DevOps as being extremely encouraging. Besides the tools themselves, it feels like that group is always growing. Whether it&apos;s creating things like the Salesforce DevOps Manifesto, encouraging conversations on LinkedIn, or creating tools like Flxbl (formerly known as &quot;DX@Scale&quot;). </p><p>I like to<strong> read the documentation</strong> to get ideas. I think each one has its sweet spot. I&apos;m thinking about some that focus on pooling and others that allow you to bring in custom bash scripts, which is easier versus having it be more prescriptive in terms of these sets of tasks or flows you already have. </p><p>There is a lot of value in seeing what each one is doing, and there are ways to use them interchangeably. I have seen a lot of progress with using GitHub Actions as existing scripts, and I have even seen people who&apos;ve created their own GitHub Actions. GitHub Actions are small actions or steps that could be large. You can incorporate them in your deployment to run something like modifying an environment or creating a Salesforce environment. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F50E;</div><div class="kg-callout-text">For example, one I&apos;ve used is SGD (&quot;sfdx-git-delta&quot;). It&apos;s a plugin for SFDX. It looks at two <strong>different branches or commits </strong>and the changes between them. Specifically, it looks for things to deploy, delete, update, or modify.&#xA0;</div></div><p>Once I started to look for more actions and plugins, I found quite a few out there, some of which are not even non-Salesforce specific. For example, a Slack notification that lets you know a job is done elevates your builds. When you pair it with a tool like CumulusCI, you can find ways to integrate them all together. You can have a pretty powerful setup, and you can get a lot closer to that ideal of having everything automated in a practical way.</p><h2 id="can-you-tell-us-about-your-git-together-training-activities-and-also-what-drives-you-behind-being-open-to-sharing-your-knowledge-and-helping-others-on-their-journey">Can you tell us about your git-together training activities and also what drives you behind being open to sharing your knowledge and helping others on their journey?</h2><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F9E0;</div><div class="kg-callout-text">What drives me is the <strong>input and resources </strong>others have put into me. I mentioned my journey starting off in the nonprofit space as an intern &#x2013; somebody was always teaching and sharing knowledge with me. This was often free of charge and out of their own time.&#xA0;</div></div><p>One funny story is about a consultant at the nonprofit where I worked who was supporting me. About four years later, I realized that I&apos;d been working with them for the last year in my next company. It never clicked that it was the same person, but I said, &quot;Wait, you taught me what objects and tables were.&quot; It just never clicked until one day when we were working together. </p><p>Through seeing how people give their time so readily towards training, I realized I wanted to do the same. My class or course was a one-time thing for now. I might rerun it in the future, but there&apos;s something between me and a few other Salesforce friends that I&apos;ve gained over the years through different meetups. </p><p>The focus is on the idea that many of them had Salesforce knowledge but were somewhat new to GitHub or how DevOps tools worked. Meetups are an easy way to<strong> onboard people </strong>to their first experience with Salesforce DevOps. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F393;</div><div class="kg-callout-text">My class was born out of wanting to share some of that same knowledge and realizing that in the company I was working for, I was seeing that the most valuable thing I was doing wasn&apos;t creating automations. It was teaching people how to do that for themselves, whether through a GitHub Action and learning Git, or learning to use a tool like Hutte and making the same modifications.&#xA0;</div></div><p>I wanted to test it out with friends distributed across a group of companies and see if I could empower them to do a little task at their company and grow that into something bigger. </p><p>I will say it&apos;s not completely selfless. Like with anything in the industry, it&apos;s always nice for those people to think of you down the line and hire you for a contract role. Overall, my request is always that people pass along what they&apos;ve learned from me to somebody else down the line. If I&apos;m helping you, pass it along. Give them<strong> some free information</strong>, whether it&apos;s the same information or something else, like some skill you&apos;re bringing to the table.</p><h2 id="sharing-is-caring">Sharing is caring</h2><p>Thank you for tuning into this episode of Hutte&apos;s Trails Podcast.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2B07;&#xFE0F;</div><div class="kg-callout-text">Who would you like our next expert to be?&#xA0;</div></div><p></p><!--kg-card-begin: html-->	<div class="cta-container">
		<div class="cta__wrapper cta__three">
			<div class="desc">
				<h6>Let us know</h6>
				<p>on our LinkedIn<br></p>
			</div>
			<div class="btn">
				<a href="https://www.linkedin.com/company/28909971/admin/feed/posts/?ref=hutte.io">Learn More</a>
			</div>
		</div>
	</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[New in Hutte: Effortlessly select test classes for deployment and more]]></title><description><![CDATA[Are you tired of dealing with the hassle of manually typing test class names during Salesforce deployments? Hutte's deployment functionality offers a seamless solution. But that's not all – we continue to refine our features to provide even greater convenience and efficiency. ]]></description><link>https://hutte.io/company-blog/effortlessly-select-test-classes-for-deployment-and-more/</link><guid isPermaLink="false">661fadc7d7797da91f075ccc</guid><category><![CDATA[Sprint reviews and feature releases]]></category><dc:creator><![CDATA[Harald Mayer ]]></dc:creator><pubDate>Wed, 17 Apr 2024 11:26:55 GMT</pubDate><media:content url="https://hutte.io/company-blog/content/images/2024/04/Sprint-34.png" medium="image"/><content:encoded><![CDATA[<img src="https://hutte.io/company-blog/content/images/2024/04/Sprint-34.png" alt="New in Hutte: Effortlessly select test classes for deployment and more"><p>From resetting revision numbers in sandboxes to specifying Apex classes to run post-refresh, our latest updates aim to streamline your development process. Read on to explore these enhancements and get a glimpse of what Hutte can offer you.</p><h2 id="easily-select-test-classes-to-run-during-your-deployment">Easily select test classes to run during your deployment</h2><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/JpuBuRLOdZP_L4L20qMQx-dLpQOr28PPXcKQQc4pD5c2t5kH91S08oYVsYOhwayyknFPC-B7HJZ2ZvQZvMS9KS232OUJncznXQxCMnI9mQgPPugootCHl3aS0S_Xu1Bx3QHvBt3oHeeFqGVMeICj-7o" class="kg-image" alt="New in Hutte: Effortlessly select test classes for deployment and more" loading="lazy" width="624" height="420"></figure><p>You might have found Salesforce&apos;s change set UI frustrating, as it requires you to type class names for tests during deployments. However, with <strong>Hutte&apos;s deployment functionality, </strong>this is no longer an issue. You can conveniently select the test classes to run from a list in your deployment target organization.</p><h2 id="reset-revision-number-of-a-sandbox-feature">Reset revision number of a sandbox feature</h2><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/igM1Z5RaBb1DNUEhUdVaBfUEOG0Xzw9ShcSrUYs6nymBbex0mj6neo18NSui00Q-oE8dk84Y0xsxbZAPZKcOdhMmU-DLbLk5p5QSL-0njPht1JNR54vzUPNjG3Q94S6qjqjnrUDSwi37oI3l5zA9hkE" class="kg-image" alt="New in Hutte: Effortlessly select test classes for deployment and more" loading="lazy" width="624" height="389"></figure><p>The revision number signifies the point from which this <strong>feature starts tracking changes. </strong>By default, it matches the most recent revision of metadata in the connected organization when the feature was initiated.</p><p>There are two scenarios when you might want to change the revision number of your feature:</p><ul><li>Updating it to the latest if you made changes in your sandbox<strong> after creating your feature, </strong>which you prefer not to track (default).</li><li>Adjusting it to an earlier one if changes were made in your sandbox before you started your feature and want to include them. All revisions of the <strong>sandbox are listed</strong> with the revision number and revision date.</li></ul><h2 id="specify-apex-class-to-run-after-sandbox-creation-or-refresh">Specify Apex class to run after sandbox creation or refresh</h2><figure class="kg-card kg-image-card"><img src="https://lh7-us.googleusercontent.com/AWrSvgxM-RhbKOT8yhga6dInB2sA0MZT-C5uIYw-42IO344nqfc8adXSDdTKR1Kjuw8QLQrIeW5aYRZgnnXcwtza0PlCHHYbkSB-i642KL8RmiKQfokl3fZRTNVP4TKG0UxurkLY7e1uAM5Z6MDMHp0" class="kg-image" alt="New in Hutte: Effortlessly select test classes for deployment and more" loading="lazy" width="624" height="411"></figure><p>We&apos;ve added the ability to <strong>select a post-copy sandbox</strong> class to run after the creation or refresh process is complete. Typically, we recommend using <a href="https://hutte.io/company-blog/sandbox-pooling/">our Sandbox Pool</a> and refreshing Pool Orgs from your Developer Integration sandbox (often referred to as SIT). Ideally, this should contain all the necessary configuration and data for your fresh development sandboxes. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2705;</div><div class="kg-callout-text">However, there are scenarios where running a post-refresh Apex class is useful. Therefore, you can now select one of the classes from the org you are refreshing from and specify it as post-refresh.</div></div><p>By Salesforce&apos;s design, the chosen class must<strong> implement the &quot;System.SandboxPostCopy&quot; interface, </strong>which is why we only offer those for selection.</p><h2 id="additional-enhancements">Additional enhancements</h2><ul><li>Speed improvements to the sandbox feature and<strong> scratch org detail view.</strong></li><li>Fixed bug that occasionally &#x2013; on the &#x201C;Take Scratch Org from Pool &#x2013;&#x201D; did not select a <strong>default Pool Org</strong> to take.</li><li>Minor UX improvements to the new &#x201C;Pull Changes&#x201D; UI when used on projects with <strong>multiple package directories.</strong></li><li>Navigation context remains when <strong>visiting &#x201C;Profile Settings.&#x201D;</strong></li></ul><h3 id="explore-these-transformations-firsthand">Explore these transformations firsthand</h3><p>Get in touch with us to discover how we can customize a superior user experience for you! </p><div class="kg-card kg-button-card kg-align-center"><a href="https://hutte.io/contact-us?ref=hutte.io" class="kg-btn kg-btn-accent">&#x2192; Request a demo! &#x1F680;&#x2190;</a></div>]]></content:encoded></item></channel></rss>