Best practice forum (Archived)

Multiple positions/jobs data structure question

 
Simon Coggins
Multiple positions/jobs data structure question
by Simon Coggins - Wednesday, 8 June 2016, 3:50 PM
Group Totara

We are working on adding support for multiple positions (or multiple jobs as we are calling it to avoid confusion with the position hierarchy). We have a question around how information on multiple jobs is structured in external HR systems, as it relates to how we can get it into Totara.

It would be really useful to understand a bit more how organisations who have users with multiple jobs have that data structured, and the preferred format for importing it into Totara. Below are three options we’re considering. Would be great to get feedback on which fits best - or if there’s another approach we haven’t considered. Also if anyone is able to provide a real world example of the actual data which includes multiple jobs (short snippet, anonymised if necessary) that would be fantastic.

Option 1: import data structure - one row per user per job
Firstname  LastnameOther user fields Job IDJob title PositionOrganisation ManagerManager Job ID 
User A User A... 1Dept Lead......NoneNone
User B User B... 1Lab Manager......User A1
User B  User B... 2Scientist......User D1
User C User C... 1Lab assistant......User B1
User D  User D ... 1Chief scientist... ... NoneNone
User E User E... 1Junior scientist......User B2

Option 2: One row per user

First Last Other user fieldsjob1_id job1_titlejob1_posjob1_orgjob1_managerjob1_managerjobid job2_idjob2_titlejob2_posjob2_orgjob2_managerjob2_managerjobid
A A ...  1Dept Lead ... ... None None  
B B ...  1Lab manager ... ... User A 1 Scientist ... ... User D 1
C C ...  1Lab assistant ... ... User B 1  
D D ... 1 Chief scientist...... NoneNone       
E E ...  1Junior scientist...... User B 2      

Option 3: Separate job import, one row per user per job

User ID Job ID Job title Position Organisation Manager ID Manager Job ID
A 1 Dept Lead ... ... None None
B 1 Lab manager ... ... User A 1
B 2 Scientist ... ... User D 1
C 1 Lab assistant ... ... User B 1
D 1 Chief scientist ... ... None None
E 1 Junior scientist ... ... User B 2
Our preference is for Option 3, as option 1 leads to unwanted duplication of user data, and option 2 could lead to a large number of columns. However we are keen to understand if that format matches the structure of existing data.

In addition, while analysing the requirements for this we’ve identified that we think we need to modify how the assignment of a manager is handled in the system. Currently a manager is assigned to a specific user. However we believe that with multiple jobs it makes more sense to assign someone as being managed by a user in a specific job. By doing that we are able to track not just who the user’s manager is but why. See the diagram below for an example that hopefully makes the distinction clear. 

Diagram showing how manager relations would be formed

In this example, when reporting “down the hierarchy” User D would see details for User B and E but not C, whereas User A would see B and C but not E. When reporting "down the hierarchy" for a user with multiple jobs (user B in this example) you would have the option to choose to report on a specific job or the all jobs.

We’d be keen for feedback on whether that maps to people’s real world use cases for multiple jobs.

Simon


Simon Coggins
Re: Multiple positions/jobs data structure question
by Simon Coggins - Wednesday, 8 June 2016, 5:50 PM
Group Totara

Also just want to make it clear that this is designed to meet the use case of one user with multiple jobs. As such the behaviour is designed for that use case.

There is a separate, but related use case of having more than one manager acting as a user's manager in a single job. We've looked at if we can solve that at the same time but unfortunately it is technically quite difficult to handle. There is a potential solution, that we could add later, but it's not going to be in scope for version 9.

I mention that because some people may have thought they could meet the multiple managers per job use case by having multiple jobs - e.g by creating two jobs for a user then assigning different managers to each. I just want to make clear that won't work - for the reason described in the second to last paragraph above - the manager relationship is constrained to the specific job it is linked to.

Simon

This forum post has been removed
Wednesday, 8 June 2016, 11:12 PM
The content of this forum post has been removed and can no longer be accessed.
Daniel Bond
Re: Multiple positions/jobs data structure question
by Daniel Bond - Thursday, 9 June 2016, 1:26 AM
Group Most helpful contributor 2023
Really, option 3 is the only correct way to structure the data, so I would suggest that is selected.

Option 1 immediately introduces issues of data inconsistency (what happens if one of the "Other User Fields" is first name, surname, etc. and the two rows have different values for example).

