Perficient Blogs https://blogs.perficient.com/ Expert Digital Insights Thu, 27 Feb 2025 22:55:56 +0000 en-US hourly 1 https://blogs.perficient.com/files/favicon-194x194-1-150x150.png Perficient Blogs https://blogs.perficient.com/ 32 32 30508587 Confidently Incorrect – Learning, Leading, and AI https://blogs.perficient.com/2025/02/27/confidently-incorrect-learning-leading-and-ai/ https://blogs.perficient.com/2025/02/27/confidently-incorrect-learning-leading-and-ai/#respond Thu, 27 Feb 2025 22:55:56 +0000 https://blogs.perficient.com/?p=377937

A friend recently shared a research paper from Oxford Academic about Large Language Models (LLMs) and their human-like biases. I found it fascinating.

The article explains how some groups use LLMs to simulate human participants. Since these models are trained on human-generated data, they can emulate human responses across diverse psychological and behavioral experiments.

It further notes that LLMs favor socially desirable responses that align with the Big Five personality traits – including agreeableness. Notably, during their experiments, LLMs would modify the responses if the researcher appeared to be evaluating it.

Confidently Wrong AI (Posturing)

I had planned to write about the phrase “confidently wrong,” which we hear often when talking about Artificial Intelligence (AI) models. Combined with the concept of AI hallucinations, this can mislead people who are expecting reliable answers from these tools.

More and more users are favoring AI over traditional online search. No doubt you’ve noticed that Google now shows an AI response above the SERP. This experience is often faster and feels more natural than manual trial-and-error clicks through links.

However, it becomes risky when the LLM is wrong. Once the AI selects an answer, it may be reluctant to admit it was wrong. Even if you challenge a correct statement, the LLM might apologize and change its answer to be agreeable. Users need to be cautious and validate the information received.

Confidently Incorrect Humans (Learning)

I have an 11-year-old son who is hell-bent on being contradictory. If I say the sky is blue, he’ll point out that it can be gray, yellow, orange, red, purple, or black. He’s not wrong, but he is frustratingly contrarian. When I tell him he’s being contradictory, he says, “No I’m not!” Even when he is flat wrong, he won’t let it go!

You’ve probably also heard the phrase “fake it ‘till you make it.” It’s meant to help those who are learning and to ease imposter syndrome. I used to hate the phrase because I prefer transparency. I’d rather hear “I don’t know” than to incorrectly think you have it under control. However, I now appreciate that it helps escape a negative mindset.

AI Confidently Mimicking Humans (Refining)

The Oxford Academic article points out that AI learns behaviors from us! It’s mostly trained on data created by humans, so it picks up our natural tendencies. If our writing is polite and avoids confrontation, the AI will be trained to follow those patterns.

Additionally, humans help validate the training – even crowdsourced to the general public. When you give a thumbs up to a response from an LLM, you’re teaching it what you prefer to see in the output. Over time it will lean toward agreeableness. While it’s not conscious, AI is learning to mimic humans.

The Con Man (Tricking)

The term “con man” or “con artist” comes from the word “confidence.” It refers to the act of manipulating or persuading people into believing something false.

Con artists have existed as long as humans have been able to communicate. There are fun ones, like magicians who amaze us with the spectacular. Then there are the bad kind that scam people out of their life savings. Even reputable sources like the BBC, CNN, Forbes, The Atlantic, and others can sometimes spread misleading information, confusing us even further.

AI is trained on a mix of data, including quality sources like scientific research papers but also the text of trolls attacking everything, and your mother, on Reddit. It learns from both the best and the worst of humanity.

The Confident Leader (Inspiring)

Confidence has two sides. We’re often inspired by confident leaders. When leaders seem uncertain, many people get nervous and may leave the group. It’s clear that we prefer a strong front over complete transparency.

Don’t get me wrong… We know that transparency is important. A quick Google search shows droves of experts saying that transparency is the best policy. We also understand the consequences of an over-confident leader.

But at the end of the day, we’re just regular folks looking for stability and security. Time and again, we’re attracted to leaders who exude confidence and instill inspiration.

Conclusion

We often laugh at poorly executed AI – it makes us feel superior. The same goes for poorly articulated statements from people – it makes us feel superior. We’ve all seen how we collectively attack and criticize each other online.

AI learns from us. It relies on us for continual improvement. It adopts our positive traits but can also mimic our negative behaviors.

As we continue to use AI, it will become a bigger part of our lives. Often, we’ll seek out the interaction, while other times, hidden AI will quietly work in the background. Just like with other people, we need to validate our interactions with AI. Trust, but verify.

……

If you are looking for a strong partner that loves AI but will verify results, reach out to your Perficient account manager or use our contact form to begin a conversation.

]]>
https://blogs.perficient.com/2025/02/27/confidently-incorrect-learning-leading-and-ai/feed/ 0 377937
Perficient Receives Corporate Champion Award from Cystic Fibrosis Foundation’s Gateway Chapter https://blogs.perficient.com/2025/02/27/perficient-receives-corporate-champion-award-from-cystic-fibrosis-foundations-gateway-chapter/ https://blogs.perficient.com/2025/02/27/perficient-receives-corporate-champion-award-from-cystic-fibrosis-foundations-gateway-chapter/#respond Thu, 27 Feb 2025 21:56:43 +0000 https://blogs.perficient.com/?p=377901

Perficient and our colleagues are guided by a shared sense of purpose and vision to boldly advance business, and we’re equally passionate about making a difference in the communities we serve. For more than 16 years, Perficient has partnered with the Gateway Chapter of the Cystic Fibrosis Foundation (CFF), supporting the organization’s mission to find a cure for cystic fibrosis and improve the quality of life for those affected by the disease.  

We’re proud to share that Perficient was recently recognized by the CFF Gateway Chapter with its 2024 Corporate Champion Award—which is an incredible achievement! This recognition is a testament to our support of the organization’s Gateway Chapter in St. Louis, and the generosity of our colleagues.

Announced annually, the CFF Gateway Chapter’s Corporate Champion Award recognizes corporations for their support through sponsorship, involvement, and dynamic employee and customer engagement. Perficient has proudly supported the CFF Gateway Chapter for more than 16 years, contributing over $180,000 towards the chapter’s mission and events.  

Perficient’s recognition was celebrated alongside other annual award recipients at the Gateway Chapter’s annual meeting on Wednesday, February 26.

“It’s a pleasure to accept this award on behalf of Perficient,” said Bill Davis, Senior Vice President at Perficient and board member of the CFF Gateway Chapter. “At Perficient, we direct our time and energy to two causes—advancing STEM education and improving health and well-being—the latter being directly aligned to the incredible work the Cystic Fibrosis Foundation is doing. We talk a lot about looking for ways to make a difference, so we direct a lot of our energy, time, and dollars to causes where we can see real tangible impact being made. This is a cause where we’re seeing tremendous progress, so it’s our pleasure to continue to support the Foundation and their mission.” 

In addition to the awards ceremony, the annual meeting attendees learned more about the CFF Gateway Chapter’s efforts to find a cure for cystic fibrosis and support people with cystic fibrosis to live long, fulfilling lives. The event also featured a presentation from Dr. JP Clancy, CFF VP of Clinical Research, about the latest medical and scientific advancements to treat cystic fibrosis.  

Understanding Cystic Fibrosis 

According to the CFF, cystic fibrosis is a progressive, genetic disease that affects the lungs, pancreas, and other organs. Cystic fibrosis causes thick mucus to build up in the lungs, digestive tract, and other areas of the body, leading to severe respiratory and digestive problems. Over time, the disease limits the ability to breathe properly. With an estimated 105,000 people diagnosed with cystic fibrosis across 94 countries, the impact of the disease is monumental.  

