TrackStudio Enterprise 3.5
Sample Project Overview

The following topic describes the TrackStudio demo project Sample, Inc.

Organizational Structure

Suppose we have a company - Sample Inc. - with the following functional structure:

  • R&D Department
  • QA Department
  • Customer Support Department
  • Project Management Department
  • Sales Department

Employees in the departments have at least two managers (i.e. their line manager and the department manager). Each department manager is only responsible for his or her own employee. Each line manager is only responsible for his or her own project. 

Sample, Inc has the following user statuses (groups): 

  • 001 department manager
  • 010 line manager
  • 020 customer support member
  • 030 software developer
  • 040 software tester
  • 100 external customer
  • 110 external staff
  • administrator

Sample, Inc. employees, their login ID and password (the same), and user status (group):

  • John Smith - jsmith - administrator
    • Ben Vincent - bvincent - Sales Department Manager
      • Chris Tuck - ctuck - External customer
    • Bill Richardson - brichardson - R&D Department Manager
      • Charles Parmenter - cparmenter - Software Developer for XWare
      • Stuart Manske - smanske - Software Developer for XWare and YTracker
    • Peter Dagley - pdagley - Project Management Department Manager
      • Jesse Levon - jlevon - Line Manager for XWare
      • John Baetz - jbaetz - Line Manager for YTracker
    • Sean Law - slaw - QA Department Manager
      • Jacob Miller - jmiller - Software Tester for XWare
      • Jeff Franke - jfranke - Software Tester for YTracker 1.0
    • Steve Trudelle - strudelle - Customer Support Department Manager
      • Mike Clinton - mclinton - Customer support member


Ben Vincent will manage customers. He will define:

  • an additional custom field to hold the customer addresses. You can confirm this by logging in as bvincent (password bvincent) and opening the menu Current User -> Custom Fields...
  • a customer self-registration rule, to allow all new customers to create bugs in the Customer Support project. Confirm this by opening the menu Current User -> Self-registration Rules..., while logged in as Ben Vincent.

Samples, Inc also has an existing customer - Chris Tuck, from GoodBank. He can login as ctuck/ctuck and add a bug report into the system. In addition, he can create subordinate users from his company to add bug reports. You can limit how many accounts each customer can create, and set expiration dates for your customer accounts, to match the validity periods listed in your support contracts (for example, one year). 

A user's password in the demo database is the same as his/her login. Login as root/root or jsmith/jsmith to examine the demo database.


Sample, Inc develops two software products: XWare and YTracker. Currently they have 2 versions of XWare: 1.0 (already mature) and 1.5 (active). YTracker is still in development and they have no customer support for it yet.

YTracker Team
User Name 
Role (User Status) 
John Baetz 
project manager 
Jeff Franke 
software tester 
Stuart Manske 
software developer 
XWare Team
User Name 
Role (User Status) 
Jesse Levon 
project manager 
Stuart Manske 
software developer 
Charles Parmenter 
software developer 
Jacob Miller 
software tester 

Ben Vincent is the sales representative and Mike Clinton is the customer support member for both products.

Group Permissions

Now let's examine how user group permissions are defined. Login as jsmith and open the Current User -> Statuses... menu item. Using user groups, you can control every menu item and button the users in that group can view or use, and set which fields can be viewed or edited. When you grant any permission, all dependent permissions will be granted automatically.


This team also uses the following workflows:

Workflow Name 
A simple container for other objects, with one workflow state and no transitions. 
Product Lifecycle 
Implements the life cycle for products and software releases.
Contains states:

  • 001 Development
  • 002 Active
  • 003 Mature
  • 004 Retired

Contains two workflow-based custom fields:

  • GA Date - General Availability
  • Availability

This workflow is used primary by management. 

Issue Lifecycle 
Implements the life cycle for software bugs or issues.
Contains steps:

  • 001 New
  • 002 Resolved
  • 003 Verified
  • 004 Closed
  • 005 Waiting Feedback - used for customer support task when team is waiting for a response from customer.


Take a closer look at the permissions defined for the Issue Lifecycle workflow:

