I'll apologize up front for the long question, but there is no easy way of explaining what we're doing.

We are building a marketplace which is conceptually similar to storenvy.com. It is a multi-tenanted application where merchants of educational courses can sign up as a vendor (i.e. a tenant of our application). The vendors can list their products in the marketplace, but they also get their own registration system (custom store) that only lists their own courses on their own domain or subdomain.

End users can sign up through our marketplace or they can sign up through a particular vendor's store. This is all a pretty straight-forward process, because in either case the user is in charge of their own registration and profile information.

But here is the twist, some of the vendors (and customers) are old-school and take paper registration. The customers might call the vendor to register, or they might walk in on the first day of a class, and want to register in person. The vendor needs to be able to enter all of the users information for them.

The vendors expect to be able to manage the information for their customers. But what happens when that user signs in to our marketplace or into another vendor's store later on? Now that user's profile could be accessed and modified by two different vendors and the end user. There is a lot of possibility for loss of data integrity, conflict, and confusion.

On one hand, we want to give the vendor the ability to quickly register users and have control over all of the users information without having to tell the user to log in to complete their registration (which won't work for a phone registration, for example). On the other hand, we don't want to have completely separate user data in each tenant and have to worry about replication and/or duplication of user data.

We're having a hard time thinking of an analogy that is similar to what we're doing. The closest we could come up with is booking travel where you can book something directly, or through an agent or travel provider.

What would be a good way to handle registration that would provide for a good experience for the vendors who are manually signing up people, and for the end user who sign up directly?

  • A couple questions for you: do vendors need to continue managing a customer's profile indefinitely? Is there a point in the customer life cycle when they're ready to manage the profile on their own?
    – Noah C
    Mar 8, 2013 at 6:00
  • @NoahC - That's a great question, and we were discussing that exact question. We could allow a vendor to create a user and manage them until a user logs in for the first time, then we could let the user take control over their own profile. The only problem is that the user may expect a vendor to manage their registration at some point (like when they are at the vendor's business, in person). So it seems likely that we need some way of allowing both users and vendors to manage the profile. Mar 8, 2013 at 22:24

1 Answer 1


I've worked in a system with similar problem, in that case queue system for apartments with different landlords. The architecture was like this:

  • A user has a profile where we store information regarding the user only. Phone number, name, address, e-mail and the like.
  • Then we have merchants of education, with there profile data.
  • A user is also a student, where we have reference to the user profile and the merchant of education. A user have one student profile for each merchant.
  • There is also a reference to Courses which linkes student and merchant of education.

This architecture work in the database as well. Each merchant edits her profile, courses and student. But the tricky part is the user profile. If a user registered online I think the user owns her data, and it can't be edited by a merchant. But if a user registered without login information to the site(s) then merchants should be able to edit a users profile. Just add a Boolean field AllowMerchantEdit, which determines which is which.


download bmml source – Wireframes created with Balsamiq Mockups

As always, log all activity so you can rollback wrong edits. This is what I would do.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.