It's all about the answers!

Ask a question

Changes don't take place on RRCS 2.0.0.1


Parviz Tafreshian (8311612) | asked Jun 16 '10, 3:49 a.m.
Hi, we have deployed RRCS 2.0.0.1 and RRCC 2.0.0.1 with DB2 version 9.5 and Apache Tomcat.
all of sudden changes cann't be written on the Server. Wenn we try to define a new artifact, we get the "new artifact window" and we can wtite the name of the artifact and where it should be saved. After pushing "next" it happens nothing. Just nothing, not even the name of Artifact is shown. No error from RRCC but following error we get from Apache Tomcat:

com.ibm.rdm.fronting.server.exception.UnexpectedResponseException: http/1.1 403 Forbidden

at com.ibm.rdm.fronting.server.services.uid.UIDServices.doGetUID<UIDService>
at com.ibm.rdm.fronting.server.services.uid.UIDServices.getUIDesource<UIDService>
at com.ibm.rdm.fronting.server.services.uid.UIDServices..getUidEntryFromCacheOrCreateIfNot<UIDService>
..


doese anyone had the same problem? can somebody help us?

regards
Parviz

7 answers



permanent link
Stef van Dijk (2.0k179) | answered Jun 16 '10, 10:29 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
Hi there. Sorry you're having difficulties.
Let's starting by seeing if there are any clues in the log files. You'll want to check the following:

On the client, check the .log file which should be in a location such as:
C:\Documents and Settings\{your Windows login id}\IBM\RequirementsComposer\workspace\.metadata

On the server, check the jazz.log and rdm.log which by default should be located the following directory:
C:\Program Files\IBM\RRCS2002\server\logs

permanent link
Stef van Dijk (2.0k179) | answered Jun 16 '10, 10:32 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
BTW, was this a clean/new install of 2.0.0.1 client and server or was this an upgrade/migration from a previous release? You mentioned "all of a sudden", so it sounds like something had been working before and just stopped working at some point?

permanent link
Parviz Tafreshian (8311612) | answered Jun 17 '10, 5:21 a.m.
it was a new install of 2.0.0.1. Yes it hast worked before. it stopped working all of sudden. I didn't check the .log file on the same day.
Wenn you send me your email, i will send you the both client and server .log files.
It startet on 05/27 not to work correctly.

This is written in .log file local on my machin:

!ENTRY com.ibm.rdm.requirement.ui 4 0 2010-06-17 11:23:10.031
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
at com.ibm.rdm.repository.client.cache.CachingScheme.primCreateResource(CachingScheme.java:188)
at com.ibm.rdm.repository.client.cache.CachingScheme.createResource(CachingScheme.java:164)
at com.ibm.rdm.repository.client.cache.CachingRRCRestClient$2.doCreate(CachingRRCRestClient.java:198)
at com.ibm.rdm.repository.client.cache.CachingRRCRestClient$2.doCreate(CachingRRCRestClient.java:1)
at com.ibm.rdm.repository.client.cache.CachingRRCRestClient.primCreate(CachingRRCRestClient.java:308)
at com.ibm.rdm.repository.client.cache.CachingRRCRestClient.createResource(CachingRRCRestClient.java:178)
at com.ibm.rdm.emf.resource.common.CommonURIHandlerImpl$1.close(CommonURIHandlerImpl.java:318)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:990)
at com.ibm.rdm.base.resource.BaseResourceImpl.save(BaseResourceImpl.java:62)
at com.ibm.rdm.requirement.util.RequirementHelper.saveResource(RequirementHelper.java:68)
at com.ibm.rdm.requirement.ui.util.RequirementUtil.saveResource(RequirementUtil.java:189)
at com.ibm.rdm.requirement.ui.wizards.NewRequirementWizard$2.run(NewRequirementWizard.java:133)
at com.ibm.rdm.requirement.ui.wizards.NewRequirementWizard.createDocument(NewRequirementWizard.java:157)
at com.ibm.rdm.ui.wizards.NewDocumentWizard$1.run(NewDocumentWizard.java:209)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)


an this stays in rmd.log on the server

