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?