Cloning the Users eSpace

Cloning the Users eSpace

  
I know at some point my application will need its own Users eSpace because of how it will be integrated with the rest of the enterprise.  I read the great thread (http://www.outsystems.com/forums/discussion/11141/user-provisioning/) that talks about how to integrate with other systems.  I will definitely be able to use all this.

Where I ran into a problem is that when I clone the Users eSpace, remove the original from my application and then add the new MyUsers eSpace it seems to have no users.  This makes sense since I assume cloning copies all the code and not the data, though there does appear to be an Administrator record.

When I view MyUsers in the browser after publishing, I get this:

There was an error processing your request. Please try again later...

In the error log I get this:

UserManager role required

So it's obvious that the user Administrator has no roles assigned.  I'm guessing there is a better way to do all this so I need either (a) a direct fix for this specific problem or (b) the preferred way to clone, setup and use a new Users eSpace (preferred).

Thanks for all your help!
Curt -

Do one of the following:

* Have a "When Published" timer that 1) checks for the existence of a known admin user, creates it if it is not found, and adds the necessary roles.

or

* Figure out what the role ID of "User Manager" role is, and edit the ossys_UserRole table manually to add the UserManager role to the user that you are working with. This is only OK for one-time changes, like the initial build of a system, and I am NOT a fan of it. Think of it more as an "emergency repair" procedure.

J.Ja
I can't easily edit the table manually because I'm on PE so I'll try the first option.
Ok, so I'm past that issue but now comes the real reason I'm doing all this.  I assumed by cloning the Users eSpace that the Entities related to that eSpace would also be cloned.  This appears to not be the case.  The reason I wanted to do this in the first place was to modify the Entities so I could add user related data that is specific to my application.  

One solution is obvious.  Create a one-to-one table with the additional fields that links to the Users table and always use a query to join the tables whenever user information is presented.  Not pretty but simple and it will work.

Any other better or cooler ideas?
Hi Curtz,

The User entity is a system entity. The Users eSpace simply creates an abstraction for you to effectively manage users. It also supports LDAP and Active Directory so it is a fit in many enterprise scenarios.

Assuming you only want to extend the User's entity you don't need to clone the Users eSpace and you can still use the Users eSpace as the User provider for your applications. Although you probably don't need to use a clone version of Users looking at the code is very educational. One pattern you'll find there which is applicable in your case is a BPT process to bootstrap information. In the Users case everytime a new role is created in the system, i.e. when you publish an application with a new role, there's a process that kicks off to add that role to the Administrator user, so that this user has access to all applications.

You can apply the same principle to the User entity and everytime a new User is created you can bootstrap the rest of the information you are extending the User entity with.

So your solution to create an extension entity to the User is spot on!

Cheers




Thanks so much I will definitely pursue that!