Wednesday, June 30, 2010

Packaging Openbravo 3.0 as a distribution

by Paolo Juvara 
Openbravo 3.0 is going to be a landmark release for the Openbravo ecosystem for many reasons, ranging from improved functionality to a completely revised platform.

As the first release candidate milestone of Openbravo 3.0 approaches (the target release is July 2010), I would like to take the time to explore one specific area of innovation: the packaging and delivery of the product.

Unlike previous releases, where Openbravo was offered as a monolithic product on top of which users could install extensions, Openbravo 3.0 is going to be delivered as "distribution" of modules. By distribution, I mean a collection of modules - one of which is Core - selected and integrated to achieve the desired functional footprint of the release.

This approach presents several advantages, including a smoother upgrade for 2.50 users and the ability to reuse 2.50 modules in 3.0. The following presentation illustrates the concept.

Leveraging the modular architecture of 2.50, we have been providing extension modules on top of Core. Some of those extensions are technology oriented, like the Seam Integration or the new User Interface Selector, while others, like Advanced Payables and Receivables, are functional in nature. In both cases, these are pre-3.0 features that can be deployed as modules on top of 2.50.

We can continue to release such modular components until we have all the building blocks we need for 3.0.

This is an effective way to add new capabilities but for 3.0 we also need to remove some unwanted features from Core, in some cases because it is obsolete functionality and in other cases because it is more appropriate as a module rather than a core feature.

Removing functionality is tricky: if we eliminate the code, in fact, we take the risk of breaking a dependency for an existing module therefore negating the objective of ensuring a smooth upgrade and the durability of modules. To avoid this problem, we will improve the License Manager capabilities of Core: currently the License Manager is the technology that allows us to distinguish between a Community Edition and a Professional Edition; we intend to enhance its capabilities to allow us to securely hide unwanted features and ensuring that they cannot be accidentally re-enabled. While still physically present, the unwanted features will be for all intents and purposes de-activated.

Leveraging this technology, we can deliver Openbravo 3.0 as a "template" that combines all the desired modules, plus a configuration script that defines the default configuration of the system.

We have already followed a similar approach for QuickStart, one of the professional solutions that we developed for our partners in 2.50 and we will apply the same technique for 3.0.

Using our 3.0 distribution as starting template, it is then possible to add further configuration scripts and provide additional specializations. In this respect, this packaging approach provides a nice balance between the base product and its vertical specializations as both solutions share the same development and distribution approach.

There are some obvious benefits to this approach:
  • Easy upgrade for 2.50 users to 3.0: technically, an upgrade is reduced to the installation of additional modules and a configuration template (of course, there are many non technical aspects involved with an upgrade, but avoiding technical problems already simplifies the challenge)
  • Guaranteed durability of modules: all of the 2.50 modules will be able to work in 3.0 as well because none of their dependencies is altered.
  • Opportunity to gather early feedback on 3.0: we do not need to have 100% of the functionality ready to start exposing it to our community. In fact, many of the 3.0 modules have already been independently available for several months and went through their own feedback and stabilization cycle.
  • Reduced maintenance cost for 2.50: since 2.50 and 3.0 share a common Core, the cost of maintenance will be largely reduced.
I have been using in this post the term "distribution" to describe this approach. This is a term that I liberally borrow from the Linux world, where a distribution, like Ubuntu, Red Hat, or SUSE, etc., is a collection of software packages including the Linux Kernel, a window manager, a desktop environment and other software. This model has proven very successful for Linux and a year ago I discussed how modularity could enable the same approach for Openbravo.
With 3.0 we fully embrace the distribution approach, coming to a full circle and confirming our commitment to build the ecosystem of reference in the open source ERP space.


Wednesday, June 23, 2010

Consona acquires Compiere – What about the Community?
by Paolo Juvara

Last Wednesday the open source ERP community woke up with the news of the Consona acquisition of Compiere, one of the pioneers in open source ERP. The text of the announcement can be found here.

Since the announcement, many observers and commentators started a debate on whether this is a victory for open source or the sad demise of one the pioneers of the open source ERP category. Many also speculated on what might be in the store for the product, with most people interpreting the transaction primarily as a technology acquisition.
A recurring theme among commentators is that Compiere failed to embrace its community.

With such a symbolic event fresh in our mind, it is time to reflect on how Openbravo facilitates the development of its own community.

