Clarity

  • 1.  Keep history of rate matrix for inactive resources

    Posted Jan 03, 2018 11:29 AM

    CA PPM Version :14.3

     

    Here is the use case:

     

    In the Manage Matrix (Admin->Manage Matrix) page, we have several contractors with Rate entered up to 31-Dec-2017. Some of the contractors were deactivated as per the contract date.

     

    For the calendar year 2018, I have XOG OUT all the existing contractors and XOG IN with the new rate.

     

    So when I XOG IN, only active resources with the new rate were inserted into the Rate Matrix page and all inactive resources were not updated with the error message stating that, the resource code is invalid.

     

    How do I keep the history of inactive resources in the Rate Matrix?

     

    Here is the error message from XOG.

     

    java.sql.SQLException: [CA Clarity][Oracle JDBC Driver][Oracle]ORA-20187: Resource Code is not valid
    ORA-06512: at "SC51678D.PAC_MNT_MATRIX_CEL_VALIDATE_SP", line 653
    ORA-06512: at "SC51678D.PAC_MNT_MATRIX_ROW_VALIDATE_SP", line 853
    ORA-06512: at "SC51678D.PAC_MNT_MATRIX_ROW_INSERT_SP", line 99
    ORA-06512: at line 1

    at com.ca.clarity.jdbc.oraclebase.ddcr.b(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.ddcr.a(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.ddcq.b(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.ddcq.a(Unknown Source)
    at com.ca.clarity.jdbc.oracle.ddam.t(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.dde3.x(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.dde3.z(Unknown Source)
    at com.ca.clarity.jdbc.oraclebase.dddz.executeUpdate(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:68)
    at org.logicalcobwebs.cglib.proxy.Proxy$ProxyImpl$$EnhancerByCGLIB$$e6d7fa46.executeUpdate(<generated>)
    at com.niku.union.persistence.PersistenceController.processSql(PersistenceController.java:2755)
    at com.niku.union.persistence.PersistenceController.processStatement(PersistenceController.java:869)
    at com.niku.union.persistence.PersistenceController.processStatements(PersistenceController.java:769)
    at com.niku.union.persistence.PersistenceController.doProcessRequest(PersistenceController.java:577)
    at com.niku.union.persistence.PersistenceController.processRequest(PersistenceController.java:307)
    at com.niku.xql2.pmd.PMDDataSource.execute(PMDDataSource.java:213)
    at com.niku.xql2.handlers.ExecuteHandler.postProcess(ExecuteHandler.java:111)
    at com.niku.xql2.XQLVisitor.postProcess(XQLVisitor.java:1419)
    at com.niku.union.xml.dom.DOMWalker.postProcess(DOMWalker.java:210)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:94)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.TryHandler.preProcess(TryHandler.java:54)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:384)
    at com.niku.xql2.handlers.LoopHandler.processSet(LoopHandler.java:255)
    at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:212)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.MatchHandler.preProcess(MatchHandler.java:129)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.TryHandler.preProcess(TryHandler.java:54)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:384)
    at com.niku.xql2.handlers.LoopHandler.processSet(LoopHandler.java:255)
    at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:212)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:384)
    at com.niku.xql2.handlers.LoopHandler.processSet(LoopHandler.java:255)
    at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:212)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
    at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:384)
    at com.niku.xql2.handlers.LoopHandler.processSet(LoopHandler.java:255)
    at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:212)
    at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1385)
    at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:92)
    at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:92)
    at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:36)
    at com.niku.xog.service.XOGXBLHandler.processXBL(XOGXBLHandler.java:263)
    at com.niku.xog.service.XOGXBLHandler.process(XOGXBLHandler.java:170)
    at com.niku.xog.service.ObjectHandler.processRequest(ObjectHandler.java:198)
    at com.niku.xog.service.ObjectHandler.process(ObjectHandler.java:99)
    at com.niku.xog.service.XOGDispatch.processMessage(XOGDispatch.java:133)
    at com.niku.xog.service.XOGSOAPServlet.processMessage(XOGSOAPServlet.java:595)
    at com.niku.xog.service.XOGSOAPServlet.doPost(XOGSOAPServlet.java:273)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.niku.union.web.filter.ClarityContentFilter.doFilter(ClarityContentFilter.java:148)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.niku.union.web.filter.XSSFilter.doFilter(XSSFilter.java:80)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.niku.union.web.filter.TenantSetupFilter.doFilter(TenantSetupFilter.java:50)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.niku.union.web.filter.CharsetFilter.doFilter(CharsetFilter.java:45)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.filters.AddDefaultCharsetFilter.doFilter(AddDefaultCharsetFilter.java:88)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at com.niku.union.web.valves.ErrorPageRedirectValve.invoke(ErrorPageRedirectValve.java:65)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
    </Exception>
    </ErrorInformation>
    </Record>
    <Record>
    <KeyInformation>
    <column name="name">MLT Cost/Rate Matrix</column>
    </KeyInformation>
    <ErrorInformation>
    <Severity>WARNING</Severity>
    <Description>XOG-9004: Matrix row 1 were not imported because it had invalid data.</Description>
    </ErrorInformation>
    </Record>
    </Records>
    </XOGOutput>
    </soapenv:Body>
    </soapenv:Envelope>

     

    Thanks

    -Venkitta



  • 2.  Re: Keep history of rate matrix for inactive resources

    Posted Jan 04, 2018 03:38 PM

    I think this is an expected behaviour. There are several places where a validation is made as to whether a resource is active or not. May be you can activate these resources temporarily and then update the matrix..?



  • 3.  Re: Keep history of rate matrix for inactive resources
    Best Answer

    Posted Jan 04, 2018 04:56 PM

    For you to be able to update the rate matrix for a resource, that resource must be "Financially Active"

     

    i.e., Set  Resources -> Properties -> Financial-> "Financially Active" = "Checked" on their Resource Profile



  • 4.  Re: Keep history of rate matrix for inactive resources

    Posted Feb 05, 2018 02:16 AM

    Thank you ALL for the response