High level overview of Alpha International needs
Alpha International supports and promotes Christian organizations (primarily churches) around the world in the running of The Alpha Course (an introduction to christianity) (and variants such as Youth Alpha) and other related courses such as The Marriage Course. Over 40,000 courses run in more than 160 countries supported by over 40 Alpha offices. As well as the churches themselves, we have a network of advisers and teams that support the churches with practical help and advice.
Apart from the general management of individual and organizational contacts for a number of general business purposes we have a specific need to record instances of courses of all types running around the world.
Courses are run by organizations and individuals who are part of our volunteer network, but they choose to run them and are completely responsible for those courses. We want to be able to communicate with the people involved and also publish a directory on our website ('Find A Course') that allows someone interested in attending to be able to identify and make contact with a course near them. But we do not run or control all these courses, nor do we track the attendees and outcomes.
Objects to be tracked:
• Course
• The hosting organization(s) of the course - normally just one, and normally just a church (but can vary - Student Alpha Course might be hosted by a University, Prison Alpha, by a prison chaplaincy, etc.)
• The venue - to allow that information to be searched for and published for potential attendees (not all courses are held at the premises of the hosting organization - e.g. churches club together to run a course at the local library)
• The course administrator(s) - normally one, but sometimes a married couple
• The course leader
• Optionally: The church leader for the hosting organization of the church
• Optionally: The adviser for the course/Team supporting the course
Properties for each object (rough list):
• Course instance - type, date they first registered with us, course name, denomination, website address, language, student friendly, published in directory or not, dates that the course has & will run
• Hosting organization - type, contact details, denomination, other people associated with the church/org (staff, members, etc.), other courses running there
• The venue - address, contact phone number and email for potential attendees
• Course administrator, course leader, church leader, adviser - contact details, involvement in other roles (organizations or teams), in other courses
Workflow(s) for adding and updating object data:
• Internal admin: - we receive a letter from a new course start-up or a new admin with updated details, we are called by an admin or leader to notify new course or changes, we receive an email notifying us of a new course or updates, a mailing cover sheet is returned to us with marked updates on. These all need processing in the admin screens.
• Admin/leader self- service updates on web (near-term requirement - not available today) - possibly triggered by mass email to prompt for updates
• Local adviser/team members self-service updates they know about for courses in their patch/team (longer term requirement)
Output streams:
• 'Find A Course' functionality on website allows a member of the public to search for courses of a specific type and denomination in a specific geography (town, postcode, country, etc.) and then find out contact details (email contact form, phone number), venue location details, and course running dates
• Internal ad-hoc enquiries for course listings, based on a diverse range of criteria (can be location, course type, denomination, status, date of course, etc.) with the full range of information about the course, the associated individuals and their contact details, or the hosting organization details
• Internal ad-hoc enquiries for people associated with courses based on a range of criteria (location, role, participation in previous events, resource purchases history) with full contact information for them, details of the role on the course and basic course information (type, name, attributes)
• Generation of statistics about the number of courses broken down by location, type, denomination, date of set-up
Example data
Attached is a document showing:
example of course data held in our current system (you will see this is a little clumsy, if at least comprehensive)
example of outputting a flattened set of data for a course in our current system (relating to requirement 5 below)
example of the course directory entry on our website
example of how we have tried to hold the equivalent set of data in Civi as it stands
Proposed approach to the requirements
Having done some modeling of courses in the sandbox and had various conversations with the Civi team, we have decided to settle on implementing courses as contacts by getting the contact sub-type field fully implemented into Civi - then we will be able to create on our set up a sub-type of Course. So, we would anticipate:
The objects associated with the course can be tracked via some relationships like
- Is hosting organisation / hosts course
- Is course administrator / administers course
- Is course leader / leads course
- Is church leader for the hosting organisation/church
- Is adviser for the course/Team supporting the course
Some of the properties of each object would be handled using core contact fields (name, website). Other properties could be added as custom fields (e.g. type, date they first registered with us, denomination, language, student friendly, published in directory or not, dates that the course has & will run). Custom fields for other related contacts would be added to that contact record.
The venue can be added as a location (contacts already have this)
So we feel that the objects and properties required for the data model are there. Then there are some ways in which we would like to enhance the contact model to improve the useability - mainly around viewing, searching and exporting the data. This would be dev work we would like to commission you to do for inclusion in the core. The most immediate requirements would be:
1. Ability to define a sub-type for organisations (Michael has shown us that there is already a field for this in the database). This is to allow us to create a course sub-type and then with the upcoming 2.3 menu capability (and possibly hooks too) to make a more instinctive menu to get to a courses only search
2. Set relationships to only be available to particular contact sub-types (you can already specify them as only available to a particular contact type) - to improve usability of selecting appropriate relationships
3. Set custom data to only be available to particular contact sub-types (you can already specify it as only available to a particular contact type) - again improves data entry
4. Enhance the table presentation of relationships in the relationship tab to be more like that for cases and events with sort capabilities built into table headers, and inclusion of contact sub-type so that users can separate out course relationships from others very simply. (Also want to look at hook to create a custom sort of the table based on sub-type)
5. Allow users to map related contact info for EXPORTS (similar to how we allow this for IMPORT) - this allows export of (for example) contact data about the admin of a course along with all the course info itself (or vv putting in a list of course leaders details of the course they lead). I am aware this is a 2.4 candidate feature already.
There are then some further needs that still need discussing. They may already be possible with hooks, or may need some development:
6. Create ability to turn off unnecessary core tabs and fields for particular organisations/contacts sub-types, so they look more the kind of contact they are modelling
7. Set up a predefined set of relationships that a certain contact sub-type should have (e.g. all courses should have an administrator) and allow them to be set / created when you create that type of contact
8. Be able to set a limit on the amount of relationships that an organisation can have (an course can only have leader, for example)
9. Allow ability to view relationships on the organisation summary page.
10. Enhancements to the advanced search to allow selecting of multiple values of a custom field which is a radio selector. This might need more explanation. But we were thinking for example about being able to search for multiple denominations of courses when any one course can only have one denomination.
Having chatted this through with the team we feel that points 1 to 3 need further specification work done on them - we will post on this once it is done.
