September 1, 2012

Seamless integration of Sysfore HR & Payroll with Openbravo ERP Finance module

One of the key features required in any Human Resources and Payroll module is the ability of automated generation of financial entries for various salary processed for each of the employees. This helps all organizations to effectively track various resources cost under the respective accounting heads. In Sysfore HR & Payroll module, there are multiple levels at which you could setup these account mappings. As part of a generic setup to the finance module, the salary payable, loss of pay, overtime, standard deductions and additions accounts can be configured. This is described in the image-1 below:


Pay Components
Pay Components form the basis of any employee’s salary structure. There are pay additions or deductions which are defined for each pay grade.

Pay Additions: Some of the organizations give “Overtime Allowance” as a pay addition component in the salary. From an organization’s financial tracking it is important for the management to see such kind of salary components paid out every month. For that purpose, the pay addition is mapped against the respective COA sub account, so that when payroll is processed the G/L Journals are created. As normal, these can be verified by the accounts team before posting the transactions. See Image-2 below for details:


Pay Deductions: In certain countries, as per the prevailing law, organizations make certain deductions like tax and state insurance from the salary. “Employee State Insurance” is defined as a deduction component in the salary. From an organization’s financial operations it is important for consolidating such deductions and do the necessary remittance to the government based on the salary paid out every month. For that purpose, the pay deduction is mapped against the respective COA sub account, so that when payroll is processed the G/L Journals are created. As normal, these can be verified by the accounts team before posting the transactions. See Image-3 below for details:


Once payroll is processed in the respective salary cycle, G/L Journals will get created automatically during the payroll run as in the below Image-4:


Payroll Accounting: In the Finance module, the accounts users can review and post the G/L Journals. Thus the Sysfore HR & Payroll module gives a complete end to easy setup and integration to the Openbravo ERP Finance module. Refer Image-5 below:


July 8, 2012

How to quickly setup a background process in Openbravo ERP

Sysfore Technologies


Background Processes are processes that are executed without the direct action of the user. Different rules can be set to schedule when the process is executed. This article discusses about the Openbravo infrastructure for Background Processes – how to create, define, schedule and monitor Background Processes.

Develop a DAL background process

Consider that this is a java class implementing the business logic and that we are demonstrating how a background process is developed. Use the new Data Access Layer which provides mid-tier POJOs through which we can manipulate database tables. If this method is used, your background java class must extend the DalBaseProcess class and implement the doExecute method that performs your task. As a side note: in this how-to we will show how a java process can be implemented as a background process. A java process can however also be called directly from the user interface and have a user interface which allows entering parameters.

Definition within the application dictionary

Background processes are defined within the Application Dictionary || Report and Process window. Use the System Administrator role to create a new record as indicated below in the diagram:

DAL based background process setup in the application dictionary

The following fields are vital for the definition of a background process:

  • Module – your custom module that this new background process will belong to; note that this will consequently indicate the location on the hard drive and the package it must belong to
  • Search Key – unique identifier of the process; a good practice is to use the class name
  • Name – a user friendly name of the process
  • UI Pattern – should be set to Manual since Openbravo ERP does not need to generate any UI windows
  • Background – indicates that this process is a background process which consequently also displays the Java Class Name field
  • Java Class Name – the full specification of the class name including the package (this package must follow the package structure of your module specified above)

Defining a Background Process

Background Processes are defined in the window General Setup || Process Scheduling || Process Request. Firstly, in the field Process, select the process to execute and in the field Timing, time to execute.

Depending on Timing selected, more fields are required to be defined.

The timing frequency is of three types:

Run Immediately

This timing option will execute the Background Process the time at the moment the button to schedule the process is pressed. After it has been scheduled, it can be rescheduled as many times as needed.

This option is very similar to executing a process from a menu option. The difference is that when scheduling a Run Immediately Background Process, there will not be any pop-up that indicates when the execution finished and instead it will register its execution in the Process Monitor.

Run Later

This option is similar to the previous option. In this case the Background Process will be executed only one time in one moment in the future.

The moment when the Background Process will be executed is defined in the fields Start Date and End Date.


This is the most versatile option that allows executing a Background Process periodically. These are the fields used to define the schedule plan of a Background Process:

  • Start Date and Start Time: Defines the moment when the schedule plan for this Background Process will start
  • Frequency: Defines the frequency to execute the Background Process. It can be Every n seconds, Every n minutes, Hourly, Daily, Weekly, Monthly, or Cron expression. Depending on the option selected you can define the specific details for each frequency option

