SharePoint Timesheet Solution - Part 1
As a Manager, Director or Project Manager it is vital to track spending to give upper level execs a true ROI for work. This helps justify expenditures presently and forecast more accurate needs both in resources and material in the future. The only true way to gather this type of data is to measure time spent on projects and work. The caveat is, of course, that the data being entered is accurate.
A time tracking tool will allow you to track and cost analyze current work loads and based on that predict future needs. Think Agile methodology and estimation and you get the idea.
Developers are expensive and building solutions is even more expensive. I wanted a solution that was easy (read : cheap) to maintain and required little or no downtime in enhancement deployment. Essentially I didn't want to go through code deployment and feature stapling and so many other things that I wouldn't dare list them all here.
As a developer I see this as a two-sided coin. I have much more control of functionality at the API level and web part development is pretty easy. Kick in some Ajax and other features and it even starts to get robust. Also, I hate XML and XSLT. I think of it as a requirement to learn but not something I truly enjoy.
The Requirements
Let me start by laying out some requirements. If you see that you have some or most of these requirements then by all means read on...
So here goes:
SharePoint 2010 TimeSheet System
This will take a few entries to get it all in so be patient as it may take me a few days to get it all up. Let me start by showing you the end results.
The following image is essentially the meat and potatoes of the Time Entry system.
If you are anything like me you see that and think, "how am I supposed to tell what any of that does?!?". Well let me break it down for you.
We will start with the Time Entry section first:
Ok, lets dissect this thing and see what makes it zoom. First, it has a series of fields that an employee will need to complete. It has default values (where appropriate) for these fields as well. Lets go over them.
Source: Think Client here - This is a maintainable list of clients that you wish to bill time to.
Employee: Again, this is a list derived from a security group in SharePoint. Easy enough. Add people to the group and they show up on the list. The list will default to to the currently logged in user but you are allowed to enter time for other individuals as needed.
Week: This is the current week you are gathering time against. In this system this is also a list. It uses a work flow and some fancy time math to allow a user to edit the past 2 and next 2 weeks time as well. Additionally you can mark any week as active and it will show up in the drop-down as needed.
Project: This is a nice one. You have a list of projects you maintain. The Project lists has fields like: Project Name, Owner, Project Code, Cost Center, Active, etc, etc. Essentially any active projects show up here. You can safely delete these projects as well without corrupting the reporting data (separate list).
Phase: Think project phases. In the example I have we use Projects to sort out both KLO activity as well as EPO projects. Each of those entries may have different phases. For example: KLO for server maintenance does not need a Development Phase but that 5010 Implementation Project sure will. We solve this by allowing you to associate Projects with distinct phase data. This also allows you to report on specific types of phases. For example: How much Development Phase work has the developer team done in the past quarter? These lists are related (Phase and Project) so as you change the Project the Phase list will change to reflect the data associated with the current project.
Mon-Sun: Suffice it say this one should be easy enough to deduce. It allows for 0-24 hours for each day. If you have found a way to bill beyond a 24 hour period please let me know ASAP. I could use this information as I just sent my daughter to college.
Notes: Because you absolutely positively need to know what in the world they are entering this time for. Well, OK, it is optional.
There are some optional drop downs that are hidden in this version as well. Some folks don't like the idea of dropping everything into a Project list. So we have a fix for those needy folks.
Entry Type: This sits right infront of the Project field. When enabled it has a list that displays entry types that are linked to lists in the TimeSheet system. For example: Projects Entry Type links to the Projects List. There is a Products Entry Type (and a Products List) and an Administration Entry Type (linked to a Admin List for vacations and all that jaz).
If you change Entry Type the form will replace Project drop downs with the appropriate drop down for Products, Admin, etc. lists.
The final step is to hit the Submit Button. Once you hit submit the data is shuffled into a view that is right below the time entry screen. This view keeps a running tally on the current entries you have made. To keep things light it will only display those entries that have been made against the currently active weeks. This avoids lengthy updates and cycling through pages of data.
Here is a quick image of the Data Entry View section of the page. From here you can Edit, Delete and filter your time entry to make sure you are doing it right.
Just like a regular Data View web part this allows you to sort and filter data. It also utilizes AJAX (see the pretty refresh icon in the upper right corner) to keep your page updated periodically if things get lazy.
It provides a top row total based on the current sorts and provides the "Add New Item" button if you need it (you don't).
Tomorrow I will go over this view and how it works with the form we just went over for adding time. Luckily it all does it using the same form and without any pop-ups. Makes everyone happy!
If you have any questions or comments just let me know. If you are ready go on to Part 2.
A time tracking tool will allow you to track and cost analyze current work loads and based on that predict future needs. Think Agile methodology and estimation and you get the idea.
Developers are expensive and building solutions is even more expensive. I wanted a solution that was easy (read : cheap) to maintain and required little or no downtime in enhancement deployment. Essentially I didn't want to go through code deployment and feature stapling and so many other things that I wouldn't dare list them all here.
As a developer I see this as a two-sided coin. I have much more control of functionality at the API level and web part development is pretty easy. Kick in some Ajax and other features and it even starts to get robust. Also, I hate XML and XSLT. I think of it as a requirement to learn but not something I truly enjoy.
The Requirements
Let me start by laying out some requirements. If you see that you have some or most of these requirements then by all means read on...
- Multiple Teams needing to track time on an hourly basis.
- The ability to track time in multiple categories (Projects, Products, etc)
- The ability to customize the categories of each type (again see Projects, Products, etc.)
- The ability to report on the data entered.
- An easy way to enter data
- Use SharePoint to gather, store, and report on entered data.
- Minimal code required (or almost no code required)
So here goes:
SharePoint 2010 TimeSheet System
This will take a few entries to get it all in so be patient as it may take me a few days to get it all up. Let me start by showing you the end results.
The following image is essentially the meat and potatoes of the Time Entry system.
Note: I had to remove data and type in some demo data - sorry, yeah it's not pretty! |
If you are anything like me you see that and think, "how am I supposed to tell what any of that does?!?". Well let me break it down for you.
We will start with the Time Entry section first:
Ok, lets dissect this thing and see what makes it zoom. First, it has a series of fields that an employee will need to complete. It has default values (where appropriate) for these fields as well. Lets go over them.
Source: Think Client here - This is a maintainable list of clients that you wish to bill time to.
Employee: Again, this is a list derived from a security group in SharePoint. Easy enough. Add people to the group and they show up on the list. The list will default to to the currently logged in user but you are allowed to enter time for other individuals as needed.
Week: This is the current week you are gathering time against. In this system this is also a list. It uses a work flow and some fancy time math to allow a user to edit the past 2 and next 2 weeks time as well. Additionally you can mark any week as active and it will show up in the drop-down as needed.
Project: This is a nice one. You have a list of projects you maintain. The Project lists has fields like: Project Name, Owner, Project Code, Cost Center, Active, etc, etc. Essentially any active projects show up here. You can safely delete these projects as well without corrupting the reporting data (separate list).
Phase: Think project phases. In the example I have we use Projects to sort out both KLO activity as well as EPO projects. Each of those entries may have different phases. For example: KLO for server maintenance does not need a Development Phase but that 5010 Implementation Project sure will. We solve this by allowing you to associate Projects with distinct phase data. This also allows you to report on specific types of phases. For example: How much Development Phase work has the developer team done in the past quarter? These lists are related (Phase and Project) so as you change the Project the Phase list will change to reflect the data associated with the current project.
Mon-Sun: Suffice it say this one should be easy enough to deduce. It allows for 0-24 hours for each day. If you have found a way to bill beyond a 24 hour period please let me know ASAP. I could use this information as I just sent my daughter to college.
Notes: Because you absolutely positively need to know what in the world they are entering this time for. Well, OK, it is optional.
There are some optional drop downs that are hidden in this version as well. Some folks don't like the idea of dropping everything into a Project list. So we have a fix for those needy folks.
Entry Type: This sits right infront of the Project field. When enabled it has a list that displays entry types that are linked to lists in the TimeSheet system. For example: Projects Entry Type links to the Projects List. There is a Products Entry Type (and a Products List) and an Administration Entry Type (linked to a Admin List for vacations and all that jaz).
If you change Entry Type the form will replace Project drop downs with the appropriate drop down for Products, Admin, etc. lists.
The final step is to hit the Submit Button. Once you hit submit the data is shuffled into a view that is right below the time entry screen. This view keeps a running tally on the current entries you have made. To keep things light it will only display those entries that have been made against the currently active weeks. This avoids lengthy updates and cycling through pages of data.
Here is a quick image of the Data Entry View section of the page. From here you can Edit, Delete and filter your time entry to make sure you are doing it right.
Just like a regular Data View web part this allows you to sort and filter data. It also utilizes AJAX (see the pretty refresh icon in the upper right corner) to keep your page updated periodically if things get lazy.
It provides a top row total based on the current sorts and provides the "Add New Item" button if you need it (you don't).
Tomorrow I will go over this view and how it works with the form we just went over for adding time. Luckily it all does it using the same form and without any pop-ups. Makes everyone happy!
If you have any questions or comments just let me know. If you are ready go on to Part 2.
Comments
thanks
Timesheet System Application
Timesheet
Did you manage to achieve this in 2013?
This is a great solution for Time sheet management in sharepoint.
I am also looking to develop this kind of time sheet entry, can you please guide me how to do it using out of box features.
If you have a document for how to prepare Time sheet Management can you please send it to my mail-id :sangani.harikrishnareddy@gmail.com
Great job!
I am also interested in your solution and I have the same request as sangani harikrishnareddy! If you have a document for how to prepare Time sheet Management can you please send it to my mail address: patricia.donnadieu@amersports.com
Thanks for sharing!
Patricia
Gen
Bo
doug.seville@gmail.com
Has anyone received the solution.
Please let me know.
Online Timesheet