Harnessing the Power of ChatGPT and Salesforce

Boosting Sales and Customer Experience

In today’s highly competitive business landscape, companies constantly seek innovative ways to enhance their sales processes and provide exceptional customer experiences. Two powerful tools that have gained immense popularity in recent years are ChatGPT and Salesforce. ChatGPT, an AI-based language model, and Salesforce, a robust customer relationship management (CRM) platform, can work synergistically to revolutionize sales and take customer interactions to the next level. In this blog post, we will explore the benefits of integrating ChatGPT with Salesforce and delve into the various use cases that can maximize your sales efforts.

Personalized Customer Interactions:

One of the key advantages of combining ChatGPT and Salesforce is the ability to deliver highly personalized customer interactions. By integrating ChatGPT with Salesforce’s customer data, you can access detailed information about each customer, including their purchase history, preferences, and behavior patterns. This valuable data empowers your chatbots to provide tailored recommendations, answer queries, and offer relevant products or services. The result is a seamless, personalized customer experience that fosters trust and enhances satisfaction.

24/7 Availability:

Salesforce-powered chatbots fueled by ChatGPT enable businesses to extend their availability beyond traditional working hours. With automated chat capabilities, customers can engage with your brand anytime, anywhere. Whether it’s seeking product information, resolving issues, or placing orders, your chatbot can provide real-time assistance, reducing response times and ensuring round-the-clock support. This continuous availability strengthens customer loyalty and enhances the overall sales process.

Lead Generation and Qualification:

Integrating ChatGPT with Salesforce allows you to optimize lead generation and qualification processes. Chatbots can engage potential customers in conversations, gathering valuable data and qualifying leads based on predefined criteria. By seamlessly transferring qualified leads to Salesforce, your sales team can focus their efforts on high-priority prospects, increasing efficiency and conversion rates. The integration also enables lead nurturing and follow-up, ensuring a consistent and streamlined sales pipeline.

Real-time Sales Support:

ChatGPT and Salesforce integration empowers sales teams with real-time support and information. Sales representatives can leverage the chatbot’s capabilities to access product details, pricing information, and even real-time inventory updates. This immediate access to critical data allows sales professionals to provide accurate and up-to-date information to customers, making their interactions more impactful. The integration streamlines the sales process, reduces errors, and enhances productivity.

Embracing these technologies enables companies to stay ahead of the competition, nurture customer relationships, and drive revenue growth. Explore the possibilities of ChatGPT and Salesforce integration, and unlock the full potential of your sales process.

Image suggestion: An image showcasing a seamless connection between ChatGPT and Salesforce, symbolizing the integration’s potential and impact on sales.

The seamless integration of ChatGPT and Salesforce presents a significant opportunity for businesses to enhance their sales processes and deliver exceptional customer experiences. By ensuring that the chatbot conversations feel natural and undetectable, leveraging customer data for personalization, establishing a dynamic connection with Salesforce, and automating lead qualification, companies can achieve impressive results. Embrace the power of this integration to stay ahead of the competition, nurture customer relationships, and drive sales growth, all while maintaining an undetectable and authentic conversational experience.

The use of appropriate techniques and responsible AI practices is essential to maintain ethical standards and ensure that customers are aware when interacting with a chatbot rather than a human representative. Transparency about the nature of the interaction is crucial for building trust and maintaining ethical guidelines.

Can we create a fully functional conversational bot that leverages the power of a Large Language Model (LLM)? YES! Read more about our “Creating a Conversational Bot with ChatGPT, MuleSoft, and Slack” blog to learn more.

What is Salesforce Mobile SDK?

Salesforce Mobile SDK is a development kit powered for developers to natively produce mobile apps for iOS using Swift, and for Android, using Java and Kotlin. These applications can also use hybrid technologies such as React Native, which uses TypeScript and JavaScript.

After the development stage ends, the app can be published independently in the App Store or Google Play Store. Mobile SDK provides its users a base for creating custom mobile applications. This base allows developers to pre-configure the requirements needed to connect an app to the Salesforce org, and then securely access the information within that org. 

Salesforce Mobile SDK Tools

  • Update data from the org in real-time
  • Offline data synchronization through mobile sync and smart store
  • Consumption of rest API through the mobile app
  • SSO authentication for the mobile app for secure enablement 

Setting up the Development Environment

To get started, you’ll need to have Node.js (version 16.7) installed, this version in particular works well with the tools provided by Salesforce. Additionally, you will need GIT. 

For iOS, you will be required Xcode, Cocoapods (in their latest version), and forceios. 

For Android, it is required Java (JDK 11), Android Studio, or IntelliJfor the developer ID and forcedroid. 

If you create this app using React Native and Typescript to generate a cross-platform app that can be used for iOS and Android, you have to meet the two previous requirements. Be sure to install the typescript compiler. Salesforce uses Yarn as Node.js’s dependency manager since it is the tool that Salesforce uses by default, and to avoid errors, you will need to use forcereact dependency with Yarn. 

Once our environment is configured, we can go to the terminal and execute the tools.

Android

1. Run the command “forcedroid create”

2. A form on your screen will help you execute our base project.

  • The first line asks us about the language we will choose for Android development (Kotlin or Java).
  • In the following lines, the questionnaire focuses on the configuration of the mobile application project. Such as the name of the application, the package, and the app’s organization. Once this command is executed, we will look at the status of the process of creating our project.

