Feature changes from Project Service Automation to Project Operations

The upgrade from Dynamics 365 Project Service Automation to Dynamics 365 Project Operations Lite will be delivered in three phases. This article provides information about the major changes that you can expect to see when the upgrade is complete.

Upgrade delivery Phase 1
(January 2022)
Phase 2
(November 2022)
Phase 3
No dependency on the work breakdown structure (WBS) for projects. ✔️ ✔️ ✔️
The WBS is included in the currently supported limits of Project Operations.   ✔️ ✔️
The WBS outside of the currently supported limits of Project Operations, including support for the Project desktop client.     ✔️

Project management

The most significant changes in the user experience will be in the area of project planning. Project Operations adopts a new modern experience for managing a work breakdown structure (WBS) by leveraging the scheduling capabilities provided by Project for the Web.

Differences in the scheduling experience

The following table summarizes the scheduling differences between Project Service Automation and Project Operations.

Scheduling Project Operations PSA
Project templates - Ability to define and apply project templates when a project is created   ✔️
Project work breakdown structure (WBS) integration with desktop client   ✔️
Constraints - Start no earlier than, finish no later than ✔️  
Milestones - Tasks with zero duration ✔️  
Resource driven tasks will respect the availability of assigned resources ✔️  
Time-phased editing - Edit plans and work on a day-by-day basis ✔️ ✔️
Automatic/manual scheduling - Use the Project scheduling engine to automatically or manually schedule tasks   ✔️
Edit large projects directly in the user interface: There is no limit to the size of plans that are editable 500 task limit ✔️
Percent complete - Mark task progress ✔️  
Project Schedule Modes - Define the project as fixed units, fixed effort, or fixed duration ✔️  
Timeline - Build and customize the timeline view to visualize schedule details and communicate with stakeholders. ✔️  
Effort-driven tasks - Scheduling engine support for scheduling a task as effort driven ✔️  
Task information dialog box - Save task details using a dialog box ✔️  
Drag and drop - Multi-select tasks and modify their position on the WBS ✔️  
Flexible persistent views - Define more granular views of task attributes ✔️  
Sort and filter the WBS ✔️  
Boards view for non-waterfall project delivery ✔️  
Timeline view - Interactive Gantt chart used to visualize and edit the WBS ✔️  
Keyboard Shortcuts - Use keyboard shortcuts for common operations, such as indent or insert ✔️  
Multi-level undo - Perform what-if analysis to fully understand the impact of changes by reversing and reapplying an entire set of operations ✔️  
Cut/Copy/Paste - Collaborate on schedule development by copying and pasting schedule details between applications ✔️  
Task checklists - Add up to 20 checklist items to a task ✔️   
Task Sequence identification representation Rendered in the UI based on msdyn_outlinelevel and msdyn_displaysequence msdyn_wbsid

Project planning

The Project page in Project Operations has a significant number of differences compared to the Project page in Project Service Automation.

The following actions have been removed from the Projects page as part of the Phase 1 upgrade:

  • Open in MS Project
  • Create Template
  • Unlink from MS Project

The Project page in Project Operations includes the following new tabs.

  • Material Estimates
  • Task Billing Setup

The Status tab has been removed and the Status field is now on the Summary tab with the project’s scheduling mode.

Updates to the Project page.

The Schedule tab has been renamed to the Task tab and features the new project planning experience with Project for the Web.

New Project tasks tab.

Scheduling modes

Project Operations has introduced a new feature, Scheduling modes. All existing Project Service Automation projects will default to Fixed Duration in Project Operations. However, the default for new projects can be managed by going to Settings > Parameters > Parameter > Schedule Mode.

Project parameter settings for Schedule mode.

Project planning limits

Project Operations relies on Project for the Web for all project scheduling operations. Project for the Web manages the work breakdown structure using the limits in the following table.