Through scientific research and clinical trials, scientists can understand more about the Cystic Fibrosis Transmembrane Conductance Regulator (CFTR) protein, which maintains a balance between the body’s salt and water distribution. When the protein is not properly functioning, the chloride found in salt can build up in the lungs and cause cystic fibrosis symptoms. While there have been instrumental advancements in cystic fibrosis treatment, and progress to understand the CFTR protein, doctors are continuing extensive research to find a cure.  

Cystic fibrosis also has a large impact on the families and loved ones of those who have the disease. Carrier or genetic testing plays a significant role in providing a diagnosis, but it also enables parents to make essential and informed decisions by understanding their chances of having a child with cystic fibrosis. The CFF provides vital support through research, advocacy, and care initiatives, striving towards a future free from cystic fibrosis.  

Read More: Learn About Cystic Fibrosis and Understand the Role of Genetics 

Championing Change: Perficient Proudly Supports the Libations for a Cure Event  

For the last several years, Perficient has supported the CFF as a premier sponsor for Libations for a Cure, an event benefiting the Foundation’s Gateway Chapter. During the event, guests enjoy local cuisine and beverages while fundraising to support research for a cure for cystic fibrosis.  

The event brings individuals, families, and businesses together to make a difference. Our colleagues understand the importance and profound impact that supporting local initiatives can have, and they have enjoyed attending the annual event. This year’s Libations for a Cure event will take place on Saturday, March 29, and we look forward to returning as the premier sponsor for another fun evening of laughter, entertainment, and fundraising.  

Cultivating a Culture of Giving: Our Colleagues Are Making a Difference  

Perficient’s support and dedication to giving back extends far beyond monetary donations. Our commitment to philanthropy is deeply ingrained in our company culture and Perficient’s two key philanthropic pillars: advancing STEM education and improving health and well-being. From volunteering in-person to participating in fundraising initiatives, our people are actively engaged in supporting the CFF’s mission and making the world a better place.  

We understand that even small acts of kindness can make a significant difference in the lives of those affected by cystic fibrosis. By providing opportunities to give back, we’re helping build strong communities around the world while inspiring others to pay it forward.  

Read More: Perficient’s Commitment to Making a Difference in Our Communities 

There are several ways to support and connect with those who have cystic fibrosis including attending events and conferences, joining an online community, starting or attending a fundraising event, and volunteering in local community events. To learn more about the Cystic Fibrosis Foundation and how to get involved, visit the organization’s website 

]]>
https://blogs.perficient.com/2025/02/27/perficient-receives-corporate-champion-award-from-cystic-fibrosis-foundations-gateway-chapter/feed/ 0 377901
Digi-Bridge and ABACO Receive $5,000 Through Perficient’s Global Grants Program https://blogs.perficient.com/2025/02/27/digi-bridge-and-abaco-receive-5000-through-perficients-global-grants-program/ https://blogs.perficient.com/2025/02/27/digi-bridge-and-abaco-receive-5000-through-perficients-global-grants-program/#respond Thu, 27 Feb 2025 20:06:54 +0000 https://blogs.perficient.com/?p=377599

Today, we are thrilled to announce  Digi-Bridge  and Asociación de Bancos de Alimentos de Colombia (ABACO) as the next two global organizations selected to receive a $5,000 donation from Perficient in the first half of 2025. Digi-Bridge was nominated by Raj Merchant, Director, Data Solutions, who is based out of our Charlottle office  and committed to making a difference in his local community ABACO was nominated by Catalina Ullia Abella, Senior Technical Consultant, Colombia, who is improving health and well-being in our communities by helping ABACO distribute surplus food to vulnerable populations across Colombia.  Raj Merchant Hi Res Headshot

I encourage others to get involved in the community. There are so many organizations that need support. The phrase I always hear and recommend to others: bless others with your time, talents, and treasure.” – Raj Merchant

Sparking Interest and Passion for STEAM Education with Digi-Bridge  Oip

Digi-Bridge sparks interest and passion in science, technology, engineering, arts, and math (STEAM) learning, ensuring that students have the opportunities and skills to succeed in a rapidly changing world by fostering curiosity, creativity, exploration, persistence, and resilience. 

Raj nominated Digi-Bridge because of the organization’s commitment to addressing the systemic lack of access to STEAM education in underserved communities. Perficient’s Global Grant will support Digi-Bridge’s mission to expand its programs, reach more students, and provide them with the tools, technology and resources that they need to thrive. Digi-Bridge has worked with more than 20,000 students through their school-based out-ofschooltime programs. These hands-on programs teach coding, robotics, and other STEAM skills, empowering students with the skills needed for future careers in tech fields. The organization works directly with local communities, schools, and families to understand their needs and provide tailored support, whether it’s through after-school programs or weekend workshops. 

Students who have participated in Digi-Bridge’s programming report higher interest, confidence and competence in STEAM disciplines.

Read More: Learn About Digi-Bridge’s School Programs and STEAMLab  

Let’s Imagine More with Digi-Bridge 

Picture1The “Let’s Imagine More Breakfast” is a special event hosted by Digi-Bridge to bring together community members, educators, supporters, and partners to celebrate and discuss the importance of equitable access to technology and education for underserved youth. In addition to raising awareness about Digi-Bridge’s mission, the breakfast also gives attendees the opportunity to get involved with the organization’s programming.  Raj has attended these events and even helped assemble STEAM Kits.

Investing in Digi-Bridge exemplifies Perficient’s commitment to STEM education by helping close the education, opportunity, and knowledge gaps that limit the potential of students around the world. Thanks to Raj’s nomination, Perficient’s donation will empower more young people to engage in STEAM subjects, fostering a generation of thinkers, innovators, and leaders from diverse backgrounds.

Digi-Bridge’s work has a broad, lasting effect, as it not only supports students but also strengthens the Charlotte community by ensuring future generations are digitally literate and ready for the challenges of tomorrow’s economy. 

“STEM education is so important, and it aligns with Perficient. This is such a great opportunity for us to identify the next generation of leaders.” – Raj Merchant

 

Alleviating Hunger and Reducing Food Waste in Colombia Logo Abaco Bancos Color 2048x1393

ABACO is a non-profit organization that focuses on the fight against hunger and food insecurity in Colombia. ABACO achieves this by locating surplus food from the agricultural, industrial, commercial, hotel, and restaurant sectors and redistributing it to a network of 25 food banks serving vulnerable populations across Colombia. Each year, ABACO prevents 25,000 tons of food from going to waste.   

Catalina nominated ABACO for a Perficient Gives Global Grant after feeling inspired by the organization’s mission. She first heard of ABACO three years ago while watching the news, which drove her to get involved and regularly donate to the organization. Headshot Carolina

Despite its rich agricultural resources, food insecurity remains a challenge for some regions, especially in rural or conflict-affected areas. Issues such as poverty, unequal distribution of resources, and infrastructure challenges can hinder access to food.

“Colombia is rich in food. We cultivate a lot of produce, and it is unfair that people are hungry here.” – Catalina Ullia Abella

Food Recovery, Redistribution, and Support in Colombia 

ABACO works with food producers, distributors, and retailers to recover surplus food that would otherwise go to waste. This food is then redistributed to those in need, including low-income families, children, and elderly people. ABACO has several programs designed to bring food to those who need it most, including the following projects:  

  1. Reagro: partnering with farmers to recover fruit and vegetable surpluses and redistributing them to more than 3.1 million people.
  2. Healthy Breakfasts: supplying healthy breakfasts to 3,400 children every day for a year.
  3. EatCloud: an AI-based platform connecting food donors with the community-based institutions in need. 
  4. Alliance on Child Nutrition: a collaboration with other organizations to research and identify evidence-based solutions to prevent childhood hunger. 

