diff --git a/Dockerfile b/Dockerfile
index c1fd64a044d59bc986ea393bdc688b24019c85ed..bb94e9aaf19ca45ac1133e98eb98986c4410e42e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -31,8 +31,11 @@ ARG KEY_CLOAK_ISSUER
 ARG NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI
 ARG NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY
 ARG NEXTAUTH_URL
-ARG NEXTAUTH_URL_INTERNAL
 ARG NEXT_PUBLIC_CORDRA_HANDLE
+ARG NEXT_PUBLIC_SHOWCASE_LEFT_PID
+ARG NEXT_PUBLIC_SHOWCASE_LEFT_MDPID
+ARG NEXT_PUBLIC_SHOWCASE_RIGHT_PID
+ARG NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID
 
 ENV KEY_CLOAK_ISSUER=${KEY_CLOAK_ISSUER}
 ENV KEY_CLOAK_CLIENT_SECRET=${KEY_CLOAK_CLIENT_SECRET}
@@ -42,8 +45,11 @@ ENV NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY=${NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOA
 ENV NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI=${NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI}
 ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-"https://manager.testbed.pid.gwdg.de/api/v1"}
 ENV NEXTAUTH_URL=${NEXTAUTH_URL}
-ENV NEXTAUTH_URL_INTERNAL=${NEXTAUTH_URL_INTERNAL}
 ENV NEXT_PUBLIC_CORDRA_HANDLE=${NEXT_PUBLIC_CORDRA_HANDLE}
+ENV NEXT_PUBLIC_SHOWCASE_LEFT_PID=${NEXT_PUBLIC_SHOWCASE_LEFT_PID}
+ENV NEXT_PUBLIC_SHOWCASE_RIGHT_PID=${NEXT_PUBLIC_SHOWCASE_RIGHT_PID}
+ENV NEXT_PUBLIC_SHOWCASE_LEFT_MDPID=${NEXT_PUBLIC_SHOWCASE_LEFT_MDPID}
+ENV NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID=${NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID}
 
 RUN npm run build
 
@@ -66,6 +72,5 @@ ENV KEY_CLOAK_ISSUER=${KEY_CLOAK_ISSUER}
 ENV KEY_CLOAK_CLIENT_SECRET=${KEY_CLOAK_CLIENT_SECRET}
 ENV KEY_CLOAK_CLIENT_ID=${KEY_CLOAK_CLIENT_ID}
 ENV NEXTAUTH_URL=${NEXTAUTH_URL}
-ENV NEXTAUTH_URL_INTERNAL=${NEXTAUTH_URL_INTERNAL}
 
 CMD ["node", "server.js"]
