Developing a CRM solution using Open Source Frameworks

A Case Study by Michael Lim

Developing J2EE based applications has proven to be a real challenge to most enterprises not because of its complexity but mostly because of its choices of technologies. J2EE is composed of different technologies that can solve different problem domains, from presentation-tier (JSP, JSF), to web-tier (Servlets/JSP) and even business-tier (EJB). With the emergence of virtually hundreds of lightweight, open source frameworks to support these technologies, it has become more harder than ever to choose the right framework. Exist Engineering came up with a solution in order to find out if current and up coming lightweight, open source frameworks can answer this questions, and that is to build a CRM application from the ground up.

AgileCRM is Exist Engineering’s initiative in propagating the use of open source software in developing enterprise application, such as a CRM solution, that can (and will) rival existing commercial counterparts. AgileCRM is built using two of today’s popular open source software, Spring and Hibernate. With these two frameworks, AgileCRM has achieved scalability and extensibility across different platforms making it a viable choice for developing enterprise applications.

Spring and Hibernate does not only help developers jump across technology hurdles but it also helps developers use good programming practices, as is the case with Spring. In AgileCRM, Spring has helped our developers clearly define the different layers or the three-tiers of the application, namely the presentation layer, business layer and the persistent layer. With Spring’s built in Inversion of Control (IoC) container, Model-View-Controller (MVC) framework and Hibernate support, business objects are clearly and cleanly separated from presentation (or view) and persistent objects.

In the earlier version of AgileCRM, we’ve used Jakarta Struts as the MVC framework for the application. As Spring matured, we opted to use its MVC framework in order to fully utilize the power of Spring and to centralize all configuration into one framework. The migration from Struts to Spring MVC was absolutely seamless. We have encountered very minimal problems and made very minimal code changes, mostly only on the JSP pages, specifically changing the Struts Tags to Spring Tags. It took less than 2 weeks to complete the migration and to fully test the whole application. Thanks to the clean design that is enforced by Spring.

With Hibernate, on the other hand, we were able to deploy AgileCRM against multiple database servers with very minimal change in the DAO’s (Data Access Objects), thanks to Hibernate’s multiple DB support (called dialects). We were able to test AgileCRM against MySQL, PostgreSQL, MSSQL and Oracle with very minimal problems.

AgileCRM has been also tested to run on different application servers/servlet containers, namely Tomcat, Jetty, Resin, Jboss and Weblogic, again with no code change and very minimal configuration.

Currently, AgileCRM is continually being developed and enhanced to accommodate not only new features and but for our developers to also test out new technologies and techniques to enhance their skills and to make AgileCRM a proven proof of concept that lightweight, open source frameworks is force to be reckon with.

Michael Lim is the Chief Technology Officer of Exist. Mike brings to the management team over 10 years of IT experience. Presently, he oversees the structure of Exist software development process from scoping to client management. He holds a degree in Computer Science from De La Salle University.