Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Using Batch Flows to Perform Complex Data Loads
Instead of manually preparing complex data loads, we can use flows and custom objects to ingest CSV data, perform transforms and business logic, and then update or insert records in Salesforce.

When you need to regularly load data from a spreadsheet that requires some processing or transforming fields into records (or both) there are a few ways to accomplish this.  We can use lots of VLOOKUPS on the spreadsheet with an upsert, we can use a tool like Boomi, or we can go the route I chose and use Salesforce Flow.  


The Use Case

Keeping track of healthcare gaps is crucial for health insurance companies to ensure that their members receive proper medical attention and follow-up visits. My client works with these carriers to monitor the gaps in care their members have with their providers.

For example, if a member is enrolled with Humana, the insurance company wants to make sure that they have an annual check-up and eye exam. To incentivize members to keep up with their appointments, the carriers might offer cash rewards.

Every month, the insurance carriers send my client CSV sheets detailing the gaps in care for all of their members. However, the spreadsheets can be a hassle to handle as they come in different formats and sometimes have inconsistent information. To tackle this challenge, my client uses advanced techniques to process and transform the data into meaningful records, keeping track of each member's gaps in care and working towards closing them.

This carrier provides an incomplete, complete, and incentive column. There is just one row for each member:


This carrier provides a column with the type, and each member has a row for each type:


The Solution

To accomplish this, I created a streamlined, automated process. I've crafted a custom database object called Member_Care_Gap_Load__c, specifically designed to accommodate the vast amount of data from spreadsheets received from health insurance companies. With a daily check on all open records, this process will seamlessly manage the care gap tracking for each member, ensuring no lapses are left unchecked. The first type of spreadsheet, where there is one row for each member, will undergo a meticulous process of loading 6 times into the database, capturing every gap represented. The second type of spreadsheet, where each member's information is repeated multiple times, will undergo a more straightforward loading process, as it will be loaded just once into the database. Then, the scheduled batch flow will take over and seamlessly manage the rest of the process.


With 100,000 records to process, I was worried about hitting speed and limits in the system. But to my delight, the batch processing for the Member_Care_Gap_Load__c custom object was lightning fast, completing in just 15 seconds without a hitch. However, my initial approach for another batch process I have of checking every member in the database for gaps was a bit too ambitious, and it hit a limit due to the combined flow filters in the organization being capped at 250,000 records per 24 hours. I had to be strategic and put in better filters to only focus on members with potential gaps. One small mistake, such as incorrect record formatting, could cause bring an entire batch of 200 records to a screeching halt. The other batches of 200 records would still process, just the batch with the single error would fail. It's a delicate balance, but with the right approach, this process proved to be a reliable solution.


Here is my entry criteria for the batch to start:

And that is all the batch is, the entry criteria and the time it runs, and an element calling a subflow.  I created an auto launched subflow to call from the batch and while it's not necessarily needed, it allows me to change the batch start time, without touching the flow, and vice-versa.

I have a Member_Care_Gap_Load__c record variable set as input in my subflow, and I simply pass the entire record in from the batch flow.

This is the general process in a nut shell. Is the record there -- Yes? Should the process continue? If not, it marks the original load record that kicked off the batch as processed so it’ll exit the flow and not try to process again.

The solution that was actually implemented is a little more complex than this as there is a sub flow to process the half year gaps on their own to make changes to any one flow a little easier. The idea is the same; decisions on what the data is, and then assignments to set the needed fields.


Into The Weeds

The first thing I do is get all my contacts into a report and use VLOOKUP to get their contact ID. The hope was to do this in the flow, but the unique ID in my org is an encrypted field, and you can’t use flow to filter on encrypted fields in a Get Records query. There are some workarounds, but I opted to use Excel and get the Record ID onto my import sheet. I made a field for the record ID on my load object.


