diff -r ed44288c1e71 src/org/openbravo/dal/core/OBContext.java
--- a/src/org/openbravo/dal/core/OBContext.java	Wed Jun 08 13:21:55 2016 +0200
+++ b/src/org/openbravo/dal/core/OBContext.java	Wed Jun 08 23:08:13 2016 +0200
@@ -546,7 +546,7 @@
   private Language language;
   private boolean translationInstalled;
   private Warehouse warehouse;
-  private List<Organization> organizationList;
+  private List<String> organizationList;
   private String[] readableOrganizations;
   private String[] readableClients;
   private Set<String> writableOrganizations;
@@ -613,9 +613,9 @@
       writableOrganizations.add("0");
     }
 
-    final List<Organization> os = getOrganizationList(role);
-    for (final Organization o : os) {
-      writableOrganizations.add(o.getId());
+    final List<String> os = getOrganizationList(role);
+    for (final String o : os) {
+      writableOrganizations.add(o);
     }
 
     if (localUserLevel.equals("O")) { // remove *
@@ -625,31 +625,31 @@
   }
 
   @SuppressWarnings("unchecked")
-  private List<Organization> getOrganizationList(Role thisRole) {
+  private List<String> getOrganizationList(Role thisRole) {
     if (organizationList != null) {
-      return new ArrayList<Organization>(organizationList);
+      return new ArrayList<String>(organizationList);
     }
     final Query qry = SessionHandler.getInstance().createQuery(
-        "select o from " + Organization.class.getName() + " o, " + RoleOrganization.class.getName()
-            + " roa where o." + Organization.PROPERTY_ID + "=roa."
-            + RoleOrganization.PROPERTY_ORGANIZATION + "." + Organization.PROPERTY_ID + " and roa."
-            + RoleOrganization.PROPERTY_ROLE + "." + Organization.PROPERTY_ID + "='"
+        "select o.id from " + Organization.class.getName() + " o, "
+            + RoleOrganization.class.getName() + " roa where o." + Organization.PROPERTY_ID
+            + "=roa." + RoleOrganization.PROPERTY_ORGANIZATION + "." + Organization.PROPERTY_ID
+            + " and roa." + RoleOrganization.PROPERTY_ROLE + "." + Organization.PROPERTY_ID + "='"
             + thisRole.getId() + "' and roa." + RoleOrganization.PROPERTY_ACTIVE + "='Y' and o."
             + Organization.PROPERTY_ACTIVE + "='Y'");
     organizationList = qry.list();
     for (final String orgId : additionalWritableOrganizations) {
-      final Organization org = OBDal.getInstance().get(Organization.class, orgId);
-      if (!organizationList.contains(org)) {
-        organizationList.add(org);
+      // TODO: check if we need to validate OrgId passed in or not
+      if (!organizationList.contains(orgId)) {
+        organizationList.add(orgId);
       }
     }
-    return new ArrayList<Organization>(organizationList);
+    return new ArrayList<String>(organizationList);
   }
 
   @SuppressWarnings("unchecked")
-  private List<Organization> getOrganizations(Client client) {
+  private List<String> getOrganizations(Client client) {
     final Query qry = SessionHandler.getInstance().createQuery(
-        "select o from " + Organization.class.getName() + " o where " + "o."
+        "select o.id from " + Organization.class.getName() + " o where " + "o."
             + Organization.PROPERTY_CLIENT + "=? and o." + Organization.PROPERTY_ACTIVE + "='Y'");
     qry.setParameter(0, client);
     organizationList = qry.list();
@@ -657,14 +657,14 @@
   }
 
   private void setReadableOrganizations(Role role) {
-    final List<Organization> os = getOrganizationList(role);
+    final List<String> os = getOrganizationList(role);
     final Set<String> readableOrgs = new HashSet<String>();
-    for (final Organization o : os) {
-      readableOrgs.addAll(getOrganizationStructureProvider().getNaturalTree(o.getId()));
+    for (final String o : os) {
+      readableOrgs.addAll(getOrganizationStructureProvider().getNaturalTree(o));
       // if zero is an organization then add them all!
-      if (o.getId().equals("0")) {
-        for (final Organization org : getOrganizations(getCurrentClient())) {
-          readableOrgs.add(org.getId());
+      if (o.equals("0")) {
+        for (final String org : getOrganizations(getCurrentClient())) {
+          readableOrgs.add(org);
         }
       }
     }
@@ -773,6 +773,7 @@
     user = null;
     language = null;
     warehouse = null;
+    // TODO: recheck if should be still nulled or not?
     organizationList = null;
     readableOrganizations = null;
     readableClients = null;
