How do I import Timesheets through XOG without having to generate the Timesheet ID?

Document ID : KB000027022
Last Modified Date : 14/02/2018
Show Technical Document Details


Is it possible to import time into PPM from an external input?

How do I import timesheet through XML Open Gateway (XOG) without having to pre-generate the timesheet internal id numbers? (ie. by running the timeperiod read script)


CA PPM allows Timesheets to be created by importing them into the application without having an existing id.  

There are sample XOG files located in the XOG Client XML folder:

  • prj_timeperiods_read.xml
  • prj_timeperiods_write.xml

To allow timesheets to be created via XOG import
1. Using XOG, export an open time reporting period for a given resource with an existing timesheet (comment out the 'createTimesheet' filter in the read XOG) to provide a template for import (this will fill out assignment ID, internalTaskID)

2. Update the XOG output file to prepare for XOG write action.

Paste the content of the <TimePeriod> element and its sub-elements into an import ("write") Timeperiod XOG file

    Change the <TimePeriod> start/finish to an active, open timeperiod where the resource has no timesheet.
    On the <TimeSheet> element:
       Add an attribute:  action="add" on the timesheet
       Set the <ID> element to -1
       Set the <version> element to 1
    In any <Actual> elements, change the dates to reflect dates within the chosen time period and set the amounts to the number of hours worked.

3. Perform a XOG read action using the file created in step #2. The timesheet now has an internal ID and a version.
If this XOG write action is run again, a warning is issued that the timesheet already exists for the resource in the designated timeperiod and the timesheet it not imported 
Sample Timesheet XOG write file:  

<?xml version="1.0" encoding="UTF-8"?>
<NikuDataBus xmlns:xsi="" xsi:noNamespaceSchemaLocation="../xsd/nikuxog_timeperiod.xsd">
  <Header action="write" externalSource="NIKU" objectType="timeperiod" version="6.0.11"/>
        <TimePeriod finish="2015-10-17T00:00:00" openForTimeEntry="true" start="2015-10-17T00:00:00">
                <TimeSheet action="add" ID="-1"
                    resourceID="PRJ_COVRG_Labor" status="0" version="1">
                        <TimeSheetEntry assignmentEstimate="117"
                            taskID="~rmw" taskName="Effort" totalActuals="8">
                                <Actual actualDate="2015-10-11" amount="0"/>
                                <Actual actualDate="2015-10-12" amount="8"/>
                                <Actual actualDate="2015-10-13" amount="0"/>
                                <Actual actualDate="2015-10-14" amount="0"/>
                                <Actual actualDate="2015-10-15" amount="0"/>
                                <Actual actualDate="2015-10-16" amount="0"/>
                                <Actual actualDate="2015-10-17" amount="0"/>

Additional Information:

The current XOG functionality does not provide a method to make Timesheet 'adjustments'.  The Timesheet XOG functionality only provides for creating or updating Timesheets with a status of 'Open'.  Reference and vote for the following idea on our communities:

Community Idea Posting: Create Timesheet Adjustments through XOG