CiviCase is generally described as "a container for activities". As a container, it's well-suited to two scenarios:
- The activities in the case are identified and scheduled on an adhoc basis -- there's always a person (a case manager) making the decision about when to schedule the activities.
- The activities are performed according to a fixed timeline based on a reference date -- e.g. the first meeting is scheduled 3 days after the case opens; the next meeting is 14 days after; etc.
However, a container of activities can be useful in other scenarios -- for example, consider the case of hiring a volunteer to work in the children's art program:
- The director of the children's art program needs to meet with the volunteer to determine whether she has the proper skills and experience in art.
- The HR manager needs to obtain consent and details from the volunteer for running a background check.
- The HR manager needs to commission the background check -- and followup on the results.
- The office administrator needs to print out an ID badge for the new volunteer.
- (And there may be many other steps before, between, and after these steps.)
In a mid-sized organization, the list of steps can be long, structured, and nearly identical for each volunteer. We could use CiviCase with its timeline feature to schedule all of these steps. To get the full benefit of a timeline, we would need to set a date for each of the activities as soon as the hiring process begins. However, suppose we schedule a task for the office administrator to prepare a badge after 7 days. If the background check comes through quickly (within a day), then the office administrator will needlessly wait. If the background check takes two weeks, then he'll print out the badge too soon.
It can be challenging to deploy a software solution which organizes all these steps electronically. I'm not going to propose a technology to solve all these challenges for all organizations -- that's a tall order! But I do propose adding a few tools to the CiviCase tool-belt:
- Create a new extension, org.civicrm.caseutil.
- Add support for "Case Listeners" which use a "Case Analyzer" to decide on next step.
- Add an example "Case Listener" for simple, sequential workflows -- aka pipelines.
For a more detailed specification, please see
http://wiki.civicrm.org/confluence/display/CRM/CiviCase+Util (UPDATE: http://wiki.civicrm.org/confluence/display/CRM/CiviCase+Util).