Last year I had commented on Adam Blum's post on The Seven Habits of Highly Effective Open Source Products. An effective open source product must display "a credible community with a credible effort to involve the community in the development of the product, as described in Adam's seven habits:
  1. Public source viewing
  2. Common license
  3. Public source code checkins
  4. Public bugs
  5. Public forums
  6. Anyone can contribute
  7. Public, complete and modifiable documentation"
How does Openbravo measures against Adam's seven habits?
  1. Openbravo offers public source viewing at
  2. Openbravo adopts a common license with the Openbravo Public License being a common variation of the popular Mozilla Public License
  3. Openbravo offers public source code checkins available either at, through the openbravo-commit mailing list, or on the #openbravo IRC channel on
  4. Openbravo offer a public issue tracker at where any community member can view or report issues
  5. Openbravo hosts and moderates public forums on the Openbravo Forge mirrored on SourceForge.
  6. Openbravo accepts open contribution through a documented process either in the form of extension modules, core contributions or in many other ways.
  7. Openbravo maintains a public, complete and modifiable documentation available in the wiki.
But it does not stop there:
Last but not least:
  • Openbravo has formalized its commitment to its community through the Openbravo Manifesto.
  • Openbravo has adopted a business model that does not divorce its Community Edition users from its Professional Edition solutions but embraces the usage of the Community Edition. There is an easy and smooth transition path for those community users that are ready to enjoy the increased benefits of the Professional Edition. Similarly there is freedom of choice for developers and service providers to distribute their development either as open source or with a commercial license.
Openbravo invests a significant amount of resources to provide the infrastructure, the leadership and the coordination around the community. This is part of our DNA and consistent with one of our core beliefs that openness is a requirement to build successful products, and that leveraging the domain expertise of a global community is the only way to build a product that fits the needs of all SMEs.
The results of these efforts are a community that is lively, growing and productive.

Looking at the public SourceForge statistics - which are public and independent -, for the period of May 2010:
  • Activity ranking: 2
  • Forum post: 655 (and this does not include any of the hundreds of discussions in the Openbravo Forge other than the core ones)
  • Downloads: 23,845 (and this does not include the 2,480 downloads from the Ubuntu repository nor any of the thousands of downloads of extension modules from our own Central Repository)
If we consider other data, we can observe that:
  • The Openbravo community is large and growing, with 10,426 registered members at the end of May and increasing at a pace of over 300 new members per month.
  • The Openbravo community is engaged giving us feedback on the product, with anywhere between 20 and 30% of the defect and new feature requests reported in any given month coming from the open community.
  • The Openbravo community is productive, with 361 public projects registered in the Openbravo Forge at the end of May and managed by our community.
  • The Openbravo community is effective, having produced as of the end of May 161 modules distributed through the Central Repository to the entire ecosystem of users.
The Openbravo community is still young and we still have a way to go before we can consider it fully mature. However, if you are looking for an open source ERP community that is welcoming, lively, engaging, productive and that does not create ideological or practical barriers between open source and commercial usage of the product, you should give Openbravo a try.

Tuesday, June 22, 2010

What does Consona's acquisition of Compiere mean?


Friday, 18 June 2010,Posted by Manel Sarasa

 What does Consona's acquisition of Compiere mean?

Since the announcement of Consona’s acquisition of Compiere, many people have asked me for my thoughts and comments. What does this deal mean for the open source ERP market, the ERP industry as a whole, and for the Openbravo community? I am keen to answer these questions and share my thoughts.

First, my interpretation of the nature of the acquisition. Everything I have read and heard about it reveals that the driving rationale for Consona was to acquire the technology, and not the open source element of Compiere, and so I predict this will mean the end for Compiere's community. Am I happy about that? No, not at all. Besides the disruption that this will bring to many people, I am a firm believer that at this stage the more successful open source ERP companies there are, the better. This is not good news at any level.

My second observation is about the predictability of this end game. Compiere's business model, organization and management style - specifically in product development, sales strategy and channel management – always resembled that of a traditional proprietary vendor, rather than one suited to an open source provider. Open source must never be used merely as a marketing tool - if you don't believe in open source and invest heavily in its development, then you don't create an open source culture within the project team and therefore cannot leverage its many benefits. Open source isn’t something you can just dabble in.