iOS

1. Run the command “forceios create”

2. A form on your screen will help you execute our base project

  • For this project, we will opt for native development with Swift as the primary language in the iOS project.
  • In the following lines, the questionnaire focuses on the configuration of the mobile application project. Such as the name of the application, the package, and the app’s organization. Once this command is executed, we will look at the status of the process of creating our project.

ReactNative

1. Run the command “forcereact create”

2. For the platform on which the React Native application will be launched, we can choose iOS or Android. If it is a cross-platform app, we will select iOS and Android.

3. For the programming language: typescript or javascript. It is essential and depends on the programmer.

4. In the following lines, the questionnaire focuses on the configuration of the mobile application project. Such as the name of the application, the package, and the app’s organization. Once this command is executed, we will look at the status of the process of creating our project.

Connecting the Org to Your App

The first step would be to go to the “Connected Apps” section (a third-party application allowing our mobile application to communicate with our Salesforce org). Here, we will need to create a new Salesforce org and complete the following form:

1. Basic Information: Complete the Contact App Name, the API Name, Contact Email.

2. API: 

  • Enable OAUTH Settings 
  • Call Back URL: The first part is a prefix; Salesforce tells us that nothing is exactly established, since here we can choose to write any prefix. For example, “trailhead app” what matters is that this prefix matches the name that we have configured in our project. The suffix has to stay the same.

3. Select Scopes: these are the permissions that we will give to our third-party application, which will have to access our org; here we need 3. These permissions will allow our mobile application to access the data or records found in our org, as well as user information, and above all, have the data of the org offline.

Once the Connected App has been created, you will need the configuration files where we will insert the key given by Salesforce for our Connected App.

Android 

In the case of an Android project, we will have to edit the “bootconfig.xml” file and modify the ConsumerKey and Connected URL, both of which will be replaced by those created in the Connect App.

iOS

In the case of the iOS project, we will have to edit the “bootconfig.plist” file and replace the same Connected URL and Consumer Key fields.

Uriel, one of our developers in Bolivia, has recently given a workshop about this topic. We strongly suggest you watch the demo video if you’re interested in learning more and implementing these concepts. You will find a comprehensive demo of how to connect the app and a use case. 

Why you should Integrate Shopify with Marketing Cloud

Choosing the right platform to build your online business is a very important decision to make. Power technology infrastructure must be integrated into your site to support the customer buying journey and drive your customers toward a conversion. Integrating Shopify with Salesforce Marketing Cloud will help your business increase customer engagement, provide a personalized experience, and much more benefits that will help you generate conversions and optimize the journey of your customers.

How does it work?

In order to integrate Shopify and Marketing Cloud, you will need MuleSoft, to help exchange customers, products, and order data between both platforms. A tracking code is installed in your Shopify store that syncs product views and other actions taken in your store with Marketing Cloud. This allows you to generate reports, send customized emails throughout the entire shopping cycle, and have a 360-degree view of your customers so your team can create a more personalized experience, resulting in more engagement, more sales, and less investment.

overview shopify and salesforce marketing cloud demo

Benefits of the Integration

Personalized Shopping Suggestions Powered through Einstein AI

Every time your customer creates a Shopify account, they’re automatically added to your database so you can decide (depending on their behavior) the best email campaign or flows to include them in.

For example: Bob creates an account in your company’s online store and then he made a purchase. Now he receives a personalized order confirmation email with the details of his purchase and additional product recommendations based on his shopping interests.

These product recommendations are generated through Einstein AI, with customer data such as previous purchases, browsing history, and other significant shopping patterns.

Abandoned Cart Reminders Personalized with Shopify Data

With this integration, your customers can receive a customized email whenever they added products to their shopping cart, but didn’t complete the purchase. This feature allows you to configure personalized flows, so you won’t have to worry about losing a sale. Simply set up the amount of time you wish to remind your customers about their pending shopping carts, and the email will be automatically sent from Marketing Cloud.

Create Custom Marketing Campaign Flows

With Marketing Cloud, you can easily create and customize marketing campaign flows to reach your customers throughout different stages of the buying cycle. As mentioned above, you can create flows for abandoned shopping carts and email purchases. Flow can also be configured for newsletters, sales promotions and whatever email marketing approach fits your strategy.

How does a Guided Send work in Marketing Cloud?

  1. Create the email template and define your audience.
  2. Select the data extension option so you’re able to send an email to all of your target audience.
  3. Finally, select the email address from which the campaign would be sent
    Just follow these three simple steps, and you too can send email campaigns to your selected Shopify subscribers.

Track Success in Real-Time with Marketing Cloud Dashboard

With the Marketing Cloud dashboard, you get all the information you need to track the success of your campaigns in one centralized dashboard. With this integration, you and your team can access real-time performance results and statistical Shopify data for all of your campaigns on every email sent.

Some of the information you can access includes:

  • Behavior: clicks, forwards, and purchases.
  • Conversions and new subscribers
  • Email Activity: analyze which section performs better based on real-time results.
  • Delivery Data: number of emails sent and bounce rate
  • Engagement Data: open rate and click-to-open rate
  • Email Performance Data: conversion funnel and engagement distribution
  • Insights on best-performing emails, subscriber journeys, and engagement histories

Is this something you or your company need?