Field Limit
Maximum total tasks for a project 500
Maximum total duration for a project 3650 days (10 years)
Maximum total resources for a project 300
Maximum total links (successor only) for a project 600
Maximum hierarchy level 10 levels
Maximum links (successor + predecessor) 20
Maximum duration of leaf task 1250 days
Maximum duration of a summary task 3650 days (10 years)
Maximum resources assigned to a task 20 resources
Supported date range for a task 1/1/2000 - 12/31/2149
Checklist items 20

Project planning extensibility and development

After you upgrade to Project Operations, you must use the Project Scheduling APIs to execute create, update, and delete operations on the following entities:

Entity name Entity logical name
Project msdyn_project
Project Task msdyn_projecttask
Project Task Dependency msdyn_projecttaskdependency
Resource Assignment msdyn_resourceassignment
Project Bucket msdyn_projectbucket
Project Team Member msdyn_projectteam

If you currently have customizations that involve these entities, see Use Project schedule APIs to perform operations with Scheduling entities for implementation guidance.

Data model changes

As part of Upgrade Phase 1, there are changes to the data model. These changes are primarily field changes to existing entities. In Phase 1, the entities, msydn_project and msdyn_projectteam are a refactoring of customizations.

Important

This section will updated with additional entities as future upgrade phases are completed.

The following fields have been replaced with new fields.

Entity Old logical name New logical name
msdyn_project msdyn_actualhours msdyn_effortcompleted
msdyn_project msdyn_plannedhours msdyn_effort
msdyn_project msdyn_remaininghours msdyn_effortremaining
msdyn_project msdyn_scheduledend msdyn_finish
msdyn_project msdyn_wbsduration msdyn_duration
msdyn_projectteam msdyn_assignedhours msdyn_effort
msdyn_projectteam msdyn_from msdyn_start
msdyn_projectteam msdyn_to msdyn_finish
msdyn_projecttask msdyn_ActualEffort msdyn_effortcompleted
msdyn_projecttask msdyn_RemainingHours msdyn_effortremaining
msdyn_projecttask msdyn_scheduledend msdyn_finish
msdyn_projecttask msdyn_scheduledstart msdyn_start
msdyn_projecttask msdyn_scheduleddurationminutes msdyn_duration
msdyn_projecttask msdyn_wbsid msdyn_OutlineLevel
msdyn_projecttask msdyn_wbsid msdyn_DisplaySequence
msdyn_resourceassignment msdyn_hours msdyn_effort
msdyn_resourceassignment msdyn_todate msdyn_finish
msdyn_resourceassignment msdyn_fromdate msdyn_start

The following fields have been added.

Entity Logical name Description
msdyn_project msdyn_actualfeesales Shows the aggregate of actual fee sales on the project. For use in Project Service Automation only.
msdyn_project msdyn_actualmaterialcost Shows the aggregate of actual material cost on the project. For use in Project Service Automation only.
msdyn_project msdyn_actualmaterialsales Shows the aggregate of actual material sales on the project. For use in Project Service Automation only.
msdyn_project msdyn_businesscase
msdyn_project msdyn_contractlineproject The contract line associated with this project.
msdyn_project msdyn_copyprojectcorrelationid This is an internal system field that's used for Copy Project related to the Correlation Identifier. For use in Project Service Automation only.
msdyn_project msdyn_copyprojectsessionid This is an internal system field, used for Copy Project related to the Session Identifier. For use in Project Service Automation only.
msdyn_project msdyn_globalrevisiontoken Last sync xRM Global Revision Token from the Project scheduling service.
msdyn_project msdyn_msprojectdocument The Microsoft Project document that belongs to the project.
msdyn_project msdyn_plannedmaterialcost The aggregate of planned material cost on the project. For use in Project Service Automation only.
msdyn_project msdyn_plannedmaterialsales The aggregate of planned material sales on the project. For use in Project Service Automation only.
msdyn_project msdyn_program The program this project is related to.
msdyn_project msdyn_quotelineproject The Quote line associated with this project.
msdyn_project msdyn_replaylogheader The header for the replay logs.
msdyn_project msdyn_schedulemode The default scheduling mode used for all tasks on the project.
msdyn_project msdyn_taskearlieststart The earliest start date of any task in the project.
msdyn_project msdyn_valuestatement
msdyn_projectteam msdyn_copiedfromprojectteammember The project team member that this project team member was copied from.
msdyn_projectteam msdyn_creategenericteammemberwithrequirement Indicates whether to create the resource requirement for a newly created generic team member.
msdyn_projectteam msdyn_deletestatus The delete status of the team member to track if there is a delete request sent to the Project scheduling service and whether it successfully sends a response back within the expected time window.
msdyn_projectteam msdyn_effortcompleted Tracks the effort accomplished by the team member on their assignments.
msdyn_projectteam msdyn_effortremaining Tracks the effort yet to be completed by the team member on their assignments.
msdyn_projectteam msdyn_markedfordeletiontimer The waiting period from when the team member sends a delete request to the Project scheduling service until the team member is actually deleted on Microsoft Dataverse.
msdyn_projectteam msdyn_markedfordeletiontimestamp The timestamp to record when the team member delete request is sent to the Project scheduling service.
msdyn_projectteam msdyn_copiedfromprojectteammember Shows the project team member that this project team member was copied from.
msdyn_projecttask msdyn_actualexpensecost Shows the aggregate of actual expense cost on the task. System Field.
msdyn_projecttask msdyn_actualexpensesales Shows the aggregate of actual expense sales on the task.
msdyn_projecttask msdyn_actualfeesales Shows the aggregate of actual fee sales on the task.
msdyn_projecttask msdyn_actualmaterialcost Shows the aggregate of actual material cost on the task.
msdyn_projecttask msdyn_actualmaterialsales Shows the aggregate of actual material sales on the task.
msdyn_projecttask msdyn_descriptionplaintext Project task notes in plain text.
msdyn_projecttask msdyn_displaysequence Value that can be used to sort the task by its ID.
msdyn_projecttask msdyn_iscritical Indicates whether this task is in the critical path.
msdyn_projecttask msdyn_ismanual Indicates whether a task is manually scheduled or automatically scheduled.
msdyn_projecttask msdyn_LinkStatus Task Billing Setup link.
msdyn_projecttask msdyn_outlinelevel Indicates the place of a task in the project outline hierarchy.
msdyn_projecttask msdyn_plannedexpensecost Shows the aggregate of the estimated expense cost on the task.
msdyn_projecttask msdyn_plannedexpensesales Shows the aggregate of planned expense sales on the task.
msdyn_projecttask msdyn_plannedmaterialcost Shows the aggregate of estimated material cost on the task.
msdyn_projecttask msdyn_plannedmaterialsales Shows the aggregate of planned material sales on the task.
msdyn_projecttask msdyn_projectbucket The task board can be grouped by bucket so each bucket has its own column.
msdyn_projecttask msdyn_summary Summary Task.
msdyn_projecttask msdyn_totalactualcost Shows the aggregated cost from all project actuals for the task.
msdyn_projecttask msdyn_totalactualsales Shows aggregated sales values from all project actuals for the task.
msdyn_projecttask msdyn_totalplannedcost Shows the aggregate of estimated cost values on the task.
msdyn_projecttask msdyn_totalplannedsales Shows aggregate of estimated sales values on the task.
msydn_resourceassignment msdyn_billingtype Billing Type for the Resource Assignment.
msydn_resourceassignment msdyn_effortcompleted Effort Completed (Hours).
msydn_resourceassignment msdyn_effortremaining Effort Remaining (Hours).
msydn_resourceassignment msdyn_salescontractlineid Unique identifier for Project Contract Line associated with the Resource Assignment.

Project templates

Project Operations doesn't provide support for project templates. However, you can replicate much of the core functionality with the use of the Project Copy API.

Desktop add-in support

Support for the Microsoft Project Desktop add-in will not be available in the first 2 phases of the upgrade. In Phase 3, customers who have projects larger than the currently supported limits of Project for the Web will be able to use the desktop add-in.

Editing resource assignment contours

The ability to edit resource assignment contours will be available when Phase 2 of upgrade is available.

Billing and pricing

The following new features have been added in Project Operations. These features are additive in nature and don't impact the Project Service Automation data model.

Deprecated components

The following tables document all deprecated fields that are moved to the deprecated components solution post upgrade. For more information and a link to the solution, see Dynamics 365 Project Service Automation 3x to Project Operations 4x deprecated components.

invoicedetail

Fields
invoicedetail.msdyn_contractline

msdyn_actual

Fields
msdyn_actual.msdyn_salescontractline

msdyn_characteristicreqforteammember

Fields
msdyn_characteristicreqforteammember.msdyn_characteristic
msdyn_characteristicreqforteammember.msdyn_characteristicreqforteammemberid
msdyn_characteristicreqforteammember.msdyn_characteristictype
msdyn_characteristicreqforteammember.msdyn_name
msdyn_characteristicreqforteammember.msdyn_ratingvalue
msdyn_characteristicreqforteammember.msdyn_resourcerequirementid

msdyn_contractlineinvoiceschedule

Fields
msdyn_contractlineinvoiceschedule.msdyn_contractline
msdyn_contractlinescheduleofvalue.msdyn_contractline

msdyn_dataexport

Fields
msdyn_dataexport.msdyn_dataexportid
msdyn_dataexport.msdyn_datatoken
msdyn_dataexport.msdyn_entityname
msdyn_dataexport.msdyn_exportedrecordcount
msdyn_dataexport.msdyn_exportstatus
msdyn_dataexport.msdyn_linkedentitydata
msdyn_dataexport.msdyn_name
msdyn_dataexport.msdyn_pagingdata

msdyn_fact

Fields
msdyn_fact.msdyn_salescontractline

msdyn_findworkevent

Fields
msdyn_findworkevent.msdyn_bookableresource
msdyn_findworkevent.msdyn_findworkeventid
msdyn_findworkevent.msdyn_name
msdyn_findworkevent.msdyn_timestamp
msdyn_findworkevent.msdyn_type
msdyn_findworkevent.msdyn_value
msdyn_findworkevent.msdyn_work

msdyn_invoicelinetransaction

Fields
msdyn_invoicelinetransaction.msdyn_invoiceline
msdyn_invoicelinetransaction.msdyn_salescontractline

msdyn_journalline

Fields
msdyn_journalline.msdyn_salescontractline

msdyn_opportunitylineresourcecategory

Fields
msdyn_opportunitylineresourcecategory.msdyn_billingtype
msdyn_opportunitylineresourcecategory.msdyn_description
msdyn_opportunitylineresourcecategory.msdyn_opportunitylineresourcecategoryid
msdyn_opportunitylineresourcecategory.msdyn_opportunitylinetransactionclassification
msdyn_opportunitylineresourcecategory.msdyn_resourcecategory

msdyn_opportunitylinetransaction