But I would like to sign off with some positive messages for the open source ERP industry. At Openbravo we are as excited and positive as ever. Open source has always been and will always be the very core of our business. This dedication and commitment is what helped us lead this market. Our purpose is to improve the efficiency of businesses around the world by bringing an ERP to every company. And for this reason our ambition has always been to create the leading web-based open source ERP company. We are strong believers that horizontal ERPs are a commodity and should be free; that value is in the services and industry specific solutions; and that openness and a strong community is a requirement for building better software in the 21st century. Success with open source ERP requires a collaborative, organic approach that unleashes synergies between the community and commercial use of the product, without artificial barriers. Rest assured that we will continue making it happen.

Ultimately, this acquisition means one less open source ERP player, reaffirming Openbravo’s leadership in this market and our genuine commitment to it. 

Wednesday, May 26, 2010

Review: For ERP, Is It Time To Applaud Openbravo?

By Fahmida Y. Rashid, CRN

10:27 AM EDT Tue. Apr. 15, 2008

Think of any proprietary platform, and there is an open-source alternative, whether it's an operating system or a database, or even, yes, an ERP system. Enterprise resource planning software is used for operational planning, including managing orders, inventory, accounting, and logistics. Long dominated by industry giantsOracle (NSDQ: ORCL) and SAP (NYSE:SAP), ERP deployments are generally associated with the large enterprise. Open source ERP systems bring the technology within reach of the small and midsize enterprises, and all the way down to the small business. There are a handful of open source ERP solutions that can be considered business-ready --- thorough documentation, extensive technical and customer support, and a regular release schedule. Openbravo ERP, from Spanish company Openbravo is one. The Test Center deployed the Web-based ERP and discovered a fully functional system that supports procurement and warehouse management, project and service management, production management, and financial management. It also supports BI and CRM. Designed for the SME, Openbravo ERP is flexible, scalable, and affordable.
A big concern about open source has always been about interoperability: would it work with what's already in production? Openbravo ERP eases those concerns somewhat, supporting both proprietary Oracle (10g) and open source PostgreSQL databases. Openbravo ERP is Java-based and requires several Apache products. At this point, Microsoft-centric customers with SQL Server databases, .NET framework, and IIS, won't be feeling the Openbravo love, but they are probably looking at Microsoft Dynamics ERP, anyway. However, Openbravo does run on servers running Microsoft Windows XP, 2000, 2003 Server.
Openbravo is different from other open-source ERP in that its interface is entirely Web-based. The user can view production information, inventory, customer information, order tracking, and workflow information all from a Web browser. This simplifies access, since authorized users don't have to wait for special client software to be installed on their computers. As most Web applications, the interface is intuitive and menu options are easily accessible. Various management options are organized as menus, such as sales, procurement, and production. Clicking on the option opens up all the associated tasks in a drop-down. For example, transactions such as sales and shipment orders are accessible under the Sales Management menu. Each task window is icon-driven, and the icons are pictorially easy to understand. Reports are easy to create and there are several templates, as well as the ability to create customized ones. The reports and data can be exported toMicrosoft (NSDQ: MSFT) Excel or saved as PDF.
Openbravo spent a lot of time designing the architecture the ERP is constructed on. The metadata-driven engine is based on a 2002 version of another open-source ERP project, Compiere. Openbravo improved upon the engine, and consists of only 10 percent of the code base, according to the company's Web site. The entire system is constructed on two development frameworks: the Model-View-Controller and Model-Driven-Development. Under MVC, data is manipulated by controllers, not directly by the user. By referencing a data model dictionary, the application engine can automatically recompile and rebuild whenever the administrator makes a change. And MDD allows models of code for user-created code. These two models simplify integration with other programs.
Deploying Openbravo ERP requires getting all the supporting applications installed and configured first. Test Center used a Debian 4.0r3 Etch server. Openbravo has been tested on other Linux flavors as well, including Red Hat Enterprise Linux, CentOS,Novell (NSDQ: NOVL) SUSE, Canonical's Ubuntu and Fedora. The testing server already had the latest Java and Ant installed; solution providers would have to remember to install them beforehand. Ant is an Apache software tool that automates software builds for Java files (similar to make).
Because it's a Java-based application, Openbravo also requires Tomcat, an Apache Web container that specifically handles Java Servlet and JSP. For the database backend, PostgreSQL was installed on the test server.
Once the individual components are in place, the actual Openbravo ERP installation is script-driven. Openbravo is distributed with all source code developed by Openbravo and few third-party libraries. The script requires information about the database server, such as IP address, username, and port, and about the system, such as the Web URL. Once the script completes, the Openbravo ERP is accessible by pointing the browser to the specified URL.

