Index: src/includes/extend/buddypress/functions.php
===================================================================
--- src/includes/extend/buddypress/functions.php
+++ src/includes/extend/buddypress/functions.php
@@ -129,12 +129,24 @@
 		if ( bp_is_group_forum_topic() || bp_is_group_forum_topic_edit() ) {
 
 			// Get the topic
-			$topic = get_posts( array(
+			$topic_args = array(
 				'name'        => bp_action_variable( 1 ),
 				'post_status' => array_keys( bbp_get_topic_statuses() ),
 				'post_type'   => bbp_get_topic_post_type(),
 				'numberposts' => 1
-			) );
+			);
+
+			// Pending topic requires a different format
+			$pending_prefix = bbp_get_pending_status_id() . '--';
+			if ( 0 === strpos( bp_action_variable( 1 ), $pending_prefix ) ) {
+				$id = substr( bp_action_variable( 1 ), strlen( $pending_prefix ) );
+				if ( is_numeric( $id ) ) {
+					$topic_args['p'] = $id;
+					unset( $topic_args['name'] );
+				}
+			}
+
+			$topic = get_posts( $topic_args );
 
 			// Add the topic title to the <title>
 			$new_title .= bbp_get_topic_title( $topic[0]->ID ) . ' ' . $sep . ' ';
Index: src/includes/extend/buddypress/groups.php
===================================================================
--- src/includes/extend/buddypress/groups.php
+++ src/includes/extend/buddypress/groups.php
@@ -1028,12 +1028,26 @@
 					// hide the 'to front' admin links
 					add_filter( 'bbp_get_topic_stick_link', array( $this, 'hide_super_sticky_admin_link' ), 10, 2 );
 
-					// Get the topic
-					bbp_has_topics( array(
-						'name'           => bp_action_variable( $offset + 1 ),
+					$slug = bp_action_variable( $offset + 1 );
+
+					$topic_args = array(
+						'name'           => $slug,
 						'posts_per_page' => 1,
 						'show_stickies'  => false
-					) );
+					);
+
+					// Pending topic requires a different format
+					$pending_prefix = bbp_get_pending_status_id() . '--';
+					if ( 0 === strpos( $slug, $pending_prefix ) ) {
+						$id = substr( $slug, strlen( $pending_prefix ) );
+						if ( is_numeric( $id ) ) {
+							$topic_args['p'] = $id;
+							unset( $topic_args['name'] );
+						}
+					}
+
+					// Get the topic
+					bbp_has_topics( $topic_args );
 
 					// If no topic, 404
 					if ( ! bbp_topics() ) {
@@ -1232,9 +1246,16 @@
 	 */
 	public function new_topic_redirect_to( $redirect_url = '', $redirect_to = '', $topic_id = 0 ) {
 		if ( bp_is_group() ) {
-			$topic        = bbp_get_topic( $topic_id );
-			$topic_hash   = '#post-' . $topic_id;
-			$redirect_url = trailingslashit( bp_get_group_permalink( groups_get_current_group() ) ) . trailingslashit( $this->slug ) . trailingslashit( $this->topic_slug ) . trailingslashit( $topic->post_name ) . $topic_hash;
+			$topic      = bbp_get_topic( $topic_id );
+			$slug       = trailingslashit( $topic->post_name );
+			$topic_hash = '#post-' . $topic_id;
+
+			// Pending status
+			if ( bbp_get_pending_status_id() === get_post_status( $topic_id ) ) {
+				$slug = bbp_add_view_all( sprintf( '%s--%d', bbp_get_pending_status_id(), $topic_id ), true );
+			}
+
+			$redirect_url = trailingslashit( bp_get_group_permalink( groups_get_current_group() ) ) . trailingslashit( $this->slug ) . trailingslashit( $this->topic_slug ) . $slug . $topic_hash;
 		}
 
 		return $redirect_url;
@@ -1432,7 +1453,16 @@
 			case bbp_get_topic_post_type() :
 				$topic_id = $post_id;
 				$forum_id = bbp_get_topic_forum_id( $post_id );
-				$url_end  = trailingslashit( $this->topic_slug ) . get_post_field( 'post_name', $post_id );
+				$url_end  = trailingslashit( $this->topic_slug );
+
+				// Pending status
+				if ( bbp_get_pending_status_id() === get_post_status( $post_id ) ) {
+					$url_end .= sprintf( '%s--%d/', bbp_get_pending_status_id(), $post_id );
+
+				// Everything else
+				} else {
+					$url_end .= get_post_field( 'post_name', $post_id );
+				}
 				break;
 
 			// Forum
@@ -1464,7 +1494,13 @@
 			$group_permalink = trailingslashit( bp_get_group_permalink( $group ) );
 		}
 
-		return trailingslashit( trailingslashit( $group_permalink . $this->slug ) . $url_end );
+		$retval = trailingslashit( trailingslashit( $group_permalink . $this->slug ) . $url_end );
+
+		if ( bbp_get_pending_status_id() === get_post_status( $post_id ) ) {
+			$retval = bbp_add_view_all( $retval, true );
+		}
+
+		return $retval;
 	}
 
 	/**
@@ -1632,6 +1668,11 @@
 			$forum_id  = bbp_get_topic_forum_id( $topic_id );
 			$group_ids = bbp_get_forum_group_ids( $forum_id );
 
+			// Pending status
+			if ( bbp_get_pending_status_id() === get_post_status( $topic_id ) ) {
+				$slug = sprintf( '%s--%d', bbp_get_pending_status_id(), $topic_id );
+			}
+
 		// Not a forum or topic
 		} else {
 			return;
@@ -1651,6 +1692,10 @@
 		// Add topic slug to URL
 		if ( bbp_is_single_topic() ) {
 			$redirect_to  = trailingslashit( $redirect_to . $this->topic_slug . '/' . $slug );
+
+			if ( bbp_get_pending_status_id() === get_post_status( $topic_id ) ) {
+				$redirect_to = bbp_add_view_all( $redirect_to, true );
+			}
 		}
 
 		bp_core_redirect( $redirect_to );
