The purpose of this article is to report my experience with the open source Drupal Content Management System while I am building a Student Grant/Financial Aid system.
The Financial Aid system is to allow high school students to apply for Aids while they enrolled in college courses. The process requires multiple reviews by multiple organizations. High school counselor need to review the eligibility of the students and verify the information provided and college personnel need to verify the number of credit hours enrolled. Finally, the Financial Aid administrator need to approve the application and award the grant.
Open Source Route
When I looked at the project, I realized that if I want to build the whole thing from ground up it will take me a while to build all the components. Since we are cheap and I am not married to any proprietary platforms, I think I might find something in the open source world. I began by searching the web for open source Financial Aid management system and was not able to find one. However, there were hints that Drupal might provide the basic framework that could work. Personally, I had been reading about Drupal for a while at that point but haven't have time to practice and play with it.
A word about Drupal
Drupal is often referred to as an open source Content Management System. It is, however, designed quite differently from other Content Management System. At its core, it provides only 2 basic types of content: story/article and (web) page. Story, as the name implied, is intended to be contribute by multiple users and can be listed one by one. Page, on the other hand, is to provide static web pages like the 'About US' or 'Company Info' pages seen on most web sites. The Drupal core is, therefore, not a content heavy system, but a layer or system that supports the creation, the display and the management of contents. Various content type and management module have been created on top of the Drupal system and it is these added modules that made the Drupal so powerful and content rich.
Back to the Grant/Financial Aid project
Reading through books on Drupal, it appear clearly that the Workflow module is a likely candidate for handling the multiple review requirement. The module, following open source's spirits, is designed to be both adaptive and adoptive. To facilitate the grant application process, it is also found that the Registration Code module is a good module to adopt.
The Workflow module
The power of the Workflow module is it's ability to move/convey contents from stage to stage. This fits our review stages well. When creating a new workflow, Drupal administrator will be asked to specify a content/document type and all the states/stages that are needed. Roles can be created and be given rights to move contents from some stages to other stages. All users can then be assigned roles that can move content from one stage to the other. In our case, for example, high school students can create financial aid applications and move their applications from the draft stage to the counselor reviewing stage. However, since high school counselors only reviewing applications created by their own students, we are forced to create different roles for students and counselors from different high schools and different workflows for each high school. Even though, there are Workflow extensions (for organic groups) that can solve this particular problem, there is another problem that can only be solved by customized code.
Since high school students can enrolled in various colleges and be reviewed by that college, each college will need have a role in each workflow or in each organic group. The number of roles are many and made managing them quite difficult. Beside that, applications will need be examined and conveyed to the corresponding college for review.
Registration Code module
Registration Code module allows Drupal administrator to generate random registration code for roles. A new user can then create an account using the given registration code and be assigned with the associated role. When used with the Financial Aid project, registration codes were generated for each high school, so that students can create accounts to be used for creating applications. However, since our implementation of the Financial Aid system also use the registration code to establish some profile field, we take the idea but did not use the Registration Code module.
With the help of the Drupal, I was able to establish a very flexible and useful system with minimum customized code. I attribute my success to the Drupal community. Thanks.
Even though the system is implemented to the customer's satisfaction, the code is not organized into a clean module and requires manual installation and setups. One think I am considering doing is to re-think the code and see if there are better way of organizing them. Also, since I did not really use the Registration Code module and did extend/modify the Workflow module, I feel it is my duty and my desire to provide feed back to the Drupal community in terms of suggesting features to be added to the Registration Code and Workflow module.