Deployment is where solution providers can really provide service. Compared to an SAP or Oracle deployment, Openbravo is relatively easy, but it's still not plug-and-play. An ERP implementation typically is handled by, or at least, supported by, system integrators and consultants. This works well with Openbravo's distribution model, which relies on the channel. Openbravo is available in two versions: the Community Edition and Network Edition. Community Edition is available for free from and intended for developers and non-critical environments. The Network Edition is the production-ready and stable solution, available through certified partners. For this Test Center review, Openbravo Community Edition was installed.
The latest features are available in the Community Edition and there are frequent releases throughout the year, while the Network Edition is updated biannually. For an annual subscription (prices vary depending on number of users or unlimited use), the Network Edition offers automatic upgrades, bug-fixes, unlimited support, and embedded licenses for proprietary software and third-party support.
Montclair, N.J.-based Corra Technology is an open-source solution provider providing system integration, support, and consulting services. CEO Ron Bongo estimated the company has already been contracted to do four or five Openbravo installations in 2008, and the company expects to do at least ten or fifteen this year.
ERP systems have to support big companies with complex business systems and a large user base. Does Openbravo scale? Bongo said a typical Openbravo deployment for Corra Technology is in the $10 million to $100 million range, and scalability has never been a problem. The company's focus on model-driven architecture makes the application stable, scalable, and easy to develop for.
System integrators with software development capabilities can develop applications for Openbravo, especially with the Eclipse IDE. Other applications can synchronize data with Openbravo using the Java-based Openbravo API. Also, Openbravo ERP is released under the Mozilla Public License 1.1, which means the code can be used as a foundation for other proprietary licensed products.
Openbravo also offers Openbravo POS, an application specifically designed for touch screens used in the retail industry. Openbravo POS can work together with Openbravo ERP, or separately in any existing point-of-sale environment.
System integrators can speed up some of the deployment by creating an appliance with the basic components pre-installed. With proper hardware, the appliance can have the ERP system and its dependencies in place, waiting to be configured according to each customer's individual specifications and requirements.
A note about documentation and support: many open source projects often rush to get the product out, which often means documentation, if available, is usually skimpy and often riddled with errors. While a strong community-driven-forum is essential for an open source project, businesses need access to thorough, in-depth, and clearly written documentation. Openbravo shines in this aspect. The installation guide, user manual, and associated reference materials on configuring third-party applications and hardware specifications are superb. Bongo said Openbravo spent a long time getting the software ready, but also in getting the commercial team behind the product for support. "They have all the pieces in place," he said.
Corra Technology is in the enviable position of not having to convince customers to consider open-source deployments since "99 percent" of its customers approach the company asking for open-source solutions. For solution providers still trying to convince their customers, selling open-source ERP doesn't have to be a difficult conversation. According to Bongo, many CIOs are actively considering open-source solutions when considering IT projects. Open source solutions save customers money, especially for ERP. Customers can specify their requirements and have only those services in the ERP system, so that they are not paying for services they aren't interested in. The ease of customization also means customers are no longer locked in to expensive ERP software and supporting systems.
Cost-competitive, a modern architecture, and flexible (and it works!) -- what more do customers need for ERP? 

Monday, April 19, 2010

Openbravo 2.50: REST Webservices


maandag 2 maart 2009

In this post I will talk about new very exciting functionality in Openbravo 2.50: full REST web services support for all tables in the Openbravo datamodel (including the tables added by modules).

I will first start with a general overview and then some examples of web service calls which you can try directly in your browser. The post is concluded with a short description on how to add your own REST-like web services and a number of interesting links on REST.

Openbravo REST provides a CRUD-like interface so that external applications can retrieve, update, create and delete business objects through standard HTTP requests.

Some benefits of using a REST approach:
  • favors identifying and addressing resources which fits to the data-centric nature of the provided apis (a resource corresponds to a business object)
  • has actions (POST, PUT, DELETE, GET) which correspond to standard CRUD actions
  • allows linking to specific business objects or to sets of business objects. This is a very powerfull feature of a REST approach and it allows for easy navigation between business objects.
  • is simple to develop and use, and very lightweight from an architectural point of view
The Openbravo REST webservice operates on Business Objects in Openbravo. Before continuing let's first explain what a Business Object is (in Openbravo). A business object can be a simple entity (==table) such as a currency which just has basic primitive fields. On the other hand it can also be a structure of entities, for example an order header with its order line.

