A Simple Time Sheet Solution - Part 2


Userlevel 4
Badge +6

Greetings again!!!

Before anything, I would like to thank my long time friend; Yaaseen Sadulla for producing the instrumental I used in this intro!!

 

 

As promised, here's part 2 of my Time sheet blog series. In this part I've included a breakdown on how the solution has been put together:

 

The Requirement

The Projects team would like a Time sheet solution that:

  • Allows the project team to control the number of weeks that employees can submit overdue time sheets
  • Allow the project team to manage:
    • Projects (Project Name, Category)
    • Employees which can submit Time sheets and also how many Time sheets each employee has submitted
  • Consolidate all submitted Time sheets into a single SharePoint list for reporting
  • Allow managers to easily approve submitted time sheets
  • Allow managers to reject time sheets, notify, and send them back to the Employee in Draft mode for amendment
  • Allow Employees to save their Time sheets as a draft, so that they are able to work on it later

The Solution

The proposed solution will consist of the following technologies:

  • SharePoint
  • Nintex® Workflow
  • Nintex® Forms

Lists & Libraries

The solution will consist of a standard Team Site Template including the following custom SharePoint lists:

#

Title

Description

1.

Employees

A list containing all the Employees who are authorised to submit a Time sheet

2.

Projects

A list containing all projects that Employees can bill time against

3.

Time sheets

A list storing all submitted Time sheets

4.

Time sheet Reports

A list storing a consolidated view of approved Time sheets

5.

Week Ending

A list storing all the Week Ending days for the year

 

Employees

The Employees list has the following SharePoint Configuration:

Column

Type

Notes

Initials

Single line of text

 

Modified

Date and Time

System Generated Column

Created

Date and Time

System Generated Column

Full Names

Person or Group

Allow selection of People Only

Time sheets

Lookup

Count Related Lookup to Employees

Created By

Person or Group

System Generated Column

Modified By

Person or Group

System Generated Column

 

Projects

The Projects list has the following SharePoint Configuration

Column

Type

Notes

Project Name

Single line of text

 

Modified

Date and Time

System Generated Column

Created

Date and Time

System Generated Column

Category

Choice

Choices:

 

Administration

Crestan Corporate Office

Crestan Head Office

ACME

Leave

Public Holidays

Training

ProjectNameCategory

Calculated

=Category&" - "&[Project Name]

Created By

Person or Group

System Generated

Modified By

Person or Group

System Generated

 

Time sheets

The Time sheets list has the following SharePoint Configuration

Content Type

Scope

Notes

Time sheet

Site Collection

Default Content Type

 

Time sheet Content Type

The Time sheet list makes use of the Time sheet Content Type with the following configuration:

Column

Type

Notes

Created

Date and Time

System Generated Column

Title

Single line of text

 

Employee

Lookup

Lookup from Employees

In this column:

Initials

EmployeeID

Single line of text

 

Mon

Number

Min: 0
Max: 12

Number of decimal places:
1

Tue

Number

Min: 0
Max: 12

Number of decimal places:
1

Wed

Number

Min: 0
Max: 12

Number of decimal places:
1

Thu

Number

Min: 0
Max: 12

Number of decimal places:
1

Fri

Number

Min: 0
Max: 12

Number of decimal places:
1

Sat

Number

Min: 0
Max: 12

Number of decimal places:
1

Sun

Number

Min: 0
Max: 12

Number of decimal places:
1

Total Hours

Calculated

=SUM(Mon,Tue,Wed,Thu,Fri,Sat,Sun)

LineItems

Multiple lines of text

Plain text

Timesheet Status

Choice

Choices:

 

Draft

Submitted

Approved

Work Date

Date and Time

 

 

If you would like to view more information on the form configuration, you can refer to part 3 of my blog. 

Time sheet Reports

The Time sheet reports list has the following SharePoint Configuration

Column

Type

Notes

Title

Single line of text

 

Modified

Date and Time

System Generated Column

Created

Date and Time

System Generated Column

Mon

Number

Min: 0
Max: 12

Number of decimal places:
1

Tue

Number

Min: 0
Max: 12

Number of decimal places:
1

Wed

Number

Min: 0
Max: 12

Number of decimal places:
1

Thu

Number

Min: 0
Max: 12

Number of decimal places:
1

Fri

Number

Min: 0
Max: 12

Number of decimal places:
1

Sat

Number

Min: 0
Max: 12

Number of decimal places:
1

Sun

Number

Min: 0
Max: 12

Number of decimal places:
1

Employee Initials

Lookup

Lookup to Employees

Week Ending

Date and Time

 

Project

Lookup

Lookup to Projects
ProjectNameCategory

Project Name

Lookup

Lookup to Projects
Project Name

Total Hours Worked

Calculated

=Mon+Tue+Wed+Thu+Fri+Sat+Sun

Month

Calculated

=TEXT([Week Ending],"MMMM")

Year

Calculated

=TEXT([Week Ending],"YYYY")

 

Week Ending

The Week Ending list has the following SharePoint Configuration

Column

Type

Notes

Title

Single line of text

 

Modified

Date and Time

System Generated Column

Created

Date and Time

System Generated Column

WeekNumber

Number

Number of decimal places:
0

WeekEnding

Date and Time

Min: 0
Max: 12

Number of decimal places:
1

Month

Choice

Choices:

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Oct

Nov

Dec

WeekStart

Date and Time

Date Only

Created By

Date and Time

System Generated Column

Modified By

Date and Time

System Generated Column

Work Date

Date and Time

 

 

 

 

Workflows

This solution consists of the following workflow configuration:

Time sheet Approval

List Name

Workflow Start Conditions

Time sheets

Start when items are created and Time sheet Status Equals Submitted

 

Start when items are modified and Time sheet Status Equals Submitted

 

Overview

Timesheet

Figure 1 Timesheet Approval Workflow

 

thumbnail?provider=spo&inputFormat=png&cs=UEFHRVN8U1BP&docid=https%3A%2F%2Fnintex.sharepoint.com%2F_api%2Fv2.0%2Fsites%2Fnintex.sharepoint.com%2Cffe93082-3b7d-4840-996d-c546a9c4f4a9%2Cd1966751-8f64-4215-a757-eb8ff5e041f7%2Flists%2F58538457-4d36-4797-aeab-709945484756%2Fitems%2F43d2ea52-3787-4e42-a2fb-8a32ece7c12c%2FdriveItem&w=1600&oauth_token=bearer%20eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik4tbEMwbi05REFMcXdodUhZbkhRNjNHZUNYYyIsImtpZCI6Ik4tbEMwbi05REFMcXdodUhZbkhRNjNHZUNYYyJ9.eyJhdWQiOiJodHRwczovL25vcnRoY2VudHJhbHVzMS1tZWRpYXAuc3ZjLm1zIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYmFmZmNjOTktMGEzNS00NGM5LTk0OGItZmFiYTJlNTkzNjE3LyIsImlhdCI6MTU1MjMzNzgwMSwibmJmIjoxNTUyMzM3ODAxLCJleHAiOjE1NTIzNDE3MDEsImFjciI6IjEiLCJhaW8iOiJBU1FBMi84S0FBQUFSTXk0Rlo0TVQ3Y3VwUHZBVWJjdWt5YXE3N0JLcVM3TVEwaXZjMnNqbVNZPSIsImFtciI6WyJwd2QiXSwiYXBwX2Rpc3BsYXluYW1lIjoiT2ZmaWNlIDM2NSBTaGFyZVBvaW50IE9ubGluZSIsImFwcGlkIjoiMDAwMDAwMDMtMDAwMC0wZmYxLWNlMDAtMDAwMDAwMDAwMDAwIiwiYXBwaWRhY3IiOiIyIiwiYXV0aF90aW1lIjoxNTUyMzI1MDM5LCJmYW1pbHlfbmFtZSI6IlNpa3dhbmUiLCJnaXZlbl9uYW1lIjoiUGFsZXNhIiwiaXBhZGRyIjoiMTAyLjI1MC4xODIuMjQwIiwibmFtZSI6IlBhbGVzYSBTaWt3YW5lIiwib2lkIjoiZmM5YTgzMWMtM2U0MC00YzU5LTgxYzctMmVhYzkwYjk5YjA2Iiwib25wcmVtX3NpZCI6IlMtMS01LTIxLTM2MzY1OTM0MjMtMzQzODQ0ODIwNy0zNzUxMjc4NDg1LTg0OTUiLCJwdWlkIjoiMTAwMzNGRkY5NzdFNzk5MyIsInNjcCI6IlNpdGVzLm1hbmFnZS5BbGwiLCJzdWIiOiJkaXZwVE8xTXpCX0pLcm5relBiX1dOMVlzYW1HcmRJV0Z6S0FRd2pXb2dvIiwidGlkIjoiYmFmZmNjOTktMGEzNS00NGM5LTk0OGItZmFiYTJlNTkzNjE3IiwidW5pcXVlX25hbWUiOiJQYWxlc2EuU2lrd2FuZUBOaW50ZXguY29tIiwidXBuIjoiUGFsZXNhLlNpa3dhbmVATmludGV4LmNvbSIsInV0aSI6InpERWpBdlpMWDBTaGg1SXB6VzZnQUEiLCJ2ZXIiOiIxLjAifQ.YyMYk6pZ-xHPojNiR5nXb1YAd3R7yWJwtBzza7ypyztn1fvMzcGgdFKB0KXy5yR-GMlaaSYzLIyMnv2NcDJJmfNhoyE5DLWJ6wz2qX8FCbCF6dI_aWTpAnu8O697bW5UCuqAHwjaW5DGxj7lgdPGECk83t1QnJvJBNRZbi8iZgzRg1fqtAax2a_Wpl258aRngdMI_yi-xcPqgHsfjmPZz8usdku0PALdsup9euBww0CXuPUgkqcOoatTZEq-5dPdx9PdGM3pmJ-TT60kqmcCn-zFXFyR4LydYbhw2zQh3Rp_dxFDwE5i_QR1KlsL4RALRZeLWtRRisQIglYPd9bCVQ&vl=0&vt=0&vw=536&vh=646&ow=536&oh=646

 

