diff --git a/modules/org.openbravo.client.application/src/org/openbravo/client/application/process/BaseProcessActionHandler.java b/modules/org.openbravo.client.application/src/org/openbravo/client/application/process/BaseProcessActionHandler.java
--- a/modules/org.openbravo.client.application/src/org/openbravo/client/application/process/BaseProcessActionHandler.java
+++ b/modules/org.openbravo.client.application/src/org/openbravo/client/application/process/BaseProcessActionHandler.java
@@ -32,6 +32,7 @@
 import org.openbravo.client.application.ProcessAccess;
 import org.openbravo.client.kernel.BaseActionHandler;
 import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.security.EntityAccessChecker;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.database.SessionInfo;
@@ -170,6 +171,13 @@
    * 
    */
   public static boolean hasAccess(Process processDefinition, Map<String, Object> parameters) {
+    // Check Process Definition Access Level
+    String userLevel = OBContext.getOBContext().getUserLevel();
+    int accessLevel = Integer.parseInt(processDefinition.getDataAccessLevel());
+    if (!EntityAccessChecker.hasCorrectAccessLevel(userLevel, accessLevel)) {
+      return false;
+    }
+    // Check Process Definition Permission
     String windowId = (String) parameters.get("windowId");
     if (windowId != null && !"null".equals(windowId)) {
       Window window = OBDal.getInstance().get(Window.class, windowId);
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-base-parameter-window-view.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-base-parameter-window-view.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-base-parameter-window-view.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-base-parameter-window-view.js
@@ -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) 2015-2016 Openbravo SLU
+ * All portions are Copyright (C) 2015-2017 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -230,7 +230,11 @@
 
     params.windowId = this.windowId;
     OB.RemoteCallManager.call(this.defaultsActionHandler, context, params, function (rpcResponse, data, rpcRequest) {
-      view.handleDefaults(data);
+      if (data && data.message && data.message.severity === isc.OBMessageBar.TYPE_ERROR) {
+        view.handleErrorState(data.message);
+      } else {
+        view.handleDefaults(data);
+      }
     });
   },
 
@@ -269,7 +273,6 @@
   },
 
   showProcessing: function (processing) {
-    var i;
     if (processing) {
       if (this.theForm) {
         this.theForm.hide();
@@ -277,15 +280,7 @@
       if (this.popupButtons) {
         this.popupButtons.hide();
       }
-
-      if (this.toolBarLayout) {
-        for (i = 0; i < this.toolBarLayout.children.length; i++) {
-          if (this.toolBarLayout.children[i].hide) {
-            this.toolBarLayout.children[i].hide();
-          }
-        }
-      }
-
+      this.hideToolBarLayoutChildren();
       this.loading.show();
     } else {
       if (this.theForm) {
@@ -296,6 +291,17 @@
     }
   },
 
+  hideToolBarLayoutChildren: function () {
+    var i;
+    if (this.toolBarLayout) {
+      for (i = 0; i < this.toolBarLayout.children.length; i++) {
+        if (this.toolBarLayout.children[i].hide) {
+          this.toolBarLayout.children[i].hide();
+        }
+      }
+    }
+  },
+
   // Checks params with readonly logic enabling or disabling them based on it
   handleReadOnlyLogic: function () {
     var form, fields, i, field, parentContext;
@@ -334,6 +340,28 @@
     }
   },
 
+  handleErrorState: function (message) {
+    // Disable the parameter view elements
+    this.disableFormItems();
+    if (this.theForm) {
+      this.theForm.disable();
+    }
+    // Hide the buttons (if any)
+    this.hideToolBarLayoutChildren();
+    if (this.popupButtons && this.popupButtons.hide) {
+      this.popupButtons.hide();
+    }
+    if (!message) {
+      return;
+    }
+    // Show the error message
+    if (message.title) {
+      this.messageBar.setMessage(message.severity, message.title, message.text);
+    } else {
+      this.messageBar.setMessage(message.severity, OB.I18N.getLabel('OBUIAPP_Error'), message.text);
+    }
+  },
+
   handleDefaults: function (result) {
     var i, field, def, defaults = result.defaults,
         filterExpressions = result.filterExpressions,
diff --git a/src/org/openbravo/dal/security/EntityAccessChecker.java b/src/org/openbravo/dal/security/EntityAccessChecker.java
--- a/src/org/openbravo/dal/security/EntityAccessChecker.java
+++ b/src/org/openbravo/dal/security/EntityAccessChecker.java
@@ -351,7 +351,7 @@
    *          the data access level defined in the table
    * @return true if access is allowed, false otherwise
    */
-  private boolean hasCorrectAccessLevel(String userLevel, int accessLevel) {
+  public static boolean hasCorrectAccessLevel(String userLevel, int accessLevel) {
     // copied from HttpSecureAppServlet.
     if (!OBContext.getOBContext().doAccessLevelCheck()) {
       return true;
