Clarity PPM

Expand all | Collapse all

Resource object not getting xogged properly

  • 1.  Resource object not getting xogged properly

    Posted 09-21-2018 02:53 AM
      |   view attached


    Am trying to xog the resource data via process, and that process makes the resource inactive both at the user and Resource side,disable the Open for time entry option and updates the Date of termination provided in the request.

    Now, the issue is that process is not updating the Open for time entry and Date of termination for some resources and for some resources it is updating(really weird) even the resource has the info as other.


    Could you please help me in this?#


    Any suggestions and comments would help me.





    zip   5K 1 version

  • 2.  Re: Resource object not getting xogged properly

    Posted 10-05-2018 11:55 PM

    A suggestion, add some log output after each XOG, in particular, when the XOG has an exception, or the Failure records are greater than 0 - sample code:

            <core:if test="${v_xog_exception != null}">
              <gel:log category="XOG" level="ERROR">XOG Execution failed: ${v_xog_exception}</gel:log>
              <gel:log>[XOG] XOG failed: ${v_xog_exception}</gel:log>
              <core:set value="true" var="v_errorFlag"/>
            <gel:set select="$runresult/soapenv:Envelope/soapenv:Body//XOGOutput" var="writeOutputRoot"/>
            <gel:set asString="true" select="$writeOutputRoot/Status/@state" var="XOGoutcome"/>
            <gel:set asString="true" select="$writeOutputRoot/Records/Record" var="XOGoutputrecords"/>
            <gel:set asString="true" select="$writeOutputRoot/Statistics/@totalNumberOfRecords" var="XOGtotalrecords"/>
            <gel:set asString="true" select="$writeOutputRoot/Statistics/@insertedRecords" var="XOGinsertedrecords"/>
            <gel:set asString="true" select="$writeOutputRoot/Statistics/@updatedRecords" var="XOGupdatedrecords"/>
            <gel:set asString="true" select="$writeOutputRoot/Statistics/@failureRecords" var="XOGfailurerecords"/>
            <gel:log category="XOG" level="INFO">XOG Results. Status: ${XOGoutcome}; Total Records: ${XOGtotalrecords}; Total inserted: ${XOGinsertedrecords}; Total updated: ${XOGupdatedrecords}; Total failed: ${XOGfailurerecords}</gel:log>
            <core:if test="${XOGfailurerecords > 0 or XOGoutcome == 'FAILURE'}">
              <gel:set asString="true" select="$xogRootNode" var="xogRootNodeAsString"/>
              <gel:log category="XOG" level="INFO">Input XOG: ${xogRootNodeAsString}</gel:log>
              <gel:set asString="true" select="$writeOutputRoot" var="XOGFailure"/>
              <gel:log category="XOG" level="INFO">XOG Failure Results: ${XOGFailure}</gel:log>


    Hopefully the output will assist you in determine why the XOG update periodically doesn't work.


    I also notice that you are using:

    <gel:parameter var="XOGPassword" secure="true"/>


    I normally store the XOG username as a Code Constant, which is picked up via SQL read to store in v_xogUserId, and then use:

      <core:new className="" var="secId"/>
      <core:invokeStatic className="" method="getInstance" var="userSessionCtrl"/>
      <!-- Verify the security -->
      <core:set value="${userSessionCtrl.init(v_xogUserId, secId)}" var="secId"/>
      <!-- Get the username corresponding to xog id -->
      <core:set value="${secId.getUserName()}" var="XOGUsername"/>
      <!-- Get the Encrypted passowrd corresponding to XOG id -->
      <core:set value="${secId.getPWD()}" var="XOGPassword"/>
      <!-- Get the Session corresponding to the xog userid and password -->
      <core:set value="${secId.getSessionId()}" var="XOGsessionID"/>

    This way the password can be modified periodically for the XOG user with no impact to the GEL scripts.  You may be passing this data from a previous step, so please ignore if this is the case.

  • 3.  Re: Resource object not getting xogged properly

    Posted 10-06-2018 06:22 AM

    Just wondering after having a quick look in your process...

    Why might you have opted not to use complete "true" for the rights and groups and OBS. That clears them except for the auto-rights and collaboration which are not in the rights administration.

    To me that appears simpler than going through with the SP's

    Are you using financials? I do not catch the script making the resource financially in inactive.


    Can't give a definite answer to you question why sometimes ...

    The more complicated a process the more critical it gets.

    Agree with more checks and log entries

    The extreme would be querying the actual result and comparing it with the desired values and if there are exceptions notifying the user who initiated the process for the failure and suggest a rerun.