Pooling together EDM Resources

J

jim.e.althoff

A lot of issues have been posted dealing with processing files and EDM
over the past year. I was hoping we could put together some resources
to help the community deal with working with EDM. I've started it off
with some notes below which should help. Please chime in with
additional info.

Jim

EDM
Using a File Drop

First go to the Microsoft web site and get "Project Data Service
Reference for Microsoft Office Project Server 2003". The file is
named "pj11PDSref.chm". Look at the EDM section.

If your configuring the EDM Service to listen to a file drop directory,
the Connector Service will then process all valid XML files that are
dropped in the specified directory.
Note. For the file drop function to work, files must be in the format
specified in the Service for EDM functions. The Service for EDM does
not try to transform arbitrary files into a usable XML format.

To configure the Connector Service for a file drop, create your
directories or use the default directories. Can be any - but you will
have to change the entries below and the server name to suit your
scenario.

d:\Data\RAS\DROP
d:\Data\RAS\Fail
d:\Data\RAS\Success

Add to registry using regedit:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\MS
Project\Services\Configuration\Connector\RAS]
"Verbosity"="3"
"Timeout"="150000"
"Project Server URL"="http://S306a3f/ProjectServer"
"Drop Directory"="D:\\Data\\RAS\\DROP\\"
"Success Directory"="D:\\Data\\RAS\\SUCCESS\\"
"Failed Directory"="D:\\Data\\RAS\\FAIL\\"

String values (REG_SZ) for Connector Service keys

Some important items dealing with EDM

· Case matters

· Make sure Verbosity is set to 3 otherwise you won't get error
messages or data

· An assumption is that you have already seeded the Enterprise
Outline Code or other code with some data. If you have not, these
instructions won't help. Just put a couple of entries into the
outline code that you are working with.

· Syntax for XML Request. The following two "<Request>" examples are
not the same (formatted and non-formatted). EDM will NOT process the
first XML document if there are ANY crlf or lf characters hidden in the
document. I don't know the correct editor at this point to allow
nice formatting without inserting special characters. So, when I
created an EDM document to be moved to a "drop" directory, it is in
the second format otherwise you will get the "7" error message.

<Request>
<PDSInfo/>
</Request>

<Request><PDSInfo/></Request>

· A big part of what I've wanted to do is to update Enterprise
Outline codes. The problem however is that I have not been able to
find suitable examples of the format. What I had to do is get the
"EnterpriseOutlineCodesHierarchical" function working and have that
function return the correct format. Without that function, I would
have never gotten the correct format. The format of the
EnterpriseOutlineCodeHierarchical is as follows:
<Request><EnterpriseOutlineCodesHierarchical><CodeType>0</CodeType><CodeFields><CodeField>188744590</CodeField></CodeFields></EnterpriseOutlineCodesHierarchical></Request>

It's easier to understand this way (but remember, if you use it this
way you WILL get an error 7):
<Request>
<EnterpriseOutlineCodesHierarchical>
<CodeType>0</CodeType>
<CodeFields>
<CodeField>188744590</CodeField>
</CodeFields>
</EnterpriseOutlineCodesHierarchical>
</Request>

You will need to replace the 188744590 number with the code of the
exact enterprise code that you are interested in. A list of these are
in the "Project Data Service Reference for Microsoft Office Project
Server 2003". The file is named "pj11PDSref.chm". I was going
after the "Task Enterprise Project Outline Code2". Your code will be
different.

This <Request> above returns the following:

<Reply><HRESULT>0</HRESULT><STATUS>0</STATUS><UserName>DCS Project
Server Account
(esef\9e0649)</UserName><OutlineCodes><MaxUsedCodeUID>395</MaxUsedCodeUID><OutlineCode><UID>188744590</UID><Name>RAS
Codes</Name><Warpable>0</Warpable><SelectLeafOnly>0</SelectLeafOnly><SelectionRequired>0</SelectionRequired><Nodes><Node><UID>394</UID><Description>Core
Services1</Description><Value>2650</Value></Node><Node><UID>395</UID><Description>Test1</Description><Value>9999</Value></Node></Nodes><Masks><Mask><Level>1</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask><Mask><Level>2</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask><Mask><Level>3</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask></Masks></OutlineCode></OutlineCodes></Reply>
Again, Let's lets clean it up:

<Reply>
<HRESULT>0</HRESULT>
<STATUS>0</STATUS>
<UserName>DCS Project Server Account (esef\9e0649)</UserName>
<OutlineCodes><MaxUsedCodeUID>395</MaxUsedCodeUID>
<OutlineCode>
<UID>188744590</UID>
<Name>RAS Codes</Name>
<Warpable>0</Warpable>
<SelectLeafOnly>0</SelectLeafOnly>
<SelectionRequired>0</SelectionRequired>
<Nodes>
<Node>
<UID>394</UID>
<Description>Core Services1</Description>
<Value>2650</Value>
</Node>
<Node>
<UID>395</UID>
<Description>Test1</Description>
<Value>9999</Value>
</Node>
</Nodes>
<Masks>
<Mask>
<Level>1</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
<Mask>
<Level>2</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
<Mask>
<Level>3</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
</Masks>
</OutlineCode>
</OutlineCodes>
</Reply>

You will need to remove some items to turn this into a correctly
formatted request to update "EnterpriseOutlineCodeUpdate". Remove:
<STATUS><UserName><OutlineCodes><MaxUsedCodeUID>

Finally, you will have a good update request for an Enterprise outline
code below:

<Request><EnterpriseOutlineCodeUpdate><OutlineCode><UID>188744590</UID><Name>RAS
Codes</Name><Warpable>0</Warpable><SelectLeafOnly>0</SelectLeafOnly><SelectionRequired>0</SelectionRequired><Nodes><Node><UID>394</UID><Description>Core
Services1</Description><Value>2650</Value></Node><Node><UID>395</UID><Description>Test1</Description><Value>9999</Value></Node></Nodes><Masks><Mask><Level>1</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask><Mask><Level>2</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask><Mask><Level>3</Level><Type>3</Type><Length>0</Length><Separator>.</Separator></Mask></Masks></OutlineCode></EnterpriseOutlineCodeUpdate></Request>

To make this easier to understand view it this way:
<Request>
<EnterpriseOutlineCodeUpdate>
<OutlineCode>
<UID>188744590</UID>
<Name>RAS Codes</Name>
<Warpable>0</Warpable>
<SelectLeafOnly>0</SelectLeafOnly>
<SelectionRequired>0</SelectionRequired>
<Nodes>
<Node>
<UID>394</UID>
<Description>Core Services1</Description>
<Value>2650</Value>
</Node>
<Node>
<UID>395</UID>
<Description>Test1</Description>
<Value>9999</Value>
</Node>
</Nodes>
<Masks>
<Mask>
<Level>1</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
<Mask>
<Level>2</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
<Mask>
<Level>3</Level>
<Type>3</Type>
<Length>0</Length>
<Separator>.</Separator>
</Mask>
</Masks>
</OutlineCode>
</EnterpriseOutlineCodeUpdate>
</Request>

· Finally, where are all of the error messages? Well, that's some
more fun. You will find the initial feedback from an EDM function in
the three directories that you had to setup initially; the drop, fail
and success directories. It's obvious where your file will end up if
it fails and if it succeeds.
But there are two additional places to go for info. First, use the
application log in the event viewer. Then use the logging function of
Project Server. This log contains the detailed error messages and
without it, well - you won't get far.
Good luck. Jim
 

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