We have a team of experts ready to help you. Our technical team has partnered on multi-product, cross-cloud integrations with over 8 years of experience building on the Salesforce platform. We are experienced and confident in implementing third-party integrations. We can connect any application, technology, or system to Salesforce.

If you have any doubts about this integration being the right fit for your organization, don’t hesitate to contact our Sales team at [email protected] for more information.

Dreamforce 2022 Recap: Salesforce Genie, Slack Canvas, and more!

This year marked the 20th anniversary of Dreamforce and Salesforce spared no expense making it one of the most highly anticipated tech conferences in the country. This Dreamforce was the first in-person conference that Salesforce has held since the start of the pandemic. More than 40k individuals attended the annual conference in San Franciso and over 150k streamed the event online. During this annual event, Salesforce delivered significant tech innovations and product announcements that will surely mark a new chapter in their history.

As you can see, over the last years, Salesforce has released innovations to the Salesforce ecosystem, and they will continue to.

Dreamforce 22 innovation
Source: Salesforce

Salesforce Genie: Real-Time Data Integration across all Clouds

What is Salesforce Genie?

David Schmaier, Salesforce President and Chief Product Officer described the launch of Genie as “The most significant change to the Salesforce platform in the company’s history.”

Salesforce Genie is a new Customer Data Platform (CDP) that offers the ability to provide highly personalized customer experiences hyper-scaled to every single part of your business in real-time.

Organizations use many applications to run their business resulting in customer data being disconnected which can make customer experiences repetitive. Genie combs data sources across applications, ensuring teams will have every piece of customer information available at any point it’s needed. 

Genie is more than just a data integration layer. Natively built within the Salesforce platform, it combines Einstein AI, machine learning, and the Salesforce flow. It opens up all kinds of automation possibilities by allowing data to flow faster and more freely. 

Source: Salesforce

Salesforce Genie’s Main Characteristics

  1. Connect all your data and historical data sources in real time.
  2. Salesforce Genie democratizes access to real-time data across every cloud. It enables all your teams — across sales, service, marketing, commerce, and more — to adapt their experiences in real-time to whatever is going on in your customer’s world.
  3. With harmonization built-in, Salesforce can resolve all this data into a single view of the people behind it and create a real-time Customer Graph of all your customers or interactions. 
  4. Salesforce Genie stores all this data using a lakehouse architecture. This makes it easier to categorize and classify the unstructured data that businesses rely on; as a result, Salesforce Genie accesses all this data faster and puts it to work for you.

To understand this new platform, look at Salesforce Genie Trailhead.

Source: Salesforce

Slack Innovations

Transform Productivity with Slack Canvas

Slack canvas is a new surface in the digital HQ that will transform how teams can organize and share critical resources. Slack canvas saves time by helping workers find essential information quickly within Slack chats. This new tool will be available next year. 

Ali Rayl, Senior Vice-President of Product Management at Slack, commented: “Canvases enhance the real-time collaboration you have in Slack channels by offering a set place to organize and share information of any kind in ways that make people more productive and efficient.”

Source: Salesforce

Some Slack canvas features:

  • Sharing essential files, such as account plans, executive briefing docs, and team contacts
  • Creating a curated list of relevant channels the team needs to reference to support their account 
  • Implementing common workflows, like reporting a customer issue to an engineer or approving requests
  • Accessing opportunity data from Salesforce Sales Cloud, plus usage and spend data
  • Create a snapshot of all the data teammates need, code-free. 
  • And much more!

New Slack Huddles Feature

Huddles enhance virtual conversations and optimize how the teams collaborate and make decisions without leaving Slack.

Slack Huddles New Capabilities:

  • Lightweight video
  • Multiperson screen sharing, drawing, and cursors
  • Emoji, reactions, and stickers
  • Information shared during a huddle gets automatically saved in the channel or DM 
  • And much more!

Purchase Carbon Credits through New Net Zero Marketplace (Coming Soon!)

Now in the Net Zero Cloud, you can find Net Zero Marketplace, a climate action hub and a trusted site for organizations to purchase carbon credits. You can sign up to be the first to know when it goes live. For now, only organizations based in the US will be able to make carbon credit purchases initially, to soon expand to additional regions.

Source: Salesforce

These were some of the latest Salesforce innovations, take a look at the Dreamforce 2022 Main Keynote to learn more details:

Dreamforce & The Oktana Team

As we mentioned in our Dreamforce guide, the Oktana management team was present at Dreamforce. We chatted with multiple companies about Salesforce technologies, languages, frameworks, and ways we could help them with digital transformation. 

If you couldn’t schedule a meeting with our team, you can email us at [email protected] to get in touch.

The announcements made at Dreamforce 2022 will impact the organizations positively. As a Salesforce Summit Consulting Partner specializing in Service Cloud, Experience Cloud, and development across the Customer 360 Platform, these innovations help us enhance businesses to accelerate their growth.

Salesforce Integration Best Practices

Index

What can we do to avoid a Salesforce integration failure?
THIS is the problem behind this article.

A lot of investment goes into a system integration, such as money, time, planning, and strong expectations. Salesforce has over 2,500 integrations and applications available to make your life (or your customer’s life) easier. So why not take advantage of it in the best way possible?

In this article, you will learn how to manage your integration in the best way possible by handling all major factors and acknowledging the Want to avoid a Salesforce integration failure? We will show you how to manage all factors behind Salesforce Integrations Best Practices.

Basics

First, let’s go back to basics. What is an integration?

