Question: I am relatively new to MVC, and have just come across some pre-existing code. 

We have a UserService, which mainly contains CRUD operations, and perhaps, one or two business logic operations - all needed by our controllers. It encapsulates the context and the Membership. 

I was about to implement the ResetPassword operations, but I was not sure where to implement it; whether to implement it at the UserService or at the User Entity. 

---

*UserService*

```
bool ResetPassword(string username, string newPassword);

```

This would lead to my controller being:

```
ActionResult ResetPassword(string username, string newPassword)
{
  userService.ResetPassword(username, newPassword);
}

```

vs

*User*

```
bool ResetPassword(string newPassword)

```

This would lead to my controller being:

```
ActionResult ResetPassword(string username, string newPassword)
{
  var user = userService.GetUser(username);
  user.ResetPassword(newPassword);
}

```

Which approach is recommended?

Answer: 
You should consider using a License management api to do the same, which will give u both security and capability to change License pre/post installations. 

It is not advisable to build adhoc licensing capabilty, take a look at [License3j](http://projects.verhas.com/com.verhas.licensor/license3j/license3j/) and [TrueLicense](http://truelicense.java.net), they are both free and can help you gain perspective or better fulfil your requirement
Modularize the application and deploy to each client only those parts that he wants/has access to. There's many ways to do it (the most complete but heavyweight being OSGi), but the specifics depend on your circumstances and requirements. 

The quickest way to implement it might be to simply extract your extra functionality in separate JARs, and on deployment update the classpath appropriately.