Finish Date and Finish Time: These fields can be defined only when the option Finished is selected. And it defines when to stop the schedule plan for this Background Process

Grid view of Background process defined.

Schedule and Unschedule a Background Process

After the Background Process has been completely defined it can be scheduled pressing the button Schedule Process. When a process is scheduled, it will be executed according to the Timing options selected, and every execution will be registered in the Process Monitor.

To stop future executions of a Background Process select the option Unschedule Process. After a Background Process has been unscheduled it can be scheduled again in any moment pressing the button Reschedule Process.

Sample Background process

Monitoring executions of Background Processes

All the executions of Background Processes can be monitored in General Setup || Process Scheduling || Process Monitor.

Process Monitor Window

In this window there is one entry for each Background Process execution and the information of each execution. The most important fields are:

  • Process: The Process executed
  • Start Time, End Time and Duration: When the execution started, when finished and the time it took to complete
  • Status: The final result of the execution of the Process
  • Process Log: The information logged during the execution of the Process. For example if the Status of the execution is Error, here in the Process Log the reason for the error can be detected
March 20, 2012

Openbravo: How to use dynamic expressions

How to use dynamic expressions in Openbravo

–  Amar Singh, Sysfore


Dynamic Expressions are used to obtain values that can depend on session values. For example they can be used to to filter the records that appear in a tab by the ones that were created by the user that has logged into the application.

Session Values: 

Depending on how the definitions are; there are different kinds of session values.

It is possible to check (as System Administrator) all current values loaded in session in Openbravo by going to General Setup || Application || Session Variables window.


Session global variables: These values are generated by the java classes and are accessible from anywhere in the Openbravo application.

Columns :Values for all columns used in a tab are accessible as session variables within that tab. Additionally it is also possible to set explicitly a column a session value by setting its Stored in session attribute. This will make this value accessible not only for its tab but also for all the tabs in that window.

Auxiliary inputs:

Auxillary Inputs are used to create a session value for a concrete tab. This value can be calculated using a Dynamic Expression and its purpose is to use it in other Dynamic expressions within the tab it is defined for.

Auxiliary Inputs are defined in the Openbravo by going to Application Dictionary || Setup || Auxiliary Input tab.


Syntax and types in Dynamic Expressions

Using session values

