How the Salesforce Benefit corp benefits non-profits, technically
Overview
- Non-profit integral to Salesforce
- Power of Us Only for Registered Non-Profits
- Install in DE Org
- Model of Relationships among Data Objects
- Configuration
- Usage
- Page Layouts
- Open-Source Repositories
- Setup for DX:
- Continuous Integration
- Cumulus Continuous Integration
- Testing with Cinnamon
- Data Load
- metaci
- Social
- References
- Resources
- More about Salesforce
This article are my notes about the NPSP (Non-Profit Success Pack) from the Salesforce Foundation and friends. When done, it will be a hands-on succinct introduction to how non-profits make use of NPSP.
Non-profit integral to Salesforce
Salesforce has a generous industry-leading approach to supporting non-profits. Their 1/1/1 was institued at the founding of the company in 1998, not as an after-thought.
Salesforce provides free to non-profits its first 10 seat licenses, then 24% of the commercial licensing rates for those with:
- IRS Determination Letter of 501(c)(3) tax exempt status,
- IPEDS ID from the National Center for Education Statistics (NCES),
- Acceptable evidence of 501(c)(4) status, such as copy of the Form 990
-
Salesforce.org is a separate employer entitity than Salesforce, Inc. (Employees of salesforce.org don’t get CRM stock.)
http://www.salesforce.org/nonprofit
Three clouds (apps):
- Nonprofit Cloud
- Education Cloud
- Philanthropy Cloud
“CRM” in the nonprofit world means “Constituent Relationship Management”.
-
This demo video shows some great benefits from adoption:
The Salesforce Foundation launched in 2014 “Salesforce for Nonprofits” [8:37]:
-
Nurtured creation of NPSP (Non-Profit Success Pack) which adds to core Salesforce orgs specifically for non-profits. It’s described at
http://www.salesforce.org/nonprofit/nonprofit-success-pack
- Non-profit
- HEDAP = HEDA (Higher-Ed Data Architecture) Package
VIDEO: roundCorner’s NGO-Connect further customizes NPSP.
Early versions were called “Nonprofit Starter Pack”.
Power of Us Only for Registered Non-Profits
-
If you are a non-profit, register at http://www.salesforce.org/npsp-trial/
-
Salesforce.org runs a Power of Us Hub online community for nonprofit and higher ed Salesforce users.
http://www.salesforce.org/power-of-us
MEH: It’s only for those who have been recognized by Salesforce as belonging to a Non-profit organization.
-
So that your browser doesn’t pick up irrelevant history, open a new Private Tab on your browser to URL:
-
Use a Salesforce account that is NOT associated with a Developer Edition, or you’ll get this error:
-
There is a SMS verification step for first time access.
-
If you can get in, then you can post feedback at: https://powerofus.force.com/_ui/core/chatter/groups/GroupProfilePage?g=0F980000000CjRe
-
Attend https://powerofus.force.com/articles/Customer_Service/Salesforce-com-Foundation-Weekly-Office-Hours 1st & 4th Friday in each month at 9:00AM Pacific / 11:00AM Central / noon Eastern
Install in DE Org
If you don’t have a “real” non-profit org:
-
Go to the latest version:
https://mrbelvedere.salesforcefoundation.org/mpinstaller/npsp
- Click “Log In” at the bottom of the page to select “Production or Developer Edition org”.
- Provide your DE credentials.
-
Click “Allow” for the “Examining your org” to flash by before the “Installation Bundles and Packages” page appears.
The “hot dog” icons say “Metadata from Github” and “Metadata from Zip”.
- Click “Install”.
-
Look for emails from “support@salesforce.com” for each of the 9 items listed above, such as “Package Contacts & Organizations Install Successful”.
“Some components, such as custom objects, custom report types, and workflow rules, must be activated using the package deploy process, before they are available to your organization.”
“Your matching rule NPSP Contact Personal Email Match for identifying duplicate records has been activated and is now ready to use.
- Determine whether Aloha has been enabled via the Subscriber Overview page that comes with the LMA application.
Model of Relationships among Data Objects
Internally, data values are stored within “objects” that hold data, like a tab within a spreadsheet. Within an object, each row is a record and each (vertical) column is a field. These are referred collectively as “object models”, which forms the basis for how data is imported. These are also referred to as (aka): data model, account model, household account model, object model.
Click the Entity Relationship Diagram of objects above to download a zoomable PDF.
Standard Salesforce (before NPSP) are in blue. NPSP modifies Salesforce databases and programming code to use different words on screen layouts, reports, and dashboards:
- Contacts => Constituents and Donors in NPSP
- Accounts (companies) => Households in NPSP
- Opportunities (products) => Donations in NPSP (revenue-generating events)
At the upper-left, the fork symbol at the end of blue lines to leads illustrate that many leads can lookup details about the same campaign. A particular level can be assigned to many households (accounts).
View objects in Setup > Object Manager > select an object > Fields & Relationships.
Use the Schema Builder drag and drop Salesforce tool for creating a custom objects.
Configuration
-
On a Chrome browser, open a New Ingonito window and login.
PROTIP: Press command+` (back-tick) to switch among browser windows.
https://powerofus.force.com/articles/Resource/NPSP-Post-Install-Checklist outlines these steps:
-
Click your profile picture to switch to Classic (Visualforce) UX.
-
Create Opportunity Sales Processes, Record Types, and Stages. For example, if your organization handles memberships, create a Membership Record Type and appropriate stages for a Membership opportunity’s process.
-
Assign New Record Types to Profiles
-
Edit Page Layouts
-
Assign Page Layouts
-
Override Lead Conversion Button
-
Run Health Check: Select the NPSP Settings tab, System Tools, click “Run Health Check”.
“The Opportunity stage Pledged does not exist or is not active. Add this Opportunity Stage value in Salesforce Setup.
-
To confirm that everything appears as it should, create a test contact, account/household, and opportunity.
Usage
https://trailhead.salesforce.com/trails/nonprofit_fundraising
Page Layouts
https://powerofus.force.com/articles/Resource/NPSP3-Page-Layouts
- Donation
- Grant
- In-Kind Gifts
- Matching Gifts
- Memberships
Legacy Data Model
Pages use a “Household Account Model”. Some of the code references a legacy data model (whether that is One-to-One Individual or Bucket Individual).
Reports usage
https://s3-us-west-2.amazonaws.com/sfdo-docs/npsp_reports.pdf contains the NPSP Reports Workbook June 28, 2017.
-
Sign in to see the default “home” page for Salesforce “Nonprofit Starter Pack” app, users have standard objects “Accounts”, “Contacts”, and “Reports”.
PROTIP: Just as Non-profit accounting are different than for-profit enterprises, non-profits have a whole different set of objects, such as:
- Donations and Recurring Donations [package]
- Campaigns
-
Click “Reports” among the top tabs.
Each dashboard illustrates data in one or more reports.
VIDEO: Salesforce Reporting 101 for Nonprofits May 10, 2018
Salesforce Reporting 201 for NonprofitsPROTIP: Reports in Salesforce are organized within folders. The “Unfiled Public Reports” folder is at the top because it’s a “dumping ground” for reports that are newly created.
Reports specific to nonprofits:
- Households (Contacts and Organizations) [package]
- Donations, which can consist of:
- Soft Credits
- Matching Gifts/Grants
- In-Kind Gifts
- Volunteers
Custom reports can include additional non-profit objects:
- Constituents
- Affliations
Processes for nonprofits include fundraising, volunteer and grant management, advocacy, peer-to-peer campaigns.
Nevertheless, non-profits have similar needs for IT support as any organization:
- Data cleansing, de-duplication, and maintenance
- Data migration, mapping, and field creation
-
Email marketing
- Custom development on the Force.com platform
- Training on Salesforce CRM
-
http://www.salesforce.org/nonprofit/nonprofit-success-pack/watch-nonprofit-success-pack-demo/ Register to watch the unlisted demo video [3:32] Uploaded on Jan 13, 2017 shows screens to cover the full lifecycle of donors and donations.
Open-Source Repositories
id | https://github.com/ SalesforceFoundation/... | Docs | # Builds |
---|---|---|---|
npe5 | .../Affiliations | 122 | |
- | .../CampaignTools | 347 | |
- | .../Contacts_and_Organizations | 268 | |
- | .../Cumulus | 20,362 | |
- | .../CumulusCI-Test | 273 | |
- | .../HEDAP | 2,952 | |
np01/ np02 | .../Households | 274 | |
npe03 | .../Recurring_Donations | 238 | |
npe4 | .../Relationships | 172 | |
- | .../Volunteers-for-Salesforce | 810 |
Cumulus
Cumulus is the core NPSP repository. It has hundreds of open Issues and dozens of open Pull Requests.
-
https://cumulusci.readthedocs.io/en/latest/ (stored within https://github.com/SFDO-Tooling/CumulusCI/blob/master/docs/why_cumulusci.rst)
-
Within the Cumulus wiki is information about each (Apex) class at http://developer.salesforce.org/Cumulus/ApexDocumentation/index.html - the Nonprofit Success Pack Codebase Documentation. Abbreviations, alphabetically:
- ACCT = Account
- ADDR = Address
- AFFL = Affiliations
- ALLO = Allocations
- BDE = Batch Data Entry
- BDI = Batch Data Import
- CON = Contact (Merge)
- CONV = Conversion
- CTRL = Control
- EP = Engagement Plans
- ERR = Error
- HH = Households
- LD = Lead (conversion)
- LVL = Level
- MTCH = Matching (gifts)
- OPP = Opportunity
- PMT = Payment
- PSC = Payment Soft Credits
- RLLP = Rollup
- RD = Recurring Donations
- RP =
- REL = Relationships
- SDRs = Sales Relationship Representatives
- STG = Settings
- TDDM = Table-Driven Trigger Management
- USER = Users
- UTIL = Utility
-
http://developer.salesforce.org/Cumulus/ApexDocumentation/
“Dev” is the only permanent branch.
Donations
In Opportunity objects, many non-profits use General Accounting Units (GAUs) to segregate donated funds for specific purposes or special restrictions (such as a scholarship GAU specifically for scholarships).
TDTM
https://powerofus.force.com/articles/Resource/NPSP-Apex-Class-Descriptions describes each Table-Driven Trigger Management class in the code at: https://github.com/SalesforceFoundation/Cumulus/tree/rel/3.110/src/classes
Setup for DX:
- In the orgs folder, a json file defines features enabled in each environment (feature, dev, beta, release)
- sfdx-project.json points to the src folder.
- In folder push, txt files define scratch org ids
- File cumulusci.yml define tasks, flows, and json for each scratch org defined in the orgs folder
Column “#Builds” is from https://mrbelvedereci.herokuapp.com/repos which presents the status of builds on the build server on Heroku
Log in by authorizing mrbelvedereci-sfdo (third-party OAuth application)
Subject “[mrbelvedereci] Please Confirm Your E-mail Address” Click “Confirm” in the web page that pops up.
There is also https://github.com/SFDO-Tooling used by Salesforce.org’s Products team for managing devOps and release of Salesforce projects. https://metadeploy-staging.herokuapp.com/products
Much of the code is written in Python (file .py), thus the use of the Python-based Robot Framework RF is written to be a “keyword-driven”, using the human-readable “Gherkin” syntax for specifying tests.
SCREENCAST: installing cumulus CI 2.0
Continuous Integration
-
View the Continuous Integration (CI) and Project Cumulus Jan 31, 2014 [1:00:49] by Jason Lantz
-
CucumulusCI at https://github.com/SalesforceFoundation/CumulusCI is a Python framework for building portable automation for Salesforce projects
https://github.com/SalesforceFoundation/Cumulus/wiki/Cumulus-CI-Build-Instructions Jenkins build processes used in the Cumulus release process as well as instructions for solving common build issues.
-
https://cumulusci.readthedocs.io/en/latest/ CumulusCI’s documentation!
Cumulus Continuous Integration
-
The “Mr. Belvedere” GitHub repository at
https://github.com/SalesforceFoundation/mrbelvedere
Lightweight, Salesforce specific CI app run on Heroku to build Github repositories configured for CumulusCI
https://github.com/SalesforceFoundation/MetaCI
https://github.com/SalesforceFoundation/CumulusCI CumulusCI is a Python framework for building portable automation for Salesforce projects.
https://github.com/SalesforceFoundation/CumulusCI-Test CumulusCI-Test is a dummy project used to test CumulusCI - CumulusCI will run this project through the whole CI flow to verify everything works
Python framework for building portable automation for Salesforce projects
Jenkins, Ant, GitHub, and internal packages
-
https://github.com/SalesforceFoundation/Cumulus/wiki
Ant is used (instead of Maven) because there is a Force.com Ant Migration tool. Ant is extenable with macros and targets. It runs build.xml properties file in GitHub.
-
The list of class names provides an indication of the functional scope of the effort.
Testing with Cinnamon
cinnemon are browser-based tests of Apex classes written in Gherkin for Cucumber run by Selenium invoked by Jenkins via ccli on SauceLabs VMs. It tests JavaScript drop-down lists which Apex tests don’t cover.
-
https://forcedotcom.github.io/cinnamon/
https://github.com/forcedotcom/cinnamon
Volunteers for Salesforce (V4S)
V4S was mainly written by David Habib of DJH Consulting which also created the free Auctions app.
Trailhead module: Volunteers for Salesforce (V4S) Basics describes how V4S handles common volunteer management processes:
- Managing volunteer jobs that an organization needs filled
- Tracking skills volunteers have and matching volunteers to jobs by skills and availability
- Tracking hours against specific volunteer shifts
- Allowing volunteers to sign up for shifts via the website
- Displaying a calendar of jobs and shifts on an organization’s website
- Sending email reminders for upcoming shifts to confirmed volunteers
-
Sending Thank You emails to volunteers that sign up for a shift from the website
- Allowing volunteers to report the hours they’ve worked
- Tracking the hours a volunteer works
- Tracking the volunteer hours and jobs for a specific event
Tabs included in V4S include: Volunteers Help, Volunteers Wizard (to create new campaigns, jobs, and shifts), Volunteer Jobs, Shift Calendar, Calendar view, Find Volunteers.
Looking into https://github.com/SalesforceFoundation/Volunteers-for-Salesforce
- https://github.com/SalesforceFoundation/Volunteers-for-Salesforce/blob/master/cumulusci.yml
Within folder v4sStaticResources, momentjs.com is a popular free library to Parse, validate, manipulate, and display dates and times in JavaScript.
With src folder processed using SOAP requests:
- package.xml defines member names within types: ApexClass, ApexComponent, ApexPage, ApexTrigger, CustomField, CustomLabel, etc.
- Groundwire_Volunteers.app defines tabs defined by …tab files within the tabs folder.
- Each tab file specifies the page layout and associated label and motif.
- About_Volunteers
- Volunteers_Wizard
- Volunteer_Job__c
- Shift_Calendar
- Find_Volunteers
- standard-Lead
- standard-Contact
- standard-Campaign
- standard-report
- standard-Dashboard
For internationalization:
- folder translations has language text files for German (de), Spanish (es), French (fr), Hebrew (iw), Japanese (ja), and Dutch (nl_NL)
- labels contains display text for US and potentially other languages
- folder objectTranslations
- folder staticresources
Data Load
https://www.youtube.com/watch?v=L8ip1tWhEKU Importing Data into Salesforce for Nonprofits – Offered Monthly by Salesforce.org
PROTIP: When adding contacts, in the Contact Details section, enter all relevant details for your new Contact (but leave the Account Name field blank). Leaving the Account Name field blank is the key step to creating a new Household. Salesforce automatically creates a Household, and derives the name of the Household from the name of the Contact.
To create a new Contact within a Household, in the upper right hand corner of the Account Detail page, click Manage Household.
metaci
MetaCI CLI replaces mrbelvedereci.
https://github.com/SalesforceFoundation/MetaCI-CLI
https://asciinema.org/a/143755
https://asciinema.org/a/144450
metaci repo list metaci plan list metaci org list metaci build list metaci build info 2 --log metaci service list metaci service add metaci plan run 1 etc.
Social
@SFDCFoundation
https://www.facebook.com/SalesforceOrg/?ref=timeline_chaining
https://github.com/salesforce/vulnreport
References
-
Documentation about installation is included among other topics at:
https://powerofus.force.com/articles/Resource/NPSP-Documentation
-
https://www.youtube.com/watch?v=An2aeOisJK0
-
https://www.youtube.com/watch?v=8MZMVBJMW4Q 13:43 Explaining the NPSP Account Models by Caroline Renard
-
https://www.youtube.com/watch?v=An2aeOisJK0 9:26 Nonprofit Success Pack (NPSP) 3.0 in less than 10 minutes by Redpath Consulting Group
On YouTube channels Salesforce.org and Videography:
-
https://www.youtube.com/watch?v=IATQdFl5LOQ 16:56 Live Demo: Nonprofit Fundraising
-
https://www.youtube.com/watch?v=IATQdFl5LOQ 16:56 Live Demo: Nonprofit Fundraising by Salesforce.org
Playlist: https://www.youtube.com/watch?v=1Acc7Fq8CfQ&list=PLU8xqF8ZASbXC-QFldf_Nm-oa0v1Hra9q Get Started with Salesforce for Nonprofits
Resources
https://github.com/SalesforceFoundation/Cumulus/wiki
http://developer.salesforce.org/Cumulus/ApexDocumentation/index.html
https://cumulusci.readthedocs.io/en/latest/ talks about the Python-based Robot Framework for testing.
https://github.com/SalesforceFoundation/Cumulus/wiki/Cumulus-CI-Build-Instructions Cumulus CI Build Instructions
More about Salesforce
This is one of a series about Salesforce
- Salesforce Ohana (about the Salesforce company, offices, mascots, emojis, and store)
- Salesforce Glossary (of acronyms)
- Salesforce Events (Conferences, local Meetups, ) to meet people face-to-face
- Salesforce Exhibitors (at Dreamforce)
- Salesforce Onboarding (Trailhead and IDEs)
- Salesforce Offerings (Clouds, Industries, Domains, GitHub, editions, pricing, features, versions)
- Salesforce Certifications (training and exams)
- Salesforce Projects, Superbadges, and Sample Apps
- Salesforce Project Plans
- Salesforce Jobs (within Salesforce, with partners, etc.)
- Salesforce Apps (in AppExchange)
- Salesforce Alexa
- Salesforce Heroku (external apps)
- Salesforce Non-Profit support
-
Salesforce NPSP (Non-Profit Success Pack) performance (with Gatling)
- Salesforce Data Management
- Salesforce Einstein
- Salesforce Selenium (test automation)