Automation, Flow, Process

Clone Custom Records Based On Certain Conditions on Salesforce

It all started with a Twitter post…. Melissa Hill Dees asked on Twitter whether she can clone records declaratively based on certain conditions on Salesforce . The original Twitter post is here:

I gladly accepted the challenge and created an example on a Salesforce Developer instance.

Here we go:

We have a custom object for Projects, which has a lookup relationship to both the Account and the Contact. There are a many custom fields on the Project object, and they can be seen here:

Here is an example record:

The idea is that whenever a project is created or updated with a due date in 2020 and a budget of $1 million and above, we will clone this project record, update the due date by adding 90 days to it, and assign 1 to the Tier field. We will also check a checkbox called Clone so that our clone process will stop cloning records by checking this field. In other words clones will not be cloned further. Please note that I also modified the Name and the Description of the Clone Project by appending one or two words at the end.

Here are our process builder screenshots:

Our process is checking the conditions described above and passing the Records ID for the matching original Project record to a Flow. Here are our Autolaunched Flow screenshots:

To test the functionality, I will go over to the list view and update the budget of the existing record to $1 million. A clone record will be immediately created as follows:

If you have any questions please comment below.

Andy Utkan


BEAM: Salesforce Appointment Scheduling Solution

BEAM ( is a human services non-profit organization that provides emergency assistance and a path to economic stability for its clients. BEAM envisions a future in which no Beaches resident goes hungry or is haunted by the fear of eviction. BEAM supports its clients by providing pantry services, rent, mortgage, and utility payment assistance, nutrition consultancy, SNAP application assistance, single parent support and more.
For Phase 1 of Salesforce implementation, BEAM had several requirements that demanded enhanced appointment scheduling functionality that is not provided as standard functionality on Salesforce.

High-Level Requirements were as follows:

  • Pantry: BEAM will book appointments for two pantry locations with their clients who will be recorded as contacts on Salesforce. The appointments are not scheduled with a person on Salesforce, they are booked for the resource which is a pantry in this case.
  • Service Availability: One pantry can accept only one client at a time. And each pantry has a different availability schedule. Pantry visits are 20 min. long, without buffer time before or after. Available times are different for different weekdays; one of the BEAM locations works every other Saturday.
  • Users & Visibility: Three front desk volunteers/employees take calls and book appointments for the two pantries. They all need to see the availability for both pantry locations and all bookings.
  • UI: The system should show buttons for available time slots to book instead of having the user enter start and end time.
  • List views and reports: BEAM uses a note/comment field in appointments to pass certain messages to the pantry staff when printing their daily schedule.
  • Other Services: Nutrition assistance, financial support,  single parent or senior program appointments will be booked by the Salesforce users who are meeting with the clients.
  • Follow-up: The system needs to create appointment records on Salesforce so that surveys can be sent out and cases can be created to follow up with the clients.
  • Reporting: BEAM needs to track the result of appointments: Attended, no show, rescheduled, etc. Operations team needs to report on the outcome of the meetings, preferably within Salesforce. Reports will need to be filtered using fields on accounts and contacts: e.g. appointments with clients from a certain ZIP code.
  • Nice to have: The calendar should be viewable by people who are not Salesforce users.

BRDPro evaluated the following appointment scheduling solutions. The project team eliminated some of the more expensive solutions before the evaluation phase:

  • Timetrade: This provider does not work with small organizations. They have a minimum user requirement.
  • Appointiv: Appointiv is an AppExchange solution. It is a managed package you install in your instance. The advantage is that all data is in Salesforce. Appointiv satisfies most of the requirements. However, they do not support a 20-minute-long meeting.
  • DayBack: DayBack is an AppExchange solution. They describe themselves as: “Schedule Balancing & Calendar Sharing for Process Innovation”. DayBack does not meet the UI button requirement or the flexible availability schedule requirement.
  • Timetap: Timetap is a SaaS solution that resides outside Salesforce, however it provides Salesforce syncing capabilities. Timetap satisfied all the requirements above with the exception of the result of appointments and their reporting within Salesforce. Timetap allows for the user to record the outcome of appointments, but this field does not sync back to Salesforce.

Timetap is a highly configurable, powerful solution. Their support team is very responsive. Timetap has broad help and training content available, both in written and video format.

In conclusion, BRDPro and BEAM selected Timetap as the appointment scheduling solution for clients. Both Salesforce and Timetap have been live since April 2019.

Please see the next blog post for the Volunteer Management implementation.

Non-profit, Service Cloud

BEAM: Where Salesforce NPSP Meets Service Cloud

BEAM, a.k.a. The Beaches Emergency Assistance Ministry, is a human services non-profit organization that provides emergency assistance and a path to economic stability for its clients.

Founded in 1985 by representatives of local churches who received many personal appeals for emergency financial assistance, BEAM was created to provide help in a coordinated way. Today the community support for BEAM has extended well beyond the faith community to include individuals, businesses, local organizations, and local foundations. BEAM envisions a future in which no Beaches resident goes hungry or is haunted by the fear of eviction.

Additional information on BEAM can be found on their website at

BEAM supports its clients by providing pantry services, rent, mortgage, and utility payment assistance, nutrition consultancy, SNAP application assistance, single parent support and more.

While offering such diverse services, BEAM was burdened with utilizing multiple systems. Unlike many other nonprofits, their biggest pain point was related to their service scope. Their clients registered with them and visited their pantry locations regularly to pick up free food items.

BEAM was using a SaaS system to register their clients and log their service records. They used another SaaS appointment management system to schedule visits to their pantry points. These systems didn’t talk to each other, therefore they had to enter some of the same data twice.

BEAM utilized yet another system to manage their volunteers and to track their hours. The system did not support remote access for the volunteers. BEAM wanted to give their volunteers remote access to their schedule information.

And finally, they used another SaaS system to manage the donor and fundraising development side. This was an area that ran fairly well. There are synergies that can be realized if fundraising can be managed on the same platform, however, the transition of this area to the new system was a low priority.

The management team changed 1.5 years ago, and they have experienced some staff attrition, which caused a loss in systems training and experience in their team. Many users of the systems were retirees, and they required a simple user interface.

BEAM had extreme difficulties in reporting their activities. Many reports had to be created manually.

As a result of BRDPro’s Needs Analysis, it was clear that these requirements could be addressed very well by NPSP and Service Cloud functionality of Salesforce. The project team decided on a three-phased approach.

  • Phase 1: Transfer client management to Salesforce and decommission the non-profit system and the appointment scheduling system that don’t talk to each other. The challenge here will be more related to exporting the data from the old system and cleaning it up.
  • Phase 2: Transfer Volunteer management to Salesforce.
  • Phase 3: Transfer donor management and fundraising to Salesforce.

BEAM Phase 1 implementation details will be described in the next post.


How Do You Sell to SMB?

When you are selling products and services, you are willing to pay for the cost of your sales activity with a fraction of the gross margin you are making from the sale.

It is important to keep in mind that smaller businesses need smaller solutions and lower invoices than bigger enterprises. Let’s say you are selling a software product over the phone for $50. The gross margin to be made is $25. Even if the sales transaction costs $20, you are turning a $5 profit.

If you are selling a subscription service, such as access to a cloud based SaaS platform, then you should calculate a lifetime-value for the acquired customer, since it would make sense to assume that most of customers will stay on, and there would not be another sales acquisition cost at the time of renewal.

Let’s say 80% stay the second year, 20% the third year and none beyond three years. The expected revenue from one customer becomes $100 (assuming the interest rate is zero just to make this calculation simple). In this case, you can expect to bring in $50 gross margin and increase your sales acquisition cost to $45. Don’t forget; you will have to fund this acquisition until future revenues come in. There are very important cash flow implications and interest calculations involved that are beyond the scope of this simple post.

Since in most markets, closing a sale in person will cost you more than $45, you will have to use alternative channels of communication to close the sale from a distance; such as phone, e-mail, web, chat and etc.

So how would you execute your omni-channel sales activity:

1-Collect a list of companies, their contact phone numbers and mail addresses. Please note that this is public information in many markets, you just need to find where to get it. Check local laws and regulations and also keep in mind that you might have to collect opt-in or opt-out permissions.

2-Filter and segment the list with the information you have. Exclude the ones you should not be targeting based on your strategy.

3-Prepare a questionnaire of relevant information that will help you in the future to profile the companies and segment based on factors such as size, type and industry. You will use this information for efficient targeting of products and services.

4-Contact them one by one; go through your questionnaire and generate leads on the spot when possible. If there are no opportunities, enter the information into a database.

5-Go back to the same list every few months (TBD based on your sales strategy) on varying channels (phone, e-mail and etc.) and assess needs, position products and services, and generate leads.

Remember to track and follow up on your leads on a capable CRM and sales automation system, since you don’t bring in any revenue until you close the sale. Nowadays, SaaS platforms such as are easy to set up, and provide great flexibility according to your needs.