Web-Based Timesheets for Project Management

What is project management? What it isn’t is a carefully crafted Gantt chart made to support a Project Charter and then forgotten about.

A cornerstone of effective project management is to understand how much effort has been expended and what tasks have been accomplished, and then to use that information to guide completion of the project and to publish status reports that can be trusted. Project management is a closed loop, one popular model is the PDCA (Plan Do Check Act) cycle.

Check refers not only to the expected output, but also to the process – whether resources are being consumed as expected, whether risks remain acceptable, if schedule and cost-to-complete forecasts are still reasonable and in budget, etc.

For small enterprises, collecting information on effort typically means timesheets. Project infrastructure can sometimes be leveraged for metrics, such as a software bug tracker or a sprint planning tool, but this generally requires a large number of datapoints before being accurate enough for project management purposes. For SMEs with relatively few team members on a project, the ubiquitous timesheet will be the simplest and least intrusive method of collecting project effort metrics. Since many organizations require timesheets anyway for financial accountability, the additional work to also collect information useful project management need not be significant if done in the right way.

I’m working on a series of blog posts on SME product development project management, and researched the state of open source timesheet applications for use in a strawman based on a Swift Construction Company product development project. You’ll find out later which application I selected, but until then here the potential candidates I found.

]project-open[

]project-open[ is a fully featured portfolio project management suite. However, unfortunately with great power also comes significant complexity and in brief use I was unable to create a simple project and submit a timesheet. Commercial support is available, and the project co-founder walked me through some impressive basic functionality in a personal webinar.

ProjeQtOr

ProjeQtOr is a fully featured project management suite with a twist – with ProjeQtOr you  also get “all the tools that will ease to ensure conformity to any Quality Management System, effortlessly and without any extra too”. This approach has a lot of merit. Issues are issues whether they relate to a product in production or the execution of a project task, and investigating a non-conformance is just as much a project as is development of a new product or upgrading IT infrastructure.

qdPM

I used qdPM for several months to record effort for a personal project. qdPM is a freemium-type product, and the community version is licensed using the Open Source license. It is a professional grade product.

To me, qdPM seemed to suit product support more than project management, and includes top-level menu items for Tickets, Discussions, and Software Versions. Entering time spent on a task is done by creating a comment, and traditional project management such as cost vs time are not readily available.

timeEdition

timeEdition appears best suited for a single individual to track their personal project time, rather than actual project management. Although it appears to be commercial proprietary software from the website, I found a source code on Sourceforge using an open source license (see timeEdition Sourceforge project).

TimeTracker

TimeTracker lives up to its claim of being a simple, easy to use, open source, web-based time tracking application. After experimenting with it for a while, my only complaints are that tasks are not inherently project-specific, which could make task management overwhelming if you have a large number of projects, each with a large number of tasks. However, projects specify which tasks they include, so the task list is still manageable from a user’s perspective. 

TimeTrex

TimeTrex has a flashy website, but at heart is a traditional time-card system for scheduling and tracking task-based employees, not managing projects. You can download TimeTrex Community v9.1.3 from the TimeTrex project on Sourceforge if you don’t want to provide your email address using the TimeTrex website.

Additional Applications

I found another of other applications as well, but for one reason or another I didn’t have the opportunity to investigate further, or on cursory glance they didn’t seem suitable (remember, my original goal was a simple easy to use timesheet, not necessarily project management).

Watch for the start of my posts on project management to learn which application I selected for a Swift Construction Company strawman.

Cheers!

Install SuiteCRM on FreeBSD

SuiteCRM is a Customer Relationship Management (CRM) web application, used by a company to store and organize information relating to customers and potential customers in a shared trusted environment. A CRM application may be stand-alone, or may integrate with other enterprise applications, such as an Enterprise Resource Planning (ERP) system (CRM may also be a module within an ERP system).

SuiteCRM was created by forking Sugar CE v6.5. The company SugarCRM provided several editions of Sugar CRM,  including the open-source Sugar CE and several proprietary-licensed commercial editions. When SugarCRM announced in 2013 that new features would no longer be included in Sugar CE, SalesAgility, a UK-based CRM consultancy with expertise developing client solutions using Sugar CE, created SuiteCRM based on the Sugar CE v6.5 codebase. The first release of SuiteCRM was v7.0 in October 2013, and since then SuiteCRM has become an award winning world leading CRM application.

Setup

I will be installing SuiteCRM v7.7.9 on FreeBSD 10.3-RELEASE, using Apache 2.4 and MariaDb 10.0.

  • Download a SuiteCRM zip distribution archive and extract to /usr/local/www/suitecrm-7.7.9
  • Change owner of the SuiteCRM directory tree to www:www
  • Create a soft link from /usr/local/www/suitecrm to /usr/local/www/suitecrm-7.7.9
  • Configure Apache virtual host suitecrm.dalescott.net
  • Create “suitecrm” database and database user with full permissions to the database.
  • Run installer (http://suitecrm.dalescott.net).

The first thing the installer does is to confirm your acceptance of the AGPL license used by SuiteCRM.

The installer then presents an overview of your system configuration, and identifies any issues preventing installation. In my case, I’m good to proceed.

Next, enter your database credentials and other configuration data.

  • Select install demo data.
  • Enter admin user password and email.
  • Accept default visible modules.
  • Enter SMTP server credentials required for SuiteCRM to send email.

The installer will setup the database and then let you login as the admin user.

The last setup item is to create a cron task used by SuiteCRM to run periodic internal tasks.

TODO show cron job

Login

Login using the admin user and password. After authentication the SuiteCRM dashboard will be displayed.

Install X2CRM on FreeBSD

X2CRM (also known as X2Engine) is a Customer Relationship Management (CRM) web application, used by a company to store and organize information relating to customers and potential customers in a shared trusted environment. A CRM application may be stand-alone, or may integrate with other enterprise applications, such as an Enterprise Resource Planning (ERP) system (CRM may also be a module within an ERP system).

I became aware of X2CRM after discovering erpBooks “Online Inventory Management” , reportedly forked from webERP and including CRM functionality based on X2Engine (aka X2CRM).

X2CRM was founded by John Roberts, who had previously co-founded SugarCRM. His goal was to develop a superior user interface using a new data model, and to use current web technologies, compared to the first generation of open-source web CRMs. Coincidently, X2CRM was developed using the PHP Yii OO RAD framework, which I had used for my Maestro project.

X2CRM also affirmed John’s faith in an open-source development and business model. X2Engine initially used a “Freemium” business model to support itself, and provided commercial Professional and Platinum versions. However, in April 2016, X2Engine announced it had achieved revenue self-sufficiency as a company, and it was now appropriate to release all premium features of the Platinum version as open-source in the then upcoming v6.0 release (fyi, I will be installing v6.5.2).

Setup

I will be installing X2CRM on FreeBSD 10.3-RELEASE, using Apache 2.4 and MariaDb 10.0.

  • Download a X2CRM zip distribution archive and extract to e.g. /usr/local/www/x2crm-6.5.2.
  • Create a soft link from /usr/local/www/crm to /usr/local/www/x2crm-6.5.2
  • Configure Apache virtual host crm.dalescott.net (the server directory root will be /usr/local/www/crm/x2engine)
  • Run installer (http://crm.dalescott.net/x2engine)

  • Set owner of X2CRM directory tree to www:www
  • Install package pecl-ssh2
  • Install package php56-filter
  • Set session.save_path in /usr/local/etc/php.ini to /tmp
  • Add path to mysql executables to the path used by the Apache daemon.
  • # mkdir -p /usr/local/etc/apache24/envvars.d/
    # echo 'export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:' > /usr/local/etc/apache24/envvars.d/path.env
    # chmod 755 /usr/local/etc/apache24/envvars.d/path.env
    # service apache24 restart
  • Run installer again. Hurray! Requirements met! 

  • Create “x2engine” database and database user with full permissions to the database. Use these credentials in the install screen.
  • Check “Create sample data”.
  • Enter admin user password and email.
  • Accept default visible modules.
  • Create cron task. I selected “Create a cron task for X2CRM”, after which I was given the opportunity to select when to run the task, or simply hourly. I selected hourly, which resulted in creating a crontab file for user www (/var/cron/tabs/www). 
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/usr/local/www/x2crm-6.5.2/x2engine/.crontab.tmp installed on Sun Mar 26 20:44:57 2017)
# (Cron version -- $FreeBSD: releng/10.3/usr.sbin/cron/crontab/crontab.c 293132 2016-01-04 03:20:41Z pfg $)

#<X2CRM>
@hourly curl http://crm.dalescott.net/index.php/api/x2cron &>/dev/null #@X2CRM@default#@X2CRM@Run delayed or recurring tasks within X2CRM
#</X2CRM>
  • Install!

Login

Login using the admin user and password. I have already logged in as admin and created a new user for myself.

Once authenticated, the X2CRM dashboard is presented. There’s a lot of information, and the bottom of the dashboard is the message feed.

Installing webERP

Click to search for other posts on webERP

This post was written for webERP v4.15.2. Refer to weberp.org and current software for v5 installation (v5 is still pre-release).

webERP is mature web-based open-source ERP (Enterprise Resource Planning) software that supports best practises and multi-user business administration, purchasing, sales, manufacturing and standard double-entry accounting.

webERP can also be used with a wiki CMS (Content Management System) to provide an integrated Knowledge Base. I will be using WackoWiki, one of the supported wiki engines.

Goals

  • Install webERP software.
  • Install MediaWiki software.
  • Configure webERP and MediaWiki for use.

Install Applications

I will install webERP and MediaWiki on FreeBSD, a Unix-like operating system (GNU/Linux is another popular Unix-type operating system). The server has already been configured with the Apache HTTP server and MariaDB database server.

webERP

Copy the webERP software files to the server and configure the Apache web server.

  • Extract distribution to /usr/local/www/
  • Rename extracted directory webERP/ to weberp-4.13.1
  • Create soft link “weberp” to weberp-x.y.z
  • Create Apache virtual server e.g. http://weberp.dalescott.net

Access http://weberp.dalescott.net with a web browser to run the installer.

  • Language: US
  • Db user and password: root (only for install, future access will be changed to a dedicated user after installation)
  • Company name: e.g. Swift Construction Company
  • Install demo data: YES
  • User “admin” email: e.g. dale@dalescott.net
  • admin user password: (keep this safe)

After the installer has completed, change the database access user to a new database user with privileges to webERP databases only.

  • Create a new database user “weberp” with all privileges to the weberp and weberpdemo databases.
  • Edit the webERP configuration file weberp/config.php and change the database access user and password to the new dedicated user.

MediaWiki

Copy the MediaWiki software files to the server and configure the Apache web server.

  • Download a release archive.
  • Extract the distribution to /usr/local/www/ (which will create mediawiki-x.y.z/) 
  • Create a soft link “wiki” to mediawiki-x.y.z/
  • Create an Apache virtual server http://wiki.dalescott.net

Access http://wiki.dalescott.net/mw-config/index.php with a web browser to run the installer.

  • Name of wiki: webERP
  • User rights profile: Authorized editors only (public viewing is allowed)
  • Enable file uploads

Configure Applications

webERP

Log into webERP using the admin user credentials entered into the auto-installer and create new named user e.g. dalescott. The new user will be used for all subsequent work to identify the administration user specifically for audit purposes. 

  • email: e.g. dale@dalescott
  • system administrator privileges

The original admin user (created by the auto-installer) cannot be deleted due to a now existing audit trail.

Location

I will create a new location “Shopton” for the SCC headquarters.

Main > Setup > Inventory Setup > Inventory Locations Maintenance

Note: Delivery Address 1 must be given a value, otherwise a “missing delivery address” error will occur when later attempting to create a purchase order.

After creating the new location, change the location of the administration user to the new location (and of any other users). 

Currencies

I will create a new CAD currency as some items will need to be purchased in Canadian dollars. webERP will obtain currency exchange rates from either Google or the European Central Bank (Main > Setup > General > System Preferences).

Main > Setup > General Setup > Currencies Maintenance

“USD” is shown as the “Functional Currency” because United States is set as the SCC company currency in the Company Preferences.

Company Preferences

Operating practices for a specific company are configured in the Company Preferences screen (webERP supports multiple companies and the desired company is selected at login). 

Main > Setup > General > Company Preferences.

System Preferences

General system-wide behavior is configured in the System Preferences screen. I will quickly review some interesting parameters, and get into a bit more detail with a few specific parameters.

  • Date format: Y-m-d. I prefer ISO 8601 dates for clarity over familiarity (e.g. 2017-03-08 for March 8, 2017), which avoids the ambiguity of d/m/Y and m/d/Y.
  • Frequently Ordered Items: 0. I left this disabled but may experiment with it once the system has some orders entered.
  • Sales Order Allows Same Item Multiple Times: Yes. I will revisit this later, but at least initially I don’t want anything to block operation.
  • Languages to Maintain Translations for Item Descriptions: None. Don’t complicate things at least initially.
  • Picking note must be produced before an order can be delivered: No. I don’t want to complicate the process too soon.
  • Auto Update Exchange Rates Daily: Automatic. Source Exchange Rates From: Google. 
  • Create Debtor Codes Automatically: No. I want to use my own mnemonic codes, but set to Yes if you don’t care and would prefer to let the system assign a sequential integer.
  • Create Supplier Codes Automatically: No. I prefer to use my own mnemonic codes.
  • Country of operation: United States (used when calculating shipping costs).
  • Purchase Order Allows Same Item Multiple Times: Yes. I will revisit this later, but at least initially I don’t want anything to block operation.
  • Automatically authorise purchase orders if user has authority: Yes. I will disable this later so I can follow the approval process.
  • Financial year ends on: December (if only to avoid having to answer of why not calendar years).
  • Maximum Size in KB of uploaded images: 300. I left this at its default value, although some images and screenshots will likely require re-sizing before uploading.
  • Directory to store images: part_pics (directory already exists)
  • Directory to store reports: reports (directory already exists)
  • Wiki application: MediaWiki (I’m already familiar with MediaWiki), Wiki Path: http://wiki.dalescott.net/ 
  • Inventory Costing Method: Standard. webERP also supports weighted average, but Standard Costing behavior will be more obvious to start with.
  • Auto issue components: Yes. Automatically decrement items from stock according to the BOM for an Item when it is manufactured to reduce admin effort.
  • Prohibit Negative Stock: No. I’m pretty sure I will set this to Yes later, but prefer no blocking operations at least initially.
  • Log Severity Level: All, Path to log files: log. I want to see all possible log entries initially and can be reduced later (I also had to create the “log” directory and set ownership of the directory to the www:www, which is the Apache http server user on FreeBSD).
  • Controlled Items Defined At Work Order Entry: Yes. When set to yes, controlled items are defined at the time of the work order creation. Otherwise controlled items (serial numbers and batch/roll/lot references) are entered at the time the finished items are received against the work order
  • Auto Create Work Orders: Yes. Setting this parameter to Yes will ensure that when a sales order is placed if there is insufficient stock then a new work order is created at the default factory location
  • Default Factory Location: Shopton. This will be the default location for automatically created work orders.
  • Factory manager email: dale@dalescott.net, Purchasing manager email: dale@dalescott.net, Inventory manager email: dale@dalescott.net. I’m setting all email addresses to me for convenience so I see the traffic.
  • Using Smtp Mail: No. My server will route email from webERP out through my ISP’s mail server.

Main > Setup > System Preferences

Wiki Application

In particular, note the setting for “Wiki application”. When enabled by selecting a particular Wiki dialogue (MediaWiki, WackoWiki or DokuWiki), a link to the “Wiki Product Knowledge Base” will be shown in the Inquiries column of the main Items, Vendors and Customers screens (once an Item/Vendor/Customer has been selected).

You also need to set the root path to the wiki (that webERP will append to) in the system parameters screen. In my case, I needed a trailing “/” in the Wiki Path, but YMMV.

Database Maintenance

webERP can be configured to lock out users by setting Perform Database Maintenance at Logon to Allow SysAdmin Access Only. Only users with security profile “System Administrator” will be allowed to login or enter data when this is set, which is important when performing maintenance on the application code or database. A maintenance notice also appears on the login prompt when Allow SysAdmin Access Only is set.

Main > Setup > General > System Parameters

This parameter can also be used to periodically run the query “OPTIMIZE DATABASES” at set intervals. It is not clear how often this should be run, or even if there is a significant benefit. However, users will notice a slight delay during login when the it runs, it might have been a half-second with an almost empty Swift Construction Company database (on a older dual-core desktop PC with 4GB memory). If periodically running OPTIMIZE DATABASES is desired, you may consider creating an entry in the cron table to run the mysql command line interface, giving the query as a command argument.

MediaWiki

The webERP Knowledge Base, MediaWiki in my case, is a completely separate system from webERP, including separate users, user permissions, etc. webERP simply provides structured links into the Knowledge Base (with some variation depending on the wiki protocol selected in webERP Main > Setup > General > System Parameters > Wiki application).

I intentionally configured MediaWiki during install for public access, but required that a user be logged-in to create a new page, edit an existing page or upload a file. This allows anyone to see information, and in most cases get on with their job, without having to be concerned with logging into the Knowledge Base. For me, this is a nice balance of visibility and trust within a homogeneous organization. Users can also set their browsers to remember their login credentials and once set won’t be inconvenienced again (I wouldn’t necessarily recommend this when there are shared workstations, but then again many people use shared workstations and don’t control who the user is, it all depends….).

Upload File Types

I configured the permitted upload file types to include OpenOffice/LibreOffice files, dwg files and zip archives (see MediaWiki documentation).

$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg',
 'odt', 'ods', 'odp', 'odg',
 'txt', 'pdf', 'zip', 'dwg'
);

Site Logo

I also uploaded the SCC logo as a media file and edited LocalSettings.php to use new logo.

Summary

This completes basic webERP and MediaWiki installation and configuration.