FYI anyone working in VAJ with the WTE (EJBs etc), passing ActionForms to EJB methods. We are hoping to find the actual either VAJ error or non-serializable object details. The workaround for this at the moment is to save the ActionServlet object from the form bean and then set it to null, send the form bean off to the ejb then when the ejb has finished with it put the saved ActionServlet back into the form bean. Like so: ActionServlet as = form.getServlet(); form.setServlet(null); and then at the end of your try/catch you need a finally: finally { form.setServlet(as); } Internal Servlet Error: java.io.IOException: Serializable readObject method failed internally java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) java.io.IOException(java.lang.String) void com.ibm.rmi.io.IIOPOutputStream.throwExceptionType(java.lang.Class, java.lang.String) void com.ibm.rmi.io.IIOPOutputStream.simpleWriteObject(java.lang.Object) void com.ibm.rmi.io.ValueHandlerImpl.writeValueInternal(com.ibm.rmi.io.IIOPOutputStream, org.omg.CORBA_2_3.portable.OutputStream, java.io.Serializable) void com.ibm.rmi.io.ValueHandlerImpl.writeValue(org.omg.CORBA.portable.OutputStream, java.io.Serializable) void com.ibm.rmi.iiop.CDROutputStream.write_value(java.io.Serializable) void com.ibm.rmi.iiop.CDROutputStream.write_value(java.io.Serializable, java.lang.Class) com.ibm.tricon.User com.ibm.tricon.userprofile.ejb. _User_BaseStub.updateUser(au.com.tricon.web.UserPageForm) com.ibm.tricon.User com.ibm.tricon.userprofile.ejb. _User_Stub.updateUser(au.com.tricon.web.UserPageForm) com.ibm.tricon.User com.ibm.tricon.userprofile.ejb.UserAccessBean.updateUser(au.com.tricon.web.UserPageForm) org.apache.struts.action.ActionForward au.com.tricon.web.ModifyUserAction.perform(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) org.apache.struts.action.ActionForward org.apache.struts.action.ActionServlet.processActionPerform(org.apache.struts.action.Action, org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) void org.apache.struts.action.ActionServlet.process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) void org.apache.struts.action.ActionServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) void org.apache.tomcat.core.ServletWrapper.handleRequest(org.apache.tomcat.core.Request, org.apache.tomcat.core.Response) void org.apache.tomcat.core.ContextManager.service(org.apache.tomcat.core.Request, org.apache.tomcat.core.Response) void org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(org.apache.tomcat.service.TcpConnection, java.lang.Object []) void org.apache.tomcat.service.TcpConnectionThread.run() void java.lang.Thread.run() -- dIon Gillard, Multitask Consulting Work: http://www.multitask.com.au NetRexx: http://www.multitask.com.au/NetRexx.nsf