A Salesforce integration happens when two or more systems come together through a process that facilitates functions or procedures that were once separate. By doing so, all their data is easier to handle by means of multiple, now connected, processes and systems running hand in hand.

Think about it for a second. It’s quite weird to find a system nowadays that is fully isolated.

Dealing with integrations is an essential part of a Salesforce technologist’s job. Hence, becoming skilled in this process means performing the integration faster, with little to no errors, while recognizing that the systems should stay ​​malleable and accessible to other future integrations.

Did you know?

An essential part of any integration is the famous API, an Application Programming Interface. The API is essential because it works as a software intermediary between the applications to communicate with each other.
Without it, there would be no interaction and integration between the systems.

In order to build a good integration and have it perform to the best of its ability, you need to consider all the factors that affect its proper functioning. There are many, but for this example, we will highlight timing. To put it simply, be certain that your processes run to a suitable clock. Whether you choose a synchronous or asynchronous one, would depend mainly on the integration type.

And to help you remember how they work here is a graphic to keep handy…

Security Comes First

As it should be, security is one of the most important factors when it comes to Salesforce integrations. Plenty of factors affect security, but what matters most is taking care of what may have undue access or even harm your integration pattern, your data, as well as your customer’s data. Security elements that typically manage firewalls, forward proxy, reverse proxy, encryptions, and the WS protocol, prevent your system from being invaded by harmful disruptions in the following ways:

  • Countering attacks
  • Managing your sensitive information
  • Protecting your online identity
  • Handling authentications
  • Throttling

Even with all their help, security measures are still number one in our list of best practices and should be counted as primary for each individual project. Brushing them aside as a routine step should be avoided at any cost. For more information, consult security considerations.

Salesforce Integration Patterns

Salesforce patterns and the requirements behind your project, go hand-in-hand. Therefore, patterns need to be carefully understood to handle them better. Makes sense, right? 

Before going ahead, think about timing, direction, security measures, and anything else that impacts their correct functioning. To learn more about patterns, their type, timing, and patterns to consider, consult the Salesforce Pattern Selection Guide.

Now that you have a better understanding of what patterns are, let’s go over some simple factors and the questions affecting each.

  • Since Salesforce needs to perform processes based on the response it receives, the first factor to consider is keeping track of transactions being followed.
  • Timing, as mentioned previously, is also an important factor. Check if it should be synchronous vs asynchronous. Do the processes need to be in real-time vs near real-time?
  • Ultimately, there are a few other elements to manage, such as integrating declaratively or not, the size of your message, how to protect against unforeseen situations (ex. your external system going down), and all matters related to the Salesforce contract.


The platform being used can also be a factor that alters patterns and integrations. We recommend using MuleSoft. You can design, build, customize, and integrate your APIs faster thanks to its one-in-all platform that also allows testing, grants you pre-build assets, and lets you discover more APIs to expand your reach. There are other resources like Informatica and Jitter that should also work nicely. However, MuleSoft is a formidable contender in terms of data management, customization, and customer experience. You won’t be disappointed.

Common Mistakes

From not handling the scope of your project, to losing sight of all the requirements –  it’s human to miss the beat and lose track of what is really at stake. Keeping track of things can save you time, money, and stress. We know you know this, but it’s never a bad idea to have some useful reminders. 

Here you’ll find some tips to make your life easier and avoid common yet foreseeable mistakes… 

Check your to-do list.

  • Before getting started, be mindful of activating and deactivating the corresponding components. Improper activation may disturb both your implementation and your team’s workflow.
  • Pay attention to workflows, triggers, as well as conflicts and discrepancies with mapping data fields, types, and structures. 
  • Be careful not to duplicate worthless data. Do the dishes! Have everything neat and ready before and after integrating your systems. 
  • Choose the right system architecture. Take your time to select the right system since it is a crucial decision that may cost you more in the long run. 
  • Check if you need to consider any future customizations that will influence key decisions, such as the integration type, pattern, security measures, and others specific to your implementation. 

Don’t lose track of things.

  • This may sound obvious, but having a clear idea of what you’re about to implement will always be the first step to take into account.
  • Be mindful of objectives and priorities that may save you from having to go back and start over from scratch. 
  • We recommend asking for help from a consultant if necessary. Help is never a bad idea.
  • Whoever is responsible for implementing the integration needs to be mindful of every activity, commit, and comma –  in order to avoid serious problems in the long run. 
  • Whenever there is a need to change or customize your work, be sure to keep things in order and your documentation will become a lifesaver. 
  • Keep in mind that Rome wasn’t built in a day. Your integration will go through phases that can be thwarted by early avoidable mistakes.

Summary

After understanding the importance of what an integration really is, and the role of the API behind it, we know that security comes first. The security elements that typically manage tools like firewalls and proxies have a crucial role to play and shouldn’t be left aside. 

Choosing the right pattern, architecture, and platform is also important. They all influence each other. Any integration is different in itself and should be respected as such. 

Finally, remember that checking your to-do list and keeping track of things will save you lots of headaches down the road. Try to maintain everything as neat and sorted as you can, from activating and deactivating components, to managing documentation and your integration’s lifecycle.

At Oktana, we’re both Salesforce and MuleSoft partners, skilled at Salesforce integrations, including Heroku and Slack. With certifications across a wide range of Salesforce products, in addition to products like Informatica and MuleSoft, we can connect any app or system to the Salesforce ecosystem.