The very first decision I have is to decide if it a record even needs to be processed. My spreadsheets have a Boolean gap-in or a date field to indicate if they have this gap. If either of those values isn’t present, I update the load record to "processed", add a message, and end the flow. There are many people on the sheet that don’t have each gap. I do a get records for the carrier record type (record type on account) and the carrier record (BCBS, Humana, etc.). I don’t have a decision on these because they should exist, but I technically should have a decision so I would know if they were missing. They are an important part of the process and should already exist.


Next, I do a GET query on the contact record. I’m doing it with VLOOKUP, but I could have used Unique ID if it wasn’t encrypted. It's important to note that not every person on the sheet is in Salesforce. I’m not creating them, so I just update the load record indicating they don’t exist. This would let me use this data for a report to see who was missing.


Finally, I check that the Care Gap and Carrier Care Gap records exist. If they don’t exist, I update the load record. These should exist prior to any record entering the flow.  I setup the records using a naming convention based on gap type/carrier. Gap types may come on the spreadsheets as a code or a full name (ex. BCS or Breast Cancer Screening.)

I use a CASE() formula in my flow to normalize the type. I could use Metadata Types to make this more dynamic, but it only has to be set once so I just used a formula. I also sometimes shorten carrier name in the gap name due to field length, so I have a formula to normalize how I’ve shortened names (Blue Cross Blue Shield to display as BCBS, but the actual account is the full name).

Using Get Records

Now we do a Get Record query for the contacts gap record. This is where the real work comes in. My rules are - it has to be for the carrier gap we’re loading, be between the start/expiration date ranges, and be related to the contact (ex. BCBS – BCS – Michelle Lavalette – current date)


·     If it exists and was marked as closed on the sheet, we’ll update it as closed

·     If it exists but was not marked as closed on the sheet, we’ll do nothing

·     If it doesn’t exist we’ll create it.

This is a decision element with 3 nodes, one for each of the criteria outlined.

The do nothing path is just the default path, it just goes to a final update load record to indicate it has been processed.

Found and close will update the gap record with a close status/date. I have a formula date field for close date, because it was either provided or not. If it hasn't been provided, I just use the current date.

The create gap path has more decisions. First I have to check if it’s an open or closed record, and set the status accordingly, as the record might just come in as closed.  I have an assignment element after each decision to set a statusVar with the correct status. You could set a default for the statusVar and only use an assignment at one path. I also have a closeDateVar so I can fill in the closed date or not depending on the path. I tend to name variables with Var as the end, and formulas with F at the end, so it’s easy to see quickly which is which.


I create the member gap and fill in all the values. There's a formula to name it - member name + carrier gap name, but it's capped at a length of 80 so that it doesn’t hit the name field limit.



Next I check to see if there is an incentive. Some gaps have them, some don’t. If it does, I create it.

The final step is to mark the load records as processed.  



When it comes to loading the same type of data into Salesforce over and over again, I found myself needing an efficient solution. With varying data but the same target objects, I needed to ensure accuracy and minimize room for human error. That's when I discovered the power of batch flows. With a simple set up, I was able to quickly and easily load all the records from my spreadsheet, updating and creating them as needed, and seamlessly linking them to the correct sub-records.

Thanks to this batch flow, I no longer have to worry about the possibility of human error causing incorrect data to be created. And with the ability to quickly load the data, my work has become much more streamlined and efficient.

Top 5 Marketing Apps for Salesforce
Whether you are a Pardot guru or just getting started, we'll point you in the right direction with the five best apps on the Salesforce AppExchange to power up your marketing efforts.

Active Campaign

Active Campaign for Salesforce combines the power of customer experience automation with data from Salesforce to create a more personalized customer experience that turns leads into repeat customers. By aligning sales and marketing teams through the Salesforce integration the app alerts you to the right customers at the right time.


Easily add text messaging to Salesforce with the Global Leader in Cloud Communications - Twilio. Use Salesforce data and components you know to customize SMS messaging and report on results. With an out of the box setup Twilio SMS works with the Salesforce data and tools you rely on every day.


