diff --git a/src/main/java/com/gitblit/tickets/QueryResult.java b/src/main/java/com/gitblit/tickets/QueryResult.java
index f8d6d12..14698c3 100644
--- a/src/main/java/com/gitblit/tickets/QueryResult.java
+++ b/src/main/java/com/gitblit/tickets/QueryResult.java
@@ -60,6 +60,7 @@
 	public List<String> participants;
 	public List<String> watchedby;
 	public List<String> mentions;
+	public List<String> dependencies;
 	public Patchset patchset;
 	public int commentsCount;
 	public int votesCount;
diff --git a/src/main/java/com/gitblit/tickets/TicketIndexer.java b/src/main/java/com/gitblit/tickets/TicketIndexer.java
index e2d53af..5db5590 100644
--- a/src/main/java/com/gitblit/tickets/TicketIndexer.java
+++ b/src/main/java/com/gitblit/tickets/TicketIndexer.java
@@ -20,6 +20,7 @@
 import java.text.MessageFormat;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.LinkedHashSet;
@@ -106,7 +107,8 @@
 		votes(Type.INT),
 		//NOTE: Indexing on the underlying value to allow flexibility on naming
 		priority(Type.INT),
-		severity(Type.INT);
+		severity(Type.INT),
+		dependencies(Type.STRING);
 
 		final Type fieldType;
 
@@ -521,6 +523,9 @@
 		toDocField(doc, Lucene.participants, StringUtils.flattenStrings(ticket.getParticipants(), ";").toLowerCase());
 		toDocField(doc, Lucene.watchedby, StringUtils.flattenStrings(ticket.getWatchers(), ";").toLowerCase());
 		toDocField(doc, Lucene.mentions, StringUtils.flattenStrings(ticket.getMentions(), ";").toLowerCase());
+		for (String dep : ticket.getDependencies()) {
+			toDocField(doc, Lucene.dependencies, dep);
+		}
 		toDocField(doc, Lucene.votes, ticket.getVoters().size());
 		toDocField(doc, Lucene.priority, ticket.priority.getValue());
 		toDocField(doc, Lucene.severity, ticket.severity.getValue());
@@ -607,6 +612,7 @@
 		result.mentions = unpackStrings(doc, Lucene.mentions);
 		result.priority = TicketModel.Priority.fromObject(unpackInt(doc, Lucene.priority), TicketModel.Priority.defaultPriority);
 		result.severity = TicketModel.Severity.fromObject(unpackInt(doc, Lucene.severity), TicketModel.Severity.defaultSeverity);
+		result.dependencies = convertList(doc, Lucene.dependencies);
 
 		if (!StringUtils.isEmpty(doc.get(Lucene.patchset.name()))) {
 			// unpack most recent patchset
@@ -625,6 +631,10 @@
 		return result;
 	}
 
+	private List<String> convertList(Document doc, Lucene lucene) {
+		return Arrays.asList(doc.getValues(lucene.name()));
+	}
+
 	private String unpackString(Document doc, Lucene lucene) {
 		return doc.get(lucene.name());
 	}
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
index 10bfe00..98b619a 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -516,6 +516,8 @@
 gb.dependency = dependency
 gb.dependencies = dependencies
 gb.remove = remove
+gb.dependant = dependant
+gb.showDependant = show dependant
 gb.createdThisTicket = created this ticket
 gb.proposedThisChange = proposed this change
 gb.uploadedPatchsetN = uploaded patchset {0}
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.html b/src/main/java/com/gitblit/wicket/pages/TicketPage.html
index e3d143d..26f3f03 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.html
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.html
@@ -73,6 +73,7 @@
 						<tr><th><wicket:message key="gb.responsible"></wicket:message></th><td><span wicket:id="responsible">[responsible]</span></td></tr>
 						<tr><th><wicket:message key="gb.milestone"></wicket:message></th><td><span wicket:id="milestone">[milestone]</span></td></tr>
 						<tr><th><wicket:message key="gb.dependencies"></wicket:message></th><td><span wicket:id="dependencies"><a wicket:id="dependencyLink">[link]</a></span></td></tr>
+						<tr><th><wicket:message key="gb.dependant"></wicket:message></th><td><a wicket:id="dependOnLink"><wicket:message key="gb.showDependant"></wicket:message></a></td></tr>
 						<tr><th><wicket:message key="gb.votes"></wicket:message></th><td><span wicket:id="votes" class="badge">1</span> <a style="padding-left:5px" wicket:id="voteLink" href="#">vote</a></td></tr>
 						<tr><th><wicket:message key="gb.watchers"></wicket:message></th><td><span wicket:id="watchers" class="badge">1</span> <a style="padding-left:5px" wicket:id="watchLink" href="#">watch</a></td></tr>
 						<tr><th><wicket:message key="gb.export"></wicket:message></th><td><a rel="nofollow" target="_blank" wicket:id="exportJson"></a></td></tr>
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
index 74484b0..ae48196 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -307,6 +307,8 @@
 			}
 		});
 
+		add(new BookmarkablePageLink<Void>("dependOnLink", TicketsPage.class, queryDependsOn(ticket.number)));
+
 		/*
 		 * PARTICIPANTS (DISCUSSION TAB)
 		 */
@@ -997,6 +999,12 @@
 		add(revisionHistory);
 	}
 
+	private PageParameters queryDependsOn(long number) {
+		PageParameters params = WicketUtils.newRepositoryParameter(repositoryName);
+		params.add("q", Lucene.dependencies.name() + ':' + number);
+		return params;
+	}
+
 	protected void addUserAttributions(MarkupContainer container, Change entry, int avatarSize) {
 		UserModel commenter = app().users().getUserModel(entry.author);
 		if (commenter == null) {