2010-06-17 11:23:10,338 ERROR fronting.server.services.resources.ResourceService - Response: 500 Internal Server Error - for request: POST https://tmav0008:9443/rdm/resources HTTP/1.1; Originating error: Could not write UID (2); status on POST: 403: Forbidden
2010-06-17 11:23:10,338 ERROR fronting.server.services.resources.ResourceService - Response: 500 Internal Server Error - for request: POST https://tmav0008:9443/rdm/resources HTTP/1.1; Originating error: Could not write UID (2); status on POST: 403: Forbidden
2010-06-17 11:23:10,494 ERROR rdm.fronting.server.services.folders.FolderService - HTTP/1.1 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben
com.ibm.rdm.fronting.server.exception.UnexpectedResponseException: HTTP/1.1 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:62)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:40)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:36)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.updateParent(BookmarkUtil.java:122)
at com.ibm.rdm.fronting.server.services.folders.internal.FolderServiceInternal.doPostContainedResources(FolderServiceInternal.java:290)
at com.ibm.rdm.fronting.server.services.folders.internal.FolderServiceInternal.doPostInternal(FolderServiceInternal.java:174)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.runInternalMethod(RRSRestServiceBase.java:222)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.handleMethod(RRSRestServiceBase.java:171)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.doPost(RRSRestServiceBase.java:85)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.dispatchRequest(AppContainerServlet.java:106)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.service(AppContainerServlet.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:121)
at com.ibm.team.repository.server.servletbridge.JazzServlet.service(JazzServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:811)
2010-06-17 11:23:10,494 ERROR rdm.fronting.server.services.folders.FolderService - HTTP/1.1 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben
com.ibm.rdm.fronting.server.exception.UnexpectedResponseException: HTTP/1.1 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:62)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:40)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.createBookmark(BookmarkUtil.java:36)
at com.ibm.rdm.fronting.server.util.BookmarkUtil.updateParent(BookmarkUtil.java:122)
at com.ibm.rdm.fronting.server.services.folders.internal.FolderServiceInternal.doPostContainedResources(FolderServiceInternal.java:290)
at com.ibm.rdm.fronting.server.services.folders.internal.FolderServiceInternal.doPostInternal(FolderServiceInternal.java:174)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.runInternalMethod(RRSRestServiceBase.java:222)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.handleMethod(RRSRestServiceBase.java:171)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.doPost(RRSRestServiceBase.java:85)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.dispatchRequest(AppContainerServlet.java:106)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.service(AppContainerServlet.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:121)
at com.ibm.team.repository.server.servletbridge.JazzServlet.service(JazzServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:811)
2010-06-17 11:23:10,494 ERROR rdm.fronting.server.services.folders.FolderService - Response: 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben - for request: POST https://tmav0008:9443/rdm/folders/_YOBzkFQwEd-S68Y5igKFHg?containedResources HTTP/1.1
2010-06-17 11:23:10,494 ERROR rdm.fronting.server.services.folders.FolderService - Response: 400 CRJZS5314E Die Anforderung hat einen ungltigen "Name"-Header angegeben - for request: POST https://tmav0008:9443/rdm/folders/_YOBzkFQwEd-S68Y5igKFHg?containedResources HTTP/1.1

permanent link
Mark Goossen (106) | answered Jun 17 '10, 9:51 a.m.
JAZZ DEVELOPER
Hi,

Could you check that the 'rrs-daemon' user is associated to the 'Rational 'Requirements Server' OAuth key? This can be done in the Jazz Web Admin:

https://server:9443/jazz/admin#action=com.ibm.team.repository.admin.configureOAuth

Please make the association, if it is not there.

Mark

permanent link
Parviz Tafreshian (8311612) | answered Jun 17 '10, 10:19 a.m.
Hi,

Could you check that the 'rrs-daemon' user is associated to the 'Rational 'Requirements Server' OAuth key? Yes it is
Mark


As soon as i start the server, a new consumer like "unknown" or "net.jazz.ajax.service.internal.http.ThemingHandler" are liste to the autorised user in OAuth key!

I get this message, wenn i try to work in rrc.

