OPS: Consulting services operations tool

OPS: Consulting Services Operations Tool

  • Date: 2005-2009
  • Roles played: Package selection, information architect, web and database developer
  • Core software package: Copper Project
  • Development language: PHP
  • Key technologies used: HTML, JavaScript, CSS, PHP, MySQL
  • Screenshot: See screenshots below

Problem: Consulting services companies have several internal operational needs, from time tracking to real-time budget analysis for projects. Off-the-shelf software is either too expensive, or does not have the functionality needed to adequately track and report on operational performance.

Solution: Deploy a web-based operations tool that integrates important studio data within a single application. After performing research on applications within the “professional services automation” market, Copper Project was purchased. The software was sold under a GPL license, which meant it could be extended and modified to meet additional needs.

The core functionality related to users and permissions, clients, and projects was generally sound, but other areas needed to be modified extensively. In order to meet studio needs, several new modules were written over the course of 3 years, and others were modified heavily:

  • Timesheet system: Create a robust system that allows employees to enter timesheets for both billable and non-billable projects. The system allowed viewing and editing of past timesheets, but editing was limited to a restricted timeframe. An system had to be built so that timesheets could be exported from the application and then imported into the studio accounting system.
  • Roles and rates: Associate billing rates with an editable list of studio roles; allow these rates to vary by project; create a system that supports a default role for each user of the system, and an additional list of allowed roles against which hours could be billed.
  • Expense reporting: Create a simple way to report expenses and have them associated with projects.
  • Change orders: Add change order functionality to project budgets.
  • Invoices: Add the ability to track the amount invoiced for projects, to allow for display of invoiced amount relative to total budget.
  • Hours budget by employee and role: Provide the ability to associate allocations of hours to employees, broken down by their allowed roles.
  • Project budget analysis: Expand and enhance project budget reporting so that professional fee computations could be performed in real time. Budget analysis was done by combining timesheet data, roles and their associated billing rates, project expenses, and project change orders. The system made it possible to determine the actual amount of money spent relative to the number of hours that had been placed in the budget.
  • Gross profitability reporting: Additional reporting was created to allow for the calculation of gross profitability. Required functionality to export properly formatted data, which was then inserted into a spreadsheet containing the additional data required for the calculation.

Development challenges: The software as purchased had no documentation. The entire system had to be learned from the ground up in order to make significant changes, and the HTML templating system was complex and not easily changed. Additionally, given that software updates might someday be released, it was desirable to perform development in such a way that updates would not conflict with modifications. Finally, as with other projects, the feature requirements evolved significantly over time, and the system was constantly being modified and extended.