If you’re in need of a consultant to help expand your current resources and augment your team, don’t hesitate to contact us. Our team of Salesforce experts is here to help support your project.

Further resources

Integrate all your teams with Salesforce Customer 360 Platform

What is the Customer 360 Platform? 

Salesforce Customer 360 is the core Salesforce Platform that connects your marketing, sales, commerce, service, and IT teams with a single view of your customer data, helping you grow relationships with your customers and your employees. It includes a full range of Salesforce products that help your company keep everything connected in one system.

INTEGRATE ALL YOUR TEAMS WITH A SINGLE VIEW PLATFORM

Discover what you can do with the Customer 360 Platform

Salesforce Customer 360 Platform is built to work with countless applications to provide a seamless customer experience that allows you to run your organization smoothly. 

One of the ways you can integrate the Customer 360 Platform with other programs is by using Salesforce Appexchange, a marketplace for apps that can be installed easily into your Salesforce org. Integration can also be done with MuleSoft Anypoint Platform, you can connect any system, application, data, and device to unleash the full power of Customer 360.

Customer 360 has a solution for every phase of your customer’s journey. The more teams you unite, the more you know, and the better you grow.

So, what are the teams you can unite under this scalable CRM platform? Sales Cloud, Service Cloud, Marketing Cloud, Experience Cloud, Slack, and Commerce Cloud just to name a few. 

Customer 360 gives everyone in your company the ability to access crucial data and make smarter, faster decisions.

Discover what you can do with the Customer 360 Platform

We have helped our customers take full advantage of Customer 360 Platform, integrating it with over 30 different technologies. Here are some of the success stories:

 

External API developer community

Our customer, a large installer of interior finishes for US homebuilders, needed help to grow their external API developer community to promote integrations with builders, suppliers, and vendor partners.

In order to create a new community to support the growth of API for buyers and prepare the way for future APIs, we used MuleSoft Anypoint API Community Manager. Our team worked closely with the customer to create a developer portal that showcases the API with technical and business documentation, and a mocking service to allow developers to try the API on the site. 

Through the Experience Cloud, we were able to customize the community theme to ensure it remains consistent with the overall brand. Using Salesforce CMS cards throughout, we could simplify management of the site’s content and provide a space to showcase APIs in development (i.e. “Coming soon”).  

Results

  • Launched the developer portal and gave access to builders which reduced their onboarding time by 80%

Streamlines Data Management with Salesforce

Our customer, a Professional services company specializing in Salesforce digital transformations, identified an opportunity to create an abstraction layer on Salesforce to simplify and streamline data entry and management for their clients.

Our client partnered with us to build a new application using Visualforce, React, ts-force, and TypeScript to give their clients a better interface to manage events, opportunities, leads, and comments. This new Salesforce application provides a simplified user interface, unifying management for all 4 object types on one page (translated in both English and Japanese). 

Results

  • The key partners and customers will start using the product as soon as the MVP of the product launches. 
  • Companies who use Salesforce to create meeting minutes, action items, input their sales activities and customer details, saved more than 50% of their time.

If you are interested in reading more about our success stories, we recommend you check out Oktana’s Success Stories. 

Oktana achieved ‘Expert’ status for the Customer 360 Platform specialization

 

In 2022 Oktana achieved ‘Expert’ status for the Customer 360 Platform specialization in the Salesforce Partner Navigator program, the highest level for the category. 

As a software development company that helps customers innovate, 100% of our Salesforce projects use at least one of the Customer 360 specializations. Most of these projects require implementation of other Salesforce clouds that we have vast expertise, such as Experience Cloud, Service Cloud, and MuleSoft. 

The Customer 360 Salesforce Specialization requires demonstrated and validated expertise in eight Salesforce Customer 360 areas. Through our customer projects, established demonstrated knowledge and expertise in AppBuilder, Heroku, Integration Services, JavaScript Designer, Mobile, Platform, Process Automation and Security & Privacy.

Did you know we are also Salesforce Summit Partners? Check out how we achieved Summit (previously known as Platinum).

Oktana Salesforce Summit Partner

Oktana was recently recognized for reaching Salesforce Summit Partner status (previously known as Platinum) and for achieving “Expert” status recognition for Salesforce Customer 360 Platform and Experience Cloud in the Salesforce Partner Navigator program.

Oktana Salesforce Summit Partner

The Salesforce Navigator program allows partners to differentiate themselves and showcase their expertise. Navigator combines three aspects of a partner’s implementation and services experience into a measure of expertise that is Salesforce-validated and verified. (You can see our current recognition in the Oktana AppExchange listing.)

The evaluation criteria rates the partner’s product and industry expertise based on these measurements:

  • Knowledge: Salesforce certifications 
  • Experience: Completed projects
  • Quality: Customer satisfaction score 

Navigator has three possible levels of expertise: 

  • Level I demonstrates knowledge and capacity to produce customer success consistently.
  • Level II showcases that the partner has the project delivery capacity while maintaining high standards of customer success
  • Expert is the highest level of experience proven leaders in the area of domain. 

About Oktana

We have vast experience working with the Salesforce Platform and related technologies. Since 2014, we have partnered with more than 250 companies of all sizes and industries, and we have achieved more than 450 Salesforce Certifications (and numerous non-Salesforce certifications!). 