17.06.2010 16:03:55 org.apache.catalina.startup.Catalina start
INFO: Server startup in 35157 ms
com.ibm.rdm.fronting.server.exception.UnexpectedResponseException: HTTP/1.1 403 Forbidden
at com.ibm.rdm.fronting.server.services.uid.UIDService.doGetUID(UIDService.java:487)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getUIDResource(UIDService.java:186)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getUidEntryFromCacheOrCreateIfNot(UIDService.java:311)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getAndIncrementNextNumber(UIDService.java:223)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getAndIncrementNextNumber(UIDService.java:161)
at com.ibm.rdm.fronting.server.services.resources.internal.ResourceServiceInternal.getUniqueID(ResourceServiceIn
ternal.java:193)
at com.ibm.rdm.fronting.server.core.internal.InternalDomainServiceBase.doPostInternal(InternalDomainServiceBase.
java:192)
at com.ibm.rdm.fronting.server.core.internal.InternalDomainServiceBase.doPostInternal(InternalDomainServiceBase.
java:152)
at com.ibm.rdm.fronting.server.services.resources.internal.ResourceServiceInternal.doPostInternal(ResourceServic
eInternal.java:156)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.runInternalMethod(RRSRestServiceBase.java:222)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.handleMethod(RRSRestServiceBase.java:171)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.doPost(RRSRestServiceBase.java:85)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.dispatchRequest(AppContainerServlet.java:106)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.service(AppContainerServlet.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:121)
at com.ibm.team.repository.server.servletbridge.JazzServlet.service(JazzServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:811)
com.ibm.rdm.fronting.server.exception.UnexpectedResponseException: HTTP/1.1 403 Forbidden
at com.ibm.rdm.fronting.server.services.uid.UIDService.doGetUID(UIDService.java:487)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getUIDResource(UIDService.java:186)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getUidEntryFromCacheOrCreateIfNot(UIDService.java:311)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getAndIncrementNextNumber(UIDService.java:223)
at com.ibm.rdm.fronting.server.services.uid.UIDService.getAndIncrementNextNumber(UIDService.java:161)
at com.ibm.rdm.fronting.server.services.resources.internal.ResourceServiceInternal.getUniqueID(ResourceServiceIn
ternal.java:193)
at com.ibm.rdm.fronting.server.core.internal.InternalDomainServiceBase.doPostInternal(InternalDomainServiceBase.
java:192)
at com.ibm.rdm.fronting.server.core.internal.InternalDomainServiceBase.doPostInternal(InternalDomainServiceBase.
java:152)
at com.ibm.rdm.fronting.server.services.resources.internal.ResourceServiceInternal.doPostInternal(ResourceServic
eInternal.java:156)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.runInternalMethod(RRSRestServiceBase.java:222)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.handleMethod(RRSRestServiceBase.java:171)
at com.ibm.rdm.fronting.server.core.internal.RRSRestServiceBase.doPost(RRSRestServiceBase.java:85)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.dispatchRequest(AppContainerServlet.java:106)
at com.ibm.team.jfs.app.servlet.AppContainerServlet.service(AppContainerServlet.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:121)
at com.ibm.team.repository.server.servletbridge.JazzServlet.service(JazzServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:811)

permanent link
Parviz Tafreshian (8311612) | answered Jun 22 '10, 7:25 a.m.
Hi,

Could you check that the 'rrs-daemon' user is associated to the 'Rational 'Requirements Server' OAuth key? This can be done in the Jazz Web Admin:

https://server:9443/jazz/admin#action=com.ibm.team.repository.admin.configureOAuth

Please make the association, if it is not there.

Mark


Hi Mark,
i found the problem :-)
"rrs-daemon" is associated to the Rational Requirement Composer. But the user rrs-daemon was archived and that is why changed couldn't take place.
When rrs-daemon mustn't be archived, why RRCS let it happend?

Once more thank you very much for your help.

regards
Parviz

permanent link
Jiong Xie (7154) | answered Jun 22 '10, 9:33 a.m.
JAZZ DEVELOPER

Hi Mark,
i found the problem :-)
"rrs-daemon" is associated to the Rational Requirement Composer. But the user rrs-daemon was archived and that is why changed couldn't take place.
When rrs-daemon mustn't be archived, why RRCS let it happend?

Once more thank you very much for your help.

regards
Parviz

Hi, Parviz

Great that you now found out the cause of the problem!
I could just imagine that during managing the users from LDAP directory, the rrs-daemon user was archived by mistake.
Obviously, you might be right that RRC Server should be self-aware of the user rrc-daemon and avoid archiving it.

The great thing is that you can move on with the both established environment.

Cheers,
Jiong

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.