Posts Tagged ‘Linux’

Securing your system

Quick post of a script worth using. If your openerpserver is running on a Linux server, this server should be secured. Linux is a more secure server than Windows, but still is vulnerable to attacks. If you are new to the security field in Linux, there is a tool you should try, Bastille Unix. If you are using an

Ubuntu distribution, you can install this tool with the following command:

# sudo apt-get install bastille

After running the command bastille, you will see a wizard like window interface which will guide you through the different steps of hardening your system. These steps involve setting file permissions, disabling FTP, Firewall, Printing, disabling unnecesary services and accounts. Not only this is a very good tutorial on Linux security, but also a tool for hardening your system.

Be aware that your security obligations do not end here, this is just a very good first step.


OpenERP module of the day: base_crypt (or encrypting your user password in OpenERP)

February 22, 2011 2 comments
Category:WikiProject Cryptography participants

Image via Wikipedia

This is a quick post. I found this base module which is quite useful and I wanted to share it with you. The module is base_crypt and it encrypts user passwords in the OpenERP database. By  default OpenERP stores user passwords in the res_users table, they are stored in plain text in the password field. base_crypt module encrypts all passwords with the MD5 algorithm. Below is the link for downloading the module:

IMHO, this module should be part of core since it is a good security practice to store passwords in encrypted form. In some places it is mandated by law. It is also a nice module to look at, checking its code is fun.


Learning OpenERP with videos

February 14, 2011 1 comment
Audio-Video-Concert SCRAP

Image via Wikipedia

Well, I don’t have that much time but I wanted make a quick short post on a website that helped me a lot to learn OpenERP. This website is OpenERP Video, you can find it at this URL:

My experience with the website has been very positive and I am very happy it exists. Actually, when I was beginning with OpenERP, I watched many of its videos since they taught me how to use the system, while at the same time reading the OpenERP book.

A couple of interesting things about this website, it has video content provided by the community and Pragmatic TechSoft. So if you have a nice video on how to use OpenERP, you can upload it and promote it at this website. The other interesting thing about this website, is how large its media library is. Keep in mind that producing a video is not easy, and producing a tutorial video is quite demanding since you need to devote the time to do it plus plan for it. Then edit it. It takes a lot of time.

These videos are brand new, and you can find videos covering the new features of OpenERP 6.0, such as OpenERP 6.0 module and UI improvement videos.

My last point is, we should have more videos online. Since end-users do not read manuals and they can’t spend weeks in classrooms. So having them watch videos is a good way to ensure the OpenERP adoption among end-users.

So… Kudos to Pragmatic!!!!

OpenERP Partners – Getting revenues from existing customers

February 13, 2011 Leave a comment
Polish OpenERP screenshot

Image via Wikipedia

Well, just wanted to share I reply I posted in the OpenERP forum. This discussion was started by Fabien Pinckaers and it is an interesting one. It is how to get more revenue from existing customers. You can also read the presentation “OpenERP Partners – Getting revenues from existing customers”. I found the discussion quite interesting and I wanted to share my reply (which is below).

Just found this discussion and I wanted to share my thoughts on this. First, I would like to make clear where I stand now. My partners and I are starting a new software company and right now we are in the stage of being incorporated. We will be a formal company in one or two months. We are not OpenERP partners yet for the reason of not being a company yet (you could think of us as a bunch of software developers working together). We intend to become partners when we are incorporated as a company.

Why are we thinking of becoming partners? Basically because we intend to use the OpenERP software and we understand good software does not happen in a vacuum and people who develop it should be encouraged to continue its development. We intend to make money of OpenERP so we will devote a percentage of our income to its founding (we had a discussion with our partners on whether to become partners or donate a percentage of the money we make in each implementation, but we are leaning towards being partners)

OK, this is what I wanted to share. The best way to make money with OpenERP is with existing customers. From time to time we will make more money with new implementations, but on the long run we will make more money with an existing customer base. Plus, they allow you build a sustainable business.

What is the best way to increase this incremental revenue? Find new ways of either reducing costs or boosting sales. OpenERP (IMHO) is not about a technical proposition but a business proposition, which will allow business reduce its expenses or increase its revenues. How will this software do that? By understanding the customer business and its competitive environment. There is no secret to this. By understanding how the client makes or saves money, we will be able to propose new functionalities or projects that will allow us more money with the customer.

For example, we have a client who will soon implement OpenERP. Why is this client thinking of OpenERP? Because if it is well implemented it will reduce the stock, and the customer is thinking of reducing its stock in millions (OK, pesos, but still millions!!!). What the client needs is to reduce the expenses associated with inventory. The customer is thinking of implementing the stock, mrp and purchase modules.

But after implementing those modules, the customer will need to improve its forecast system. Why? Because the first step in inventory optimization is having a good forecast. And we will need to develop a forecast module for forecasting the demand of thousands of products. That will be a profitable second project (and we will be glad to share that module with the community). And after the forecast improvement module, we will need to implement the CRM module.

That is a good example of how aligning the OpenERP implementation with the business initiatives or business needs boosts the partner revenues. Our customer is not the people in IT (in two of our customers the IT department is only one guy doing whatever it takes to keep the computers and servers running). It’s the people in production, accounting, sales and marketing. It is understanding how to increase sales for the customer, or reduce its costs. Understanding this makes the OpenERP an easier sell (not easy, but much easier). And alleviates the pressure on the team.

A last thought, I think understanding the customer business will create the need for additional modules or applications. Such as Activity Based Costing module, Markdown management module, Revenue management module and so on. I think implementing these modules will generate very  interesting revenue opportunities for partners as well.

