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.
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:
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.
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).
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.
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.
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 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
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.
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!
Below are some of the sessions our team has identified as promising and worth tuning in!
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.
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.
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.
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.
Salesforce is the world's most powerful, and most popular CRM for a reason. Companies all over the world invest huge amounts of capital and resources to make sure that their Salesforce instance is streamlined and functional. But even though your Salesforce has been tailored and fine-tuned to do exactly what you need, using it day to day provides it's own sets of challenges. Sometimes you need an easier way to access an API field name, hop across multiple sandboxes or simply need to find an easier way to add contacts from LinkedIn to your Salesforce org. That's where Google Chrome extensions become so invaluable.
So let's take a look at Relay's top five Chrome extensions to transform your Salesforce workflow.
If you're a power user or Salesforce admin, you are probably well aware of Salesforce Inspector by now. An invaluable tool for developers, Salesforce Inspector adds a metadata layout on top of the standard Salesforce UI. This allows you to quickly view field information directly from a record detail page or even see all data related to a record even if it's not on the page layout.
This gives every Salesforce power user deep insight into how a Salesforce org is composed and structured.
If you find yourself bouncing between different Salesforce orgs all day, then you will want to take a close look at ORGanizer for Salesforce. Not only does it allow you to store all credentials related to all your Salesforce orgs, but it allows you to organize how your orgs are structured within your browser. You can also use the built in Quick Link tool to quickly access your most used Salesforce links or even customize these quick links to open a custom relative link.
Stop juggling logins for multiple Salesforce orgs and install ORGanizer for Salesforce.
While we all know and love Salesforce, we have to admit there is a lot of clicking around to find the page you need. Especially if you need to access admin settings. That's where Salesforce Navigator takes over. Using a custom keyboard shortcut, simply search for any page within Salesforce and Salesforce Navigator will take you right to it.
Saving those three or four clicks over the course of eight plus hours, will definitely add up and you'll wonder how you ever lived without it.
If you're ready to dive further into the world of hotkeys, take a look at Salesforce Hotkeys to absolutely enhance your workflow. Any power user will tell you that a mouse can sometimes be the least efficient way to navigate any application and this includes Salesforce. With over fifty hotkey presets including creating new accounts, logging a call, saving a record or editing a record; you can save minutes or even hours a day navigating Salesforce via your keyboard.
While there is a slight learning curve to learning all the hotkeys, you will be flying through Salesforce like never before.
LinkedIn can be a representative's best friend in the sales process, but enriching your Salesforce data with LinkedIn information can be a bit of a manual affair. That's where Assistlead comes in to bridge the gap. Once on LinkedIn, activate the extension and then you can create new leads and contacts with a single click. Since all the lead information is culled directly from LinkedIn, this ensures your data is precise and more importantly up-to-date.
Make sure your leads and contacts never go stale and definitely take a look at AssistLead.
The Chrome app store is full of new extensions and add-ons that can completely change the way you use Salesforce. These are just a few of our favorites, but let us know which ones you rely on to make the most out of Salesforce.
Since Salesforce's acquisition of Slack back in July for an eye-popping $27.7 billion, we have slowly started to see how the two companies will co-exist. If you're unaware, Slack is a workplace behemoth that has transformed the way remote teams work and communicate and has been a staple for hundreds of thousands of companies since the start of 2020. When Salesforce acquired them it seemed like a natural fit to expand their reach into the new work anywhere world. It's what they have dubbed, the "digital HQ" that allows organizations to deliver customer and employee success from anywhere.
Dreamforce, Salesforce's massive annual event, was held just a few weeks back where of course the focus was on the Salesforce platform. There were however quite a few announcements for how deep the marriage between Slack and Salesforce will become. Let's go over three of the biggest ones.
The first one to highlight is the announcement of "Slack-First Sales" which changes the game for sales teams across the world. The introduction of "digital deal rooms" allows sales teams to collaborate in real-time with files, conversation, and most importantly Salesforce data in one place. No longer do they have to switch between multiple platforms to get the information they need. Without ever leaving Slack, they can access customer data and meeting information in one collaborative space. Add in the capability to set Slack alerts for inactive accounts and a pipeline view to monitor and manage pipeline health, and Slack-First Sales is looking like a boon to Sales teams everywhere.
These capabilities are set to be rolled out in the summer of 2022.
If your team is on Salesforce's Service Cloud, then their Slack-First Service is going to be a huge addition to your ticket management workflow. The introduction of Case Swarming and Incident Swarming allows service teams to automatically create channels or threads related to high-priority cases or tickets. This allows teams from all across your organization to collaborate on an incident directly in Slack without having divergent discussions on other platforms. Expert Finder is a new addition as well where you can bring in just the right people for an incident based on availability, capacity, and skills.
Expert Finder and Case Swarming are expected to be available in the Spring 2022 release while Incident Swarming is expected in the Summer 2022 release.
The introduction of Slack-First Nonprofit will be more of an extension of the Salesforce Nonprofit Cloud, but it's a huge one. Streamlining communication is the big feature where case managers can bring the right external parties and experts into the conversation with ease. Daily Digests and notifications will allow case managers to see their agenda and tasks for the entire day across all their clients, all within Slack. Review and Approval features allow teams to approve documents directly in Slack while syncing those approvals and changes back to Salesforce Nonprofit Cloud.
Slack-First Nonprofit is expected to launch with the Spring 2022 release.
Of course, there were tons of other great Slack-focused features announced at Dreamforce, including Slack-First Marketing, Slack-First Trailhead, and GovSlack. What this shows us and the rest of the world is that the connection between Salesforce and Slack is still in its infancy stages and the two platforms are going to only become more powerful over time.
We like to think that we know what makes a good Salesforce app at Relay. Intuitive design, ease of use, incredibly stable and builds upon the already amazing foundation of Salesforce. We are always are on the lookout for apps that will not only transform our workflows but the workflows of our customers and friends. So we'll routinely be bringing you the best of the best from the Salesforce App Exchange.
Today we'll be highlighting Native Forms for Salesforce. This native Salesforce application, that's currently free as an early adopter, has already transformed the way we collect and intake customer information into our Salesforce environment while preserving our existing workflows and rules.
Think of the scenario -- you need vital customer information to help keep your project moving. You could use any number of third-party apps to create a form, send the form along, wait for the customer to provide input and then manually copy and paste over their answers. It's a time consuming task that slows down the entire process. Instead you could build out a form within Native Forms, link the answer fields to fields within your Salesforce and then have the customer dynamically update the designated fields in Salesforce. The information is updated and you have saved hours without touching a single external tool.
Let's take a look at how it works:
Building your form with Native Forms could not be simpler and in fact, not a single line of code is needed. Using the drag-and-drop editor, you just need to select your Object Type and then away you go. You're able to drag any available object field to your form and customize your form to meet your brand's exact needs using images, background colors and logos.
Perhaps our favorite feature of Native Forms is how it allows your clients and customers to interact with your created forms. There are three ways, "Link", "Action" and "Process."
With "Link", you are able to simply send along the link, but the true power comes along in how the incoming data will affect your Salesforce data. You can dictate whether the receiver of that link is creating a record, updating an existing record, creating a child record or updating an existing record from a lookup. This allows you to have full control over how that information is modifying your existing Salesforce environment.
With "Action", this allows your internal Salesforce users to send the form straight from the record page using the Native Forms lightning component.. For instance if you know that your sales reps will always need to send the same form to clients, this allows you to create the form and then have it easily accessible for your reps to send when needed.
With "Process", you're able to send the form automatically based upon a field change. If you are consistently sending the same intake form to clients once you label a customer as "Closed Won", with "Process" you are able to have that form send automatically when you change the stage to "Closed Won." This puts your forms on autopilot and prevents any lapses during the onboarding process.
We love Native Forms for how simple, yet powerful it is at solving an unnecessarily cumbersome task. It reduces the friction between you and your clients and allows the client to update only the information you want them to update in Salesforce without the back and forth using any third-party tools. It has radically transformed how we keep our client information up-to-date and we think it will do the same for you.
The Salesforce AppExchange is a very important resource for enhancing and customizing the functionality and usability of your Salesforce org. This includes things like simplifying the process of signing documents, streamlining permission management, improving the health of your data, and many other processes.
Think of the AppExchange like the Apple Store but for extensible tools built on the Salesforce platform. Instead of adding apps to your phone to organize your life or tell you how to avoid traffic jams, you add apps to your Salesforce org to gain efficiencies and address business needs within your own environment. Some apps are free; while some are paid per user, others are paid annually based on volume. Regardless of the pricing model, they all allow you to do something that could cost hundreds of thousands of dollars if you had to build it from scratch yourself. There are even apps to allow you to connect your disparate data sources and bring them together in Salesforce.
Native apps are the ones that are built and hosted inside Salesforce using the Lightning Platform. A native app resides within Salesforce and doesn’t need a separate integration with Salesforce. With native apps, all of your app data is also securely stored in Salesforce.
An app built outside of Salesforce and integrating with Salesforce using the Salesforce API is a Non-native App. The app will be hosted outside the Salesforce platform and also data might be stored outside the Salesforce servers.
Monitored, updated, and “managed” by the initial Developer via periodic releases. They might be paid or free app - typically paid because this is a huge source of business for the product company.
Editable code within a base package can be customized but may or may not be updated by the Developer after the initial install. May be paid or free apps, more often free.
The AppExchange is such a great resource, but with all that it has to offer it can often times get a little overwhelming. That is where collections come in handy. Over the years, Salesforce has built up collections for different industries and product types. Whether you are looking for an app for Sales Cloud, Service Cloud or Marketing Cloud, Salesforce has made extremely easy to find exactly the app that will fit your needs.
If you're looking more industry specific, Salesforce has created collections for Real Estate, Government, Manufacturing and much more. This will give you a great starting point if you are looking to find the most popular and most used apps amongst your industry peers.
The Salesforce AppExchange is full of important contributors, solving business challenges in all areas, including sales, marketing, operations, and technical development. No one person or organization has the capability to solve all those challenges themselves so the AppExchange provides the customer the ability to leverage the power of thousands of developers across the ecosystem.
Digital signature solutions are old hat by this point. Upload a PDF, place your signature fields, your date fields and then send it off for final approval. Companies such as Docusign, HelloSign, Adobe Sign and PandaDoc have revolutionized how companies create, send and store digital agreements. But very few companies have taken the time to properly streamline their workflow from CRM to signature delivery. So today, we are going to show you how to integrate two different apps, S-Docs and HelloSign with Salesforce to make your quote-to-signature workflow absolutely bulletproof.
S-Docs is an intuitive, versatile and 100% native document builder that allows your to create document templates right in Salesforce. It is a well-worn AppExchange app that is trusted by thousands of companies throughout the world. Aside from the ease of use, the best part of S-Docs is that you can make two document templates totally free, forever. If your use case is as simple as ours, then that might be all you need.
First, you’ll want to get the quote template that S-Docs provide, also totally free, from here: https://www.sdocs.com/resources/templates/sales/quote/
Import that into S-Docs and then you can start on customizing the quote document to conform to your company’s specific needs. You will want to start on replacing the default fields with specific fields from your Salesforce.
Once you swap out the fields, you will then want to work on the main part of the quote — the line items. For this, we created a related list that will list all of our line items one-by-one.
We selected our Related List — opportunitylineitems, and then chose which columns we wanted displayed in our generated quote. Then to finish it off, we want to display a grand total so the customer sees very clearly the final amount:
You will also need to add two more fields specifically for HelloSign — one that will tell where the signature to go ([sig|req|signer1]) and another to automatically add today’s date ([date|noreq|signer1]):
You will see they are highlighted because we want the font color to match the document color so that the customer does not see the document tags.
Once all that is complete, you’ll want to make sure you finish the template by customizing the header and footer to be personalized for your company. Then hop on over to Document Options and check off the appropriate boxes. This is important for how we want it to work with HelloSign.
The last step that will really streamline the whole project would be a button on the Opportunity that generates a quote. Head on over to Object Manager —> Buttons, Links & Actions and then create a new button called “Generate Quote”. Use these parameters to create your button:
Save and then add that button to your Opportunity layout. That’s it! You can now work on integrating HelloSign with your newly created S-Docs template.
There are a lot of great e-signature solutions on the AppExchange, but for our purposes we are looking at ones that cater specifically to small businesses and ones that don’t require a ton of hand-holding. HelloSign hits every requirement that we had for a signature solution while maintaining a fairly low price point. With plans starting at $29/user/month (minimum of 5 users), it came in significantly under some of their competitors while being extremely easy to use.
First step is to install HelloSign from the AppExchange. Once that is installed, set up a HelloSign account and then let’s get to work.
We already generated our quote that is attached to the Opportunity. We are going to want HelloSign to grab that quote and then prepare it for sending. To do that, we want to make sure it looks for a document with the text “Quote”
We have also enabled a few other settings such as “Skip Prepare” and “Text Tags Enabled” to streamline the workflow as much as possible.
Once the HelloSign template is created, you guessed it, we will need another button on the Opportunity to initiate the HelloSign process. Go to Object Manager —> Opportunity —> Buttons, Links & Actions and then create a new button. Use the following parameters to open HelloSign with the new button:
Save and then add the button to the Opportunity layout. Now, you will have two buttons — “Generate Quote” and “Send for Signature”. Go to any opportunity with products and then initiate the process by clicking “Generate Quote”.
Once the quote has been generated, it will automatically close the window and then click on the button “Send for Signature”. This will initiate the HelloSign process where if done correctly, will automatically add the primary contact and then you just need to click ‘Preview Document” and send it off.
It’s that easy, we have taken a process that many think to be daunting or difficult to implement down to two buttons. Agents don’t need to tinker with templates or manually adjust fields every time they send off a quote for signature. Time saved is money saved and we think both solutions - S-Docs and HelloSign excel in that regard.