11.21
In SugarCRM , Tutorials | Tags: CRM, Data Management, Open Source, SugarCRM
SugarCRM is a web-based Customer Relationship Management web application that organizations can use to centralize and manage their internal data and work flows. It is a SaaS solution, remotely hosted and maintained on Sugar’s servers for a fee–$275 to $449 per user per year, depending on the level of service you require. They also offer an on-sight solution and an open source Community Edition, which you can download and install on your own web server to meet your needs for free. This article discusses my experience implementing SugarCRM Community Edition, including module building, upgrades, and considerations for the future of SugarCRM. If you like what you see, and you want to see more, please consider visiting one of our sponsors. Each click makes us a few cents.
I first implemented SugarCRM about a year ago when my Information Technology team was looking for a help desk and inventory management solution. SugarCRM isn’t designed for this out-of-the-box, but it does allow you to create and modify modules to suit a wide array of data management needs. I was impressed at the “Fast Stack” installers that unpacked and configured Apache, MySQL and Sugar’s source files (more or less) automatically. I had SugarCRM running on a development server in minutes, and I quickly moved to installing and creating modules. While I found it overall a great application with a lot of promise, we chose to go with Microsoft SharePoint because, with the exception of myself, our IT team militantly supported MS.
But recently I’ve taken over the IT operations of a fantastic non-profit that embraces open source software, and in three weeks we’ve already implemented SugarCRM to track our IT hardware and software inventory, licenses and support issues. This was made easier by the IT coordinator keeping up with existing inventory so well. Our goal was to centralize the data in order to begin working with it, as opposed to merely logging the data in a FileMaker database. The goal in our IT implementation of SugarCRM is to not only keep a record of all computer and network equipment, but also associate this data with software, licenses and technical support issues. In doing this we could then produce reports and track buggy or defective products.
Getting Started
After evaluating a few other CRM’s, like DrupalCRM and SalesForce.com, we chose SugarCRM because the price for the Community Edition–free–was in our budget. We also felt that SugarCRM offered more to us in terms of developing custom modules and taking advantage of modules that others have developed. Furthermore, if we do at some point require more assistance from SugarCRM for development, hosting or support, we can upgrade to one of the paid levels of service. This is very appealing to organizations who cannot or do not want to spend a lot of money on a CRM solution, and I hope to see more SaaS products adopt similar models in the future.
Overall the end-user side of SugarCRM is pretty stable, with the exception of a few annoying little bugs. But developers beware: The module builder is very flaky, and it is possible to totally destroy your SugarCRM installation with a few wrong clicks. I’ve rebuilt the help desk module I designed at least four times, and I’ve had to reinstall the entire SugarCRM package at least three times. We finally elected to implement parallel installations on a development server, where we build modules to deploy on a production SugarCRM server. This has been pretty agreeable so far, and the low application overhead makes it affordable to do this. Once we are convinced of the robustness of a particular custom module, we publish it from within the module builder and then install it on the production server. Certainly it’s not the best idea to develop on a production server, if you have the resources for it. But also it shouldn’t be the case that a few wrong clicks will tank an application.
Installing and Creating Modules
Before creating modules from scratch, it’s a good idea to join the Sugar Forums and mill around SugarForge to see what is already available. Currently there are 472 modules available for SugarCRM, which seems like a huge amount. But one thing you will find is that these modules are not compatible with all versions of SugarCRM. We are currently using version 5.1.0b, which only supports 59 of the 472 existing modules (give or take). To give you an example of how disruptive this problem is I’ve found several really good modules that I’d like to install on our production server, but almost none of them are compatible with the latest release.
This is annoying for several reasons, but most importantly it is a huge disincentive to create new modules. Why should I create and publish a help desk module if it will be obsolete upon the next release? Is it fair of SugarCRM to expect me to rebuild the module every time I upgrade? What if I retire or transition to a new organization that doesn’t use SugarCRM? It’s obvious that a lot of developers have invested time in creating some pretty interesting plugins that are completely irrelevant now. This also makes new releases of SugarCRM something to dread rather than something to look forward to. There must be a better way, and I hope the developers at SugarCRM are working to meet this lofty but important obstacle.
Since we were unable to find a module for exactly what we need, we opted to build our own. The help desk module we created is comprised of four tables: Inventory, Software, Licenses and Support. We have each inventory item associated with a user. (The user table is built-in to the original installation, and the Community Edition does not grant you access to this within the application.) When we add a new computer, for instance, we input details like CPU speed, serial number, manufacturer, model, and so on. We can then click a select box and choose the user to assign the equipment to. We have another form to add new software inventory, like Microsoft Office, FileMaker, and anti-virus utilities. We then associate each piece of sofware to the computer inventory by license instances. These assets are also associated with the built-in Accounts table, which is in turn associated with the Contacts table.
If a user notifies us of a problem, we can create a support instance, which is attached to the specific machine and software giving the problem. Depending on the nature of the problem, we may need to contact the vendor or a third-party warranty provider. To this end each inventory and software item is associated with an account contact and warranty contact, if applicable. From a management perspective, this type of data can help us track our assets and workload, and it ultimately assists us in retiring (and ceasing to purchase) defective equipment.
Beyond the Help Desk
In the past few weeks our IT department has been meeting with different units within our organization to explore their data and tracking needs. Now that the Help Desk module is complete we are developing/revising a module that another department will use to track business contacts and sales leads. This is quite exciting because it is exactly what SugarCRM was designed to do. One thing most SugarCRM users will ultimately notice is that this application will offer way more than your organization probably needs. The module studio comes in extremely handy here so you can remove unnecessary fields and organizes tables in ways that are optimal for a particular department’s work flow.
This presents another issue though, namely user rights management. SugarCRM allows you to associate users with specific roles, much like Microsoft’s Active Directory. It’s not nearly as powerful as network level security policies, but it’s handy because you can assign specific rights to specific roles. If IT does not need to see the Opportunities and Leads tables, for instance, you can remove these tabs from the menu. Unfortunately, it’s not yet possible to omit data within specific tables based upon roles. By this I mean that there may be specific leads or contacts that only one role needs to see. Currently I would have to build a parallel module and store data in separate tables to satisfy this need.
Another limitation we’ve experienced is that there is no reporting module available in the Community Edition. Why they do not offer this baffles me, and I can only speculate that it’s because they want to up-sell their open source users to the paid version. There may be no reason to do this other than wanting clean and customizable reports. I can’t fault them for this from a business perspective, but it’s an artificial way to upsell me considering that the module clearly exists already. That is, there is no real cost limitation in providing this in the Community Edition. They just don’t offer it.
The Future of SugarCRM
This leads me to consider the future of SugarCRM. First let me state that my educational background is in institutional economics rather than computer science or any technologically related field. I’m trained academically to identify incentive structures within organizations and markets, rather intended or unintended. A practical example of this is something like downloading free mp3s as opposed to purchasing them outright. As an institutionalist, I look at the probability of actual enforcement of the DMCA for music theft and the ease of downloading free music illegally. I also scrutenize competing institutional structures, like the individual’s right to privacy, that may infringe upon the abilities of law enforcement agents to enforce a particular institutional arrangement.
With that bias in mind I have to admit that I’m not optimistic about the future of SugarCRM. Although they are clearly the market leader of open source CRM vendors, they have serious limitations in terms of their development policies. As I mentioned previously, the lack of compatibility among modules and version strongly discourages expanding their module-building community. A better approach to this would be to release a future version of SugarCRM that would adhere to the same module structure indefinitely. It is posisble to do this with a little bit of foresight, but in the five or so versions of SugarCRM that have been released there has been no evidence of them moving this direction.
Another future project that I would like to see SugarCRM implement is a very simple, blank PHP page generator that would let me click a few buttons and be editing a new PHP document. This seems like a very simple addition, but so far the SugarCRM development team has completely rejected this idea. For some reason the developers and even most of the community cannot see the utility in being able to interface with the database like this. Some of the debate has been quite heated, and I invite you to read the exchange between myself and a forum member, SugarDev.net, here. I admit that I thought I was conversing with an actual SugarCRM Developer rather than an unhelpful fellow user, and I was shocked as to his responses. But as soon as I learned he was just another user, I was certainly more accepting of his opinion, which is mainly that SugarCRM can’t or shouldn’t offer this PHP enhancement because it would be too difficult.
As far as I see it, SugarCRM Community Edition is just that–it exists for the community of users, which includes myself and my organization. If one of the community members has a need, it’s the responsibility of SugarCRM to help us meet that need. Even if SugarCRM cannot devote the development hours to implement the change for us, they should at the very least assure that their platform offers us the ability to enhance the system ourselves. Sure, there is a way to implement this little PHP enhancement on my own. But I’m not nearly familiar enough with the source code to do this. I doubt very seriously that SugarCRM will ever implement this for me, but I can tell you what I would do with it: I would create a PHP page that read data from SugarCRM’s database and presented it in a form-like manner on a page. I would even impement a solution to export tables (or parts of tables) as CSV and PDF. I would take full advantage of the Google Charts API to present clean graphical representations of the data in our SugarCRM implementation. I could even create my own custom forms and further integrate our SugarCRM installation with other databases in our network.
Conclusion
It’s obvious to me that not every organization is ready to take the non-linear leap that enables the product to grow beyond its original intent. Surely, SugarCRM was designed to be exactly what it is–a Customer Relationship Management tool. And it does this very, very well considering its occassional hangups. On the other hand, this web application is so close to being useable for greater data management needs that it seems criminal to hold it back
There are certainly many bugs floating around SugarCRM, but most of them are addressed very quickly via uprades and new releases. I definitely cannot complain about where the project is now compared to my first attempt at using it. But perhaps my perspective of the project, coming from two distinct times and organizations in which I used it, makes it more apparent to me than most that SugarCRM is far below its potential.
So what am I going to do about it? I will continue to contribute my opinions on the forums and otherwise in hopes that eventually my needs will be heard. I’ll continue to develop modules and deploy them for other organizations to use. At the time of writing this article our corporate attorneys are evaluating the logistics of deploying our first module for the public, namely the help desk module mentioned herein. Ultimately it will be published, but the current question is whether it is done so under my monicer or the company for which I work. I’m really looking forward to giving back to the SugarCRM community though, and I hope that by participating in this way they’ll be more likely to listen to recommendations.
I definitely recommend giving SugarCRM a try, but not without some degree of caution. It is very easy to install and use, but I encourage any new users of the application to spend some time trying to break it. As a developer, you will be able to break it very quickly. Just try making a new module and playing with the table relationships. Eventually you’ll delete a variable or field and find the error with which many of us have become very familiar. Fortunately though the application is pretty solid from the end user’s perspective, so when you are comfortable with it you’ll find it a powerful edition to your organization’s data management resources.
If you have any questions or feedback, join the SugarCRM Forum! Or feel free to contact me directly.
Comments are closed.