With Typeform, capture more leads, support tickets and data in a streamlined, unified interface and automatically send form responses to Salesforce as leads, accounts, contacts, opportunities or cases.  Create forms that contain elements such as multiple choice, picture choice, rating scale, emails and more. Then integrate this data right into Salesforce.

Campaign Monitor

With the Campaign Monitor Salesforce integration, you'll no longer need your tech team to manually pull a list or gather data for you before you can create your hyper-targeted emails your subscribers expect. View email statistics, map Campaign Monitor email fields and automatically add subscribers without ever having to leave Salesforce.

Mercury SMS

Mercury SMS integrates directly with the Salesforce platform, connecting businesses with their customers communicate with prospects in real time using two way messaging that may be automated but feel incredibly personalized

Why your sales team needs to start using Scratchpad
If Salesforce is getting in the way of your sales team actually selling, you might want to take a close look at Scratchpad.

What is Scratchpad

Scratchpad at its core is Google Chrome extension that syncs data from Salesforce into a customized, stripped down interface. It’s gaining rapid popularity in the Salesforce world and for good reason. While we know and love Salesforce for its breadth of features and complexity, we sometime know it can be a little too complex. That’s where Scratchpad comes in, as it basically strips out the externalities of Salesforce and hones in on what makes Salesforce so powerful in the first place — the ability to stay on top of your entire pipeline. Scratchpad offers an intuitive interface that gives you a daily home base where you can keep track of notes, tasks and get a birds eye view on your entire pipeline. The best part is that all this can be shared with your entire team and then synced back to Salesforce so you and your colleagues are not working in a silo. Let’s take a deeper dive into what Scratchpad can do for you and your Salesforce organization.

What makes Scratchpad so powerful

When you first open up Scratchpad and connect your Salesforce account, you would be warranted in thinking “that’s it?” The interface is very simple, and you will only see four tabs,  “Home”, “Notes”, “Tasks” and “Pipeline” and two icons, “Calendar” and “Inbox”

Your “Home” tab will give you a little moment of zen with the time and a friendly greeting.

The “Notes” tab will give you a very familiar notes experience, especially if you have ever used Apple’s built-in Notes app. Take notes as you go about the day and then selectively link the note to Salesforce where it can be saved to any record. On top of that, you can also share notes with colleagues within Scratchpad or turn any note into a template where you can customize it over and over again.

In the “Tasks” section, you will find just that - tasks. Daily tasks, overdue tasks and pending tasks not actioned yet. All directly synced from Salesforce. This means that you can confidently close and update tasks in Scratchpad without ever opening Salesforce, knowing that they will be synced with the correct records.

Finally you have the “Pipeline” tab, that is inarguably the most powerful tab in Scratchpad. In Pipeline, you can access pretty much every bit of information held within Salesforce. This includes Opportunities, Accounts, Contacts, Leads and Events. If you have ever used Notion or Airtable, this extremely customizable interface will be very familiar. Choose which fields you want to see; filter, group and highlight records and most importantly save all of these table customizations so your colleagues can see exactly what you see. The real power of Pipeline emerges once you start creating and adding views. Views allow you to create a new table or even a new Kanban board. Then you can save these views for your entire team or select roles in your team.

Imagine a scenario where you have a new sales rep on your team and you want to hone in what they can and can not enter for an opportunity, just to avoid any issues of adding in extraneous information in the wrong area. Simply create a “New Sales Rep” view and pick and choose which fields they can read and write to. In Salesforce, this would be a little convoluted as you would need to modify permissions, roles and even their layout. In Scratchpad, all you need to do is share the view link and then ask them to save the layout in their own Scratchpad. That’s it…you don’t need to get your Salesforce Admin involved at all.

Why we love Scratchpad

Salesforce is a necessity to use Scratchpad, there’s no getting around that. We love that because at the end of the day, we love Salesforce! But we also know that it’s not the most beginner friendly interface for someone who’s bread and butter is sales but may be coming over from Hubspot or another competing CRM. We also know that sometimes sales teams struggle with using Salesforce that it could sidetrack them from their end goal of actually selling. That’s the beauty of Scratchpad, that it allows your team to focus on selling and only present them what they need and none of what they don’t need. This refined, focused approach not only allows new hires to get up and going in a third of the time, but allows your more advanced reps to focus on their clients instead of fiddling with Salesforce.

What we would change

While Scratchpad is revolutionary in its simplicity, it’s not perfect by any means. Relationships on how records are related to each other is not easily accessible. The home tab, while peaceful, seems like a missed opportunity for sales reps to customize and create their own meaningful dashboard. Then finally, we would unleash it from Chrome and have it be a standalone desktop app so team members can use it regardless of their browser choice. So while Scratchpad supplants and betters a lot of aspects of Salesforce, you will still need to creep in there every once in a while to do what you can’t do in Scratchpad.

What’s next for Scratchpad

Scratchpad is making waves and deservedly so, having raised over $50 million in funding since their inception in 2019. It essentially brings the admittedly clunky interface of Salesforce into 2022 and makes it accessible to everyone. We’re excited to try out Scratchpad Studio which brings automation, deeper integration with external apps such as Slack and more meaningful insights into the card views. This innovation on top of their rock solid core, indicates to us that this platform is going to become truly powerful very quickly. We can’t wait to see where it goes from here.

Working with a Custom Salesforce Developer
What should you expect when working with a custom Salesforce developer?

You may be asking this exact question as you’re reading this post. We’re glad you're searching for answers when it comes to working with a custom Salesforce developer. We know you’re most likely curious about what we at Relay can offer your company. Throughout this post, we’ll be answering your questions, and so much more.

Why Salesforce Development is Growing More than Ever Before

Salesforce is a great tool and can be used for almost any industry or use case. You can use it right out of the box, get a license and start entering your data. But if you want to get the most out of Salesforce and use it to its fullest potential, consider custom development so you can set it up for your workflows, use cases, processes, and things you and your business find most important.

What is Custom Salesforce Application Development?

Custom Salesforce application development is quite simply what it seems to be: a customized approach where an app is developed to accomplish specific tasks or processes unique to the goals within your organization. At Relay, we have worked with numerous industries to best leverage their Salesforce environment. Through our combined years of experience, we have learned rapidly what works and what does not work.

Clean Up Your Data Sets

When working with a custom Salesforce developer, you want to make sure your data is tidy and well maintained. If there is one thing that can push a project back is messy, unhinged data. When we create a custom Salesforce solution for your business, we set it up in a way which makes sense to your users, collects key data and doesn’t overwhelm them with un-necessary fields, pages, rules and clicking. We will arrange pages, required fields and validations to collect the required data with the least hassle. Possessing clean data and utilizing that clean data is what will help you stand apart from your competitors.

Truly Custom Platforms

The beauty of customized Salesforce platforms is that it’s catered towards your every need as a company. The integration possibilities are there for the taking, the workflows can be modified to meet your needs, and the processes involved within data analysis can be anywhere from granular to macro-level. We can help integrate with back-end systems, setup a mobile app, or integrate your email. It’s completely up to you how far you want to take everything and what your end goals are within the overall custom Salesforce development experience.

Self-Serviced Applications

One of the advantages of working with a custom developer is being able to fine-tune and create self-service apps for your organization. Self-service apps allow you to blend customer interaction with your organization's features and services; all the while not having to place extra stress on your customer support team. It’s an ideal way to go if your team is small and rely on efficiency.

Salesforce Development Services We Provide Here at Relay

Below is a brief overview of the custom Salesforce development services we provide here at Relay and what you can expect when we work together. With so many features and customizations available all throughout the world of Salesforce, we’ve realized the best way to determine which route to take is to ask you where you want to see your organization thrive. From there, we will often apply the following in some way, shape, or form.

Custom Salesforce Development

Here at Relay, we want a custom Salesforce development to enhance your organization, not drag it down with unnecessary features. We’ve optimized our workflow to improve your workflow. This means we’re able to precisely identify which features and customizations for Salesforce will work best for your organization, and your organization only. A truly customized Salesforce approach is defined as truly customized to your organization, exclusively.

