We had a couple of prospects very unhappy with their stock ERP system. They were too small to even consider a SAP like project, but too complex to fit a standard ERP system. One of them sells products which are manufactured by external contractors and he needs to track both the material flow and the work phases before the final quality control. The other prospect's business consists in repairing electrical machinery where each machine is a project with a very complex workflow: the project must be opened, assigned, configured (materials and work phases), bidded, authorized, worked, quality controlled and sent.
Other requirements not adequately covered by a stock ERP system were:
· ‘Purchase Order management’. We needed a fully integrated module capable to manage the material requisition (MR) issue, bid inquiry, PO generation and receiving.
· Inventory management. We needed to trace material movement down to the lot number.
WHY AN OPENACS ERP
I seriously considered Compiere and SQL-LEDGER, installing and playing with them, before deciding to build a new system from scratch. Here are some random thoughts to explain my choice:
· From a functional point of view SQL-LEDGER was really inadequate to our goals and so I didn’t have to consider very much his technical aspects (CGI & PERL) that don’t make it particularly attractive.
· I spent more time on Compiere which overall was functionally quite close to our requirements, even if lacking in the areas of project management and production.
· Compiere was completely insufficient in the accounting area, with regard to the Italian laws, even if there was an Italian company offering a localized accounting version for about 15000 EUR.
· We don’t know Java and don’t like Oracle and we should have invested heavily in Java to get started
· Compiere seemed very well engineered, but we should have invested a huge amount of time before really mastering it to be able to maintain and extend its functions
· We very much like Aolserver, PostgreSQL and particularly OpenACS
· We were quite familiar with ERP systems, particularly in the engineering, procurement, construction and project management areas
· We were persuaded that an Open Source ERP could have been interesting for the Italian market and finally decided to go for it
The following list should give an idea of the scope and functions of the new system:
· Product management
· Drawings management
· Bill Of Material (very basic right now)
· Customers, Vendors and Contractors management
· Project management
· Material requisition
· Price lists
· Purchase orders
· Sales Orders
· Sales statistics
· Inventory management
· Purchase invoices
· Sales invoices
· General Accounting
· Accounts Payable
· Accounts Receivable
The system has been built with OpenACS 5.1.3 and PostgreSQL 7.4.
The main system entities (parties, products, projects, material requisitions, bids, purchase orders, sale orders and inventory) are defined as cr_items.
The standard management functions has been built using extensively the ad_form (thanks Don!) and list::create (thanks Lars!) API.
The lack of time and resources has caused a number of limitations:
· We didn’t write any documentation, apart the comments buried in the data model and the code.
· The system is not internationalized, but I decided to use the English language both for the code and for the comments, so as to ease an eventual future internationalization.
· The system is right now a unique big package and will probably be repackaged in the future.
· We wrote all the queries inline, without using the canonical xql files
· The system lacks a ‘Production Management’ module
· The system lacks an ‘Asset Management’ module
WHERE WE ARE NOW
We started working in September 2004 and the first customer did go live in February 2005.
The second customer is going live right now.
We sold the system to two more customers that should go live before the year end.
One of them runs a ‘make to order’ business and so we will extend our Bill Of Material module to work as a
OpenACS is incredibly productive (we already knew that, but this project was really challenging, considering that we had also to recover and load our clients data from their old systems).
Perhaps the heavy use we made of the CR is overkill and the resulting performances are not spectacular, but we didn’t have time to observe and tune the system.
We are appealing to our clients because we give them a customized solution, but the complexity of managing different code bases is becoming bigger and will soon force us to define a more long term strategy.