Check out my new blog at

Friday, October 26, 2007

Multi-List SharePoint Synchronization to Microsoft Project Enterprise Resource Pool Part II

See my original post here. I have this working on a limited basis (bugs and performance work remain). I implemented a queue in Microsoft SQL Server with .NET XML web services in front of it. Jobs are enqueued and monitored through several web methods: EnqueueJob - Place a job in the queue CancelJob - Cancel a job GetJobStatus - Get status information about a job GetJobErrors - if GetJobStatus indicates an error, a call to this will retrieve the details. The bulk of the synchronization code is implemented as a Windows service that plucks jobs off the queue and processes them. Jobs are composed of meta data that describe how different SharePoint lists relate to the enterprise resource pool. For example, I might have a job that relates SharePoint column "Skills" in a particular site/list to an enterprise resource custom field and its associated lookup table. If the host SharePoint list contains "firefighting, race car driving, and BASE jumping) as skills for Sam, once the job is enqueued and processed, Sam's enterprise resource record will also contain those skills (if all of the skills listed in SharePoint have a corresponding value in the lookup table). The service also supports the concept of "composite fields" where a series of SharePoint columns in a list are concatenate into a single value that is stuffed into a resource text custom field. The need for this came about because our SharePoint lists typically have two columns for name (first and last) whereas Microsoft Project expects resource name as a single string. The Windows service talks to Microsoft Project Server exclusively through the PSI and to SharePoint using the Lists web service. I learned a bunch about the PSI and how to talk to SharePoint using web services. I will look through the code next week and see if anything jumps out as worthy of posting. So, what's next? Next week I am taking a step back from writing code to start doing some planning and I have a few other little projects I am working on. Have a good weekend.


einsty said...

Surprised that no one is posting comments here. This seems to be a huge need.

Our group is working on an EPM solution that will require mapping a good amount of data from lists into the Project Server Look-up tables.

It is odd however, that the Sharepoint lists seem to lack heirarchy but the project server lookup tables have a great heirarchy to them. Have you considered yet how to deal with inserting or updating a single branch of entries from a Sharepoint list?

Colby Africa said...


I have implemented a partial solution to this on another project I am working on. The approach involves meta data that describes the “layout” of SharePoint lists with respect to the Project lookup tables. In this approach, I can specify that values of a specific SharePoint list are synchronized with one or more levels within a Project lookup table.

It isn’t pretty…



Content on this site is provided "AS IS" with no warranties and confers no rights. Additionally, all content on this site is my own personal opinion and does not represent my employer's view in any way.