This EPIC concerns the initial MVP of the Zetkin Journeys feature.
"Journeys" is a feature whereby an organization can set up a set of steps or "milestones" through a single or group of people can progress. Journeys can be open or closed, and between those two states the state can be reflected milestones either reached or not reached.
Definitions of key terminology
A Journey is a process through which one or multiple members progress, e.g. a union case, a training program, or a set of on-boarding steps through which a new member is welcomed to an organization
Different types of journeys are defined as Journey types or templates, e.g. there may be a "Case" template/type. The "Case" template, as an example, defines some common properties of all cases, e.g. the milestones, a title, singular/plural labels (case/cases) etc
The term "Journey" sometimes refers to the template, e.g. "Case", and sometimes refers to the instance, e.g. an individual case, although these are usually referred to as "cases"
A milestone is a discreet step or "achievement" in a journey. The set of available milestones for a particular journey is defined as part of the template
Every journey instance (e.g. a case) has a timeline which is a list of updates over time. See #572
Target audience
These are the roles that will most likely use this feature:
Union case workers
Organizers on-boarding new members to an organization
Requirements (job stories)
Below are job stories that describe the requirements for this feature. These have been developed together with a union that will be using Zetkin for casework.
When I'm contacted by a member about a problem at work, and they're not able to use the online form, I want to be able to open a new case in the system.
When I receive a new enquiry from a member that I've previously been in contact with, I want to open a case so that the normal process can proceed
When a collective complaint comes in, I want to be able to open a group case with multiple members, so that all information is available in one place
When a simple communication evolves into a full case, I want to be able to make old notes part of the case timeline, so that everything is available in one place
When a member raises an issue, I want to see whether they already have open cases, so that I can add information to that case rather than open a new one
When a case comes in through the web form, I want to be able to find it in the system so that I don't have to transfer it manually from one system to another
When a case comes in through the web form, I want to be able to easily find the relevant member in the database, so that I don't have to spend time figuring out who the case relates to
When a case is opened, I want it to be assigned a number from a series that is unique within the entire union, so that we can use that number to refer to the case within any sector
When I receive a complaint or enquiry from someone, I want to be able to see whether they are an eligible member, so that I can take the correct action
When I'm assessing whether a member is eligible, I want to be able to easily see whether they're up to date with their payments, so that I don't have to look into their payment history to figure that out
When I’m opening a case, I want to see what case workers are available and what their workload is, so that I can refer to an available case worker
When I'm opening a case, I want to be able to categorize it, so that referred caseworkers know what type of case it is
When I'm opening a case, I need the information about the background of the case so that I can decide what type of case it is
When a member can't submit more information because the employer is stalling, I want to pass it on to a caseworker so that they can follow up on the information
When our understanding of a case evolves, I want to be able to change the categorization of the case, so that it's up to date with the information we have
When a new case comes in, I want to see other cases involving the same member, so that we can make an informed decision about whom to assign (or not assign) based on previous experiences
When a case is handed over to me, I want to contact the member so that I can get the first-hand information I need to start the process
When a case is handed over to me, I want to be able to see who else has worked on the case, so that I know who to contact if I need any historical information
When a case is handed over to me, I want to be able to find all the necessary information, so that I can have a meaningful conversation with the member and not ask the same questions that have already been answered
When I can't keep working on a case, I want to hand it over to another caseworker, so that they can take over where I left off
When a member with an open case stops paying their dues, I want to know about it, so that I can remind them while I'm working on their case
When a member reaches out to ask about the status of their case, I want to be able to easily find it so that I can respond without forwarding to someone else
When I’m on the phone with a member that wonders about the status of their case, I want to see what previous points of contact there have been, so that I can refer back to previous conversations rather than repeat everything that the member will already know
When a member tells me they haven't heard anything in a long time, I want to be able to see previous points of contact, so that I can manage or debunk any exaggerations
When I’m able to solve a problem directly on the phone with a member, I want to be able to log that communication so that future communications can refer back to this conversation
When I communicate with the member about a case, I want to make notes of that communication in the case timeline so that me and others can find it later
When I'm covering for someone else during leave, I want to see the full history of the case so that I know where to pick up
When I have a question for another case worker or legal team, I want to be able to log that question (and their response) in the system, so that the timeline is complete
When I've taken some action that is relevant to a case, I want to be able to make a note of it on the case so that I can refer back to it later
When I'm looking up a case, I want a brief written summary, so that I know the gist of what the case is about
When the summary of a case no longer correctly reflects the case, I want to be able to update it so that it correctly describes the case
When a case is handed over to me, I want to be able to clearly see the dates of events, so that I don’t miss any limitation deadlines which would cause the case to be thrown out
When a case is handed over to me, I want to be able to access phone numbers and other contact information of the member, so that I can reach out to them
When a case is handed over to me, I want to talk to the complainant so that I can establish the facts
When I’m assigned a case, I want to be able to tell who else has been assigned that case in the past, so that I can reach out to them if I need more information
When I'm filling out the tribunal application, I want to have all the information available so that I don't have to do any last minute calls
When a case ends, I want to be able to log the outcome in the system, so that we can keep track how many cases we win or lose
When a member shows proof of payment, I want to indicate in the system that the amount has been paid, so that we can stop chasing payment
When a case settles, I want to log that in the system so that we can separate it from win or lose
When a case is neither win or lose, I want to be able to pick from a list of predefined outcomes, so that we categorize our cases consistently
When I'm reading up on a member's history with the union, I want to see their cases, so that I get a complete picture of our relationship with the member
When I'm making complex reports, I want to be able to download the raw data of all cases, so that I can analyze it in other software
Solution
"Journeys" is the solution to the requirements defined above, as well as being general-purpose enough to be able to solve a number of other use cases as well. In summary:
An official can define a new Journey type/template as a set of milestones and give it a name, e.g. "Case"
Another official can then open a "Case" journey for one or multiple people in the database
A journey instance (e.g. a case) can be assigned to a number of people, e.g. caseworkers
A journey instance (e.g. a case) can be tagged with any tag from any tag group
A journey instance (e.g. a case) has milestones that can have a deadline, and be marked as complete
Case (journey) listing
Case (journey) details view
Also see #572 for separate EPIC concerning timeline
This EPIC concerns the initial MVP of the Zetkin Journeys feature.
"Journeys" is a feature whereby an organization can set up a set of steps or "milestones" through a single or group of people can progress. Journeys can be open or closed, and between those two states the state can be reflected milestones either reached or not reached.
Definitions of key terminology
Target audience
These are the roles that will most likely use this feature:
Requirements (job stories)
Below are job stories that describe the requirements for this feature. These have been developed together with a union that will be using Zetkin for casework.
Solution
"Journeys" is the solution to the requirements defined above, as well as being general-purpose enough to be able to solve a number of other use cases as well. In summary:
Case (journey) listing
Case (journey) details view
Also see #572 for separate EPIC concerning timeline
Case (journey) milestones
Tasks