Updated: Sep 30, 2021
Back in December 2020, as part of a job interview, I was tasked with creating a Salesforce solution for a fictional nonprofit named, You Code, Girl! The scope was fairly straightforward but I decided to take the opportunity to install and configure the new-ish Program Management Module (which is free!) into a Salesforce developer account so that I could both learn about it and use it to present the solution to my fictional client.
I didn't get the job, but I had fun building out my org and configuring PMM to meet the brief. To highlight my skills and also the kind of work I like to do, I present to you the slides and notes from my presentation. The point of this demo would be to introduce a client to the data model and solution, not to present a comprehensive training. It's probably too much to absorb in one sitting as it is.
Note: Some of the explanatory text was taken directly from Salesforce PMM documentation, which can be found here. But since I was presenting this as a live demo, and not for money, I figured that was okay.
You Code, Girl! (YCG) is a small, female-run nonprofit whose mission is to encourage girls to get into technology and coding. They offer multiple programs, workshops, and resources for women of all ages to encourage them to get involved in the technology space. They work with universities in their area to find women in Computer Science programs for volunteer positions to lead their weekly workshops and meetups. They are also starting a new initiative to pair high school seniors with women in Computer Science programs. The idea with this initiative is to establish a sort of mentor-mentee relationship to encourage high-school seniors to pursue degrees in STEM. You Code, Girl! has just implemented the Salesforce Nonprofit Success Pack (NPSP), but have not done any customization to support some specific needs for their organization.
(This was followed by requirements, which I broke down into user stories.)
Given the YCG brief, my approach to this presentation was to break down the requirements into User Stories and to then present the solution with the assumption that the client already has some basic understanding of Salesforce NPSP.
About the logo I created for the organization: In Star Wars: Rebels, Mandalorian weapons expert and painter Sabine Wren uses a stylized Starbird (based on a mythological bird similar to the Phoenix) to tag Imperial ships and propaganda. I thought this image made an appropriate logo. Don't you?
Slides 2 & 3
Here are the user stories I created from the business use case.
This shows the NPSP data model. Don’t be too concerned with all these objects right now. The important thing to note is that we’ll be using Relationships to track the Mentor/Mentee relationships in my solution.
Slides 5 & 6
This is the Program Management Module, which I’ve installed on top of NPSP. This model allows us to accomplish not only the needs detailed in the YCG scope, but adds some additional functionality as well.
Let’s start by going over Salesforce objects and terms that are used in this model:
• Programs track your organization's overall work.
• Program Engagements track the relationship between Programs and the Clients that engage with them.
• Clients include any Contact that is a Program Participant and can also include Organization Accounts like Schools and Universities. For YCG, instead of using just “Client”, I have created three Contact records types: Donor, Mentee/Student and Mentor/Instructor. This allows us to use separate page layouts and related lists that make sense for each type of Contact.
• Program Cohorts group Clients into logical groups. For YCG, each cohort is grouped by Program abbreviation and graduating class year; for example, ASL – 2021 for “All the Senior Ladies, Class of 2021”. Mentor Cohorts are named based on their Program and mentor or instructor function; for example, JWJ Instructors Cohort for “Java with Java Instructors”. Mentors aren’t tied to a year, considering that their services might span more than one school year and class.
• Services are provided to your Clients as part of your programs. Demo Services for YCG include:
3. Meetups and
Programs can include multiple services and every Service has a Unit of Measurement that quantifies the activity. For example, Services can be measured in minutes, as a number of items, or another metric that's meaningful to your organization. For purposes of this demonstration, all YCG Services are measured in 1- or 2-hour units.
· Service Schedules are one-time or recurring events for groups or individuals. For example, classes, mentoring sessions, support groups, meetups or community events. You can create multiple Service Sessions for a Service Schedule, or just schedule a one-time event without accompanying sessions.
· A Service Participant record is a way to keep track of students & mentees that have enrolled in a particular service that is planned, like an upcoming class or a counseling session.
• A Service Delivery is a record of providing a Service to a recipient. A Service Delivery shows who received the service, how much was delivered, and when it happened. For example, Robin received 30 minutes of career counseling on April 4th.
Next, let’s take a look at the data entry workflow.
When you are entering program records, your data entry will generally follow this process, although there are a lot of places where you can easily jump from one record to another, if you need to.
(I've added some screenshots to my notes below and cleaned it up for this blog post, but when I did the live demo, I didn't need the screenshots. This is not indicative of what I would create for formal documentation, just how I might do a demo.)
Home Tab Review
As you can see, the Home tab for the PMM is a dashboard that includes all active program management engagements. (Not ALL engagements are included, just those whose Stage equals Active or Enrolled.) You also see the Services delivered YTD, the Client records with missing phone numbers (always handy) and two charts from reports I created showing the number of Mentees by High School and the number of Mentors by University or College.
Let’s look at the Contacts & Accounts tabs next.
Under Contacts I've created several list views:
If you open up one of the Mentor records, [Open Jane Grey], you can see the Contact’s Program Engagements records, their Service Delivery records, and their Relationships, including the Mentees that they are responsible for. Notice that Jane delivered a service to Alex Fitzpatrick but that Alex is not listed as a Mentee. But we can easily add them by selecting New Relationship and adding that relationship.
Select the Related Contact and then the Type. Now be careful here, because it’s easy to confuse which type of Relationship you are choosing. You want to select the correct relationship to the Contact whose record you are currently in; in this case, Jane Grey's. Alex is Jane's Mentee, so select "Mentee" from the picklist.
No need to add more description because Salesforce provides the Relationship Explanation automatically. If you then click on Alex Fitzpatrick to take you to Alex’s record, you’ll see that Jane Gray is listed correctly as Alex’s Mentor, which means you only have to enter the relationship once. You can also add and manage Relationships from the Relationships tab.
[Go back to Contact List view]
Also, when you are entering a new Contact record, you have 3 choices: Donor, Mentee, or Mentor. The Mentees or Mentors may also be Donors, but to keep the records easily segmented, I’ve elected to use these 3 record types.
[Go to Accounts]
Under the Accounts tab you again have several List Views to select from:
High Schools, Universities & Colleges, Household accounts, Organizations, etc.
You can, if desired, add a School to a Program Engagement, which would be a good way to track all the Affiliated Contacts that are associated with the School and therefore might be good prospects for future volunteer Mentors.
For example, SF State University has a Program Engagement record, and we can see all the Contacts affiliated with them under the related list.
[Go to Programs Tab]
Following the Data Entry workflow, let’s take a look at each of the objects:
As you can see, each of the three programs for YCG and their short summaries are listed.
If you open up one of the records, there is room to enter more information like a Target Population, a longer description and a Program Issue area, if that’s applicable. There is also a handy report chart showing the Clients Enrolled for the current month and the related lists for Services, Program Engagements (scroll down), Program Cohorts, and any Files you may want to add to the record.
You can also use the “Add Contact to Program” button to quickly add a new Client to the Program.
As I mentioned before, I’ve organized the program clients into logical groups. The Mentee cohorts use the naming convention of Program abbreviation + graduating class. The Mentor cohorts are named as appropriate to the role that the mentors play within that Program. For example, the All the Senior Ladies mentor program cohort is named, "ASL Mentors" but the Workforce for Her mentor cohort is named "WFH Instructors & Workshop Leaders".
[Open ASL – Class of 2021]
Inside the record you can see more information fields and the list of Program Engagements.
Under the Services tab you can see each of the offered Services, a Description, the Program that it belongs to, the Status [Click on Status list] – whether it’s Planned, Active, Completed, or Cancelled—and the units of measurement. For instance, the Java with Java Meetups are 2-hour weekly meetups that take place at a local coffee shop.
[Open Resume Creation & Review]
Inside the record you can see report chart for service Units Delivered over the last 6 Months as well as the related lists for Service Schedules, Service Deliveries, and Service Participants.
Once you’ve entered your Services, you can create a Service Schedule & Service Sessions. Since I’ve already created a schedule, let’s take a look at the record and then I’ll show you how to create a new one.
[Open Resume Creation Winter/Spring 2021]
This particular schedule has a total of 6 scheduled sessions, offered on a monthly basis, for 1 hour each. Each session has a participant capacity of 10 and there is one participant – Alex Fitzpatick – currently enrolled for the Service Session held on February 8th.
From the Calendar, you can see each of the Service Sessions listed on their dates. You can hover over any calendar item to see event details.
Now let’s create a new Service Schedule. Currently there are schedules for each of the program services except for Counseling Session. Let’s say you have current Program Engagement records already created for a Mentor/Mentee Relationship and they want to set up weekly counseling sessions.
Click the New button or use the pulldown menu from the Tab
Give the Schedule a name. “Mary Murray/Jane Grey Weekly Counseling Schedule”
Select the Service
The Primary Service Provider is the Mentor, Jane Grey
Participant Capacity in this instance is 1, since it’s private counseling session\
Select the first start date/time and end date/time
Select the Frequency. We’re going to select Weekly. You can select a specific date for the service schedule to end but for now we’re going to select “After” and enter 4 since Mary and Jane have decided 4 counseling sessions is probably enough.
Be sure to check the box to create service sessions if you want the system to automatically create them for you. Otherwise, you will have to enter them manually. (Note: you can’t create Service Sessions for dates that are in the past, even if the box is checked. The system will only create future sessions.)
Now we’re ready to move onto Program Engagements. If you recall, Program Engagements is the central object you will use to track your Program participants.
From the list view you can see Program Engagements name. They have an auto-naming convention, which makes is easier for data entry. You can see the Client, Program, Cohort, their role, the Stage and Program Start and End Dates. Stage choices for each record are as shown but they can be easily changed to whatever values make the most sense for you.
Now let’s enter a New Program Participant [Demo Entry]
For new applicants, you can optionally click the Submit for Approval button, which launches an approval process that sends an email to the Program Manager to approve the application.
Now that you have your Programs, Cohorts, Services, and Schedules in place, you’ll want to track the delivery of those services. Remember, a Service Participant record is a way to record a Client’s participation in an upcoming Service Delivery. The best way to manage that is from the Client’s Program Engagement record. You can also add Participants under the Services, but it’s easier to do under their PE record.
[Go to Program Engagements, locate Juanita Alverez]
For instance, Juanita Alverez has contacted you about signing up for upcoming sessions in the Workforce for Her program. So you open her PE record and click New on Service Participants related list.
A Service Delivery is a record of that Service being delivered after the fact.
You can create Service Deliveries with or without a Service Session, or without having created a Service Participant record first.
For instance, let’s say Jane Gray, who is a Java with Java instructor, holds an impromptu meetup in early January. There is no schedule setup, but she wants to record that it happened and who attended.
Click Bulk Service Deliveries
Add Clients Carol Kemper, Cindy Yu.
Enter Program Engagement and Service, then can select Service Provider. (You can only select the Service Provider after selecting the PE and the Service.
Finally, in order to track Mentee/Mentor Relationships, we’ll want to use the standard Relationships object included with NPSP.
Relationships can be any personal or professional relationship that you decide is important. They can include family or coworkers, mentors and mentees. Just remember that a relationship is not an Affiliation. Affiliations are connections between Contacts and Organizations, not to other Contacts.
You only have to enter the relationship once, since Salesforce automatically creates the other side of the reciprocal relationship.
Let's review the YCG User Stories Guide:
1. I want to be able to easily distinguish btw. Mentors, Mentees, and Donors
2. I want to be able to track all the workshops/classes for our 3 programs
3. I want to be able to see which Mentors are leading our workshops/classes
4. I want to be able to track attendance for our workshops/classes
5. I want to be able to see which workshops/classes were led by a Mentor from their Contact record.
6. I want to be able to relate a Mentor to their Mentee
7. I want to be able to see how many Mentees a Mentor is responsible for from the Mentor Contact record.
8. I want to be able to see which Accounts are Organizations, which are Universities, and which are High Schools.
9. I want to be able to see the number of Mentors that each University is producing.
10.I want to be able see how many Mentees are in each High school
NPSP + PMM + a little configuration not only covers all the user requirements, but provides a ton of other cool features.
Slides 9 & 10:
If you made it this far, you're a champ! I hope that you got something out of seeing my work in action (sort of).
If you would like to find out more about my services or talk about how I can help, please contact me via my site's Contact form.