diff --git a/next.config.js b/next.config.js
index 9450e3b7a8c59e8cc5655e5be200fea714d347fc..b6232b53dec6760ac1f0b0546ac7146bfd750258 100644
--- a/next.config.js
+++ b/next.config.js
@@ -10,7 +10,6 @@ module.exports = {
     KEY_CLOAK_CLIENT_ID: process.env.KEY_CLOAK_CLIENT_ID,
     PORT: process.env.PORT,
     NEXTAUTH_URL: process.env.NEXTAUTH_URL,
-    NEXTAUTH_URL_INTERNAL: process.env.NEXTAUTH_URL_INTERNAL,
   },
   eslint: {
     ignoreDuringBuilds: true,
diff --git a/pages/_app.tsx b/pages/_app.tsx
index edfa562956014208d84cec29893253651d5283d1..95ccab9ac156c1148daa609b5fa2cbf0d1b71e2a 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -1,4 +1,4 @@
-import { AuthBindings, Refine } from '@refinedev/core'
+import { AuthProvider, Refine } from '@refinedev/core'
 import { RefineKbar, RefineKbarProvider } from '@refinedev/kbar'
 import {
   RefineSnackbarProvider,
@@ -42,7 +42,7 @@ type AppPropsWithLayout = AppProps & {
 const App = (props: React.PropsWithChildren) => {
   const { t, i18n } = useTranslation()
 
-  const { data, status } = useSession()
+  const { data, status, error } = useSession()
   const to = usePathname()
 
   const i18nProvider = {
@@ -55,38 +55,29 @@ const App = (props: React.PropsWithChildren) => {
     return <span>loading...</span>
   }
 
-  const authProvider: AuthBindings = {
+  const authProvider: AuthProvider = {
     login: async () => {
-      // console.log('login')
-      signIn('keycloak', {
-        callbackUrl: to ? to.toString() : '/fdo',
-        redirect: true
-      })
+      await signIn('keycloak')
 
       return {
         success: true
       }
     },
     logout: async () => {
-      // console.log('logout')
-      signOut({
-        redirect: true,
-        callbackUrl: '/fdo'
-      })
+      signOut()
 
       return {
-        success: true
+        success: true,
       }
     },
     onError: async (error) => {
-      // console.log('onError')
-      console.error(error)
+      // console.error("onError", error)
       return {
         error
       }
     },
     check: async () => {
-      // console.log('check')
+      // console.log("check", data, error, status)
       if (status === 'unauthenticated') {
         return {
           authenticated: false,
@@ -94,17 +85,32 @@ const App = (props: React.PropsWithChildren) => {
         }
       }
 
+      if(data?.error) {
+        return {
+          error: error,
+          authenticated: false,
+          redirectTo: '/login'
+        }
+      }
+
       return {
         authenticated: true
       }
     },
     getPermissions: async () => {
-      // console.log('getPermissions')
       return null
     },
     getIdentity: async () => {
-      // console.log('getIdentity', data)
-      if (data?.user) {
+      // console.log("getIdentity", data, error, status);
+      if(data?.error) {
+        return {
+          error: error,
+          authenticated: false,
+          redirectTo: '/login'
+        }
+      }
+
+      if (data?.user && status === "authenticated") {
         const { user } = data
         return {
           name: user.name,
@@ -211,7 +217,6 @@ function MyApp ({
 
   return (
     <SessionProvider session={session}
-            refetchInterval={10}
             refetchOnWindowFocus={true}
     >
       <App>{renderComponent()}</App>
diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts
index 02a71c91783538a40d8a17d09ac7a0dc26f4a609..b5cb5b65f1fbf45f47d7bce655181507acaf089d 100644
--- a/pages/api/auth/[...nextauth].ts
+++ b/pages/api/auth/[...nextauth].ts
@@ -10,10 +10,10 @@ async function refreshAccessToken (token: any) {
   try {
     const url = issuer + '/protocol/openid-connect/token'
     const params = new URLSearchParams({
-      client_id: clientId,
-      client_secret: clientSecret,
+      client_id: clientId!,
+      client_secret: clientSecret!,
       grant_type: 'refresh_token',
-      refresh_token: token.refreshToken
+      refresh_token: token.refresh_token!,
     }).toString()
 
     const response = await fetch(url, {
@@ -24,26 +24,29 @@ async function refreshAccessToken (token: any) {
       body: params
     })
 
-    const refreshedTokens = await response.json()
+    const new_tokens = await response.json()
 
     if (!response.ok) {
-      throw refreshedTokens
+      throw new_tokens
     }
-    console.log('### refreshToken', new Date().toISOString(), refreshedTokens, '### ### ###')
+    // console.log('### new_tokens', new Date().toISOString(), new_tokens, '### ### ###')
 
     return {
       ...token,
-      accessToken: refreshedTokens.access_token,
-      accessTokenExpires: Date.now() + refreshedTokens.expires_in * 1000,
-      refreshToken: refreshedTokens.refresh_token ?? token.refreshToken // Fall back to old refresh token
+      access_token: new_tokens.access_token,
+      expires_at: Math.floor(Date.now()/1000 + new_tokens.expires_in),
+      refresh_token: new_tokens.refresh_token ?? token.refresh_token // Fall back to old refresh token
     }
   } catch (error) {
-    console.log('### RefreshAccessTokenError', error, '### ### ###')
+    // console.log('### RefreshAccessTokenError', error, '### ### ###')
+    throw new Error("RefreshTokenError")
 
+    /*
     return {
       ...token,
       error: 'RefreshAccessTokenError'
     }
+    */
   }
 }
 
@@ -52,7 +55,6 @@ export const authOptions = {
   session: {
     maxAge: 172800 // 48h
   },
-  debug: true,
   // Configure one or more authentication providers
   providers: [
     // !!! Should be stored in .env file.
@@ -62,7 +64,7 @@ export const authOptions = {
       issuer,
       // authorization: { params: { scope: 'openid profile email' } },
       profile (profile) {
-        console.log('### profile', profile, '### ### ###')
+        // console.log('### profile', profile, '### ### ###')
         return {
           id: profile.sub,
           name: profile.name ?? profile.preferred_username
@@ -72,43 +74,44 @@ export const authOptions = {
   ],
   callbacks: {
     async signIn ({ user, account, profile, email, credentials }: any) {
-      console.log('### signIn', user, account, profile, email, credentials, '### ### ###')
+      // console.log('### signIn', user, account, profile, email, credentials, '### ### ###')
       return true
     },
     async session ({ session, user, token }: any) {
-      console.log('### session', session, user, token, '### ### ###')
+      // console.log('### session', session, user, token, '### ### ###')
 
       session.user = token.user
-      session.accessToken = token.accessToken
+      session.access_token = token.access_token
       session.error = token.error
 
       return session
     },
+    /*
     async redirect ({ url, baseUrl }: any) {
-      console.log('### redirect', url, baseUrl, '### ### ###')
-      return Promise.resolve(url)
+      // console.log('### redirect', url, baseUrl, '### ### ###')
+      return baseUrl
+      //Promise.resolve(url)
     },
+    */
     async jwt ({ token, user, account, profile, isNewUser }: any) {
-      console.log('### jwt', token, user, account, profile, isNewUser, '### ### ###')
+      // console.log('### jwt', token, user, account, profile, isNewUser, '### ### ###')
 
       // Initial sign in
       if (account && user) {
         return {
-          lastRefresh: Date.now(),
-          accessToken: account.access_token,
-          accessTokenExpires: account.expires_at,
-          refreshToken: account.refresh_token,
+          access_token: account.access_token,
+          expires_at: account.expires_at,
+          refresh_token: account.refresh_token,
           user
         }
-      }
-
-      if (token.lastRefresh + 60000 > Date.now()) {
-        // return if last refresh is 10 seconds or younger
+      } else if (Date.now() < token.expires_at * 1000) {
         return token
-      }
+      } else {
+        if (!token.refresh_token) throw new TypeError("Missing refresh_token")
 
-      // Access token has expired, try to update it
-      return refreshAccessToken(token)
+        // Access token has expired, try to update it
+        return refreshAccessToken(token)
+      }
     }
   },
   secret: secretSessionKey
diff --git a/pages/fdo/show/[prefix]/[suffix].tsx b/pages/fdo/show/[prefix]/[suffix].tsx
index 47add0b786319564ecb56b60e524d4db9e9fa6ce..dbcbaef6b442c10210bc02015f0435e087665927 100644
--- a/pages/fdo/show/[prefix]/[suffix].tsx
+++ b/pages/fdo/show/[prefix]/[suffix].tsx
@@ -5,11 +5,8 @@ import { GetServerSideProps } from 'next'
 import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
 import { useTranslate, useParsed, useCustom, useApiUrl } from '@refinedev/core'
 import { Show } from '@refinedev/mui'
-import { Typography } from '@mui/material'
+import Typography from '@mui/material/Typography'
 import CircularProgress from '@mui/material/CircularProgress'
-import AssignmentIcon from '@mui/icons-material/Assignment'
-import Avatar from '@mui/material/Avatar'
-import { blue } from '@mui/material/colors'
 import Box from '@mui/material/Box'
 import Stack from '@mui/material/Stack'
 import Chip from '@mui/material/Chip'
@@ -22,15 +19,11 @@ import MenuList from '@mui/material/MenuList'
 import MenuItem from '@mui/material/MenuItem'
 import ListItemText from '@mui/material/ListItemText'
 import ListItemIcon from '@mui/material/ListItemIcon'
-import ContentPaste from '@mui/icons-material/ContentPaste'
-import Cloud from '@mui/icons-material/Cloud'
 import VerifiedIcon from '@mui/icons-material/Verified'
 import ReportIcon from '@mui/icons-material/Report'
-import { JsonView, darkStyles, defaultStyles } from 'react-json-view-lite';
-import { styled, ThemeProvider } from '@mui/material/styles'
-import Details from '../../../../src/components/fdos/details'
-import { FDO_COMMUNITY_TYPE_EVEBS as EVEBS, FDO_COMMUNITY_MD_PROFILE_EDC as EDC, FDO_COMMUNITY_MD_PROFILE_AAS as AAS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI, HANDLE_SYSTEM_DOWNLOAD_PROXY as HS_PROXY, CORDRA_HANDLE as CORDRA } from '../../../../src/constants'
-import 'react-json-view-lite/dist/index.css';
+import { styled } from '@mui/material/styles'
+import EvebsDetails from '@components/Evebs'
+import { FDO_COMMUNITY_TYPE_EVEBS as EVEBS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI } from '../../../../src/constants'
 
 const resolvePid = (pid: string) => `${HS_BASE_URI}/${pid}`
 
@@ -54,90 +47,6 @@ const getFdoDetails = (data: object) => {
   return fdoDetails
 }
 
-interface IJsonMetadata {
-  metadata: object
-}
-
-interface IEvebsDetails {
-  metadataJson: IJsonMetadata
-  dataspace: string
-  dataspaceIcon: string
-  technology: string
-  technologyIcon: string
-}
-
-const getEvebsDetails = (typePid, repository, metadataRecord) => {
-  console.log(metadataRecord);
-  const row = (category: string, classification: string, logo: string) => {
-    return { category, classification, logo }
-  }
-  const techInfo = metadataRecord.fdoProfile === AAS ? "BaSyx AAS" : "EDC";
-  const techLogo = metadataRecord.fdoProfile === AAS ? "/images/aas.png" : "/images/eclipse-logo.png";
-  const dataspaceInfo = metadataRecord.fdoProfile === AAS ? "RWTH" : "MDS";
-  const dataspaceLogo = metadataRecord.fdoProfile === AAS ? "/images/rwth.png" : "/images/mds.png";
-
-  return [
-    row('Type', <Link href={resolvePid(typePid)}>{ "EVEBS-FDO" }</Link>, ''),
-    row('Repository', <Link href="#">{repository}</Link>,
-        repository == CORDRA ? "/images/cordra-primary-blue.png" : "/images/la_logo.png"),
-
-    row('Dataspace', dataspaceInfo, dataspaceLogo),
-    row('Technology', techInfo, techLogo),
-  ]
-}
-
-const EvebsDetails = ({pid, typePid, repository, metadataPid}) => {
-  const apiUrl = useApiUrl()
-  const t = useTranslate()
-  const { data, isLoading, isError, error } = useCustom({
-    url: `${HS_PROXY}/${metadataPid}?locatt=payloadIndex:0`,
-    method: 'get',
-    errorNotification: () => false,
-    queryOptions: {
-      retry: false
-    }
-  })
-  const metadataRecord = useCustom({
-    url: `${apiUrl}/fdo/${metadataPid}`,
-    method: 'get',
-    errorNotification: () => false,
-    queryOptions: {
-      retry: false
-    }
-  });
-
-  const metadata = data?.data;
-  var description = undefined
-  var displayName = metadata?.displayName
-  if(displayName) {
-    displayName = displayName[0].text
-  }
-  if(isError) {
-    displayName = pid
-  } else if(metadata?.description) {
-    description = metadata?.description[0].text
-  }
-
-  console.log(isLoading, data, repository, typePid, metadata);
-  return isLoading || metadataRecord.isLoading ? <Item>loading json</Item> : (
-    <>
-      <Item sx={{ width: '50%' }} >
-        <Typography variant="h5" gutterBottom> {displayName || metadata.idShort || metadata.id} </Typography> <Typography variant="subtitle1" gutterBottom > {metadata?.description[0].text} </Typography>
-        <Box>
-        <Details rows={getEvebsDetails(typePid, repository, metadataRecord.data.data)}></Details>
-        </Box>
-      </Item>
-      { metadata &&
-        <Item>
-          <Box>
-            <Typography variant="h6" gutterBottom>Metadata (JSON)</Typography>
-            <JsonView data={metadata} shouldExpandNode={lvl => lvl<3} style={defaultStyles} />
-          </Box>
-        </Item>
-      }
-    </>
-  )
-}
 
 const Item = styled(Paper)(({ theme }) => ({
   backgroundColor: '#fff',
@@ -257,7 +166,7 @@ const ShowFDO = () => {
             </MenuList>
           </Item>
 
-          { isEvebs && <EvebsDetails {...fdoDetails}/> }
+          { isEvebs && <EvebsDetails {...fdoDetails} showJson={true}/> }
         </Stack>
       </div><br/><br/>
     </Show>
diff --git a/pages/login/index.tsx b/pages/login/index.tsx
index 775128b1948fbff0e6c9981d659c4602892fee2e..606a795ccc659e80becdd744944a6f7531a9f77d 100644
--- a/pages/login/index.tsx
+++ b/pages/login/index.tsx
@@ -74,11 +74,16 @@ export const getServerSideProps: GetServerSideProps<{}> = async (context) => {
     'common'
   ])
 
+  // console.log("login", context, session);
+  const destination = context?.query?.to
+
   if (session) {
     return {
-      props: {},
+      props: {
+        ...translateProps
+      },
       redirect: {
-        destination: '/',
+        destination: destination || '/',
         permanent: false
       }
     }
diff --git a/src/components/ContentArea.tsx b/src/components/ContentArea.tsx
index e080c8dfb42d0b04edf2a6e23fc0d0d1c2e18bf9..a68f625553f4ea2dc2644fa1b69e9b07d482c89e 100644
--- a/src/components/ContentArea.tsx
+++ b/src/components/ContentArea.tsx
@@ -10,6 +10,9 @@ import Divider from '@mui/material/Divider'
 import Button from '@mui/material/Button'
 import FDOImage from '@components/FDOImage'
 import Stack from '@mui/material/Stack'
+import Evebs from '@components/Evebs'
+import Link from '@mui/material/Link'
+import { FDO_COMMUNITY_MD_PROFILE_AAS as AAS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI, HANDLE_SYSTEM_DOWNLOAD_PROXY as HS_PROXY, CORDRA_HANDLE as CORDRA, FDO_COMMUNITY_TYPE_EVEBS as EVEBS } from '../constants'
 
 const Item = styled(Paper)(({ theme }) => ({
   backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
@@ -20,6 +23,10 @@ const Item = styled(Paper)(({ theme }) => ({
 }))
 
 export default function RowAndColumnSpacing () {
+  const leftShowCase = process.env.NEXT_PUBLIC_SHOWCASE_LEFT_PID
+  const leftShowCaseMD = process.env.NEXT_PUBLIC_SHOWCASE_LEFT_MDPID
+  const rightShowCase = process.env.NEXT_PUBLIC_SHOWCASE_RIGHT_PID
+  const rightShowCaseMD = process.env.NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID
   return (
     <Box alignItems="center">
       <Grid container spacing={2} columns={10} justifyContent="center" alignItems="center" marginTop={2}>
@@ -34,43 +41,30 @@ export default function RowAndColumnSpacing () {
               </Stack>
           </Item>
         </Grid>
-        { /*
-        <Grid item xs={6}>
-        <Item>
-          <Typography variant="body1" gutterBottom>
-              The FDO Manager allows you to browse FDOs, create FDOs and much more and is
-              part of the <a href="https://fdo-one.org/">FDO One project</a>.
-              <br/>
-              One key feature of FDOs is that they
-              are identified via a persistent identifier (PID).
-              <br/>
-              <br/>
-              You are interested to look at a specific FDO? Just enter the PID below!
-            </Typography><br/>
-              <br/><br/>
-               <Divider /><br/><br/>
-               <Typography variant="body1" gutterBottom>
-                Or just start from the overview of the FDO Manager by clicking here:
-              </Typography><br/>
-            <Typography variant="button" display="block" gutterBottom fontSize={19}>
-              Enter FDO Manager
-            </Typography>
-          </Item>
-        </Grid>
-        <Grid item xs={6}>
-        </Grid>
-        */ }
+
       </Grid>
 
-      {/*
+      { (leftShowCase || rightShowCase) &&
       <Grid container spacing={2} columns={20} justifyContent="center" alignItems="center" marginTop={2}>
         <Grid item xs={6}>
-        </Grid>
-        <Grid item xs={6}>
-          <Item><Content/></Item>
-        </Grid>
-      </Grid>
-      */}
+            { leftShowCase &&
+              <Evebs typePid={EVEBS}
+                     metadataPid={leftShowCaseMD}
+                     title="Showcase: An Asset Adminstration Shell(AAS) FDO"
+                     subtitle={<Link href={"/fdo/show/" + leftShowCase}>Show {leftShowCase}</Link>} />
+            }
+         </Grid>
+         <Grid item xs={6}>
+            { rightShowCase &&
+              <Evebs typePid={EVEBS}
+                     metadataPid={rightShowCaseMD}
+                     title="Showcase: An FDO hosted in an Eclipse Dataspace Components (EDC) Dataspace"
+                     subtitle={<Link href={"/fdo/show/" + rightShowCase}>Show {rightShowCase}</Link>} />
+            }
+         </Grid>
+       </Grid>
+       }
+
     </Box>
   )
 }
diff --git a/src/components/Evebs.jsx b/src/components/Evebs.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..5fcb1e7f3161ac9a5d666ef25ac5875a8e3fa660
--- /dev/null
+++ b/src/components/Evebs.jsx
@@ -0,0 +1,106 @@
+import React from 'react'
+import { useTranslate, useCustom, useApiUrl } from '@refinedev/core'
+import CircularProgress from '@mui/material/CircularProgress'
+import Box from '@mui/material/Box'
+import Link from '@mui/material/Link'
+import Paper from '@mui/material/Paper'
+import Typography from '@mui/material/Typography'
+import { FDO_COMMUNITY_MD_PROFILE_AAS as AAS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI, HANDLE_SYSTEM_DOWNLOAD_PROXY as HS_PROXY, CORDRA_HANDLE as CORDRA } from '../constants'
+import { JsonView, darkStyles, defaultStyles } from 'react-json-view-lite';
+import { styled } from '@mui/material/styles'
+import 'react-json-view-lite/dist/index.css';
+
+import Details from '@components/fdos/details'
+
+const resolvePid = (pid) => `${HS_BASE_URI}/${pid}`
+
+const Item = styled(Paper)(({ theme }) => ({
+  backgroundColor: '#fff',
+  ...theme.typography.body2,
+  padding: theme.spacing(1),
+  textAlign: 'left',
+  color: theme.palette.text.secondary,
+  ...theme.applyStyles('dark', {
+    backgroundColor: '#1A2027'
+  })
+}))
+
+const getEvebsDetails = (typePid, repository, metadataRecord) => {
+  const row = (category, classification, logo) => {
+    return { category, classification, logo }
+  }
+  const techInfo = metadataRecord.fdoProfile === AAS ? "BaSyx AAS" : "EDC";
+  const techLogo = metadataRecord.fdoProfile === AAS ? "/images/aas.png" : "/images/eclipse-logo.png";
+  const dataspaceInfo = metadataRecord.fdoProfile === AAS ? "RWTH" : "MDS";
+  const dataspaceLogo = metadataRecord.fdoProfile === AAS ? "/images/rwth.png" : "/images/mds.png";
+
+  const details = [
+    row('Type', <Link href={resolvePid(typePid)}>{ "EVEBS-FDO" }</Link>, '')
+  ]
+  if(repository) {
+    details.push(row('Repository', repository,
+        repository == CORDRA ? "/images/cordra-primary-blue.png" : "/images/la_logo.png"))
+  }
+  details.push(row('Dataspace', dataspaceInfo, dataspaceLogo))
+  details.push(row('Technology', techInfo, techLogo))
+  return details
+}
+
+const EvebsDetails = ({pid, typePid, repository, metadataPid, title, showJson, subtitle}) => {
+  const apiUrl = useApiUrl()
+  const t = useTranslate()
+  const { data, isLoading, isError, error } = useCustom({
+    url: `${HS_PROXY}/${metadataPid}?locatt=payloadIndex:0`,
+    method: 'get',
+    errorNotification: () => false,
+    queryOptions: {
+      retry: false
+    }
+  })
+  const metadataRecord = useCustom({
+    url: `${apiUrl}/fdo/${metadataPid}`,
+    method: 'get',
+    errorNotification: () => false,
+    queryOptions: {
+      retry: false
+    }
+  });
+
+  const metadata = data?.data;
+  var description = undefined
+  var displayName = metadata?.displayName
+  if(displayName && displayName[0]) {
+    displayName = displayName[0].text
+  }
+  if(isError) {
+    displayName = pid
+  } else if(metadata?.description && metadata?.description[0]) {
+    description = metadata?.description[0].text
+  }
+
+  if (metadataRecord.isError) {
+    return <Item>Error</Item>
+  }
+
+  return isLoading || metadataRecord.isLoading ? <Item><CircularProgress/></Item> : (
+    <>
+      <Item>
+        <Typography variant="h5" gutterBottom>{title || displayName || metadata?.idShort || metadata?.id}</Typography>
+        <Typography variant="subtitle1" gutterBottom>{subtitle || description}</Typography>
+        <Box>
+        <Details rows={getEvebsDetails(typePid, repository, metadataRecord.data.data)}></Details>
+        </Box>
+      </Item>
+      { metadata && showJson &&
+        <Item>
+          <Box>
+            <Typography variant="h6" gutterBottom>Metadata (JSON)</Typography>
+            <JsonView data={metadata} shouldExpandNode={lvl => lvl<3} style={defaultStyles} />
+          </Box>
+        </Item>
+      }
+    </>
+  )
+}
+
+export default EvebsDetails
diff --git a/src/components/fdos/create.tsx b/src/components/fdos/create.tsx
index 470b37a838632af810c445b61a93c1d017046c93..e9935bc00a4f6e17623882de1792f4f9debd7cfd 100644
--- a/src/components/fdos/create.tsx
+++ b/src/components/fdos/create.tsx
@@ -160,11 +160,21 @@ const StepData: React.FC<any> = ({ register, errors }) => {
   return <FileUpload register={register} errors={errors} name="fdo_data" label="Upload data file"/>
 }
 
+const showNewFdo = (go, pid) => {
+    const prefix = pid.split('/', 1)[0]
+    const suffix = pid.substring(prefix.length + 1)
+    setTimeout(() => go({ to: { resource: 'fdo', action: 'show', id: pid, meta: { prefix, suffix } }, type: 'replace' }), 300);
+}
+
 export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   const go = useGo()
   const accessToken = useAccessToken()
 
-  const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: { headers: { Authentication: `Bearer ${accessToken}` } } } })
+  const meta = {
+    headers: { Authentication: `Bearer ${accessToken}` }
+  }
+
+  const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: meta } })
   const {
     setError,
     saveButtonProps,
@@ -180,9 +190,7 @@ export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   } = formRet
 
   if (data?.data?.pid) {
-    const prefix = data?.data?.pid?.split('/', 1)[0]
-    const suffix = data?.data?.pid?.substring(prefix.length + 1)
-    go({ to: { resource: 'fdo', action: 'show', id: data?.data?.pid, meta: { prefix, suffix } }, type: 'push' })
+    showNewFdo(go, data.data.pid)
   }
 
   const onSubmit = (data: any) => {
diff --git a/src/components/header/UserComponent.tsx b/src/components/header/UserComponent.tsx
index d92365c1573fcffb6c98a8f18bc68aeeef812444..9f2ac3506b1a7dd32cc1786110c789475eb5be26 100644
--- a/src/components/header/UserComponent.tsx
+++ b/src/components/header/UserComponent.tsx
@@ -1,4 +1,4 @@
-import * as React from 'react'
+import React, { useContext } from 'react'
 import Button from '@mui/material/Button'
 import Menu from '@mui/material/Menu'
 import MenuItem from '@mui/material/MenuItem'
@@ -6,6 +6,7 @@ import Stack from '@mui/material/Stack'
 import Typography from '@mui/material/Typography'
 import Avatar from '@mui/material/Avatar'
 import { useGetIdentity, useLogout, useLogin, useTranslate } from '@refinedev/core'
+import { ColorModeContext } from "@contexts"
 
 interface IUser {
   name: string
@@ -28,6 +29,7 @@ const Login = () => {
 }
 
 const UserMenu = ({ user }: any) => {
+  const { mode } = useContext(ColorModeContext);
   const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)
   const open = Boolean(anchorEl)
   const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
@@ -63,6 +65,7 @@ const UserMenu = ({ user }: any) => {
                       }
                     }}
                     variant="subtitle2"
+                    color={mode === "light" && "white" }
                   >
                     {user?.name}
                   </Typography>
@@ -88,7 +91,8 @@ const UserMenu = ({ user }: any) => {
 }
 
 export default function UserComponent () {
-  const { data: user } = useGetIdentity<IUser>()
+  const { data, isError, error } = useGetIdentity<IUser>();
+  // console.log("UserComponent", data, isError, error);
 
-  return (user?.name ? <UserMenu user={user}/> : <Login/>)
+  return (!isError && data?.name ? <UserMenu user={data}/> : <Login/>)
 }
diff --git a/src/providers/dataProvider.tsx b/src/providers/dataProvider.tsx
index 10d87ca601378b2f146b00a3f3446ecf48a68bb9..d657713626839069d0d7ab0e22f74da87f374043 100644
--- a/src/providers/dataProvider.tsx
+++ b/src/providers/dataProvider.tsx
@@ -5,7 +5,6 @@ import axios from 'axios'
 
 const getNewlyCreated = async (newLocation: string) => {
   const response = await axios.get(newLocation)
-  console.log(response);
   if (response.data.data) {
     return response.data.data;
   }
diff --git a/src/utils.tsx b/src/utils.tsx
index edc9cb2f2d145ccb3f2642b9e7159028b24d6dc9..7d97f91fa9a0a00ecdc430d7a8d58daa1aff1294 100644
--- a/src/utils.tsx
+++ b/src/utils.tsx
@@ -16,19 +16,10 @@ export const useAccessToken: any = () => {
 
   const data = identity?.data?.data
 
-  if (data?.accessToken == null) {
-    return null
-  }
-
   if (data?.error) {
     doLogout(logout, open)
     return null
   }
 
-  if (data?.accessTokenExpires) {
-    doLogout(logout, open)
-    return null
-  }
-
-  return data?.accessToken
+  return data?.access_token
 }