ABACO relies on volunteers to help with food collection, sorting, and distribution activities. There are opportunities to volunteer with food banks, assist with organizing events and campaigns, and raise awareness about food insecurity and waste. Volunteers often help pack and distribute food to vulnerable communities. ABACO operates with the help of food donations from individuals and businesses, as well as financial contributions to fund their operations.  

Perficient’s support is important to Catalina, who has a personal passion for giving back and making the world just a little brighter for others.

I nominated ABACO for a Perficient Gives Global Grant because I know that children will smile, and that they would have faith despite harsh things that might be passing through.” – Catalina Ullia Abella

Read More: Discover Ways to Give Back and Support ABACO’s Mission  

Closing the Opportunity Gap for Future Technology Leaders 

Connect Thumbnail Image Global Grants Program 3 1Perficient’s $5,000 donations to both Digi-Bridge and ABACO highlight their commitment to supporting impactful organizations that address critical issues in their communities. Digi-Bridge is empowering underserved students by providing access to STEAM education and fostering meaningful connection for future leaders in tech.

ABACO is alleviating hunger in Colombia by redistributing surplus food to those in need, reducing food waste, and ensuring vulnerable populations have access to nutritious meals. Both initiatives reflect Perficient’s dedication to creating positive change and investing in sustainable solutions for the future.

 

“Get involved in your local community, whether virtually or in-person. It’s so important to be able to give back. Many of us are fortunate and have access to other things. I would love for us to give back and share our talents. For me, it’s supporting non-profits like Digi-Bridge that make a difference.”- Raj Merchant

“I was amazed, grateful, and happy when I learned that ABACO would be receiving a Perficient Gives Global Grant. It comes at a great moment because many families are currently displaced in Colombia.”- Catalina Ullia Abella

 

Read more about th first recipient  in 2025 and stay tuned for an announcement awarding two additional Perficient Gives Global Grants!

]]>
https://blogs.perficient.com/2025/02/27/digi-bridge-and-abaco-receive-5000-through-perficients-global-grants-program/feed/ 0 377599
Your Digital Accessibility Game Plan for eCommerce https://blogs.perficient.com/2025/02/27/your-digital-accessibility-game-plan-for-ecommerce/ https://blogs.perficient.com/2025/02/27/your-digital-accessibility-game-plan-for-ecommerce/#respond Thu, 27 Feb 2025 19:37:55 +0000 https://blogs.perficient.com/?p=377931

Global ecommerce brands delivering accessible user experiences to web and mobile users have an advantage over non-competitive brands. For starters, savvy brands recognize a largely untapped market segment – consumers with disabilities and consumers over the age of 65. However, there’s a misconception about these two consumer segments: they have limited spending power. Quite the contrary. 

Who are these consumers? 

People with disabilities shop online twice as often as the general population according to Fable. In the U.S. alone people with disabilities have 1.3 trillion in disposable income according to research by the Return on Disability Group. By adding the spending power of their friends and family it’s a hefty $13 trillion.   

And let’s not overlook the wealthiest cohort in recorded human history, consumers 65 and older (Boomers) aging into disability. According to the U.S. Census Bureau, 17.7% of this consumer population is a “spending force to be reckoned with.” Also noted in the Wall Street Journal 

And these well-heeled consumers with outsized spending power are expected to live to age 79 and willing to spend on discretionary items. Understanding and appealing to older online consumers gives accessible brands opportunity to cement a long-term relationship with them. This also is true of consumers with disabilities who tend to be loyal to accessible brands. As a result, online services are essential and need to be accessible to realize the benefits of spending power. 

Actions to start in 2025 

  1. It’s never too late to gain ground on competitive brands, and particularly brands with no foothold with these two consumer groups. Offering accessible user experiences and services to delight them is still a greenfield, and it will be for some time.  And there is another benefit to brands designing and delivering accessible digital experiences known as the curb cut effect. As brands look for ways to deliver accessible mobile and web experiences to a general population of consumers, the net effect is better user experiences for everyone (e.g., easy to use, easy to find and understand information). 
  2. Embed inclusive design in your core product at the start of new designs to create accessible user experiences. It’s easier for design and development teams to implement, and it reduces refactoring time to fix issues found downstream in the quality assurance (QA) stage. Also, it minimizes barriers to entry for people using assistive tech such as a specialized keyboard, screen magnifier or a screen reader.  

As your team designs for an accessible user experience be mindful that your go-to resource should be the Web Content Accessibility Guidelines (WCAG) of the W3C, the global organization defining and overseeing web standards. Those Guidelines will be technically sound and used by practitioners across the globe, minimizing risk of non-compliance. However, these standards may not ensure compliance if an organization is not including the ‘right’ consumers in user research – particularly those over the age of 65 and those with disabilities.  

  1. To satisfy and delight both groups, engage them in usability studies. This is a pragmatic and low-cost way to obtain insight about the user experience of your application, UI components within an application and so on. And this form of research can be quite affordable and effective. My colleague Samdisha Singh and I shared insights with Nate Brown from Userlytics on the benefits of including consumers with disabilities in usability studies. By partnering with the Userlytics testing platform, insights about a new design or redesign can be obtained on the spot. Design teams start implementing changes into user flows and user experiences literally the same day.  
  2. With research findings at hand, it’s time to brainstorm with your design team. Consider which inclusive design choices benefit consumers with disabilities and will also attract consumers without disabilities. For example, when a design meets WCAG color contrast requirements, it satisfies a broad range of consumers (as mentioned the “curb cut effect”). Not only does it make viewing a web page or mobile apps easier for people with color blindness, but keyboard users also benefit. These users rely on “focus appearance” to identify where they are as they tab through a screen. 
  3. Invest in upskilling your design teams. They are at the ‘top of the funnel’ when it comes to making accessible design decisions. And ensure they use their expertise and work closely with the user research team. Interpreting user feedback and making design decisions should be collaborative. 

Still unconvinced? 

Many sources cite roughly 1 billion people globally have unreported and invisible disabilities. Take for example CEOs, they are behind some of the most successful global mega brands and approximately 30% are dyslexic. The bottom line, with a clear understanding of the needs and aspirations of online consumers over the age of 65 and consumers with disabilities, your brand is at an advantage over brands uncommitted to accessible user experiences.   

 

Additional Resources

Perficient Experts Interviewed for Forrester Report on Accessibility for Better CX and EX 

Guide: Digitally Accessible Experiences: Why it matters and how to create them 

Guide: Driving Inclusion in Financial Services with Digital Accessibility 

Guide: Enhance Digital Health Experience with Digital Accessibility 

Perficient Insights: The future of UX is Digital Accessibility 

From Accessibility to Profitability: Maximizing ROI with Inclusive Design Practices 

]]>
https://blogs.perficient.com/2025/02/27/your-digital-accessibility-game-plan-for-ecommerce/feed/ 0 377931
6 Digital Banking Trends for 2025 https://blogs.perficient.com/2025/02/27/digital-trends-in-banking/ https://blogs.perficient.com/2025/02/27/digital-trends-in-banking/#respond Thu, 27 Feb 2025 17:22:41 +0000 https://blogs.perficient.com/?p=357527

As we progress through 2025, the banking industry is set for substantial transformation driven by several key trends. Digital transformation will remain a powerful force, with advancements in AI and machine learning enabling unparalleled operational efficiencies and hyper-personalized customer experiences. Banks will look to transform the way they do business by moving beyond their walls with the maturing of open banking and embedded finance.

To stay competitive, banks must adapt and embrace emerging industry trends. This will require being more inquisitive and innovative compared to previous years, as the adoption of AI and cloud technologies continues to expand.

Banking Trend #1: Hyper-Personalization for Customer Satisfaction

