XML Import from MS Project 2007

Developer: Avinash

Work: 4w? (phase 1), 3w? (phase 2)

Refactor the Project.net MPD file import to use the new Microsoft Project 2007 XML format. Project.net’s XML import should use the same core code as schedule-related web services.

Microsoft Project 2007 no longer saves to the MPD format; Microsoft’s new open format appears to be the Microsoft Open XML format. We have been unable to find a specification for this XML format, but at first glance, this format appears to support all the MS Project data that Project.net uses (such as task, resource, assignment, work time calendar).

Elimination of MPD and MPX support will allow Project.net to be deployed to Unix/Linux application servers easier because the Microsoft Jet database engine will no longer be required to read MPD (access database) files.

Decisions

  1. Support for import of Microsoft Project 2007 XML format into Project.net is needed ASAP.
  2. Support for export of Microsoft Project 2007 XML format from Project.net is needed in the future
  3. Support for MPD and MPX formats should be removed to clean code, remove dependency on Microsoft Jet database engine, and all the construction of a clean XML web services layer.

Work Package

  • Find documentation on the Microsoft Project 2007 XML format. Reverse engineer the specification if needed.
  • Determine if the Microsoft Project 2007 XML format contains all the information needed to replace Project.net v8.2’s use of the older MPD format.
  • Remove project.net’s legacy MPX format import (commercial/src/net/project/schedule/mpx)
  • Replace project.net’s legacy MS Project MPD import with MS Project XML import (commercial/src/net/project/importer)
  • Remove project.net legacy code and interface for defining ODBC:JDBC bridges.

Design Suggestions:

  • Project.net’s XML export import should use the same core code as schedule-related web services.
  • Use the Microsoft 2007 XML schema http://schemas.stylusstudio.com/msoffice2003/n2892f8bd/element_Project.html or newer.
  • Extract the GetXML() methods from object into an XML persistence layer that can be used by both web services and MS Project XML file export.
  • Only MSP XML input to project.net should be to implemented in phase 1. This is so we can release this part quickly.
  • Phase 2 will include XML output from project.net. If you suggest it is necessary to implement XML output as part of phase 1 (for testability, etc.) please talk to me.
  • We are now using Hibernate 3.2, and Spring framework for new functionality. Since you are refactoring existing code, you can decide whether to use Hibernate and Spring. When possible, you should implement your new code in modern layers (using Spring wiring if possible): business/domain, DAO.
  • Unless you are certain that you can implement phase 1 in less than 3 weeks, I suggest you work in your own working branch (copy of trunk) then merge your working branch back to trunk when phase 1 is ready for test.

Additional Scope

These features can be added during phase 1 or phase 2 based on your preference.

  1. Add data model (database tables) and object model to Project.net to match Microsoft Project 2007 Resource costs. Please suggest the data and object model for my review. You will probably need to a ResourceCost (with one-to-many releationship to Resource). The ResourceCost should include the following MSP resource cost fields: standard rate, overtime rate, per use cost. It appears that MSP supports 5 different cost records per resource (A-E).
  2. Add the following fields to Project.net and map from MSP XML to project.net database during import. This information will be needed soon for implementing non-person (material) resources.
    resource type {work, material, cost]
    material label
    
  3. on the MapResources.jsp page, it would be nice if you could automatically map MSP resources that have an email address set to the corresponding Project.net resource with matching email address. MSP resources may not have an email address or may not have an email address that matches any resource in the Project.net project.net workspace. Only resources that are on the team directory for the project workspace should be automatically mapped. If there is no email match, the resource should be left unmapped (as they are now).

XML export to MS Project 2007 (phase 2)

  • Add XML out from Project.net for import into Microsoft Project 2007.
  • Add Project.net plug-in for MS Project 2007 to "Save to Project.net..."

Attachments