Well, just wanted to share my thoughts. Have a great Sunday!

OpenERP, Kettle and TerminatOOOR

February 10, 2011 Leave a comment
The blue/white elephant logo of the PostgreSQL...

Image via Wikipedia

Yesterday I have been testing Kettle and OpenERP. Other OpenERP consultants recommended me to use TerminatOOR in order to update the OpenERP data model. I was intrigued by it and yesterday I gave it a try. So this is a summary of my yesterday’s experiences with Kettle and TerminatOOR.

So when it comes to dealing with OpenERP data model, pretty much you do two things. You either extract data or load data. Importing is pretty straightforward, I was able to connect to the OpenERP server with the Table Input step and extract data with JDBC (don’t forget to install the PostgreSQL JDBC driver). This might not be the  best idea for pulling data from the system but it is a quite intuitive and efficient one. Just be sure you are pulling the right data, double check against the system. And don’t forget to tell your DBA to set the database permissions so you don’t experience any undesired visit to your database.

The real challenge lies in updating the data. You can update the data with the Table Output step, but this approach has several drawbacks. The first one is security, OpenERP can not enforce the security rules with this approach since it bypasses the application security layer. Second one is you might end up with inconsistencies in the database. Don’t forget that objects in OpenERP might update more than one table everytime they are updated/created. So if you update the OpenERP tables with a database tool, chances are you will run into consistency problems sooner or later (actually sooner than you think).

This is where TerminatOOOR comes into the scene. TerminatOOOR is (other than the movie where Arnold Schwarzenegger was smartly cast as a robot) a Kettle Step that provides a connector between OpenERP and Kettle. TerminatOOOR is a project of the founder of the brazilian society Akretion. I will not go into the details on how to install it and configure it, you can find it in the project wiki. The wiki is quite complete and helps you figure out how to use the connector and test it. And there is more documentation on the way.

Before finishing this post, I would like to make a couple of suggestions if you are trying TerminatOOOR for the first time. First, learn to use Kettle before trying the connector. Learning ETL tools and how they are used and their potential takes more than one day, so devote at least one day to learn the ropes of developing Transformation in the Pentahoo tool. Don’t forget that you will update OpenERP with Kettle, not with  TerminatOOOR. The latter will connect Kettle and OpenERP. There are tutorials online for learning Kettle and it is quite an intuitive tool to learn. But if you want to learn the ropes of developing the scripts used by TerminatOOOR, you can check the OOOR page.

Second, study the examples that come with the connector (you can find them in the samples directory). Open them and try them. They will show you how TerminatOOOR works and how it updates OpenERP. Third, don’t forget that openerp-server has to be running! It took me a while to figure out what was wrong with my transformations and the main problem is, I did not start the openerp-server daemon, therefore Kettle was not able to call the webservices in the system.

And last but not least, TerminatOOOR comes with a very handy Ruby Test Console. Try it and debug your Ruby scripts in the console before running them with Kettle. It is very handy for debugging connection problems with OpenERP (it saved me lots of hours).


ETL and OpenERP

February 9, 2011 4 comments
Figure 1: Simple schematic for a data warehous...

Image via Wikipedia

ETL stands for Extraction, Transformation and Loading. They are used to integrate different systems in different platforms, and they do it in batch mode, they don’t do it in real-time (well, there are some tools that do it, but most of the times we integrate the systems on a periodic basis).

I will not explain how an ETL system works, I will explain why you should use it with OpenERP. In a latter post I will cover the topic of updating OpenERP data with ETL.

Why use ETL? Many reasons. The first reason is it is a very productive tool and once you learn how to use it, your productivity as a developer increases twofold (at least). Developing integration jobs is quite intuitive and they allow you integrate diverse environments, such as data from different databases and operating systems in a single job.

The second reason is these tools already have integrated a production environment for monitoring and executing the integration jobs. These environments have grown more robust along the times and its logging facilities are quite impressive. OK, you can do develop the environment yourself, but it takes time and testing, it is not cheap.

The third reason is, you will always need to integrate systems with OpenERP. Always. As customers get larger, they tend to have more systems in place. That’s the law in this industry. And you can not change them, you have to live with them. And living with them means, integration your OpenERP information with their information. And their information with your OpenERP information.

The last reason is, ETL applications save you many hours when it comes to migrating data into your system. MANY HOURS.

Now, when it comes to OpenERP and ETL, you have some options. I just looked at two of them. Talend and Pentaho Kettle. These days we are starting a project that needs to extract information from an accounting system and integrate it with the MRP module in OpenERP. I think we will end up using Kettle, because it already has plug-ins for loading data into OpenERP. Have not seen that yet in Talend. I will cover those modules in a coming post.


OpenERP module of the day: audittrail

Audittrail is a module that is available in the default installation of OpenERP but it is not installed. This module allows you log every user operation on all system objects (such as accounts or products, for instance).

The installation is straightforward, you don’t need to import any module. You just need to install the module. After installing it, you will see in the Administration menu an Audit Trail menu item

After installing it, you need to create the audit rules. The rules tell the system which activities performed by the user need to be logged. By default the system comes with a rule that logs the changes made to the partner object.

Double click on the rule to change it, or see its contents.

You can see that the rule logs the activities performed to the partner object, and you can subscribe to this rule to see the log of the partner object.

To test this, make changes to any partner. I just modified the CampToCamp partner to show the log. After making the change, select the log menu item in the Administration menu.

You will see a list of the changes made to the partner object. Click on any line to see the details on the change performed:

Now you can see the changes I made to the CampToCamp partner, I added new information to the partner. Please notice, there are old values and new values for comparison.