<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Perficient Blogs</title>
	<atom:link href="https://blogs.perficient.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://blogs.perficient.com/</link>
	<description>Expert Digital Insights</description>
	<lastBuildDate>Fri, 05 Jun 2026 17:02:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blogs.perficient.com/wp-content/uploads/2026/03/cropped-Perficient-Favicon-512-150x150.png</url>
	<title>Perficient Blogs</title>
	<link>https://blogs.perficient.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">30508587</site>	<item>
		<title>7 Ways to Be a Better LGBTQ+ Ally at Work</title>
		<link>https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/</link>
		
		<dc:creator><![CDATA[Culture Team]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 16:17:33 +0000</pubDate>
				<category><![CDATA[Life at Perficient]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[PRISM ERG]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391440</guid>

					<description><![CDATA[<p>This blog was written by both Megan Mueller Jensen and Randy Roosekrans, supporters and members of PRISM, Perficient’s Employee Resource Group for our LGBTQIA2S+ colleagues and allies. As&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/">7 Ways to Be a Better LGBTQ+ Ally at Work</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>This blog was written by both <a href="https://www.linkedin.com/in/mbjensen/" target="_blank" rel="noopener"><strong>Megan Mueller Jensen</strong></a> and <a href="https://www.linkedin.com/in/randy-roosekrans-csm-acp-3a66664/" target="_blank" rel="noopener"><strong>Randy Roosekrans</strong></a>, supporters and members of <strong><a href="https://www.perficient.com/about/culture-community#ab6d0fab-195d-4312-aad9-4908c62aa572" target="_blank" rel="noopener">PRISM</a></strong>, Perficient’s Employee Resource Group for our LGBTQIA2S+ colleagues and allies.<img fetchpriority="high" decoding="async" data-attachment-id="391442" data-permalink="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/prism-no-background/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background.png" data-orig-size="2000,2000" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1024x1024.png" class="alignright wp-image-391442" src="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-300x300.png" alt="PRISM ERG logo" width="330" height="330" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-300x300.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1024x1024.png 1024w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-150x150.png 150w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-768x768.png 768w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background-1536x1536.png 1536w, https://blogs.perficient.com/wp-content/uploads/2026/06/PRISM-no-background.png 2000w" sizes="(max-width: 330px) 100vw, 330px" /></em></p>
<p>As cisgender straight people in a professional setting, we believe it’s our responsibility to do our best to support our LGBTQIA2S+ colleagues. We are longtime allies, advocates, activists, and parents of gay kiddos, and we want to share a few things we’ve learned over the years about making our workplaces safer, friendlier, more inclusive, and more supportive for our queer colleagues. (For the rest of this writing, we’ll refer to these folx as ‘queer,’ which is an umbrella term although we recognize that not all of this applies to everyone.)</p>
<ol>
<li><strong>Pronouns matter.</strong> If someone tells you their pronouns, the bare minimum we can do is respect that and use those pronouns consistently. And if you slip up in conversation, correct yourself, apologize briefly, and move on. Doing so will signal that you’re making an effort; it becomes easier with practice. If you’re not sure of someone’s pronouns, it’s ok to ask! Simply say, <em>“I use she/her. May I ask what you use?” </em>It’s also great to include your pronouns in your email signature, when introducing yourself, joining a meeting, or on your LinkedIn profile. It’s a positive signal that lets queer folx know that you’re a safe colleague and partner to work with, and that they’re cool being themselves around you.</li>
<li><strong>Respect and protect the privacy of your queer colleagues.</strong> Just because someone has disclosed information to you (or within PRISM events and conversations) doesn’t mean you have permission to share that with anyone outside of that original conversation. It’s ONLY the decision of queer people themselves to whom they want to come out. That information may not be safe or smart to share anywhere else. If for some reason it’s necessary to divulge details about others, make sure you get their permission first.</li>
<li><strong>Educate Yourself.</strong> Take the initiative to educate yourself about queer issues, terminology, and experiences. There are plenty of resources available online, such as articles, books, and documentaries that can help you understand the challenges faced by the queer community. While most queer folx are happy to answer questions, it can also be emotionally and intellectually exhausting to constantly be the sole source of information, or if there is an assumption that they “represent” all queer folx.  A few great resources include <a href="https://www.hrc.org/" target="_blank" rel="noopener"><strong>HRC (Human Rights Campaign)</strong></a>,  <a href="https://glaad.org/" target="_blank" rel="noopener"><strong>GLAAD (Gay and Lesbian Alliance Against Defamation)</strong></a>, and <a href="https://www.thetrevorproject.org/resources/" target="_blank" rel="noopener"><strong>The Trevor Project</strong></a>. PRISM also hosts informational events throughout the year that are designed to help us all be better allies.</li>
<li><strong>Speak up, even (or especially) when queer colleagues aren’t present</strong>. If someone misgenders a colleague or uses offensive terminology, intentionally or unintentionally, it’s our responsibility to correct them in a friendly but consistent way. Stand up for folx who aren’t in the room. It sets the standard for expected behavior within the team and reinforces a supportive company culture. To that end, be very mindful of “deadnaming” which is using the name a trans person had before they changed it to what they use now. It can be deeply traumatic and triggering for them to hear that name in any setting. If you happen to make that mistake, you can offer a quick, sincere apology and keep the conversation moving.  If you hear a colleague using the deadname of someone who isn’t present, it’s a good opportunity for a friendly correction.</li>
<li><strong>Support queer-inclusive policies</strong>. The needs and challenges of our queer colleagues may be different and more impactful than ones we experience as cisgender folx. Don’t make them fight for equality and inclusivity alone. Make sure they know you are in their corner and follow that sentiment with action.</li>
<li><strong>Remember it’s not about YOU. </strong>As allies, it’s our job to support, facilitate, and enable the efforts of our queer colleagues. Big decisions should be made by queer folx, and our role is to help make their lives easier, safer, and more equitable. Try your best to give input, ideas, and opinions regarding queer life when invited to do so or ask if you can add your perspective when it might be useful.</li>
<li><strong>Be open to listening and open to growth. </strong>Even with the best of intentions, we won’t always get it right. We may unintentionally say something dumb or stumble over our words. If a queer colleague corrects you or gives you input, see it as a sign of trust rather than criticism.</li>
</ol>
<p>Understand that there are many facets to queer culture, and some norms may vary. The more exposure and practice you get in these spaces, the clearer those norms will become. The most important thing is that you approach these interactions with respect — everything else falls into place!</p>
<p>In closing, CONGRATULATIONS TO YOU! The fact that you are reading this article and showing an interest in this topic demonstrates your allyship, and your willingness to help make positive changes within the queer community. Thank you for being who you are! Let’s help our colleagues, clients, friends, and loved ones in the queer community feel welcome to be the best versions of themselves, too!</p>
<p>The post <a href="https://blogs.perficient.com/7-ways-to-be-a-better-lgbtq-ally-at-work/">7 Ways to Be a Better LGBTQ+ Ally at Work</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/06/MJ-and-Randy-and-girls-600x400-1.jpeg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391440</post-id>	</item>
		<item>
		<title>Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</title>
		<link>https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 14:37:32 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWSGoldenJacket]]></category>
		<category><![CDATA[AWSPartner]]></category>
		<category><![CDATA[homepage-featured]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391430</guid>

					<description><![CDATA[<p>We’re proud to celebrate an incredible achievement: Gonzalo Munoz has earned the AWS Golden Jacket, a rare distinction held by individuals who achieve all active&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/">Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>We’re proud to celebrate an incredible achievement: Gonzalo Munoz has earned the AWS Golden Jacket, a rare distinction held by individuals who achieve all active AWS certifications simultaneously.</p>
<p>Earning the AWS Golden Jacket is a remarkable accomplishment—one that reflects deep technical expertise, persistence, and a commitment to continuous learning across the AWS ecosystem.</p>
<p>&nbsp;</p>
<p><strong>What Is the AWS Golden Jacket?</strong></p>
<p>The AWS Golden Jacket is a recognition given to individuals who hold all active AWS certifications at the same time, demonstrating expertise across the full breadth of AWS capabilities, including cloud architecture, DevOps, security, data, and machine learning.</p>
<p>Because it requires maintaining every certification concurrently, this distinction signals both depth and breadth of knowledge across AWS services and domains.</p>
<p><strong> </strong></p>
<p><strong>What This Achievement Represents</strong></p>
<p>Earning the AWS Golden Jacket reflects more than completing a set of certifications. It represents sustained focus, discipline, and the ability to operate across a rapidly evolving cloud ecosystem.</p>
<p>To reach this level, Gonzalo built and maintained expertise across a wide range of AWS services and domains, while continuously adapting as the platform evolves.</p>
<p>This includes:</p>
<ul>
<li>Mastering AWS services across architecture, security, data, and AI/ML</li>
<li>Maintaining all certifications simultaneously as they evolve and require renewal</li>
<li>Applying knowledge to real-world scenarios where design decisions impact scalability, performance, and cost</li>
<li>Staying current with new services, architectural patterns, and best practices</li>
<li>Balancing ongoing learning with day-to-day client delivery</li>
</ul>
<p>That level of commitment signals expertise that stays current as AWS continues to innovate.</p>
<p>For our clients, that translates into real value. It means working with experts who can connect capabilities across AWS services and design solutions with a clear understanding of how to align technology decisions to business outcomes.</p>
<p>&nbsp;</p>
<p><strong>Powering Our AWS Practice</strong></p>
<p>Gonzalo’s achievement reflects the strength of Perficient’s AWS practice and the expertise we bring to clients as an AWS Premier Consulting Partner.</p>
<p>Our teams deliver solutions aligned to key AWS capability areas, including:</p>
<ul>
<li>Cloud architecture and modernization</li>
<li>Data and analytics platforms</li>
<li>Security and compliance</li>
<li>Artificial intelligence and machine learning</li>
</ul>
<p>&nbsp;</p>
<p>This work is backed by:</p>
<ul>
<li>Deep, cross-functional cloud expertise</li>
<li>A strong culture of certification and continuous learning</li>
<li>Proven experience delivering complex, enterprise-scale AWS solutions</li>
<li>A focus on driving measurable business outcomes</li>
</ul>
<p><strong> </strong></p>
<p><strong>A Milestone Worth Celebrating</strong></p>
<p>The AWS Golden Jacket is a significant achievement that reflects both individual dedication and the collective strength of our AWS practice.</p>
<p>Gonzalo, congratulations on this well-earned recognition. Your expertise, curiosity, and commitment to continuous learning make a meaningful impact on our clients and our team. We’re proud to celebrate this moment and look forward to what comes next!</p>
<p>Read more about Perficient’s AWS practice <a href="https://www.perficient.com/partners/aws">here</a>.</p>
<p>The post <a href="https://blogs.perficient.com/celebrating-gonzalo-munozs-aws-golden-jacket-a-milestone-that-reflects-excellence/">Celebrating Gonzalo Munoz’s AWS Golden Jacket: A Milestone That Reflects Excellence</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/06/2026_PRFT_Blog_Image_1200x800_AWS_Golden_Jacket-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391430</post-id>	</item>
		<item>
		<title>Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</title>
		<link>https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/</link>
		
		<dc:creator><![CDATA[Paul Goodrich]]></dc:creator>
		<pubDate>Wed, 03 Jun 2026 12:05:56 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391398</guid>

					<description><![CDATA[<p>In my last blog, I shared recommendations for the AEM solutions that are available for headful and headless content. I also revisited the headless problem&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/">Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In <a href="https://blogs.perficient.com/headful-or-headless-aem-revisited-for-2026/" target="_blank" rel="noopener">my last blog</a>, I shared recommendations for the AEM solutions that are available for headful and headless content. I also revisited the headless problem statement since we’re now seeing new industry drivers pushing some teams towards a headless approach. The traditional means of delivering headless via content fragments had some significant limitations compared to a headful experience. That blog also discussed how using page-based resources for headless content resolves many of these limitations. Now, let&#8217;s go over how to do it!</p>
<h2><strong>Headless Page-based Authoring Tutorial Preface</strong></h2>
<p>This tutorial assumes that you have a basic understanding of <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/universal-editor/use-cases" target="_blank" rel="noopener">Universal Editor’s purpose</a> and <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/underlying-technology/introduction-architecture" target="_blank" rel="noopener">AEM’s architecture</a>. It is also not intended to be a comprehensive solution design for the AEM-App integration nor a complete Universal Editor tutorial. Considerations like instrumentation details, caching, app security, and which authoring options are made available are beyond the scope of this tutorial.</p>
<h2>Step 1: Enable AEM Page Content for Export</h2>
<p>You can certainly use the pre-configured model JSONs of AEM Core Components. However, they have several fields that are not relevant to my downstream application, like gridClassNames and allowedComponents.</p>
<p><img decoding="async" data-attachment-id="391399" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/aem_page_content_export_enablement/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" data-orig-size="624,773" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AEM Page Content Export Enablement" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" class="wp-image-391399 size-full aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png" alt="AEM Page Content Export Enablement" width="624" height="773" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/AEM_Page_Content_Export_Enablement-242x300.png 242w" sizes="(max-width: 624px) 100vw, 624px" /></p>
<p>So instead, I prefer custom Sling Models. This gives us a granular level of control over which fields are exposed to our downstream application.</p>
<p>Start by creating a Sling Model for your Page component. Configure the @Model annotation to utilize SlingHttpServletRequest.class as an adaptable so it can serve web requests to a .model.json path and match the resourceType property to the resourceType of your Page component. Configure the @Exporter annotation to use the Jackson library and support a JSON extension for export.</p>
<p><img decoding="async" data-attachment-id="391400" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/custom_sling_model_for_aem_page_component/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" data-orig-size="624,751" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Custom Sling Model For AEM Page Component" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" class="size-full wp-image-391400 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png" alt="Custom Sling Model for AEM Page Component" width="624" height="751" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_Sling_Model_for_AEM_Page_Component-249x300.png 249w" sizes="(max-width: 624px) 100vw, 624px" /></p>
<p>You’ll notice that I’ve created a getItems method that returns a list of objects. This method utilizes a custom HeadlessUtils method that looks for (<em>almost</em>) all children resources of the Page and adapts them to their matching model based on their sling:resourceType. This is very important, as we want each child component to export its JSON based on its own model, not relying solely on the model of the parent.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391401" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/custom_headlessutils_method/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" data-orig-size="623,505" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Custom HeadlessUtils Method" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" class="size-full wp-image-391401 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png" alt="Custom HeadlessUtils Method" width="623" height="505" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/Custom_HeadlessUtils_Method-300x243.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p>I can re-use this pattern for other container components, components like Responsive Grids or Columns that have any number, names, and types of children.</p>
<p>Then I can similarly configure Sling Models for all components that will appear on my page. The primary difference in how I configure these other component models is that they also need to be adaptable from a Resource in order to be exported by the getItems method or other resource-based retrieval.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391402" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/sling_model_configurations/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" data-orig-size="624,718" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Sling Model Configurations" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" class="aligncenter size-full wp-image-391402" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png" alt="Sling Model Configurations" width="624" height="718" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Sling_Model_Configurations-261x300.png 261w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p>Once I have done that, I can load the export of any Page that uses this model as JSON.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391403" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/export_page_using_model_as_json/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" data-orig-size="623,378" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Export Page Using Model as JSON" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" class="aligncenter size-full wp-image-391403" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png" alt="Export Page Using Model as JSON" width="623" height="378" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/Export_Page_Using_Model_as_JSON-300x182.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<h2>Step 2: Consume the Page Content Downstream</h2>
<p>For this example, let’s create a small connector library to AEM using JavaScript. Ultimately this could be run server-side or client-side and rendered however I like. The purpose here is to show that regardless of what downstream app I have, I can use a simple REST-based GET to retrieve the data.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391404" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/rest-based_get/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" data-orig-size="623,526" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Rest Based Get" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" class="aligncenter size-full wp-image-391404" src="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png" alt="Rest Based Get" width="623" height="526" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET.png 623w, https://blogs.perficient.com/wp-content/uploads/2026/06/REST-based_GET-300x253.png 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p>You may notice within the code here that I’ve abstracted out the concept of a full AEM path from the rest of my application. This is because I don’t want to force the downstream application to adhere to a specific route structure. Perhaps in my app, locale is determined by the domain and not the application route.</p>
<p>Further, though I want to display published content on production, I still want to edit content in the AEM author environment before I review and publish it out. If I don’t have an “author” version of my downstream app, I need a different means to instruct the app to pull from the author environment. So I use 4 key parameters:</p>
<ol>
<li>The matching AEM base path – This comes statically from my route. I do not allow open-ended user-editable paths for security reasons.</li>
<li>(MSM support) Do I want to view the language-master or the rolled out live-copy?</li>
<li>(MSM support) What locale am I in?</li>
<li>Am I currently authoring?</li>
</ol>
<p>The latter 3 act as flags which modify the base path. These flags could come from URL parameters, session storage, cookies, etc. In my case, I use URL parameters because I do not want cached AEM content while authoring.</p>
<p>Now, in a real implementation, to access page content in an author environment, my code needs to authenticate to AEM. This can be done via a <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/service-credentials" target="_blank" rel="noopener">technical account</a> (<em>preferred</em>) or <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/getting-started-with-aem-headless/authentication/local-development-access-token" target="_blank" rel="noopener">temporary developer token</a>. Select one of the options linked, follow the instructions, and then come back.</p>
<p>Publish environment content is typically public and therefore does not require an authentication token.</p>
<h2>Step 3: Configure AEM to Open Pages in Universal Editor</h2>
<p>Now that I have my Page Model rendering in my downstream application, I can configure AEM to open pages of a particular path and sling:resourceType in Universal Editor. This is done by adding an OSGI configuration for the Universal Editor URL Service, which you can also read more about in <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/universal-editor/getting-started#content-paths" target="_blank" rel="noopener">Adobe’s documentation</a>.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391405" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/osgi_configuration_for_universal_editor_url_service/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" data-orig-size="597,101" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="OGSI Configuration for Universal Editor URL Service" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" class="aligncenter size-full wp-image-391405" src="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png" alt="OGSI Configuration for Universal Editor URL Service" width="597" height="101" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service.png 597w, https://blogs.perficient.com/wp-content/uploads/2026/06/OSGI_Configuration_for_Universal_Editor_URL_Service-300x51.png 300w" sizes="auto, (max-width: 597px) 100vw, 597px" /></p>
<p>The mappings field has two parts: the parent path for which the Universal Editor should be opened and the target downstream application domain. [parentPath:applicationDomain]</p>
<p>The resourcetypes field defines the sling:resourceTypes that should be opened in Universal Editor. In our case, this is our page component.</p>
<p>The aemDomain field signifies that the Universal Editor should be opened on the same domain as AEM. This is critical, as being on the same domain allows sharing our user’s Adobe IMS login token with Universal Editor. This login token is later used by the Universal Editor to write back our authoring changes to the JCR.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391406" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/universal_editor_opens_on_aem_domain/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" data-orig-size="624,199" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Universal Editor Opens On Aem Domain" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" class="aligncenter size-full wp-image-391406" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png" alt="Universal Editor Opens On Aem Domain" width="624" height="199" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain.png 624w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Opens_on_AEM_Domain-300x96.png 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p>Now authors can click the Edit button in AEM Sites Admin and have the “page” open in the context of the downstream application with Universal Editor.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="391407" data-permalink="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/universal_editor_integrated_with_aem/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png" data-orig-size="1430,579" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Universal Editor Integrated with AEM" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-1024x415.png" class="aligncenter size-full wp-image-391407" src="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png" alt="Universal Editor Integrated with AEM" width="1430" height="579" srcset="https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM.png 1430w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-300x121.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-1024x415.png 1024w, https://blogs.perficient.com/wp-content/uploads/2026/06/Universal_Editor_Integrated_With_AEM-768x311.png 768w" sizes="auto, (max-width: 1430px) 100vw, 1430px" /></p>
<p>This one step helps close the loop for authors. We’ve moved Universal Editor authoring as a separate domain authoring tool to integration directly with AEM. It also allows authors to continue to think about downstream app routes as “pages” in AEM even though they aren’t being rendered by AEM.</p>
<p>As an aside, you might notice that I’ve specified a /preview route in the downstream application; why did I do that? AEM doesn’t know which downstream app route to open for a given page. All it can do in this integration is pass details like the AEM content path.</p>
<p>As I said earlier, I don’t want to force my downstream application to adhere to a specific route structure. I certainly could do that; I could update the mappings field to “/content/nextDayAEM:localhost:3000/${path}”.</p>
<p>This would make the page /content/nextDayAEM/language-masters/en_us open like localhost:3000/content/nextDayAEM/language-masters/en_us instead. But now my app has to handle any number of route combinations.</p>
<p>So instead I use a common /preview path and let the downstream application figure out what route maps to the aemPath parameter and do an internal redirect, passing those 4 key parameters I identified earlier. If I’ve configured everything correctly, the downstream route + parameters should match exactly 1 AEM page.</p>
<h2>Step 4: Write Authored Content Back to AEM</h2>
<p>Now move on to instrument the downstream application for Universal Editor. This step involves loading the Universal Editor script, adding data-aue-* attributes to your downstream app components, and adding JSON configuration files. All of that really requires its own tutorial. So I’m going to <a href="https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/developing/universal-editor/react-app-editing/overview" target="_blank" rel="noopener">send you over to Adobe</a> to explain that part, but note that this example uses content fragments. The only major difference in this instrumentation for page-based resources is in the Component Definition JSON, where you should specify the plugin property as “aem” :{ “page”: {..} } instead of “aem” :{ “cf”: {..} }.</p>
<p>Now that all of that is complete, I should be able to log in to AEM and edit a “page.” As far as the authors are concerned, all that’s changed is a new page editor experience. This has far more ramifications than you might expect at first glance. Let’s review the headless challenges we identified from last week.</p>
<ol>
<li>How does an author track content downstream from the CMS? <strong>Content is now tracked 1:1 with a “page” that matches a downstream route.</strong></li>
<li>Useful AEM Page tooling is not available out of the box for Content Fragments. <strong>We’re now able to use Page-based tooling like link browsing, asset page references, link rewrites on moves, page launches, MSM, etc.</strong></li>
<li>Link checker no longer functions, as AEM does not have any inherent knowledge of the downstream routes. <strong>Though AEM can’t directly check the downstream routes, it can check AEM page-to-AEM-page links.  You can have authors link them as AEM paths via the page browser and use the same route mapper you developed in Step 3 to render the links.</strong></li>
<li>Downstream applications pull in fragments by name or by query.<strong> Whereas Content Fragments had to have unique names, Pages, due to page hierarchy, can always match the route name.</strong></li>
<li>Existing AEM authors are typically more experienced with creating and managing pages instead of content fragments. <strong>Fixed.</strong></li>
<li>It creates a platform disconnect. Authors must navigate to AEM to create Content Fragments but navigate to the downstream application or the Universal Editor to view changes in context. <strong>Universal Editor now exists on the same domain as AEM. It looks like part of AEM, not a separate tool.</strong></li>
</ol>
<p>In other words, many of the challenges we faced with a headless AEM experience are no longer relevant when we use page-based resources as the source. We’re able to leverage the strengths of traditional AEM Page Tooling because, as far as AEM and JCR are concerned, this content exists as real pages in AEM, even though all rendering can take place outside of AEM.</p>
<p>I hope this makes you as excited as I am, as Headless experiences just got a whole lot easier to manage!</p>
<h2>What&#8217;s Next?</h2>
<p>Have a tutorial you’d like to see next?  For more information on how Perficient can implement your dream digital experiences, we’d love to hear from you. We’re certified by Adobe for our proven capabilities, and we hold an <strong>Adobe Experience Manager specialization</strong> (<em>among others</em>).</p>
<h3><a href="https://www.perficient.com/contact" target="_blank" rel="noopener"><strong>Contact Perficient to start your journey</strong></a>.</h3>
<p>The post <a href="https://blogs.perficient.com/implementing-headless-page-based-authoring-in-adobes-universal-editor-part-2/">Implementing Headless Page-based Authoring in Adobe’s Universal Editor: Part 2</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/06/Headless_Page-based_Authoring_in_Adobe_Universal_Editor-1-1024x536.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391398</post-id>	</item>
		<item>
		<title>Here&#8217;s What Snowflake&#8217;s Announcement Means For Your Organization — and How Perficient Helps You Get There</title>
		<link>https://blogs.perficient.com/heres-what-snowflakes-announcement-means-for-your-organization-and-how-perficient-helps-you-get-there/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 19:03:58 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391392</guid>

					<description><![CDATA[<p>Earlier today, Snowflake announced key changes to their platform that illustrate the industry is moving at a rate faster than ever. The core message is&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/heres-what-snowflakes-announcement-means-for-your-organization-and-how-perficient-helps-you-get-there/">Here&#8217;s What Snowflake&#8217;s Announcement Means For Your Organization — and How Perficient Helps You Get There</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Earlier today, Snowflake announced key changes to their platform that illustrate the industry is moving at a rate faster than ever. The core message is to do more with less. </span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Fewer Platforms. More Capability. </span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">The era of stitching together six different platforms to run a modern data environment is ending. Not because the tools got worse, but because the expectations got higher. Enterprises need data foundations that don’t just hold data. They need platforms that activate AI agents, automate management, and give information directly to the people who use it. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">These aren’t incremental feature releases; they’re a coordinated move toward a single platform that does more so you don’t have to manage more. Take native streaming, for example. Historically, if you needed real-time data pipelines, you needed separate Kafka infrastructure on top of your data warehouse. That’s overhead your team shouldn’t be carrying. Snowflake’s push toward native streaming capabilities means those separate pipelines, and the teams managing them, can consolidate into a unified stack.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Adaptive compute extends that logic further. Instead of manually tuning and allocating compute resources across workloads, the platform adapts automatically. And the Trust Center brings AI guardrails, evaluations, and governance controls directly onto the platform, not bolted on from outside, not managed through a separate tool. Governance that lives where your data lives.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The direction is clear: your core data platform should do more, which means you need fewer products to run your enterprise. </span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">CoCo for Builders. CoWork for Knowledge Workers. </span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Two capabilities in particular signal where agentic AI inside the data platform is heading: CoCo and CoWork. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">CoCo is the agentic development tool, purpose-built for the people who build on the platform. It accelerates how engineers and data teams construct data products, applications, and pipelines within Snowflake&#8217;s ecosystem. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">CoWork is built for everyone else. It&#8217;s the AI agent layer for knowledge workers: the analysts, operations leads, and business users who need to act on data without waiting for a data team to build them something first. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Instead of pulling insights out of a dashboard and manually updating Salesforce or triaging an inbox, CoWork enables agents to take that action directly. And through MCP (Model Context Protocol), those agents aren&#8217;t limited to what lives inside Snowflake. They can reach your inbox, your CRM, your operational systems, and take action, not just retrieve data. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">You can run analytics inside Snowflake and have an agent update Salesforce or open an opportunity without a manual handoff. </span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Why This Matters to Your Enterprise </span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Here&#8217;s the core problem we see across enterprise clients: the data stack is fragmented, governance is inconsistent, and AI initiatives stall because the foundation isn&#8217;t ready for them. Teams spend more time managing tool sprawl than actually building toward outcomes. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The Snowflake trajectory addresses exactly that. But knowing the platform direction and operationalizing it inside a complex enterprise are two completely different things. That&#8217;s where we come in. Our connection to this shift isn&#8217;t incidental; it&#8217;s central to how we define AI-ready data modernization.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto"> As the industry moves toward simplification and full-stack integration, we help enterprises move with it: reducing fragmented toolsets, embedding governance into the architecture, and building unified data foundations that AI agents can actually work with. </span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">How We Work With You </span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">We don&#8217;t drop a platform and walk away. We architect the transition. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">That means assessing where your current data estate is fractured, where separate tools are creating governance gaps, slowing pipelines, or blocking AI initiatives. It means designing a consolidation path that doesn&#8217;t break what&#8217;s working while building what comes next. And it means putting Snowflake&#8217;s native capabilities, streaming, adaptive compute, CoCo, CoWork, Trust Center, to work in ways that generate measurable outcomes. </span><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">The Real Takeaway </span></b><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Enterprises don&#8217;t need more tools. They need a smarter platform and a partner who knows how to unlock it. We help you simplify your data foundations so you can activate agentic AI faster, and get from insight to action across the enterprise without the overhead of a fragmented stack holding you back. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The industry is consolidating. Your data strategy should too.</span><span data-ccp-props="{}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/heres-what-snowflakes-announcement-means-for-your-organization-and-how-perficient-helps-you-get-there/">Here&#8217;s What Snowflake&#8217;s Announcement Means For Your Organization — and How Perficient Helps You Get There</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/Copy-of-Emma_S_Snowflake_Premier-1.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391392</post-id>	</item>
		<item>
		<title>Stop Building Platforms. Start Orchestrating Outcomes: Why Optimizely Opal is an Operating Model Change</title>
		<link>https://blogs.perficient.com/stop-building-platforms-start-orchestrating-outcomes-why-optimizely-opal-is-an-operating-model-change/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 28 May 2026 21:38:27 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[Opal]]></category>
		<category><![CDATA[Optimizely]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391363</guid>

					<description><![CDATA[<p>For the past decade, digital transformation has been a race to buy more tools. Organizations poured millions into Content Management Systems (CMS), commerce engines, experimentation&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/stop-building-platforms-start-orchestrating-outcomes-why-optimizely-opal-is-an-operating-model-change/">Stop Building Platforms. Start Orchestrating Outcomes: Why Optimizely Opal is an Operating Model Change</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>For the past decade, digital transformation has been a race to buy more tools. Organizations poured millions into Content Management Systems (CMS), commerce engines, experimentation frameworks, and data lakes. The goal was simple: modernize the customer experience by modernizing the stack.</p>
<p>But for many enterprises, the results haven’t matched the investment. The tech got faster, but the work didn&#8217;t. Most digital organizations are still trapped in a platform-centric world where the tools are working, but the teams are stuck in silos. This is where the industry is shifting, and why Optimizely Opal isn’t just an AI feature—it is an entirely new operating model.</p>
<h3>The Platform Productivity Trap</h3>
<p>Most enterprise digital teams are operating in a state of expensive fragmentation. You might have the best DXP in the world, but your marketers are planning campaigns in one system, your content teams are building assets in another, your developers are stuck in an endless backlog of component requests, and your analysts are providing performance reports three weeks too late.</p>
<p>Even when these functions live on the same platform, the human operating model remains disconnected. The tool is centralized, but the execution is not. Humans are still left to do the heavy lifting of orchestrating these disconnected pieces. They spend more time managing the tool than they do managing the customer experience.</p>
<p>We call this the Platform Productivity Trap. It’s the realization that owning the tools doesn’t mean you’ve solved the problems of speed, cost, and alignment.</p>
<h3>Opal: A Shift to Intent-Driven Execution</h3>
<p>Opal introduces a fundamental shift. Instead of humans spending hours manually moving data and context between disconnected tools, organizations can begin orchestrating AI-driven workflows that span the entire content and experience lifecycle.</p>
<p>This isn’t traditional automation. Automation usually means taking a manual task and making it repetitive. Intent-driven execution means the system understands the outcome you are trying to achieve and aligns the necessary resources to get there.</p>
<p>Teams move from asking, “Which tool do I need to use to build this page?” to asking, “What is the outcome our audience needs?”</p>
<h3>The Rise of the Digital Experience Co-Pilot</h3>
<p>Historically, AI in marketing has been positioned as a productivity assistant. Use it to write a headline, summarize a report, or generate an image. These are incremental gains. They save minutes, but they don’t change how the organization operates.</p>
<p>Opal signals a move toward something more powerful: a context-aware co-pilot embedded directly inside the execution workflow. This is a critical distinction. An AI that sits in a sidebar is a destination you have to visit; an AI that is part of the workflow is an assistant that moves with you.</p>
<p>This workflow embedding enables three core pillars of modern execution:</p>
<ol>
<li><strong>Content Supply Chain Acceleration:</strong> AI doesn’t just write the blog post; it understands the campaign brief, checks for legal compliance, suggests the right visual assets from the library, and prepares the content for localization—all in one stream.</li>
<li><strong>Experimentation Planning and Prioritization:</strong> Instead of guessing which tests to run, the co-pilot analyzes your historical performance and audience data to suggest high-impact experimentation opportunities. It moves experimentation from a reactive task to a proactive strategy.</li>
<li><strong>Operational Decision Support:</strong> The platform provides real-time signals on what is working and what isn’t, allowing teams to optimize experiences while the campaign is still running, not after it is finished.</li>
</ol>
<p>In practice, this means AI is no longer a bolt-on to the platform. It is becoming part of how the platform thinks and acts.</p>
<h3>Why the Operating Model is the Real Innovation</h3>
<p>Many enterprises have already invested heavily in modern DXPs but still struggle with slow time to market and underutilized programs. These aren’t platform failures; they are delivery failures. Opal addresses these gaps not by replacing your existing capabilities, but by changing how they are coordinated.</p>
<p>The real value emerges when organizations begin to define repeatable AI-assisted workflows. This reduces the manual friction that kills campaign momentum. It embeds AI directly into governance, ensuring that experimentation and content quality aren’t just “nice-to-haves” but are standardized parts of the operating model.</p>
<p>Leaders often ask how to get more value out of their digital staff. The answer isn’t usually to hire more people; it’s to reduce the dependency on traditional, heavy delivery cycles. By operationalizing AI, you allow your teams to focus on strategy and creativity while the co-pilot handles the orchestration.</p>
<h3>Redefining Digital Maturity</h3>
<p>For a long time, digital maturity was measured by platform adoption. If you had a CMS and a commerce engine, you were “mature.” Then, the measure shifted toward capability: Are you personalizing? Are you experimenting?</p>
<p>The next phase of maturity will be measured by something else: operational orchestration. It is the ability to effectively synchronize AI across your entire digital experience lifecycle.</p>
<p>Optimizely Opal provides the blueprint for this transition. It isn&#8217;t about what the AI generates; it&#8217;s about what the AI enables your team to become. A mature organization in this new era is one that is more adaptive, more insight-driven, and entirely focused on outcomes rather than the mechanics of the tool.</p>
<h3>The Strategic Question for Leaders</h3>
<p>The most important question for senior leaders today is not, “How do we use AI in Optimizely?” That question leads to small, tactical experiments that don’t scale.</p>
<p>The real question is: “How should AI reshape the way our digital organization operates?”</p>
<p>Organizations that treat Opal as just another AI feature will see modest productivity gains. Organizations that treat it as a catalyst for operating model change will see a massive increase in experimentation velocity, lower production costs, and a more responsive digital experience.</p>
<p>Perficient helps organizations turn digital platforms into systems that actually improve how teams work. We focus on the outcomes, not just the implementation. Whether you are accelerating your content supply chain or optimizing your experimentation program, we help you operationalize Optimizely Opal to build a digital presence that improves continuously.</p>
<p>The platform is just the beginning. The operating model is where the impact happens.</p>
<p>The post <a href="https://blogs.perficient.com/stop-building-platforms-start-orchestrating-outcomes-why-optimizely-opal-is-an-operating-model-change/">Stop Building Platforms. Start Orchestrating Outcomes: Why Optimizely Opal is an Operating Model Change</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/iStock-2261711313-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391363</post-id>	</item>
		<item>
		<title>Harness Engineering with GitHub Copilot: From Planning to Testing in One Seamless Workflow</title>
		<link>https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/</link>
		
		<dc:creator><![CDATA[Juan Quintana Gomez]]></dc:creator>
		<pubDate>Mon, 25 May 2026 18:14:15 +0000</pubDate>
				<category><![CDATA[Life at Perficient]]></category>
		<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[AI-assisted development]]></category>
		<category><![CDATA[CI/CD pipelines]]></category>
		<category><![CDATA[developer productivity]]></category>
		<category><![CDATA[GitHub Copilot]]></category>
		<category><![CDATA[GitOps]]></category>
		<category><![CDATA[Harness Engineering]]></category>
		<category><![CDATA[platform engineering]]></category>
		<category><![CDATA[Software Testing]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391370</guid>

					<description><![CDATA[<p>Abstract The integration of AI-assisted development tools into modern software engineering pipelines has transformed how teams plan, implement, and validate software delivery workflows. This article&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/">Harness Engineering with GitHub Copilot: From Planning to Testing in One Seamless Workflow</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Abstract</h2>
<p>The integration of AI-assisted development tools into modern software engineering pipelines has transformed how teams plan, implement, and validate software delivery workflows. This article explores a practical, instruction-driven approach to leveraging GitHub Copilot across the three core phases of Harness Engineering: planning, development, and testing. Drawing on current Harness platform capabilities—including CI/CD pipelines, Feature Flags, and GitOps—alongside GitHub Copilot&#8217;s context-aware code generation and natural language instruction support, this work demonstrates how engineering teams can significantly reduce cognitive overhead, accelerate pipeline creation, and improve test coverage quality. The proposed workflow treats Copilot not merely as a code completion tool, but as an active engineering collaborator throughout the software delivery lifecycle. Results indicate that AI-augmented Harness workflows can reduce pipeline setup time and enhance testing accuracy when guided by well-structured Copilot instructions.</p>
<h2> <strong>Setting the Stage</strong></h2>
<p class="body-text">Modern software engineering demands speed without compromising quality. Development teams today face the challenge of delivering value continuously, managing increasingly complex infrastructures, and maintaining reliable pipelines that support the full software delivery lifecycle. In this landscape, platforms like <strong>Harness</strong> have emerged as central solutions for orchestrating CI/CD, managing feature flags, and adopting GitOps practices in a unified way.</p>
<p class="body-text">At the same time, the rise of AI in the developer workflow has changed the rules of the game. <strong>GitHub Copilot</strong> is no longer just a code autocomplete tool: with support for custom instructions (<em>Copilot Instructions</em>), it becomes an active collaborator capable of understanding project context, suggesting pipeline structures, generating tests, and guiding architectural decisions.</p>
<h3>The problem we&#8217;re solving</h3>
<p>Configuring and maintaining pipelines in Harness can be an intimidating task, especially for teams that are just getting started or don&#8217;t have a dedicated platform expert. From defining pipeline stages to writing automated tests that validate deployment behavior, every step requires specific knowledge typically acquired through extensive documentation, trial and error, or years of accumulated experience.</p>
<p>&nbsp;</p>
<blockquote><p><em>What if you could have an expert Harness engineer available at all times — one capable of helping you plan, write, and test your pipeline from a simple natural language instruction?</em></p>
<p>&nbsp;</p></blockquote>
<p>That&#8217;s exactly what we&#8217;ll explore in this article: how to use <strong>GitHub Copilot with custom instructions</strong> to guide every phase of Harness Engineering work — from initial planning all the way through final validation with tests.</p>
<h2> <strong>Three Files, One Workflow</strong></h2>
<p>Enough theory — let&#8217;s put it into practice. In this section, we&#8217;ll walk through a real-world scenario using the <strong>Poc-Auth-WebApi</strong> project: an Inventory Management system built with Java, Spring Boot, PostgreSQL, and a ReactJS frontend. The goal is to show how GitHub Copilot, guided by custom instruction files, can drive the full engineering workflow — from writing a User Story to generating tested, production-ready code.</p>
<blockquote>
<div class="highlight-card">
<p><em>We&#8217;ll use three instruction files placed in <code>.github/</code>: one for planning, one for execution, and one for testing. Each one tells Copilot exactly how to behave at each phase.</em></p>
</div>
</blockquote>
<div class="highlight-card">
<h3 class="h2">Phase 1 — Planning with Copilot</h3>
<p class="body-text">Before writing a single line of code, we ask Copilot to generate a properly structured User Story. By referencing <code>copilot-instructions-planning.md</code>, Copilot knows the exact format expected: ID, title, role-based narrative, acceptance criteria with Gherkin scenarios, technical subtasks per layer, and risk alerts.</p>
<h4>Copilot prompt</h4>
</div>
<p>&nbsp;</p>
<div class="highlight-card">
<pre class="wp-block-code"><code class="language-markdown"># Planning Harness — Poc-Auth-WebApi

## Before generating a User Story

1. Verify whether similar functionality already exists in the repo
2. Do not assume modules or endpoints that have not been created yet
3. If the requirement is ambiguous, ask before continuing

## 1. User Story

- ID: POC-US-[number]
- Title:
- As a [Auxiliary | Coordinator | SuperAdmin], I want [action], so that [benefit].
- Affected module: [iam | new module | both]
- Story Points: [1 | 2 | 3 | 5 | 8]

## 2. Acceptance Criteria

Scenario 1 — Happy path:
  Given [context] When [action] Then [expected result]

Scenario 2 — Error or validation:
  Given [context] When [incorrect action] Then [expected message or behavior]

Scenario 3 — Edge case:
  Given [boundary context] When [action] Then [expected result]

## 3. Technical Subtasks

### UI — ReactJS
- task (Xh)

### Backend — Spring Boot (Modular Monolith)
Module: [module name]

- entity/:     (Xh)
- dto/:        (Xh)
- repository/: (Xh)
- service/:    (Xh)
- controller/: (Xh)

Total estimate: Xh

## 4. Alerts

Ambiguities, inter-module dependencies, or risks.
Omit this section if there are none.</code></pre>
<h4>Generated User Story output</h4>
<pre class="wp-block-code"><code class="language-markdown"># POC-US-001 — Login with email and password

# POC-US-001 — Login with email and password

## 1. User Story

- **ID:** POC-US-001
- **Title:** Authenticate with email and password
- **As a** Auxiliary, Coordinator, or SuperAdmin, **I want** to log in with my email and password, **so that** the system identifies me and grants me a JWT token to access protected resources according to my role.
- **Affected module:** iam
- **Story Points:** 5

---

## 2. Acceptance Criteria

**Scenario 1 — Happy path:**
Given a registered user with a valid email and correct password,
When the user sends a `POST /api/v1/iam/auth/login` request with those credentials,
Then the system returns HTTP 200 with a JWT token that contains the user's role and expiration time.

**Scenario 2 — Invalid credentials:**
Given a user that provides a correct email but a wrong password,
When the user sends the login request,
Then the system returns HTTP 401 Unauthorized with message `"Invalid email or password"` — no field leak.

**Scenario 3 — Non-existent email:**
Given an email address that does not exist in the database,
When the user sends the login request,
Then the system returns HTTP 401 Unauthorized with the same generic message (no user-enumeration leak).

**Scenario 4 — Missing or malformed fields:**
Given a request body missing `email` or `password`, or with invalid email format,
When the user submits the request,
Then the system returns HTTP 400 Bad Request with field-level validation errors from `@Valid`.

---

## 3. Technical Subtasks

### UI — ReactJS

- Create `LoginPage` component with email, password fields and submit button. (2h)
- Store JWT in `localStorage` / context and redirect to dashboard on success. (1h)
- Display API error messages below the form. (1h)

### Backend — Spring Boot (Modular Monolith)

**Module:** `iam`

**Dependencies — `pom.xml`:**
- `spring-boot-starter-security`
- `io.jsonwebtoken:jjwt-api`
- `io.jsonwebtoken:jjwt-impl`
- `io.jsonwebtoken:jjwt-jackson`

**`entity/`** — `UserEntity` (2h)
- `id` BIGINT PK AUTO_INCREMENT
- `email` VARCHAR(255) UNIQUE NOT NULL
- `password` VARCHAR(255) NOT NULL ← BCrypt hash
- `role` VARCHAR(50) NOT NULL ← SUPER_ADMIN | COORDINATOR | AUXILIARY
- `active` BOOLEAN DEFAULT TRUE
- `created_at` TIMESTAMP DEFAULT NOW()
- Annotate with `@Entity`, `@Table(name = "users")`
- Never expose this entity directly in responses

**`dto/`** (1h)
- `LoginRequestDto`: `email` (`@Email @NotBlank`), `password` (`@NotBlank`)
- `LoginResponseDto`: `token` (String), `role` (String), `expiresAt` (long — epoch ms)

**`repository/`** — `UserRepository` (0.5h)
- `Optional findByEmail(String email);`

**`service/`** — `AuthService` (3h)
- Inject `UserRepository`, `PasswordEncoder` (BCrypt), `JwtService`
- `login(LoginRequestDto)`: find user → verify BCrypt hash → generate JWT → return `LoginResponseDto`
- Throw `InvalidCredentialsException` (mapped to 401) for both "user not found" and "wrong password"
- Annotate with `@Transactional(readOnly = true)`

**`service/`** — `JwtService` (2h)
- Read secret key and expiration from `application.properties` via `@Value`
- `String generateToken(UserEntity user)` — builds and signs the JWT
- `Claims extractClaims(String token)` — for future use by the filter chain

**`controller/`** — `AuthController` (1h)
- `POST /api/v1/iam/auth/login`
- Accept `@RequestBody @Valid LoginRequestDto`, return `ResponseEntity`
- Delegate entirely to `AuthService` — no business logic in the controller

**`shared/`** — `GlobalExceptionHandler` (0.5h)
- Handle `InvalidCredentialsException` → HTTP 401
- Handle `MethodArgumentNotValidException` → HTTP 400 with field errors

**Total backend estimate:** 10h

---

## 4. Alerts

&gt; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> **JWT secret key:** Must be stored in an environment variable or `application.properties` — never hardcoded. Minimum 256-bit key for HS256.

&gt; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> **Password storage:** Passwords must be hashed with BCrypt before persistence. Plain-text storage is not acceptable even in a PoC.

&gt; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> **User-enumeration:** Both "user not found" and "wrong password" must return the same HTTP 401 message.

&gt; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> **Refresh token:** Out of scope for this story. The issued JWT should have a short TTL (e.g., 1 hour).

&gt; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> **Dependency:** `UserEntity` and `UserRepository` created here are the foundation for future role-based authorization in all other modules.
</code></pre>
<h3>Phase 2 — Development with Copilot</h3>
<p>With the User Story defined in <span class="token token code-snippet code">`POC-US-001-login.md`</span>, we switch to the execution phase. We reference both instruction files directly in Copilot Chat so it knows the project conventions, layer order, and the exact feature to implement — no extra context needed.</p>
<h4>Copilot Chat prompt</h4>
<p><em>Using #file:execution.md and #file:POC-US-001-login.md, implement the Login feature.</em><br />
<em>Generate one file at a time, starting with UserEntity.</em><br />
<em>Wait for my confirmation before moving to the next layer.</em></p>
<h4>Result</h4>
<p><img loading="lazy" decoding="async" data-attachment-id="391375" data-permalink="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/screenshot-2026-05-25-115230/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230.png" data-orig-size="818,547" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2026 05 25 115230" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230.png" class="wp-image-391375 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230-300x201.png" alt="Screenshot 2026 05 25 115230" width="448" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230-300x201.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230-768x514.png 768w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230-600x400.png 600w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-115230.png 818w" sizes="auto, (max-width: 448px) 100vw, 448px" /> <img loading="lazy" decoding="async" data-attachment-id="391376" data-permalink="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/screenshot-2026-05-25-122154/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122154.png" data-orig-size="450,657" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2026 05 25 122154" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122154.png" class="size-medium wp-image-391376 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122154-205x300.png" alt="Screenshot 2026 05 25 122154" width="205" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122154-205x300.png 205w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122154.png 450w" sizes="auto, (max-width: 205px) 100vw, 205px" /></p>
<h3>Phase 3 — Testing with Copilot</h3>
<p>With the full implementation in place, we switch to the testing phase. Copilot now references the testing instructions and the same User Story — it knows exactly which Gherkin scenarios to cover and which layers to test.</p>
<h4>Copilot Chat prompt</h4>
<p><em>Using #file:testing.md and #file:POC-US-001-login.md, generate the tests for the Login feature.</em><br />
<em>Generate one test class at a time, starting with AuthServiceTest.</em><br />
<em>Wait for my confirmation before moving to the next layer.</em></p>
<p><img loading="lazy" decoding="async" data-attachment-id="391377" data-permalink="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/screenshot-2026-05-25-122802/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802.png" data-orig-size="826,958" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2026 05 25 122802" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802.png" class="size-medium wp-image-391377 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802-259x300.png" alt="Screenshot 2026 05 25 122802" width="259" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802-259x300.png 259w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802-768x891.png 768w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-122802.png 826w" sizes="auto, (max-width: 259px) 100vw, 259px" /> <img loading="lazy" decoding="async" data-attachment-id="391378" data-permalink="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/screenshot-2026-05-25-124251/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-124251.png" data-orig-size="433,395" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2026 05 25 124251" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-124251.png" class="size-medium wp-image-391378 aligncenter" src="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-124251-300x274.png" alt="Screenshot 2026 05 25 124251" width="300" height="274" srcset="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-124251-300x274.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-124251.png 433w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
</div>
<h2> <strong>The Honest Take</strong></h2>
<p>AI-assisted development with GitHub Copilot and structured instruction files is not just a productivity trick — it is a fundamental shift in how engineering teams approach the software delivery lifecycle. Throughout this article, we saw how three simple instruction files — <span class="token token code-snippet code">`planning.md`</span>, <span class="token token code-snippet code">`execution.md`</span>, and <span class="token token code-snippet code">`testing.md`</span> — transformed Copilot from a code autocomplete tool into a disciplined engineering collaborator. The result was a fully implemented and tested Login feature, generated layer by layer, following project conventions, without a single deviation from the architecture.</p>
<h3><span class="token token title">What we gained</span></h3>
<p><strong><span class="token token bold content">Speed without chaos</span></strong> — Copilot generated every layer in the correct order, respecting package names, DTOs, versioned endpoints, and exception handling conventions from the very first suggestion.</p>
<p><strong><span class="token token bold content">Consistency at scale</span></strong> — every developer on the team, regardless of experience, produces code that follows the same patterns when guided by the same instructions.</p>
<p><strong><span class="token token bold content">Full coverage from day one</span></strong> — unit tests, integration tests, and UI tests were generated alongside the implementation, not as an afterthought.</p>
<h3><span class="token token title">The uncomfortable truth</span></h3>
<p>Here is where we need to be honest. All of this only works if someone is actually reading the output. Copilot is fast. Impressively fast. And that speed creates a dangerous temptation: to confirm each layer without truly reviewing it, to trust the generated test because it looks complete, to merge the pull request because the build is green.</p>
<blockquote><p><strong><span class="token token bold content">A poorly reviewed Copilot suggestion is not a productivity gain — it is a bug </span><span class="token token bold content">waiting to be deployed.</span></strong></p></blockquote>
<p>The instruction files set the rules. Copilot follows them. But neither the files nor the model can replace the engineer who understands the business context, spots the edge case that was not in the User Story, or catches the security vulnerability that passed validation.</p>
<h3><strong>The right mindset</strong></h3>
<p>Think of Copilot as a very fast junior developer who never gets tired and always follows instructions to the letter. That is enormously valuable. But every senior engineer knows that a junior developer without code review produces fast, confident, and sometimes deeply wrong code. The goal is not to remove the engineer from the loop. The goal is to free the engineer from the repetitive work so they can focus on what actually requires human judgment.</p>
<ul>
<li>Use Copilot to move fast. Use your expertise to move right.</li>
<li>One without the other is just speed in the wrong direction.</li>
</ul>
<h2>References</h2>
<ul>
<li>Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., Kaplan, J., Edwards, H., Burda, Y., Joseph, N., Brockman, G., Ray, A., Puri, R., Krueger, G., Petrov, M., Khlaaf, H., Sastry, G., Mishkin, P., Chan, B., Gray, S., … Zaremba, W. (2021). <em>Evaluating large language models trained on code.</em> arXiv. <a href="https://arxiv.org/abs/2107.03374" target="_blank" rel="noopener">https://arxiv.org/abs/2107.03374</a></li>
<li>GitHub. (2023). <em>GitHub Copilot documentation: Getting started with Copilot.</em> GitHub Docs. <a href="https://docs.github.com/en/copilot" target="_blank" rel="noopener">https://docs.github.com/en/copilot</a></li>
<li>Harness. (2024). <em>Harness platform documentation: CI/CD pipelines, feature flags, and GitOps.</em> Harness Developer Hub. <a href="https://developer.harness.io/docs" target="_blank" rel="noopener">https://developer.harness.io/docs</a></li>
<li>Imai, S. (2022). Is GitHub Copilot a substitute for human pair-programming? An empirical study. <em>Proceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion Proceedings,</em> 319–321. <a href="https://doi.org/10.1145/3510454.3522684" target="_blank" rel="noopener">https://doi.org/10.1145/3510454.3522684</a></li>
<li>Parnin, C., Görg, C., &amp; Rugaber, S. (2023). The future of software engineering in the age of large language models. <em>IEEE Software, 40</em>(6), 22–29. <a href="https://doi.org/10.1109/MS.2023.3300138" target="_blank" rel="noopener">https://doi.org/10.1109/MS.2023.3300138</a></li>
<li>Shahin, M., Ali Babar, M., &amp; Zhu, L. (2017). Continuous integration, delivery and deployment: A systematic review on approaches, tools, challenges and practices. <em>IEEE Access, 5,</em> 3909–3943. <a href="https://doi.org/10.1109/ACCESS.2017.2685629" target="_blank" rel="noopener">https://doi.org/10.1109/ACCESS.2017.2685629</a></li>
</ul>
<p>The post <a href="https://blogs.perficient.com/harness-engineering-with-github-copilot-from-planning-to-testing-in-one-seamless-workflow/">Harness Engineering with GitHub Copilot: From Planning to Testing in One Seamless Workflow</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-25-131329.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391370</post-id>	</item>
		<item>
		<title>From Connected Data to Intelligent Automation: What We Shared at DynamicsCon 2026</title>
		<link>https://blogs.perficient.com/from-connected-data-to-intelligent-automation-what-we-shared-at-dynamicscon-2026/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Fri, 22 May 2026 14:54:30 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[Dynamics365]]></category>
		<category><![CDATA[DynamicsCon]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Power Platform]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391366</guid>

					<description><![CDATA[<p>DynamicsCon 2026 brought together the Dynamics 365 and Power Platform community to focus on what actually works—real-world strategies for connecting data, automating processes, and delivering&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/from-connected-data-to-intelligent-automation-what-we-shared-at-dynamicscon-2026/">From Connected Data to Intelligent Automation: What We Shared at DynamicsCon 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://dynamicscon.com/">DynamicsCon 2026</a> brought together the Dynamics 365 and Power Platform community to focus on what actually works—real-world strategies for connecting data, automating processes, and delivering measurable business outcomes. This year, <a href="https://www2.perficient.com/prft/dynamicscon-2026">Perficient</a> contributed two sessions centered on a common challenge we see across organizations: disconnected systems limiting the value of Dynamics investments.</p>
<p>Across both sessions, our focus was simple: How do you move from point solutions to connected, scalable, and intelligent business processes?</p>
<p>&nbsp;</p>
<p><strong>Connecting the Data Foundation</strong></p>
<p>In <em>“The Avengers of Data: Assembling CI, Power Platform, and Dataverse,”</em> we explored how organizations can unlock more value from Customer Insights by connecting it across the broader Microsoft ecosystem.</p>
<p>Key concepts included:</p>
<ul>
<li>Creating a unified customer profile (Customer 360) that brings together marketing, sales, and behavioral data</li>
<li>Surfacing insights directly into Dynamics 365 Sales to empower frontline teams</li>
<li>Using Power BI to deliver trusted, consistent reporting from a single source of</li>
<li>Triggering Power Automate workflows from real-time customer interactions to drive immediate action</li>
</ul>
<p>The session reinforced that Customer Insights is most powerful when it operates as part of a connected architecture, not a standalone tool.</p>
<p>&nbsp;</p>
<p><strong>Building Scalable Automation</strong></p>
<p>In <em>“Power Automate Multi-Stage Approval Workflows,”</em> we focused on a challenge nearly every organization faces—approval processes that work at a small scale but break down as complexity grows.</p>
<p>We demonstrated how to:</p>
<ul>
<li>Design multi-stage workflows that move forward and backward across approval layers</li>
<li>Configure dynamic approvers and automated escalations to reduce delays</li>
<li>Use “Do Until” logic and control structures to manage complex workflow paths</li>
<li>Extend platform capabilities by logging approval history beyond out-of-the-box limitations</li>
</ul>
<p>The takeaway: scalable automation requires not just tools, but thoughtful workflow design that accounts for real-world variability.</p>
<p>&nbsp;</p>
<p><strong>Key Theme: From Connected Systems to Connected Intelligence</strong></p>
<p>One of the most forward-looking discussions in our sessions centered on what comes next:<br />
moving from connected systems to connected, AI-powered orchestration.</p>
<p>As highlighted in the “Avengers of Data” session, organizations are beginning to:</p>
<ul>
<li>Build on a shared, unified data foundation (Dataverse + Customer Insights)</li>
<li>Orchestrate processes across systems with automation</li>
<li>Use emerging capabilities like Copilot and AI-driven agents to execute workflows, not just analyze them</li>
</ul>
<p>This shift represents the evolution from data visibility to process automation to intelligent, scalable execution</p>
<p>&nbsp;</p>
<p><strong>What This Means for Organizations</strong></p>
<p>The conversations at DynamicsCon reinforced a consistent message we hear from clients: &#8220;Real transformation happens when technology is connected across the business to drive outcomes and enable better decisions.”</p>
<p>Whether the goal is improving customer engagement, accelerating sales, or streamlining operations, success depends on:</p>
<ul>
<li>A unified data strategy</li>
<li>Automation that reflects real business processes</li>
<li>A roadmap toward AI-powered orchestration</li>
</ul>
<p>&nbsp;</p>
<p>If you attended one of our sessions or are exploring how to get more from Dynamics 365 and the Power Platform, we’d love to connect.</p>
<p><a href="https://www2.perficient.com/prft/dynamicscon-2026">Start a Conversation with our Experts</a></p>
<p>The post <a href="https://blogs.perficient.com/from-connected-data-to-intelligent-automation-what-we-shared-at-dynamicscon-2026/">From Connected Data to Intelligent Automation: What We Shared at DynamicsCon 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-22-094926.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391366</post-id>	</item>
		<item>
		<title>Perficient Recognized with AWS Financial Services Competency, Enhancing Industry-Focused Cloud Capabilities</title>
		<link>https://blogs.perficient.com/perficient-recognized-with-aws-financial-services-competency-enhancing-industry-focused-cloud-capabilities/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Fri, 15 May 2026 18:44:22 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[aws competency]]></category>
		<category><![CDATA[Financial Services]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391348</guid>

					<description><![CDATA[<p>We’re proud to announce that Perficient has achieved the Amazon Web Services (AWS) Financial Services Competency designation—recognizing our proven expertise in helping financial institutions modernize operations, unlock data&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/perficient-recognized-with-aws-financial-services-competency-enhancing-industry-focused-cloud-capabilities/">Perficient Recognized with AWS Financial Services Competency, Enhancing Industry-Focused Cloud Capabilities</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">We’re proud to announce that Perficient has achieved the Amazon Web Services (AWS) Financial Services Competency designation—recognizing our proven expertise in helping financial institutions modernize operations, unlock data value, and deliver secure, customer-centric digital experiences.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">A Milestone That Signals Expertise and Trust</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The AWS Financial Services Competency is awarded to partners that demonstrate deep technical proficiency in the AWS platform alongside measurable customer impact. For financial services organizations—where security, compliance, and reliability are critical, this designation provides confidence that they are working with a partner who has been rigorously vetted to meet the industry’s highest standards.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">This recognition reinforces Perficient’s ability to support banks, insurers, capital markets firms, and fintech organizations as they navigate complex transformation initiatives in a highly regulated environment.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Driving Innovation in a Rapidly Evolving Industry</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Financial institutions are under increasing pressure to modernize legacy systems, accelerate product innovation, and deliver seamless digital experiences—all while maintaining strict regulatory compliance.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">In partnership with AWS, Perficient helps organizations meet these demands by combining cloud, data, and AI capabilities to:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Accelerate new product development with AI-driven solutions</span></b><span data-contrast="auto">, while maintaining compliance</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">Streamline client onboarding and due diligence</span></b><span data-contrast="auto"> through automation and intelligent workflows</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Unlock new revenue streams through data optimization</span></b><span data-contrast="auto"> and advanced analytics</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="auto">Modernize and scale core systems</span></b><span data-contrast="auto">, improving agility and reducing technical debt</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><b><span data-contrast="auto">Simplify M&amp;A integration and governance</span></b><span data-contrast="auto">, enabling faster, more efficient consolidation</span></li>
</ul>
<p><span data-contrast="auto">These capabilities allow financial services organizations to move faster, operate more efficiently, and deliver differentiated customer experiences.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Backed by Proven Client Outcomes</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Our competency is grounded in real-world results.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">For a </span><b><span data-contrast="auto">top-three life insurance carrier</span></b><span data-contrast="auto">, Perficient helped modernize digital platforms and streamline operations—improving efficiency and enabling more personalized customer engagement.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">For a </span><b><span data-contrast="auto">top-five fintech leader</span></b><span data-contrast="auto">, we supported rapid growth through scalable cloud architecture and platform modernization, helping the organization increase agility and accelerate time to market for new offerings.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">These engagements reflect our ability to translate cloud strategy into measurable business outcomes.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Strengthening Our Partnership with AWS</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Achieving this competency also deepens our collaboration with AWS—opening new opportunities to deliver greater value to clients.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">As a Financial Services Competency Partner, Perficient benefits from:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Increased visibility and credibility</span></b><span data-contrast="auto"> within the AWS ecosystem, including inclusion in the AWS Partner Solutions Finder used by financial services buyers</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">Expanded co-sell opportunities</span></b><span data-contrast="auto">, enabling closer alignment with AWS field teams and access to new client engagements</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Marketing and growth support</span></b><span data-contrast="auto">, including funding programs that help accelerate demand generation and innovation initiatives</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="auto">Access to AWS expertise and programs</span></b><span data-contrast="auto">, supporting faster, more effective solution delivery</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><span data-contrast="auto">These advantages allow us to bring even more innovation, scale, and speed to the organizations we serve.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Looking Ahead</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The financial services industry is at a pivotal moment. Organizations that successfully harness cloud, data, and AI will be best positioned to drive growth, improve resilience, and deliver the next generation of customer experiences.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Earning the AWS Financial Services Competency reinforces Perficient’s commitment to helping our clients lead in this transformation. We look forward to continuing to innovate alongside AWS—and to helping financial institutions unlock new opportunities in an increasingly digital landscape.</span><span data-ccp-props="{}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/perficient-recognized-with-aws-financial-services-competency-enhancing-industry-focused-cloud-capabilities/">Perficient Recognized with AWS Financial Services Competency, Enhancing Industry-Focused Cloud Capabilities</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/2026_AWS_FinServ-1200x800-2-1024x683.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391348</post-id>	</item>
		<item>
		<title>From Legacy to AI‑First: How Insurers Are Modernizing Operations with Microsoft</title>
		<link>https://blogs.perficient.com/from-legacy-to-ai-first-how-insurers-are-modernizing-operations-with-microsoft/</link>
		
		<dc:creator><![CDATA[Perficient Expert]]></dc:creator>
		<pubDate>Wed, 13 May 2026 16:01:02 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[Financial Services]]></category>
		<category><![CDATA[insurance]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Copilot]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391343</guid>

					<description><![CDATA[<p>Insurance organizations are entering a decisive period of change. Margin pressure, rising claims severity, and increasingly digital customer expectations are forcing carriers to modernize how&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/from-legacy-to-ai-first-how-insurers-are-modernizing-operations-with-microsoft/">From Legacy to AI‑First: How Insurers Are Modernizing Operations with Microsoft</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Insurance organizations are entering a decisive period of change. Margin pressure, rising claims severity, and increasingly digital customer expectations are forcing carriers to modernize how work gets done—while advances in AI are reshaping what’s possible across underwriting, claims, and service.</p>
<p>What’s becoming clear is this: AI alone is not the transformation. The insurers seeing real impact are those treating AI as part of a broader modernization of operations, data, and workforce models.</p>
<p>&nbsp;</p>
<p><strong>Insurance Is Shifting from Experimentation to Intelligent Operations</strong></p>
<p>For several years, insurers have explored AI through pilots and point solutions. As we look toward 2026, that phase is giving way to a more pragmatic reality: AI is moving into core operating models. Microsoft refers to organizations making this shift as <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/2025-the-year-the-frontier-firm-is-born">Frontier Firms</a>—those putting AI at the center of how work gets done across people, processes, and platforms.</p>
<p>Across the insurance value chain—product, underwriting, policy administration, claims, and service—leaders are re‑evaluating how work flows from intake to decision. Manual, document‑heavy processes create bottlenecks, inconsistent outcomes, and slow response times. In contrast, intelligent operations use AI to orchestrate workflows, extract and evaluate information, and support human decision‑making at scale.</p>
<p>This shift reflects a broader <a href="https://www.perficient.com/insights/perspectives/3-ways-insurers-can-lead-in-the-age-of-ai">industry realization:</a> competitiveness now depends on speed, consistency, and experience, not just pricing or product differentiation. Every customer interaction has become an inflection point, and operational friction is no longer tolerable.</p>
<p>&nbsp;</p>
<p><strong>Experience, Productivity, and Cost Pressure Are Converging</strong></p>
<p>Customer expectations for insurance experiences continue to rise. Digital‑first interactions—fast quotes, real‑time claims updates, and seamless service—are now baseline requirements. At the same time, insurers are navigating cost pressure driven by claims volatility, underwriting discipline, and macroeconomic uncertainty.</p>
<p>Industry research shows that while many insurers recognize the value of AI, far fewer have successfully embedded it into core operations. <a href="https://www.gartner.com/en/articles/strategic-predictions-for-2026">Gartner predicts</a> that by 2026, AI will increasingly operate beneath the surface of business systems, shaping decisions, workflows, and outcomes as a default capability rather than a visible tool.</p>
<p>What’s often overlooked is how closely customer experience and employee experience are linked. Underwriters, adjusters, agents, and service teams are managing increasing complexity with tools and processes that were never designed for today’s pace. Productivity tools and AI‑assisted workflows are becoming essential—not to replace expertise, but to remove administrative burden and improve decision quality.</p>
<p>At the same time, more <a href="https://www.grantthornton.com/insights/survey-reports/insurance/2026/insurance-insights-2026-ai-impact-survey-report">research highlights</a> a growing gap between AI ambition and execution. While insurers are seeing early value from AI initiatives, challenges related to scaling, operating models, and governance continue to limit broader impact.</p>
<p>Automation is now a margin strategy. When applied thoughtfully, AI can reduce cycle times, improve consistency, and allow teams to scale operations without proportional increases in headcount—delivering better outcomes for both customers and employees.</p>
<p>&nbsp;</p>
<p><strong>How Microsoft Is Enabling AI</strong><strong>‑</strong><strong>First Insurance Operations</strong></p>
<p>As insurers move from pilots to production, technology choices matter. Microsoft’s AI and data platform provides insurers with the building blocks to operationalize AI responsibly and at scale.</p>
<p>Across insurance workflows, we’re seeing <a href="https://www.microsoft.com/en-us/ai/financial-services/insurance">Microsoft</a> technologies applied in coordinated ways:</p>
<ul>
<li><a href="https://www.microsoft.com/en-us/microsoft-cloud/blog/financial-services/2026/02/18/from-bottlenecks-to-breakthroughs-how-agentic-ai-is-reshaping-insurance/">Agent‑orchestrated workflows</a> that manage multi‑step processes across underwriting and claims</li>
<li>Document intelligence and knowledge grounding to extract insights from large, unstructured data sets</li>
<li>Productivity copilots and low‑code tools that enable employees to interact naturally with AI systems</li>
<li>Unified data platforms that support analytics, real‑time insights, and governance</li>
</ul>
<p>Microsoft highlights that organizations adopting agentic AI at scale are seeing significantly higher returns than slower adopters—reinforcing the importance of moving beyond experimentation and into operational deployment.</p>
<p>In underwriting, for example, agentic AI can orchestrate intake, data extraction, risk assessment, and decision routing—<a href="https://www.perficient.com/outcomes/large-insurance-broker---quote-processing-with-agentic-ai">dramatically reducing cycle times</a> while keeping humans in the loop for oversight. In service and claims, AI accelerates access to trusted information and supports faster, more consistent responses.</p>
<p>When paired with governance and clear operating models, these capabilities allow insurers to embed AI into the fabric of how work gets done, rather than layering it on top of legacy processes.</p>
<p><strong> </strong></p>
<p><strong>Why Perficient</strong></p>
<p>Technology alone doesn’t make an insurer AI‑first. Success depends on aligning platforms, processes, data, and people around real business outcomes.</p>
<p><a href="https://www.perficient.com/partners/microsoft">Perficient</a> works alongside insurers and <a href="https://www.microsoft.com/en-us/ai/financial-services/insurance">Microsoft</a> to help organizations modernize responsibly—connecting strategy to execution across the insurance value chain. Our teams bring deep industry experience, hands‑on platform expertise, and a focus on measurable outcomes, whether that’s improving underwriting throughput, modernizing customer experiences, or establishing governance for AI at scale.</p>
<p>As insurers look toward 2026, the organizations that lead will be those that move deliberately—modernizing operations today to unlock the full potential of AI tomorrow.</p>
<p>&nbsp;</p>
<p>Explore additional perspectives and insurance use cases → <a href="https://www.perficient.com/industries/banking-financial-services-insurance">Banking, Financial Services &amp; Insurance Consulting | Perficient</a></p>
<p>The post <a href="https://blogs.perficient.com/from-legacy-to-ai-first-how-insurers-are-modernizing-operations-with-microsoft/">From Legacy to AI‑First: How Insurers Are Modernizing Operations with Microsoft</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/iStock-1312330537e-1-1024x576.jpg" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391343</post-id>	</item>
		<item>
		<title>Your Data is Ready, Your AI Can Be Too: Perficient at Snowflake Summit 2026</title>
		<link>https://blogs.perficient.com/your-data-is-ready-your-ai-can-be-too-perficient-at-snowflake-summit-2026/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Tue, 05 May 2026 15:08:49 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[homepage-featured]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=391321</guid>

					<description><![CDATA[<p>Snowflake Summit 2026, running June 1–4 at Moscone Center in San Francisco, will bring together data and AI leaders from around the world under the&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/your-data-is-ready-your-ai-can-be-too-perficient-at-snowflake-summit-2026/">Your Data is Ready, Your AI Can Be Too: Perficient at Snowflake Summit 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Snowflake Summit 2026, running June 1–4 at Moscone Center in San Francisco, will bring together data and AI leaders from around the world under the theme &#8220;Making AI Real for Business.” It&#8217;s an honest theme — because making AI real is harder than making AI impressive, and the gap between a keynote demo and a production workload is where most organizations are currently stuck.</p>
<p>That&#8217;s where Perficient comes in. We&#8217;ll be on the Summit floor at <strong>Booth #2422</strong> with live, industry-specific demos that cut through the noise and show what it looks like when your Snowflake investment is performing the way it was designed to. Our focus this year centers squarely on one of Snowflake&#8217;s most powerful and most underutilized capabilities: Cortex Code.</p>
<h2>Cortex Code: The AI Assistant That Actually Knows Your Data</h2>
<p>If there&#8217;s one Snowflake capability that deserves serious attention heading into Summit, it&#8217;s Cortex Code — Snowflake&#8217;s AI-driven development assistant that went generally available earlier this year and has already been adopted by more than 50% of Snowflake customers.</p>
<p>Cortex Code is the throughline of our presence at Summit, but it comes to life through industry-specific demos that connect the platform&#8217;s capabilities to the real problems your organization is trying to solve. Our team will be on the floor to walk you through live demonstrations across financial services, retail, manufacturing, and healthcare.</p>
<p><strong>Content Flywheel Engine</strong> — See how Snowflake Cortex AI automatically identifies what your customers are asking but can&#8217;t find answers to, clusters those gaps into actionable content themes, and dispatches AI-generated briefs to WRITER for publishing. This demo is built for digital marketing and content teams who want to close the loop between customer&#8217;s search intent and targeted content on the site — using semantic clustering, AI-driven content briefs, and automated dispatch to Writer AI Studio, all orchestrated natively inside Snowflake.</p>
<p><strong>Investment Advisory Solutions</strong> — See how Snowflake and Cortex AI power intelligent, data-driven advisory workflows. This demo is built for financial services teams who want to understand how to bring client data, market signals, and AI-driven intelligence together in a single governed environment — and get it in front of advisors at the moment decisions are made.</p>
<p><strong>Retail &amp; Inventory Analytics </strong>— Snowflake&#8217;s experience lets retail teams ask inventory and operational questions in plain language and get answers that drive real decisions. This demo shows what it looks like when your merchandising, supply chain, and operations teams don&#8217;t need a BI analyst standing between them and their data.</p>
<p><strong>AI Healthcare Data</strong> — Healthcare organizations face a unique convergence of data complexity, regulatory constraint, and the enormous promise of AI to improve patient outcomes. This demo explores how AI-powered interactions are transforming patient engagement and clinical data workflows — making the data infrastructure work as hard as the clinical teams it supports.</p>
<p><span class="font-bold"><strong>Battery Passport</strong> </span>— Discover the digital record that tracks an electric vehicle’s battery lifecycle, including its condition, health, and performance to provide critical insights to consumers, OEMs, dealers, insurance companies, and regulatory bodies.</p>
<p>Each demo is anchored in what&#8217;s actually running in production for Perficient clients. The question our team will be there to answer isn&#8217;t just &#8220;can Snowflake do this?&#8221; — it&#8217;s &#8220;here&#8217;s exactly how we&#8217;ve made it work, and here&#8217;s what that means for your environment.&#8221;</p>
<p>If you&#8217;re attending Snowflake Summit 2026, find us on the floor and bring your hardest questions — about Cortex Code, about getting AI into production, about what the path from enterprise data engineering to agentic AI actually looks like when someone has already walked it.</p>
<p>The demos are live. The use cases are real. And we&#8217;re ready to show you what&#8217;s possible when you stop leaving value on the table inside the platform you&#8217;ve already built.</p>
<p>The post <a href="https://blogs.perficient.com/your-data-is-ready-your-ai-can-be-too-perficient-at-snowflake-summit-2026/">Your Data is Ready, Your AI Can Be Too: Perficient at Snowflake Summit 2026</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content url="https://blogs.perficient.com/wp-content/uploads/2026/05/Screenshot-2026-05-05-101145.png" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">391321</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin


Served from: blogs.perficient.com @ 2026-06-05 12:58:23 by W3 Total Cache
-->