Kathy Dunne

Kathy Dunne
Education Practice Lead

Susan Harrison
Developer and Solution Consultant

Education nonprofits have a special set of needs, from attendance tracking to teacher recruitment. You may be thinking about a Salesforce implementation for your education organization, or just making an enhancement to an existing system, and want to be savvier about knowing what to expect.

While one of the key benefits of Salesforce is the ability to achieve a lot of tailored functionality through configuration (or “clicks”), code is sometimes necessary. You might be wondering when you should be investing in custom code and when you should be relying on configuration.

You’re already investing significantly in your solution. It can be very helpful to take a little time to understand more about what these options look like, and where third-party apps fit in, so you know you are making the right choices for your system!

Learning About Your Options

What is Configuration?

Configuration describes modifications that can be accomplished through the Salesforce setup menu. This can be done without knowledge of software development (ie. you will not have to write lines of code, but rather click to change or toggle aspects of your system setup).

What is Custom Code?

Custom code involves programming in Salesforce languages to extend the functionality of your system. You may have heard of Apex, VisualForce, or SOQL/SOSL, and wonder which of those languages your partner developer might use for Salesforce systems.

The truth is, it is not an either/or decision; each tool serves a different purpose and they are often used in combination. Apex code executes custom business logic in the background (such as inserting records under certain conditions), VisualForce is used to create custom user interfaces, and SOQL and SOSL are used to search the system for data, either through processes that are set up to invisibly run, or through external queries that you make.

For example, you could have a VisualForce page with embedded logic to execute a SOQL query based on user inputs. This could take the form of a custom dashboard where a user of your system selects a specific class of students and the page executes your query to show you a dashboard with class data, or it could be another type of custom search page.

What are Third-Party Apps?

In addition to code and clicks, a third category is Salesforce-compatible third-party applications, like you can find on the Salesforce AppExchange. If you can’t achieve what you need with configuration and an app meets your requirements, this can be more cost-effective than custom code. A configuration process and additional license(s) are required to set up each app. Some of these are simple enough that you can configure them yourself or with minimal assistance from the vendor and/or your implementation partner. Some apps are free, some have a one-time fee, and some have recurring costs.

The Big Picture of Using Custom Code

Elements that drive the use of custom code in Salesforce, generally speaking, are user experience and data integrity (including reporting).

User Experience: Your system may be much easier or faster to use if custom code is implemented. For example, instead of enrolling students into a class one by one (with configuration), you could select multiple students from one screen and enroll all of them at once (with custom code).

Data Integrity/Reporting: Sometimes code is employed to maintain a data value across different parts of your system (like syncing data in disconnected places), for accurate reporting. Many organizations also want code rollups, fields where related data can be summarized from across multiple records (for example, total number of course credits).

Robustness: There are also certain thresholds for deciding to use custom code, which can bring you reliability and greater functionality at scale. The need for complex calculations is one example. At a smaller scale, you may be able to get away with using only workflow and formulas. However, as your organization and processes expand and become more complex, relying solely upon configuration to manage your system may become untenable. You will end up adding to your manual processes, removing the efficiency you were seeking with Salesforce in the first place.

Common Processes for Education Organizations: Clicks or Code?

In general, your customization needs will depend on how many students you are serving. If you are just one small group within a university serving a small set of students, manual configuration steps may be workable for you.

At scale, custom code becomes more and more necessary. Once you enter this realm, we advise having a support contract with your implementation partner, and a robust set of internal resources, including members of your team who are Salesforce-savvy and dedicated to supporting the system. Here are some specific processes that education organizations often look to manage in Salesforce:

General Staff Usage

  • Basic Data Tracking: Aspects like field creation and page layouts are largely configuration/clicks.
  • Providing Access to Different Types of Users: With configuration, you can set up the display of different information for different types of users/roles (for example, teachers who want to view different information than administrators), and basic security and permission structures. However, on a larger scale, especially if you have complex and stringent requirements for restricting information, it’s likely that managing access with clicks alone will require impractical amounts of manual intervention. At this point, you will want to consider custom code.
  • Reporting: You can go far with standard reports and dashboards. However, if you are interested in a more custom UI display or need to see data from many different places in the system on one screen, you’ll need custom code or potentially a third-party app (like Conga Composer).

Fundraising

  • Donor Management: This tends to be mostly configuration. If you are building on an existing fundraising app (which we highly recommend rather than building a custom fundraising design from scratch), the standard existing code can work well for you. Some common out-of-the-box fundraising apps include the Nonprofit Starter Pack and NGOConnect.
  • Outreach/Marketing: If you just need to track lists internally (such as mailing lists and campaigns, or who attended events), you can do this natively with Campaigns. If you need online event registration and payment, or mass email at volume, you will want to consider third-party apps, such as ExactTarget and VerticalResponse.

Program Management

  • Application Processes (students, teachers, and more): Some organizations want to track applications and admissions processes in Salesforce from start to finish, which often requires custom code. Applications themselves can often be handled through integration of third-party tools such as FormAssembly. If you want a portal or community for applicants, Salesforce Communities can work well, and organizations often decide to invest in greater customization and styling to provide more of a consumer web experience for their applicants.
  • Enrollment and Attendance Tracking: If you are just tracking enrollment into a program overall or simple attendance, this can be handled via configuration. On the other hand, if you are tracking individual enrollment and attendance in specific courses, configuration might not be able to accommodate your needs. Here, code can provide a more automated, user-friendly experience. You may consider it if you need to keep track of daily attendance, enroll multiple students into a class from one screen, calculate an overall student enrollment status based on other records, and so on.
  • Student Data Tracking: Basic configuration can provide tracking for standardized test scores, current GPA, etc. However, if you are interested in tracking course-by-course grades, or providing users custom screens to input all the data in one place, code can improve the experience. You may wish to customize an import process to allow you to upload data from a spreadsheet into Salesforce.
  • Persistence Tracking: Different organizations define persistence differently, but typically this is a complex calculation that requires custom code.

The Future of Clicks: Lightning, Recent Releases

The “rules” for what can be custom versus clicks on Salesforce are always changing. The general structure we’ve described will continue to be valid, but new possibilities for configuration will continue to grow. Some areas to watch:

  • Lightning (see our Dreamforce post)
    • Process Builder: Currently in Private Beta, Process Builder, announced at Dreamforce ‘14, has the potential to transform the way that nonprofits automate simple processes, enabling them to auto-send an email, post to Chatter, or update fields on a related record with more power and flexibility, and without writing a single line of Apex code.
  • Winter ‘15 Release (see our blog post on Winter ‘15 for more)
    • Flow Triggers: In a process that once required code, new flow triggers allow you to automate record creation with only configuration. You can also submit records automatically for approval to designated parties based on certain criteria. The caveat with flows is they are still fairly technical, and require more than just one click to set something up. You can also have a partner help you configure, and it will be less expensive and time-consuming because it doesn’t require code.
    • Login Flows: With only configuration, you can now have users be taken through a flow at login. You can, for example, take first-time users on a different path than returning users.
    • Tailoring Your Community with Configuration: With the latest update, Salesforce Communities has added many ways to design the look of your Community with configuration, such as templates, login/logout pages and Community Designer (in Beta).

These new developments offer additional opportunities to use clicks to configure your system, and should be considered among your options.

Your Salesforce solution will be most successful if you take your future needs into account. If you expect to scale, investing in custom code (with a possible mixture of third-party apps) to support this growth may be a good choice for you. No matter what, understanding your range of options will help ensure that you set your organization up for the long term.

Image by frankjuarez, used under a CC license.