Dec 5, 202311:35 AM - edited Dec 5, 202311:37 AM
Contributor
Custom Object or Property?
SOLVE
Hi Community! Looking for some advice/workaround to an issue i'm facing in trying to record data of two elements: customers and training results.
I'm not sure if I should create an Object or just add Properties.
In this case I want to register a training and map contacts to it but also store information on both the training and on the contact specific to that training taken. A customer can take more than one training and I need to record information on whether the customer attended, the score results of a test, etc.
- First I thought about creating an Object for training and then associating customers to it. This would enable me to create one record per training and then associate customer to it. By doing this however, I couldn´t add information specific to the person taking the training (i.e., I would be able to know if customer X took the training A but I couldn´t add the test score each customer had in that training).
- Then i thought of adding a property for contacts called Training and fill it up there. But then in this case I will miss the ability of tracking individual information on that training and the customer. If customer X takes the same training twice, I can´t overwrite the property "Training Date".
- I also thought of association labels, but since I have more than one property to map this then I believe it's unmanageable.
I hope I made myself clear with this and that someone has managed to get ahold of a solution for this.
Offhand it seems like the best approach might be a SET of properties on the contact object to track the contacts history of trainings and scores.
Property: Recent Training Class
Property: Recent Training Score
Property: Historical Training Class 1
Property: Historical Training Class 1 Score
Property: Historical Training Class 2
Property: Historical Training Class 2 Score
Property: Historical Training Class 3
Property: Historical Training Class 3 Score
Then build a contacts based workflow that runs each time "Recent Training Class AND Recent Training Class Score are known. Be sure to enable re-enrollments.
Branch on Historical Training Class 1 is Known
If False
Copy Recent Training Class to Historical Training Class 1
Copy Recent Training Score to Historical Training Class 1 Score
If True
Branch on Historical Training Class 2 is Known
If False:
Copy Historical Training Class 1 to Historical Training Class 2
Copy Historical Training Class 1 Score to Historical Training Class 2 Score
Copy Recent Training Class to Historical Training Class 1
Copy Recent Training Score to Historical Training Class 1 Score
If True
Branch on Historical Training Class 3 is Known
If False
...and so on for as many historical courses as you wish to track. You could also have a "Recent Training Class Date" property to track the date of the current class and copy it forward as well if you want to track the trainings attended, the scores, AND the dates of the trainings.
Hope this helps!
- Trevor If my post solves your problem, please accept it as a solution.
That depends on what you mean by "mapped to each contact" (copying this into a contact property or having the association between the contact and training object). I assume it is the former, which would raise the question - why do you want that information at contact level, meaning what do you want to do with that information - a list, a view, a report?
Going down the custom object route would mean you can have a rich training object, and associate multiple instance of that object with contacts. Let's day example:
you have 100 training object records
each record is associated with only one contact
let's assume training A was run twice this year with 10 people each, meaning:
20 of those 100 training object records would have Training A as Type
10 would have date X as training date
10 would have date Y as training date
each would be associated to 1 contact
each would have its own score
That means you can now run reports or create lists on either the training custom object and/or the associated contacts:
custom object report of Training A sold/taken this year - all custom object training records where training type = A
contact report of contacts who have take training A this year - all contacts who have an association with the custom training object where training type = A
list of contacts who passed/failed/achieved a particular score in Training A this year
Does that make sense.
Think of the custom training object as your container that is the template for records which then have a relationship to other object records. Selling 20 trainings means you will have 20 custom training object records, not one record with 20 contacts. At least that's how would see it and implement it.
To me this is similar to deals and the deal object. If 20 different people by the same product or service you would also have 20 different deals, one for each contact. The deals itself would be pretty similar - have the same product/service, the same deal amount, different close dates, etc. But you would still know sold a certain product/service 20 times.
I hope that helps.
Frank
Found my comment helpful? Great! Please mark it as a solution to help other community users.
Offhand it seems like the best approach might be a SET of properties on the contact object to track the contacts history of trainings and scores.
Property: Recent Training Class
Property: Recent Training Score
Property: Historical Training Class 1
Property: Historical Training Class 1 Score
Property: Historical Training Class 2
Property: Historical Training Class 2 Score
Property: Historical Training Class 3
Property: Historical Training Class 3 Score
Then build a contacts based workflow that runs each time "Recent Training Class AND Recent Training Class Score are known. Be sure to enable re-enrollments.
Branch on Historical Training Class 1 is Known
If False
Copy Recent Training Class to Historical Training Class 1
Copy Recent Training Score to Historical Training Class 1 Score
If True
Branch on Historical Training Class 2 is Known
If False:
Copy Historical Training Class 1 to Historical Training Class 2
Copy Historical Training Class 1 Score to Historical Training Class 2 Score
Copy Recent Training Class to Historical Training Class 1
Copy Recent Training Score to Historical Training Class 1 Score
If True
Branch on Historical Training Class 3 is Known
If False
...and so on for as many historical courses as you wish to track. You could also have a "Recent Training Class Date" property to track the date of the current class and copy it forward as well if you want to track the trainings attended, the scores, AND the dates of the trainings.
Hope this helps!
- Trevor If my post solves your problem, please accept it as a solution.
When you say "I couldn´t add information specific to the person taking the training (i.e., I would be able to know if customer X took the training A but I couldn´t add the test score each customer had in that training)." - I am not sure I am not really following or understanding what the problem is.
You would the be able to see, contact X hast 2 training objects associated, and these two objects have the following information:
Name: Contact x - Training A, Training Type: Training A, Training Date: 11 Nov 2023, Test Score: 90/100, Training Category: Category 1
Name: Contact x - Training B, Training Type: Training B, Training Date: 7 Jun 2023, Test Score: 80/100, Training Category: Category 1
You can now build list or reports based data contained in the custom object - e.g. show me all contacts who had a training in 2023 and took "Training A".
I hope that helps.
Frank
Found my comment helpful? Great! Please mark it as a solution to help other community users.
Dec 7, 202311:35 AM - edited Dec 7, 202311:35 AM
Contributor
Custom Object or Property?
SOLVE
Thanks for your reply Frank!
I acknowledge I wasn´t clear enough. But following your example if I create the object "Training" and define the "Test Score" as a property for that object, how is that mapped to each contact?
Would´t I have something like :
- Training A , Score 80/100, Associated Contacts: X, Y ,Z ?
- Training B , Score 50/100, Associated Contacts: A, Y ,Z ?
That depends on what you mean by "mapped to each contact" (copying this into a contact property or having the association between the contact and training object). I assume it is the former, which would raise the question - why do you want that information at contact level, meaning what do you want to do with that information - a list, a view, a report?
Going down the custom object route would mean you can have a rich training object, and associate multiple instance of that object with contacts. Let's day example:
you have 100 training object records
each record is associated with only one contact
let's assume training A was run twice this year with 10 people each, meaning:
20 of those 100 training object records would have Training A as Type
10 would have date X as training date
10 would have date Y as training date
each would be associated to 1 contact
each would have its own score
That means you can now run reports or create lists on either the training custom object and/or the associated contacts:
custom object report of Training A sold/taken this year - all custom object training records where training type = A
contact report of contacts who have take training A this year - all contacts who have an association with the custom training object where training type = A
list of contacts who passed/failed/achieved a particular score in Training A this year
Does that make sense.
Think of the custom training object as your container that is the template for records which then have a relationship to other object records. Selling 20 trainings means you will have 20 custom training object records, not one record with 20 contacts. At least that's how would see it and implement it.
To me this is similar to deals and the deal object. If 20 different people by the same product or service you would also have 20 different deals, one for each contact. The deals itself would be pretty similar - have the same product/service, the same deal amount, different close dates, etc. But you would still know sold a certain product/service 20 times.
I hope that helps.
Frank
Found my comment helpful? Great! Please mark it as a solution to help other community users.
Hi Frank! Thanks for all that detailed explanation, all is clear now.
You were talking about associatiing one contact per training record, I was thinking of having one Record per Training type and associating all contacts to that record.
I see now what you are proposing and it makes sense! Thanks for the clarification!