Mobile Development

A key part to any successful Salesforce implementation is mobile development. You staff is mobile, their CRM should be as well. With a mobile-first development strategy whether users are in the office or on the go, they will have access to the info they need, when they need it. We address any and all factors within the development process to further optimize your mobile-first experience for your users. Additionally, nearly all of this can be built upon your existing digital infrastructure in most cases.

Lightning Enterprise Development

Automation, integration, and customization are the main components of Salesforce Lightning Enterprise Development. Lightning helps us bring your Salesforce to the here and now. You users aren’t on Blackberries anymore, don’t hold them back with an old out of date CRM. Through Lightning, we’ve elevated many organizations to new heights by customizing solutions which focus on the user-experience and your experience.

Salesforce Integration & Migration

Do you need to integrate orders from an on-prem system? Do you want to get current pricing from your SAP system? We can integrate those. Just need to see your Gmail conversations in Salesforce? We can help with that too. Integrations big and small, we’ve done them. Are you new to Salesforce and have data here, there, and everywhere? We can help migrate that data from the old databases into Salesforce.

Choosing Relay for Your Custom Salesforce Development

Feel free to contact us using the form below and we’ll be sure to respond to your message as soon as possible. We look forward to hearing from you soon and working to help your company grow, achieve, and succeed!

Let's get in touch!

What industries benefit from Salesforce?
Whether you are in healthcare, automotive or manufacturing; Salesforce has a solution for you. We will run down the exact solution you need based on your industry.

By now most people know "Salesforce" or at the very least they are aware of the San Fransisco-based tech behemoth. But depending on who you ask, the answer to "What is Salesforce?" could be drastically different. Yes, it is the #1 CRM (customer relationship management) platform that enables organizations to work in tandem to serve their customers. But that's really only the tip of Salesforce's capabilities. Salesforce is capable of being the backbone of any industry, no matter how large or small. To serve specific industries, Salesforce has released a variety of "clouds" that can be purchased ad-hoc to be added to the core of Salesforce's CRM platform.

Now the offerings can get a bit confusing and some features overlap, but we are going to run through the benefits of each so you know exactly how each cloud can serve your business' unique needs.


Salesforce's Financial Services Cloud takes the capabilities of Salesforce and reimagines it to address the specific needs of those in the financial industry. Whether you are a financial institution, insurance agency, or wealth management firm; Salesforce Financial Services Cloud gives you a 360-degree holistic view of your client's history. If you're in Investment Banking, you can manage customer pipelines and collaborate with deal teams without ever leaving the platform. If you're in the Insurance industry, you can unite insurers and policyholders like never before. Offering a comprehensive view of each policyholder, the Salesforce Financial Cloud enriches service reps with customer information so they can spend more time assisting instead of searching for information.


If you're in the manufacturing industry, you guessed it, Salesforce has made a cloud custom-tailored to you. Salesforce Manufacturing Cloud allows business to take their antiquated systems and modernize them with AI-powered automation. Salesforce Manufacturing Cloud includes prebuilt objects and processes that allow you to start utilizing it straight out of the box. Since manufacturers often work with external suppliers and dealers, Manufacturing Cloud allows you to easily communicate and collaborate with the vendors straight from the platform. Countless manufacturing companies rely on the Salesforce Manufacturing Cloud to operationalize their business and the platform is only gaining in popularity.

Health Care

Perhaps the biggest beneficiaries of Salesforce's power are those in the healthcare industry. Consistently named the #1 healthcare CRM, Salesforce Health Cloud allows healthcare providers to get a 360-degree view of their entire organization; from the back office to their patient's journey all existing on one platform. Additionally, simplified onboarding and personalized experiences allow providers to connect to their patients in a way they never have previously. Salesforce Health Cloud allows you to connect all your disparate health data sources into one unified system that allows providers to do what they do best, provide help to those in need.