Customers increasingly demand personalized banking experiences tailored to their unique needs and preferences. Hyper-personalization transforms the traditional banking model into a customer-centric approach, significantly boosting satisfaction and retention rates. Banks can use advanced data analytics and AI to deliver highly personalized financial services, such as customized savings plans and tailored investment advice. By leveraging data, banks can anticipate customer needs and proactively offer solutions, like recommending mortgage products or providing financial wellness tools based on individual spending patterns. Delivering these tailored experiences will be a crucial differentiator for banks aiming to attract and retain customers.

Recommended Approach: Banks should leverage advanced data analytics, artificial intelligence (AI), and machine learning (ML) to create highly individualized experiences. By understanding customer preferences, behaviors, and financial needs in real-time, banks can offer tailored products, services, and communication, leading to a more seamless and intuitive customer experience. This approach improves engagement and loyalty, increases revenue opportunities, and provides competitive differentiation.

See Also: Transforming Industries, Powering Innovation

Banking Trend #2: Adapting to Regulatory Shifts

As the banking landscape evolves, staying compliant with regulatory requirements becomes increasingly challenging, especially with the rise of open banking, AI, and data privacy concerns. In 2025, banks will face a more complex regulatory environment, with new rules focused on data privacy, cybersecurity, and sustainability. The rise of digital banking, cryptocurrency, blockchain, and AI adoption across banking operations will prompt regulatory bodies to implement clearer frameworks and guidelines to ensure stability and consumer protection.

Recommended Approach: Navigating constant changes in risk and regulatory environments is crucial for banks in 2025. By ensuring compliance with regulations, banks mitigate risks and maintain trust with customers and regulatory authorities. To stay ahead, banks should adopt compliance technologies that automate regulatory reporting and help them stay agile in a rapidly changing landscape. Investing in advanced technologies like AI and machine learning can help identify potential risks and streamline compliance efforts. By adopting these strategies, banks can better manage the dynamic risk and regulatory environment, ensuring compliance while maintaining competitiveness and customer trust.

Related: Strategies + Solutions to Ensure Regulatory and Compliance Excellence

Banking Trend #3: Embedded Finance Enables Industry Crossover

Embedded finance integrates financial services into non-financial platforms, allowing users to access banking services within applications they already use. By embedding payment, lending, and insurance services into apps and websites, non-financial companies are able to offer financial products directly to their customers. For example, ride-sharing apps like Uber and Lyft offer in-app payment options, and e-commerce platforms provide financing options at checkout. By integrating financial services into non-financial platforms, banks can tap into new markets and customer bases, generating additional revenue.

Recommended Approach: Banks looking to start or deepen their embedded finance solutions should take several key steps. These steps include identifying strategic partnerships and collaborating with fintech companies and non-financial platforms that align with their goals. These partnerships provide the necessary technology and customer reach to implement embedded finance solutions effectively. Next, invest in technology by upgrading IT infrastructure to support embedded finance, including adopting cloud-based solutions and modern technologies that offer the agility and scalability needed for seamless integration. Create robust APIs that allow third-party platforms to integrate your financial services. Ensure these APIs are secure, reliable, and easy to use. Leverage advanced data analytics to understand customer behavior and preferences, helping you offer personalized financial services that meet the specific needs of your customers.

You May Enjoy: 6 Digital Payment Trends Set to Transform 2025

Banking Trend #4: Leveraging AI for Insights and Automation

AI and automation have evolved from buzzwords to essential components of banking operations. In 2025, AI will play a pivotal role in customer service, fraud detection, risk management, and personalized financial advice. AI-powered chatbots will handle routine customer inquiries, freeing human agents to tackle more complex issues. Additionally, AI-driven algorithms will enhance banks’ ability to detect emerging fraud patterns and mitigate risks more effectively. Automation will streamline internal processes, leading to cost reductions and improved operational efficiency.

Recommended Approach: To fully utilize AI, banks need to prioritize improving their data strategy, recognizing that high-quality, reliable, and trustworthy data is essential for AI to deliver significant outcomes. They need to align AI initiatives with the bank’s overall business goals. Then identify areas where AI can add the most value, such as customer service, fraud detection, and risk management and focus on value-driven AI use cases. They also need to invest in modern technology and infrastructure for agility and scalability.

Read More: Transform Your Business With Cutting-Edge AI and Automation Solutions

Banking Trend #5: Responsive Resilience

Responsive Resilience continues to be a key banking trend in 2025, emphasizing the ability of financial institutions to adapt swiftly and effectively to changing conditions. Banks must be prepared to respond to economic fluctuations, market changes, and unexpected events. This requires robust risk management frameworks and the ability to pivot strategies quickly. A compounding factor, the shift to digital has caused increased exposure to financial fraud and cyber threats.

Recommended Approach: Invest in advanced technologies such as AI, machine learning, and cloud computing to enhance operational efficiency and adaptability. These technologies can automate processes, improve decision-making, and provide real-time insights. Utilize data analytics to gain deeper insights into customer behavior, market trends, and potential risks. This data-driven approach allows banks to make informed decisions and respond swiftly to changes in the banking landscape.

Explore More: Reimagine Business for the Digital Age

Banking Trend #6: Embracing Open Banking and Connected Ecosystems

Although many institutions have deprioritized open banking in recent years, establishing an open banking strategy now offers significant benefits. Open banking continues to revolutionize the financial industry by enabling secure data sharing between banks and third-party providers through APIs. It unlocks a wealth of third-party financial data, enabling banks to better-tailor products and services, enhance customer loyalty, improve operational efficiencies, and open new revenue streams. This trend will change how banks engage with third-party financial service providers, fostering the development of innovative financial products and services. Open banking will drive greater competition, promote collaboration, and empower consumers with more choices and personalized banking experiences. Examples include budgeting apps that aggregate data from multiple bank accounts, personalized financial advice based on spending patterns and streamlined loan application processes by accessing a customer’s financial data to provide a more accurate and personalized credit score.

Recommended Approach: Banks must establish a clear vision for open banking that aligns with their overall business goals. They should determine specific objectives, such as driving innovation, improving customer experience, or expanding market reach. Additionally, banks need to update their IT infrastructure to support open banking. This includes developing secure and reliable APIs for data sharing and ensuring systems are resilient and scalable.

See Also: 1033 Open Banking Mandate Blueprint for Success

Unlocking New Opportunities in 2025

Our end-to-end digital solutions drive business outcomes, enhance experiences, and ensure robust risk and compliance management to improve operational efficiency and business resilience.

  • Business Transformation: Align the business with an actionable roadmap to optimize operations, improve service, and enhance profitability.
  • Modernization: Advance technologies to enhance digital capabilities and customer engagement.
  • Data + Analytics: Proactively leverage integrated data and AI to refine banking product portfolios and mitigate risks.
  • Risk + Compliance: Strengthen risk management frameworks, ensure adherence to banking regulations, and enhance operational stability.
  • Consumer Experience: Improve customer satisfaction with hyper-personalized banking services and intuitive digital experiences.

Discover why we have been trusted by 18 of the 20 largest commercial banks. Explore our financial services expertise and contact us to learn more.

]]>
https://blogs.perficient.com/2025/02/27/digital-trends-in-banking/feed/ 0 357527
How to Automate Content Updates Using AEM Groovy Scripts https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/ https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/#respond Thu, 27 Feb 2025 14:34:32 +0000 https://blogs.perficient.com/?p=377880

As an AEM author, updating existing page content is a routine task. However, manual updates, like rolling out a new template, can become tedious and costly when dealing with thousands of pages.

Fortunately, automation scripts can save the day. Using Groovy scripts within AEM can streamline the content update process, reducing time and costs. In this blog, we’ll outline the key steps and best practices for using Groovy scripts to automate content updates.

The Benefits of Utilizing Groovy Scripts

Groovy is a powerful scripting language that integrates seamlessly with AEM. It allows developers to perform complex operations with minimal code, making it an excellent tool for tasks such as: 

  • Automating repetitive tasks
  • Accessing and modifying repository content 
  • Bulk updating properties across multiple nodes
  • Managing template and component mappings efficiently

