Summary:

Following an upgrade to v7.1 SP1, an error displayed on interactive dashboard:

The Dashboard has experienced a problem. Please contact your system administrator.

Browsing to the SDATA schema URL will result in a 404 error page being returned from the Tomcat web server.

The following error appears in the Catalina log:

INFO: Deploying web application archive crmj.war
Aug 7, 2013 6:22:40 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart

This indicated that the CRMJ webapp could not be started.

The following error is logged to the localhost.log:

SEVERE: Exception sending context initialized event to listener instance of class com.sage.scrm.context.SCRMApplicationListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sdataServiceMetaDataStore' defined in ServletContext resource [/WEB-INF/store.xml]: Invocation of init method failed; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
       at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
       at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
       at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
       at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
       at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
       at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
       at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
       at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
       at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
       at com.sage.scrm.context.SCRMApplicationListener.contextInitialized(SCRMApplicationListener.java:34)
       at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
       at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
       at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
       at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
       at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
       at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
       at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
       at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
       at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
       at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
       at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
       at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
       at org.apache.catalina.core.StandardService.start(StandardService.java:516)
       at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
       at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
       at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
       at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
       at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
       at org.hibernate.loader.Loader.doList(Loader.java:2231)
       at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
       at org.hibernate.loader.Loader.list(Loader.java:2120)
       at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
       at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
       at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
       at com.sage.scrm.model.BasicHelper.getListFromCriteria(BasicHelper.java:209)
       at com.sage.scrm.model.BasicHelper.getListFromCriteria(BasicHelper.java:175)
       at com.sage.scrm.model.metadata.SDataServiceMappingsHelper.getServiceMappings(SDataServiceMappingsHelper.java:159)
       at com.sage.scrm.model.metadata.SDataServiceMappingsHelper.load(SDataServiceMappingsHelper.java:93)
       at com.sage.scrm.model.metadata.SDataServiceMetaDataStore.load(SDataServiceMetaDataStore.java:95)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
       ... 36 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'sdsv_SchemaNameSpace'.
       at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
       at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
       at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)
       at net.sf.log4jdbc.PreparedStatementSpy.executeQuery(PreparedStatementSpy.java:717)
       at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
       at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
       at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
       at org.hibernate.loader.Loader.doQuery(Loader.java:697)
       at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
       at org.hibernate.loader.Loader.doList(Loader.java:2228)
       ... 53 more

The 404 returned by Tomcat is a "Resource not found" error - it doesn't necessarily mean that a webpage is unavailable, rather that some resource required in order to display the requested page is not available. In this case, a required column on a table does not exist, therefore the schema cannot be generated.

Workaround:

The issue was caused by an install error - the required column was never created on the database. Re-running the v7.1SP1 install over the top of the existing install resolved the issue.