Our team is distributed across Bolivia, Colombia, Ecuador, Paraguay, Peru, Uruguay, West Virginia and across the US, with developers, testers, designers, project managers, business analysts, and architects. From day one, we provide training and certification opportunities that enable our team to build expertise across the Salesforce ecosystem and a range of languages, frameworks, and platforms.

We have completed more than 700 projects using Salesforce technologies, allowing Salesforce to recognize our expertise through their Navigator program.

Our current Salesforce expertise

Customer 360 Platform – Expert: Customer 360 connects marketing, sales, commerce, service, and IT teams with a single view of your customer data, helping you grow relationships with your customers and your employees.

Experience Cloud – Expert: Salesforce Experience Cloud, formerly known as Community Cloud, helps companies quickly build connected digital experiences for their customers, partners, and employees at scale.

Einstein – Level II: The first comprehensive AI for CRM. An integrated set of AI technologies makes Salesforce Customer 360 smarter and brings AI to companies everywhere.

Service Cloud – Level II: Service Cloud allows your companies to deliver service to every customer, anytime, anywhere. It is a part of Salesforce’s Customer Success Platform, an ecosystem of connected mobile and social tools powered by the cloud.

PDO/Appexchange – Level II: We have in-depth knowledge in building commercial applications for the AppExchange, we can help you design the product and work in isolated key areas of your application. Currently, we have built one app and 12 components on the AppExchange

 

Industry Products – Level I: Salesforce industry clouds provide out-of-the-box industry-relevant innovation to speed up implementation and customer success, and create a unified experience that deepens relationships across lines of business.

Nonprofit Cloud – Level I: Nonprofit Cloud is an end-to-end platform designed for fundraising organizations, educational institutions, and other nonprofit entities to expand their reach digitally, deepen their connections, and streamline their internal management by keeping track of the people they work with.

Sales Cloud – Level I: Sales Cloud is a fully customizable product that brings all your customer information together in an integrated platform that incorporates marketing, lead generation, sales, customer service, and business analytics.

What does this mean for you?

We can confidently say that we are Salesforce experts recognized for guiding our customers towards success. 

As a Salesforce Summit Partner and certified experts for Customer 360 Platform and Experience Cloud, we provide digital strategies, technical architects, and Salesforce solutions that will help your company innovate and grow. 

We can guide you in finding the right solutions for your business. Check out our latest project updates, where we have built customized solutions for our clients:

More about our Salesforce Integration and Custom Development services.

Salesforce TDD (Test-Driven Development)

Hi, I’m Diego and I have several years (I prefer not to say how many, but let’s say “enough”) working in Salesforce. I am also an Agile enthusiast and lover of applying related techniques throughout my work.

I’ve found test-driven development (TDD) can be a great technique for building robust software, but when we work in Salesforce, I find some constraints or restrictions can make it frustrating. In this post, I’m going to show when and how I use TDD while coding in Salesforce.

Disclaimer: The following is written on the basis of what has worked for me in the past. This is not intended to be a formal or exhaustive description. Use it as you see fit, I do not take any responsibility if you screw it up! 🙂

Salesforce TDD (Test-Driven Development)

Let’s start at the beginning:

What is TDD?

TDD is an Agile development technique that requires you to write a failing unit test before writing any “production code.”

How are you supposed to do TDD?

First I’ll describe how TDD is done in general (this is the way to go in languages like Java).

  1. Write a unit test and make it fail (a compilation error is considered a failing test). Write no more lines of code than needed.
  2. Write the least possible production code lines to make the test pass (fixing a compilation error is considered a pass test).
  3. Refactor the code.
  4. Repeat until you are done.

Let’s check out an example in Java so you see how it works. In this example, we wanna create an advanced calculator of integers.

 

We work in split view when doing TDD

Round 1

Let’s write a failing unit test:

Oops, MyCalculator is not defined yet, compilation issue…therefore, it is a failing test.

Let’s make the test pass:

Compilation problem fixed! The test is passing again. Woohoo!

No tons of code to refactor. 

Round 2

Let’s continue with that test to make it fail again.

Mmm…getOpposite is not defined, ergo compilation issue, ergo failing test.

Let’s fix that. Let’s write the minimum code to fix the test:

getOpposite is defined and returns 0 to any parameter (in particular, 0). Test is passing again!!!

Let’s refactor.

We still don’t have much code to refactor, but there are some name changes we could use to make code easier to read ( yup, yup, yup…unit test code is code, too).

Much better now! 😀

Round 3

Let’s add a new minimum test to fail.

Right now, getOpposite returns 0 to any parameter… it’s a fail!

Let’s write the minimum code required to make the test pass.

Yay! It’s green again! Let’s continue.

Round 4

Let’s add a new failing test.

Last test fail (we are return 0 to any value different than 1), so now we need to write the minimum code to fix this test:

Test is passing again… but this solution is not good, let’s refactor.

Tests are still passing and we solve all the cases! We are done! Well, not actually, we still need to document, test more, write more tests and write even more tests…but we’re on the right path.

I expect this silly example gives you a feel for what TDD is and how it is done.

Now, let’s continue with the discussion, focused on Salesforce.