The Groovy Console for AEM provides an intuitive interface for running scripts, enabling rapid development and testing without redeploying code.   

Important things to know about Groovy Console 

  • Security – Due to security concerns, Groovy Console should not be installed in any production environment.  
  • Any content that needs to be updated in production environments should be packaged to a lower environment, using Groovy Console to update and validate content. Then you can repackage and deploy to production environments.  

How to Update Templates for Existing Web Pages

To illustrate how to use Groovy, let’s learn how to update templates for existing web pages authored inside AEM

Our first step is to identify the following:

  • Templates that need to be migrated
  • Associated components and their dependencies
  • Potential conflicts or deprecated functionalities

You should have source and destination template component mappings and page paths.  

As a pre-requisite for this solution, you will need to have JDK 11, Groovy 3.0.9, and Maven 3.6.3.   

Steps to Create a Template Mapping Script 

1. Create a CSV File 

The CSV file should contain two columns: 

  • Source → The legacy template path. 
  • Target → The new template path. 

Save this file as template-map.csv.

Source,Target 

"/apps/legacy/templates/page-old","/apps/new/templates/page-new" 

"/apps/legacy/templates/article-old","/apps/new/templates/article-new"v

2. Load the Mapping File in migrate.groovy 

In your migrate.groovy script, insert the following code to load the mapping file: 

def templateMapFile = new File("work${File.separator}config${File.separator}template-map.csv") 

assert templateMapFile.exists() : "Template Mapping File not found!"

3. Implement the Template Mapping Logic 

Next, we create a function to map source templates to target templates by utilizing the CSV file. 

String mapTemplate(sourceTemplateName, templateMapFile) { 

    /*this function uses the sourceTemplateName to look up the template 

    we will use to create new XML*/ 

    def template = '' 

    assert templateMapFile : "Template Mapping File not found!" 

 

    for (templateMap in parseCsv(templateMapFile.getText(ENCODING), separator: SEPARATOR)) { 

        def sourceTemplate = templateMap['Source'] 

        def targetTemplate = templateMap['Target'] 

        if (sourceTemplateName.equals(sourceTemplate)) { 

            template = targetTemplate 

        } 

    }   

        assert template : "Template ${sourceTemplateName} not found!" 

         

    return template 

}

After creating a package using Groovy script on your local machine, you can directly install it through the Package Manager. This package can be installed on both AEM as a Cloud Service (AEMaaCS) and on-premises AEM.

Execute the script in a non-production environment, verify that templates are correctly updated, and review logs for errors or skipped nodes. After running the script, check content pages to ensure they render as expected, validate that new templates are functioning correctly, and test associated components for compatibility. 

Groovy Scripts Minimize Manual Effort and Reduce Errors

Leveraging automation through scripting languages like Groovy can significantly simplify and accelerate AEM migrations. By following a structured approach, you can minimize manual effort, reduce errors, and ensure a smooth transition to the new platform, ultimately improving overall maintainability. 

More AEM Insights

Don’t miss out on more AEM insights and follow our Adobe blog! 

]]>
https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/feed/ 0 377880
Kotlin Multiplatform vs. React Native vs. Flutter: Building Your First App https://blogs.perficient.com/2025/02/26/kotlin-multiplatform-vs-react-native-vs-flutter-building-your-first-app/ https://blogs.perficient.com/2025/02/26/kotlin-multiplatform-vs-react-native-vs-flutter-building-your-first-app/#respond Wed, 26 Feb 2025 21:50:16 +0000 https://blogs.perficient.com/?p=377508

Choosing the right framework for your first cross-platform app can be challenging, especially with so many great options available. To help you decide, let’s compare Kotlin Multiplatform (KMP), React Native, and Flutter by building a simple “Hello World” app with each framework. We’ll also evaluate them across key aspects like setup, UI development, code sharing, performance, community, and developer experience. By the end, you’ll have a clear understanding of which framework is best suited for your first app.

Building a “Hello World” App

1. Kotlin Multiplatform (KMP)

Kotlin Multiplatform allows you to share business logic across platforms while using native UI components. Here’s how to build a “Hello World” app:

Steps:

  1. Set Up the Project:
    • Install Android Studio and the Kotlin Multiplatform Mobile plugin.
    • Create a new KMP project using the “Mobile Library” template.
  2. Shared Code:In the shared module, create a Greeting class with a function to return “Hello World”.
    // shared/src/commonMain/kotlin/Greeting.kt
    class Greeting {
        fun greet(): String {
            return "Hello, World!"
        }
    }
  3. Platform-Specific UIs:For Android, use Jetpack Compose or XML layouts in the androidApp module. For iOS, use SwiftUI or UIKit in the iosApp module.Android (Jetpack Compose):
    // androidApp/src/main/java/com/example/androidApp/MainActivity.kt
    class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContent {
                Text(text = Greeting().greet())
            }
        }
    }

    iOS (SwiftUI):

    // iosApp/iosApp/ContentView.swift
    struct ContentView: View {
        var body: some View {
            Text(Greeting().greet())
        }
    }
  4. Run the App:Build and run the app on Android and iOS simulators/emulators.

Pros and Cons:

Pros:

  • Native performance and look.
  • Shared business logic reduces code duplication.

Cons:

  • Requires knowledge of platform-specific UIs (Jetpack Compose for Android, SwiftUI/UIKit for iOS).
  • Initial setup can be complex.

2. React Native

React Native allows you to build cross-platform apps using JavaScript and React. Here’s how to build a “Hello World” app:

Steps:

  1. Set Up the Project:
    • Install Node.js and the React Native CLI.
    • Create a new project:
      npx react-native init HelloWorldApp
  2. Write the Code:Open App.js and replace the content with the following:
    import React from 'react';
    import { Text, View } from 'react-native';
    
    const App = () => {
        return (
            <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
                <Text>Hello, World!</Text>
            </View>
        );
    };
    
    export default App;
  3. Run the App:Start the Metro bundler:
    npx react-native start

    Run the app on Android or iOS:

    npx react-native run-android
    npx react-native run-ios

Pros and Cons:

Pros:

  • Easy setup and quick development.
  • Hot reload for instant updates.

Cons:

  • Performance may suffer for complex apps due to the JavaScript bridge.
  • Limited native look and feel.

3. Flutter

Flutter is a UI toolkit for building natively compiled apps for mobile, web, and desktop using Dart. Here’s how to build a “Hello World” app:

Steps:

  1. Set Up the Project:
    • Install Flutter SDK and Android Studio/VS Code.
    • Create a new project:
      flutter create hello_world_app
  2. Write the Code:Open lib/main.dart and replace the content with the following:
    import 'package:flutter/material.dart';
    
    void main() {
        runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
            return MaterialApp(
                home: Scaffold(
                    appBar: AppBar(title: Text('Hello World App')),
                    body: Center(child: Text('Hello, World!')),
                ),
            );
        }
    }
  3. Run the App:Run the app on Android or iOS:
    flutter run

Pros and Cons:

Pros:

  • Single codebase for UI and business logic.
  • Excellent performance and rich UI components.

Cons:

  • Larger app size compared to native apps.
  • Requires learning Dart.

Comparing the Frameworks

1. Initial Setup

  • KMP: Moderate setup complexity, especially for iOS. Requires configuring Gradle files and platform-specific dependencies.
  • React Native: Easy setup with tools like Expo and React Native CLI.
  • Flutter: Smoothest setup with the Flutter CLI and flutter doctor command.

Best option: Flutter (for ease of initial setup).

2. UI Development

  • KMP: Platform-specific UIs (Jetpack Compose for Android, SwiftUI/UIKit for iOS). Offers native flexibility but requires separate UI code.
  • React Native: Declarative UI with JSX. Powerful but can feel like a middle ground between native and custom rendering.
  • Flutter: Widget-based system for consistent cross-platform UIs. Highly customizable but requires learning Dart.

