SFDO-Community-Sprints / engagementplans

Engagement Plans 2.0
0 stars 1 forks source link
need-developer need-doc-writer need-general-volunteers need-qa-tester need-user-stories philly-sfdosprint-2019 status-contributor-ready theme-packaged-app-or-component

Engagement Plans 2.0 - Overview

Project Team

Project Vision

We envision a feature set for Engagement Plans that allows for more flexibility and less data duplication. We specifically want to focus on assigning individual tasks to the parent object using criteria, and mapping custom fields onto engagement plan tasks.

Feature Details/Specifications

1. Use Case Scenarios:

We documented potential use cases across a range of nonprofit contexts.

Use Case - Community Foundation

In my role as a community foundation program officer, I want my grantees to receive reminders and scheduled office hours appointments about when their requirements are due so that they are proactively engaged and meeting their deadlines.

In my role as a community foundation program officer, I want to have reminders to invite my grantees to my open office hours so that I can answer their questions and be responsive to their needs.

EP Plan Template: 2019 Awarded Grantee

EP Task:
  1. Scheduled Office Hours for Quarter 1
    1. Grantee to Submit Questions
    2. Follow Up With Grantee
  2. Begin report and complete first three sections for Mid Year Report at end of Quarter 2
    1. Send report to Grantee’s Senior Leader for their approval
    2. Review grantee reports and approve responses
  3. Scheduled Office Hours for Quarter 3
    1. Grantee to Submit Questions
    2. Follow Up With Grantee
  4. Begin report and complete first three sections for Year End Report at end of Quarter 4
    1. Send report to Grantee’s Senior Leader for their approval
    2. Review grantee reports and approve responses
EP Task Assignment:

Use Case - Direct Service Org

In my role as a Program Intake Coordinator I want to after I determine which programs a person is eligible for set up tasks for other programs to follow up and take their next steps So that the person can get the services they need to stabilize their life

Use Case - Partner Help Desk

In my role as an IT Support Coordinator I want to send and confirm scheduled appointment dates and ensure that follow-up messages are sent and survey requests are So that the clients feel supported and to ensure that their IT requests are full-filled and their feedback is solicited when the support case is complete

Use Case - Teachers

In my role as a teacher I want to assign tasks to parents/guardians of students So that to ensure that parents/guardians are aware of upcoming meetings, professional development days and milestones for their children

Use Case - Fundraisers

In my role as a fundraising director, I want to assign tasks to a range of people related to the opportunity or account So that the users who would be involved in a solicitation are assigned automatically.

EP Plan Template/Task List Template: Major Gift Solicitation

EP Task Inventory
EP Task Assignment Criteria

2. Updated ERD

ERD

3. Task Criteria: Allow for conditional logic for engagement plan tasks

Example: for a single engagement plan template, after the first task, of the contact lives in New York trigger a for a user to call the user. If the contact does not live in New York, create a task to email them.

Ability to:

Use Cases:

SOLUTION: Refer to the ERD in #2 above

Create a copy of the Engagement Plans Package with the following objects and modify as follows:

  1. Rename Engagement Plan Template to Task List Template
  2. Rename Engagement Plan Task to Task Inventory Item
  3. Create a new Junction Object called Task Assignment Criteria that links Task Inventory Item to Task List Template

Overview of the Task Assignment Criteria object The purpose of this object is three-fold:

  1. Allow one task to be assigned to multiple Task List Templates (for example, a task to send a thank-you letter could be repeated for Task List Templates for many different donor levels)
  2. Allow for custom logic that decides if the Task Inventory Item should be copied to the Task List that gets attached to the destination object. (if donation amount is greater than $500, create a task to call the donor)
  3. Provide an opportunity to dynamically assign the Task Owner (use the User linked in this field on the Account) and the Related To record

Fields on the Task List Template

  1. Target Object: A metadata lookup field to Objects that lets the user indicate what Object this Task List Template is going to be used for

Fields to Add to Task Object

  1. Task_List_Template__c: A lookup to Task List Template object
  2. Task_Assignment_Criteria__c: A lookup to Task_Assignment_Criteria object. This could be used to help with debugging task assignment criteria.

Fields on the Task Assignment Criteria object

  1. Target Object: A metadata lookup field to Objects that lets the user indicate what Object this Task Assignment Criteria record is relevant to
  2. Task OwnerID: A metadata lookup field that lets you reference a User Lookup Field on the Target Object that will determine who the AssignedTo User will be on the Task
  3. Task WhatID: A metadata lookup field that lets you reference the record that this task should be assignment to. We envision a Process Builder type interface that would let you traverse through lookup fields (ex. If the Task_List_Template.Target_Object is Payment, then you could go Payment→Opportunity→Primary_Contact to create the task for the related Opportunity Primary Contact.
  4. Criteria: A text field that allows the user to write a SOQL expression which will determine when the Task Inventory Item should create a Task whenever the Task List Template is assigned to an Object. It would be idea if this feature could have a Workflow Rule interface where the user can select fields
  5. Task List Template: Lookup to Task List Template object.
  6. Task Inventory Item: Lookup to the Task Inventory Item object.

LOGIC

  1. Whenever a new Task Assignment Criteria record is created, the Task_Assignment_Criteria.Target_Object should be inherited from Task_Assignment_Criteria.Task_List_Template.Target_Object
  2. Task_Assignment_Criteria.Task_Inventory_Item cannot be populated with a Task_Inventory_Item that is dependent on another task (We cannot create criteria for dependent tasks)
  3. Whenever a new Task Assignment Criteria record is saved, the SOQL expression should be validated to make sure that it can be evaluated from the Target Object.
  4. Whenever a new Task List is created (connecting a Record to a Task List Template)
    1. Pull up all Task Assignment Criteria records where Task List Template = Task_Listc.Task_List_Templatec
    2. For each Task Assignment Criteria record found, evaluate the SOQL expression in Task_Assignment_Criteria.Criteria.
      1. If Task_Assignment_Criteria.Criteria = False, skip this Task Assignment Criteria record and go to the next one.
      2. If Task_Assignment_Criteria.Criteria = True, pull up the related Task_Inventory_Item record linked through Task_Assignment_Criteria create a new Task record where:
        1. Related To = Task_Assignment_Criteria.Task_WhatID
        2. Assigned To = Task_Assignment_Criteria.Task_OwnerID
        3. Task_List_Template = Task_Assignment_Criteria.Task_List_Template
        4. Task_Assignment_Criteria = Task_Assignment_Criteria.ID (the Task Assignment Criteria record that triggered the creation of the Task)
        5. Status = Task_Inventory_Item.Status
        6. All other Tasks fields are populated using the values on Task Inventory Item and according to the existing logic around creating Tasks from Engagement Plan Tasks
    3. If the Task Inventory Item being copied has dependent tasks, all dependent tasks should also be copied

4. Custom Field Mapping: Allow for mapping from Engagement Plan Task to SF Task for custom fields

This feature is a pull request on the Cumulus repo.

Ability to:

So that:

Issues to address:

What will be worked on:

Testing Data

Mapping

Engagement Plan Task to Task - Source Fields need to match the Target fields API Names and Field Type. However, there are exceptions and most fields at the Source, can map to the Target if the Target field on Tasks is Text.

MappingTable

5. Custom Task Fields: Add custom fields to Engagement Plan Setup Page

EP Setup Page how to:

issues to Note:

6. Allow option to delete or close tasks associated with previous engagement plan when a new one is added

Ability to:

So that:

USE CASE:

Future Contributions (AKA what were you unable to finish at the Sprint)

Existing Resources