diff --git a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java
--- a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java
+++ b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java
@@ -11,60 +11,52 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2009-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2009-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.userinterface.selector;
 
-import java.io.IOException;
-import java.io.PrintWriter;
 import java.util.List;
 
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.base.filter.IsIDFilter;
 import org.openbravo.base.model.Entity;
 import org.openbravo.base.model.ModelProvider;
 import org.openbravo.base.model.Property;
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
+import org.openbravo.erpCommon.ad_callouts.SimpleCallout;
 import org.openbravo.model.ad.datamodel.Column;
 import org.openbravo.model.ad.datamodel.Table;
 import org.openbravo.service.json.JsonConstants;
-import org.openbravo.xmlEngine.XmlDocument;
 
 /**
  * This call out computes the columnid of a Selector Field.
  * 
  * @author mtaal
  */
-public class SelectorFieldPropertyCallout extends HttpSecureAppServlet {
-
-  private static final long serialVersionUID = 1L;
+public class SelectorFieldPropertyCallout extends SimpleCallout {
 
   @Override
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
+  protected void execute(CalloutInfo info) throws ServletException {
 
-    // printRequest(request);
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-    printPage(response, vars);
-  }
+    // Parameters
+    final String selectorID = info.getStringParameter("inpobuiselSelectorId", IsIDFilter.instance)
+        .trim();
+    final String property = info.getStringParameter("inpproperty").trim();
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException,
-      ServletException {
-    final String selectorID = vars.getStringParameter("inpobuiselSelectorId", IsIDFilter.instance)
-        .trim();
-    final String property = vars.getStringParameter("inpproperty").trim();
+    // Get the selector
     final Selector selector = OBDal.getInstance().get(Selector.class, selectorID);
     final Table table;
     if (selector.getTable() != null) {
@@ -74,7 +66,6 @@
       table = selector.getObserdsDatasource().getTable();
     } else {
       // no table don't do anything
-      writeEmptyResult(response);
       return;
     }
     // some cases:
@@ -83,9 +74,9 @@
     final Entity entity = ModelProvider.getInstance().getEntity(table.getName());
 
     Property foundProperty = null;
-    if (property.equals(JsonConstants.IDENTIFIER)) {
+    if (StringUtils.equals(property, JsonConstants.IDENTIFIER)) {
       if (entity.getIdentifierProperties().isEmpty()) {
-        writeEmptyResult(response);
+        // no properties don't do anything
         return;
       }
       foundProperty = entity.getIdentifierProperties().get(0);
@@ -94,13 +85,12 @@
       Entity currentEntity = entity;
       Property currentProperty = null;
       for (String part : parts) {
-        if (part.length() == 0) {
-          writeEmptyResult(response);
+        if (StringUtils.isEmpty(part)) {
           return;
         }
-        if (part.equals(JsonConstants.IDENTIFIER) || part.equals(JsonConstants.ID)) {
+        if (StringUtils.equals(part, JsonConstants.IDENTIFIER)
+            || StringUtils.equals(part, JsonConstants.ID)) {
           if (foundProperty == null) {
-            writeEmptyResult(response);
             return;
           }
           break;
@@ -111,7 +101,7 @@
           break;
         }
 
-        if (Entity.COMPUTED_COLUMNS_PROXY_PROPERTY.equals(currentProperty.getName())) {
+        if (StringUtils.equals(currentProperty.getName(), Entity.COMPUTED_COLUMNS_PROXY_PROPERTY)) {
           currentEntity = ModelProvider.getInstance().getEntity(
               currentEntity.getName() + Entity.COMPUTED_COLUMNS_CLASS_APPENDIX);
         } else {
@@ -143,49 +133,15 @@
           Restrictions.eq(Column.PROPERTY_DBCOLUMNNAME, foundProperty.getColumnName())));
       final List<Column> columnList = columnCriteria.list();
       if (columnList.isEmpty()) {
-        writeEmptyResult(response);
+        // No columns, don't do anything
         return;
       }
 
-      final XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-          "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-
-      final StringBuilder sb = new StringBuilder();
-      sb.append("var calloutName='Selector_Field_Property_Callout';\n");
-      final StringBuilder array = new StringBuilder();
-      array.append("var respuesta = new Array(");
-      array.append("new Array('inpadColumnId', \"" + columnList.get(0).getId() + "\")");
-      // construct the array, where the first dimension contains the name
-      // of the field to be changed and the second one our newly generated
-      // value
-      array.append(");");
-      xmlDocument.setParameter("array", sb.toString() + array.toString());
-      xmlDocument.setParameter("frameName", "appFrame");
-      response.setContentType("text/html; charset=UTF-8");
-      PrintWriter out = response.getWriter();
-      out.println(xmlDocument.print());
-      out.close();
+      // Update the column ID
+      info.addResult("inpadColumnId", columnList.get(0).getId());
 
     } finally {
       OBContext.restorePreviousMode();
     }
   }
-
-  private void writeEmptyResult(HttpServletResponse response) throws IOException {
-
-    final XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-
-    final StringBuilder sb = new StringBuilder();
-    sb.append("var calloutName='Selector_Field_Property_Callout';\n");
-    final StringBuilder array = new StringBuilder();
-    array.append("var respuesta = new Array(");
-    array.append(");");
-    xmlDocument.setParameter("array", sb.toString() + array.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
-  }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java b/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java
--- a/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java
@@ -11,70 +11,40 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2008-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2008-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import javax.servlet.ServletException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.StringUtils;
+import org.openbravo.base.filter.ValueListFilter;
+import org.openbravo.erpCommon.utility.Utility;
 
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
-import org.openbravo.erpCommon.utility.Utility;
-import org.openbravo.xmlEngine.XmlDocument;
+public class Activation_Message extends SimpleCallout {
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-public class Activation_Message extends HttpSecureAppServlet {
-  private static final long serialVersionUID = 1L;
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+    // Parameters
+    String strHBActive = info.getStringParameter("inpisheartbeatactive", new ValueListFilter("Y",
+        "N"));
+    String strRegActive = info.getStringParameter("inpisregistrationactive", new ValueListFilter(
+        "Y", "N"));
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      String strHBActive = vars.getStringParameter("inpisheartbeatactive");
-      String strRegActive = vars.getStringParameter("inpisregistrationactive");
-      try {
-        printPage(response, vars, strHBActive, strRegActive);
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
-
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strHBActive,
-      String strRegActive) throws IOException, ServletException {
-    if (log4j.isDebugEnabled())
-      log4j.debug("Output: dataSheet");
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-
-    String msg = (strHBActive.equalsIgnoreCase("Y") || strRegActive.equalsIgnoreCase("Y") ? Utility
-        .messageBD(this, "REG_INFO_MESSAGE", vars.getLanguage()) : "");
-
-    StringBuffer resultado = new StringBuffer();
-    resultado.append("var calloutName='Activation_Message';\n\n");
-    resultado.append("var respuesta = new Array(");
-    if (!msg.equals(""))
-      resultado.append("new Array(\"MESSAGE\", \"" + msg + "\")");
-    resultado.append(");");
-    xmlDocument.setParameter("array", resultado.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
+    // Message
+    String msg = StringUtils.equalsIgnoreCase(strHBActive, "Y")
+        || StringUtils.equalsIgnoreCase(strRegActive, "Y") ? Utility.messageBD(this,
+        "REG_INFO_MESSAGE", info.vars.getLanguage()) : "";
+    if (StringUtils.isNotEmpty(msg)) {
+      info.showMessage(msg);
+    }
   }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java b/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java
@@ -18,134 +18,114 @@
  */
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
 import java.sql.PreparedStatement;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 
-import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.apache.commons.lang.StringUtils;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.exception.NoConnectionAvailableException;
 import org.openbravo.utils.FormatUtilities;
-import org.openbravo.xmlEngine.XmlDocument;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Checks the SQL in Alert Rule to ensure all required columns are included.
  */
-public class SL_AlertRule_SQL extends HttpSecureAppServlet {
-  private static final long serialVersionUID = 1L;
-  private static final Logger log = LoggerFactory.getLogger(SL_AlertRule_SQL.class);
+public class SL_AlertRule_SQL extends SimpleCallout {
 
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      String strSQL = vars.getStringParameter("inpsql");
-      try {
-        printPage(response, vars, strSQL);
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  private boolean existsColumn(ResultSetMetaData rmeta, String col) {
-    try {
-      for (int i = 1; i <= rmeta.getColumnCount(); i++) {
-        if (rmeta.getColumnName(i).equalsIgnoreCase(col))
-          return true;
-      }
-    } catch (Exception ex) {
-    }
-    return false;
-  }
+    // Parameters
+    String strSQL = info.getStringParameter("inpsql");
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strSQL)
-      throws IOException, ServletException {
-    if (log4j.isDebugEnabled())
-      log4j.debug("Output: dataSheet");
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-
+    // Message
     String msg = "";
-
-    if (!strSQL.equals("")) {
+    if (StringUtils.isNotEmpty(strSQL)) {
       if (strSQL.toUpperCase().trim().startsWith("SELECT ")) {
         PreparedStatement st = null;
         try {
           this.getConnection().setReadOnly(true);
           st = this.getPreparedStatement(strSQL);
           ResultSetMetaData rmeta = st.getMetaData();
-          if (!existsColumn(rmeta, "AD_CLIENT_ID"))
+          if (!existsColumn(rmeta, "AD_CLIENT_ID")) {
             msg = "AD_CLIENT_ID ";
-          if (!existsColumn(rmeta, "AD_ORG_ID"))
+          }
+          if (!existsColumn(rmeta, "AD_ORG_ID")) {
             msg += "AD_ORG_ID ";
-          if (!existsColumn(rmeta, "CREATED"))
+          }
+          if (!existsColumn(rmeta, "CREATED")) {
             msg += "CREATED ";
-          if (!existsColumn(rmeta, "CREATEDBY"))
+          }
+          if (!existsColumn(rmeta, "CREATEDBY")) {
             msg += "CREATEDBY ";
-          if (!existsColumn(rmeta, "UPDATED"))
+          }
+          if (!existsColumn(rmeta, "UPDATED")) {
             msg += "UPDATED ";
-          if (!existsColumn(rmeta, "UPDATEDBY"))
+          }
+          if (!existsColumn(rmeta, "UPDATEDBY")) {
             msg += "UPDATEDBY ";
-          if (!existsColumn(rmeta, "ISACTIVE"))
+          }
+          if (!existsColumn(rmeta, "ISACTIVE")) {
             msg += "ISACTIVE ";
-          if (!existsColumn(rmeta, "AD_USER_ID"))
+          }
+          if (!existsColumn(rmeta, "AD_USER_ID")) {
             msg += "AD_USER_ID ";
-          if (!existsColumn(rmeta, "AD_ROLE_ID"))
+          }
+          if (!existsColumn(rmeta, "AD_ROLE_ID")) {
             msg += "AD_ROLE_ID ";
-          if (!existsColumn(rmeta, "RECORD_ID"))
+          }
+          if (!existsColumn(rmeta, "RECORD_ID")) {
             msg += "RECORD_ID ";
-          if (!existsColumn(rmeta, "DESCRIPTION"))
+          }
+          if (!existsColumn(rmeta, "DESCRIPTION")) {
             msg += "DESCRIPTION ";
-          if (!existsColumn(rmeta, "REFERENCEKEY_ID"))
+          }
+          if (!existsColumn(rmeta, "REFERENCEKEY_ID")) {
             msg += "REFERENCEKEY_ID";
-          if (!msg.equals(""))
-            msg = Utility.messageBD(this, "notColumnInQuery", vars.getLanguage()) + msg;
+          }
+          if (StringUtils.isNotEmpty(msg)) {
+            msg = Utility.messageBD(this, "notColumnInQuery", info.vars.getLanguage()) + msg;
+          }
         } catch (Exception ex) {
           msg = "error in query: " + FormatUtilities.replaceJS(ex.toString());
         } finally {
           try {
             this.getConnection().setReadOnly(false);
           } catch (SQLException | NoConnectionAvailableException e) {
-            log.error("Error resetting readonly to connection in Alert Rule query: {}", strSQL, e);
+            log4j.error("Error resetting readonly to connection in Alert Rule query: {} " + strSQL);
           }
           try {
             this.releasePreparedStatement(st);
           } catch (SQLException e) {
-            log.error("Error releasing statement in Alert Rule query: {}", strSQL, e);
+            log4j.error("Error releasing statement in Alert Rule query: {} " + strSQL);
           }
         }
       } else {
-        msg = Utility.messageBD(this, "AlertSelectConstraint", vars.getLanguage());
+        msg = Utility.messageBD(this, "AlertSelectConstraint", info.vars.getLanguage());
       }
     }
+    if (StringUtils.isNotEmpty(msg)) {
+      info.showMessage(msg);
+    }
+  }
 
-    StringBuffer resultado = new StringBuffer();
-    resultado.append("var calloutName='SL_AlertRule_SQL';\n\n");
-    resultado.append("var respuesta = new Array(");
-    resultado.append("new Array(\"MESSAGE\", \"" + msg + "\")");
-    resultado.append(");");
-    xmlDocument.setParameter("array", resultado.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
+  private boolean existsColumn(ResultSetMetaData rmeta, String col) {
+    try {
+      for (int i = 1; i <= rmeta.getColumnCount(); i++) {
+        if (StringUtils.equalsIgnoreCase(rmeta.getColumnName(i), col)) {
+          return true;
+        }
+      }
+    } catch (SQLException e) {
+      e.printStackTrace();
+    }
+    return false;
   }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java b/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java
@@ -11,84 +11,45 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010-2011 Openbravo SLU
+ * All portions are Copyright (C) 2010-2017 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import javax.servlet.ServletException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Restrictions;
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.datamodel.Column;
-import org.openbravo.xmlEngine.XmlDocument;
 
-public class SL_Column extends HttpSecureAppServlet {
-  private static final long serialVersionUID = 1L;
+public class SL_Column extends SimpleCallout {
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      try {
-        printPage(response, vars);
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
-
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException,
-      ServletException {
-    if (log4j.isDebugEnabled())
-      log4j.debug("Output: dataSheet");
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-    StringBuilder resultData = new StringBuilder();
+    // Parameters
+    String strIsKey = info.getStringParameter("inpiskey");
+    String strTableId = info.getStringParameter("inpadTableId");
 
     // Check there is only one key column per table
-    if ("Y".equals(vars.getStringParameter("inpiskey"))) {
+    if (StringUtils.equals(strIsKey, "Y")) {
       OBCriteria<Column> keyCriteria = OBDal.getInstance().createCriteria(Column.class);
-      keyCriteria.add(Restrictions.eq(Column.PROPERTY_TABLE + ".id",
-          vars.getStringParameter("inpadTableId")));
+      keyCriteria.add(Restrictions.eq(Column.PROPERTY_TABLE + ".id", strTableId));
       keyCriteria.add(Restrictions.eq(Column.PROPERTY_KEYCOLUMN, true));
-      if (keyCriteria.list().size() > 0) {
-        resultData.append("new Array(\"inpiskey\",\"N\"),\n");
-        resultData.append("new Array(\"WARNING\",\""
-            + Utility.messageBD(this, "MultipleKeyColumns", vars.getLanguage())
-            + keyCriteria.list().get(0).getDBColumnName() + "\")\n");
+      if (!keyCriteria.list().isEmpty()) {
+        info.addResult("inpiskey", "N");
+        info.showWarning(Utility.messageBD(this, "MultipleKeyColumns", info.vars.getLanguage())
+            + keyCriteria.list().get(0).getDBColumnName());
       }
     }
-
-    StringBuilder result = new StringBuilder();
-    result.append("var calloutName='SL_Column';\n\n");
-    result.append("var respuesta = new Array(");
-    result.append(resultData);
-    result.append(");");
-
-    xmlDocument.setParameter("array", result.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
   }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java b/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java
@@ -11,30 +11,22 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2008-2014 Openbravo SLU 
+ * All portions are Copyright (C) 2008-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang.StringUtils;
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.base.filter.IsIDFilter;
 import org.openbravo.client.kernel.KernelUtils;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.data.Sqlc;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.ui.Tab;
-import org.openbravo.xmlEngine.XmlDocument;
 
 /**
  * This callout checks if this is the only active isDefault checked for the table (with
@@ -44,85 +36,59 @@
  * If another one already exists an error message is raised and the checkbox is unchecked.
  * 
  */
-public class SL_IsDefault extends HttpSecureAppServlet {
-  private static final long serialVersionUID = 1L;
+public class SL_IsDefault extends SimpleCallout {
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      try {
-        printPage(response, vars);
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
+    // Parameter
+    String strValue = info.getStringParameter(strChanged);
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException,
-      ServletException {
-    if (log4j.isDebugEnabled())
-      log4j.debug("Output: dataSheet");
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
+    if (StringUtils.equals(strValue, "Y")) {
 
-    String strValue = vars.getStringParameter(vars.getStringParameter("inpLastFieldChanged"));
-    StringBuffer result = new StringBuffer();
-    result.append("var calloutName='SL_IsDefault';\n\n");
-    result.append("var respuesta = new Array(");
+      // Parameters
+      String strTableId = info.getStringParameter("inpTableId", IsIDFilter.instance);
+      String strOrg = info.getStringParameter("inpadOrgId", IsIDFilter.instance);
+      String parentColumn = info.getStringParameter("inpParentKeyColumn");
+      String currentColumnKey = info.getStringParameter("inpkeyColumnId");
+      String currentKeyValue = info.getStringParameter(info.getStringParameter("inpKeyName"));
 
-    if (strValue.equals("Y")) {
-
-      String strTableId = vars.getStringParameter("inpTableId");
-      String strOrg = vars.getStringParameter("inpadOrgId");
-      String parentColumn = vars.getStringParameter("inpParentKeyColumn");
-      String tabId = vars.getStringParameter("TAB_ID");
-      // if parentColumn is not null, compute parentColumn using tab information
-      if ((parentColumn == null || parentColumn.isEmpty()) && StringUtils.isNotEmpty(tabId)) {
-        Tab currentTab = OBDal.getInstance().get(Tab.class, tabId);
+      // if parentColumn is null, compute parentColumn using tab information
+      if ((StringUtils.isEmpty(parentColumn) && StringUtils.isNotEmpty(info.getTabId()))) {
+        Tab currentTab = OBDal.getInstance().get(Tab.class, info.getTabId());
         parentColumn = KernelUtils.getInstance().getParentColumnName(currentTab);
       }
-      String parentValue = vars.getStringParameter("inp"
-          + Sqlc.TransformaNombreColumna(parentColumn));
-
-      String currentColumnKey = vars.getStringParameter("inpkeyColumnId");
-      String currentKeyValue = vars.getStringParameter(vars.getStringParameter("inpKeyName"));
 
       SLIsDefaultData[] data = SLIsDefaultData.select(this, strTableId);
-      if (data != null && data.length != 0) {
+      if (data != null && data.length > 0) {
         String parentClause = "";
         String currentClause = "";
         // Include parent column if it exists
-        if (!parentColumn.equals("") && !parentValue.equals(""))
-          parentClause = "AND " + parentColumn + "='" + parentValue + "'";
+        if (StringUtils.isNotEmpty(parentColumn)) {
+          String parentValue = info.getStringParameter(
+              "inp" + Sqlc.TransformaNombreColumna(parentColumn), IsIDFilter.instance);
+          if (StringUtils.isNotEmpty(parentValue)) {
+            parentClause = "AND " + parentColumn + "='" + parentValue + "'";
+          }
+        }
 
         // In case the current record already exists in DB not sum it to
         // the total
-        if (!currentKeyValue.equals(""))
+        if (StringUtils.isNotEmpty(currentKeyValue)) {
           currentClause = "AND " + currentColumnKey + " != '" + currentKeyValue + "'";
+        }
 
         String strTotalDefaults = SLIsDefaultData.selectHasDefaults(this, data[0].tablename,
             parentClause, currentClause, strOrg);
-        if (!strTotalDefaults.equals("0")) {
-          String msg = Utility.messageBD(this, "DuplicatedDefaults", vars.getLanguage());
-          result.append("new Array(\"ERROR\", \"" + msg + "\"), \n");
-          result.append("new Array(\"inpisdefault\", \"N\")\n");
+        if (!StringUtils.equals(strTotalDefaults, "0")) {
+          info.showError(Utility.messageBD(this, "DuplicatedDefaults", info.vars.getLanguage()));
+          info.addResult("inpisdefault", "N");
         }
       }
     }
-
-    result.append(");");
-    xmlDocument.setParameter("array", result.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
   }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java b/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2010-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2010-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -19,107 +19,51 @@
 
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import javax.servlet.ServletException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Restrictions;
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.base.filter.IsIDFilter;
+import org.openbravo.base.filter.ValueListFilter;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.module.Module;
-import org.openbravo.xmlEngine.XmlDocument;
 
-public class SL_ModuleCallout extends HttpSecureAppServlet {
+public class SL_ModuleCallout extends SimpleCallout {
 
-  private static final long serialVersionUID = 1L;
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  /**
-   * Prevent navigation history in the callout
-   */
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
-
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      String strChanged = vars.getStringParameter("inpLastFieldChanged");
-      if (log4j.isDebugEnabled())
-        log4j.debug("CHANGED: " + strChanged);
-      String strADModuleID = vars.getStringParameter("inpadModuleId");
-
-      try {
-        String moduleType = vars.getStringParameter("inptype");
-        String isInDev = vars.getStringParameter("inpisindevelopment");
-        if (isInDev.equals("Y") && moduleType.equals("T")) {
-          templateInDev(response, vars, strADModuleID);
-        } else {
-          printPageResult(response, "");
-        }
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
-
-  /**
-   * Checks if there are multiple templates in development. If so, unsets the is indevelopment
-   * property from the current record.
-   */
-  private void templateInDev(HttpServletResponse response, VariablesSecureApp vars,
-      String strADModuleID) throws IOException, ServletException {
-    // Check whether there are more templates in development
-    OBCriteria<Module> obc = OBDal.getInstance().createCriteria(Module.class);
-    obc.add(Restrictions.eq(Module.PROPERTY_TYPE, "T"));
-    obc.add(Restrictions.eq(Module.PROPERTY_INDEVELOPMENT, true));
-    if (strADModuleID != null && !strADModuleID.equals("")) {
-      obc.add(Restrictions.ne(Module.PROPERTY_ID, strADModuleID));
-    }
-    String devTemplates = "";
-    for (Module template : obc.list()) {
-      devTemplates += template.getName() + " ";
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
     }
 
-    StringBuffer result = new StringBuffer();
+    // Parameters
+    String strADModuleID = info.getStringParameter("inpadModuleId", IsIDFilter.instance);
+    String moduleType = info.getStringParameter("inptype");
+    String isInDev = info.getStringParameter("inpisindevelopment", new ValueListFilter("Y", "N"));
 
-    if (!devTemplates.equals("")) {
-      // There are other template(s) in dev
-      result.append("new Array(\"MESSAGE\", \"" + devTemplates + " "
-          + Utility.messageBD(this, "MultipleDevelopmentTemplates", vars.getLanguage()) + "\"),\n");
-      result.append("new Array(\"inpisindevelopment\", \"N\")");
+    if (StringUtils.equals(isInDev, "Y") && StringUtils.equals(moduleType, "T")) {
+      // Check whether there are more templates in development
+      OBCriteria<Module> obc = OBDal.getInstance().createCriteria(Module.class);
+      obc.add(Restrictions.eq(Module.PROPERTY_TYPE, "T"));
+      obc.add(Restrictions.eq(Module.PROPERTY_INDEVELOPMENT, true));
+      if (StringUtils.isNotEmpty(strADModuleID)) {
+        obc.add(Restrictions.ne(Module.PROPERTY_ID, strADModuleID));
+      }
+
+      if (!obc.list().isEmpty()) {
+        String devTemplates = "";
+        for (Module template : obc.list()) {
+          devTemplates += template.getName() + " ";
+        }
+        // There are other template(s) in dev
+        info.showMessage(devTemplates + " "
+            + Utility.messageBD(this, "MultipleDevelopmentTemplates", info.vars.getLanguage()));
+        info.addResult("inpisindevelopment", "N");
+      }
     }
-
-    printPageResult(response, result.toString());
   }
-
-  /**
-   * Composes the standard callout response
-   */
-  private void printPageResult(HttpServletResponse response, String result) throws IOException {
-    StringBuffer resultado = new StringBuffer();
-    resultado.append("var calloutName='SL_ModuleCallout';\n\n");
-    resultado.append("var respuesta = new Array(");
-    resultado.append(result);
-    resultado.append(");");
-
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-    xmlDocument.setParameter("array", resultado.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
-  }
-
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java b/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java
@@ -11,26 +11,18 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2009-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2009-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import javax.servlet.ServletException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.apache.commons.lang.StringUtils;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.model.ad.module.Module;
-import org.openbravo.xmlEngine.XmlDocument;
 
 /**
  * A callout used in the module dependency form. When the dependent module changes then the minor
@@ -38,70 +30,26 @@
  * 
  * @author mtaal
  */
-public class SL_Module_Minor_Version extends HttpSecureAppServlet {
-  private static final long serialVersionUID = 1L;
+public class SL_Module_Minor_Version extends SimpleCallout {
 
   private static final String DEPENDENT_MODULE_FIELD = "inpadDependentModuleId";
   private static final String MINOR_VERSION_FIELD = "inpstartversion";
-  private static final String LAST_CHANGED_FIELD = "inpLastFieldChanged";
 
-  /**
-   * Initializes the servlet.
-   */
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  /**
-   * Receives the request to compute the version.
-   */
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      String strChanged = vars.getStringParameter(LAST_CHANGED_FIELD);
-      if (log4j.isDebugEnabled())
-        log4j.debug("CHANGED: " + strChanged);
-      String strModule = vars.getStringParameter(DEPENDENT_MODULE_FIELD);
-      String strFirstVersion = vars.getStringParameter(MINOR_VERSION_FIELD);
-      try {
-        printPage(response, vars, strChanged, strFirstVersion, strModule);
-      } catch (ServletException ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strChanged,
-      String firstVersion, String strModule) throws IOException, ServletException {
-    if (log4j.isDebugEnabled())
-      log4j.debug("Output: dataSheet");
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
+    // Parameter
+    String strModule = info.getStringParameter(DEPENDENT_MODULE_FIELD);
 
-    StringBuffer result = new StringBuffer();
-    result.append("var calloutName='SL_Module_Minor_version';\n\n");
-    result.append("var respuesta = new Array(");
-    // do not change the name field, if the user just left it
-    if (strChanged.equals(DEPENDENT_MODULE_FIELD)) {
-      // get the minor version
+    // Set Minor Version
+    if (StringUtils.equals(strChanged, DEPENDENT_MODULE_FIELD)) {
       final Module dependsOnModule = OBDal.getInstance().get(Module.class, strModule);
-      if (dependsOnModule.getVersion() != null) {
-        result.append("new Array(\"" + MINOR_VERSION_FIELD + "\", \""
-            + dependsOnModule.getVersion() + "\")");
-      } else {
-        result.append("new Array(\"" + MINOR_VERSION_FIELD + "\", \""
-            + dependsOnModule.getVersion() + "\")");
-      }
+      info.addResult(MINOR_VERSION_FIELD, dependsOnModule.getVersion());
     }
-    result.append(");");
-    xmlDocument.setParameter("array", result.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
   }
 }
diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java b/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2010-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2010-2017 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -19,100 +19,61 @@
 
 package org.openbravo.erpCommon.ad_callouts;
 
-import java.io.IOException;
-import java.io.PrintWriter;
+import javax.servlet.ServletException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Restrictions;
-import org.openbravo.base.secureApp.HttpSecureAppServlet;
-import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.database.SessionInfo;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.datamodel.Table;
-import org.openbravo.xmlEngine.XmlDocument;
 
-public class SL_TableAudit extends HttpSecureAppServlet {
+public class SL_TableAudit extends SimpleCallout {
 
-  private static final long serialVersionUID = 1L;
+  @Override
+  protected void execute(CalloutInfo info) throws ServletException {
 
-  public void init(ServletConfig config) {
-    super.init(config);
-    boolHist = false;
-  }
+    String strChanged = info.getLastFieldChanged();
+    if (log4j.isDebugEnabled()) {
+      log4j.debug("CHANGED: " + strChanged);
+    }
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
-    if (vars.commandIn("DEFAULT")) {
-      String strChanged = vars.getStringParameter("inpLastFieldChanged");
-      if (log4j.isDebugEnabled())
-        log4j.debug("CHANGED: " + strChanged);
-      try {
-        printPage(response, vars, strChanged);
-      } catch (Exception ex) {
-        pageErrorCallOut(response);
-      }
-    } else
-      pageError(response);
-  }
+    if (StringUtils.equalsIgnoreCase(strChanged, "inpisfullyaudited")) {
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strChanged)
-      throws IOException, ServletException {
-    // Change audit trail status regarding whether there are audited tables
-    StringBuffer action = new StringBuffer();
-    if (strChanged.equalsIgnoreCase("inpisfullyaudited")) {
-      boolean currentRecordFullyAudited = vars.getStringParameter("inpisfullyaudited").equals("Y");
+      // Parameter
+      String strIsFullyAudited = info.getStringParameter("inpisfullyaudited");
+      boolean currentRecordFullyAudited = StringUtils.equals(strIsFullyAudited, "Y");
       if (currentRecordFullyAudited) {
         SessionInfo.setAuditActive(true);
-
         OBCriteria<Table> qTables = OBDal.getInstance().createCriteria(Table.class);
         qTables.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true));
         qTables.add(Restrictions.eq(Table.PROPERTY_ISAUDITINSERTS, true));
-        if (qTables.count() == 0) {
-          action.append("new Array(\"inpisauditinserts\", \"N\"),\n");
+        if (qTables.list().isEmpty()) {
+          info.addResult("inpisauditinserts", "N");
         } else {
-          action.append("new Array(\"inpisauditinserts\", \"Y\"),\n");
+          info.addResult("inpisauditinserts", "Y");
         }
-        action.append("new Array(\"MESSAGE\", \""
-            + Utility.messageBD(this, "RegenerateAudit_ExcludeColumn", vars.getLanguage())
-            + "\")\n");
+        info.showMessage(Utility.messageBD(this, "RegenerateAudit_ExcludeColumn",
+            info.vars.getLanguage()));
       } else {
         OBCriteria<Table> obc = OBDal.getInstance().createCriteria(Table.class);
         obc.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true));
-        SessionInfo.setAuditActive(obc.list().size() > 0);
+        SessionInfo.setAuditActive(!obc.list().isEmpty());
       }
-    } else if (strChanged.equalsIgnoreCase("inpisexcludeaudit")) {
-      boolean currentRecordExcludeAudit = vars.getStringParameter("inpisexcludeaudit").equals("Y");
+    } else if (StringUtils.equalsIgnoreCase(strChanged, "inpisexcludeaudit")) {
+
+      // Parameter
+      String strIsExcludedAudit = info.getStringParameter("inpisexcludeaudit");
+      boolean currentRecordExcludeAudit = StringUtils.equals(strIsExcludedAudit, "Y");
       if (currentRecordExcludeAudit) {
         SessionInfo.setAuditActive(true);
-        action.append("new Array(\"MESSAGE\", \""
-            + Utility.messageBD(this, "RegenerateAudit", vars.getLanguage()) + "\")\n");
+        info.showMessage(Utility.messageBD(this, "RegenerateAudit", info.vars.getLanguage()));
       } else {
         OBCriteria<Table> obc = OBDal.getInstance().createCriteria(Table.class);
         obc.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true));
-        SessionInfo.setAuditActive(obc.list().size() > 0);
+        SessionInfo.setAuditActive(!obc.list().isEmpty());
       }
     }
-
-    StringBuffer result = new StringBuffer();
-    result.append("var calloutName='SL_TableAudit';\n\n");
-    result.append("var respuesta = new Array(");
-    result.append(action);
-    result.append(");");
-
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
-    xmlDocument.setParameter("array", result.toString());
-    xmlDocument.setParameter("frameName", "appFrame");
-    response.setContentType("text/html; charset=UTF-8");
-    PrintWriter out = response.getWriter();
-    out.println(xmlDocument.print());
-    out.close();
   }
 }
