Wilson Mar bio photo

Wilson Mar

Hello. Hire me!

Email me Calendar Skype call 310 320-7878

LinkedIn Twitter Gitter Google+ Instagram Youtube

Github Stackoverflow Pinterest

How the Benefit corp benefits non-profits, technically


Overview

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

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
  1. 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”.

  2. This demo video shows some great benefits from adoption:

    sfnpsp-benefits-648x302-27355

    The Salesforce Foundation launched in 2014 “Salesforce for Nonprofits” [8:37]:

    sfnpsp-connected-891x453-49722.jpg

  3. 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

  1. If you are a non-profit, register at http://www.salesforce.org/npsp-trial/

  2. 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.

  3. So that your browser doesn’t pick up irrelevant history, open a new Private Tab on your browser to URL:

    https://powerofus.force.com

  4. Use a Salesforce account that is NOT associated with a Developer Edition, or you’ll get this error:

    sf-npsp-unauth-333x287-18899.jpg

  5. There is a SMS verification step for first time access.

  6. If you can get in, then you can post feedback at: https://powerofus.force.com/_ui/core/chatter/groups/GroupProfilePage?g=0F980000000CjRe

  7. 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:

  1. Go to the latest version:

    https://mrbelvedere.salesforcefoundation.org/mpinstaller/npsp

  2. Click “Log In” at the bottom of the page to select “Production or Developer Edition org”.
  3. Provide your DE credentials.
  4. Click “Allow” for the “Examining your org” to flash by before the “Installation Bundles and Packages” page appears.

    sfnpsp-installers-648x424-34529

    The “hot dog” icons say “Metadata from Github” and “Metadata from Zip”.

  5. Click “Install”.
  6. 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.

  7. 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 column is a field. That’s why the above are also called “object models”, which is the basis for how data is imported.

sfnpsp-erd-584x407.png
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 => Constiuents and Donors in NPSP
  • Accounts (companies) => Households in NPSP
  • Opportunities (products) => Donations in NPSP (revenue-generating events)

These are referred to using several terms: data model, account model, household account model, object model.

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

  1. 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:

  2. Click your profile picture to switch to Classic (Visualforce) UX.

  3. 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.

  4. Assign New Record Types to Profiles

  5. Edit Page Layouts

  6. Assign Page Layouts

  7. Override Lead Conversion Button

  8. 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.

  9. 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.

  1. 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

  2. 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 Nonprofits

    PROTIP: 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

  1. 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.

    Salesforce.org YouTube videos

Open-Source Repositories

idhttps://github.com/
SalesforceFoundation/
...
Docs# Builds
npe5.../Affiliations122
-.../CampaignTools347
-.../Contacts_and_Organizations268
-.../Cumulus20,362
-.../CumulusCI-Test273
-.../HEDAP2,952
np01/
np02
.../Households274
npe03.../Recurring_Donations238
npe4.../Relationships172
-.../Volunteers-for-Salesforce810

Cumulus

Cumulus is the core NPSP repository. It has hundreds of open Issues and dozens of open Pull Requests.

  1. https://cumulusci.readthedocs.io/en/latest/ (stored within https://github.com/SFDO-Tooling/CumulusCI/blob/master/docs/why_cumulusci.rst)

  2. 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
  3. 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

  1. View the Continuous Integration (CI) and Project Cumulus Jan 31, 2014 [1:00:49] by Jason Lantz

  2. 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.

  3. https://cumulusci.readthedocs.io/en/latest/ CumulusCI’s documentation!

Cumulus Continuous Integration

  1. 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

  1. 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.

  2. 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.

  1. 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.

sf-v4s-erd-535x408-33376.png

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

  1. Salesforce index

  2. Salesforce Ohana (about the Salesforce organization and people)
  3. Salesforce Glossary (of acronyms)
  4. Salesforce Exhibitors (at Dreamforce)
  5. Salesforce Onboarding (Trailhead and IDEs)
  6. Salesforce Rock Stars (and influencers)

  7. Salesforce Offerings (Clouds, Industries, Domains, GitHub, editions, pricing, features, versions)
  8. Salesforce Certifications (training and exams)
  9. Salesforce Projects, Superbadges, and Sample Apps

  10. Salesforce Project Plans
  11. Salesforce Jobs (within Salesforce, with partners, etc.)

  12. Salesforce Apps (in AppExchange)
  13. Salesforce Alexa
  14. Salesforce Heroku (external apps)
  15. Salesforce DX (Developer eXperience)

  16. Salesforce Non-Profit Success Pack
  17. Salesforce NPSP (Non-Profit Success Pack) performance (with Gatling)

  18. Salesforce Data Management
  19. Salesforce Einstein
  20. Salesforce Selenium (test automation)

Tutorials under construction (listed alphabetically):

  • Salesforce Apex programming
  • Salesforce Apex Testing
  • Salesforce APIs
  • Salesforce Automation
  • Salesforce Bolt
  • Salesforce Customization (objects, fields, page layouts)
  • Salesforce Field Service
  • Salesforce Inbox
  • Salesforce IoT
  • Salesforce Lightning UX
  • Salesforce Mobile
  • Salesforce NPSP (Non-Profit Success Pack)
  • Salesforce Reporting & Analytics (Custom Reports)
  • Salesforce Security
  • Salesforce Selling Success Factors
  • Salesforce Visualforce