Salesforce's Nonprofit Cloud takes the CRM and reimagines it to cater to the unique demands of nonprofits all over the world. From fundraising to marketing to grantmaking, the Nonprofit Cloud allows nonprofits to innovate on one platform that provides a single source of truth for their entire organization. Organizations on Salesforce's Nonprofit Cloud have seen a 110% increase in Total Online Giving, 400 additional calls served every month, and 62% decrease in client intake time.* This allows for increased flexibility and catering to those who need it most. 


When we say that every industry can benefit from Salesforce, we truly mean every single industry. That includes the massive automotive industry with Salesforce's Automotive Management. A platform that unites both dealers and customers, it allows manufacturers to streamline the journey from OEM to the aftermarket. This allows dealers to offer a simple buying solution as well as track ownership history, vehicle issues, vehicle recalls, and warranties to ensure that’s their customers are always informed. Having one centralized platform allows for increased customer retention and gives OEMs a glimpse into emerging growth opportunities.

That's really the true power of the Salesforce platform. The same platform that allows for streamlined hospital patient intake also allows for automotive manufacturers to keep track of their customer's vehicle warranties. So if you're asking — "Which industries can benefit from Salesforce?" The answer is very clear; all industries.




Why you should attend TrailheaDX 2021

What is TrailheaDX?

Features / Roadmap / Products / Platform News   

TrailheaDX is the admin and developer focused event in the Salesforce ecosystem. It brings together admins, developers, architects, IT leaders, and entrepreneurs. During the event attendees learn from product experts, Salesforce product staff, and other ecosystem partners. They'll cover over 35 product demos, in 25 expert-led rooms.

Why attend TrialheaDX?

Whether you're a Salesforce practitioner or a customer, TrailheaDX is a great event to learn about the technical capabilities and latest improvements to the platform. For customers it can spark ideas around ways in which the Salesforce platform can be used to solve other business problems in your organization. For Salesforce developers and architects, the event is a meeting of the minds and a showcase of the latest patterns we can implement in the solutions we design.

The virtual gathering of Trailblazers will be broadcast on June 23 starting at 8:45 AM PT.

The schedule is now live at TrailheaDX Session Schedule. We hope you can attend!

TrailheaDX Sessions We Are Excited For

Below are some of the sessions our team has identified as promising and worth tuning in!

App Development with Salesforce DX

Wednesday, June 23, 1:00 PM - 1:40 PM EDT

Join us for a discussion about bringing source-driven development, team collaboration, and continuous integration and delivery to your org using the tools provided by Salesforce DX.       

Session Link


Salesforce Certifications: Zero to 40 and Counting!

Wednesday, June 23, 2:00 PM - 2:30 PM EDT

Gaurav Kheterpal has more than 40 Salesforce, Vlocity, and Mulesoft certifications. Join Gaurav to learn tips about certification prep, study schedules, exam strategy, and more.

Session Link

Simplifying Package-Based Development Using DX@Scale

Wednesday, June 23, 4:00 PM - 4:30 PM EDT

Understand how you can leverage mono repository, scratch org pooling, and cli plugins to take your package-based projects to the next level. DX@Scale brings you practices, frameworks and open-source tools to enable development teams of all sizes to work with packages comfortably. This demonstration shows how the development lifecycle can be streamlined from creation to release of a package and all steps in between.

Session Link

Data Protection. Be Sure Your Data is Safe.

Wednesday, June 23, 3:30 PM - 4:00 PM EDT

Odaseva helps large enterprises protect their data everywhere it’s vulnerable and find smart, proactive ways to solve data problems before they happen. Get an under-the-hood look at our Data Protection solution. You’ll learn the most effective ways to protect your data everywhere it’s vulnerable (not just in production) using sandbox anonymization, how to use analytics and APIs to be an outstanding steward of your mission-critical data, and how replication can maximize the value of your backed-up data.

Session Link

What does ChatGPT mean for Salesforce and the future of work?
We take a look at the new website that makes us rethink everything we know about AI.