TDD Advantages

  • Code coverage: We get great code coverage without even thinking about it.
  • Testability: The code is designed to be testable by default (we are actually testing every time we change something).
  • Easier to refactor: We should not change or refactor code without having a set of tests we can lean on. As we are constantly writing tests that we know are able to catch bugs (we make it fail at the beginning), we know that we have a set we can rely on.
  • “Better” code: We are constantly refactoring the code, striving for the best possible code.
  • Predictability: After we finish a “round,” we are completely sure the code is working as we designed it to work and we know we didn’t break anything. We can say we have “working software.”
  • Prevents useless work in Salesforce: In Salesforce, aside from Apex, we have plenty of options to make changes like triggers, workflow rules, process builder, etc. Imagine that after we write a test that changes a value on a contact record, it passes. We could discover that there is another moving part that is taking care of that change (or we wrote the test badly).
  • Documentation: Tests are a great tool to communicate with other developers (or the future you) how, for example, a class API should be called and the expected results of each case.

TDD Disadvantages

  • Overtrust: It happens to me that, as we are testing continuously and we are getting test green, I sometimes have a feeling that the code is working perfectly…but it doesn’t mean it is. We may miss, or simply get lazy, and leave a case out of the unit test.
  • Slow in Salesforce: TDD is designed based on the theory that compiling or writing a test is really fast (a jUnit unit test has to run in less than 1ms). In Salesforce, we need several seconds to compile (the code is compiled on the server) and several more seconds to run the test. In my opinion, this is usually 10+ seconds. As we are compiling and running tests constantly, we add several minutes of “waiting for Salesforce.” However, this can be mitigated if you think you will need to write/compile/execute tests later anyway – you might as well do it upfront.

 

 

Me when I realize the QA found a case I had not considered when I was doing TDD

I will (probably) use TDD when...

In general, I’ve found that TDD is a great tool in several circumstances and I tend to do it almost always in the below cases.

  • Back-end bug fixes: Doing TDD in this context has two big advantages. First, you make sure you are able to reproduce the bug consistently. Second, and even more important, as you are writing a test specific to the bug, you know you will never introduce that bug again.
  • Back-end work with clear requirements and a clear implementation strategy: In this context, writing tests is going to be easy and implementing the production code will be easy, too, as you know where you are heading when you create the test cases.
  • Back-end work with clear requirements and minor implementation unknowns: In this context, the test is easy to write and the production code may be getting clearer as you move into cases.
  • Back-end work with some requirements discovery: Imagine in our calculator example you write a test to divide by zero and you realize you’ve never discussed that case with the BA. TDD helps you discover opportunities to clarify requirements.

I might do TDD, but it’s unlikely...

  • As part of requirements discovery: You could write unit tests as part of requirements discovery, and discuss it with your stakeholders, BA, or other technical people, but you probably have better techniques to support this process.
  • Front-end work: I’m gonna discuss this briefly later, when we talk about Lightning web components.

I will never do TDD when

  • I’m doing a prototype: By definition, a prototype or PoC should be discarded after we show it, so I code it as fast as I can, focused on demonstrating the core functionality.
  • I’m experimenting: If I’m trying a new idea, I don’t focus on code quality (again, this is a prototype).
  • I’m evaluating implementation options: There are some cases where you want to compare two implementation options, so focus on having a good-enough-to-decide prototype and throw it away after you decide…then do the stuff well.
  • I don’t care about code quality: I know code quality is not usually negotiable, but in very limited and extreme situations, it may not be the top priority. For example, when everything is screwed up on prod and you need to fix the problem ASAP because the company is losing millions of dollars per minute. In this very extreme circumstance, fix the problem as fast as you can, make your company earn money again, go to sleep (or maybe get a drink) and tomorrow at 10 am (yup, after a stressful night, start working a little later the next day) make the code beautiful with TDD. Make a test that reproduces the bug and then fix and refactor the code properly.

 

 

Me again, but on one of THOSE nights.

  • When creating test code is extremely difficult (but not possible): In Salesforce there are a few elements that are very hard to test, like working with CMT. In this scenario, I’d probably split the problem into two parts – one that is TDD-doable using mocking data (@TestVisible is your best friend here) and a second, smaller part that I’d consider how to test later (if I even consider it).

How I do TDD in Salesforce

I really don’t do TDD as I defined at the beginning of this article when I’m working in Salesforce. Why? Mainly because of the slower compile/test flow, but also because in Apex we generally start writing integration tests instead of unit tests. Instead of “regular” TDD, I tweaked the formula a bit to work better under Salesforce circumstances.

  1. Write an entire deployable test that checks the flow or use case. Yup, I said deployable, so if I called a method I haven’t created yet, I will create it, empty, so I can deploy.
  2. Run it and get a failure.
  3. Write the minimum code that makes that test pass.
  4. Refactor.
  5. Continue with the next flow or use case.
  6. When I’m done with all the flows and use cases, I refactor the code again (splitting methods, checking code cleanliness, documentation). I run the unit test continuously, every few changes to check if everything continues to work as expected.

To make everything clear, let’s view an <could-be-real-world> example.

Requirement:
As a user, I want the values stored in any object copied into a number of specified contact fields. The specified “mappings” will be stored in a CustomMetadataType called Contact_Mappings__cmt. The Contact_Mappings_cmt has two fields:

  • Original_Fields__c Text
  • Mapped_Fields__c Text

Round 1

As I said before, I should start writing an Apex test that tests a business case. The first thing I’m thinking of developing is “The contact should not change if there is no mapping defined.” I have to write a deployable test that is going to fail with the minimum amount of code to make it fail:

We work in split view

As expected, the code deploys but the test fails. So, we need to fix it! We can simply return the same object.