Best option: A tie between KMP (for native UI flexibility) and Flutter (for cross-platform consistency).

3. Code Sharing

  • KMP: Excels at sharing business logic while allowing native UIs.
  • React Native: High code sharing but may require platform-specific code for advanced features.
  • Flutter: High code sharing for both UI and business logic but requires Dart.

Best option: Kotlin Multiplatform (for its focus on sharing business logic).

4. Performance

  • KMP: Native performance due to native UIs and compiled shared code.
  • React Native: Good performance but can struggle with complex UIs due to the JavaScript bridge.
  • Flutter: Excellent performance, often close to native, but may not match native performance in all scenarios.

Winner: Kotlin Multiplatform (for native performance).

5. Community and Ecosystem

  • KMP: Growing community backed by JetBrains. Kotlin ecosystem is mature.
  • React Native: Large and active community with a rich ecosystem.
  • Flutter: Thriving community with strong Google support.

Best option: React Native (for its large and mature community), but Flutter is a close contender.

6. Developer Experience

  • KMP: Gentle learning curve for Kotlin developers but requires platform-specific UI knowledge.
  • React Native: Familiar for JavaScript/React developers but may require native mobile knowledge.
  • Flutter: Excellent developer experience with hot reload and comprehensive documentation.

Best option: Flutter (for its excellent developer experience and tooling).

7. AI-Assisted Development Speed

With the rise of AI tools like GitHub Copilot, ChatGPT, Gemini, Claude, etc.. Developers can significantly speed up app development. Let’s evaluate how each framework benefits from AI assistance:

  • KMP: AI tools can help generate Kotlin code for shared logic and even platform-specific UIs. However, the need for platform-specific knowledge may limit the speed gains.
  • React Native: JavaScript is widely supported by AI tools, making it easy to generate boilerplate code, components, and even entire screens. The large ecosystem also means AI can suggest relevant libraries and solutions.
  • Flutter: Dart is less commonly supported by AI tools compared to JavaScript, but Flutter’s widget-based system is highly structured, making it easier for AI to generate consistent and functional code.

Best option: React Native (due to JavaScript’s widespread support in AI tools).

The resolution:

There’s no one-size-fits-all answer. The best choice depends on your priorities:

    • Prioritize Performance and Native UI: Choose Kotlin Multiplatform.
    • Prioritize Speed of Development and a Large Community: Choose React Native.
    • Prioritize Ease of Use, Cross-Platform Consistency, and Fast Development: Choose Flutter.

For Your First App:

  • Simple App, Fast Development: Flutter is an excellent choice. Its ease of setup, hot reload, and comprehensive widget system will get you up and running quickly.
  • Existing Kotlin/Android Skills, Focus on Shared Logic: Kotlin Multiplatform allows you to leverage your existing knowledge while sharing a significant portion of your codebase.
  • Web Developer, Familiar with React: React Native is a natural fit, allowing you to utilize your web development skills for mobile development.

Conclusion

Each framework has its strengths and weaknesses, and the best choice depends on your team’s expertise, project requirements, and long-term goals. For your first app, consider starting with Flutter for its ease of use and fast development, React Native if you’re a web developer, or Kotlin Multiplatform if you’re focused on performance and native UIs.

Try building a simple app with each framework to see which one aligns best with your preferences and project requirements.

References

  1. Kotlin Multiplatform Documentation: https://kotlinlang.org/docs/multiplatform.html
  2. React Native Documentation: https://reactnative.dev/docs/getting-started
  3. Flutter Documentation: https://flutter.dev/docs
  4. JetBrains Blog on KMP: https://blog.jetbrains.com/kotlin/
  5. React Native Community: https://github.com/react-native-community
  6. Flutter Community: https://flutter.dev/community

 

]]>
https://blogs.perficient.com/2025/02/26/kotlin-multiplatform-vs-react-native-vs-flutter-building-your-first-app/feed/ 0 377508
What To Expect When Migrating Your Site To A New Platform https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/ https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/#respond Wed, 26 Feb 2025 15:59:30 +0000 https://blogs.perficient.com/?p=377633

This series of blog posts will cover the main areas of activity for your marketing, product, and UX teams before, during, and after site migration to a new digital experience platform.

Migrating your site to a different platform can be a daunting prospect, especially if the site is sizable in both page count and number of assets, such as documents and images. However, this can also be a perfect opportunity to freshen up your content, perform an asset library audit, and reorganize the site overall.

Once you’ve hired a consultant, like Perficient, to help you implement your new CMS and migrate your content over, you will work with them to identify several action items your team will need to tackle to ensure successful site migration.

Whether you are migrating from/to some of the major enterprise digital experiences platforms like Sitecore, Optimizely, Adobe, or from the likes of Sharepoint or WordPress, there are some common steps to take to make sure content migration runs smoothly and is executed in a manner that adds value to your overall web experience.

Part I – “Keep, Kill, Merge”

One of the first questions you will need to answer is“What do we need to carry over?” The instinctive answer would be everything. The rational answer is that we will migrate the site over as is and then worry about optimization later. There are multiple reasons why this is usually not the best option.

  • This is a perfect opportunity to do a high-level overview of the entire sitemap and dive a bit deeper into the content. It will help determine if you still need a long-forgotten page about an event that ended years ago or a product that is no longer being offered in a certain market. Perhaps it hasn’t been purged simply because there is always higher-priority work to be done.
  • It is far more rational to do this type of analysis ahead of the migration rather than after. If nothing else, it is simply for efficiency purposes. By trimming down the number of pages, you ensure that the migration process is shorter and more purposeful. You also save time and resources.

Even though this activity might take time, it is essential to use this opportunity in the best possible manner. A consultant like Perficient can help drive the process. They will pull up an initial list of active pages, set up simple audit steps, and ensure that decisions are recorded clearly and organized.

Step I – Site Scan

The first step is to ensure all current site pages are accounted for. As simple as this may seem, it doesn’t always end up being so, especially on large multi-language sites. You might have pages that are not crawlable, are temporarily unpublished, are still in progress, etc.

Depending on your current system capabilities, putting together a comprehensive list can be relatively easy. Getting a CMS export is the safest way to confirm that you have accounted for everything in the system.

Crawling tools, such as Screaming Frog, are frequently used to generate reports that can be exported for further refinement. Cross-referencing these sources will ensure you get the full picture, including anything that might be housed externally.

An Analyst Uses A Computer And Dashboard For Data Business Analysis And Data Management System With Kpi And Metrics Connected To The Database For Technology Finance, Operations, Sales, Marketing

Step II – Deep Dive

Once you’ve ensured that all pages made it to a comprehensive list you can easily filter, edit, and share, the fun part begins.

The next step involves reviewing and analyzing the sitemap and each page. The goal is to determine those that will stay vs candidates for removal. Various different factors can impact this decision from business goals, priorities, page views, conversion rate, SEO considerations, and marketing campaigns to compliance and regulations. Ultimately, it is important to assess each page’s value to the business and make decisions accordingly.

This audit will likely require input from multiple stakeholders, including subject matter experts, product owners, UX specialists, and others. It is essential to involve all interested parties at an early stage. Securing buy-in from key stakeholders at this point is critical for the following phases of the process. This especially applies to review and sign-off prior to going live.

Depending on your time and resources, the keep-kill-merge can either be done in full or limited to keep-kill. The merge option might require additional analysis, as well as follow-up design and content work. Leaving that effort for after the site migration is completed might just be the rational choice.

Step III – Decisions and Path Forward

Once the audit process has been completed, it is important to record findings and decisions simply and easily consumable for teams that will implement those updates. Proper documentation is essential when dealing with large sets of pages and associated content. This will inform the implementation team’s roadmap and timelines.

