1) Create a common application model (this also sets up the oracle users in the context just for auditing) @Override protected void prepareSession(Session session){ super.prepareSession(session); try{ String userName = ADFContext.getCurrent().getSecurityContext().getUserName(); String host = ((HttpServletRequest)ADFContext.getCurrent().getEnvironment().getRequest()).getRemoteHost(); String ip = ((HttpServletRequest)ADFContext.getCurrent().getEnvironment().getRequest()).getRemoteAddr(); if (userName != null){ setupSessionInfo(getDBTransaction(), host, ip, userName); } proxyUser(getDBTransaction()); //this is done because of a crappy weblogic caching error clearPoolCache(getDBTransaction()); } catch (Exception e){ session = null; System.out.println("------> Error in user proxy"); e.printStackTrace(...