Openbravo REST web services provide the following functionality:
  • retrieve a single business object or a list of business objects using a standard HTTP GET request
  • querying, filtering, paging and sorting of lists of business objects, again through standard HTTP requests
  • update of an existing business object or multiple business objects through XML and a HTTP POST or PUT operation
  • creation of new business objects through a POST/PUT operation
  • export and import of data: xml files which contain a mix of different types of business objects and a mix of new and existing business object
  • delete operation using either a url pointing to a specific business object which needs to be removed or a XML document which contains business objects (as full xml or as partial xml) which need to be removed.
This functionality can be used for standard integration scenario's, but it can also be used to develop another UI on top of Openbravo using an alternative UI-technology (e.g. Flex).

The Openbravo REST web services use the same access/authorizations as the standard Openbravo application. Before calling a web service the caller must log in. The login functionality is provided by the Openbravo REST framework. All REST actions are then executed in the context of a client/organization and current role of the user.

Now let's go to some examples. When you have Openbravo running then you can try these out directly in your browser by entering the urls in your browser's address bar. Note that the examples assume that Openbravo runs locally on port 8080, it maybe necessary to replace the localhost:8080 part with your own server name/port. The examples assume that the web service user has access to the Country and Currency tables.
  • Query for all Countries:
  • Get a specific Country (in this case Spain):

Note that the xml returned contains both the Country and its children (Regions), i.e. a business object structure.
  • An ordered example, query for all countries and return them ordered by ibanCode and regionName:
  • The same example with paging, returns 10 Countries starting from the 19th:
  • Do some filtering, only return countries which have a Currency with id 102 and a iBANLength of minimum 23:
http://localhost:8080/openbravo/ws/dal/Country?where=currency='102' and iBANLength>=23

(the where parameter can contain a Hibernate Query Language where clause)

After trying some examples, the next question is which web services are provided by Openbravo, i.e. what url's are valid, what are the entity names and XML property names, what is valid xml? To answer this question Openbravo REST has a special web service which can be called. This web service generates a XML Schema of the available business objects and their elements (including the tables added by custom/external modules). You can try it yourselve on your local running Openbravo instance:

These first examples only retrieved data. The REST web services also have update/create/delete functions. To support web service testing, Firefox has a nice add-on: Poster. This add-on allows you to POST/PUT XML to a URL. For these examples I again assume that you have Openbravo running locally. I will be creating a new currency, updating its precision and then deleting the currency.

Here is an example of xml which can be used to create a new Currency:

true OBD Openbravo Dollars 2 4 4 true

You can easily create this xml by retrieving a Currency through a url (for example, the euro) and then removing the XML parts related to id, client/organization and audit info.

Click on the Poster icon (right-bottom in Firefox) and set the options as displayed in the image below.

Note that the xml (displayed above) is entered in the Content field, the Action is set to POST and the User Auth. fields contain the login and password. The user must have permissions to create a Currency. The standard Openbravo demo user has these capabilities.

Then click on the first GO button, you should be seeing the following result:

This xml gives a success message but more importantly it also gives the id back of the newly created object. This allows software, making REST calls, to use this id in further processing. In our case we can use this id to check if the currency was indeed created (note replace the id in the url with the id you received back):

Now as a next step let's update a field of the new Currency, in this case the precision is changed. The image below shows how this is done. The xml only has the field which needs to be updated and the id of the Currency is present as an xml attribute (to try-this-at-home, replace the id value with the one created in your case).

And to clean up let's delete the new currency. This is done with a DELETE action, the url of the action needs to point to the business object which needs to be deleted (in this case the Currency created above).

The above actions can be performed for all of the 425+ tables in Openbravo. More importantly REST webservices automatically work out-of-the-box also for new tables added by modules.

The delete action concludes the quick overview of the capabilities of Openbravo REST Webservices. The overview hopefully showed how easy it is to use REST webservices. Software talking to REST webservices need basic xml processing capabilities but that's the only real prerequisite.

The Openbravo REST framework can be extended with new Webservices. See here for more information. Openbravo REST takes care of security and exception handling. Web services can be added (installed/uninstalled) as part of a module.

For more information:
  • REST Webservice Technical Design
  • REST test cases can be found in the openbravo development project in the src-test folder and then in the org.openbravo.test.webservice package
Here are some other interesting (non-Openbravo) links:
Some links related to REST versus SOAP, there is a fair amount of articles on the web on this topic: