The Project Financial Server 2010 has a dual interface, using both ASMX and WCF services.
In the new SP1 release of Project Financial Server 2010, the Web service (ASMX) interface operates in the following way:
- You must use the ?wsdl URL option when setting an ASMX reference. For example: http://ServerName/ProjectServerName/_vti_bin/Cost/ProjectCost.asmx?wsdl
- An ASMX reference must be made through the Project Web App address.
- When you are developing on the Project Financial Server computer, you cannot use localhost for the server name in the URL of an ASMX reference. Use the computer name.
The Project Financial Web extension client uses the WCF service interface for enhanced performance and security. Custom applications can use either interface; the ASMX and WCF interfaces have an identical object model for the public Web services. We recommend using the WCF interface for new applications.
In the RTM release of Project Financial Server 2010, it was possible to add an ASMX reference and using it for back-end calls. For example, for the ProjectCost web service you were able to use an URL of the form http://ServerName:32843/758956dd18da43ed8e5321152e56bfb3/CMSI/ProjectCost.asmx. In SP1, you cannot set an ASMX reference to the PFSI through the back-end Project Financial Server service application. For applications that must run on the local Project Financial Server computer, you should use the WCF interface.
The SDK download for the SP1 release contains instructions on how generate proxy assemblies, for both the ASMX and the WCF interfaces, together with code samples.
In the upgrade from the RTM release of Project Financial Server 2010 to SP1, some of the methods of the API have changed, and the changes also affect the datasets used by these methods.
Events
- ReadEventSubscriptions(string eventName) has changed to ReadEventSubscriptions(PFSEventID eventId) – UMT.CostModule.Library.PFSEventID is an enum which in identifies a Project Financial Server pre-event or post-event
Granularity
- ReadProjectCostPeriods(Guid projectUid, DateTime startDate, DateTime endDate, UMT.CostModule.Library.Core.PeriodStatus status) and ReadProjectBenefitsPeriods(Guid projectUid, DateTime startDate, DateTime endDate, UMT.CostModule.Library.Core.PeriodStatus status) are replaced by ReadProjectActualsPeriods(Guid projectUid, DateTime startDate, DateTime endDate, UMT.CostModule.Library.Core.PeriodStatus status, bool isCost) – isCost must be set to true for reading cost periods, and to false for reading benefits periods
- ReadGranularityPeriodsForProjectCost(Guid projectUid, Guid valueTypeUid) and ReadGranularityPeriodsForProjectBenefits(Guid projectUid, Guid valueTypeUid) are replaced by ReadGranularityPeriodsForProject(Guid projectUid, Guid valueTypeUid, bool isCost) – isCost must be set to true for reading cost granularity periods, and to false for reading granularity benefits periods
ProjectBenefits
ProjectCosts
- ReadCostCenterList() is no longer available – use ReadCostCenterGroupList() instead and in the returned dataset the cmCostCenters table is populated with all the available cost centers
- ReadCostCenterStructure() is no longer available
ProjectIntegration
ProjectPhases
- ReadProjectPhasesTemplate(Guid projectTypeUid) renamed to ReadProjectTypePhases(Guid projectTypeUid)
- UpdateProjectPhases(ProjectPhasesInfo projectPhasesDataSet) renamed to UpdatePhases(ProjectPhasesInfo projectPhasesDataSet)
ProjectValues
- ReadCostValues(Guid projectUid, Guid versionUid, List<Guid> costCenters, List<Guid> costNodes, DateTime startDate, DateTime endDate, Guid granularityUid, int nMaxLevel, Guid calendarTypeUid, Guid valueTypeUid) and ReadBenefitsValues(Guid projectUid, List<Guid> benefitsNodes, DateTime startDate, DateTime endDate, Guid granularityUid, Guid calendarTypeUid, int nMaxLevel, Guid valueTypeUid) are replaced by ReadFinancialValues(Guid projectUid, Guid versionUid, List<Guid> costCenters, List<Guid> costNodes, DateTime startDate, DateTime endDate, Guid granularityUid, int nMaxLevel, Guid calendarTypeUid, Guid valueTypeUid, bool isCost) – isCost must be set to true for reading cost values, and to false for reading benefits values; when reading benefits values, the costNodes paramater must contain the GUIDs of the benefits nodes for which to read the values, and the costCenters parameter should be NULL since cost centers are not applicable for benefits values
- UpdateCostValues(ValueInfo valuesDataSet) and UpdateBenefitsValues(ValueInfo valuesDataSet) are replaced by UpdateFinancialValues(ValueInfo valuesDataSet, bool isCost) – isCost must be set to true for updating cost values, and to false for updating benefits values
Versions
Workflow
- ReadAllWorkflowStages() renamed to ReadCostStagesList()
- ReadWorkflowCostStage(Guid stageUid) renamed to ReadCostStage(Guid stageUid)
- UpdateWorkflowStages(WorkflowInfo workflowStagesDataSet) renamed to UpdateCostStages(WorkflowInfo workflowStagesDataSet)
The CU1 update, compared with SP1, does not change the existing PFSI services, but a new service is included, Admin, which contains methods that allow custom fields to be associated with OLAP databases configured in Project Server and to be used as measures or dimensions in the Project Financial Server cube.
What do you think?