Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageProjects.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageProjects.java	(revision c38f800cde8d5ed30650e1ffa7a2e3803fcbffac)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/admin/ManageProjects.java	(revision a9a158f07dcbae6c78a6d728f427559c2b4b5a0a)
@@ -26,4 +26,6 @@
 import java.util.Collections;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -57,4 +59,5 @@
 import info.ajanovski.eprms.tap.services.CourseManager;
 import info.ajanovski.eprms.tap.services.GenericService;
+import info.ajanovski.eprms.tap.services.PersonManager;
 import info.ajanovski.eprms.tap.services.ProjectManager;
 import info.ajanovski.eprms.tap.services.SystemConfigService;
@@ -99,4 +102,7 @@
 
 	@Inject
+	private PersonManager personManager;
+
+	@Inject
 	private Messages messages;
 
@@ -163,4 +169,7 @@
 	@Property
 	private Course selectedCourse;
+
+	@Property
+	private String personSearch;
 
 	void onActivate() {
@@ -290,7 +299,22 @@
 	}
 
+	private Boolean cancelTeamMemberForm=false;
+	
+	public void onCanceledFromTeamMemberForm() {
+		cancelTeamMemberForm=true;
+	}
+
 	@CommitAfter
 	public void onSuccessFromTeamMemberForm() {
-		genericService.save(newTm);
+		if (!cancelTeamMemberForm) {
+			if (personSearch != null && personSearch.length() > 0) {
+				Pattern pattern = Pattern.compile("\\[(.*?)\\]");
+				Matcher matcher = pattern.matcher(personSearch);
+				if (matcher.find()) {
+					newTm.setPerson(personManager.getPersonByUsername(matcher.group(1)));
+				}
+			}
+			genericService.save(newTm);
+		}
 		newTm = null;
 	}
@@ -355,5 +379,6 @@
 
 	public List<Person> getPersons() {
-		return (List<Person>) genericService.getAll(Person.class);
+		return ((List<Person>) genericService.getAll(Person.class)).stream()
+				.sorted((o1, o2) -> o1.getUserName().compareTo(o2.getUserName())).toList();
 	}
 
@@ -455,3 +480,14 @@
 		}
 	}
+
+	public List<String> onProvideCompletionsFromSelectPerson(String input) {
+		List<String> list = new ArrayList<String>();
+		if (input != null && input.length() > 0) {
+			getPersons().stream()
+					.filter(p -> (p.getFirstName() + p.getLastName() + p.getEmail() + p.getUserName()).contains(input))
+					.forEach(p -> list.add(p.getFirstName() + " " + p.getLastName() + " [" + p.getUserName() + "]"));
+		}
+		return list;
+	}
+
 }
Index: eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/admin/ManageProjects.tml
===================================================================
--- eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/admin/ManageProjects.tml	(revision c38f800cde8d5ed30650e1ffa7a2e3803fcbffac)
+++ eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/admin/ManageProjects.tml	(revision a9a158f07dcbae6c78a6d728f427559c2b4b5a0a)
@@ -45,7 +45,6 @@
 						</div>
 						<div class="col-2">
-							<a t:type="actionlink" t:id="NewProject"
-								class="btn btn-primary"><img t:type="SVGIcon"
-								t:path="plus-square" /> ${message:new-label}
+							<a t:type="actionlink" t:id="NewProject" class="btn btn-primary"><img
+								t:type="SVGIcon" t:path="plus-square" /> ${message:new-label}
 								${message:Project-label}</a>
 						</div>
@@ -108,5 +107,5 @@
 										<div t:type="palette" t:id="inCourses"
 											t:encoder="courseEncoder" t:model="coursesModel"
-											t:selected="inCourses" t:size="3"></div>
+											t:selected="inCourses" t:size="5"></div>
 									</div>
 								</p:courses>
@@ -151,15 +150,18 @@
 			<div class="card mb-3" t:type="if" t:test="newTm">
 				<div class="card-body">
-					<h3>${message:TeamMember-label}</h3>
-					<form class="form-horizontal" t:id="teamMemberForm"
-						t:type="beaneditform" t:object="newTm" t:exclude="teamMemberId"
-						t:add="person" t:reorder="person, positionNumber, role"
-						t:submitLabel="OK">
-						<p:person>
-							<label t:type="label" t:for="selectPerson"></label>
-							<select t:id="selectPerson" t:type="select" t:source="persons"
-								t:value="newTm.person" t:model="personModel"></select>
-						</p:person>
-					</form>
+					<t:modalbox>
+						<h3>${message:TeamMember-label}</h3>
+						<form class="form-horizontal" t:id="teamMemberForm"
+							t:type="beaneditform" t:object="newTm" t:exclude="teamMemberId"
+							t:add="person" t:reorder="person, positionNumber, role"
+							t:submitLabel="OK" t:cancel="true">
+							<p:person>
+								<!-- select t:id="selectPerson" t:type="select" t:source="persons"
+									t:value="newTm.person" t:model="personModel"></select -->
+								<input t:type="textfield" t:id="selectPerson"
+									t:value="personSearch" t:autocomplete="on" t:mixins="formgroup,autocomplete" size="100" />
+							</p:person>
+						</form>
+					</t:modalbox>
 				</div>
 			</div>
