eLearning: Customized Moodle solution
Posted by Nihar on May 15, 2017
Moodle is one of the top eLearning open source application. We have been working of and on with Moodle, however, the recent solution that we developed on top of Moodle required in-depth understanding of framework and lots of customizations. The requirement was to create a training management solution which had an eLearning component as well. This also required detailed reports at each training and various other levels. What made this project exciting was, 2 different teams had already failed in developing this solution, however, as a direct consequence of that we were given a very tight deadline of 15 days to deliver this solution.
The system had 4 types of users: Admin, Trainer, Service Centers and Engineers. The project needed to allow Trainers to schedule Training for the Engineers of various Service centers of the organization. Before any training could be conducted, Admin was required to approve or reject training and its participants. On success completion of the training, Engineers needed to give online test for the training and the trainers would assess the tests to give grades to the Engineers. Service Centers would be able to view progress report of engineers assigned to them.
Following is the detailed list of are the customizations that were carried out on the project:
Authentication of Users using external API
Since all users were already part of Client's HRMS, no users needed to be created inside of Moodle. Users were imported from the ERP system via SOAP based API, and authentication was done based on the same API as well. So, a layer of authentication was created via which verification was done. ERP users were mapped with the Moodle system to assign appropriate user types so Moodle's permission system could be used properly.
Parent Child Relationship for the Service Center and Engineers
The system was required to create parent child relation between Service Center and Engineers. The Service Centers needed to view details of training the Engineers were were undergoing. Service Centers could nominate and withdraw engineers from training and view detailed reports of their progress during the training. The system was required to keep track of which engineers have already undergone training so that they do not get nominated again for the same.
Multiple Trainers could run the same course at the same time!
It is intrinsic feature of Moodle, that a single teacher can be assigned for a course, Moodle does not allow same course to be used by different teacher. But the fundamental requirement for the training system was that a set of courses would be available for multiple trainers to schedule the training, moreover, the system should allow same course to be used by multiple trainers to schedule training for Engineers at the same time. Moodle system was customized such that the single course would be treated as multiple courses internally and each one of the course would be associated with one trainer for which they can schedule the training.
Training Scheduling Module
A completely fresh training scheduling module was created that would allow trainer to select the 'City' where the training needed to be conducted. Selection of City would automatically display service centers of the selected city, and base on the service center, Engineers who have not already taken up training in the last 3 months were displayed. Trainer could include the Engineers for the training session. Once the training is scheduled, the training will go to the Admin to approval or reject the schedule. Upon approval of the training notifications were to be sent to the Engineers with details of schedule.
Comprehensive Reporting Module
A comprehensive reporting module was created which allowed for custom reports different users of the application. Admin user would be able to view scheduled trainings, Approve / Decline Training status, Trainer, Service Centers and Engineers could view the training scheduled from their perspective. Apart from training listing various other reports that would provide insights into the data collected by the system were created that would allow management to review the effectiveness of Trainings carried out by the organization.
All in all this was a challenging project with strict and tight deadlines. Looking at the pace and direction of progress we made in the first few days, client was happy to see project finally taking shape. We could hear the sigh of relief actually from the client coordinator and that gave us the happy feeling that we were on the right track. Once we completed the development work, it gave us immense pleasure and supreme confidence as a team, and we proved to one more client that the name CodeFire is synonymous to "Reliability". If we commit, we would go to any length to deliver.