diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml
index 7f222c0cc7d60c7fa301580f9326c4d9bcb7c0e5..8586c6794f2b0c36bc4fbe441d41d26da8e0c9d3 100644
--- a/apps/files/appinfo/info.xml
+++ b/apps/files/appinfo/info.xml
@@ -16,4 +16,7 @@
 		<files>appinfo/remote.php</files>
 		<webdav>appinfo/remote.php</webdav>
 	</remote>
+	<documentation>
+		<user>user-files</user>
+	</documentation>
 </info>
diff --git a/apps/files_encryption/appinfo/info.xml b/apps/files_encryption/appinfo/info.xml
index 62596087db8c5d80711e4bf9097848afae067a7f..6fcef693bede812dfb00ca77f6361a6d7bb7efae 100644
--- a/apps/files_encryption/appinfo/info.xml
+++ b/apps/files_encryption/appinfo/info.xml
@@ -11,7 +11,8 @@
 	<requiremin>4</requiremin>
 	<shipped>true</shipped>
 	<documentation>
-
+		<user>user-encryption</user>
+		<admin>admin-encryption</admin>
 	</documentation>
 	<rememberlogin>false</rememberlogin>
 	<types>
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index ee572561e7cd62857989e58a668ace35f58d648f..6acb58960d4aac789d867edca6bb227be9fbd9bc 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -11,6 +11,9 @@
 	<author>Robin Appelman, Michael Gapczynski, Vincent Petry</author>
 	<requiremin>4.93</requiremin>
 	<shipped>true</shipped>
+	<documentation>
+		<admin>admin-external-storage</admin>
+	</documentation>
 	<types>
 		<filesystem/>
 	</types>
diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml
index f15056908f1e019eccab3fa7b40453241b80ced3..8735b61e2db5f1305a88509d31c5170b929acd4b 100644
--- a/apps/files_trashbin/appinfo/info.xml
+++ b/apps/files_trashbin/appinfo/info.xml
@@ -15,5 +15,8 @@ To prevent a user from running out of disk space, the ownCloud Deleted files app
 	<types>
 		<filesystem/>
 	</types>
+	<documentation>
+		<user>user-trashbin</user>
+	</documentation>
 	<ocsid>166052</ocsid>
 </info>
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index 605ef5ccc37325965967e8394c8af53875c27a65..9aed8069b9b85cb8f04281722176a902d62d0bf6 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -14,6 +14,9 @@ In addition to the expiry of versions, ownCloud’s versions app makes certain n
 	<types>
 		<filesystem/>
 	</types>
+	<documentation>
+		<user>user-versions</user>
+	</documentation>
 	<default_enable/>
 	<ocsid>166053</ocsid>
 </info>
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 2b069d14e3d86998bd8ebc0c062c5608ac22e056..a1a934f0140f6dc7c35fff735d0d60ae324927d3 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -15,7 +15,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
 		<authentication/>
 	</types>
 	<documentation>
-		<admin>http://doc.owncloud.org/server/7.0/go.php?to=admin-ldap</admin>
+		<admin>admin-ldap</admin>
 	</documentation>
 	<ocsid>166061</ocsid>
 </info>
diff --git a/lib/private/app.php b/lib/private/app.php
index 3eed9e3c443d69d54e47ad94dc89c75145916cf4..1d406fb967e7002de360510cd26b2ce0aec23ad0 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -659,7 +659,15 @@ class OC_App {
 				$data[$child->getName()] = substr($xml, 13, -14); //script <description> tags
 			} elseif ($child->getName() == 'documentation') {
 				foreach ($child as $subChild) {
-					$data["documentation"][$subChild->getName()] = (string)$subChild;
+					$url = (string) $subChild;
+
+					// If it is not an absolute URL we assume it is a key
+					// i.e. admin-ldap will get converted to go.php?to=admin-ldap
+					if(!\OC::$server->getHTTPHelper()->isHTTPURL($url)) {
+						$url = OC_Helper::linkToDocs($url);
+					}
+
+					$data["documentation"][$subChild->getName()] = $url;
 				}
 			} else {
 				$data[$child->getName()] = (string)$child;