At this point, it is crucial to establish regular communication between a contact person (such as a product owner or content lead) and the team in charge of content migration from the consultant side. This partnership will ensure that all subsequent activities are carried out respecting the vision and business needs identified at the onset.

Completing the outlined activities properly will help smooth the transition into the next process phase, thus setting your team up for a successful site migration.

]]>
https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/feed/ 0 377633
From Cloud to Local: Effortlessly Import Azure SQL Databases https://blogs.perficient.com/2025/02/26/import-azure-sql-databases/ https://blogs.perficient.com/2025/02/26/import-azure-sql-databases/#comments Wed, 26 Feb 2025 08:54:58 +0000 https://blogs.perficient.com/?p=377428

With most systems transitioning to cloud-based environments, databases are often hosted across various cloud platforms. However, during the development cycle, there are occasions when having access to a local database environment becomes crucial, particularly for analyzing and troubleshooting issues originating in the production environment.

Sometimes, it is necessary to restore the production database to a local environment to diagnose and resolve production-related issues effectively. This allows developers to replicate and investigate issues in a controlled setting, ensuring efficient debugging and resolution.

In an Azure cloud environment, database backups are often exported as .bacpac files. The file must be imported and restored locally to work with these databases in a local environment.

There are several methods to achieve this, including:

  1. Using SQL Server Management Studio (SSMS).
  2. Using the SqlPackage command-line.

This article will explore the steps to import a .bacpac file into a local environment, focusing on practical and straightforward approaches.

The first approach—using SQL Server Management Studio (SSMS)—is straightforward and user-friendly. However, challenges arise when dealing with large database sizes, as the import process may fail due to resource limitations or timeouts.

The second approach, using the SqlPackage command-line, is recommended in such cases. This method offers more control over the import process, allowing for better handling of larger .bacpac files.

Steps to Import a .bacpac File Using SqlPackage

1. Download SqlPackage

  • Navigate to the SqlPackage download page: SqlPackage Download.
  • Ensure you download the .NET 6 version of the tool, as the .NET Framework version may have issues processing databases with very large tables.

2. Install the Tool

  • Follow the instructions under the “Windows (.NET 6)” header to download and extract the tool.
  • After extracting, open a terminal in the directory where you extracted SqlPackage.

3. Run SqlPackage

  • Put .bacpac file into the package folder.(ex: C:\sqlpackage-win7-x64-en-162.1.167.1)
  • Use the following example command in the terminal to import the .bacpac file:
  • powershell
    SqlPackage /a:Import /tsn:"localhost" /tdn:"test" /tu:"sa" /tp:"Password1" /sf:"database-backup-filename.bacpac" /ttsc:True /p:DisableIndexesForDataPhase=False /p:PreserveIdentityLastValues=True

4. Adjust Parameters for Your Setup

  • /tsn: The server name (IP or hostname) of your SQL Server instance, optionally followed by a port (default: 1433).
  • /tdn: The name of the target database (must not already exist).
  • /tu: SQL Server username.
  • /tp: SQL Server password.
  • /sf: The path to your .bacpac file (use the full path or ensure the terminal is in the same directory).

5. Run and Wait

  • Let the tool process the import. The time taken will depend on the size of the database.

Important: Ensure the target database does not already exist, as .bacpac files can only be imported into a fresh database.

The options /p:DisableIndexesForDataPhase and /p:PreserveIdentityLastValues optimize the import process for large databases and preserve identity column values. SqlPackage provides more reliability and flexibility than SSMS, especially when dealing with more extensive databases.

 

Reference:

https://learn.microsoft.com/en-us/azure/azure-sql/database/database-import?view=azuresql&tabs=azure-powershell

]]>
https://blogs.perficient.com/2025/02/26/import-azure-sql-databases/feed/ 1 377428
Setting Up CloudFront Using Python https://blogs.perficient.com/2025/02/25/setting-up-cloudfront-using-python/ https://blogs.perficient.com/2025/02/25/setting-up-cloudfront-using-python/#respond Wed, 26 Feb 2025 05:40:01 +0000 https://blogs.perficient.com/?p=376999

Python is an open-source programming language. We can use Python to build/enable AWS services such as Terraform or other IAC code. In this blog, we are going to discuss setting up the CloudFront service using Python.

Why We Use Python

As we know, Python is an imperative language. This means that you can write more customized scripts that can perform advanced complex operations, handle errors, interact with APIs, etc. You also have access to AWS SDKs like Boto3 that allow you to perform any AWS operation you desire, including custom ones that might not yet be supported by Terraform.

How It Works

We have defined methods and classes in the boto3 library for AWS services that we can use to create/modify/update AWS services.

Prerequisites

We require only Python and Boto3 library.

1                                                                      Picture3

 

How to Write Code

As we know, boto3 has different functions that handle AWS services. We have lots of functions, but below are the basic functions to manage CloudFront service:

  • create_distribution is used to create CloudFront Distribution,
  • update_distribution is used to update CloudFront Distribution,
  • delete_distribution is used to delete CloudFront Distribution,
  • create_cache_policy is used to create cache policy,
  • create_invalidation is used to create invalidation requests.

create_distribution and update_distribution require the lots configuration values as well. You can use a Python dictionary variable and pass it to a function, or you can pass it as JSON, but you have to perform parsing as well for that.

Let me share with you a basic example of creating CloudFront distribution using Python & boto3:

import boto3
import os 

s3_origin_domain_name = '<s3bucketname>.s3.amazonaws.com'  
origin_id = 'origin-id'

distribution_config = {
        'CallerReference': str(hash("unique-reference")),
        'Comment': 'My CloudFront Distribution',
        'Enabled': True,
        'Origins': {
            'Items': [
                {
                    'Id': origin_id,
                    'DomainName': s3_origin_domain_name,
                    'S3OriginConfig': {
                        'OriginAccessIdentity': ''
                    },
                    'CustomHeaders': {
                        'Quantity': 0,
                        'Items': []
                    }
                }
            ],
            'Quantity': 1
        },
        'DefaultCacheBehavior': {
            'TargetOriginId': origin_id,
            'ViewerProtocolPolicy': 'redirect-to-https',
            'AllowedMethods': {
                'Quantity': 2,
                'Items': ['GET', 'HEAD'],
                'CachedMethods': {
                    'Quantity': 2,
                    'Items': ['GET', 'HEAD']
                }
            },
            'ForwardedValues': {
                'QueryString': False,
                'Cookies': {
                    'Forward': 'none'
                }
            },
            'MinTTL': 3600
        },
        'ViewerCertificate': {
            'CloudFrontDefaultCertificate': True
        },
        'PriceClass': 'PriceClass_100' 
    }
try:
        aws_access_key = os.getenv('AWS_ACCESS_KEY_ID')
  aws_secret_key = os.getenv('AWS_SECRET_ACCESS_KEY')
        session = boto3.Session(
aws_access_key_id=aws_access_key,
aws_secret_access_key=aws_secret_key,
             region_name='us-east-1'
          )
        client = session.client('cloudfront')
        response = client.create_distribution(DistributionConfig=distribution_config)
        print("CloudFront Distribution created successfully!")
        print(response)
except Exception as e:
        print(f"Error creating CloudFront distribution: {e}")

As you can see in the above sample code, after importing the boto3 module, we have the distribution_config variable where all the configs are stored. After that, we call the  create_dirtibution function to cdn distribution:

        response = client.create_distribution(DistributionConfig=distribution_config)

