Retrieving assignments' detailed segments in Project Server 2007

A

AVfromItaly

Hi.

In Project Server 2007, is there a way to retrieve (via PSI web services or
with other techniques) the actual content of the "segments" for a specific
task assignment?

I need to retrieve exactly the work hours entered by a user (=resource) in
the grid of the PWA2007 "MyTasks" page, in order to propagate them to other
external systems.

I saw how the PrjTool SDK sample retrieves assignments from the Published
database, but it just accesses to the "total" work for each assignment, not
the detailed day-by-day splits of the work hours.

It seems these splits (or "segments") are stored (in a binary form) in the
ASSN_CONTOUR_DATA of the MSP_ASSIGNMENTS_SAVED in the ProjectServer_Published
database; but I wasn't able to find a way to retrieve them in a "clear" way,
through an "elegant" interface, instead of accessing directly to the database
(where I anyway should need an algorithm to interpret them).

An alternative path I'm trying to walk is to hook (with a custom event
handler) the Statusing/StatusUpdated event, but of course this way I can
obtain (in the ChangeXML eventarg) only the work hours just modified by the
user; in other words, I'm retrieving just a "delta" of work hours, containing
only the modified segments of the edited assignments, while I'd like to
retrieve all the segments for a given assignment.

Thank you in advance for your valuable help.

AV
 
A

AVfromItaly

Further investigation, made me discover that ASSN_CONTOUR_DATA field is
retrieved by the Statusing PSI web service.
So, my question becomes: is there a way to interpret the byte array returned
by this ASSN_CONTOUR_DATA field in order to understand the work segments in a
specific assignment?
AV
 
J

James Fraser

Hi.

In Project Server 2007, is there a way to retrieve (via PSI web services or
with other techniques) the actual content of the "segments" for a specific
task assignment?  
....[lots of details trimmed]...

As you've discovered, getting this information is painful. If
possible, consider using the timesheet data. Timesheet data is stored
in a much more accessible way, and seems to be what the architects
imagined people would use when they need to report on time or connect
it to an external system.

If Timesheet data will satisfy your requirements, this will be a much
easier path.


James Fraser
 
A

AVfromItaly

Thank you for your answer.
Unfortunately, we currently are not implementing Timesheet concept, because
we're currently managing the work hours reporting by using task statusing
only.
So, do you think assignment contour data are not intelligible at all?

AV


James Fraser said:
Hi.

In Project Server 2007, is there a way to retrieve (via PSI web services or
with other techniques) the actual content of the "segments" for a specific
task assignment?
....[lots of details trimmed]...

As you've discovered, getting this information is painful. If
possible, consider using the timesheet data. Timesheet data is stored
in a much more accessible way, and seems to be what the architects
imagined people would use when they need to report on time or connect
it to an external system.

If Timesheet data will satisfy your requirements, this will be a much
easier path.


James Fraser
 
J

James Fraser

Thank you for your answer.
Unfortunately, we currently are not implementing Timesheet concept, because
we're currently managing the work hours reporting by using task statusing
only.
So, do you think assignment contour data are not intelligible at all?

I'm sure that you can reverse engineer this field, but I think it will
be _a_lot_ of effort.

If you really want to pursue this, set up a clean test environment,
and start putting in tasks with small simple contours. Watch what
happens to the field. Start looking for changes, and figure out how
those relate to the data you know should be in the field.

Some examples from the similar ASSN_CHANGE_DATA field:
3F22 is January 1, 2008, In SQL,
DATEADD(d, CAST(SUBSTRING(ASSN_CHANGE_DATA,45,1) +
Substring(ASSN_CHANGE_DATA,44,1) AS INT), 'Dec 31, 1983')
will give you the day of the first component of an update of hours
worked.

0C00000F06000000C012C92106000000C012CE21
means the start date a of an assignment was changed.

The biggest problem with this approach is that you can never be sure
that you are correctly catching every condition.

So, is it possible? Yes. Is it easy? Not by most measures...


James Fraser
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top