February 10, 2014
Endocode is committed to the use of free/open source software (FOSS) to provide high-quality, enterprise-level solutions. We really mean that! That’s why, when one of our recent customers approached us seeking a better way for software to support their business, we didn’t hesitate to recommend them an open source Enterprise Resource Planning (ERP) System.
Part 1 of this post told you what an ERP system actually is and demonstrated how your business can profit by using one. This part will take you through our own experiences deploying and customizing an open source ERP system. Until recently, our client used a legacy MS Access system to partially support some of their order processing, but it had grown insufficient and buggy, and didn’t allow them to use software to its full potential. Clearly, a much more powerful solution was needed.
They provided a list of requirements which we used in an analysis of existing FOSS ERP systems in order to find a best match. The clear winner was OFBiz.
OFBiz is an open source ERP system from the Apache Foundation. It has a rich level of functionality out of the box including e-commerce, catalog management, order processing, warehouse management, accounting, manufacturing management and project management.
Of interest to software developers is its logical design. After all, it’s a big system with a _lot_ of features; it could so easily have ended up a massive, unmaintainable mess. Thankfully, OFBiz’s community have produced a system that is largely painless to develop, thanks in part to its architecture. At its heart, OFBiz is more of a general software framework like Rails or Django. OFBiz’s suite of business applications are built on top of this kernel rather than being integrated right to the core. Like any good web application framework, OFBiz provides essential things such as templating, a web service layer, data abstraction, and a clear division of responsibilities between components. These, alongside URL mapping, in-built security and some nifty tricks for automatically shuttling data along the control flow, make developing OFBiz a joy.
Customizations and Extensions
So what kind of changes did we make for our client? Here’s a selection:
OFBiz provides very flexible and comprehensive features, enabling the user to do a heck of a lot. However, like most ERP/CRM systems, this means the GUI is very rich, perhaps too rich for some tastes. The initial customisations required us to tone it all down a bit. We removed various unneeded widgets and screen elements, as well as any unnecessary seeding data which could overwhelm the user. For example, OFBiz comes packed with lots of measurement data, meaning the choice of weights, lengths and other dimensions are lengthy, even going so far as to include exotic Imperial units. Our clients are German, familiar with the metric system, and thus don’t often find themselves dealing in inches, stones or fathoms. Such units could safely be dispensed with.
In addition to removals, we also made additions. The developer has full access to all of the data models used in OFBiz, so it’s a simple job to add a new data field on the rare occasion that an existing model doesn’t already have it.
Importing suppliers’ catalogues
One of the first major pieces of work was catalogue importing. Germany has its own de facto technical standards for electronic distribution of catalogues, standards which you won’t find outside its borders. One of these standards is called Datanorm and many German suppliers use it to send out files containing the specs on their products. Our client wanted to be able to load the Datanorm files from its suppliers automatically into OFBiz, so all the materials they use or resell could be added to their database with a simple click of a mouse button.
This is not a pre-existing function of OFBiz, so we had to build it ourselves. We began by coding a stand-alone Datanorm parser, which reads in Datanorm files and spits out lists of objects (each one corresponding to a supplier product). We anticipate this parser will come in handy on future projects.
When completed, the parser was added as a Jar file into our client’s copy of OFBiz. The task was then to build the whole importing service around this parser, a task which cuts across all layers of the software. After parsing the Datanorm file, the products are displayed in a paged list where the user can choose the ones to be imported. Choosing an item creates a new product in the OFBiz database and inserts all associated information too (like price and original manufacturer’s name). Very quickly, our clients can build up a comprehensive catalogue without having to type in everything by hand.
Although OFBiz comes with a large suite of JUnit tests, it has little in the way of GUI testing. To remedy this, we’ve configured our build machine to execute a series of Selenium tests during each build. Every time we code up a new feature, we also add an accompanying Selenium test case to guard against future regressions. Our test suite now extends to dozens of test cases.
All basic types of reports come with OFBiz (like quotes and invoices). Ideally, they should conform to your company’s existing template. Helpfully, the same templating engine that generates the web pages also generates the PDF reports, so designing a report is very much like designing a view.
Translations and localisations
OFBiz does come with a very wide range of localisations, but they are admittedly of varying quality. As you’d expect, the English locale is fine, but while the German locale is mostly good, in a few places the translations are either missing, odd-sounding to a native-speaker’s ear, or look suspiciously like someone’s got their information from Google Translate. We’ve been fixing all the German language problems as we’ve found them.
OFBiz is an application that the open source community can be proud of. Well-designed, feature-rich, usable and easy to customise (which pleases _us_ to no end). The dedicated community behind OFBiz have produced a system that any enterprise can integrate into their work processes and will help them run all their business activities securely and efficiently.
It’s a fine example of ERP software, a type of application that is essential to the efficient running of any reasonably-sized business.