User Defined Actions

This solution makes use of the following User Defined Actions:

Get Form Detail Rows

Scope

Description

Toolbox Group

Used in

Site Collection

This UDA is built to make it easier to parse the XML Data in a Repeating Section on a Nintex® Form via Nintex® Workflow. It allows workflow designers to retrieve a collection of information out of a repeating section

Operations

Time sheet Approval

 

Note: This UDA supports a maximum of 8 columns in a repeating table.

UDA Configuration

This UDA makes use of the following input and output parameters:

Name

Type

Direction

Collection1

Collection

Output

Collection2

Collection

Output

Collection3

Collection

Output

Collection4

Collection

Output

Collection5

Collection

Output

Collection6

Collection

Output

Collection7

Collection

Output

Collection8

Collection

Output

Column1

Text

Input

Column2

Text

Input

Column3

Text

Input

Column4

Text

Input

Column5

Text

Input

Column6

Text

Input

Column7

Text

Input

Column8

Text

Input

SourceElement

Text

Input

SourceField

Text

Input

 

Time sheet Form

The solution makes use of the following Nintex® Form(s):

Time sheet

Scope

Content type

Form variables

Total # of Rules

Site

Time sheet

1

11

 

You can follow up more on A Simple Time Sheet Solution - Part 3 (The Nintex Form) for more details around the form configuration.

Repeating Section Overview

 

Repeating Section Overview

Name

Connected to (Column)

Site

LineItems

 

Timesheets Repeating Section

This repeating section makes it easier to read the XML in the LineItems (which is a Multiple lines of text [Plain text] ) which this control is bound to; for example, take a look at the XML sample below(i.e. do you notice anything familiar??):

 

202700_pastedImage_1.png

 

As you can see, having descriptive names defined in Nintex Forms; for each of the controls in the repeating section makes it much easier to understand the XML.

Deploying this solution

Step 1:

Download Time_sheet.zip file below. Extract the files, when these are extracted you should see the following files:

 

File Name

Type of file / Description

Get_Form_Detail_Rows.uda

Nintex User Defined Action

TimesheetForm.xml

Nintex Forms

Timesheet_Approval.nwf

Nintex Workflow
Timesheet2016.wsp SharePoint Site Template

 

Step 2:

Import the  Get_Form_Detail_Rows.uda into your target SharePoint Environment.

Video Link : 1352

Step 3:

Upload and activate the Timesheet2016.wsp file into your target SharePoint Environment and create your Time sheet site based on the template:

Video Link : 1355

 

Step 4:

In your newly created Time sheet site, navigate to Time sheets list and import the Time sheet Form and publish

Video Link : 1356

Step 5:

Import the Time sheet Approval Workflow into the Time sheets list, reconfigure the 2 UDA actions, republish and overwrite the existing workflow:

Video Link : 1357

 

 

And that's it! I would like to thank you all for your patience, time (for reading this blog), and i really hope this helps some of you guys out there!

 

Cheers!

 

Continue to Part 3 (The Nintex Form)

Continue to Part 4 (The Office 365/SharePoint Online version)


10 replies

Badge +2

Great work man, this will be really helpful. ‌ 

Userlevel 4
Badge +6

Thanks ‌!!!

Thank you for posting, very informative.  Any chance you have or can post how to build the form rather than just downloading?  I have a similar build request but am new to Nintex forms.  I'd like to see how the columns in the list are placed in the repeating section or if they are at all.  Do you create the Sun - Sat columns in the list and then move the fields into the repeating section on the form?  Will this create multiple records for each project selected and the ones outside of the repeating section?   If the form is viewed by administrators, will all of the rows then show in the repeating section correctly?

Userlevel 4
Badge +6

Hey thanks for reaching out ,
There are no columns placed in the repeating section  All i've done is put in the following:

- A calculated field called txtEmployee which is defaulted to the Users full names
- A list lookup control called txtProject which points to my projects list

