Index: service/src/test/java/org/appfuse/service/impl/UniversalManagerTest.java
===================================================================
--- service/src/test/java/org/appfuse/service/impl/UniversalManagerTest.java	(revision 2569)
+++ service/src/test/java/org/appfuse/service/impl/UniversalManagerTest.java	(working copy)
@@ -33,9 +33,9 @@
 
         // create
         // set expectations
-        dao.expects(once()).method("save").isVoid();
+        dao.expects(once()).method("save").will(returnValue(user));
         
-        manager.save(user);
+        user = (User)manager.save(user);
         dao.verify();
         
         // retrieve
@@ -50,7 +50,7 @@
         dao.reset();
         dao.expects(once()).method("save").isVoid();
         user.getAddress().setCountry("USA");
-        manager.save(user);
+        user = (User)manager.save(user);
         dao.verify();
         
         // delete
Index: service/src/test/java/org/appfuse/service/impl/UserManagerImplTest.java
===================================================================
--- service/src/test/java/org/appfuse/service/impl/UserManagerImplTest.java	(revision 2569)
+++ service/src/test/java/org/appfuse/service/impl/UserManagerImplTest.java	(working copy)
@@ -53,9 +53,9 @@
         
         // reset expectations
         userDao.reset();
-        userDao.expects(once()).method("saveUser").with(same(user));
+        userDao.expects(once()).method("saveUser").with(same(user)).will(returnValue(user));
         
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         assertTrue(user.getPhoneNumber().equals("303-555-1212"));
         assertTrue(user.getRoles().size() == 1);
         userDao.verify();
@@ -77,9 +77,9 @@
         user.addRole(role);
 
         // set expected behavior on user dao
-        userDao.expects(once()).method("saveUser").with(same(user));
+        userDao.expects(once()).method("saveUser").with(same(user)).will(returnValue(user));
         
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         assertTrue(user.getUsername().equals("john"));
         assertTrue(user.getRoles().size() == 1);
         userDao.verify();
@@ -110,7 +110,7 @@
         
         // run test
         try {
-            userManager.saveUser(user);
+            user = userManager.saveUser(user);
             fail("Expected UserExistsException not thrown");
         } catch (UserExistsException e) {
             log.debug("expected exception: " + e.getMessage());
Index: service/src/test/java/org/appfuse/service/UserSecurityAdviceTest.java
===================================================================
--- service/src/test/java/org/appfuse/service/UserSecurityAdviceTest.java	(revision 2569)
+++ service/src/test/java/org/appfuse/service/UserSecurityAdviceTest.java	(working copy)
@@ -48,7 +48,7 @@
         User user = new User("admin");
 
         try {
-            userManager.saveUser(user);
+            user = userManager.saveUser(user);
             fail("AccessDeniedException not thrown");
         } catch (AccessDeniedException expected) {
             assertNotNull(expected);
@@ -68,7 +68,7 @@
         User user = new User("admin");
 
         userDao.expects(once()).method("saveUser");
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         userDao.verify();
     }
 
@@ -78,7 +78,7 @@
         user.getRoles().add(new Role(Constants.USER_ROLE));
 
         userDao.expects(once()).method("saveUser");
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         userDao.verify();
     }
 
@@ -89,7 +89,7 @@
         user.getRoles().add(new Role(Constants.ADMIN_ROLE));
 
         try {
-            userManager.saveUser(user);
+            user = userManager.saveUser(user);
             fail("AccessDeniedException not thrown");
         } catch (AccessDeniedException expected) {
             assertNotNull(expected);
@@ -105,7 +105,7 @@
         user.getRoles().add(new Role(Constants.USER_ROLE));
 
         try {
-            userManager.saveUser(user);
+            user = userManager.saveUser(user);
             fail("AccessDeniedException not thrown");
         } catch (AccessDeniedException expected) {
             assertNotNull(expected);
@@ -128,7 +128,7 @@
         user.getRoles().add(new Role(Constants.USER_ROLE));
 
         userDao.expects(once()).method("saveUser");
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         userDao.verify();
     }
 
@@ -139,7 +139,7 @@
         user.getRoles().add(new Role(Constants.USER_ROLE));
 
         userDao.expects(once()).method("saveUser");
-        userManager.saveUser(user);
+        user = userManager.saveUser(user);
         userDao.verify();
     }
 
Index: service/src/test/java/org/appfuse/service/UserManagerTest.java
===================================================================
--- service/src/test/java/org/appfuse/service/UserManagerTest.java	(revision 2569)
+++ service/src/test/java/org/appfuse/service/UserManagerTest.java	(working copy)
@@ -35,7 +35,7 @@
 
         log.debug("saving user with updated phone number: " + user);
 
-        mgr.saveUser(user);
+        user = mgr.saveUser(user);
         assertEquals("303-555-1212", user.getPhoneNumber());
         assertEquals(1, user.getRoles().size());
     }
@@ -49,7 +49,7 @@
 
         user.addRole(roleManager.getRole(Constants.USER_ROLE));
 
