Blog Case Study

Program Management Case Study: Sunnyvale Community Services

Sunnyvale Community Services (SCS) provides food and financial assistance to low-income families and seniors in the Sunnyvale, CA area, serving over 3,500 families and more than 8,300 unique individuals annually.  In addition to assistance programs, SCS also provides case management services and engages over 2,500 volunteers every year in the delivery of their services.



SCS was working with an inflexible and heavily customized Salesforce system (built approximately six years earlier) that no longer supported the way they worked. Staff were unable to retrieve data easily and inefficient workflows wasted their time. As SCS’ programs evolved and new ones were added, the organization found it more and more difficult to effectively support them.

The old system was overly complex: it was built using custom objects to represent SCS clients (families and individuals) and relied on custom Visualforce pages to capture and display information. Making changes often required the help of consultants and developers, an expensive and time-consuming undertaking. The system also lacked any technical documentation.

SCS staff tried to make do with creative workarounds. But these quick fixes were not real solutions. For instance, staff put client program enrollment details into a note field (the only available place to put this information for new programs). This made the information difficult to find and report on later.

Answering basic questions such as “How many clients were served by this program?” and “What are the overall client demographics for all food programs?” would often be a difficult undertaking that took days to gather data for. The system lacked basic tracking such as which clients were currently assigned to a particular case manager.


A New Architecture For A Solid Foundation

When crafting a solution to these challenges, Bigger Boat’s first objective was to implement a new Salesforce architecture to serve as SCS’ program foundation.  

The system rebuild achieved the following goals:

Better support for how Sunnyvale Community Services currently works and flexibility for program evolution. Much of how SCS once managed programs and service distributions was “baked” into the underlying object model. We restructured how programs and service distributions are represented in Salesforce. Now it not only better reflects how SCS currently works but also provides the flexibility to evolve their processes without the need for major system modifications.  

A more maintainable system by moving to Lightning, minimizing custom objects, and cutting down on Visualforce pages. We utilized standard objects and functionality where possible, supplemented by the judicious use of custom objects, custom Lightning components, and Apex code. Specifically, we:

  • Replaced the custom Family and Family Member objects with the standard Account (Household) and Contact objects.
  • Replaced the custom Visualforce pages used for viewing and editing Family and Family Member data with Lightning page layouts. This enabled the in-house Salesforce administrator to make changes much more easily using setup. This also permitted SCS to leverage the power of the Nonprofit Success Pack (more on that below).
  • Replaced a Visualforce-based automated card swipe check-in feature with a custom Lightning component (more below) that is more closely aligned with how SCS currently works.

Better and easier reporting. An updated object model (paired with well-defined lookups, picklists, and rollups) provides faster access to key information in SCS’ reports, dashboards, and page layouts. Program-level information on service distributions for the last quarter is now a report away rather than a several-day manual collection process. Dashboards give SCS improved visibility into their data, such as the number of eligible clients who haven’t picked up a backpack. A staff member no longer needs to dig around to determine which households include participants in an individual level program: it is now displayed right on the client page layout.

Standard process for adding a program. Adding new programs to the system should, wherever possible, require the addition of new data rather than new objects, fields, or updates to code. In the old system, adding a new food program might involve updating the Apex code that enforced business rules. In the new system, adding a new program only requires indicating—via checkbox and picklist options—what specific business rules should be enforced for the new program. The new system also saves staff members time by auto-enrolling clients in any associated programs after they have been enrolled in a primary one.

Use of the Nonprofit Success Pack and Volunteers for Salesforce. The Nonprofit Success Pack is full of useful features that nonprofits can use to improve workflow, efficiency, and reporting. We focused on implementing and extending the built-in household account management and affiliations functionality to match the specific ways that SCS works with clients. For a more detailed look into this part of the project, see our previous blog post Advanced NPSP Household Management For Human Services.

Below we highlight a few features of the rebuilt system.


Implementation Details

Tracking Food Distributions via Integrated Barcode Scanner

SCS runs a number of programs that allow clients to check in by scanning the magnetic strip on a client swipe card. This allows programs like food distribution to run efficiently and enables staff to quickly confirm client eligibility.

The most common use for this is food distribution. On food distribution days, a quick scan of the client’s swipe card records the food distribution on their Salesforce record.

The result of a successful card scan looks like this:

Successful card swipe


A number of programs are limited to once-a-week or once-a-month distributions. If a client arrives and has already received their distribution for the time period, the staff person is immediately alerted when the swipe card is scanned:

Unsuccessful card swipe


To make it easy for SCS to add or evolve programs, programs that are available for swipe card check-in processing are indicated by the “Allow Check-In” checkbox field on the Program object. The system also provides an easy way to print new or replacement client swipe cards:

Printable client swipe card created from Salesforce


360-degree View of Family and Clients

Given the broad range of programs that Sunnyvale Community Services provides, there’s a lot of information tracked about people and families. This includes complicated household relationships, current and historical program enrollment, food distribution, financial distribution, case notes/narratives, and demographic history (income, income level, housing).

Staff members can now quickly and easily get to the information they need with Salesforce Lightning record pages. These pages all use the declarative features (or “clicks”) of Salesforce, making it easy for the organization to change them as their needs or programs change.

Let’s review some of the information available. The highlight panel at the top provides the most critical information, including the primary household contact, the primary caseworker, and the number of household members active in SCS programs.

Family summary showing primary contact, caseworker, and active family members.


The organization has the concept of a “red flag” for clients who have been disruptive or presented challenges that staff should be aware of. This red flag shows up prominently in the highlight panel when it exists. These red flags are also displayed when swipe cards are scanned:

 Client with Red Flag on their record


Easily accessible on that same page are program enrollments, recent distributions, household details, income, and housing details.

Program enrollments for all household members



Finally, the same page provides single-click access to narratives and case notes on a client’s involvement with the organization:

(Click image for larger view)


School Backpack Distribution via Volunteers for Salesforce

Sunnyvale Community Services also distributes backpacks to clients’ children. This is a once-a-year activity where SCS gives out over 1500 backpacks. To handle a large number of people coming in for backpacks, they schedule clients to come in during specific time windows.

Dashboard of annual backpack distribution


Rather than build custom functionality from scratch to do this, we leveraged the capabilities of Volunteers for Salesforce (VfS). SCS allows up to 35 children to come in during preset 15-minute time periods. Staff members work with clients to schedule backpack pickup times during particular time slots. This maps well to Volunteers for Salesforce’s shift time slots and the number of “volunteers”/clients allowed per “shift.”

As with food distribution, when a client arrives to pick up a backpack, SCS staff scans the client’s swipe card during backpack pickup. This swipe creates a distribution record that a backpack was provided to the client. To track those who have picked up their backpack, the system automatically closes out the client appointment (volunteer hours) by changing the status from  Confirmed to Completed. This allows the staff to run a report of those who did not show up for their appointment and follow up.

This same model is used to schedule client visits to Sunnyvale’s Holiday Center:

One-day view of the Holiday Center schedule – shows open/full-time slots and, on hover, how many openings are still left.



Salesforce plus the Nonprofit Success Pack and Volunteers for Salesforce provide a great baseline of out-of-the-box functionality that can be used by nonprofits—including human services organizations—to meet their core CRM needs. This functionality can be extended with custom objects for tracking programs, distributions, and more.

In this case, we addressed client appointment scheduling requirements by repurposing Volunteers for Salesforce. Bigger Boat handled the complex household management requirements by building on core Nonprofit Success Pack householding. Using Salesforce custom objects, Flow, Process Builder, a Lightning component, and the minimum amount of Apex code, we modernized SCS’ program management.