Tuesday, November 29, 2011

Student Financial Aid Software System - A Drupal tech note

This is my tech. follow up on the article 'Student Financial Aid Software System' before I can formally suggest ideas to the open source Drupal community.

After complete the article, I sit down and think about how can I contribute to the open source Drupal community. I try to formulate what I did regarding to the 'registration code' and 'workflow' into a clear and generalized ideas so that, once implemented, it can have greater use. After navigating the Drupal module site, I think I am not quite ready to submit my idea as extensions to those modules.

As reasoned above, idea presented here will be rough and unpolished.

Registration Code
I did not deployed the 'registration code' module for couple of reasons. In the beginning, I think it is a module I should use. But I run into some difficulties because of using the Drupal 6. The bug was soon fixed and I was very impressed by the 'registration code' team. Before the code is fixed, I have moved along and implemented some features I need and which may not be well supported in the 'registration code' module yet - I did not spend enough time looking around in that module to see if this is totally true.

Workflow
While forming my idea on how to implement the Financial Aid Software System, the Workflow module seems to be a no-brainer. However, after taking a closer look, I realized that I will have to make some modifications so that it is practical in using the module. Through the work, I did find the Workflow, together with its related modules, provide a lot of flexibilities that I may never think of implementing them if I were to development the Financial Aid Software System from scratch and I believe this is an unspoken advantage of the open source development model - The competition between similar projects are based on services provided to adopters, be it be the functionality, the documentation ... etc, and not the business muscle.

The major modification is the content based workflow instead of role based workflow. In our Student Financial Aid System, all high school counselors perform the same task so are all our college registrars. However, they do not perform the task on all contents. They only perform these tasks on content with special values.

Student Financial Aid software system with Drupal workflow

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 project
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.

Success Story
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.

What's next
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.