- Individual columns for each day of the week : Mon, Tue, Wed, Thu, Fri, Sat, Sun all named: numMon, numTue, numWed, numThu, numFri, numSat, numSun respectively. 
 

They all bound to a repeating section called MyRepeatingSection which is connected to a SharePoint List column called LineItems. This allows me to read all the information in the repeating section easily via workflow. 

Below the repeating section you'll see I have calculated fields which calculate each weeks totals(using the sum() runtime function) and each of these are bound to the following columns(as I'm only interested in the totals):

- sumMon

- sumTue

- sumWed

- sumThu

- sumFri

- sumSat

- sumSun

I think govern the process using Nintex Workflow, where if the Time sheet is approved, I use a workflow to move the data out of my repeating section into a separate list for reporting  

I've put out a post explaining the form here A Simple Time Sheet Solution - Part 3 (The Nintex Form)  to explain some of the configuration I put together on the form

Thanks for your comment! I hope this helps  

Badge +3

Great Work Palesa Sikwane ! Thank you for the time you spend, sharing this with us.

I've followed the steps, and when I tried to create a subsite from the newly uploaded template, I get bellow error message:

I couldn't find these features on the site collection feature list to enable them. however, when I query them via PowerShell, they exist:

PS C:Windowssystem32> Get-SPFeature -Identity a392da98-270b-4e85-9769-04c0fde267aa

DisplayName Id CompatibilityLevel Scope
----------- -- ------------------ -----
PublishingPrerequisites a392da98-270b-4e85-9769-04c0fde267aa 15 Site

I don't know if should I enable them, because I do not want to have bad impact on the SharePoint site collection.

Kindly, Please advice..

Userlevel 4
Badge +6

Good evening behy amiri‌ thanks for reaching out, and asking for assistance.


Yes i agree with you that you shouldn't activate the features if you don't need them. Which version of SharePoint are you using? 2013 or 2016?

In the meantime you can try this solution template here

Badge +3

Dear Palesa Sikwane‌,
Thank you for supporting me. I'm using SharePoint 2016. I needed your masterpiece urgently, So I decided to risk it out and try enabling all the needed features in the site collection level via PowerShell and, then it worked nice. some strange things happened to the SC, but totally worth it.
So I wanted to THANK YOU a billion, since you shared such AWESOME and PERFECT masterpiece with the world. it is so much useful. That is school! you know? so much educational. GREAT JOB man. and I love your style!

currently I'm customizing that to suite my needs, and there's a big challenge I'm facing at the moment. in your solution, since workflow is started by the user, then users must have editable rights on the "Reporting" list, which means they can manually change or even create items there, which is not desirable for me. but they still needs to see only their own reports, which means they need read access to items in which are created during a workflow initiated by them.

a simple solution to that challenge comes o mind is the use of item level permission setting of the reporting list. but the issue is that item needs to be created by the user so users can see items created by them. then users still need editable permissions to create items on reporting! which is not good for me!

then I restricted permissions of the reporting list to managers. then configured the workflow to run as site admin. this way users with no access can create reporting items. To let the "My TimeSheets" view work, I have added another column called "ItemOwner" keeping initiator value (person) and edited the view to show user items with that. Seems good so far! but user also needs to get "Read" access on "Items" that are created with the workflow that they initiated (they don't have access since WF runs under site admin permission) so I need to use Nintex Web Request action to give them read access during the workflow. and that's where I'm Stucked!!! Kindly Please help me configure this action. I'm also asked a question about it here at Nintex Forums, and still no luck.

now I'm staring to the monitor, keeping hit F5 on this page to see your advice.

best regards

Userlevel 4
Badge +6

behy amiri‌ thanks for the response, and detail. I'm happy to hear how my blog has helped you in your Nintex Journey. wow!!. Thanks for your praises. I've looked at the blog on how to use a Web Request via Nintex Workflow to change permissions. and i see that there's a great follow up from Ranjith kumar‌ I'll reply to the thread there. Thanks I hope you have a great day

I get the following error when I install the WSP in a 2013 environment:
 
Feature definition with Id ed189433-6f41-4562-aa66-cde81015d7dc failed validation, file Timesheets2016ListInstancesElementsFields.xml, line 1176, character 265: The ListInternal attribute is not allowed.

Hi,


These are good documents for me, but as per the instructions given in this timesheet I am getting error in some variables (i.e. UDA and extra columns) when editing the form and workflow 2013.


I edited it here:


1) Replace the initial name to Emp number.


2) Added in the form of additional calculated value (Act Type).


3) Added 2 additional lookup columns in Repeating section filter based on project columns.


4) Another final report for the timesheet report added its work parallel.


5) How to keep the lock on the weekend date


 


Please guide me or provide solution( i.e Form template and Workflow  Template)


Thank for Advance.



 

Reply