Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java	(revision 84f75dd4ddea77e4b1ee766814d71a8c4e381d15)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManagePersons.java	(revision 73a53991e9beb4d73f19176f20bcc4107e3f6b22)
@@ -5,4 +5,5 @@
 import javax.inject.Inject;
 
+import org.apache.tapestry5.SelectModel;
 import org.apache.tapestry5.annotations.InjectComponent;
 import org.apache.tapestry5.annotations.Persist;
@@ -11,4 +12,5 @@
 import org.apache.tapestry5.corelib.components.Form;
 import org.apache.tapestry5.hibernate.annotations.CommitAfter;
+import org.apache.tapestry5.services.SelectModelFactory;
 import org.slf4j.Logger;
 
@@ -141,3 +143,46 @@
 	}
 
+	@Inject
+	private SelectModelFactory selectModelFactory;
+
+	@Persist
+	@Property
+	private Person personToAddRole;
+
+	@Persist
+	@Property
+	private Role selectRole;
+
+	@Property
+	private PersonRole personRole;
+
+	public SelectModel getRolesModel() {
+		return selectModelFactory.create(genericService.getAll(Role.class), "name");
+	}
+
+	public void onAddRole(Person p) {
+		personToAddRole = p;
+	}
+
+	public void onCancelAddRole() {
+		personToAddRole = null;
+	}
+
+	public List<PersonRole> getPersonRoles() {
+		return personManager.getPersonRolesForPerson(person.getPersonId());
+	}
+
+	@CommitAfter
+	public void onSuccessFromFrmSelectRole() {
+		PersonRole pr = new PersonRole();
+		pr.setRole(selectRole);
+		pr.setPerson(personToAddRole);
+		genericService.save(pr);
+		personToAddRole = null;
+	}
+
+	@CommitAfter
+	public void onRemoveRole(PersonRole personRole) {
+		genericService.delete(personRole);
+	}
 }