-        mgr.saveUser(user);
+        user = mgr.saveUser(user);
         assertEquals("john", user.getUsername());
         assertEquals(1, user.getRoles().size());
 
Index: service/src/test/java/org/appfuse/service/UserExistsExceptionTest.java
===================================================================
--- service/src/test/java/org/appfuse/service/UserExistsExceptionTest.java	(revision 2569)
+++ service/src/test/java/org/appfuse/service/UserExistsExceptionTest.java	(working copy)
@@ -32,7 +32,7 @@
         
         // try saving as new user, this should fail b/c of unique keys
         try {
-            manager.saveUser(user2);
+            user = manager.saveUser(user2);
             fail("Duplicate user didn't throw UserExistsException");
         } catch (UserExistsException uee) {
             assertNotNull(uee);
Index: service/src/main/java/org/appfuse/service/impl/UniversalManagerImpl.java
===================================================================
--- service/src/main/java/org/appfuse/service/impl/UniversalManagerImpl.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/impl/UniversalManagerImpl.java	(working copy)
@@ -48,7 +48,7 @@
     /**
      * @see org.appfuse.service.UniversalManager#save(java.lang.Object)
      */
-    public void save(Object o) {
-        dao.save(o);
+    public Object save(Object o) {
+        return dao.save(o);
     }
 }
Index: service/src/main/java/org/appfuse/service/impl/GenericManagerImpl.java
===================================================================
--- service/src/main/java/org/appfuse/service/impl/GenericManagerImpl.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/impl/GenericManagerImpl.java	(working copy)
@@ -60,8 +60,8 @@
         return genericDao.exists(id);
     }
 
-    public void save(T object) {
-        genericDao.save(object);
+    public T save(T object) {
+        return genericDao.save(object);
     }
 
     public void remove(PK id) {
Index: service/src/main/java/org/appfuse/service/impl/UserManagerImpl.java
===================================================================
--- service/src/main/java/org/appfuse/service/impl/UserManagerImpl.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/impl/UserManagerImpl.java	(working copy)
@@ -49,14 +49,14 @@
     /**
      * @see org.appfuse.service.UserManager#saveUser(org.appfuse.model.User)
      */
-    public void saveUser(User user) throws UserExistsException {
+    public User saveUser(User user) throws UserExistsException {
     	// if new user, lowercase userId
     	if (user.getVersion() == null) {
             user.setUsername(user.getUsername().toLowerCase());
     	}
         
         try {
-            dao.saveUser(user);
+            return dao.saveUser(user);
         } catch (DataIntegrityViolationException e) {
             throw new UserExistsException("User '" + user.getUsername() + "' already exists!");
         } catch (EntityExistsException e) { // needed for JPA
Index: service/src/main/java/org/appfuse/service/impl/RoleManagerImpl.java
===================================================================
--- service/src/main/java/org/appfuse/service/impl/RoleManagerImpl.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/impl/RoleManagerImpl.java	(working copy)
@@ -26,8 +26,8 @@
         return dao.getRoleByName(rolename);
     }
 
-    public void saveRole(Role role) {
-        dao.save(role);
+    public Role saveRole(Role role) {
+        return dao.save(role);
     }
 
     public void removeRole(String rolename) {
Index: service/src/main/java/org/appfuse/service/UniversalManager.java
===================================================================
--- service/src/main/java/org/appfuse/service/UniversalManager.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/UniversalManager.java	(working copy)
@@ -25,7 +25,7 @@
      * Generic method to save an object.
      * @param o the object to save
      */
-    public void save(Object o);
+    public Object save(Object o);
 
     /**
      * Generic method to delete an object based on class and id
Index: service/src/main/java/org/appfuse/service/GenericManager.java
===================================================================
--- service/src/main/java/org/appfuse/service/GenericManager.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/GenericManager.java	(working copy)
@@ -42,7 +42,7 @@
      * Generic method to save an object - handles both update and insert.
      * @param object the object to save
      */
-    public void save(T object);
+    public T save(T object);
 
     /**
      * Generic method to delete an object based on class and id
Index: service/src/main/java/org/appfuse/service/UserManager.java
===================================================================
--- service/src/main/java/org/appfuse/service/UserManager.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/UserManager.java	(working copy)
@@ -48,7 +48,7 @@
      * @param user the user's information
      * @throws UserExistsException thrown when user already exists
      */
-    public void saveUser(User user) throws UserExistsException;
+    public User saveUser(User user) throws UserExistsException;
 
     /**
      * Removes a user from the database by their userId
Index: service/src/main/java/org/appfuse/service/RoleManager.java
===================================================================
--- service/src/main/java/org/appfuse/service/RoleManager.java	(revision 2569)
+++ service/src/main/java/org/appfuse/service/RoleManager.java	(working copy)
@@ -13,6 +13,6 @@
 public interface RoleManager extends UniversalManager {
     public List getRoles(Role role);
     public Role getRole(String rolename);
-    public void saveRole(Role role);
+    public Role saveRole(Role role);
     public void removeRole(String rolename);
 }
