-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8 from lmeerkatz/feature/docs
Start data model and feature documentation
- Loading branch information
Showing
14 changed files
with
224 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
## Data Model | ||
|
||
### Definitions | ||
* **Volunteer Positions** are job listings. They include a description of the job, duties, qualifications and other requirements needed to volunteer in a given role. | ||
* **Volunteer Activities** are things that a volunteer who is qualified for a certain position can do. They aren't directly tied to a certain time, but they can contain one or more shifts. | ||
* **Volunteer Shifts** capture time slots that require a certain number of volunteers to come together at a certain time to do a certain type of work. | ||
* **Volunteer Events** group a collection of activities. These are useful when coordinating many volunteers filling multiple positions for the same event. | ||
* **Volunteer Applications** are like job applications. (This is represented on the ERD but has not been built out or included in the sample scenarios yet.) | ||
|
||
We'll see more about how these objects are put to use in [Data Model in Context](#data-model-in-context) after we introduce some sample scenarios. | ||
|
||
If you'd like to skip the narrative, you can go directly to [Entity Relationships](#entity-relationships). | ||
|
||
## Sample Data Scenarios | ||
|
||
### Toe Beans Animal Shelter | ||
|
||
The animal shelter sample dataset contains info about a fictional animal shelter, Toe Beans Animal Rescue. Toe Beans has a mix of administrative, event, and shelter volunteers across three main locations. | ||
|
||
We'll follow along with a few fictional volunteers and staff: | ||
|
||
Brianna Jacobsen is the volunteer manager for Toe Beans. She's responsible for reviewing applications, making sure new volunteers complete the appropriate training, and ensuring that all volunteer activities are appropriately staffed. | ||
|
||
Charlotte Scott is a dog walker. She typically comes in Thursday afternoons but occasionally fills in for other shifts when the minimum number of volunteers hasn't been met. | ||
|
||
Daniel Jackson has been helping the marketing lead at Toe Beans design a new microsite for their upcoming annual event, Toe Beans on Parade. He enters his volunteer hours once a month but mostly works on his own schedule. | ||
|
||
Mia Davis is a long-time volunteer who can do it all. She comes in most Tuesdays to do data entry in the office. She knows the organization well and occasionally helps out with volunteer training or processing adoptions. She's also happy to take a shift playing with kittens at the cat shelter as needed. | ||
|
||
### Data Model in Context | ||
|
||
Let's take a look at how we might see different types of data appear in our data model with the animal shelter example: | ||
|
||
### Volunteer Positions | ||
|
||
Here are the names of some Volunteer Positions we might see: | ||
* Dog Walker | ||
* Cat Care Assistant | ||
* Administrative Assistant | ||
|
||
Let's take a look at some data we'd find on the Administrative Assistant record: | ||
|
||
* Volunteer Position Name: Administrative Assistant | ||
* Location: Toe Beans Animal Rescue - Main Office | ||
* Status: Open | ||
* Description: Administrative assistants at Toe Beans Animal Shelter will input and manage vital information regarding shelter animals, adoptions, donations, and volunteers to ensure accurate and up-to-date records that support the shelter’s operations and outreach efforts. | ||
* Duties: Administrative assistants will be responsible for entering and updating data in the shelter’s databases, verifying the accuracy of information, generating reports, and maintaining confidential records. They will assist with tracking animal intake and adoptions, donor contributions, and volunteer hours. | ||
* Time Commitment: Flexible | ||
* Qualifications: Candidates should possess strong attention to detail, excellent typing skills, and proficiency in Microsoft Office and database software. Previous experience in data entry or administration is preferred but not required. Volunteers should be comfortable working with computers, able to manage sensitive information discreetly, and have good organizational skills. A commitment to accuracy and a passion for animal welfare are essential. | ||
* Required Training: Volunteers will complete an initial orientation covering the shelter’s mission, policies, and data entry protocols. Training will include hands-on instruction in using the shelter’s database software, data entry standards, and privacy guidelines. Ongoing support and periodic training sessions will be provided to ensure volunteers remain proficient and up-to-date with any system changes. | ||
* Minimum Age: 18 | ||
|
||
This is the job listing that prospective volunteers would see before they become an Administrative Assistant volunteer. | ||
|
||
### Volunteer Activities | ||
|
||
Activities are the jobs that volunteers interact with once they've been accepted into the volunteer program. They don't inherently have times associated with them, but they can have one or more shifts associated with them. | ||
|
||
For activities with flexible timing, volunteers can be directly assigned to the activity. For our Administrative Assistant example, we'd have a volunteer activity for the position. The name of the activity might be similar to the name of the position. In this case, we'll call the activity Data Entry for clarity. Data Entry (the activity) is the job we're asking Mia (the volunteer) to complete as as Administrative Assistant (the position). Volunteers are connected to activities via Volunteer Activity Assignments. | ||
|
||
![Screenshot of Volunteer Activity with Volunteer Activity Assignments related list](images/volunteer_activity_with_assignments.png) | ||
|
||
Volunteers are connected to positions via Volunteer Position Assignments. | ||
|
||
![Screenshot of Contact page with Volunteer Position Assignments and Volunteer Activity Assignments related lists](images/contact_with_assignments.png) | ||
|
||
## Entity Relationships | ||
|
||
![Volunteers entity relationship diagram](images/volunteers_erd.png) | ||
|
||
This is an early draft model. More fields will be added as the product is developed. | ||
|
||
### Standard vs. Custom Objects | ||
|
||
This model favors domain-specific custom objects over repurposing standard objects. This avoid collision with other use cases and ensures full support for custom object functionality that may or may not exist in standard objects. | ||
|
||
The following standard objects are used: | ||
* Contact | ||
* Account (Person Account) | ||
* Location | ||
|
||
All other objects are custom. | ||
|
||
### Contacts vs. Person Accounts | ||
|
||
This model is intended to support either modeling volunteers as Contacts or Person Accounts, though not within the same org. All volunteer-related objects contain lookups with both Contact and Account, both labeled Volunteer with API names to disambiguate (VolunteerContact__c or VolunteerAccount__c). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
# Features | ||
|
||
The goal of the Volunteers project is to complete an MVP version of internal, volunteer manager features of Volunteers for Salesforce by August 2024. Features included in the volunteer portal of V4S or any significant enhancements are out of scope until the MVP goal is complete. This document includes an overview of V4S features for reference as well as a high-level description of how those features might be replaced. While we want to solve the same problems that V4S solved, we may do so in entirely different ways to improve functionality and user experience. This document is an early draft that will evolve over time.clear | ||
|
||
## List | ||
|
||
* [Rollup Calculations](#rollup-calculations) | ||
* [Volunteer Assignment](#volunteer-assignment) | ||
* [Shift Calendar](#shift-calendar) | ||
* [Volunteer Reports & Dashboards](#volunteer-report-dashboards) | ||
* [Volunteer Roster](#volunteer-roster) | ||
* [Ad Hoc Email](#ad-hoc-email) | ||
* [Volunteer Recurrence](#volunteer-recurrence) | ||
* [Shift Recurrence](#shift-recurrence) | ||
|
||
## Rollup Calculations | ||
|
||
### V4S calculations | ||
|
||
* Campaign | ||
* Number of Volunteers | ||
* Volunteer Completed Hours | ||
* Volunteer Shifts | ||
* Volunteers Still Needed | ||
* Volunteer Job | ||
* First Shift | ||
* Number of Completed Hours | ||
* Number of Volunteers Still Needed | ||
* Number of Volunteers | ||
* Volunteer Shift | ||
* Total Volunteers | ||
* Contact | ||
* First Volunteer Date | ||
* Last Volunteer Date | ||
* Volunteer Hours | ||
|
||
### Volunteers calculations | ||
|
||
* Volunteer Activity | ||
* Volunteers Assigned | ||
* Completed Hours | ||
* First Shift Date/Time | ||
* Volunteer Shift | ||
* Volunteers Assigned | ||
* Contact/Person Account | ||
* First Volunteer Date | ||
* Last Volunteer Date | ||
* Total Volunteer Hours | ||
|
||
## Volunteer Assignment | ||
|
||
As a volunteer manager, I can find volunteers who match the qualifications and availability I need to fill open shifts or activities. | ||
|
||
### V4S Find Volunteers | ||
![Screenshot of V4S Find Volunteers page](images/v4s_find_volunteers.png) | ||
|
||
## Shift Calendar | ||
|
||
As a volunteer manager, I can see a calendar representation of all volunteer events or shifts. | ||
|
||
### V4S Shift Calendar (uses Google Calendar) | ||
![Screenshot of V4S shift calendar](images/v4s_shift_calendar.png) | ||
|
||
## Volunteer Reports & Dashboards | ||
|
||
### V4S Reports | ||
|
||
* **Active Volunteers** - list of Contacts with Active Volunteer Status | ||
* **Available Volunteer Jobs** - All Volunteer Jobs that are ongoing, or need people. | ||
* **Hours detached from their VRS** - Hours that were originally created by a Volunteer Recurrence Schedule, but no longer match. | ||
* **Inactive Volunteers** - list of Contacts with Inactive Volunteer Status | ||
* **New Sign Ups - Contacts** - list of Contacts with New Sign Up Volunteer Status | ||
* **New Sign Ups - Leads** - list of Leads with New Sign Up Volunteer Status | ||
* **Prospective Volunteers** - list of Contacts with Prospective Volunteer Status | ||
* **Recent Volunteers** - list of volunteers whose last volunteer date or web signup date was in the last 120 days | ||
* **Shifts Detached from their JRS** - Shifts that were originally created by a Job Recurrence Schedule, but no longer match. | ||
* **Top Volunteers by Lifetime Hours** - FOR DASHBOARD: list of total worked hours by volunteer | ||
* **Top Volunteers by Recent Hours** - FOR DASHBOARD: list of total worked hours by volunteer in the specified Time Frame. | ||
* **Unassigned Volunteers** - All Active, Prospective, and New Signup Volunteers who have no current Volunteer Hours assigned. | ||
* **Unique Volunteers** - Summary count of unique volunteers by Campaign and Job | ||
* **Upcoming Shifts Needing Volunteers** - Shifts in the future with unfilled volunteer shifts. | ||
* **Upcoming Shifts with Volunteers** - All upcoming shifts with volunteers. Can be used as a check-in sheet. | ||
* **Upcoming Volunteers** - list of all Volunteers with Hours in the next 30 days | ||
* **Volunteer Hours By Month Matrix** - matrix report that gives you the sum of hours volunteered by month for each volunteer. | ||
* **Volunteer Hours This Year** - Volunteer hours this year, unique and totals (groups). | ||
* **Volunteer Hours by Account/Org** - Total volunteer hours & unique counts for each account/organization. | ||
* **Volunteer Hours by Campaign** - Total of all volunteer hours for volunteer campaigns for all time. | ||
* **Volunteer Hours by Job** - Total of all volunteer hours by unique job name for all time. | ||
* **Volunteer Hours by Month** - Volunteer hours by month for the current year (DASHBOARD) | ||
* **Volunteer Hours for Dashboard** - Total hours worked for the Volunteers Dashboard | ||
* **Volunteer Jobs With Shift Summary** - Lists all Jobs, and their shifts, with summary data. | ||
* **Volunteer Roster** - list of all volunteers for the specified Campaign, Job, and Shift (USED BY ROSTER BUTTONS) | ||
* **Volunteers Daily Roster** - A list of all upcoming Volunteers by day | ||
* **Volunteers Last Month** - FOR DASHBOARD: list of volunteers and their hours from last month | ||
* **Volunteers This Year** - FOR DASHBOARD: Volunteers this year. | ||
* **Volunteers by Account** - list of volunteers grouped by Account | ||
* **Volunteers by Availability** - list of volunteers grouped by their availability. | ||
* **Volunteers by Skill** - list of volunteers, grouped by skills | ||
* **Volunteers with any Volunteer Status** - All volunteers with status set to any value. | ||
|
||
### V4S Volunteers Dashboard | ||
![V4S Volunteers Dashboard](images/v4s_dashboard.png) | ||
|
||
## Volunteer Roster | ||
V4S Volunteer Roster | ||
![V4S Volunteer Roster Report](images/v4s_roster_report.png) | ||
|
||
## Mass Email Volunteers | ||
As a volunteer manager, I can quickly email a list of volunteers. | ||
|
||
This may be volunteers associated with an activity. Example: "The door code to the main office has changed ..." | ||
|
||
This may be volunteers associated with a shift. Example: "We're expecting rain on Tuesday, so please bring appropriate gear to the park with you." | ||
|
||
This may be volunteers for a given position. Example: "We're looking for trained dog walkers to help with our adoption event next month." | ||
|
||
These may be recurring messages that make sense as a template, but many of them will be ad hoc. For MVP, having a way to send ad hoc messages quickly is more important than having nicely formatted templated messages. | ||
|
||
### V4S Mass Email Volunteers page | ||
![V4S Mass Email Volunteers page](images/v4s_mass_email_volunteers.png) | ||
|
||
## Volunteer Recurrence | ||
As a volunteer manager, I need a way to assign recurring volunteers to an ongoing series of shifts. Example: "Carol Smith walks dogs every Tuesday at 3 p.m." | ||
|
||
### V4S Volunteer Recurrence Schedule | ||
![V4S Volunteer Recurrence page](images/v4s_volunteer_recurrence.png) | ||
|
||
## Shift Recurrence | ||
As a volunteer manager, I need a way to set up recurring shifts. Example: "I need 3-5 people to walk dogs at 3 p.m. every Tuesday." | ||
|
||
### V4S Job Recurrence | ||
![V4S Job Recurrence Schedule page](images/v4s_job_recurrence_schedule.png) | ||
![Schedule Start](images/schedule_start.png) | ||
|
||
### PMM Service Schedule | ||
![PMM Service Schedule screenshot](images/pmm_service_schedule.png) | ||
|
||
This is a much nicer way of accomplishing the same goal. Use this as a starting point. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.