In Dynamic expressions session values are obtained by their name surrounded by at symbols (@). Thus to get the content of a session value called myValue, it would be done typing @myValue@. Doing it in this manner it would follow the accessibility described above, but it is possible to explicitly obtain the global value (if exists) not taken into account the other ones, to do so the value would have a sharp symbol (#) as prefix. In the previous example it would be @#myValue@.

Dynamic expressions types

There are different types for Dynamic Expression, each type can be used depending on the Application Dictionary object it is defined in. A complete list of all the objects and which kind of expression can use is defined in the next section.

The types are:

Constant :It can be a constant value or a value in stored in session, this type can be used by all the objects. To set this type no prefix is needed.

Examples:  @#AD_User_ID@ 

SQL : Some objects accept SQL expressions. This type must have a @SQL= prefix followed by the SQL clause. It also accepts session values.






      WhereClause : It is a SQL where clause, in this case it is not necessary to add the @SQL= prefix.

Checks : It is used to obtain a boolean value. It does not have any prefix.

Its syntax is Javascript but the comparators are:

·      = instead of ==

·      ! instead of !=

·      & instead of &&

·      | instead of ||

March 8, 2012

Data Access Layer Architecture in Openbravo

– Narayanaswamy, Sysfore

1 Introduction

The goal of the DAL development is to strengthen the middle-tier in the application, i.e. to implement business logic in Java. The DAL provides the application developer with the following functionality:

  • Type safe querying and retrieval of business objects from the database.
  • A convenient API to update or create new data in the database.
  • A type safe interface to update information of a business object, increased productivity by making the properties of a business object directly visible through getters and setters (in the IDE).
  • Transaction and context handling.
  • Security and validation checking.
  • Automatically maps new entries in the Application Dictionary to database tables and columns.
  • Generates Java class business objects (and their associations) on the basis of the Application Dictionary model.

The DAL consists of a development-time and runtime part. The development-time part takes care of generating Java business object classes. The runtime part takes care of mapping Java classes to the database and supporting functionality such as security and validation.

2 DAL Architecture

The Data Access Layer (DAL) provides an API to store, query and remove business objects from the database.

The DAL offers three main services to instantiate, create and query Openbravo ERP business objects: OBDal, OBCriteria and OBProvider. The service classes can all be found in the org.openbravo.dal.service package.

3 OBDal

The OBDal instance (available through OBDal.getInstance()) is the main entrance point for retrieving and storing business objects in the database in a validated and secure way. It provides the following functions:

  • save: stores a new business object in the database or an existing business object is updated. For existing business object it is not required to call this method as Hibernate does automatic dirty checking.
  • get: retrieves a single business object using its id. There are two versions: one using the class name (of the generated business object) and one using the entity name.
  • remove: delete a business object from the database, the actual database delete is done at commit time.
  • create OBCriteria: OBCriteria objects are used for querying.
  • commitAndClose and rollbackAndClose: these methods can be used to implement custom transaction handling. Normally this is done by the environment (Openbravo web container or Openbravo test).

The OBDal API makes extensive use of the OBCriteria and OBQuery classes to support querying.

4 OBCriteria

The OBCriteria class implements the Hibernate Criteria interface. It extends the standard Hibernate Criteria functionality for filtering on active, client and organization. In addition it offers convenience methods to set orderby and to perform count actions.

  • Summarizing, the OBCriteria object supports all Hibernate Criteria features:
  • Setting the where-clause of a filter using the Hibernate Criterion concept.
  • Setting paging parameters such as first row and maximum number of results.
  • Setting order by on the query.
  • Specifying joins for performance reasons.
  • Performing counts, average etc.

5 OBQuery

The OBQuery class is an extension of the Hibernate Query object. It extends the standard Hibernate Query functionality for filtering on active, client and organization.

The OBQuery object is created through the OBDal.createQuery method. The first argument of the createQuery is a class or an entity name, the second argument is the where-clause.

6 OBProvider

Openbravo business objects should not be instantiated directly using the new operator. Instead the OBProvider class should be used to create an instance of the required business object. The OBProvider is located in the org.openbravo.base.provider package and can be retrieved using the method OBProvider.getInstance(). The OBProvider offers methods to instantiate using a class name or using an entity name.

February 27, 2012

Sysfore named Openbravo Partner of the Year

Sysfore named Openbravo Partner of the Year

Openbravo Partner of the Year

Proud Moment For Sysfore: Sysfore named Openbravo Partner of the Year!

Leading Openbravo Partner, Sysfore Technologies awarded as the Partner of the Year 2011 – India

Bangalore, India – January 9, 2012: Sysfore Technologies, a specialist provider of business web solutions and IT Outsourcing services, has been named Partner of the Year 2011 (India) by Openbravo. Openbravo, the agile ERP company,announced the winners of its “Partner of the Year 2011” awards recognized for technical excellence in..[Click here to read the official announcement on our website]

February 27, 2012

Free Webinar on HR and Payroll Management

Human Resources and Payroll Management for Openbravo ERP:

Easily manage your company’s most valuable asset!

  • Date: Tuesday, 6 March 2012
  • Time: 9am CET
HR & Payroll for Openbravo ERP by Sysfore

HR & Payroll for Openbravo ERP by Sysfore

Is your growing business getting bogged down by tedious, manual processes for human resources and payroll? Smart companies know that as the business environment grows increasingly complex, their employees represent a sustainable source of competitive advantage. But, understandably, many hesitate to deploy a standalone HR system due to the cost and complexity.

The Human Resources & Payroll Management solution is a fully integrated, native solution for Openbravo, the leading open source ERP. Extremely simple and user-friendly, this solution helps you optimize your workforce, and assists in processing payroll. The HR & Payroll solution is cost-effective, and very easy to configure and further customize using standard Openbravo facilities.

Register now to join Openbravo and Sysfore, Gold Partner of Openbravo and author of the solution, on Tuesday March 6, to discover the benefits of easily managing all of this integrated functionality directly inside of the powerful Openbravo 3 ERP platform:

  • Employee information
  • Time & Attendance
  • Team management
  • Leave management
  • Work shifts
  • Payroll & Benefits
  • Standard and Custom Reports

Now is your chance to register to see this exciting new solution in action, interact with the experts, and get your questions answered!