Fields
msdyn_opportunitylinetransaction.msdyn_accountcustomer
msdyn_opportunitylinetransaction.msdyn_accountingdate
msdyn_opportunitylinetransaction.msdyn_accountvendor
msdyn_opportunitylinetransaction.msdyn_amount
msdyn_opportunitylinetransaction.msdyn_amount_base
msdyn_opportunitylinetransaction.msdyn_amountmethod
msdyn_opportunitylinetransaction.msdyn_basisamount
msdyn_opportunitylinetransaction.msdyn_basisamount_base
msdyn_opportunitylinetransaction.msdyn_basisprice
msdyn_opportunitylinetransaction.msdyn_basisprice_base
msdyn_opportunitylinetransaction.msdyn_basisquantity
msdyn_opportunitylinetransaction.msdyn_billingtype
msdyn_opportunitylinetransaction.msdyn_bookableresource
msdyn_opportunitylinetransaction.msdyn_contactcustomer
msdyn_opportunitylinetransaction.msdyn_contactvendor
msdyn_opportunitylinetransaction.msdyn_customertype
msdyn_opportunitylinetransaction.msdyn_description
msdyn_opportunitylinetransaction.msdyn_documentdate
msdyn_opportunitylinetransaction.msdyn_enddatetime
msdyn_opportunitylinetransaction.msdyn_exchangeratedate
msdyn_opportunitylinetransaction.msdyn_opportunityline
msdyn_opportunitylinetransaction.msdyn_opportunitylinetransactionid
msdyn_opportunitylinetransaction.msdyn_percent
msdyn_opportunitylinetransaction.msdyn_price
msdyn_opportunitylinetransaction.msdyn_price_base
msdyn_opportunitylinetransaction.msdyn_pricelist
msdyn_opportunitylinetransaction.msdyn_product
msdyn_opportunitylinetransaction.msdyn_project
msdyn_opportunitylinetransaction.msdyn_quantity
msdyn_opportunitylinetransaction.msdyn_resourcecategory
msdyn_opportunitylinetransaction.msdyn_resourceorganizationalunitid
msdyn_opportunitylinetransaction.msdyn_startdatetime
msdyn_opportunitylinetransaction.msdyn_task
msdyn_opportunitylinetransaction.msdyn_transactioncategory
msdyn_opportunitylinetransaction.msdyn_transactionclassification
msdyn_opportunitylinetransaction.msdyn_transactiontypecode
msdyn_opportunitylinetransaction.msdyn_unit
msdyn_opportunitylinetransaction.msdyn_unitschedule
msdyn_opportunitylinetransaction.msdyn_vendortype

msdyn_opportunitylinetransactioncategory

Fields
msdyn_opportunitylinetransactioncategory.msdyn_billingtype
msdyn_opportunitylinetransactioncategory.msdyn_description
msdyn_opportunitylinetransactioncategory.msdyn_opportunitylinetransactioncategoryid
msdyn_opportunitylinetransactioncategory.msdyn_opportunitylinetransactionclassification
msdyn_opportunitylinetransactioncategory.msdyn_transactioncategory

msdyn_opportunitylinetransactionclassificatio

Fields
msdyn_opportunitylinetransactionclassificatio.msdyn_billingtype
msdyn_opportunitylinetransactionclassificatio.msdyn_description
msdyn_opportunitylinetransactionclassificatio.msdyn_include
msdyn_opportunitylinetransactionclassificatio.msdyn_opportunityline
msdyn_opportunitylinetransactionclassificatio.msdyn_opportunitylinetransactionclassificatioid
msdyn_opportunitylinetransactionclassificatio.msdyn_transactionclassification

msdyn_orderlineresourcecategory

Fields
msdyn_orderlineresourcecategory.msdyn_contractline

msdyn_orderlinetransaction

Fields
msdyn_orderlinetransaction.msdyn_salescontractline
msdyn_orderlinetransactioncategory.msdyn_contractline

msdyn_orderlinetransactionclassification

Fields
msdyn_orderlinetransactionclassification.msdyn_contractline

msdyn_project

Fields
msdyn_project.msdyn_actualdurationminutes
msdyn_project.msdyn_actualhours
msdyn_project.msdyn_istemplate
msdyn_project.msdyn_plannedhours
msdyn_project.msdyn_projecttemplate
msdyn_project.msdyn_remaininghours
msdyn_project.msdyn_scheduleddurationminutes
msdyn_project.msdyn_scheduledend
msdyn_project.msdyn_stagename
msdyn_project.msdyn_wbsduration

msdyn_projecttask