Option 2 is a horrible way to structure data from a normalisation perspective, and I would really hope that no commercial HR system would do it that way. It would make the ability to have N positions very tricky (because you wouldn't want to have infinite numbers of columns, and every job custom field would require N additional columns).

To give you a real world example, our HR system has a 1 to many relationship between Employee (the person) and Assignment (the role). There is a 1 to many relationship between Supervisor's Assignment (the manager's role) and Assignment (the employee's role):

UserID Assignment Name Supervisor
123 123 Dan 456
123 123-2Dan 789-1
456 456 Donna 789-2
789 789-1 Dave 999
789 789-2 Dave 999
There is a 1 to many relationship between Organisation (the department) and Assignment (the role). There is also a 1 to many relationship between Position (the generic role that several people might share) and Assignment (the actual individual's job).

Happy to provide any other information you might need.

David
Re: Multiple positions/jobs data structure question
by David Shaw - Thursday, 9 June 2016, 7:09 AM
 

Hi Simon,

It's probably worth pointing out that systems such as SAP are completely configurable to the client's requirements so there is no standard way that clients store employees and jobs associated.  There is always a degree of discussion with their IT team (normally quite lengthy and painful) in how to structure the data sent to us.

It's also not guaranteed that they work off a defined list of job roles or descriptions and in a lot of cases the job roles are manually input by the managers so there is a lot of disparity between spellings and actual naming for the same job.

Something we also run across a lot is that a job role is different from the job description:

job role = The actual job that the employee holds has an ID.  It's important to realise that this isn't the description for the job.  e.g David and Jo are both cleaners and their job role IDs are 123 and 456 respectively.  The ID would be unique to the individual even though they do the same job.

job description = the title of the job e.g cleaner.  They might have an ID associated with this but not always and that is what we then link to the positions hierarchy if the client has any use for it.

I'm not sure if that makes any difference to your work but it's a nice to know.

We have two large clients using AX and SAP as their HR systems who have multiple job roles and they both follow the same data structure:

  • SAP holds a single employee record with an employee ID.
  • SAP lists the different job roles under the employee ID.  There is no link to a role description

My preference is for option 3 (for all the same reasons as Dan has outlined)

And regarding the manager hierarchy I think that your suggestion is fine.  I personally would have defined the manager links the other way round, so that instead of a learner having managers listed against them, you define who a manager's line reports are against the managers record.  That way managers already have the concept of multiple line reports stored against them, which I think makes it easier to set up multiple managers for a single user with the same role (you just add the line report user account to more than one manager and define them as primary/secondary etc).

David

Alex Büchner
Re: Multiple positions/jobs data structure question
by Alex Büchner - Thursday, 9 June 2016, 10:46 PM
 

We have implemented a number of projects with multiple positions. Migrating these across would be easier with Option 2 since we have taken this route via custom development. However, going forward, we believe that Option 3 is the better solution for reasons already outlined by others

Alex Büchner - Synergy Learning

Steph Wild
Re: Multiple positions/jobs data structure question
by Steph Wild - Friday, 10 June 2016, 3:22 AM
Group Learn Site Administrator

Hi,

Yes, I agree with others in that I think Option 3 is the best solution, our HR systems is exactly the same as Dan's .  I also agree that the manager hierarchy diagram is the way to go.

Regards
Steph

? ?
Re: Multiple positions/jobs data structure question
by ? ? - Friday, 10 June 2016, 4:34 AM
 

Hi 

I received this reply from one of my clients in posing the question about multiple roles.

"Project environments come to mind here.  Alternatively it may be better to refer to this a secondments (a more universal concept that would have the similar characteristics but is possibly more intuitive to non-project people).

The unique attribute of a secondments is that they're temporary and come an end after a given period.  Staff are normally seconded to the initiative and report into an alternative manager.  Secondments often consume only a portion of an employees FTE.  The thread caters well to the concept but I wonder if they've considered assigning a start / end date for the job concept."

I just thought I'd share the insight.

Regards

Markus Du Plessis - Strat Cafe

Georgi Dimitrov
Re: Multiple positions/jobs data structure question
by Georgi Dimitrov - Sunday, 12 June 2016, 11:39 PM
Group Partners

Hi Simon, 

Option 3 seems to fit our needs. As mentioned from the others here, most of the clients have different structure (mostly from SAP) of the data they provide us with. 

As about reporting “down the hierarchy”, what are your plans for a standard look deeper down the hierarchy? We have clients, who have the requirement to look down the three structure of their subordinates with possible restrictions at each level, In your example that will be an access bellow the User: E, so for example User D will have a look of the users, who are the subordinates of User E and so on, until the last position in the three structure.  

Regards, 

Georgi. 


This forum post has been removed
Tuesday, 12 July 2016, 7:25 AM
The content of this forum post has been removed and can no longer be accessed.
Simon Coggins
Re: Multiple positions/jobs data structure question
by Simon Coggins - Tuesday, 12 July 2016, 3:16 PM
Group Totara

1. Will the use of multiple positions be an optional setting?

Yes, our intention is to provide an optional setting - when enabled multiple job will be displayed, can be added and will function. When disabled, users will only be able to add one job, any additional jobs will be hidden, and any jobs after the first will have no effect.

2.  Will it be possible to run reports based on only primary position, or only secondary position (not always both)?

We are still sorting out the details for this. Or plan at the moment is to provide columns/filters that match against all values for a job, as well as columns/filters for the 1st job (to provide backward compatibility). Providing columns/filters for all jobs (2nd, 3rd, ...) is feasible but would lead to a very large number of column options (because for each job you'd need manager, position, organisation, title, etc).

Also in the current version the jobs are named per user instead of site wide so there isn't really a concept of a consistent "primary" job anymore.

3. What happens if a user’s secondary job creates a contradiction in audience rulesets? 

As you say, it's possible to do this already. There is not much we can do about this, I'm afraid it's up to you to define the audience rules correctly to avoid pathological cases.

4. I wonder if it’s worth looking at adding in new functionality to enable easier self-service management of jobs?

We'd be happy to consider these as feature requests, but they are out of scope for the first version of this feature. Could you please file feature requests for each of these individually and we'll look at prioritising them in due course.

5. I can see why this wouldn’t allow ‘down the hierarchy’ reporting, but would this work for allowing a simple staff/manager relationship to be set? 

Yes, for a simple, single level manager relation this will work fine. The only disadvantage is that you end up with 2 job assignments for the same user, so potentially you have to set the same organisation etc twice, or use a "fake" job title for the second job.

Simon


3. 

This forum post has been removed
Wednesday, 13 July 2016, 9:58 AM
The content of this forum post has been removed and can no longer be accessed.