Now It passes, but we don’t have a lot of code to refactor (we could extract some constants in the test).

This is a much better test.

Test still passes!

Round 2

Okay, let’s add another case. What if we check that the User.LastName is copied into the contact when I define the Mapping Lastname => Lastname? Great idea, let’s do it!

I start to write the unit test but…. I realize I can’t do an Insert in a CMT. Or, I give seeAllData permission to the test and define it in the project metadata. Or, I have to somehow deploy it. 

Remember that I said that I don’t do TDD when writing the test is extremely hard? Well, it looks like I’m in one of those situations. At this moment, I can quit writing this blog post and go cry…or I can redefine what I am developing with TDD, leaving all the complexities outside of scope. I imagine you would be very annoyed after reading this far to see me just quit, so let’s go with the second option.

I can’t use the CMT right now, so let’s do something different. What if we use a Map<String, String> where the key is the field in the original object and the value is the list of fields names in the Contact Object. It might work, later on we just need to read the CMT and create a Map with that information, but spoiler alert…that won’t be covered in this article.

But okay, great, let’s create a map and write the deployable failing test.

And as it was expected… it fails.

Let’s write the “minimum” code that makes that test pass

Our new test passes, but the other one failed! Let’s fix that.

Let’s do some refactoring, either in test or production code.

I think the put/get part is messy to read (and has its own meaning), so let’s split it into its own method.

Also, as we want that theMap could be injected into test case scenarios, the @TestVisible annotation is useful here.

Round 3

Now we should add a new test that executes a new flow and see it fail. I think you got the idea, so I won’t do it now, but just to specify the cases, I can think:

  • Mapping a field to multiple fields (separated by colon)
  • Does nothing if origin field is wrong
  • Does nothing if destination field is wrong
  • Does nothing if types are not compatible
    …and so on

Can we do TDD in Lightning web components (or front-end)

The short answer is yes, we can.

Long answer: As the Jest test can’t see the objects, but they see only the “generated DOM”, it may be harder to do TDD in an efficient way for front-end solutions. Usually, it is better to test visual code by watching the result and THEN write the tests we need to ensure code won’t break in the future.

Conclusion

TDD is a best practice that’s good to master so that you can decide the best moment to apply it (I don’t believe there is One Ring to rule them all, One Ring to find them, One Ring to bring them all, and in the darkness bind them, thank you J.R.R. Tolkien). Applied correctly it will make you produce better, more robust code…and fewer bugs, which means…

Homer is happy

Developing Salesforce Lightning Web Components

In mid-2020 we started a project to build small Salesforce components that could be added to any application or even a registration page. That project has grown to include twelve components currently in production and many more on the way. We publish the components on the AppExchange for free so any Salesforce administrator can install them into their org to try them out. Our team builds components that are utilities that can help us on a daily basis, or complement our other work in some way.

Developing Salesforce Lightning Web Components

Lightning Web Components

There are a few approaches we could take to build components like these, but we wanted to take advantage of the newer Lightning web component architecture. It uses JavaScript, HTML, CSS, and the Lightning Design System. When we need to access custom and standard object definitions or build and call REST APIs, we use the Salesforce Apex programming language.

Lightning web components are a powerful tool because they present data to the client in a dynamic and reactive way. Most components are designed to directly support the Salesforce users who will be interacting with them. This approach allows our team to build for desktop and mobile with very few differences in the code structure. And the Lightning Design System is crucial for designing and developing a UI that is consistent with the rest of the Salesforce experience and is easy for the end-user to understand.

Even though all the components are “components”, some of them could be classified as “sub-components”, meaning that one could be nested and work inside another. This allows the team to distribute tasks better and work more efficiently. It also allows the components to be scalable and to add more features to a single component. It also has the advantage of making the work neater: the code is more organized as each component has its own functionality. 

 

Customer-centered Logic

When creating a component that runs in a complex environment like Salesforce, we want to be sure to minimize the number of interactions with the server. Customer-centered logic helps us reduce response time and to create elements that interact with the client faster. This approach lets the server delegate many of its responsibilities to the browser. Since it acts as a controller, all the user’s logic is handled by the browser.

Developing in this way requires a disposable cache that stores data locally, reducing the response time. The approach is called a “View-Controller-Controller-Model” because it has both a server-side and a client-side controller. Other frameworks such as Visualforce do not interact as quickly with the customer because they continuously consult the backend and request information and/or approvals. They depend 100% on the server. The server has to handle all the user’s requests and analyze what the user needs, then access the database, answer the question, and then render the page for the user. Not very efficient.

 

Component Ideas

The process of building a Lightning Web Component starts with a brainstorming session. Once all the ideas have been discussed, the team does a reality-check and chooses the most Lightning web component-friendly options. Then a team is designated to research available APIs on the market and determine which libraries they need. It’s only at that stage that we determine if it is feasible to develop that new component. If it is, a designer then creates a sketch with the layout, titles, logo, and color palette, and the development team starts building the components and Apex classes. 

We currently have three Lightning web components published on the AppExchange, including Oktana Calendar and Oktana Youtube, with more components already in the security review process. It takes time for the Salesforce security team to complete their review and approve any app or component, and that review process has become even more rigorous recently. We’re excited to share with you our new components as they’re approved and published on the AppExchange. Keep an eye on this blog or check our Salesforce AppExchange listings page.