We’ve been amazed by the power, both good and bad, of technology over the past few years. It’s revolutionized culture and society in such an indelible way that often we struggle to reign it in. But no app has made our collective jaws drop like ChatGPT and led to a lot of strong reactions internally, both positive and negative. Simply put, you can look at this as the start of the AI revolution and when it went from “maybe one day” to “it’s really here.”

What is ChatGPT

ChatGPT is the brainchild of the OpenAI research laboratory founded in 2015 by Elon Musk, Sam Altman, Ilya Sutskever, Greg Brockman, Wojciech Zaremba and John Schulman. You may be familiar with a few of their other products such as DALL-E, which produces images based on user text input and GPT-3, an autoregressive language model that produces human like text based on deep learning. ChatGPT is basically an amalgamation of the two and wraps it in one of the oldest widgets of the internet, the chatbot. ChatGPT can produce human-like text responses, ask followup questions, admit mistakes and challenge incorrect premises. It’s like nothing we’ve ever seen before.

Now to be fair we’ve seen other tools that “promise” results such as this, so naturally many of us were skeptical. But let’s look at how ChatGPT is different:

Years and years of deep research went into the building of ChatGPT so the foundation is strong, but closed lab testing is different than the real world. We all know that. How does it fare? Well let’s show you…

Question 1

Let’s start out simple by asking ChatGPT to tell a story. Since we live and breath Salesforce, we’re going to give it a decidedly different spin. We’ll ask it “Tell us a story about how Salesforce was founded, but make the main character bears.”

So far, so good. We took a nonsensical premise and ChatGPT produced a legible, realistic although absurd story of how Salesforce was created. It got the main characters names correct (Marc Benioff), it got small details correct such as what Salesforce does and most importantly it made the story about bears.

We were impressed, but we’ve seen tools such as produce similar results, although nowhere quite as good or as human-like.

Question 2

We’re going to get a little more specific for the next question and try to push one of the key capabilities of ChatGPT; the ability for that platform to write workable code. In Salesforce, you have to write formulas for buttons and fields all the time. It’s not very difficult, but if you don’t know the syntax it can get a bit confusing. Let’s see how ChatGPT fairs when we ask “Write a formula for a button in Salesforce that updates the opportunity to Closed Won when clicked”

Now at first glance, everything looks believable and more importantly logical. Beyond that, it even generates step-by-step instructions on how to use the code using the natural language. Astounding. But let’s see if these instructions make sense and if the code works.

This is where the facade started to wear away a bit. Now if you were only going to follow these instructions, you would be in a bit of trouble. The step-by-step instructions are missing some key parts such as go to Object Manager first, then to the object. But once you do find the “Buttons, Links and Actions” option and then try to create a new button, you will quickly see that there is no “Formula” dropdown for “Content Source.” Then even if you were going to use “URL” instead of “Formula”, copy over the code, add the new button to your layout (which it doesn’t tell you to do) and then test it, you would be presented with this:

What initially looks very promising, turns out to be quite broken in practice. We were disappointed but we wanted to keep testing.

Question 3

For the last experiment, we want to really challenge the platform and ask ChatGPT to write an Apex script that will save user profiles to a CSV file. This is the exact moment we knew that everything really changed.

Producing a formula is interesting, but a formula can be used by numerous applications. Apex is Salesforce’s proprietary scripting language and we were shocked to see that not only did it produce something logical, but it produced something that would work.

The loop is wrong as you would need to initiate a list first, add the changed records into the list and then update outside of the loop. But for 20 records or so, this script would amazingly work.

The beauty right now of ChatGPT and OpenAI is that it gives you a tremendous jumping off point to start your code, but by no means is it the final code.

Our Take

Internally we have a lot of strong opinions about ChatGPT, OpenAI and the future of AI. There are an abundant amount of moral, ethical and privacy related concerns regarding not only this platform but AI in general. First, AI such as this is full of privacy concerns - where are they sourcing this data? What are the biases or factual inaccuracies in the data sources used to train the models? Has society been contributing to this project without their knowing consent? How is it being used by advertisers to monetize consumers without them knowing?

