[IMPROVEMENT PROPOSAL] Training (HR Module)

Training under Human Resource Module is one of the most used tool in our Company and we wanted to proposed some improvements that we believe can be beneficial to everyone. Here are some important notes. Please feel free to comment and start a discussion for improvements. Our team is very willing to have this in the core and will initiate Pull Request for this.

  1. There are lots of cases wherein a Training/Seminar is broken down into different groups for training schedules or different locations. Currently, this is not possible in the Training Event’s current design as it only caters 1 training per 1 schedule (1 Start Date and 1 End Date). It would be awesome to add this feature. Below is the mockup. We have transfered the fields Start Time, End Time, Location and Course in a child table with a Title/Name.

  2. In relation to number 1, we need to identify in which schedule the Attendees have attended. So we need a link between Training Schedule and Attendees . We added the link for Training Schedule in Training Event Employee (Attendees) child table. Also, we added a set query script for the link field to filter only Training Schedule for this Training Event. Another thing is that, we need to have Attendees child table depend on when Training Schedule is at least populated and saved. Please see Mockup below. Let us know if this is a good design or if you have any more suggestion for improvements.

  3. We need to have the Employee Name, Attendance and Training Schedule on the List view of Attendees child table because these are important fields to be viewed directly.

  4. Calendar View. A calendar view for Training Event will be very helpful to the person assign to track these events and make the necessary decisions when it comes to room bookings, room capacity, trainer availability and the likes. Take note that the Calendar view should also follow/show the Training Schedules inside the Training Event.

  5. Process Qualification. Some Trainings/Seminar can give certain Qualifications to the attendees, thus the giving of certain certificates. It would be best that we can also expand into this and create new Doctype to link to Training when Type is Seminar or Workshop. We can create a Process Qualification Doctype linked to Training Event .

Any comments/suggestions will be greatly appreciated. We will be starting to send PR for some minor changes into the core as well.

Regards,

Dori

8 Likes

Why not have separate training events for separate locations?

Hi @rmehta! That is our workaround currently but we thought it would be best to track them as one since it is just the same training but with different schedule because of the following scenarios below. Also, users tend to put Employee Training Group 1 , Employee Training Group 2 … and which we believe is very impractical and we wanted to avoid.

  1. Some attendees are absent requiring another schedule for them
  2. Room capacity, that is why we need to make separate schedule with the same training
  3. First half of the training is on a different schedule and location and the second half is in another schedule and location but included in the same training event.
1 Like

Maybe there should be a separate Training Type that can be common for both? What you are suggesting also feels like a work-around!

Hi @rmehta ! Type is too general for this as identifier. How about another Doctype called “Training” to group Training Events? Would this be a good idea than the above? Our main goal to have the design above is to Group Training Events into a single Training because it has the same information aside from the Location, Time and attendees. And if we will build a Training Report, we will be able to see who participated in the same training regardless of schedule and location. :smiley:

If you are really interested, we should look at how popular LMS systems are setup. Because we may end up doing that at some point.

We can then build content and modules and assignments into a really cool LMS system. I am sure a lot of companies would love this.

(Stretching a bit, maybe we can also build a frappe tutorial on top of this! :smile:)

1 Like

Hi @rmehta! We are interested in contributing in this module to be beneficial to our company and to Everyone. We can take on one feature at a time related to building a cool LMS! :smiley:

Sure, one feature at a time, but the design has to be such that it can easily be extended. What you are proposing is not very elegant IMO!

Hi @rmehta ! Yes we totally understand that the design should be good and easily extended that is why we wanted to ask feedback from the community as well before developing anything. :smiley: Anyway, this is an example of our goal. This is from an opensource web based LMS that I have found:

As we can see below, there are different Training created.

When you click on training, there are different sessions inside. Like a different Training Events from a Training.

What do you think?

@creamdory I will agree with @rmehta that this is a workaround.

Basically Training Event as it is covers all the suggested features except Certificate.
You just need a simple “Overview Board”

For example : A new Doctype Training Board ( I partial like the name :P) …

This doctype is a partial duplicate from Training Event with all fields expect start - end dates. Attendees in Training Board should be a list of pple that have the right to participate and a flag if they had it or not.

Now in Training Event a button is need like “Make” where you select from Training Board. From that you get auto filled all the info , for example location, attendees list where you can mark who actually came or not

After that the “Training Board” need only a list of related Training event as reference and a list who is supposed to participate and never did (simple html list like Customer Address or something else). Another suggestion is toggle checkbox if the Trainer is company Employee so its not a data field but a dropdown list with email and phone fetch from db.

The reason for all the above is what a Training Board list the possible Training that can be happend in all times and Training Event is actually then it happend and who attended.

1 Like

Hi @kickapoo! I like this idea and I think this makes sense. I’ll be making a simple mockup to show this feature. Also, I believe most of the LMS system I have look into has this functionality. Though I wanted to point out the existence of Course in Training Events and have this differentiated from the proposed Training Board.

  1. Course is under School module and is restricted to Education domain.
  2. Course is not always applicable in Training Event Types so this should be depends on. Example scenario is a Company training.
  3. Currently, seems that Training Events is shared in HR and School modules (currently it is located in HR under Training). Should this be separated or not?

Let us know your thoughts @rmehta . Thanks!

1 Like

Hi @kickapoo @rmehta Here is the design mockup base on the current proposal. We can improve this by adding other necessary fields , validations and functionalities.

Training Board

  • It is almost a copy of Training Event but without the Start Time, End Time and Location.
  • It has a Button Training Event to create Training Event from the current record.
  • It has a Dashboard to see Training Event references.
  • Once Training Event is generated from Training Board, it should fetch Attendees with “Open” Status
  • Once a Training Event link to the Training Board is submitted, Attendees status should be “Completed” for both Training Board and Training Event.

This is the example Training Event Generated.

Let me know any comments or suggestion to even make this better.

Cheers,

Dori

@creamdory thanks for the mockups! So much better than reading text :slight_smile:

Why “Training Board”? It does not seem to recall anything. Why not just tag them them based on the type of training for your reports and go for multiple training events. That seems to be the fastest way to make this happen.

1 Like

Hi @rmehta ! Here is one problem if we use “Type” as a way of grouping.

Type is very General. For this scenario, Sample Training Group 1 and Sample Training Group 2 is supposedly 1 training with different schedule. So as Another Training Group 1 and Another Training Group 2. But they have the same type which is “Seminar”. If there will be lots of Training Events created and the naming convention is not consistent, it will be really hard to tell which events are in the same Training.

With Training Board or we can call it Training , it can group Training Events not only according to type.

Cheers,

Dori

Here would be my suggestions on how to achieve what’s being asked.

A Training Board / Training doctype with many of the fields currently in Training Event. The main differences between that and the current Training Event document are:

  • The Training document has a table with a list of training events
  • The document has a list of users / employees that have a relationship to the training (mandatory or optional)
  • The Training document does not have any dates

The new Training Event document is a partial copy of the Training document, except that it has a start and end date and a list of attendees.

When the Training document is submitted, an invitation email is sent to each employee in the Training list and they are given the option of joining any of the sessions or rejecting the training (if the employee is listed as optional). When the employee joins the session, they are added to the Training Event attendee list. When the Training Event is finished, the actual attendance is finalized and the document is submitted, which will then indicate who attended the session. This can backfeed into the Training document so that it’s easy to see who has actually completed the training.

The Training Events could be listed in the Calendar (for each employee).