So, in a similar way, you can write more complex Python code to implement your complex AWS infrastructure as well and automate setting up a cache invalidation request pipeline, which will give users functionality and allow them to clear CDN cache without logging in to the AWS console.

]]>
https://blogs.perficient.com/2025/02/25/setting-up-cloudfront-using-python/feed/ 0 376999
Windows Password Recovery with AWS SSM https://blogs.perficient.com/2025/02/25/windows-password-recovery-with-aws-ssm/ https://blogs.perficient.com/2025/02/25/windows-password-recovery-with-aws-ssm/#respond Wed, 26 Feb 2025 05:27:12 +0000 https://blogs.perficient.com/?p=377706

The Systems Manager (SSM) streamlines managing Windows instances in AWS. If you’ve ever forgotten the password for your Windows EC2 instance, SSM offers a secure and efficient way to reset it without additional tools or manual intervention.

Objective & Business Requirement

In a production environment, losing access to a Windows EC2 instance due to an unknown or non-working password can cause significant downtime. Instead of taking a backup, creating a new instance, and reconfiguring the environment—which is time-consuming and impacts business operations—we leverage AWS Systems Manager (SSM) to efficiently recover access without disruption.

  • Recovery Process
  • Prerequisites
  • Configuration Overview
  • Best Practices
  • Conclusion

Prerequisites

Before you start, ensure the following prerequisites are met:

  1. SSM Agent Installed: The SSM agent must be installed and run on the Windows instance. AWS provides pre-configured AMIs with the agent installed.
  2. IAM Role Attached: Attach an IAM role to your instance with the necessary permissions. The policy should include:
    • AmazonSSMManagedInstanceCore
    • AmazonSSMFullAccess (or custom permissions to allow session management and run commands).
  3. Instance Managed by SSM: The instance must be registered as a managed instance in Systems Manager.

Configuration Overview

Follow this procedure if all you need is a PowerShell prompt on the target instance.

1. Log in to the AWS Management Console

  • Navigate to the EC2 service in the AWS Management Console.
  • Open the instance in the AWS console & click Connect.

S1

  • This opens a PowerShell session with “ssm-user”.

Picture2

2. Verify the Active Users

Run Commands to Reset the Password

With the session active, follow these steps to reset the password:

  • Run the following PowerShell command to list the local users: get-localuser

Picture3

  • Identify the username for which you need to reset the password.
  • Reset the password using the following command:

Replace <username> with the actual username and <password> with your new password.

net user Username password

3. Validate the New Password

  • Use Remote Desktop Protocol (RDP) to log into the Windows instance using the updated credentials.
  • To open an RDP connection to the instance in your browser, follow this procedure.
  • Open the instance in the AWS console & click Connect:
  • Switch to the “RDP client” tab & use Fleet Manager:

Picture4

  • Able to access the server using “RDP client,” Please refer to the below screenshot.

Picture5

 

Best Practices

  1. Strong Password Policy: Ensure the new password adheres to your organization’s password policy for security.
  2. Audit Logs: Use AWS CloudTrail to monitor who initiated the SSM session and track changes made.
  3. Restrict Access: Limit who can access SSM and manage your instances by defining strict IAM policies.

Troubleshooting Tips for Password Recovery

  • SSM Agent Issues: If the instance isn’t listed in SSM, verify that the SSM agent is installed and running.
  • IAM Role Misconfigurations: Ensure the IAM role attached to the instance has the correct permissions.
  • Session Manager Setup: If using the CLI, confirm that the Session Manager plugin is installed and correctly configured on your local machine.

 

Conclusion

AWS Systems Manager is a powerful tool that simplifies Windows password recovery and enhances the overall management and security of your instances. By leveraging SSM, you can avoid downtime, maintain access to critical instances, and adhere to AWS best practices for operational efficiency.

 

]]>
https://blogs.perficient.com/2025/02/25/windows-password-recovery-with-aws-ssm/feed/ 0 377706
Leveraging Power Automate to Create Interactive Emails with Embedded Images and Links https://blogs.perficient.com/2025/02/25/leveraging-power-automate-to-create-interactive-emails-with-embedded-images-and-links/ https://blogs.perficient.com/2025/02/25/leveraging-power-automate-to-create-interactive-emails-with-embedded-images-and-links/#respond Wed, 26 Feb 2025 05:15:14 +0000 https://blogs.perficient.com/?p=377588

Effective communication is key to engaging the audience in today’s fast-paced digital world. Whether sending newsletters, promotional offers, or internal updates, how we present the information can significantly impact the recipient’s engagement levels. One power tool that can help create interactive mail is Power Automate. This blog will explore how to leverage Power Automation to create emails with embedded images and links, enhancing communication strategy. I’ll walk you through two examples: one where we simply embed an image and another where we embed an image that links to a specific URL.

Why Use Interactive Emails?

Interactive emails are more engaging than traditional static emails. They include elements like embedded images and links.

  • Embedded Images: Visual content can help convey the message more effectively and make emails more appealing.
  • Links: It helps to redirect recipients to websites, social media, or specific landing pages.

Scenario Overview

Imagine yourself as the marketing manager of a company that keeps employees informed about company changes, training sessions, and new projects. By enabling employees to click on images that direct them to further resources or surveys, you may engage them in addition to providing information in your email. Here’s how to use Power Automate to accomplish this.

Step-by-Step Implementation

1. Create an Instant Flow

  • Open Power Automate, create a new instant flow and name the flow.
  • Start by adding a trigger. You can use the “Manually trigger a flow” option.

2. Get the Image File

  • Next, we need to locate the image we want to embed. To do so, use the Get file content action from OneDrive.
  • Click on the folder icon to browse and select the image from the folder.  Picture1

3. Initialize a Variable

  • Add an Initialize variable action. Name it and set the type to String.
  • In the value field, insert the following to embed the image:
    < img src=”data:image/jpeg;base64, @{body(‘Get_file_content_using_path’)[‘$content’]}”alt=”My Image” />Picture2

4. Send the Email

  • Now, add an action to Send an email (V2).
  • In the To field, enter the email address.
  • Add a subject based on your requirements.
  • In the Body, insert the following html code to display the embed image: <p class = “editor-paragraph”>This is image <br><br><img src=”data:image/jpg;base64,[‘$content’]”alt =”my image”></p>   Picture3

5. Test the Flow

  • Save your flow and click on Test.
  • Once the test is successful, check your email. The embedded image should be displayed directly in the body! Picture4

Real-Time Example of Linking an Image

Let’s move on to the second example, where we’ll embed an image that links to a specific URL.

Step 1: Modify the Email Body

  1. In the Send an email (V2) action, we’ll modify the body to include a clickable image.
  2. Switch to the Code view of the email body. You can do this by clicking on the code icon in the email body editor.
  3. Here’s the HTML code you can use to create a clickable image:<a href =”Link”><img src = “data:image/jpg;base64,[$content]”alt=”My Image”></a> Picture5

Step 2: Save and Test

  1. Save your changes and test the flow again.
  2. Check the email. You should see the image, and when you click on it, it will take you to the specified URL! Mail Maha Karunanithi Outlook Google Chrome 2025 02 24 14 54 46

Pros of Embedded Images and Links

  • Embedded images enhance email engagement, readability, and overall user experience.
  • Clickable links within images enable viewers to go straight to relevant content without taking additional steps.
  • Embedding images and links saves time and maintains consistency across several emails.
  • Images can be encoded in Base64 format, removing the requirement for external image hosting and decreasing reliance on third-party servers.

Cons of Embedded Images and Links

  • Embedding images directly in the email increases the email’s size, which may influence deliverability.
  • If an email has too many links or photos, some email providers may block embedded images or flag it as spam.

Conclusion

We’ve successfully learned how to embed images in your emails using Power Automate, both as standalone images and as clickable links and you can significantly enhance your communication efforts within your organization. This approach makes your emails more visually appealing and encourages employee engagement through interactive elements.

 

]]>
https://blogs.perficient.com/2025/02/25/leveraging-power-automate-to-create-interactive-emails-with-embedded-images-and-links/feed/ 0 377588