Fields
msdyn_projecttask.msdyn_actualdurationminutes
msdyn_projecttask.msdyn_actualeffort
msdyn_projecttask.msdyn_aggregationdirection
msdyn_projecttask.msdyn_assignedresources
msdyn_projecttask.msdyn_assignedteammembers
msdyn_projecttask.msdyn_autoscheduling
msdyn_projecttask.msdyn_costestimatecontour
msdyn_projecttask.msdyn_effortcontour
msdyn_projecttask.msdyn_islinetask
msdyn_projecttask.msdyn_numberofresources
msdyn_projecttask.msdyn_remaininghours
msdyn_projecttask.msdyn_resourceutilization
msdyn_projecttask.msdyn_salesestimatecontour
msdyn_projecttask.msdyn_scheduledhours
msdyn_projecttask.msdyn_wbsid

msdyn_projecttaskstatususer

Fields
msdyn_projecttaskstatususer.msdyn_bookableresource
msdyn_projecttaskstatususer.msdyn_description
msdyn_projecttaskstatususer.msdyn_expectedcompletiondate
msdyn_projecttaskstatususer.msdyn_expectedhourstocomplete
msdyn_projecttaskstatususer.msdyn_iscompleted
msdyn_projecttaskstatususer.msdyn_name
msdyn_projecttaskstatususer.msdyn_percentcomplete
msdyn_projecttaskstatususer.msdyn_projecttaskid
msdyn_projecttaskstatususer.msdyn_projecttaskstatusindicator
msdyn_projecttaskstatususer.msdyn_projecttaskstatususerid

msdyn_projectteam

Fields
msdyn_projectteam.msdyn_applicantcount
msdyn_projectteam.msdyn_applicantsavailable
msdyn_projectteam.msdyn_assignedhours
msdyn_projectteam.msdyn_description
msdyn_projectteam.msdyn_from
msdyn_projectteam.msdyn_hoursrequested
msdyn_projectteam.msdyn_membershipstatus
msdyn_projectteam.msdyn_number
msdyn_projectteam.msdyn_to

msdyn_projectteammembersignup

Fields
msdyn_projectteammembersignup.msdyn_bookableresource
msdyn_projectteammembersignup.msdyn_membershipstatus
msdyn_projectteammembersignup.msdyn_name
msdyn_projectteammembersignup.msdyn_projectteammembersignupid
msdyn_projectteammembersignup.msdyn_teammembership

msdyn_projecttransactioncategory

Fields
msdyn_projecttransactioncategory.msdyn_billingtype
msdyn_projecttransactioncategory.msdyn_name
msdyn_projecttransactioncategory.msdyn_project
msdyn_projecttransactioncategory.msdyn_projecttransactioncategoryid
msdyn_projecttransactioncategory.msdyn_transactioncategory

msdyn_quotelineinvoiceschedule

Fields
msdyn_quotelineinvoiceschedule.msdyn_quoteline
msdyn_quotelineresourcecategory.msdyn_quoteline
msdyn_quotelinescheduleofvalue.msdyn_quoteline
msdyn_quotelinetransaction.msdyn_quoteline
msdyn_quotelinetransactioncategory.msdyn_quoteline
msdyn_quotelinetransactionclassification.msdyn_quoteline

msdyn_resourceassignment

Fields
msdyn_resourceassignment.msdyn_hours
msdyn_resourceassignment.msdyn_fromdate
msdyn_resourceassignment.msdyn_msprojectclientid
msdyn_resourceassignment.msdyn_todate
msdyn_resourceassignmentdetail.msdyn_duration
msdyn_resourceassignmentdetail.msdyn_from
msdyn_resourceassignmentdetail.msdyn_name
msdyn_resourceassignmentdetail.msdyn_resourceassignmentdetailid
msdyn_resourceassignmentdetail.msdyn_resourceassignmentid

salesorderdetail

Fields
salesorderdetail.msdyn_quoteline