Message Type 
001 Resolve 
Resolve a bug 

  • Any administrator, department manager, line manager, or customer support member can resolve tasks.
  • Testers or developers can resolve tasks (i.e. use the resolve message) only when they are the task handler.
  • External customers cannot see resolve messages from team members or add such messages.


002 Verify 
Verify a bug 

  • Any administrator, department manager, or line manager can verify tasks (i.e. use verify messages).
  • Software testers can verify tasks only when they are the task handler.
  • Support staff, developers, and customers cannot add verify messages.
  • Customers cannot see verify messages.


003 Close 
Close a bug 

  • Any users except software developers, testers, and customers can close tasks.
  • Customers cannot see close messages from other users.


004 Reopen 
Reopen a bug 

  • Any users except software developers, testers or customers can close tasks.
  • Customers cannot see close messages from other users.


000 Note 
Add a note 

  • All users, except customers, can see notes.
  • Customers cannot see notes or add them. This message type is only for internal communication.


005 Request to Customer 
Question or note to customer 

  • Any team member can ask for additional info from a customer.


006 Response from Customer 
Feedback from customer 

  • Customer can respond to a bug only when asked (bug handler).



When a user creates a bug, he or she does not choose a workflow directly. Instead, the user will choose task categories such as Software Bug that are connected to a given workflow. Several categories can be connected to the same workflow, and, for each category you can specify who can create, view, edit or delete tasks within the category. In addition, you can specify the category's dependencies - for example, Folder can contain Software Bug, but Software Bug cannot contain Folder.

Assigning Employees to Products

In our demo, product managers cannot assign developers or testers directly to projects - they need approval from department managers. You can see this in task #11, where YTracker's project manager, John Baetz, asks the R&D department manager, Bill Richardson, about being assigned one developer for his project. Bill approves it, and assigns Stuart Manske to YTracker as a software developer. Confirm this in the Current Task -> Access Control Rules... menu item, and click the Assigned Statuses tab for YTracker #7. Department managers can use the My Assignment Requests filter to find their assignment requests.

Using Calculated Custom Fields

In our implementation for this demo, we store the user departments in the Company field. We would like a report that shows the number of tasks created from each department. 

As the Company field is a user field, it cannot be referenced by a task filter directly. However, we can resolve this by creating a task custom field that uses a script which will return the Company field. 

Login as jsmith/jsmith and go to the Current User -> Scripts... menu item. Look at the getDepartment script, which returns department names when the task submitter is you or your subordinate user, or Unknown otherwise. For example, John Smith (administrator) can see the department names for all tasks; Sean Law (QA Department Manager) can see department names only for tasks submitted by testers and himself; Jacob Miller can see department names only for his tasks.

if (task.getSubmitter()==null || task.getSubmitter().getCompany()==null)
   return "Unknown";

return task.getSubmitter().getCompany();

We have connected the getDepartment script to the Submitter Department task custom field (see the Current Task -> Custom Fields... menu item for task #2).

  • To see a list of tasks with submitter's department name, use the Tasks by department breakdown filter.
  • To see the number of tasks within each state submitted by users from each department, use the Tasks by department breakdown distribution report. Note that different users will be able to see different data in this report -- depending on permissions. Login as an administrator, department manager and software tester, and compare the output of this report for each.

We also use the getCustomerAddress script that returns the addresses of customers that have submitted a bug. This script is used by the Customer Address custom field of task #5. Go to task #24 (submitted by a customer) to see how it works.


Filters are used to search tasks by criteria. The following public filters are available for all projects in Sample, Inc.

Filter Name 
Returns all direct subtasks of the current task. 
Change List 
Returns list of closed bugs. You can use this filter for any project or project version. 
My Assignment Requests 
Functional department managers can use this filter to find all requests issued to assign an employee to a project. 
Bugs (Personal and Subordinate) 
Returns a list of bugs that should be fixed by logged user or subordinate users. This filter is very useful for developers, testers and their managers. 
Returns a list of opened bugs. 
Tasks by department breakdown 
Returns a list of open bugs with info about the submitter’s department.