diff --git a/src/client/components/main_layout/TopBar.js b/src/client/components/main_layout/TopBar.js
index d264c32f117e6fbd45956ceb1c930807f17c8a95..cd78265a9eef338c9dd3d3cbdd60f22bb7fac15d 100644
--- a/src/client/components/main_layout/TopBar.js
+++ b/src/client/components/main_layout/TopBar.js
@@ -11,6 +11,7 @@ import MoreIcon from '@material-ui/icons/MoreVert';
 import Button from '@material-ui/core/Button';
 import { Link, NavLink } from 'react-router-dom';
 import TopBarSearchField from './TopBarSearchField';
+import { has } from 'lodash';
 
 const styles = theme => ({
   root: {
@@ -28,6 +29,9 @@ const styles = theme => ({
       display: 'flex',
     },
   },
+  link: {
+    textDecoration: 'none'
+  },
   sectionMobile: {
     display: 'flex',
     [theme.breakpoints.up('md')]: {
@@ -66,43 +70,89 @@ class TopBar extends React.Component {
     this.setState({ mobileMoreAnchorEl: null });
   };
 
-  render() {
-    const { mobileMoreAnchorEl } = this.state;
-    const { classes } = this.props;
-    const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);
-    // https://material-ui.com/components/buttons/#third-party-routing-library
-    const AdapterLink = React.forwardRef((props, ref) => <Link innerRef={ref} {...props} />);
-    const AdapterNavLink = React.forwardRef((props, ref) => <NavLink innerRef={ref} {...props} />);
+  // https://material-ui.com/components/buttons/#third-party-routing-library
+  AdapterLink = React.forwardRef((props, ref) => <Link innerRef={ref} {...props} />);
+  AdapterNavLink = React.forwardRef((props, ref) => <NavLink innerRef={ref} {...props} />);
 
-    const perspectives = [ 'manuscripts', 'works', 'events', 'actors', 'places' ];
+  renderMobileMenuItem = perspective => {
+    if (has(perspective, 'externalUrl')) {
+      return(
+        <a className={this.props.classes.link}
+          key={perspective.id}
+          href={perspective.externalUrl}
+          target='_blank'
+          rel='noopener noreferrer'
+        >
+          <MenuItem>
+            {perspective.label.toUpperCase()}
+          </MenuItem>
+        </a>
+      );
+    } else {
+      return(
+        <MenuItem
+          key={perspective.id}
+          component={this.AdapterLink}
+          to={`/${perspective.id}/faceted-search`}
+        >
+          {perspective.label.toUpperCase()}
+        </MenuItem>
+      );
+    }
+  }
 
-    const renderMobileMenu = (
-      <Menu
-        anchorEl={mobileMoreAnchorEl}
-        anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
-        transformOrigin={{ vertical: 'top', horizontal: 'right' }}
-        open={isMobileMenuOpen}
-        onClose={this.handleMobileMenuClose}
-      >
-        {perspectives.map(perspective =>
-          <MenuItem
-            key={perspective}
-            component={AdapterLink}
-            to={`/${perspective}/faceted-search`}
+  renderDesktopTopMenuItem = perspective => {
+    if (has(perspective, 'externalUrl')) {
+      return(
+        <a className={this.props.classes.link}
+          key={perspective.id}
+          href={perspective.externalUrl}
+          target='_blank'
+          rel='noopener noreferrer'
+        >
+          <Button
+            className={this.props.classes.appBarButton}
           >
-            {perspective.toUpperCase()}
-          </MenuItem>
-        )}
-      </Menu>
-    );
+            {perspective.label}
+          </Button>
+        </a>
+      );
+    } else {
+      return(
+        <Button
+          key={perspective.id}
+          className={this.props.classes.appBarButton}
+          component={this.AdapterNavLink}
+          to={`/${perspective.id}/faceted-search`}
+          isActive={(match, location) => location.pathname.startsWith(`/${perspective.id}`)}
+          activeClassName={this.props.classes.appBarButtonActive}
+        >
+          {perspective.label}
+        </Button>
+      );
+    }
+  }
 
+  renderMobileMenu = perspectives =>
+    <Menu
+      anchorEl={this.state.mobileMoreAnchorEl}
+      anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
+      transformOrigin={{ vertical: 'top', horizontal: 'right' }}
+      open={Boolean(this.state.mobileMoreAnchorEl)}
+      onClose={this.handleMobileMenuClose}
+    >
+      {perspectives.map(perspective => this.renderMobileMenuItem(perspective))}
+    </Menu>
+
+  render() {
+    const { classes, perspectives } = this.props;
     return (
       <div className={classes.root}>
         <AppBar position="absolute">
           <Toolbar>
             <Button
               className={classes.appBarButton}
-              component={AdapterLink}
+              component={this.AdapterLink}
               to='/'
             >
               <Typography className={classes.title} variant="h6" color="inherit">
@@ -115,18 +165,7 @@ class TopBar extends React.Component {
             />
             <div className={classes.grow} />
             <div className={classes.sectionDesktop}>
-              {perspectives.map(perspective =>
-                <Button
-                  key={perspective}
-                  className={classes.appBarButton}
-                  component={AdapterNavLink}
-                  to={`/${perspective}/faceted-search`}
-                  isActive={(match, location) => location.pathname.startsWith(`/${perspective}`)}
-                  activeClassName={classes.appBarButtonActive}
-                >
-                  {perspective}
-                </Button>
-              )}
+              {perspectives.map(perspective => this.renderDesktopTopMenuItem(perspective))}
               {/* <Button className={classes.appBarButton} aria-haspopup="true" onClick={this.handleInfoMenuOpen}>
                 <span>Info</span>
               </Button> */}
@@ -138,7 +177,7 @@ class TopBar extends React.Component {
             </div>
           </Toolbar>
         </AppBar>
-        {renderMobileMenu}
+        {this.renderMobileMenu(perspectives)}
       </div>
     );
   }
@@ -148,6 +187,7 @@ TopBar.propTypes = {
   classes: PropTypes.object.isRequired,
   fetchResultsClientSide: PropTypes.func.isRequired,
   clearResults: PropTypes.func.isRequired,
+  perspectives: PropTypes.array.isRequired
 };
 
 export default withStyles(styles)(TopBar);
diff --git a/src/client/components/perspectives/PerspectiveArray.js b/src/client/components/perspectives/PerspectiveArray.js
index 2c23b597c73b8834470e5d1a2ceafff573d2376e..f187e945465867f9b563f1bb945e81918438fe9e 100644
--- a/src/client/components/perspectives/PerspectiveArray.js
+++ b/src/client/components/perspectives/PerspectiveArray.js
@@ -3,6 +3,7 @@ export const perspectiveArr = [
     id: 'manuscripts',
     label: 'Manuscripts',
     desc: 'Physical manuscript objects.',
+    externalUrl: 'https://seco.cs.aalto.fi/',
     tabs: [
       {
         id: 'table',
diff --git a/src/client/containers/SemanticPortal.js b/src/client/containers/SemanticPortal.js
index aa9e143bd448db54d75e7d21d4b5868251298fa1..749a1adee8249471e39fb0d2dd897458a5060000 100644
--- a/src/client/containers/SemanticPortal.js
+++ b/src/client/containers/SemanticPortal.js
@@ -191,6 +191,7 @@ let SemanticPortal = (props) => {
             search={props.clientSideFacetedSearch}
             fetchResultsClientSide={props.fetchResultsClientSide}
             clearResults={props.clearResults}
+            perspectives={perspectiveArr}
           />
           <Grid container spacing={1} className={classes.mainContainer}>
             <Route