Second, what is the ethical boundary of people generating AI content without the user knowing? Should the user know that what they are consuming is produced by AI and not a human being?

Beyond that there is the very real chance that misinformation can spread like wildfire if AI picks up on misleading facts. It’s almost a self-feeding system that if misinformation is put in then in turn, misinformation is spouted out. ChatGPT is supposed to filter out biases and untruths but we’ve seen numerous offensive examples of it failing miserably.


There is no doubt about it, ChatGPT is powerful. Both in it’s power to create complex material based on a simple input and what it portends for the future of technology. What does it mean for developers that produce scripts day in and day out? Can ChatGPT and it’s future platforms be used for harm such as creating malware on demand? The amount of questions that storm into your head as you use the platform is staggering, but the biggest question that can’t be answered right now is: what comes next?

Using Story Maps to Build High-Value Software Releases

Solution design and implementation strategy is integral to getting the most out of your Salesforce investment. We’ve used many frameworks and tools for solution design across the years, testing which methods produce the right solutions, at the right time, and the right budget. In recent years we’ve become very fond of tool called the Story Map.

As a client, a story map is one of the first things our Solution Architects will develop with you for your project, and it will provide the basis for planning incremental releases moving forward. What is a story map, why is it better than a traditional flat backlog, and what does the process of creating one look like? Let's dive in and take a look!

Story Map using Sticky Notes on a Whiteboard

What is a story map?

A story map is designed to map a user's journey across the various activities they undertake with your Salesforce software. It identifies all the potential user stories and considers the features that help those users along the way. In its focus on the workflow and complete experience, a story map helps break down releases into high-value groupings of functionality that can immediately benefit your users and business.

Why is story mapping better than just a flat backlog?

You're likely familiar with a flat backlog and its list of discrete features and competing priorities. The problem with a backlog is that it doesn't take into account workflow or dependencies. That is to say, you may end up correctly identifying the highest value story, but fail to see that it depends on a lower level feature. Backlogs simply aren't designed to convey that sort of interconnectedness of business workflows, and, as a result, you're left with a list of isolated features with no larger picture to make sense of it all. It's also easy to lose sight of what it is the application is actually doing when you focus exclusively on individual details.

Flat Backlog Compared to Story Map

Story maps, in contrast, are far more expressive than a flat backlog. They provide context for the various features by helping teams visualize activities and workflows from start to finish. Rather than a ranked to-do list of items, you have a more complete picture of all the various user stories and how they move through the software. A story map allows you to more easily identify the high-value stories and know exactly which features are required in order to put them into service. This, in turn, enables you to build releases that are immediately useful with all of the necessary moving parts.

A story map also makes it easier to communicate with stakeholders at all levels and in all areas of your business. Instead of a cryptic list of stories broken down into sprints, you have a more robust visualization of exactly how your application is being used that everyone can understand. This helps keep teams on the same page, and it also helps to manage expectations and gives discernible value to every release.  

How To Create A Story Map

A story map is particularly well-suited for building out applications in Salesforce, in which incremental releases can offer tremendous value across your business. Whether you have ten employees or a thousand, our Solution Architect will guide your team through the same process of crafting a story map to help you get the most bang from your buck and ensure your solutions are meeting every user's needs.

From start to finish, a story map is all about making sure your releases reflect the real needs of your users. You already know that Salesforce is a powerful business application development platform. Get even more out of it for your business with Relay's Salesforce Architect-as-a-Service offering. Our Solution Architects can help in-house teams and implementation partners deliver more effective product development roadmaps by crafting a robust story map for your business or client. Contact us to learn more today!

or do you still have some questions...
How can I make the most out of Salesforce?
How can I make the most out of Salesforce?
How can I make the most out of Salesforce?
What are Relay’s Services and Capabilities?
Why is Custom Development right for me?
How can I make the most out of Salesforce?