Psa Ms CRM Dynamics
Psa Ms CRM Dynamics
Psa Ms CRM Dynamics
Overview
New and upcoming features
Plan your implementation (app version 3.x)
Sample data installation
Project planning and tracking guide
Basic quoting, pricing, and billing guide
Advanced quoting, pricing, and billing guide
Resource management guide
Reporting guide
Project Service upgrade (app version 3.x)
What's new or changed in Project Service Automation version 3
Upgrade considerations - Project Service Automation version 2.x or 1.x to version 3
Project Service (app version 3.x)
Project planning
Project schedules
Project costs and revenue
Sales estimates and projects
Project progress and cost consumption
Project templates
Project stages
Project settings
Pricing and costing dimensions
Create custom fields and entities
Add custom fields to price setup and transactional entities
Set up custom fields as pricing dimensions
Update plug-in attributes to include new pricing dimensions
Use an existing field in Project Service as a pricing dimension
Use bookable resource as a pricing dimension
Use transaction category as a pricing dimension
Turn off a pricing dimension
Quoting, pricing, and billing
Sales processes
Unit groups and units
Organizational units
Quotes and quote lines
Product-based quote lines
Project pricing
Product catalog pricing
Business transactions
Estimates
Analyzing project quotes
Recall previously approved time or expense entries
Cancel approval of previously approved time or expense entries
Actuals
Review project billing backlog
Invoicing
Multi-currency scenarios
Resourcing projects
Assign generic bookable resources to a task and generate resource requirements
Book named bookable resources to a project team and assign task
Book named resources from resource requirements
Submit a resource request
Accept or reject a proposed resource
Reconcile bookings and assignments
Resource management home page
Manage resources
Key concepts
Fulfilling resource requests
Proposing resources
Booking resources
Soft-book requirements
Skills and proficiency models
Resource management FAQ
Reporting
Dashboards
Working with the Project Service Automation data model
Create time entries
Time entry calendar
Customize weekly time entry
How-to guides (app version 3.x)
Pricing dimensions setup guide
Project management how-to guide
Resource management how-to guide
Reconciling assignments and bookings how-to guide
Time, expense, and approvals guide
FAQ and troubleshooting (app version 3.x)
How do I "soft book" resources?
How do I see chargeable utilization for resources?
Which booking allocation method should I use to avoid overbooking?
Can I book a resource to project from the schedule board?
How do I assign a resource to a task?
How are resource bookings and task assignments related?
Why is the price defaulting to zero on expense cost actuals?
Why is the price defaulting to zero on expense sales actuals?
Why is the price defaulting to zero on time cost actuals?
Why is the price defaulting to zero on time sales actuals?
Why can’t I delete records from the Actuals entity?
Development (app version 3.x)
Entity changes
Time and expense
Resource management
Deprecated Web resources in Project Service Automation v3.x
Guidance for earlier versions (app version 2.x and 1.x)
FAQ and troubleshooting
FAQ and troubleshooting
How do I assign a resource to a task (app version 2.x)?
How do I "soft book" resources (app version 2.x)?
How do I customize the Project Stages business process flow?
White papers
Administrator guide
Install and customize
Use demo data
Configure the Project Service app
Set up time units
Set up currencies and exchange rates
Create organizational units
Set up invoice frequencies
Configure transaction categories
Configure expense categories
Create product catalog items
Create a price list
Set up resources
Add resources
Add resource skills
Set up proficiency models
Add resource roles
Configure resource roles
Associate skills with resources
Associate skills with resource roles
Create a work hours template
Apply a calendar to a resource
Configure additional settings
Enable Project Finder Mobile
Resource manager guide
Manage resource requests
Schedule resources for a project
View resource availability
View resource utilization
Universal Resource Scheduling (URS)
Project manager guide
Provide work estimates
Create a project
Schedule a project with a work breakdown structure
Determine project cost and revenue estimates
Track project progress and cost
Create a project template
Submit resource requests
Create an Office 365 Group for a project
Add documents to a project
Track a project’s status
View project team members and manage bookings
View and edit project estimates
Approve time and expenses
Review project actuals
View and send invoices
View dashboards and reports
Use the add-in to plan work in Microsoft Project
Account manager guide
Create a customer account
Create a project opportunity
Create a project quote
Create a project contract
Time, expense, and collaboration
Get the apps
Sign in
View your schedule
Manage projects and bookings in Office 365
Enter time
Enter expenses
Delegate time or expense entry
Schedule time off
Collaborate using Office 365 Groups
Find projects with Project Finder mobile
Project Resource Hub guide
Notes for developers (app version 2.x)
How to add new custom forms for Opportunity, Quote, Order or Invoice entity
What is Dynamics 365 for Project Service
Automation (PSA)?
7/10/2019 • 2 minutes to read • Edit Online
The team is excited to announce our newest updates! Ranging from improvements to the user interface, all the way
to more powerful search queries for resource scheduling, and more. You asked; we listened.
Take a look at the Spring '18 Release Notes for Business Applications to see our newest enhancements and
additions.
In development
To see what we have planned in the near future, head over to the October '18 Release Notes for Business
Applications.
Sample data installation for the Project Service
application
1/24/2019 • 12 minutes to read • Edit Online
To help you build your own demo environments, Microsoft provides downloadable sample data packages that
showcase the capabilities of Dynamics 365 for Customer Engagement for Project Service and Dynamics 365 for
Field Service. There are two types of sample data packages:
reference/setup data
demo data (reference/setup and transactional data such as work orders and projects)
The sample reference data packages are downloadable in three different packages, so you can install data only for
Project Service, or only for Field Service, or you can install sample data for both applications at once.
The sample setup/reference data packages are:
V902PSMasterData - Project Service version 3.x only
V902FSMasterData - Field Service version 8.x only
V902FPSMasterData - Field Service 8.x and Project Service 3.x
The latest demo data package is:
FPSDemoData - Field Service 8.x and Project Service 3.x
Installation instructions differ slightly in the users to create and configure section but the rest is the same as
in the previous blog post. This package features a reduced demo data set and takes approximately 3 hours
to install.
These sample data packages are available in English only.
IMPORTANT
There is no way to uninstall the sample data. You should only install these packages on demonstration, evaluation,
training, or test systems. Also note that installing an individual package, and then installing the other individual package, is
not supported. (In other words, you can't install FSMasterData followed by PSMasterData, or vice versa.) If you see yourself
needing sample data for both applications at any point in the future, you should install the v902FPSMasterData package.
When you install any of the sample data packages, the installation process performs the following actions:
Creates or sets default parameters for using Project Service, Field Service, or both applications (if
applicable).
Imports sample data for the applications, such as bookable resources, application-specific roles, sales and
cost price lists, organizational units, sales process records, and other entities to demonstrate key capabilities.
With the demo data package, you get the above and additional transactional data such as work orders and
projects.
Wondering what capabilities you can demo with the sample data? See the Fabrikam Robotics fictitious scenario in
Technical notes.
If you have questions about installing these sample data packages, send us an email at
fpsdemodata@microsoft.com.
Requirements
The installation protocol assumes the following about your target instance (org):
Dynamics 365 for Customer Engagement 9.0.x or later.
Base language is English and base currency is US dollar (USD,$).
The org has no Project Service or Field Service data already, or only has barebones default data that comes
with any new org.
The correct version of the business application is already installed:
For FPSDemoData or v902FPSMasterData: The org has Field Service version 8.x and Project
Service version 3.x installed.
For v902PSMasterData: The org has Project Service version 3.x installed.
For v902FSMasterData: The org has Field Service version 8.x installed.
NOTE
If you need to install the sample data on top of an existing Project Service and Field Service trial or demo environment that
already has data (not recommended), you'll need to suspend the safety prechecks performed by the installer. For more
information, see the technical notes below.
6. Before proceeding, note that installing sample data could take up to one hour (normally ~10 minutes). You'll
need to make sure the computer remains on and connected to a network throughout the installation
process, and that your session remains active.
7. When you're ready, click Next to start the sample data installation process. After the sample data is loaded,
click Finish.
<TerminateOnPreCheckFailure>true</TerminateOnPreCheckFailure>
This change causes the installer to bypass some important safety checks, including:
Confirming that there is no more than one active Organizational Unit record, and then renaming it to
Fabrikam US.
Confirming that there is no more than one active Work Template record.
Confirming that there is no more than one active Project Parameter record, and then renaming that entry
to Parameters.
Configuration components
There are a number of other configuration components in this pre-import configuration file. For technical users,
some of these include:
<RequiredSolutions> specifies prerequisite solution installations and their version numbers.
<InstallSampleData> controls whether out-of-the-box sample data for the Dynamics 365 for Sales and
Service apps is installed.
false - skips installation of this built-in data (which is removable)
true - installs the built-in data concurrent with installation of the FS and PSA sample data
<PreImportDataCollection> specifies flat-file Data Maps and associated Records to be imported ahead
of the main sample data installation.
<EntitiesToEnableScheduling> specifies which entities should be enabled for Booking in Microsoft
Dynamics Scheduling (aka Universal Resource Scheduling).
<UsersToCreateAndConfigure> specifies Bookable Resources that will be created (if they don't exist
already) before the sample data import executes. Note that the source system sample data Bookable
Resource match with the target system Bookable Resource records on the FullName and login of each
resource. Therefore, it is NOT possible to change the names in this preconfiguration file unless you first
import sample data into a target system using these names, then rename the Bookable Resources to your
desired name set along with the Enabled User records, and then export the data again for import into your
final destination system (updating the ImportUserMapFile.xml Old and New entries accordingly).
<PluginsToDisable> specifies very discrete line-item plug-ins that must be disabled during the sample
data import and then reenabled afterwards.
Fabrikam Robotics fictitious scenario
The Field Service and Project Service sample reference data packages install the Fabrikam Manufacturing
Master Data (v3.0.0.0) solution, along with approximately 4,000 records and approximately 40 different entities.
The separate sample data packages for Field Service or Project Service contain a subset of the
v902FPSMasterData sample data for that application. The Demo Data package installs the Fabrikam
Manufacturing Demo Data (v3.0.0.7) solution with approximately 22,000 records across 148 entities.
The fictional company, Fabrikam Robotics, is a manufacturer of electronic device assembly line robots and is known
for their product quality, innovation, and solid customer service, including installation planning, implementation,
and ongoing maintenance services. Fabrikam is headquartered in the United States (Fabrikam US ), and has
project-based service operations in France, India, the United Kingdom, and Switzerland.
Field service operations are centered in the United States, mostly in the greater Seattle area. The company is
focused on leveraging Internet of Things (IoT) connectivity to monitor customer asset performance and deliver
increasingly proactive onsite services.
A high-level overview of the sample data is as follows:
Common sample data elements (included for both applications)
1 user
71 accounts
137 contacts
Various transaction types and categories
50 products with 1 product price list
14 price/cost lists
31 characteristics (resource skills) in 2 rating models with 3 levels (rating values)
Project Service
8 organizational units
6 role-specific utilization levels
2.8k+ role-price specifications
Field Service
4 territories
5 work order types
22 customer assets
9 incident types with a range of associated resource characteristics (9), services (13) and service tasks
(13)
The Demo Data package installs approximately 179 work orders, 12 projects, and associated transactional data.
Change the work hours for sample resources
By default, all bookable resources have a 24 work hours calendar.
If you need to change the work hours for sample bookable resources, go to Universal Resource Scheduling >
Scheduling > Resources.
Select a user (for example, Spencer Low ) and change Spencer's work hours to the hours you want to apply to
multiple users. Go to Universal Resource Scheduling > Settings > Work Hour Templates and edit the
Default Work Template record. In the Template Resource field, select a user with work hours that you want to
apply to other resources. Go to Universal Resource Scheduling > Scheduling > Resources > Active
Bookable Resources. Select the resources you want to change, and then select Set Calendar. On the Work
Template drop-down list, select the Default Work Hour template or another template with the correct templating
resource. When you go to the schedule board, you should see that the resources now have updated work hours.
Project planning and tracking
2/5/2019 • 2 minutes to read • Edit Online
NOTE
This topic will be removed in a future documentation update.
Basic guide to quoting, pricing and billing
2/28/2019 • 2 minutes to read • Edit Online
NOTE
This topic will be removed in a future documentation update.
Advanced quoting, pricing, and billing guide
2/28/2019 • 2 minutes to read • Edit Online
NOTE
This topic will be removed in a future documentation update.
Resource management guide
3/29/2019 • 2 minutes to read • Edit Online
NOTE
This topic will be removed in a future documentation update.
Reporting guide
2/28/2019 • 2 minutes to read • Edit Online
NOTE
This topic will be removed in a future documentation update.
Upgrade home page
5/31/2019 • 2 minutes to read • Edit Online
NOTE
PSA version 3.x includes significant changes. It has been built on the Unified Interface framework to help provide an improved
user experience. The redesigned app delivers a consistent, uniform user interface (UI), and it follows responsive design
principles for optimal viewing on any screen size or device. There have been other changes throughout the application. Some
of the areas that have been changed include pricing, booking and assigning resources, time, expenses, and approvals.
Before you begin the upgrade process, we recommend that you complete the following tasks:
Verify whether both Microsoft Dynamics 365 for Field Service and PSA are installed on the identified
instance. If both solutions are installed, you should plan to upgrade both before you resume regular use of
the instance.
Carefully review the following topics. Awareness and understanding of the changes between versions will
help you with the upgrade process. These topics provide information about the major changes in PSA,
together with considerations and recommendations for planning your upgrade to version 3.x.
What's new or changed in Project Service Automation version 3
Upgrade considerations - Project Service Automation version 2.x or 1.x to version 3
Upgrade your sandbox instance to evaluate the changes in your implementation before you upgrade your
production instance.
After you've reviewed the topics that were mentioned earlier and are ready to upgrade to PSA version 3.x or the
UCI-based version, submit a request to Microsoft support to make the upgrade available from Admin center. In
your request, provide the details of your instance.
NOTE
For the best experience when you use older versions of the Field Service and PSA applications, go to the System settings
page and for the field, Use the new Unified Interface only (recommended) field, select No as these versions aren't
designed to be correctly loaded in UCI. After you have turned off UCI, you can open and run these versions of Field Service
and PSA by using the old web client. For instructions about how to turn off the UCI client, see Enable unified interface only.
What's new or changed in Project Service
Automation version 3
3/22/2019 • 18 minutes to read • Edit Online
Project scheduling
The project schedule, which was known as the Work Breakdown Structure (WBS ) in previous versions, has been
renamed Schedule and is accessed by clicking the Schedule tab.
The schedule now has a new surface for interaction that is both modern and accessible, however the underlying
PSA scheduling engine has not changed. The control buttons in the schedule grid’s ribbon allow you to interact
with the schedule similar to the previous version of PSA. Additional changes to the schedule include:
Gantt chart - The Gantt chart is no longer present. A new Gannt visualization will be returning in a future
update.
Column headers - You can hide column headers in the grid by clicking the down indicator next to the column
title.
Columns - You can show hidden columns by clicking Add column.
Transaction category - A Transaction category lookup has been added to the schedule grid and is shown by
default.
Project templates
The following changes have been made to project template functionality.
Create a project template
You can create a project template in version 3 similar to previous version of PSA. The template can contain only a
schedule and the schedule can include assignments, but they are not required. If the schedule does have
assignments, they can only be for generic resources. You can generate resource requirements for generic
resources, but they can't be booked with real resources in the template. You can't book a real resource to a team in
a template.
Create a template from an existing template
When you create a new project template from an existing template in PSA version 3, the following happens:
The source project’s schedule is copied into the template.
Generic resources are copied into the team and any generic resource assignments are copied over.
Requirements for the generic resources are not copied over.
Create a template from an existing project
When you create a new project template from an existing project, the following happens:
The source project’s schedule is copied into the template.
Generic resources are copied into the team and any generic resource assignments are preserved. Requirements
for the generic resources are not copied over.
Named resources, both assigned or unassigned are removed from the team and replaced with generic
resources.
If present, customer information is removed.
If present, references to quotes and contracts are removed.
Create a project from a template
In PSA version 3, when you create a new project from a template, the following happens:
The schedule, team, and assignments are copied to the new project.
The start date is either the copy date or date selected by the user.
For any generic team members with resource requirements in the template, the requirements are not copied or
generated automatically. You will need to generate them.
Copy a project
In PSA version 3, when you copy a project, the following happens:
The estimated start date is copied, but can be changed.
The project schedule and tasks are copied.
Generic resources and their assignments are copied. Resource requirements for the generic resources are not
copied. You will need to re-generate them.
Real resources and their assignments are not copied. Instead, they are replaced by generic resources.
Actuals are not copied to the new project.
Estimates
Estimates have been split into two tabs, Resource assignment and Estimates. The Resource assignment tab
contains the effort estimates and shows the resource assignments for the tasks in a time-phased view. You can edit
the estimates based on what the scheduling engine has generated.
The Estimates tab shows the cost and sales amounts for resource assignments. The amounts are read-only. The
costing and sales pricing are now driven from the team member assignments on the schedule. This means that if
you have a task without any assignment, the task will show under the unassigned bucket. This also means that
without role, which is a default pricing dimension, there will be no estimated cost or sales if you have a customer
or contract/quote associated with the project.
Category is also supported on tasks in the schedule view. Grouping by category on the time-phased view of
estimates will provide a better experience, especially when you also have expense estimates in your project.
Expense estimates are entered using a grid on a separate tab.
Expense estimates can be entered in the grid on the Expense estimates tab.
Resource management
In PSA version 3, with the new Unified Client UI and changes in the relationship between bookings and
assignments, staffing a project with generic or real resources has changed dramatically from version 2 and version
1. However, the concepts of bookable resources, both real and generic remain the same, as do team members,
requirements, assignments, and bookings.
Look-up fields are backed by system views. For example, after you enter project information, the Project task field
is set by default to My open project tasks view. To create time entries for tasks that are not assigned to the user,
click Change view on the lookup and select All Active project tasks. After the time entry has been created and
shows in the grid, you can edit any line values directly in the grid.
Bulk create/copy
After a few time entries have been created, you can use the copy functionality to bulk create additional time entries.
Click Copy to open the Copy dialog. In From period: Start Date, set the date range from which time periods
must be copied from. In To Period: Start Date, specify the date for which time entries must be created. Click
Copy to copy the time entries to the corresponding day of the week indicated in the To Period. For example,
Monday's time entry from last week will be copied into Monday for the week indicated in the To Period.
Import data
Assignments and exchange follow the same UI pattern, which allow the user to specify the date range from when
bookings need to be imported. You must then explicitly choose the bookings that should be copied into Draft time
entries. In version 3, you can no longer see the pattern of Suggested time entries on the grid and calendar.
Change in calendar control
In version 3, we have moved away from the custom calendar control and are now using the UC Calendar to
display time entries for the week. With this calendar, you can view day, week, and month.
NOTE
A limitation on the Calendar is that this control does not support actions on individual calendar items. For example, you will
not be able to select one or more calendar items and submit or delete those items. Clicking on a calendar item will open the
Time entry entity page for additional actions.
Extensibility
Capture data on custom fields in time and expense entry entities only - Time entry uses an editable grid, a
read-only grid, and calendar controls from the platform. All of these controls are native and therefore will support
customizations. In PSA version 3, you can add additional custom fields, set up lookup fields, and back them up with
custom views. You can also set custom business logic based on selected values in custom fields.
Capture data on custom fields in time and expense entry and propagate it through entities supporting
the submission and approval flow - The typical processing of time entries is shown in the following diagram.
If business requirements stipulate that time and expense entities must capture custom pricing dimensions and
propagate the values that are set by a time and entry resource in the custom pricing dimension through all of the
entities in the previous graphic, see Set up custom fields as pricing dimensions
To support business requirements where time and expense entities must capture custom non-pricing dimensions
and propagate the values, you can use the pricing dimensions setup and express the custom dimensions as pricing
dimensions with no cost or bill rate. Another scenario would be to add a custom field to each of the entities, using
the same field name across all entities. Custom plug-ins can be created to relate records in the entities that are
participating in the submission/approval flow using the transaction origin and transaction connection entities.
Delegate time and expense entry
The Common Data Service platform doesn't support one user impersonating another, which means in version 3 of
PSA there is no support for delegated time and expense entry. However, partners and customers have leveraged a
workaround to enable support for delegated time entry experiences in version 3. This is only a workaround and
not a complete solution, so it is important to understand the limitations and only use this approach if the
limitations are acceptable.
IMPORTANT
This information should only be considered suggested guidance for custom implementation by a partner/customer. The
product team will not offer formal support for this functionality through any of our support channels.
Customization details
Customization allows you to add Bookable resource to the create and edit experiences, which will allow a user to
act as a delegate by changing the Booking resource field to another user for whom time and expense entries
need to be recorded. The following steps cover time entry delegation. The same information applies to expense
entry delegation.
1. Ensure that the delegated user has global security access on projects and project tasks.
2. Because Bookable resource, which is a field on the Time entry entity, is not exposed on the Quick create
page, you need to add it.
-or-
3. Create a custom view to view only time entries that are created for the resource. Publish the customizations on
the app module designer for this view to show up under View selector on the Time entries page. There are
two plug-ins that handle setting the manager for non-project time entries:
PreValidateTimeEntryCreate
PreValidateTimeEntryUpdate
4. Create a new plug-in to overwrite the Manager field to the manager of the user assigned in the Bookable
resource field. Use the same Execution stage as the out-of-band (OOB ) plug-in (pre-validation) and use an
Execution order that is higher than OOB plug-ins (greater than 1). This will ensure that the custom plug-in is
executed after the OOB plug-ins.
End user experience
1. When you create a time entry on the quick create page, enter the Project and Project task details and then
choose the user on Bookable resource field for whom the time entries need to be recorded for.
2. By default, this field defaults to the logged in user, however given that the user overrode this field, time entry is
now created for the chosen Bookable resource.
3. When you submit the time entries that you created for these records, the entries will be queued up for the
approver in the project as expected.
4. When you recall the time entries created for the other user, the time entries will be returned to a state of Draft
with the Bookable Resource field set to the other user.
5. Optionally, you can switch to the custom view to filter time entries created for the other user.
Limitations
Copy and Import functionality works only in the context of the user who is logged in. This means that it is not
possible to copy or import time entries that are created for the user who is logged in as the bookable resource.
Time entries that are not for a project will be routed for approval to the manager of the bookable resource only if
step 4 in the section Customization Details above is completed. Otherwise, non-project time entries for the other
user will be incorrectly routed to the manager of the logged in user.
Other changes
The Bookings and Tasks functionality has been removed.
Multidimensional pricing
To maximize flexibility and meet different business requirements, version 3 of PSA supports discrete application of
pricing dimension sets to cost and bill rates. Dimension values can be set as the default and then propagated
across the costing and pricing process from resource profiling to time entry to project actuals. Customer-specific
configuration and modification or extension leverages standard Dynamics 365 for Customer Engagement
customizability infrastructure.
PSA ships with a default set of pricing dimensions and roles and resource units, and allows for the setup of prices
and costs for each Role and Organizational unit combination.
For customers of PSA that want to continue to use these out-of-the box fields as pricing dimensions in version 3,
there will not be any observable change. You can continue to use PSA as usual. If, however, you need to price or
cost for your resources using other additional attributes, version 3 allows for adding your own custom pricing
dimensions to PSA. The extension of custom pricing dimensions is a complicated configuration experience.
The setup of Chargeable roles and Chargeable categories also leverages the out-of-the-box editable grid control.
For each role and category, the supported options for billing type during the Quoting and Contracting phase
remain unchanged from prior versions as Chargeable and Non-chargeable. Complimentary is not a
supported type during the Quoting or Contracting phase. Complimentary is supported only during Time or
Expense approval.
Create and edit custom pricing for a PSA quote and project contract
In versions 1 and 2, using custom price list for specific quotes and contracts was done using Edit prices on the
Chargeability view. The Chargeability view was located in the top navigation of a quote line or a contract line.
This was also where you could set up chargeability options for roles and or expense categories. As of version 3,
creating and using a custom project price list on a PSA quote and PSA project contract has been separated from
chargeability setup. PSA quote and PSA project contracts have a new tab called Project price lists. This tab shows
an associated view of all Project price lists that are attached to the PSA quote or project contract. To create a
custom price list from an existing price list that is already associated to the project quote or contract, click Create
custom pricing. This will make a copy of all the associated price lists and attach them to the Quote or contract.
You can now open the price list and edit role or expense category price so that those pricing changes will only
apply to this quote or contract.
The following graphic is before custom price lists have been created.
The following graphic shows after custom price lists have been created.
NOTE
A short lag might occur between when you click Create Custom Pricing to when the custom price list is created. We
recommend refreshing the grid instead of clicking multiple times. A custom price list has been created if the associated price
list name has the quote name or the project contract name appended to it.
Upgrade considerations - PSA version 2.x or 1.x to
version 3
12/10/2018 • 6 minutes to read • Edit Online
Resource assignments
In Project Service Automation (PSA) version 2 and version 1, task assignments were stored as child tasks (also
called line tasks) in the Task entity, and indirectly related to the Resource Assignment entity. The line task was
visible in the assignment pop-up window on the Work Breadown Structure (WBS ).
In version 3 of PSA, the underlying schema of assigning bookable resources to tasks has changed. The line task
has been deprecated and there is a direct 1:1 relationship between the task in the Task entity and the team
member in the Resource Assignment entity. Tasks that are assigned to a project team member are now stored
directly in the Resource Assignment entity.
These changes impact the upgrade of any existing projects that have resource assignments for named bookable
resources and generic resources on a project team. This topic provides the considerations that you will need to take
into account for your projects when you upgrade to version 3.
Tasks assigned to named resources
Using the underlying task entity, tasks in version 2 and version 1 allowed team members to portray a role other
than their default defined role. For example, Gracie George, who’s by default assigned the role of Program
Manager, could be assigned to a task with the role of Developer. In version 3, the role of a named team member is
always the default, so any task that Gracie George is assigned to uses her default role of Program Manager.
If you have assigned a resource to a task outside of their default role in version 2 and version 1, when you upgrade,
the named resource will be assigned the default role for all task assignments, regardless of role assignment in
version 2. This will result in differences in the calculated estimates from version 2 or version 1 to version 3 because
estimates are calculated based on the role of the resource and not the line task assignment. For example, in version
2, two tasks have been assigned to Ashley Chinn. The role on the line task for task 1 is Developer and for task 2,
Program Manager. Ashley Chinn has the default role of Program Manager.
Because the roles of Developer and Program Manager differ, the cost and sales estimates are as follows:
When you upgrade to version 3, line tasks are replaced with resource assignments on the task of the bookable
resource team member. The assignment will use the default role of the bookable resource. In the following graphic,
Ashley Chinn who has a role of Program Manager, is the resource.
Because the estimates are based on the default role for the resource, the sales and cost estimates may change.
Note that in the following graphic, you no longer see the Developer role as the role is now taken from the
bookable resource’s default role.
After upgrade is complete, you can edit a team member's role to be something other than the assigned default.
However, if you change a team members role, it will be changed on all of their assigned tasks because team
members are no longer allowed to be assigned multiple roles in version 3.
This is also true for line tasks that were assigned to named resources when you change the resource’s organization
unit from the default to another organization unit. After the version 3 upgrade is complete, the assignment will use
the resource’s default organization unit instead of the one set on the line task.
Tasks assigned to generic resources
In version 2 and version 1, you can set the role and org unit on a task and then use the Generate team feature to
generate generic resources based on the attributes set on the task. In version 3, you create the generic team
members with role and org unit, and then assign the team members to tasks.
In version 2 and version 1, projects with generic resources can be in two states, or a mix of both at the task level.
For example, you can have the following scenarios:
Tasks with roles and org units set, but no affiliated resource assignment has been generated.
Tasks with generic team member resource assignments that were assigned by creating generic resource using
the Generate team feature.
Before you begin your upgrade, we recommend that you re-generate the team for each project that has tasks
assigned to generic resources or has yet to have the generate team process run on them.
For tasks that are assigned to generic team members that were generated with Generate Team, the upgrade will
leave the generic resource on the team and leave the assignment to that generic team member. We recommend
that you generate the resource requirement for the generic team member after the upgrade but before you book
or submit a resource request. This will preserve any org unit assignments on the generic team members that are
different than the project’s contracting org unit.
For example, in the Project Z project, the contracting org unit is Contoso US. In the project plan, testing tasks
within the Implementation phase have been assigned the role Technical Consultant and the assigned org unit is
Contoso India.
After the implementation phase, the integration test task is assigned to the role Technical consultant, but the org is
set to Contoso US.
When you generate a team for the project, two generic team members are created due to the different org units on
the tasks. Technical consultant 1 will be assigned the Contoso India tasks and Technical consultant 2 will have the
Contoso US tasks.
NOTE
In PSA version 2 and version 1, the team member does not hold the organization unit, that is maintained on the line task.
When the upgrade is complete, the organization unit on the line task that corresponds to the generic team member
is added to the generic team member and the line task is removed. Because of this, we recommend that before you
upgrade, you generate or re-generate the team on each project that contains generic resources.
For tasks that are assigned to a role with an org unit that differs from the org unit of the contracting project, and a
team has not been generated, upgrade will create a generic team member for the role, but will use the contracting
unit of the project for the team member's org unit. Referring back to the example with Project Z, this means that
the contracting org unit Contoso US, and the project plan testing tasks within the Implementation phase have been
assigned the role Technical Consultant with the org unit assigned to Contoso India. The Integration test task that is
completed after the Implementation phase has been assigned to the role Technical consultant. The org unit is
Contoso US and a team has not been generated. Upgrade will create one generic team member, a Technical
consultant that has the assigned hours of all three tasks, and an org unit of Contoso US, the project’s contracting
org unit.
Changing the default of the different resourcing org units on un-generated team members is the reason we
recommend that you generate or re-generate the team on each project that contains generic resources prior to the
upgrade so that the org unit assignments are not lost.
Project planning home page
3/7/2019 • 2 minutes to read • Edit Online
Tasks
The first step in creating a project schedule is to break the work down into manageable portions. The schedule in
PSA supports the following features:
Project root node
Summary or container tasks
Leaf node tasks
Project root node
The project root node is the top-level summary task for the project. All other project tasks are created under it. The
name of the root node is always set to the project name. The effort, dates, and duration of the root node are
summarized based on the values in the hierarchy below it. You can't edit the properties of the root node. You also
can't delete the root node.
Summary or container tasks
Summary tasks have sub-tasks or container tasks under them. They have no work effort or cost of their own.
Instead, their work effort and cost are a rollup of the work effort and cost of their container tasks. The start date of
the summary task is the start date of the container tasks, and the end date is the end date of the container tasks.
The name of a summary task can be edited, but scheduling properties (effort, dates, and duration) can't be edited.
If you delete a summary task, you also delete all its container tasks.
Leaf node tasks
Leaf node tasks represent the most granular work on the project. They have an estimated effort, resources,
planned start and end dates, and a duration.
Task attributes
A task's name describes the work that must be completed. In PSA, the attributes that are associated with a task
describe the schedule of the task and its staffing requirements.
Schedule attributes
The Effort, Start date, End date, and Duration attributes define the schedule for the task.
Additional schedule attributes include:
Effort hours: Enter an estimate of the hours that are required to complete the task.
Duration: Specify the number of workdays that are required to complete the task.
Schedule ID: This automatically generated ID is used to order tasks in the hierarchy. Dependencies between
the tasks manage the actual order in which the tasks are worked on.
Staffing attributes
Staffing attributes are accessed through the Resources field in the schedule. You can either search for an existing
resource, or click Create and in the Quick Create pane, add a project team member as a new resource.
The Role, Resourcing Unit, and Position Name fields are used to describe the staffing requirements for the
task. These staffing attributes together with the task schedule are used to find available resources to do this task.
Role - Specify the type of resource that is required to do the task.
Resourcing unit - Specify the unit that resources for the task should be assigned from. This attribute affects the
cost and sales estimate for the task if the cost and bill rate for the resource are set based on resourcing units.
Position name – Enter a friendly name for the generic resource that serves as a placeholder for the resource that
will ultimately do the work.
The Resources field holds the position name of the generic resource or named resource when one is found.
The Category field holds the values that indicate a broader type of work that the task can be grouped into. This
field doesn't affect scheduling or staffing. It's used only for reporting.
Task dependencies
You can use the schedule in PSA to create predecessor relationships between tasks. The Predecessor field under
Tasks takes one or more values to indicate the tasks that a task depends on. When predecessor values are
assigned to a task, the task can start only after all the predecessor tasks have been completed. Because of the
dependency, the planned start date of the task is reset to the date when the predecessor tasks are completed.
The task mode has no effect on updates that are made to the start and end dates of predecessor/dependent tasks.
Task mode
The task mode determines the scheduling of leaf node tasks. PSA supports two task modes for every task:
automatic scheduling and manual scheduling.
Auto -scheduling
When task mode is set to Automatically Scheduled for a task, the task scheduling engine uses the scheduling
rules on task attributes to determine the schedule for the task.
Scheduling rules
By default, if a leaf node task doesn't have predecessors, its start date is set to the project's scheduled start date.
The duration of a leaf node task is always calculated as the number of working days between its start and end
dates. When a task is automatically scheduled, the scheduling engine follows these rules:
The start and end dates of the task must be working days, according to the project's scheduling calendar.
For any task that has predecessor tasks, the start date is automatically set to the latest end date of its
predecessors.
Effort is calculated by using this formula: Number of people × Duration × Hours in a standard workday in the
project calendar.
Manual scheduling
If the rules of automatic scheduling don't meet your requirements, you can set the task mode for the task to
Manually Scheduled. This setting stops the scheduling engine from calculating the values of other scheduling
attributes. Regardless of the task mode, if you set predecessors on tasks, you always affect the dependent task's
start date.
Project costs and revenue
3/7/2019 • 6 minutes to read • Edit Online
NOTE
By default, Microsoft Dynamics 365 stores cost amounts in your base currency. However, the cost amounts that are shown
on the Estimates tab are in the currency of the contracting unit.
Expense estimates
The Add a New Expense Estimate button in the grid view lets you record any expenses that are incurred in the
project, but that aren't directly related to labor. You can record the expense estimates for a specific task or for the
entire project. Select expense categories and the tentative date when you expect to incur the expense. If the
associated cost price list and sales price list have default prices (or if markup percentages are defined for expense
categories), they are automatically entered on the estimate line when the association occurs.
Sales estimates and projects
3/7/2019 • 2 minutes to read • Edit Online
When you create a new project from the quote line details, you can take advantage of project templates. Project
templates are model projects that represent standard project plans and financial estimates that are typical in an
organization. They can also represent copies of project plans and estimates from past projects.
When you create the project from the quote, the project is automatically associated with the quote line.
Components of estimates in a project
A schedule lets you divide work into tasks, maintain a hierarchy of tasks, determine what resources are required to
complete a task, and assign an estimate of the effort that is required to complete a task.
You can define the work effort and schedule estimates by using the fields on the Schedule tab of the Project
page. Because a price list is associated with the project, financial estimates are calculated by using cost and sales
prices that are defined in the price list.
Re-projecting effort
It's common for a project manager to revise the original estimates on a task. Project re-projections are a project
manager's perception of estimates, given the current state of a project. However, we don't recommend that project
managers change the baseline numbers, because the project baseline represents the established source of truth for
the project's schedule and cost estimate, and all project stakeholders have agreed to it.
There are two ways that a project manager can re-project effort on tasks:
Override the default ETC with a new estimate of the actual remaining effort on the task.
Override the default progress percentage with a new estimate of the true progress on the task.
Each of these approaches cause a recalculation of the task's ETC, EAC, and progress percentage, and the projected
effort variance on a task. The EAC, ETC, and progress percentage on the summary tasks are also recalculated, and
produce a new projection of effort variance.
NOTE
This view shows only labor costs and doesn’t include costs from the expense estimates.
Schedule
A schedule in a project template has the same set of elements as a schedule in a project. You can create a task
hierarchy, associate roles with tasks, define schedule attributes, and set dependencies. A schedule in a project
template also supports task modes for each task. Therefore, it supports the scheduling engine. You must associate
a project calendar with the project. When you create a work schedule, there is no difference between a project
template and a project.
Project estimates
Project estimates in a project template work the same way as project estimates in a project. However, the cost and
sales prices are pulled from the default cost and sales price lists that are defined in the parameters.
New
When you create a project, the project stage is set to New. If the project was created from a template, it might
have schedule, estimate, and team data. Otherwise, it's just an outline of the project, and the remaining
components must be entered.
Quote
When you associate a project with a quote, or when you create a project from a quote, the project stage is set to
Quote, and the estimated start and end dates are updated. While the project is in the Quote stage, the Sales tab
on the Project Entity page shows details of the quote.
Plan
When you win a quote that is associated with a project, and the project is moved to the Contract phase, the
project stage is updated to Plan. While the project is in the Plan stage, the Project Entity page shows details of
the contract.
Deliver
When the project plan is completed, and you're ready to start the project, the project manager should update the
project stage to Deliver to show that the project has started.
Complete
When the work for the project is completed, the project manager can update the stage to Complete. By updating
the project stage to Complete, the project manager indicates that the work is 100-percent completed, but that the
project is being kept open so that any pending time or expense entries can be recorded.
Close
When all transactions are recorded for the project, the project manager can update the stage to Close. At that
point, no transactions can be recorded, and the project is set to read-only.
Project settings
3/7/2019 • 2 minutes to read • Edit Online
Work template
To create a project schedule, you create a project calendar template that defines the number of working hours per
day and any business closures. To create a project calendar template, you associate a work template with the
Calendar template field for the project. Follow these steps to create a work template.
1. In PSA, in the left navigation pane, click Resources.
2. On the Resources list page, open a user record, and then select Show Work Hours.
NOTE
Make sure that you allow pop-ups on the browser page. This lets you see the work hours set for the resource.
3. On the Monthly View tab, click Set Up. A list of three options appears:
New Weekly Schedule
Work Schedule for One Day
Time Off
4. Select New Weekly Schedule, and then set the options for this resource schedule. You can set a recurring
weekly schedule, daily hour parameters, business closures, and more.
5. Set the date range, select Save, and then click Close.
6. Go back to the Resources list page, and select the resource that you set the work hours for.
7. Select Set Calendar As to set the work template.
8. In the Work Template dialog box, enter a name for the work template, and then select Apply.
You can now associate the work template with a project calendar template.
Resource roles
The term resource role refers to the set of skills, competencies, and certifications that a person must have to
perform a specific set of tasks on a project. PSA lets you cost and bill a resource's time based on the role that the
resource is associated with. Every organization must set up these roles by using the left navigation on the Project
Service menu.
Every organization must set up these roles on the Active Resource Categories page. To open this page, in the left
navigation pane, select Resource Roles.
Price lists
Price lists let you set cost and sales prices for resource roles, expense categories, products, and other elements in
an organization. Before you set financial estimates for the work that must be delivered for a project, you should
create a backing cost and sales price list. In the parameters section, you should also set up a default cost and sales
price list that applies to all projects that are created in the organization. On the Active Project Parameters page,
make sure that you set up a default cost and sales price list.
Pricing and costing dimensions home page
1/24/2019 • 2 minutes to read • Edit Online
The dimensions that are used in human resources to set up pricing and costs fall into two categories:
People
Planned work
Because of this, there are two types of pricing dimension values available in Project Service Automation (PSA):
Option sets - Dimensions that are fixed enumerations for a set of values.
Entity-based values - Dimensions that can be a varied set of values.
Pricing dimensions
PSA ships with a default set of pricing dimensions. You can view these by going to Project Service > Parameters.
In the parameter record, on the Amount-based pricing dimensions tab, verify that the role,
msdyn_resourcecategory and resourcing organizational unit, msdyn_organizationalunit have the fields
Applicable to sales and Applicable to cost set to Yes. This will allow you to set up the price and cost for each
role and organizational unit combination.
IMPORTANT
If you have been the using out-of-the box fields of role and organizational unit as pricing dimensions prior to version 3 of
PSA, there will not be any observable change. You can continue to use Project Service as usual.
If you need to price or cost for your resources using additional attributes, you can create customized fields, entities,
and dimensions. For more information, see the following topics, however note that you must complete the
procedures in the order listed below:
Create custom fields and entities
Add custom fields to price setup and transactional entities
Set up custom fields as pricing dimensions
Update plug-in attributes to include new pricing dimensions
Complete the following steps any time that you want to create a custom option set or entity on the PowerApps
platform.
The procedures in this topic should be completed using the web interface of Project Service Automation (PSA).
IMPORTANT
We recommend that you make all custom pricing dimension changes in a separate solution. This important best practice
provides flexibility in the future to update or remove changes as needed, will help with re-use of your work, and makes it
easier to port these changes to another instance. After you have made all of the required changes, export this solution as a
Managed solution and import it into other instances to reuse your pricing setup.
Create custom fields and option sets in the pricing dimension solution
A pricing dimension can be an option set or an entity. Both must be created in your pricing solution. The steps in
this procedure explain how to create entity-based dimensions and option set-based dimensions.
Entity-based dimensions
1. In PSA, click Settings > Solutions, and then double-click <your organization name> pricing dimensions.
2. In Solution Explorer, on the left navigation pane, select Entities.
3. Click New to create a new entity called Standard Title. Enter the remaining required information, and then
click Save.
Add all required PSA entities and related components to the Pricing
Dimension Solution
You will need to add the following Project Service entities to your pricing solution. Use the steps in this procedure
to make some important schema changes in the pricing solution so that the entities become aware of the new
pricing dimensions.
1. In PSA, click Settings > Solutions, and then double-click <your organization name> pricing dimensions.
2. In Solution Explorer, on the left navigation pane, select Add Existing > Entities.
3. In the Solution Components dialog box, select the following entities:
Actual
Bookable Resource
Estimate Line
Invoice Line Detail
Journal Line
Project Contract Line Detail
Project Team Member
Quote Line Detail
Role Price Markup
Role Price
Time Entry
NOTE
Make sure to include all forms and views for each of the entities selected.
4. When prompted to include any dependent entities for the entities selected above, click No.
Add custom fields to price setup and transactional
entities
1/24/2019 • 7 minutes to read • Edit Online
This topic assumes that you have completed the procedures in the topic, Create custom fields and entities. If you
haven't completed those procedures, go back and complete them and then return to this topic.
In this topic, the procedures will show you how to add the required custom field references to entities and to the
user interface (UI) elements such as forms and views.
IMPORTANT
When you add a field to more than one entity, use the same field name across all of the entities.
In the sales and estimation phases for a project, estimates of the work effort that is required to complete Local
and Onsite work, in Regular hours and Overtime hours are used to estimate the value of the Quote/Project.
The fields Resource Work Location and Resource Work Hours will be added to the estimation entities, Quote
Line Detail, Contract Line detail, Project Team Member, and Estimate Line.
1. In PSA, click Settings > Solutions, and then double-click <your organization name> pricing dimensions.
2. In Solution Explorer, on the left navigation pane, select Entities > Quote Line Detail.
3. Expand the Quote Line Detail entity, and select Fields.
4. Click New to create a new field called Resource Work Location and select the field type, Option set.
5. Select Use an existing Option set and Resource Work Location, and then click Save.
6. Repeat steps 1 - 5 to add this field to the Project Contract line detail, Project Team Member, and Estimate
Line entities.
7. Repeat steps 1 - 6 for the Resource Work Hours option set.
For delivery and invoicing, completed work needs to be accurately priced to select whether it was performed
Local or Onsite, and whether it was completed during Regular hours or Overtime on the Project Actuals. The
Resource Work Location and Resource Work hours fields should be added to the Time Entry, Actual,
Invoice Line Detail, and Journal Line entities.
1. In PSA, click Settings > Solutions, and then double-click <your organization name> pricing dimensions.
2. In Solution Explorer, on the left navigation pane, select Entities > Time Entry.
3. Expand the Quote Line Detail entity, and then select Fields.
4. Click New to create a new field called Resource Work Location and select Option set as the field type.
5. Select Use an existing Option set, select the Resource Work Location option set, and then click Save.
6. Repeat steps 1 - 5 to add this field to the Actual, Invoice Line Detail, and Journal Line entities.
7. Repeat steps 1 - 6 for the Resource Work Hours option set.
This completes the schema changes required for option set-based custom dimensions.
Set up Dimension value defaulting using the mappings features of the platform
For Time Entry, it would be helpful to have the system default the standard title on the Time Entry from the
Bookable Resource that is recording the time entry. Use the following steps to add field mappings on the 1:N
relationship from Bookable Resource to Time Entry.
1. In Solution Explorer, on the left navigation pane, select Entities > Standard Title.
2. Expand the Standard Title entity and select 1:N Relationships.
3. Double-click Bookable Resource to Time Entry. On the Relationship page, click Use Field mappings.
4. Click New to create a new field mapping between the Standard Title field on the Bookable Resource entity
to the Standard Title reference field on Time Entry entity.
This completes the schema changes required for entity-based custom dimensions.
PROJECT SERVICE ENTITY FORMS THAT NEED THE NEW FIELD VIEWS THAT NEED THE NEW FIELD
Project Contract line detail • Project Information • Combined Contract Line Details
• Project Quick Create • Active Contract Line Details
• Contract Line Details Associated View
Custom fields may also need to be added on business rules depending on what you have defined. One out-of-the-
box example is for the business rule Editability of Time Entry based on status. This rule defines which fields
need to be locked when the Time Entry is in a non-editable status such as Approved. Add fields to this business
rule so that the fields are locked for editing when the Time Entry is in a status other than Draft or Returned.
Set up custom fields as pricing dimensions
1/24/2019 • 4 minutes to read • Edit Online
Before you begin, this topic assumes that you have completed the procedures in the topics, Create custom fields
and entities and Add custom fields to price setup and transactional entities. If you haven't completed those
procedures, go back and complete them and then return to this topic.
This topic provides information about setting up custom pricing dimensions. In the Project Service web interface,
on the Parameters page, the Amount-Based Pricing Dimensions tab shows the records in the pricing
dimension entities. By default, Project Service installation creates 2 rows in the grid on this tab:
msdyn_resourcecategory (Role)
msdyn_OrganizationalUnit (Organizational Unit)
IMPORTANT
Do not delete these rows. However, if you do not need them, you can make them not applicable in a specific context by
setting Applicable to Cost, Applicable to Sales, and Applicable to Purchase all to No. Setting these attribute values to
No has the same effect of not having the field as a pricing dimension.
Notice that Resource Work hours (msdyn_resourceworkhours) has been added as a markup-based dimension
and has been added to the grid on the Markup Based Pricing Dimension tab.
IMPORTANT
Any change to pricing dimension data in this table, existing or new, is propagated to the Project Service pricing business logic
only after the cache is refreshed. The cache refresh time may take up to 10 minutes. Allow that length of time to see the
changes in price defaulting logic that must result from changes to the Pricing Dimension data.
RESOURCE WORK
ROLE ORG UNIT WORK LOCATION STANDARD TITLE HOURS MARK UP
If a resource from Contoso India whose base rate is 100 USD is working onsite, and they log 8 hours of Regular
time and 2 hours of overtime on the time entry, the Project Service pricing engine will use the base rate of 100 for
the 8 hours to record 800 USD. For the 2 hours overtime, a markup of 15% will be applied to the base rate of 100
to get a unit price of 115 USD and will record a total cost of 230 USD.
Applicable to Cost
If this is set to Yes, it indicates that the dimension value from the input context should be used to match to the
Role Price and Role Price Markup when retrieving the cost and markup rates.
Applicable to Sales
If this is set to Yes, it indicates that the dimension value from the input context should be used to match to the
Role Price and Role Price Markup when retrieving the bill and markup rates.
Applicable to Purchase
If this is set to Yes, it indicates that the dimension value from the input context should be used to match to the
Role Price and Role Price Markup when retrieving the purchase price. Currently Project Service does not
support subcontracting scenarios, so this field is not used.
Priority
Setting the dimension priority helps Project Service pricing produce a price even when it can't find an exact match
between the input dimension values and the values from the Role Price or Role Price Markup tables. In this
scenario, Project Service will use null values for unmatched dimension values by weighing the dimensions in order
of their priority.
Cost Priority: The value of a dimension's cost priority will indicate the weight of that dimension when
matching against the setup of cost prices. The value of Cost Priority must be unique across dimensions that
are Applicable to Cost.
Sales Priority: The value of dimension's sales priority will indicate the weight of that dimension when
matching against the setup of sales prices or bill rates. The value of Sales Priority must be unique across
dimensions that are Applicable to Sales.
Update plug-in attributes to include new pricing
dimensions
1/24/2019 • 2 minutes to read • Edit Online
NOTE
If you are not using the Project Service Automation (PSA) Quoting and Contracting features, you can skip this topic.
This topic assumes that you have completed the procedures in the topics, Create custom fields and entities, Add
custom fields to price setup and transactional entities, and Set up custom fields as pricing dimensions. If you
haven't completed those procedures, go back and complete them and then return to this topic.
When a quote line detail is created on the Quote Line page for a project quote line, the system creates two
estimate lines in the background -- one line for the cost side of the estimate and one for sales side. This is the same
for project contract lines.
When you make a change to the quantity or a field on the cost side, that change is propagated to the sales side.
This is possible because of the following plug-ins that must be re-registered after a change to pricing dimensions.
PreOperationContractLineDetailUpdate - Updates msdyn_orderlinetransaction.
PreOperationQuoteLineDetailUpdate - Updates msdyn_quotelinetransaction.
The following steps walk you through the process of registering the plug-ins.
1. Open the PluginRegistrationTool and connect to your online instance.
2. Click Search and search for the plug-in to be updated.
3. After the plug-in is found, select it and then click Select on Main Form.
4. Select the step of the plug-in to be updated, right-click, and then select Update.
5. In the update window, click the ellipsis (...) in the filtering attributes.
Project Service Automation (PSA) has many fields on the Actuals entity that can be used as pricing dimensions for
resource-based pricing in project organizations. For example, one common field is Bookable Resource. Smaller
companies that have fewer than 20-30 billable resources may find that having bill and cost rates specific to each
resource is a simpler approach. However, as the billable workforce grows, this could become unrealistic to maintain
as resource cost and bill rates begin to vary as resources get promoted, gain more experience, or acquire a different
skill sets. Because this approach still works for companies of a certain size, see the topic, Use a bookable resource
as a pricing dimension to understand how an existing Project Service field can be used as a pricing dimension.
Another example is that of transaction category. Customers and Implementers have used the transaction category
in PSA to classify work and use the field to price and cost based on the category of work. For more information,
see Use transaction category as a pricing dimension.
Use bookable resource as a pricing dimension
1/24/2019 • 3 minutes to read • Edit Online
This topic provides information about using a bookable resource as a pricing dimension. Before you begin, if you
have not already created a pricing dimension solution, you will need to create a new one. If you already have a
pricing dimension solution, then you can make your changes in that solution. If you have not created a new pricing
dimension solution for your organization, complete the procedures in the Create custom fields and entities topic.
Project Contract line detail • Project Information • Combined Contract line Details
• Project Quick Create • Active Contract Line Details
• Contract Line Detail associated view
4. On the associated view that opens, click Add New Pricing Dimension Field Name.
This opens the New Pricing dimension field name page for msdyn_bookableresource.
5. Add msdyn_projectteam to the Entity Locigal Name field and msdyn_bookableresourceid to the Field
Name field. Save the record.
Use transaction category as a pricing dimension
1/24/2019 • 2 minutes to read • Edit Online
This topic shows how to use a transaction category as a pricing dimension. Before you begin, if you have not
already created a pricing dimension solution, you will need to create a new one. If you already have a pricing
dimension solution, then you can make your changes in that solution. If you have not created a new pricing
dimension solution for your organization, complete the procedures in the Create custom fields and entities topic.
Project Contract line detail • Project Information • Combined Contract line Details
• Project Quick Create • Active Contract Line Details
• Contract Line Detail associated view
You may need to review and update your pricing strategy every few years. Any updates you make might require
that you turn off an existing pricing dimension and create a new one. For example, you may have previously priced
by Role, but now you have decided to price by Work Experience. This may require you to turn off Role as a
pricing dimension and create Work Expereince as a new pricing dimension.
Turning off a pricing dimension, regardless if it is out-of-the-box or custom, can be done by setting the Applicable
to Cost and Applicable to Sales fields of the Pricing Dimension to No.
However, when you do this, you might receive the following error message.
This error message indicates that there are price records that were previously set up for the dimension that is being
turned off. All Role Price and Role Price Markup records that refer to a dimension must be deleted before the
dimension’s applicability can be to set to No. This rule applies to both out-of-the-box pricing dimensions and any
custom pricing dimensions that you may have created. The reason for this validation is because Project Service has
a constraint that each Role Price record must have a unique combination of dimensions. For example, on a price
list called US Cost Rates 2018, you have the following Role price rows.
When you turn off Standard Title as the pricing dimension, and the Project Service pricing engine searches for a
price, it will only use the Org Unit value from the input context. If the Org Unit of the input context is “Contoso
US”, the result will be non-deterministic because both the rows will match. To avoid this scenario, when you create
Role Price records, Project Service validates that the combination of dimensions is unique. If the dimension is
turned off after the Role Price records are created, this constraint can be violated. Therefore, it is required that
before you turn off a dimension, you delete all Role Price and Role Price Markup rows that have that dimension
value populated.
Quoting, pricing, and billing home page
3/7/2019 • 2 minutes to read • Edit Online
Estimating a sale
The value of a sale can be estimated based on projects that have previously been delivered and the complexity of
projects. For projects that involve extensions to previous projects, or projects where the vendor's expertise is high
and well-known work templates are used, you can use a simpler estimation process. More complex projects
usually have a longer purchase process. Therefore, there are more stages in the sales estimation process. Early in
the process, the sales team uses the input of account managers and subject matter experts (SMEs) to start to
create a high-level estimate for each distinct component of work that is quoted. These components of work are
represented by quote lines.
You can create a high-level estimate of the quote. Eventually, this high-level estimate will be replaced by a more
detailed estimate that is based on a project plan that you create by using the standardized project templates. These
templates help you build a schedule and determine monetary values on the quote and its components (quote
lines).
You can create multiple quotes for a project and group them under a single opportunity entity type. Eventually,
one of those quotes is marked Closed as Won, and a project contract or statement of work (SOW ) is created. A
project contract holds the contracted value for each component (contract line) that is accepted by the customer for
delivery. An SOW is usually created as a Microsoft Word document. All invoices that are sent to the customer over
the course of the project's delivery reference the project contract or SOW.
You can also create alternate quotes under one opportunity entity type or set up the system so that a project
contract is created when a quote is won. In this case, you can attach a Word document that represents the SOW to
the project contract record.
NOTE
PSA has specific pages for the Opportunity, Quote, Order, and Invoice entities. You must create project service
opportunities, quotes, orders, and invoices using the project information pages for these entities. If you use another page to
create a record, you won't be able to open the record from the Project Information page. If you want to open a record
from the Project Information page, you must delete the record and recreate it using the Project Information page. On
the Project Information page, business logic for each of these entity types ensures that the Type field of the record is set
correctly, and all of the mandatory concepts are properly initialized.
Differences between PSA and Dynamics 365 for Sales
Although the sales process in PSA uses the basic capabilities of the sales process in Sales, it does have some key
differences because of variations in the business practices of project-based organizations. Here are some
examples:
Project quotes – In PSA, a quote is closed after a project contract is created from a quote. In Sales, you can
keep a quote open after you've won it. The reason for this difference is that a match between a quote and a
project contract is better for project-based organizations.
Activation and revisions – In PSA, activation and revisions aren't supported for project quotes. In Sales, a
quote can be locked to prevent additional edits.
Closing a quote as lost or won – In PSA, when a project quote is closed as won or lost, the opportunity
remains open. All other quotes on the opportunity are closed as lost. In Sales, when a quote is closed as won or
lost, the user is prompted to take an action on the opportunity. Depending on the user input, the underlying
opportunity might be closed or left open.
EXPENSE CATEGORY UNIT GROUP UNIT PRICING METHOD PRICE PER UNIT
When you enter an expense on a project, the system determines the price through the combination of the
category and the unit on the expense.
For time, each price list header has a Default Time Unit field. The value is set when you create the price list
header. This unit is then used to set all role-based prices on that price list.
Estimate lines for the Time on Quote field can be expressed in any unit of time. However, estimate lines on
projects and time entries for projects can use only the Hour unit of time. If the unit on the time entry or estimate
line doesn't match the unit on the price list line for that role, the system converts the price to the units that are
defined in the project estimate or the project actual transaction.
The following example shows how PSA uses the unit group, units, and conversion factors.
Units
Unit group: Time
Units: Hour
Day - Conversion factor: 8 hours
Week - Conversion factor: 40 hours
Price list setup on Project A:
Name: UK sales prices 2016
Default time unit: Day
Currency: GBP
ORGANIZATIONAL
ROLE UNIT GROUP UNIT UNIT PRICE
Time entry
The following table shows the resulting sales-side transaction created by PSA for a three hour project.
UNBILLED
SALES
PROJECT TASK ROLE QUANTITY UNIT UNIT PRICE AMOUNT
NOTE
Quotes and quote lines aren't required in PSA. You can start the project process with a project contract (sold project).
However, an opportunity is always required, regardless of whether you start with a quote or a project contract.
Transaction classification
Professional service organizations typically quote and invoice their customers by classification of costs. In PSA,
costs are represented by the following transaction classifications:
Time – This classification represents the cost of labor or human resources' time on a project.
Expense: – This classification represents all other kinds of expenses on a project. Because expenses can be
broadly classified, most organizations create subcategories, such as travel, car rental, hotel, or office supplies.
Fee – This classification represents miscellaneous overhead, penalties, and other items that are charged to the
customer.
Tax – This classification represents tax amounts that users add while they enter expenses.
Material transaction – This classification represents actuals from product lines on a confirmed project
invoice.
Milestone – This classification is used by the fixed-price billing logic in PSA.
One or more of these transaction classifications can be associated with each quote line. After a quote is won, the
mapping between transaction classification and quote line is transferred to the contract line.
For example, a quote might contain the following two quote lines:
Consulting work that uses a Time and material billing method where time and fee transaction classifications
are applicable. For example, all time and fee transactions for the Dynamics AX Implementation example
project are invoiced to the customer based on the time and materials that are used.
Related travel expenses that use a Fixed price billing method. For example, all travel expenses for the
Dynamics AX Implementation example project are invoiced at a fixed monetary value.
NOTE
The combination of the project and transaction classifications of Time, Expense, and Fee that are associated with a quote
line or contract line must be unique. If the same combination of project and transaction class is associated with more than
one contract line or quote line, PSA won't work correctly.
Billing types
The Billing Type field defines the concept of chargeability in PSA. It's an option set that has the following
possible values:
Chargeable – The cost that is accrued by this role/category is a direct cost that drives project execution, and
the customer will pay for this work. The payment can be administered as a time-and-material or fixed-price
arrangement. However, the employee who spends this time will receive the corresponding credit for his or her
billable utilization.
Non-chargeable – The cost that is accrued by this role/category is considered a direct cost that drives project
execution, even though the customer doesn't recognize this fact and won't pay for this work. The employee
who spends this time won't be credited with billable utilization for it.
Complimentary – The cost that is accrued by this role/category is considered a direct cost that drives project
execution, and the customer recognizes this fact. The employee who spends this time will be credited for
billable utilization for it. However, this cost isn't charged to the customer.
Not available – The costs that are incurred on internal projects that don't require revenue tracking are tracked
by using this option.
Invoice schedule
An invoice schedule is a series of dates when invoicing for a project occurs. You can optionally create an invoice
schedule on a quote line in PSA. Each quote line can have its own invoice schedule. To create an invoice schedule,
you must provide the following attribute values:
A billing start date
A delivery date that represents the billing end date on the project
An invoice frequency
PSA uses these three attribute values to generate a tentative set of dates to establish invoicing on.
Invoice frequency
Invoice frequency is an entity that stores attribute values that help express the frequency of invoice creation. The
following attributes express or define the Invoice frequency entity:
Period - Monthly, biweekly, and weekly periods are supported.
Runs per period - For weekly and biweekly periods, you can define only one run per period. For monthly
periods, you can define between one and four runs per period.
Days of run – The days when invoicing should be run. You can configure this attribute in two ways:
Weekdays - For example, you can specify that invoicing is run every Monday or every second Monday.
Customers who must set invoicing to run on a working day might prefer this kind of configuration..
Calendar days - For example, you can specify that invoicing is run on the seventh and twenty-first days
of every month. Some organizations might prefer this kind of configuration, because it helps guarantee
that invoicing in run on a fixed schedule every month.
Invoice schedule for a fixed-price quote line
For a fixed-price quote line, you can use the Invoice Schedule grid to create billing milestones that equal the
value of the quote line.
To create billing milestones that are equally divided, select an invoice frequency, enter the billing start date on
the quote line, and select Requested Completion Date for the quote in the Summary section of the quote
header. Then select Generate Periodic Milestones to create equally split milestones based on the selected
invoice frequency.
To create a lump-sum billing milestone, create a milestone, and then enter the quote line value as the milestone
amount.
To create billing milestones that are based on specific tasks in the project plan, create a milestone, and map it to
the project's schedule element in the billing milestone UI.
Product-based quote lines
3/7/2019 • 3 minutes to read • Edit Online
Product catalog
The products in a Dynamics 365 product catalog have a default unit and unit group. If several products share the
same set of attributes, you can create a product family that also has those attributes. All the products in one
product family inherit the same set of attributes.
For example, a company sells subscription licenses for a variety of software. All subscription software has the
following two attributes:
Number of users
Subscription duration (in months)
A good way to maintain this type of catalog is to create a product family that is named Subscription Software,
and that has Number of users and Subscription duration as attributes. You can then add individual products,
such as Dynamics 365 for Sales or Dynamics 365 for Field Service to the Subscription Software product
family.
Key entities
A price list includes information that is provided by four different entities:
Price List - This entity stores information about context, currency, date effectivity, and time unit for pricing
time. Context shows whether the price list is expresses cost rates or sales rates.
Currency - This entity stores the currency of prices on the price list.
Date - This entity is used when the system tries to enter a default a price on a transaction. PSA pricing selects
the price list that has date effectivity that includes the date of the transaction. If PSA pricing finds more than
one price list that is effective for the transaction date is attached to the related quote, contract, or organizational
unit, then no price is defaulted.
Time - This entity stores the unit of time that prices are expressed for, such as daily or hourly rates.
The Price list entity has three related tables that store prices:
Role Price - This table stores a rate for a combination of role and organizational unit values and is used to set
up role-based prices for human resources.
Transaction Category Price - This table stores prices by transaction category and is used to set up expense
category prices.
Price List Items - This table stores prices for catalog products.
The price list is a rate card. A rate card is a combination of the Price List entity and related rows in the Role Price,
Transaction Category Price, and Price List Items tables.
Resource roles
The term resource role refers to a set of skills, competencies, and certifications that a person must have to perform
a specific set of tasks on a project.
Human resources time is usually quoted based on the role that a resource fills on a specific project. For human
resource time, PSA supports costing and billing that are based on resource role. Time can be priced in any unit in
the Time unit group.
The Time unit group is crated when PSA is installed. It has a default unit of Hour. You can't delete, rename, or edit
the attributes fo teh Time unit group or the Hour unit. However, you can add other units to the Time unit group.
If you try to delete either the Time unit group or the Hour unit, you might cause failures in the PSA business
logic.
NOTE
We recommend that you have a separate price list for your project resources and your catalog items, because of the
behavior differences between the two when you override pricing.
Each of the following entities can have one or more associated sales price lists for project pricing:
Customer (account)
Opportunity
Quote
Project Contract
The association of these entities with a price list is indicated by the project price lists. You can associate one or
more price lists with the Customer, Opportunity, Quote, and Project Contract sales entities.
A default project price list isn't automatically entered on a customer record. However, you can manually attach a
project price list to the customer record. Nevertheless, you should manually attach a project price list only when
you have a custom pricing agreement with the customer.
When a project price list is attached to a sales entity, PSA validates the following information:
The price list las a context of Sales.
The price list currency matches the customer currency.
On a project contract, PSA uses the following order of precedence to automatically set related project price lists:
1. Quote
2. Opportunity
3. Customer
4. Global settings for PSA
When a project price list is entered by default, PSA validates that the currency matches the customer’s currency,
and that the default price lists that have been entered have a context of Sales.
You can associate multiple project price lists with the Customer, Opportunity, Quote, and Project Contract entities.
This capability supports date-specific default prices for a long-running project contract, where you might require
more than one price list to account for price updates that occur because of inflation. However, if the price lists that
you associate with the Customer, Opportunity, Quote, or Project Contract entity have overlapping date effectivity,
the default prices might be incorrect. Therefore, you should make sure that project price lists that have
overlapping date effectivity aren't associated with those entities.
Deal-specific price overrides
In PSA, you can create deal-specific overrides for selected prices on project price lists that are entered by default
on a quote or project contract.
By default, a project contract always gets a copy of the master sales price list instead of a direct link to it. This
behavior helps guarantee that price agreements that are made iwth a customer for a statement of work (SOW )
don't change if the master price list is changed.
However, on a quote, you can use a master price list. Alternatively, you can copy a master price list and edit it to
create a custom price list that applies only to that quote. To create a new price list that is specific to a quote, on the
Quote page, select Create custom pricing. You can access the deal-specific project price list only from the quote.
When you create a custom project price list, only the project components of the price list are copied. In other
words, a new price list created as a copy of the existing project price list that is attached on the quote, and this new
price list has only related role prices and transaction category prices.
Tracking costs
PSA tracks costs for the use of human resource time on projects. It also tracks costs for other expenses that are
incurrred during hte project, such as travel expenses.
Like bill rates, cost rates for human resources are also set up using price lists. Here are the main differences in the
behavior of the cost price list and sales price list:
The cost rate of a resource can’t be overridden on a specific project, contract, or quote. However, bill rates
can be overridden on a per-deal basis if changes are made that are specific to the nature of the deal.
The following order is used to resolve a cost price list:
1. The cost price list that is attached to the organizational unit.
2. The cost price list that is attached to the project service parameters. Because cost price lists in many
different currencies can be attached to project service parameters, PSA does a currency match between
the currency of the contracting organizational unit of the project, contract, or quote, and the currency of
the cost price list.
3. For expenses, the at-cost and markup-over-cost pricing methods don’t apply to cost price lists. Even if
these pricing methods are used on cost price list lines to set up transaction category costs, the system
ignores them, and no default cost price is entered.
Product catalog pricing
3/7/2019 • 3 minutes to read • Edit Online
When you create a new custom price list for a quote by selecting Create Custom Pricing on the Project Quote
page, PSA makes a copy of the price list, and the Entity field on the header of the new price list is set to Sales
Entity. The name of the new price list is appended with the name of the quote and a timestamp. You also can use
the name of the new price list and the name of the quote in custom workflows to trigger additional review and
approvals for quotes that use custom pricing.
1. Submission of a time entry causes the creation of two journal lines: one for cost and one for unbilled sales.
2. Eventual approval of the time entry causes the creation of two actuals: one for cost and one for unbilled sales.
3. When the user creates a project invoice, the invoice line transaction is created by using data from the unbilled
sales actual.
4. When the invoice is confirmed, two new actuals are created: an unbilled sales reversal and a billed sales actual.
Each of these events triggers the creation of records in the Transaction origin and Transaction connection entities
to help build a trace of relationships between these records that are created across time entry, journal line, actuals,
and invoice line details.
The following table shows the records in the Transaction origin entity for the preceding workflow.
Time Entry Time entry Record Time Entry Journal Line Record Journal Line
Submission GUID GUID (cost)
Time entry Record Time Entry Journal Line Record Journal Line
GUID GUID (sales)
EVENT ORIGIN ORIGIN TYPE TRANSACTION TRANSACTION TYPE
Time Approval Journal Line Record Journal Line Unbilled Sales Record Actual
GUID GUID
Invoice Creation Time entry Record Time Entry Invoice Line Invoice Line
GUID Transaction GUID Transaction
Invoice Confirmation Invoice Line GUID Invoice Line Billed Sales Record Actual
GUID
Invoice Line Detail Invoice Line Detail Billed Sales Record Actual
GUID GUID
Draft Invoice Old ILD GUID Invoice Line Correction ILD GUID Invoice Line
Correction Transaction Transaction
Time entry Record Time Entry Correction ILD GUID Invoice Line
GUID Transaction
Journal Line Record Journal Line Correction ILD GUID Invoice Line
GUID Transaction
EVENT ORIGIN ORIGIN TYPE TRANSACTION TRANSACTION TYPE
Confirmed invoice Old ILD GUID Invoice Line Reversed Billed Sales Actual
correction Transaction Actual GUID
The following table shows the records in the Transaction connection entity for the preceding workflow.
Time Entry Journal Line Unbilled Sales msdyn_journal Journal Line Cost msdyn_journal
Submission (Sales) GUID line (cost) GUID line
Invoice Invoice Line Billed Sales msdyn_invoice Unbilled Sales Unbilled Sales msdyn_actual
Creation Detail GUID linetransaction Actual GUID
TRANSACTION TRANSACTION TRANSACTION TRANSACTION TRANSACTION TRANSACTION
EVENT 1 1 ROLE 1 TYPE 2 2 ROLE 2 TYPE
Billed Sales Billed Sales msdyn_actual Unbilled Sales Unbilled Sales msdyn_actual
GUID Actual GUID
Draft Invoice Invoice Line Replacing msdyn_invoice Billed Sales Original msdyn_actual
Correction Transaction linetransaction GUID
GUID
Estimating projects
You can estimate time and expenses on projects. PSA doesn't allow for estimates of materials or fees on projects.
Time estimates are generated when you create a task and identify the attributes of a generic resource that is
required to perform the task. Time estimates are generated from schedule tasks. Time estimates aren't created if
you create generic team members outside the context of the schedule.
Expense estimates are entered in the grid on the Estimates page.
Understanding estimation
Use the following table as a guide for understanding the business logic in the estimation phase.
ADDITIONAL
SCENARIO ENTITY RECORD TRANSACTION TYPE TRANSACTION CLASS INFORMATION
When you need to Quote line detail Project contract Time Transaction origin
estimate the sales (QLD) record is field on the sales side
value of time on a created QLD row references
quote the Cost side QLD
When you need to Project contract line Project Contract Time Transaction origin
estimate the sales detail (CLD) record is field on the sales side
value of time on a created CLD row references
contract the cost CLD
Customizing the Quote line detail and Contract line detail entities
If you added a custom field on the quote line detail and want the system to enter the value of the field as a default
value on the related cost line that it creates, use the PreOperationContractLineDetailUpdate and
PreOperationQuoteLineDetailUpdate plug-in registration tools. These plug-ins must be re-registered after the
quote line detail or the contract line detail is changed. Follow these steps to complete the process.
1. Open PluginRegistrationTool, and connect to your online instance.
2. Select Search, and search for the plug-in to update.
3. Select the plug-in, and then, on the main page, select Select.
4. Select the step of the plug-in to update, right-click, and then select Update.
5. In the Update Existing Step dialog box, in the Filtering Attributes field, select the ellipsis button (...):
6. In the Select Attributes dialog box, select check boxes for custom attributes.
7. Select OK to close the dialog box, and then select Update Step.
Profitability analysis
PSA analyzes profitability by using the gross margin and the adjusted gross margin.
PSA calculates the gross margin by using the following formula:
(Sum of estimated chargeable sales value – Sum of estimated chargeable costs) x 100
PSA calculates the adjusted gross margin by using the following formula:
(Sum of estimated chargeable sales value – Sum of all estimated costs) x 100
If the values for gross margin and adjusted gross margin differ by a wide margin, much of the work in the quote is
classified as non-chargeable.
Request a recall
Follow these steps to request a recall of an approved time or expense entry.
1. For time entries, go to Projects > My Work > Time Entry.
–or–
For expense entries, go to Projects > My Work > Expenses.
2. For time entries, select all the time entries for a specific combination of a project and a task. Alternatively, in
the grid, select the individual cells for time on a specific date for a specific project.
–or–
For expense entries, select the row for the expense entry to recall.
3. Select Recall. A confirmation dialog box appears. If the selected time and expense entries were already
approved, you're prompted to enter a reason for the recall.
4. Enter a reason for the recall, and then select OK to confirm the operation. The system sends the person who
approved the entries a request to approve the recall.
NOTE
Although approved time and expense entries can be recalled, if an approved time or expense has already been invoiced to the
customer, a recall request can't be created. A user who tries to create a recall request will receive a message that states that
the time or expense can't be recalled because it was already invoiced.
NOTE
As when a recall is requested, when a recall is approved, the system checks for any invoicing activity on the time or expense
entries. If an entry was already invoiced, or if it's on a draft invoice, the approver will receive an error message that states that
the time or expense can't be approved for recall, because it was already invoiced.
Time is Cost actual Contracting Cost actual Contracting Cost actual Cost actual
approved, and unit currency unit currency
no change to
or increase in Unbilled sales Project
billable hours actual – contract
occurs during Chargeable currency
approval.
Time is Cost actual Contracting Cost actual Contracting Cost actual Cost actual
approved, and unit currency unit currency
a decrease in
billable hours Unbilled sales Project
occurs during actual – contract
approval. Chargeable currency
for the new
quantity
BILLABLE OR SOLD PROJECT
An invoice is Unbilled sales Project Billed sales for Project Not applicable Not applicable
confirmed, reversal contract milestone contract
and no currency currency
change to or
increase in Billed sales Project
billable hours contract
occurs. currency
An invoice is Unbilled sales Project Not applicable Not applicable Not applicable Not applicable
confirmed, reversal contract
and a currency
decrease in
billable hours Billed sales – Project
occurs. Chargeable contract
for the new currency
quantity
An invoice is Billed sales – Project Billed Project Not applicable Not applicable
corrected to Reversal contract sales contract
increase the currency reversa currency
chargeable l for
quantity. Billed sales Project milesto
contract ne
currency Chang
e in
milesto
An invoice is Billed sales – Project ne
corrected to Reversal contract status
decrease the currency from
chargeable Invoic
quantity. Billed sales for Project ed to
the new contract Ready
quantity currency for
invoic
e
Unbilled sales Project
– Chargeable contract
for the currency
difference
The resource belongs to an organizational unit that differs from the project's contracting unit
BILLABLE OR SOLD PROJECT
Time is Cost actual Contracting Cost actual Contracting Cost actual Cost actual
approved, and unit currency unit currency
no change to
or increase in Unbilled sales Project
billable hours actual – contract
occurs during Chargeable currency
approval.
Resourcing Resourcing
unit cost unit currency
Interorganizat Contracting
ional sales unit currency
Time is Cost actual Contracting Cost actual Contracting Cost actual Cost actual
approved, and unit currency unit currency
a decrease in
billable hours Resourcing Resourcing
occurs during unit cost unit currency
approval.
Interorganizat Contracting
ional sales unit currency
An invoice is Unbilled sales Project Billed sales for Project Not applicable Not applicable
confirmed, reversal contract milestone contract
and no currency currency
change to or
increase in Billed sales Project
billable hours contract
occurs. currency
BILLABLE OR SOLD PROJECT
An invoice is Unbilled sales Project Not applicable Not applicable Not applicable Not applicable
confirmed, reversal contract
and a currency
decrease in
billable hours Billed sales – Project
occurs. Chargeable contract
for the new currency
quantity
An invoice is Billed sales – Project Billed Project Not applicable Not applicable
corrected to Reversal contract sales contract
increase the currency reversa currency
chargeable l for
quantity. Billed sales Project milesto
contract ne
currency Chang
e in
milesto
An invoice is Billed sales – Project ne
corrected to Reversal contract status
decrease the currency from
chargeable Invoic
quantity. Billed sales for Project ed to
the new contract Ready
quantity currency for
invoic
e
Unbilled sales Project
– Chargeable contract
for the currency
difference
Review the invoicing backlog on projects and project
contracts
3/13/2019 • 2 minutes to read • Edit Online
An invoice is generated for all transactions for the selected project contract that have a status of Ready to
Invoice. These transactions include time, expenses, milestones, and product-based contract lines.
Follow these steps to create invoices in bulk.
1. On the Project Contracts list page, select one or more project contracts that you must create an invoice for,
and then select Create Project Invoices.
A warning message informs you that there might be a delay before invoices are created. The process is also
shown.
2. Select OK to close the message box.
An invoice is generated for all transactions on a contract line that have a status of Ready to Invoice. These
transactions include time, expenses, milestones, and product-based contract lines.
3. To view the invoices that are generated, go to Sales > Billing > Invoices. You will see one invoice for each
project contract.
Set up automated creation of project invoices in PSA
Follow these steps to configure an automated invoice run in PSA.
1. Go to Project Service > Settings > Batch jobs.
2. Create a batch job, and name it PSA Create Invoices. The name of the batch job must include the term
"Create Invoices."
3. In the Job type field, select None. By default, the Frequency Daily and Is Active options are set to Yes.
4. Select Run Workflow. In the Look Up Record dialog box, you will see three workflows:
ProcessRunCaller
ProcessRunner
UpdateRoleUtilization
5. Select ProcessRunCaller, and then select Add.
6. In the next dialog box, select OK. A Sleep workflow is followed by a Process workflow.
You can also select ProcessRunner in step 5. Then, when you select OK, a Process workflow is followed by
a Sleep workflow.
The ProcessRunCaller and ProcessRunner workflows create invoices. ProcessRunCaller calls ProcessRunner.
ProcessRunner is the workflow that actually creates the invoices. It goes through all the contract lines that
invoices must be created for, and it creates invoices for those lines. To determine the contract lines that invoices
must be created for, the job looks at invoice run dates for the contract lines. If contract lines that belong to one
contract have the same invoice run date, the transactions are combined into one invoice that has two invoice lines.
If there are no transactions to create invoices for, the job skips invoice creation.
After ProcessRunner has finished running, it calls ProcessRunCaller, provides the end time, and is closed.
ProcessRunCaller then starts a timer that runs for 24 hours from the specified end time. At the end of the timer,
ProcessRunCaller is closed.
The batch process job for creating invoices is a recurrent job. If this batch process is run many times, multiple
instances of the job are created and cause errors. Therefore, you should start the batch process only one time, and
you should restart it only if it stops running.
Edit a draft PSA invoice
When you create a draft project invoice, all unbilled sales transactions that were created when the time and
expense entries were approved are pulled onto the invoice. You can make the following adjustments while the
invoice is still in a draft stage:
Delete or edit invoice line details.
Edit and adjust the quantity and billing type.
Directly add time, expense, and fees as transactions on the invoice. You can use this feature if the invoice line is
mapped to a contract line that allows for these transaction classes.
Select Confirm to confirm an invoice. The Confirm action is a one-way action. When you select Confirm, the
system makes the invoice read-only and creates billed sales actuals from each invoice line detail for each invoice
line. If the invoice line detail references an unbilled sales actual, the system also reverses the unbilled sales actual.
(Any invoice line detail that was created from a time or expense entry will reference an unbilled sales actual.)
General ledger integration systems can use this reversal to reverse project work in progress (WIP ) for accounting
purposes.
Correct a confirmed PSA invoice
Confirmed PSA invoices can be edited (corrected). When you correct a confirmed invoice, a new draft corrective
invoice is created. Because the assumption is that you want to reverse all the transactions and quantities from the
original invoice, this corrective invoice includes all the transactions from the original invoice, and all the quantities
on it are 0 (zero).
If any transactions don't require correction, you can remove them from the draft corrective invoice. If you want to
reverse or return only a partial quantity, you can edit the Quantity field on the line detail. If you open the invoice
line detail, you can see the original invoice quantity. You can then edit the current invoice quantity so that it's less
than or more than the original invoice quantity.
When you confirm a corrective invoice, the original billed sales actual is reversed, and a new billed sales actual is
created. If the quantity was reduced, the difference will cause a new unbilled sales actual to be created too. For
example, if the original billed sales was for eight hours, and the corrective invoice line detail has a reduced quantity
of six hours, PSA reverses the original billed sales line and creates two new actuals:
A billed sales actual for six hours.
An unbilled sales actual for the remaining two hours. This transaction can either be billed later or marked as
non-chargeable, depending on the negotiations with the customer.
Multiple-currency scenarios
3/7/2019 • 4 minutes to read • Edit Online
The Currency column shows the transaction currency, which is the currency that the sale occurred in. The
Exchange rate column is the exchange rate between the transaction currency and the base currency. The base
currency is US dollar (USD ). This base currency was set up when the Dynamics 365 instance was provisioned. As
the table shows, every transaction is recorded in both the transaction currency and the base currency. Dynamics
365 uses the currency exchange rate to calculate the base currency amounts.
PSA extensions
Microsoft Dynamics 365 for Project Service Automation (PSA) influences the transaction currency, because
business transactions usually have two aspects: cost and sales.
The following entities are considered business transactions:
Quote line detail
Project contract line detail
Estimate line
Journal line
Invoice line detail
Actual
In each of these entities, there is a record that represents the cost amount or the sales amount. As for any
Dynamics 365 entity that has an Amount field, each record includes amounts in both the transaction currency
and the base currency.
PSA expands the concept of transaction currency for the cost and sales in the following ways:
The cost transaction currency for time transactions always comes from the currency of the organization unit
that owns or manages the project. This organization unit is known as the contracting unit.
The sales transaction currency for time and expense transactions always comes from the currency of the
project contract.
The cost transaction currency for expenses comes from the currency that the expense entry was created in.
Multiple-currency scenario
This section describes an example of a project that Contoso UK delivers for a customer that is named Fabrikam,
Japan. Here is how the scenario has been set up:
1. GBP and Japanese yen (JPY ) are set up under Settings > Business Management > Currencies.
2. A customer account that is named Fabrikam - Japan is set up, and JPY is selected as the currency on the
account.
3. An organization unit that is named Contoso UK is set up, and GBP is selected as the currency.
4. A project contract is created, where Contoso UK is specified as the contracting unit and Fabrikam – Japan is
specified as the customer.
5. Project contract lines are created, based on the billing arrangements for the various transaction classes on the
project, such as billing for time versus billing for expenses.
6. A project is created where Contoso UK is specified as the contracting unit. This project is created and mapped
to the project contract lines.
During estimation that uses the quote line detail, the project contract line detail, or on the estimate line of the
schedule, two records are always created in the entity. One record is for cost, and the other record is for sales.
By default, the transaction currency on the cost record is set to the currency of the project’s contracting unit. In
this example, the currency is GBP.
By default, the transaction currency on the sales record is set to the currency of the project contract. In this
example, the currency is JPY.
When actuals are created for time using time entry or the journal line, the following behavior occurs:
By default, the transaction currency on the cost record is set to the currency of the project's contracting unit.
By default, the transaction currency on the sales record is set to the currency of the project contract.
When actuals are created for expenses by the expense entry or journal line, the following behavior occurs:
You can record the expense amount in any currency. Select the currency by using the currency picker on the
Expense Entry page or the Journal Line page. By default, the transaction currency for the cost record is set to
the currency on the expense entry.
By default, the transaction currency for sales record is the currency of the project contract. To set this currency,
the system first converts the transaction amount in the currency that the user entered to the base currency. It
then converts the amount to the currency of the project contract.
Computing roll-ups when project actuals are recorded in multiple transaction currencies
Dynamics 365 automatically handles roll-ups of amounts in different currencies. Here is an example.
TRANSAC
TRANSA TRANSA TION
CTION CTION RESOUR CATEGOR QUANTIT UNIT EXCHAN AMOUNT
CLASS TYPE DATE CE Y Y PRICE AMOUNT GE RATE IN BASE
Expense Unbilled 16-Jun Prakash Hotel 1 ea 250 EUR 250 EUR 0.94 265.95
sales USD
TRANSAC
TRANSA TRANSA TION
CTION CTION RESOUR CATEGOR QUANTIT UNIT EXCHAN AMOUNT
CLASS TYPE DATE CE Y Y PRICE AMOUNT GE RATE IN BASE
Expense Unbilled 17-Jun Prakash Car 1 ea 150 EUR 150 EUR 0.94 159.57
sales Rental USD
To calculate the total unbilled sales value on the project, you can create a roll-up field for the Amount field on all
the related unbilled sales actuals. The roll-up field is a construct of Dynamics 365 that allows for quick formulas on
related records.
Resourcing projects home page
12/14/2018 • 2 minutes to read • Edit Online
This will open the Quick Create: Project Team Member panel.
2. Enter the role and organization unit of the generic resource team member and then click Save.
3. After you have created the new generic resource team member, it is assigned to the task. You can continue to
assign that generic resource to other tasks in the task schedule.
4. After you have assigned the generic resource, you can generate a resource requirement and fulfill it by directly
booking or submitting a resource request to a resource manager.
On the team member grid, in addition to being able to use the resource picker as mentioned above, you can add
generic resources directly. The resources are added with a resource requirement that is based on the start/end
dates and allocation method specified in the Quick Create: Project Team Member panel.
You can see a difference if you add the generic team member directly and then assign more tasks to the generic
resource than they have required hours to cover. Click Generate Requirement to regenerate the requirement to
balance the required hours against assignments.
You can also click the Resource requirement link in the team grid to open the requirement and add skills,
preferred resources, etc.
Book named bookable resources to a project team
and assign tasks
12/14/2018 • 2 minutes to read • Edit Online
3. In the Quick Create Project Team Member dialog box, select the bookable resource. The Role field will
populate with the resource's default role if they have one assigned. You can change the role if needed.
4. Select the from and to dates that the resource will be needed and select the allocation method of the resource's
capacity.
5. If you want the team member to be a project approver, select Yes in the Project Approver field. This will mean
that the team member can approve submitted time and expense entries for this project.
6. Click Save.
You can now assign the booked resource to tasks on the project. On the Project page, click the Schedule tab to
assign tasks to the new resource. The resource picker that is launched from the Resources field in the task grid will
show the team members that you can select.
In version 3 for Project Service Automation (PSA), resource bookings and task assignments are not tightly
coupled. This means that when you use the resource picker in the schedule, you can assign tasks to team members
for more hours than their bookings cover on the project. You can see the differences between team member
bookings and assignments on the Team tab or on the Resource Reconciliation tab. You can also reconcile the
differences between bookings and assignments for resources at a more detailed level.
You can also use the resource picker on the Schedule tab to search for and select bookable resources that are not
already part of the project team. These are shown in the resource picker as Other Resources.
When you do this, the resource is added to the project team and assigned to the task, but no bookings are
generated.
You can use the Reconciliation tab’s extend booking capability or the Schedule Board to book the resource’s
capacity to the project.
After a team member is booked on your project, you can use maintain bookings or use the Schedule Board directly
to manage their bookings.
Book named resources from resource requirements
12/14/2018 • 2 minutes to read • Edit Online
3. On the Schedule Assistant page, select a named resource to book onto your project team and then click
Book.
When the booking is complete and fulfilled by a named resource, the generic resource is replaced with the named
resource.
The assignments on the schedule are updated with the named resource as well.
The requirement is for 120 hours of robotics engineering over five days, which is 24 hours per day.
This is an example of when multiple named resources are needed to fulfill a generic resource request. You will need
to book multiple resources to fulfill the requirement.
The main difference in this scenario is that the generic resource remains on the team assigned to the task, and the
booked named resource team members are not assigned as part of the position. The project manager can assign
the work as appropriate to the named resources. The Reconciliation view can assist a project manager in
breaking up the bookings across multiple resources to task assignments. This is not done automatically because in
any scenario more complicated than the simple example above, such as where you have a bundle of tasks making
up the requirement, the intent of how the project manager wants to assign, needs to be assumed by the system.
Because the system can't understand intent, chances are that the assumptions will be different than intended and
an incorrect or unpredictable result will happen. The predictable outcome is that the generic resource remains
assigned until the project manager deliberately creates assignments, with the assistance of the Reconciliation
view.
Submit a resource request
12/14/2018 • 2 minutes to read • Edit Online
The request status of the generic team member will change to Submitted.
After the request is fulfilled by the resource manager, the generic resource will be replaced by a named resource if
the resource manager fulfills the request with the booking of a named resource. Otherwise, the generic resource
will remain on the team and the request status will change to Needs Review, if the resource manager has
proposed a named resource.
Accept or reject a proposed project resource
12/14/2018 • 2 minutes to read • Edit Online
The grid on the Proposed Resources tab on the Project Team Member page shows the proposed resource’s
current bookings. After the proposal is accepted, the grid is updated to reflect that booking.
To accept the proposed resource and book that resource on your team, click Accept Proposals.
To reject the proposal, click Reject Resource.
Similar to directly fulfilling a generic resource request with a named resource, the generic resource will be replaced
and the assigned tasks will be updated with the named team member.
Reconcile bookings and assignments
5/15/2019 • 4 minutes to read • Edit Online
NOTE
The legend for these conditions might be hidden to leave more room for the grid. In this case, you can make the legend
visible by selecting the Settings button.
In some cases, when the Timescale field is set to a level that is higher than Day, differences might be calculated as
0 (zero). For example, at the Month level, the net difference for a resource might be 0 (zero) to indicate that
bookings equal assignments. However, if you look at the Week level, you might see that there are assignments of
0 (zero) hours and bookings of 40 hours in the first week of the month, and assignments of 40 hours and bookings
of 0 (zero) hours in the second week of the month. Although the total bookings and assignments for the month are
equal, they differ by week.
When you view higher time levels, the Reconciliation tab shows a cell indicator to notify you that there are
differences at lower time levels. For example, in the following illustration, a cell indicator appears in the cell for the
month of October 2018 for the resource that is named Katelyn Merritt. Therefore, you can see that, even though
the resource's bookings and assignments are equal when they are aggregated at the Month level, they don't match
at lower levels.
Double-click a cell to zoom in to the next lower level and view the difference. For example, if you double-click the
October 2018 difference for Katelyn Merritt, you drill down to the Week level. You can then see that the resource
has bookings of 16 hours but no assignments in the first two weeks of October, and 16 hours of assignments but
no bookings in the third week of October.
You can right-click a cell to zoom out the next higher level. You can also turn off the cell indicator by selecting the
Settings button.
You can also use the Previous and Next buttons above the grid to move through any differences in your project.
To use these buttons, you must first select a resource. Select Next to go to the next difference between bookings
and assignments for that resource. Select Previous to go to the previous difference.
In situations where you have task assignments for a resource but no bookings, you can select the booking shortage
and then select Extend Booking. You can then see the booking that is required in order to address the resource's
shortage. You can also view the resource's bookings on the current project and other projects. Select OK to create
the booking for the resource without regard to current availability. The project manager or resource manager can
then use Schedule Board to manage situations where a resource has become overbooked beyond capacity because
its bookings were extended.
Resource management home page
5/13/2019 • 2 minutes to read • Edit Online
NOTE
To make the Utilization by Role chart available, create a job that runs the UpdateRoleUtilization workflow. This
recurring job runs every seven days to calculate billable utilization for the previous seven days. The results are
aggregated by role.
2. In the All Team Members view, in the Resource Requirement column, select the link to add required
skills for the generic resource.
3. On the Resource Requirement page that appears, in the Skills grid, select the ellipsis (...) and then select
Add New Requirement Characteristic to add the required skills for your developer.
4. In the Quick Create: Requirement Characteristic dialog box that appears, in the Characteristic field,
select the required skill. Then, in the Rating value field, select the proficiency level for that skill. Finally, in
the Resource Requirement field, set the requirement to source resources from organizational units or
even named resources. When you've finished, select Save.
5. On the Resource Requirement page, select Book to fulfill the resource requirement.
You can also select the generic resource in the All Team Members grid and then select Book.
NOTE
In this example, there are 40 required hours but no actual booked hours, because generic resources don't have
bookings. Additionally, there are no assigned hours, because the generic resource was added directly to the team. It
wasn't added by using task assignment.
On the Scheduling Assistant page, you can filter available resources by the requirements that are
specified on the resource requirement. Resources are sorted according to the sorting parameters that are
specified on the Schedule Board.
You receive a notification about booked hours. The demand indicators show how much the booking
requirement is satisfied and how much remains. You can also see how much of the selected resource's
capacity is consumed. Select Expand to view more details about resource bookings.
10. Return to the All Team Members view. In the grid, notice that the generic resource has been replaced by
the named resource, and 40 hours are listed as booked for that resource.
NOTE
No assigned hours are shown, because they were booked directly on the team. They weren't booked by using task
assignment.
2. In the Resources field, select the Resource Picker symbol. The Resource Picker appears and shows existing
team members for the project.
3. Enter the name of the new generic resource, and then select Create.
4. In the Quick Create: Project Team Member dialog box that appears, in the Role field, select the role for
the generic resource. In the Resourcing Unit field, select the organizational unit for the generic resource.
Then select Save.
The generic team member is now assigned to the task.
On the Team tab, you will see the new generic team member. Notice that it has only assigned hours. These
hours are the sum of all tasks that are assigned to the generic team member. The generic team member
doesn't yet have required hours or a resource requirement.
5. You can now assign the generic team member to other tasks by using the Resource Picker.
When you've finished assigning the generic resource to tasks, you can generate a resource requirement for
the generic resource.
6. On the Team tab, select the generic resource, and then select Generate Requirement.
When the requirement is generated, the generic team member will have required hours and a link for the
resource requirement.
After you book a named resource, the generic resource is removed from the team and replaced by the
named resource.
On the Schedule tab, the generic resource assignments are removed and replaced by the named resource.
NOTE
This behavior occurs only when a named resource is fully booked for the generic resource requirement. When either a
named resource partially replaces the generic resource requirement or multiple named resources replace the generic
resource requirement, the generic resource remains assigned to the task.
In the following illustration, an 80-hour task has been planned for a five-day duration (16 hours per day
over five days) and assigned to the generic resource that is named Functional.
When you generate the requirement, it's for 80 hours over five days.
Because available resources work only eight hours per day, two resources are needed to fulfill the
requirement.
On the Team tab, you can now see that the generic resource has no required hours, but the assigned hours
still appear together with the two named resources that make up the fulfillment.
On the Schedule tab, the generic resource remains assigned to the task.
PSA doesn't assign both resources to the task, because that behavior would produce a less predictable schedule. In
this simple example, it's easy to divide the hours equally between two resources. However, in more complex
scenarios that involve multiple tasks and multiple resources, PSA would have to make assumptions about how it
should allocate the bookings that are received for multiple resources across multiple tasks.
Therefore, in these scenarios, the project manager is responsible for parsing the multiple bookings and assigning
them as needed. To allocate the bookings, the project manager assigns the tasks from the generic resources to the
named resources and then uses the Reconciliation view to make sure that the allocation works with the bookings.
Edit a resource requirement
After a resource requirement has been created, a project manager or resource manager might want to edit the
details to refine the search criteria when the Schedule Board is used. To edit the resource requirement, follow these
steps.
1. On the Projects page, on the Team tab, select the link to any requirement on a generic resource.
2. On the Resource Requirement page that appears, you can update several attributes. Here are some
examples:
Name
From Date
To Date
Duration
Resource Type
On the Resource Requirement page, the project manager or resource manager can also define the following
information:
Skills
Roles
Resource preferences
Preferred organizational unit
Update resource bookings after they are booked on a project
After you've added a generic or named resource to a project team, you can change the resource's bookings.
1. On the Projects page, on the Team tab, select a team member, and then select Maintain Bookings.
The Schedule Board appears and shows the project team member's bookings. Expand the team member's
record to view the hours that have been booked against this project and other projects that are consuming
the team member's capacity.
2. Select and drag the booking to extend or shorten it. A Create Resource Booking dialog box appears that
lets you adjust the booking.
3. Right-click the booking. You can then use the shortcut menu to complete the following actions:
Change the booking status.
Edit the booking.
Substitute a resource on the project team.
Change the booking status
You can change any default or custom booking status.
Comments about the resource can be provided to the resource manager who is fulfilling the request. After the
request is submitted, the Status field for the team member is changed to Submitted.
When the resource manager fulfills the request, the generic team member is replaced by the named resource in
the All Team Members grid.
Use a resource proposal for resource requests
Instead of directly booking a resource on a resource request, a resource manager can propose a resource to the
project manager. A resource manager might use this option when an exact match for the requirements isn't
available. When a resource manager proposes a resource, the project manager sees that the Status field for the
generic team member is changed to Needs Review.
To view the proposed resource together with a visualization of the effect of the proposal's booking, double-click the
team member that has a status of Needs Review. Then select the Proposed Resources tab.
Select Accept All Proposals to accept all proposed resources or Reject All Proposals to reject them. If you
accept the proposed resources, they are hard-booked on the project as team members and replace the generic
resources.
NOTE
You must either accept or reject all proposed resources. You can't partially accept or reject them.
b. To substitute the resource, select the resource that you want, and then select Substitute.
The bookings and assignments are substituted with the new resource.
The project manager or resource manager can then use the Schedule Board to manage any situations where a
resource is overbooked beyond its capacity.
Key concepts
3/29/2019 • 2 minutes to read • Edit Online
CONCEPT DEFINITION
Project team member As part of the project team, a project team member can be a
named resource that has bookings, a named resource that
doesn't have bookings, or a generic resource. Generic
resources don't have bookings, are local to the project, and
don't have capacity constraints across projects.
Project generic resource A resource placeholder that lets you form a team and staff a
project plan without having to know the named resource. The
project calendar is used as the generic resource's calendar.
Generic resources can be added to a project team and
assigned to tasks.
Assigned hours Resource hours are assigned to tasks in the project schedule.
Assignments can be against either named resources or
generic resources. Assignments can be independent of
bookings.
Required hours The capacity that is required, but that isn't yet fulfilled by a
named resource. Required hours are relevant only for generic
team members that have generated resource requirements.
Resource requirement An entity that is used to capture required hours, start and
end dates, skills, geography, and other pricing dimensions for
the required resources. Resource requirements are either
generated from project team members or individually created.
Resource default role The role that a resource is grouped under for utilization
calculation. The resource is assumed to have the required skills
for the role and to meet the target utilization for that role.
Resource organization unit The organizational unit that a resource is assigned to.
CONCEPT DEFINITION
Reconciliation view A view that shows the bookings and assignments for each
project team member. This view lets the project manager look
for any mismatch between bookings and assignments, and to
take corrective action if any mismatch occurs.
To fulfill a request, select it in the list, and then select Find Resources. Alternatively, double-click a row to open the
request. You can then select the Resource Requirement tab to view the requirements for that request. To start to
fulfill the request, select Find Resources.
The Schedule Assistant appears and is filtered by the requirements. Select the resource, and then select Book.
The generic team member is replaced with the hard-booked named resource on the project team and task
assignments in the project schedule.
Propose project resources
3/29/2019 • 4 minutes to read • Edit Online
Resource managers can propose a resource to the project manager by using a resource request.
1. From the request grid or the request itself, select Find Resources.
2. On the Schedule Assistant page, select the resource, and then, in the Create Resource Booking pane, in
the Booking Status field, select Book.
On the Team tab of the project, the generic team member's Request Status value is changed to Needs
Review.
Billable utilization
Resources can have a target billable utilization. This target utilization is either defined as an attribute on a
resource's default role or set on the record of the individual bookable resource. Utilization calculations are based
on the actual hours that resources have reported by using approved time entries.
The following formulas are used to calculate utilization:
Billable utilization = Chargeable actual hours ÷ Resource capacity
Non-billable utilization = Actual time with billing type ID = Non-chargeable, Complementary, or Not available
÷ Resource capacity
Internal = Actual time with no sales contract ÷ Resource capacity
Resource capacity = Resource work hours – Out-of-office – Non-working days
You can find the Resource Utilization view in the Resources pane.
Each cell in the grid represents the billable utilization percentage of the resource in a period, such as a day, week,
or month. The following formulas are used to color the cells:
Green: Billable utilization >= Resource target utilization
Yellow: Target utilization – 20 <= Billable utilization < Target utilization
Red: Billable utilization < Target utilization – 20
Because the Resource Utilization view is based on the Schedule Board, you can use the filtering capabilities of
the Schedule Board to filter your results.
The grid requires that you set a target utilization on either the role or the individual resource. To do this setup, go
to Resources > Resource roles.
Additionally, a default role must be assigned to each bookable resource. Go to Resources > Resources. On the
Project Service tab, verify that a resource role is defined, and that the Is Default field for it is set to Yes. You can
add additional roles where Is Default = No. The role where the Is Default = Yes is used to evaluate the
resource's utilization against the target for that role.
On the Project Service tab, you can also set an individual target utilization for the resource. The utilization
calculation then uses that target utilization to evaluate the resource's target instead of the target of the resource's
default role.
Utilization is shown for a resource only if that resource has approved, chargeable time during the period that is
shown in the grid.
Resource availability
It's critical that resource managers be able to view the availability of resources and update bookings. In some
cases, there is no formal demand (resource request), but a resource manager must respond to an unplanned
demand that comes through channels such as an email, phone call, or instant message. Resource managers use
the Schedule Board to update resources and bookings.
Resource work hours are used as the basis for calculating the availability of a resource. Resource bookings
consume the capacity of the resources.
The Schedule Board uses colors and shading to show bookings, availability, and overbookings, and also the status
of bookings. A setting in the Schedule Board settings lets you show a legend.
If a right-pointing arrow appears next to an individual bookable resource on the Schedule Board, the resource can
be expanded to show details of the work that the resource is booked on.
Because Microsoft Dynamics 365 for Project Service Automation (PSA) uses the Universal Resource Scheduling
engine, if you also have Microsoft Dynamics 365 for Field Service installed, you can view the details of resource
bookings for projects, work orders, and any other entities that you've extended scheduling to.
To view more details about an individual resource, right-click it to open the resource card.
Use the Schedule Board to book project resources
3/29/2019 • 2 minutes to read • Edit Online
In addition to booking resources on a project from within a project, you can hard-book or soft-book resources
from the Schedule Board.
Before you can book from the Schedule Board, you must create or generate resource requirements. Follow these
steps to create resource requirements from the Schedule Board.
1. If the Booking Requirements pane at the bottom of the page is collapsed, select the expander control to
expand it.
2. In the Booking Requirements pane, on the Project tab, select the requirement to book.
3. Select Find Availability to filter the bookable resources and view the available resources.
4. Select one or more resources from the Schedule Board.
5. In the Create Resource Booking pane on the right side of the page, enter the booking information, and
then select Book and exit.
6. While the requirement is selected in the Create Resource Booking pane, select one or more cells of a
resource to create the booking.
7. Select Book.
The requirement is fulfilled by using the selected resource. In the Booking Requirements pane, notice that the
requirement has been updated, and the resource is shown as booked on the project.
Soft-book requirements
3/29/2019 • 2 minutes to read • Edit Online
A resource requirement can be hard-booked. A hard booking creates a proposal that consumes a resource's
capacity. The proposal is then sent back to the requester for approval. A soft booking tentatively adds a resource to
a project team and has a different status on the Schedule Board, but it doesn't consume the resource's capacity. To
soft-book a resource from the Schedule Board, set the Booking Status field to Soft.
When the Team tab is in the Named Team Members view, the resource appears there. The soft-booked hours
are reported in the Soft Booked Hours column.
NOTE
You can't soft-book a resource from a requirement that was generated from a generic team member.
On the Schedule Board, a different coloring is used for soft bookings for a resource.
To convert a soft booking to a hard booking, on the Schedule Board, right-click the soft booking, and then select
Change Status > Hard Book > Hard.
The booking is changed, and the status is changed on the Schedule Board. Because the booking status is now
Hard, the resource is shown as booked, and its capacity and availability are adjusted.
You can use the same method to cancel a hard booking or a soft booking from the Schedule Board.
To convert a resource that is soft-booked to hard-booked on the project's Team tab, select the resource, and then
select Confirm.
Skills and proficiency models
3/29/2019 • 2 minutes to read • Edit Online
How do I change the required hours, and the start and end dates, for a
resource (generic or named) that I booked?
After resources are booked, select Maintain Bookings to make any changes that are required.
Report Wizard
The Report Wizard lets non-developers create simple reports in Dynamics 365. Because PSA is built on the
Microsoft Dynamics 365 for Customer Engagement platform, the experience is the same as the experience that is
documented in Create or edit a report using the Report Wizard. However, you will use the PSA-specific entities.
Additional resources
For more information about reporting in PSA, see the following topics:
Working with the Project Service data model
Dashboards
Dashboards
3/7/2019 • 2 minutes to read • Edit Online
Practice Manager
The Practice Manager dashboard gives practice managers a graphical dashboard experience for tracking costs,
sales, and gross margin and utilization. It also lets practice managers slice the information by various dimensions,
such as customer, project, or resource role. For more information about how to create and customize dashboards,
see Create or edit dashboards.
Resource Manager
The Resource Manager dashboard gives resource managers a graphical dashboard experience for monitoring
resource requests, and resource demand and utilization. It also lets resource managers slice the monitored
information by various dimensions.
Working with the Project Service Automation data
model
3/22/2019 • 7 minutes to read • Edit Online
Reporting on opportunities
PSA extends the Sales Opportunity entity by adding fields that enable project-based scenarios. These fields are
identified by a schema name that is prefixed with msdyn_. One new field that is important for reporting on PSA
opportunities is Order Type. A value of Work Based for this field indicates that the opportunity is a PSA
opportunity. Other fields that have been added to the entity include Contracting Organization, which captures
the organization that is holding the opportunity, and Account Manager, which captures the name of the account
manager who is responsible for the opportunity.
The Opportunity Line entity also includes fields that are related to Project Service. Billing Method indicates
whether the opportunity line should be billed on a time-and-materials basis or a fixed-price basis, and Project
captures the name of the project that is backing the opportunity. Other fields that you can report on capture costs
and customer budget amounts for the line item.
Reporting on quotes
PSA extends the Sales Quote entity by adding project-related fields. Order Type distinguishes PSA quotes from
non-PSA quotes. A value of Work Based for this field indicates that the quote is a PSA quote. Other fields that
can be relevant to reporting on PSA quotes include amount fields, such as Chargeable Costs, Non-chargeable
Costs, Gross Margin, Estimates, and Budget. Other useful fields indicate whether the quote is profitable,
whether it will be completed on schedule, and whether it meets the customer's budget expectations.
PSA also extends the Sales Quote Line entity. One field that PSA adds is Billing Method, which indicates how
the quote line will be billed (time and materials or fixed price). Other fields that have been added to the entity
capture the related project that is backing the quote line, invoicing, cost, and budget.
PSA also adds new quote-related entities to the Dynamics 365 data model. Here are some examples:
Quote Line Detail – This entity contains the project estimate details of the quote line. It has two records for
each quote line. One record stores the cost and cost details of the quote line, and the other record stores the
sales amount and sales details of the quote line.
Quote Line Invoice Schedule – This entity contains the billing schedule for the quote line. This schedule is
generated based on the invoicing frequency that is assigned to the quote line.
Quote Line Milestone – This entity contains the billing milestones for fixed-price quote lines.
Quote Line Analytics Breakdown – This entity contains financial details of the quote line. These details can
be useful for reporting quoted sales and estimated cost amounts by various dimensions.
Other entities that PSA adds to quotes are Quote Line Project Price List, Quote Line Resource Category, and
Quote Line Transaction Category.
Reporting on project contracts
PSA extends the Sales Order entity that is used when project contracts are recorded. It adds an important new
field, Order Type, that identifies the contract as a PSA project contract instead of a sales order. A value of Work
Based for this field indicates that the order is a PSA project contract. Other new fields that are added to the Order
entity capture details about costs, PSA contract status, and the organization that owns the contract.
PSA also extends the Sales Order Line entity. Among the fields that it adds are fields that capture the billing
method (time and materials or fixed price), customer budget amounts, and the underlying project.
PSA also adds new entities that are designed for project contracts. Here are some examples:
Project Contract Line Detail – This entity contains the line-level details that are rolled up to the contract line
amount. These can be as detailed as line items that are generated from a project schedule at the task level.
Contract Line Invoice Schedule – This entity contains the billing schedule that is generated based on the
invoice frequency that is assigned to the contract line.
Contract Milestone – This entity contains the billing milestones for contract lines that have a fixed-price
billing term.
Other entities that PSA adds to contracts are Project Contract Line Project Price List, Project Contract Line
Resource Category, and Project Contract Line Transaction Category.
Reporting on projects
The Projects entity and its related entities are exclusive to PSA. Project is the top-level entity that is used to
capture the work and cost side of operations. Here is a list of the related entities:
Project team member – This entity contains details about the bookable resources that are assigned to the
project. Those resources can be generic bookable resources, or they can be named bookable resources that are
either entered by the project manager or generated from the project schedule.
Project Task – This entity contains the tasks that make up the project plan or schedule.
Resource Assignment – This entity contains the task assignment for the bookable resource.
Resource Requirement – This entity contains the requirements for any generic resource team members.
Estimate and Estimate line – These entities have a header/line relationship and contain expense estimates for
the project. Task estimates are stored on the Resource Estimate entity.
Reporting on resources
Project resources use the Bookable Resource entities from Universal Resource Scheduling (URS ) that are shared
with other apps, such as Microsoft Dynamics 365 for Field Service. Here is a list of the entities that you might have
to use when you report on project resources:
Bookable Resource – This entity represents the user, contact, generic resource, account, group, or equipment
that is used on the project team.
Bookable Resource Characteristics – This entity includes the skills, certifications, or education of the
resource. The characteristics can have rating values that are defined by the rating model.
Bookable Resource Category – This entity represents the role of the bookable resource.
Bookable resource bookings – This entity represents the time that is booked on projects for the resource.
Each booking has both a header entity and line entities, and each line has a status that represents the status of
the booking.
TRANS
DOCU TRANS ACTIO RESOU
MENT ACTIO N CUSTO CONTR RESOU RCE BILLIN QUANT UNIT AMOU
DATE N TYPE CLASS MER ACT RCE ROLE G TYPE ITY PRICE NT
2/3/18 Cost Time Alpine Alpine Ashley Project Charg 8.0 50.00 400.00
ski CRM Chinn Mgr eable
house
2/3/18 Unbille Time Alpine Alpine Ashley Project Charg 8.0 100.0 800.00
d sales ski CRM Chinn Mgr eable 0
house
These two records are separate but related records. They are neither debits nor credits.
4. If a contract is associated with the project, when the time entry is invoiced, two more records are created in
the Actual entity. First, a negative amount for the unbilled sales record is created. This record essentially
reverses the unbilled sale. Second, a transaction for the billed sale is created. Once again, these records are
separate but related records, not debits and credits.
TRANS
DOCU TRANS ACTIO RESOU
MENT ACTIO N CUSTO CONTR RESOU RCE BILLIN QUANT UNIT AMOU
DATE N TYPE CLASS MER ACT RCE ROLE G TYPE ITY PRICE NT
2/4/18 Unbille Time Alpine Alpine Ashley Project Charg - 8.0 100.0 -
d sales ski CRM Chinn Mgr eable 0 800.00
house
2/4/18 Billed Time Alpine Alpine Ashley Project Charg 8.0 100.0 800.00
sales ski CRM Chinn Mgr eable 0
house
The Transaction Origin entity records the origin of the Actual record, and the Transaction Connection entity
records the related records for the Actual record. Additionally, the Actual record contains references the project,
project contract (order), bookable resource, and customer.
Create time entries
5/21/2019 • 2 minutes to read • Edit Online
NOTE
If you're creating a time entry for a task that isn't assigned to a user, in the Project Task field, select the Search
button, select Change View, and then select All Active Project Tasks to list all tasks.
5. Enter a description, if a description is required, and then select Save and Close.
After the time entry is created and saved, you can edit it in the time entry grid. The time entry grid supports two
formats:
You can enter time entries in hh:mm format. This format is then converted to hours and fractions.
You can enter hours and fractions directly.
Note that the fractions of an hour aren't minutes. Therefore, 1.5 hours represents 1 hour and 30 minutes. The same
rule applies to fractions of a day. One day is 24 hours, and 0.5 days represents 12 hours.
Extensibility
On the Time Entries page that has the time entry grid, you can add custom fields, set up lookup fields, and create
custom views. You can also set up custom business logic that is based on the values that are selected or entered in
custom fields.
Customize weekly time entry
7/12/2019 • 11 minutes to read • Edit Online
Page layout
The new weekly time entry grid is a custom control that has a toolbar and two main sections, Dimensions and
Duration. The toolbar includes a button that applies only to this custom control for the time entry grid. By
contrast, the buttons on the Action Pane at the top of the page apply to the three types of controls that are
supported for time entry: the weekly time entry control, the read-only control, and the calendar control.
Dimensions
The Dimensions section shows, as column headings, all the dimensions that time can be entered against. The
following dimensions are supported out of the box:
Project
Project Task
Role
Type
Entry Status
The Dimensions section doesn't allow for inline editing. This section is backed by a view that enables custom fields
to be added to the weekly time entry grid. For information about how to add custom fields, see the "Extensibility"
section later in this topic.
Duration
The Duration section shows the days of the week as column headers. This section allows for inline editing. After a
time entry row is created that has appropriate dimensions, users can quickly enter, inline, the amount of time that
they spent on those dimensions.
Copy week
After a few time entries have been created, users can select Copy Week to bulk-create additional time entries. The
Copy dialog box appears. In the From period section, use the Start Date and End Date fields to define the date
range to copy time entries from. In the To Period section, in the Start Date field, specify the date to create time
entries for. Then select Copy. For the specified date in the "to" period, a copy of the time entries for the
corresponding day of the week in the "from" period is created. For example, Monday's time entry from last week is
copied into Monday of the week that is specified as the "to" period.
Import
The same basic process is used to import from bookings, assignments, and exchanges. Users can specify the date
range that bookings are imported from. They must then explicitly select the bookings that should be copied into
draft time entries. In the previous release, suggested time entries appeared in the grid and the calendar, and were
lost when the session was refreshed.
Extensibility
Add custom fields that have lookups to other entities
There are three main steps to adding a custom field to the weekly time entry grid.
1. Add the custom field to the quick create dialog box.
2. Configure the grid to show the custom field.
3. Add the custom field to either the row edit task flow or the cell edit task flow, as appropriate.
You must also make sure that the new field has the required validations in the row or cell edit task flow. As part of
this step, you must lock the field, based on the time entry status.
Add the custom field to the quick create dialog box
You must add the custom field to the Create Time Entry Quick Create dialog box. so that users can enter a value for
it when they add time entries by using the New button.
Configure the grid to show the custom field
There are two ways add a custom field to the weekly time entry grid. The first option is to customize the My
Weekly Time Entries view and add the custom field to it. You can choose the position and size of the custom field
in the grid by editing those properties in the view.
The second option is to create a new custom time entry view and set it as the default view. This view should contain
the Description and External Comments fields, in addition to the columns that you want to have in the grid. You
can choose the position, size, and default sort order of the grid by editing those properties in the view. Next,
configure the custom control for this view so that it's a Time Entry Grid control. Add this control to the view, and
select it for web, phone, and tablet. Next, configure the parameters for the weekly time entry grid. Set the Start
Date field to msdyn_date, set the Duration field to msdyn_duration, and set the Status field to
msdyn_entrystatus. For the default view, the Read-only Status List field is set to
192350002,192350003,192350004, the Row Edit Task Flow field is set to msdyn_timeentryrowedit, and the
Cell Edit Task Flow field is set to msdyn_timeentryedit. You can customize these fields to add or remove read-
only status, or to use a different task-based experience (TBX) for row or cell editing. These fields should be bound
to a static value.
Add the custom field to the appropriate edit task flow
The TBX pages that are used for editing can be found under Processes. The default pages are Project Service -
Time Entry Row Edit and Project Service - Time Entry Edit. You can either edit these default pages or create
new custom TBX pages.
NOTE
Both options will remove some out-of-box filtering on Project and Project Task entities, so that all lookup views for the
entities will be visible. Out of the box, only the relevant lookup views are visible.
You must determine the appropriate task flow for the custom field. Most likely, if you added the field to the grid, it
should go in the row edit task flow that is used for fields that apply to the whole row of time entries. If the custom
field has a unique value every day, such as a custom field for End time, it should go in the cell edit task flow.
To add the custom field to a task flow, drag a Field element into the appropriate position on the page, and then set
its properties. Set the Source property to Time Entry, and set the Data Field property to the custom field. The
Field property specifies the display name on the TBX page. Select Apply to save your changes to the field. Then
select Update to save your changes to the page.
To use a new custom TBX page instead, create a new process. Set the category to Business Process Flow, set the
entity to Time Entry, and set the business process type to Run process as a task flow. Under Properties, the
Page name property should be set to the display name for the page. Add all the relevant fields to the TBX page.
Save and activate the process, and then update the custom control property for the relevant task flow to the value
of Name on the process.
Add new option set values
To add option set values to an out-of-box field, open the editing page for the field, and then, under Type, select
Edit next to the option set. Next, add a new option that has a custom label and color. If you want to add a new time
entry status, the out-of-box field is named Entry Status, not Status.
Designate a new time entry status as read-only
To designate a new time entry status as read-only, add the new time entry value (the number, not the label) to the
Read-only Status List property. The editable part of the time entry grid will be locked for rows that have the new
status. Next, add business rules to lock all the fields on the Time Entry Row Edit and Time Entry Edit TBX pages.
You can access the business rules for these pages by opening the business process flow editor for the page and
then selecting Business Rules. You can add the new status to the condition in the existing business rules, or you
can add a new business rule for the new status.
Add custom validation rules
There are two types of validation rules that you can add for the weekly time entry grid experience: • Client-side
business rules that work in quick create dialog boxes and on TBX pages • Server-side plug-in validations that apply
to all time entry updates
Business rules
Use business rules to lock and unlock fields, enter default values in fields, and define validations that require
information only from the current time entry record. You can access the business rules for a TBX page by opening
the business process flow editor for the page and then selecting Business Rules. You can then edit the existing
business rules or add a new business rule. For even more customized validations, you can use a business rule to
run JavaScript.
Plug-in validations
You should use plug-in validations for any validations that require more context than is available in a single time
entry record, or for any validations that you want to run on inline updates in the grid. To complete the validation,
create a custom plug-in on the Time Entry entity.
IMPORTANT
Currently, a known issue on the TBX pages prevents users from correcting information and reselecting Done when an update
fails a plug-in validation. As a workaround, set up business rule validations to prevent this situation as much as possible.
Pricing dimensions setup guide
1/24/2019 • 2 minutes to read • Edit Online
The view is based on the schedule board, so you’ll find many of the same functions you’ll find there. The chargeable
utilization calculation works as follows:
Chargeable utilization = Chargeable actual hours/resource capacity.
The cells represent the calculated chargeable utilization for the period selected for the view (days, weeks, or
months). The colors in each cell show the chargeable utilization for a resource as compared to their target
chargeable utilization. The colors show the following status:
Green: billable utilization >= resource target utilization.
Yellow: target utilization – 20 <= billable utilization < target utilization.
Red: billable utilization < target utilization – 20.
The target utilization can be set on either the resource’s default role or on the individual resource itself. The
calculation looks at the individual for the target first, then to the resource’s default role. You can set the target on a
resource in Project Service by clicking Resources and then Resources. Click a resource to open the record and then
click on the Project Service tab to set the resource’s target utilization.
To set target utilization on a role go to Resources and then Resource Roles. Click on a role to open a record. Set the
target utilization for the role.
To calculate chargeable utilization for a resource, you need to make some settings. First, target utilization must be
set on either the individual resource or on resource roles. If you are using resource roles for targets, each individual
resource must have a default role. To set this, go to Resources and then Resources. Click a resource to open the
record and then click on the Project Service tab. In the Resource Role grid, make sure there’s one role for the
resource and Is Default is set to Yes.
The resource roles must be set to have a billing type of chargeable. Go to Resources and then Resource Roles. Click
on a role to open a record and then set the billing type default to Chargeable.
The resource must have working hours for the capacity calculation. To set this, go to Resources, and then Resources.
Click a resource to open the record and then click on Show Work Hours. You can bulk-update the list of resources
by applying a Work Hour Template from the Resource list view.
The chargeable actual hours are sourced from the Actuals entity. Actuals with billing type of chargeable are
included in the calculation and for this reason you must have projects where the actuals that are chargeable.
If you are not seeing chargeable utilization, here are some things you can check:
The resource has working hours defined for capacity.
The resource has either an individually defined utilization target or has a default role assigned to it. The role has
a utilization target defined for it.
Actuals have a billing type of chargeable for the period you are expecting a utilization calculation for. Here are
some things to check if you are seeing Actuals with billing types other than chargeable:
The role used on the actual has a default billing type of something other than chargeable.
The role on the project contract line backing the project has been set to non-chargeable.
The project does not have an associated contract line.
Which booking allocation method should I use to
avoid overbooking?
1/24/2019 • 4 minutes to read • Edit Online
Existing 0 0 0 0 0 0
bookings
New booking 8 8 4 0 0 20
The front load method takes into consideration existing bookings and available capacity. For example, if the same
resource already has 20 hours of bookings in the work week, the new bookings consume the remaining capacity as
follows:
Existing 8 8 4 0 0 20
bookings
New booking 0 0 4 8 8 20
Because available capacity is considered, you may get an error message if the resource has no remaining capacity
that can be absorbed by the booking. With this method, you can’t overbook.
None
This method is only available when you book from the Team tab within a project. This method adds the resource as
a team member on the project, but doesn’t create any bookings that absorb the resource's capacity. This method is
used when the default project manager team member is added when a project is created. The project manager user
who created the project is added by default to the project, so that the project entity record has an owner and there
is one approver on the project. Because this user doesn't have any bookings, if you do want to book the resource
you can either delete and then re-add them using a different allocation method, or add the resource to tasks and
then use Extend Bookings on the Reconciliation tab to create bookings for the assignments.
2. Using the primary requirements generated when a project is created. These show up on the schedule board on
the Project tab. If you have many projects, you might find it easier to use the column filters to find the specific
project you want to book to.
3. Creating a resource requirement from scratch and booking from it. You can create a resource requirement from
scratch and associate it with a project. On the schedule board, the resource requirement shows up on the Open
Requirements tab.
Selecting the tab launches the Schedule Assistant mode of the schedule board and filters the available resources
that meet the resource requirement.
From there you can book a resource.
You can also drag and drop the selected row from the bottom of the schedule board to a resource in the grid above.
Select the requirement and drag it to a resource’s cell.
When you drop it, it opens the Create Resource Booking panel on the right.
Selecting Book books the resource onto the project team.
You can also select the Project Primary Requirement at the bottom of the schedule board and drag and drop it on a
resource to book it.
Since the Primary Requirement is an empty requirement that has 0 duration, you’ll need to set the duration on the
Create Resource Booking panel when selecting and booking a resource.
When you book a resource through the Primary Requirement on the schedule board, you add it to the project team
without any assignments.
Book from a new resource requirement
Go to Resource Requirements and select New to create a new resource requirement.
Associate the requirement to a project by selecting the Project tab of the requirement and selecting a project.
This newly created requirement shows as an Open Requirement on the schedule board that you can fulfill.
3. Select Create.
4. On the Quick Create Project Team Member field to the right, set the role for the generic resource.
5. You can continue to assign tasks to this placeholder resource by selecting the resource on the resource
selector for the task. They’re listed under Team Members.
6. When you’re done assigning the generic resource, select the generic resource on the Team tab and select
Generate Requirement to create a resource requirement for the generic resource.
7. Select Book for the generic resource. You can then use the schedule board to find and book a real resource.
You can also submit the requirement for fulfillment by a resource manager.
8. When the generic resource is fulfilled with a named resource, the generic resource is removed from the team
and the task assignments for the generic resource are assigned to the named resource that fulfilled the
generic resource’s resource requirement.
Assigning a named resource from the list of all bookable resources
You can use the search box in the resource selector to search all the bookable resources in Project Service and
assign them to a task.
1. On the Schedule grid for a task, click the Resource icon in the resource cell.
2. Start typing a name.
3. Search results for the name are displayed in the resource selector under Other Resources.
4. Select the resource and they will be assigned to the task.
Resources assigned this way are added to the team without any bookings (like adding a team member and
selecting none as the allocation method). They’re displayed in the Team tab and Reconciliation tab as resources with
only assignments and a booking deficit. Book them if you want to use their availability.
How are resource bookings and task assignments
related?
1/24/2019 • 3 minutes to read • Edit Online
TASK TOT
CON AL
TOU HOU MO TU WE TH FR SA SU MO TU WE TH FR
RS RS 6/4 6/5 6/6 6/7 6/8 6/9 6/10 6/11 6/12 6/13 6/14 6/15
Task 24 8 8 4 4
1
Task 16 4 4 8
2
Task 10 4 4 2
3
Task 12 4 8
4
Tota 62 8 8 8 4 4 8 4 8 2 8
ls
Bob's availability
RESO TOT
URCE AL
BOO HOU MO TU WE TH FR SA SU MO TU WE TH FR
KING RS 6/4 6/5 6/6 6/7 6/8 6/9 6/10 6/11 6/12 6/13 6/14 6/15
Bob 62 4 4 8 8 8 4 4 8 8 6
However, there is no systematic way to assign the booked hours contour to tasks on a per-day basis. If the project
manager is willing to change the project schedule to meet the availability of the resource, then they’ll have to
remove the assignment and revise all the tasks to match the booking contours.
In the case where an organization has given the task of project planning to both a project manager and a resource
manager, the project manager sets the schedule, and that includes contouring of the work required. The resource
manager shouldn’t be able to affect the schedule without the project manager’s knowledge by changing effort
contours while booking real resources. If the resource manager is fulfilling something different from what the
project manager requested, they need to come to agreement about what changes are needed in the project
schedule.
Since bookings and assignments in Project Service are not tightly coupled, it’s possible to book contours that are
different than the task contours or change the assignments to result in circumstances where bookings and
assignments are out of alignment.
Project Service has a Reconciliation View that allows the project manager to see the bookings and assignments for
each project team member. The view uses colors and shading to show where there is a mismatch between a team
members bookings and assignments. Based on this information, the project manager can take corrective action to
either extend resource bookings for cases where there are assignments and no bookings or cancel bookings where
resources are booked but have no assignments.
Note that if you move a task that you have contoured yourself, these contours aren’t maintained. The contours are
regenerated according to the project calendar to account for changes in work hours and holidays. This is by design
since the system doesn’t know the intent of the original contour and can’t determine whether it makes sense to
retain that contour in a new time period. Since bookings and assignments are disconnected, the bookings retain the
original booking contours. In this case, you’ll need to cancel and rebook to the new assignment contour.
Why is the price defaulting to zero on expense cost
actuals?
1/24/2019 • 2 minutes to read • Edit Online
Check 2: Are any of the price lists identified above valid for the specific
date of the expense actual?
For Project Service to consider a price list for defaulting price, that price list should be applicable for the date on the
expense sales actual. Check the following to see if the price list(s) identified above are applicable:
Start by checking if start and end dates on the general tab for the price lists attached aren’t empty. If the start
and end dates on the price lists identified above are empty, you have isolated the problem.
Make a note of the start date field on your expense sales actual and check if any of the price lists identified is
applicable for that date. For example, the date of the expense actual should fall within the start date and end date
on the price list.
If there is no price list that covers that date on the expense sales actual, you have isolated the problem.
Modify the start and end dates of the price list to ensure that the price list covers the date of the expense
actual.
If there is more than one price list that covers the date on the expense sales actual, you have isolated the
problem. You can fix this by editing the start and end dates of the price list(s) so that there is only one
price list that covers the date of the expense actual.
If there is only one price list that covers that date of the expense actual, move to Check 3. Once you’ve
done made the required fixes, recreate an expense entry, approve it, and verify that the unbilled sales
actual shows a valid price.
Check 3: Is there a valid price for the expense category in the applicable
project price list?
If you have successfully completed Check 1 and Check 2, you should now have only one project price list that is
applicable for the date of the expense sales actual. Open this Project Price List and go to the Category Prices tab.
Make sure that there is a row in the grid for the specific expense category on the Expense actual.
If there is no row, then you have isolated the problem. Create a row in the Category price grid for the category
on your expense actual. Once this is done, recreate an expense entry, approve it, and verify that the unbilled
sales actual shows a valid price.
If there is a row for the expense category in the category prices grid, check if it has a valid price.
To understand what a valid price is, use these methods:
If the Pricing Method field on the Category price line is set to At Cost, then the unit rate on your Expense sales
actual will be defaulted to the value in the Expense entry.
If the Pricing Method field on the Category price line is set to Markup Percentage, then check if the Percent field
is set to a valid value. The unit rate on your Expense sales actual is defaulted by applying this markup percent to
the price in the Expense entry.
If the Pricing Method field on the Category price line is set to Price per Unit, then check if the Price field is set to
a valid value. The unit rate on your Expense sales actual will be defaulted to the currency amount specified in the
Price field.
If the price setup for the expense category isn't valid, then you have isolated the problem. The solution is to edit the
category price line with a valid price for the expense category in accordance with the rules above. Once you’ve
done that, recreate an expense entry, approve it, and then check that the unbilled sales actual gets a valid price.
If you still don't see a valid price on your expense sales actual after doing the three checks above, please log a
support ticket.
Why is the price defaulting to zero on time cost
actuals?
1/24/2019 • 3 minutes to read • Edit Online
Check 2: Are any of the price lists identified above valid for the specific
date of the time cost actual?
For Project Service to consider a price list for defaulting price, that price list should be applicable for the date on the
time cost actual. Check the following to see if the price list(s) identified above are applicable:
Check if the start and end dates on the general tab for the price lists attached aren’t empty. If the start and end
dates on price lists identified above are empty, you have isolated the problem.
Make a note of the start date field on your time cost actual and check if any of the price lists identified is
applicable for that date. For example, the date of the time cost actual should fall within the start date and end
date on the price list.
If there is no price list that covers that date on the time cost actual, you have isolated the problem. Modify
the start and end dates of the price list to ensure that the price list covers the date of the time cost actual.
If there is more than one price list that covers the date on the time cost actual, you have isolated the
problem. You can fix this by editing the start and end dates of the price list(s) so that there is only one
price list that covers the date of the time cost actual.
If there is only one price list that covers that date of the time cost actual, move to the next check in the
document. Once you’ve done made the required fixes, recreate a time entry, approve it, and verify that the
time cost actual shows a valid price.
Check 3: Is there a price in the price list for the pricing dimensions on
the time cost actual?
If you have successfully completed Check 1 and Check 2, you should now have only one price list that is applicable
for the date of the time cost actual. Open this Price List and go to the Role Prices tab. Make sure that there is a row
in the grid for the pricing dimensions on the time cost actual.
If there is no row in the role price grid for the pricing dimensions on the time cost actual, then you have isolated the
problem. Create a row in the Role prices grid for the pricing dimensions on your time cost actual. Once this is done,
recreate time entry, approve it, and verify that the time cost actual shows a valid price.
If you still don't see a valid price on your time cost actual after you’ve done the three checks above, please log a
support ticket.
Why is price defaulting to zero on time sales actuals?
1/24/2019 • 3 minutes to read • Edit Online
Check 2: Are any of the price lists identified above valid for the specific
date of the time sales actual?
For Project Service to consider a price list for defaulting price, that price list should be applicable for the date on the
time sales actual. Check the following to see if the price list(s) identified above are applicable:
Check if the start and end dates on the general tab for the price lists attached aren’t empty. If the start and end
dates on price lists identified above are empty, you have isolated the problem.
Make a note of the start date field on your time sales actual and check if any of the price lists identified is
applicable for that date. For example, the date of the time sales actual should fall within the start date and end
date on the price list.
If there is no price list that covers that date on the time sales actual, you have isolated the problem.
Modify the start and end dates of the price list to ensure that the price list covers the date of the time
sales actual.
If there is more than one price list that covers the date on the time sales actual, you have isolated the
problem. You can fix this by editing the start and end dates of the price list(s) so that there is only one
price list that covers the date of the time sales actual.
If there is only one price list that covers that date of the time sales actual, go to Check 3. Once you’ve
done made the required fixes, recreate a time entry, approve it, and verify that the time sales actual shows
a valid price.
Check 3: Is there a price in the price list for the pricing dimensions on
the time sales actual?
If you have successfully completed Check 1 and Check 2, you should now have only one price list that is applicable
for the date of the time sales actual. Open this Price List and navigate to the Role Prices tab. Make sure that there is
a row in the grid for the pricing dimensions on the Time sales actual.
If there is no row in the role price grid for the pricing dimensions on the time sales actual, then you have isolated
the problem. Create a row in the Role prices grid for the pricing dimensions on your time sales actual. Once this is
done, recreate time entry, approve it, and verify that the time sales actual shows a valid price.
If you still don't see a valid price on your time sales actual after following the three checks above, please log a
support ticket.
Why can’t I delete records from the Actuals entity?
1/24/2019 • 2 minutes to read • Edit Online
Microsoft Dynamics 365 for Project Service Automation (PSA) 3.x offers new features, implementation of new
platform capabilities, and improvements to existing features in various areas. The following topics provide more
information about the changes that were made in the newest version of PSA:
Entity, control, and user interface changes (Project Service Automation 3.x)
Time and Expense changes (Project Service Automation 3.x)
Resource management changes (Project Service Automation 3.x)
Deprecated web resources in Project Service Automation 3.x
Entity, control, and user interface changes (Project
Service Automation 3.x)
3/28/2019 • 2 minutes to read • Edit Online
With the release of Microsoft Dynamics Project Service Automation (PSA) 3.x, many changes have been made to
the entities, controls, views, and user interface. This topic provides information about these important changes.
NOTE
For the full list of deprecated resources, see Deprecated Web resources in Project Service Automation v3.x
NOTE
For the full list of deprecated resources, see Deprecated Web resources in Project Service Automation v3.x.
Time and Expense changes (Project Service
Automation 3.x)
3/28/2019 • 2 minutes to read • Edit Online
In Microsoft Dynamics 365 for Project Service Automation (PSA) version 3.0, the Time and Expense views have
been updated so that they take advantage of the new platform framework for custom controls.
Previously, the calendar and grid views for Time and Expense were implemented as DHTMLX controls. The
artifacts that are related to that implementation of the calendar and grid views are now obsolete (deprecated).
For the full list of deprecated resources, see Deprecated web resources in Project Service Automation 3.x.
Resource management changes (Project Service
Automation 3.x)
3/28/2019 • 3 minutes to read • Edit Online
The sections of this topic provide information about the changes that have been made to the Resource
management area of Microsoft Dynamics 365 for Project Service Automation (PSA) version 3.x.
Project estimates
Instead of being based on the msdyn_projecttask entity (Project Task), project estimates are based on the
msdyn_resourceassignment entity (Resource Assignment). Resource assignments have become the "source of
truth" for task scheduling and pricing.
Line tasks
In PSA 3.x, line tasks are obsolete (deprecated). Assignments now point to the whole task instead of the line tasks.
The following example shows how a task that is named "Test task" is assigned to team members A and B in earlier
versions of PSA and in PSA 3.x.
Before PSA 3.x:
Test task
Test task – Line task 1
Assignment to A
Test task – Line task 2
Assignment to B
PSA 3.x:
Test task
Assignment to A
Assignment to B
Unassigned assignment
In PSA 3.x, an unassigned assignment is an assignment that is assigned to a NULL team member and a NULL
resource. Unassigned assignments can occur in a couple of scenarios:
If a task has been created, but it hasn't yet been assigned to any team member, an unassigned assignment is
always created.
If all assignees on a task are removed, an unassigned assignment is re-created for that task.
msdyn_assignedresources None
msdyn_assignedteammembers None
msdyn_numberofresources None
msdyn_scheduledhours None
Schedule contour
The schedule contour is stored in the Planned Work field (msdyn_plannedwork) of each Resource
Assignment entity (msdyn_resourceassignment).
Structure
The new structure of the schedule contour consists of flexible time slices that are defined for each day of the
schedule. Each time slice has the following properties:
Start – The start of the working hours for the day, according to the project calendar.
End – The end of the working hours for the day, according to the project calendar.
Hours – The number of hours that are assigned on the day.
Example
This example uses a project calendar where the workday is from 9 AM to 5 PM in the UTC -8 time zone.
[{"End":"\/Date(1543885200000)\/","Start":"\/Date(1543856400000)\/","Hours":8},
{"End":"\/Date(1543971600000)\/","Start":"\/Date(1543942800000)\/","Hours":8},
{"End":"\/Date(1544058000000)\/","Start":"\/Date(1544029200000)\/","Hours":2}]
[{"End":"\/Date(1543885200000)\/","Start":"\/Date(1543856400000)\/","Hours":8},
{"End":"\/Date(1543971600000)\/","Start":"\/Date(1543942800000)\/","Hours":8},
{"End":"\/Date(1544058000000)\/","Start":"\/Date(1544029200000)\/","Hours":2}]
If a task is manually scheduled, the hours are evenly distributed to all the dates.
Example
The following task is manually scheduled for 18 hours over three days (December 3, 2018, to December 5, 2018).
[{"End":"\/Date(1543885200000)\/","Start":"\/Date(1543856400000)\/","Hours":6},
{"End":"\/Date(1543971600000)\/","Start":"\/Date(1543942800000)\/","Hours":6},
{"End":"\/Date(1544058000000)\/","Start":"\/Date(1544029200000)\/","Hours":6}]
Assignment unit
The assignment unit has been deprecated in PSA 3.x. The task effort hours are now equally divided, per day,
among all the assigned resources.
Example
In this example, the task is is assigned to two resources and is auto-scheduled for 36 hours over three days
(December 3, 2018, to December 5, 2018).
Assignment 1:
[{"End":"\/Date(1543885200000)\/","Start":"\/Date(1543856400000)\/","Hours":8},
{"End":"\/Date(1543971600000)\/","Start":"\/Date(1543942800000)\/","Hours":8},
{"End":"\/Date(1544058000000)\/","Start":"\/Date(1544029200000)\/","Hours":2}]
Assignment 2:
[{"End":"\/Date(1543885200000)\/","Start":"\/Date(1543856400000)\/","Hours":8},
{"End":"\/Date(1543971600000)\/","Start":"\/Date(1543942800000)\/","Hours":8},
{"End":"\/Date(1544058000000)\/","Start":"\/Date(1544029200000)\/","Hours":2}]
Pricing dimensions
In PSA 3.x, resource-specific pricing dimension fields (such as Role and Organizational Unit) have been
removed from the msdyn_projecttask entity. These fields can now be retrieved from the corresponding project
team member (msdyn_projectteam ) of the resource assignment (msdyn_resourceassignment) when project
estimates are generated. A new field, msdyn_organizationalunit, has been added to the msdyn_projectteam
entity.
msdyn_resourcecategory msdyn_resourcecategory
msdyn_organizationalunit msdyn_organizationalunit
Contours
The pricing and estimation contour fields have been deprecated on the msdyn_projecttask entity. They have been
moved to the msdyn_resourceassignment entity.
msdyn_costestimatecontour msdyn_plannedcostcontour
msdyn_salesestimatecontour msdyn_plannedsalescontour
Because of the new client interface and other changes that have been made to the Microsoft Dynamics 365 for
Project Service Automation (PSA) solution, some of the web resources for the solution are longer used. Therefore,
they are obsolete (deprecated) as of version 3.0.
Deprecated images
msdyn_\Common\DHTMLXDualViewApp\Content\Calendar\imgs\databg.png
msdyn_\Common\DHTMLXDualViewApp\Content\Calendar\imgs\databg_dayoff.png
msdyn_\Common\DHTMLXDualViewApp\Content\Calendar\imgs\databg_now.png
msdyn_\Common\DHTMLXDualViewApp\Content\Calendar\imgs\dropdown_arrow.gif
msdyn_\Common\DHTMLXDualViewApp\Content\Calendar\imgs\tentative_border.png
msdyn_\Common\DHTMLXDualViewApp\Content\Grid\More_EllipsisColumn_10.png
msdyn_\Common\DHTMLXDualViewApp\Content\Grid\SortingDown_10.png
msdyn_\Common\DHTMLXDualViewApp\Content\Grid\SortingUp_10.png
msdyn_\Controls\BryntumGantt\images\1px.png
msdyn_\Controls\BryntumGantt\images\add.png
msdyn_\Controls\BryntumGantt\images\altrow.png
msdyn_\Controls\BryntumGantt\images\arrow_move_16x16.png
msdyn_\Controls\BryntumGantt\images\arrow_move_32x32.png
msdyn_\Controls\BryntumGantt\images\check.png
msdyn_\Controls\BryntumGantt\images\column_header_bg.gif
msdyn_\Controls\BryntumGantt\images\column_header_over_bg.gif
msdyn_\Controls\BryntumGantt\images\column_weekend_header_bg.gif
msdyn_\Controls\BryntumGantt\images\delete.gif
msdyn_\Controls\BryntumGantt\images\dependencyterminal.png
msdyn_\Controls\BryntumGantt\images\drop_above.gif
msdyn_\Controls\BryntumGantt\images\drop_add.gif
msdyn_\Controls\BryntumGantt\images\drop_append.gif
msdyn_\Controls\BryntumGantt\images\drop_below.gif
msdyn_\Controls\BryntumGantt\images\drop_between.gif
msdyn_\Controls\BryntumGantt\images\drop_no.gif
msdyn_\Controls\BryntumGantt\images\drop_no.png
msdyn_\Controls\BryntumGantt\images\drop_yes.gif
msdyn_\Controls\BryntumGantt\images\drop_yes.png
msdyn_\Controls\BryntumGantt\images\edit.png
msdyn_\Controls\BryntumGantt\images\invalid_line.gif
msdyn_\Controls\BryntumGantt\images\overriddenDay.png
msdyn_\Controls\BryntumGantt\images\overriddenWeekDay.png
msdyn_\Controls\BryntumGantt\images\pattern.png
msdyn_\Controls\BryntumGantt\images\progressbar_handle.png
msdyn_\Controls\BryntumGantt\images\scroll_left.gif
msdyn_\Controls\BryntumGantt\images\scroll_right.gif
msdyn_\Controls\BryntumGantt\images\tab_bar_default_bg.gif
msdyn_\Controls\BryntumGantt\images\transp_1px.png
msdyn_\Controls\BryntumGantt\images\zonebg.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\but_repeat.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\buttons.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\calendar.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\clock_big.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\clock_small.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\collapse_expand_icon.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\controls.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\databg.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\databg_now.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\export_ical.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\export_pdf.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\icon.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\images.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\loading.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs\resize_dots.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\arrow_left.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\arrow_right.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\but_repeat.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\calendar.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\clock_big.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\clock_small.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\close_icon.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\collapse_expand_icon.gif
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\controls.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\databg.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\databg_now.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\export_ical.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\export_pdf.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\resize_dots.png
msdyn_\Controls\DHTMLXScheduler\Styles\imgs_dhx_terrace\resizing.png
msdyn_\Expense\App\Content\Grid\minus.gif
msdyn_\Expense\App\Content\Grid\plus.gif
msdyn_\Expense\imgs\Expense.SVG
msdyn_\imgs\Auto_Scheduled_16.png
msdyn_\imgs\CreatePeriodicMilestones_icon.png
msdyn_\imgs\dhxgrid_skyblue\minus.gif
msdyn_\imgs\dhxgrid_skyblue\plus.gif
msdyn_\imgs\Estimates\ShowGrid_16.png
msdyn_\imgs\Estimates\ShowTimePhased_16.png
msdyn_\imgs\GoToProject_icon.png
msdyn_\imgs\ico_fhe_1080.png
msdyn_\imgs\Manual_Scheduled_16.png
msdyn_\imgs\NavTile_icon_PSA.png
msdyn_\imgs\Project_icon.png
msdyn_\imgs\ProjectService_White.svg
msdyn_\imgs\Search_Grey_16.png
msdyn_\imgs\WBS\ChooseColumns_16.png
msdyn_\imgs\WBS\DownArrow_16.png
msdyn_\imgs\WBS\HideGantt_16.png
msdyn_\imgs\WBS\Indent_16.png
msdyn_\imgs\WBS\NewUsers_16.png
msdyn_\imgs\WBS\Outdent_16.png
msdyn_\imgs\WBS\UpArrow_16.png
msdyn_\Resource\AvailabilityView\Common\img\cancelIcon.png
msdyn_\Resource\AvailabilityView\Common\img\ExtensionIcon.png
msdyn_\Resource\AvailabilityView\Common\img\unknownResource.jpg
msdyn_\skins\skyblue\imgs\dhxcombo_skyblue\dhxcombo_arrow_down.gif
msdyn_\skins\skyblue\imgs\dhxcombo_skyblue\dhxcombo_chbx.gif
msdyn_\skins\terrace\imgs\dhxacc_terrace\dhxacc_btns.gif
msdyn_\skins\terrace\imgs\dhxacc_terrace\dhxacc_cell_progress.gif
msdyn_\skins\terrace\imgs\dhxcombo_terrace\dhxcombo_arrow_down.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_left.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_left_abs.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_left_abs_dis.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_left_dis.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_right.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_right_abs.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_right_abs_dis.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\ar_right_dis.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\item_chk0.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\item_chk1.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\minus.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\pagIng_page.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\pagIng_pages.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\pagIng_rows.gif
msdyn_\skins\terrace\imgs\dhxgrid_terrace\plus.gif
msdyn_\skins\terrace\imgs\dhxlayout_terrace\dhxlayout_cell_btns.gif
msdyn_\skins\terrace\imgs\dhxlayout_terrace\dhxlayout_cell_progress.gif
msdyn_\skins\terrace\imgs\dhxlayout_terrace\dhxlayout_sep_h.gif
msdyn_\skins\terrace\imgs\dhxlayout_terrace\dhxlayout_sep_v.gif
msdyn_\skins\terrace\imgs\dhxtabbar_terrace\dhxtabbar_arrows.gif
msdyn_\skins\terrace\imgs\dhxtabbar_terrace\dhxtabbar_cell_progress.gif
msdyn_\skins\terrace\imgs\dhxtoolbar_terrace\dhxtoolbar_arrow.gif
msdyn_\Time\imgs\Time.svg
4. Select one of the following allocation methods for booking the resource:
Full Capacity books the resource’s full capacity for the specified from and to dates.
Percentage Capacity books the resource for a percentage of the resource's capacity for the specified from
and to dates.
By Hours Distribute Evenly books the resource for a specified number of hours, distributing it evenly per
day over the specified from and to dates.
By Hours Front Load books the resource for a specified number of hours, front-loading the per-day hours
over the specified from and to dates.
Don’t select None because it adds the resource to the team but doesn’t create any bookings that absorb the
resource's capacity.
5. Select Save.
Note that the hours of the booking must be enough to cover the effort hours and date ranges of the tasks
that you assign this resource to. If they aren’t in alignment, you can’t assign the resource to the task.
6. On the work breakdown structure (WBS ) for the task, click the resource cell dropdown. Then:
a. Select Add.
b. Select the dropdown under Resources and select the team member you added above.
c. Select OK. The team member is now assigned to the task.
On the team member grid, you’ll see the aggregate of the resource’s assigned hours under Assigned Hours. It will
be less than or equal to the booked hours for the resource.
If the task you’re attempting to assign to the resource starts after the end date of the resources bookings, the
resource won’t appear in the dropdown.
Note that you can assign a resource to more hours than their booked hours if the resource has some remaining
unassigned capacity. In this case the resource will only be partially assigned up to their bookings. You can see these
remaining unassigned task hours by adding the Unstaffed Hours column to the work breakdown structure.
If resources are assigned to their booked hours (their booked hours equals their assigned hours), you’ll see the
following error message when you attempt to assign them further tasks:
Unable to assign resource to task - Following resource(s) do not have sufficient hours booked against project.
Additionally, the default project manager team member that is added to the team when you create the project is
added without any bookings and can’t be assigned to any task. They won’t show up in the resource dropdown for
tasks.
If you want to assign this resource, you need to remove them from the team and then re-add them with an
allocation method other than None. The reason they’re added to the team when the project is created is so that a
project has at least one project approver by default.
Once you’ve completed assigning roles to the tasks in the WBS, select Generate Project Team. Project Service
creates the minimum number of generic team members based on the roles, resourcing organization units, and
project calendar by aggregating the task assignments.
On the Team Member grid, you’ll see resources of the Generic Resource type with the role and position name. If
two resources are needed for a role to complete the work, the Generate Team feature creates two team members
and uses position name to set them apart.
You can open the backing resource requirement for the generic team member by selecting the link under Resource
Requirement.
Select Book for the generic resource, and then you can use the schedule board to find and book a real resource.
You can also submit the requirement for fulfillment by a resource manager by selecting Submit Request.
When the generic resource is fulfilled with a named resource, the generic resource is removed from the team and
the task assignments for the generic resource are assigned to the named resource that fulfilled the generic
resource’s resource requirement.
How do I "soft book" resources in the web app
(Project Service app v2.x)?
1/24/2019 • 4 minutes to read • Edit Online
Applies to Project Service app version 2.4.4.30 or earlier on Dynamics 365 (online) version 9.x
Applies to Project Service app version 1.x on Dynamics 365 (online) version 8.2
There's a known limitation in earlier versions of the Project Service application that the names of the stages in the
Project Stages business process flow must exactly match the expected English names (Quote, Plan, Close).
Otherwise, the business logic, which relies on the English stage names, doesn't work as expected. That's why you
don't see familiar actions such as Switch Process or Edit Process available on the project form, and customizing
the business process flow isn't encouraged.
This limitation has been addressed in version 2.4.5.48 and later. This article provides suggested workarounds if you
need to customize the default business process flow for earlier versions.
What happens if the stage names don't match the English names?
In the Project Service app version 1.x on the 8.2 platform, when the stage names in the business process flow don’t
match the English stage names exactly, the business logic that sets the right stage for quotes or contracts, or that
closes the project, is skipped. No error messages are displayed. Therefore it appears that you are able to customize
the Project Stages business process flow. However, you won’t see any of the automatic processes working for
quotes, contracts, and project close.
In the Project Service app version 2.4.4.30 or earlier on the 9.0 platform, there was a significant architectural
change to business process flows, which required a re-write of the business process flow business logic. As a result,
if the process stage names don’t match the expected English names, you do receive an error message.
Therefore, if you want to customize the Project Stages business process flow for the project entity, you can only add
brand new stages to the default business process flow for the project entity, while keeping the Quote, Plan, and
Close stages as-is. This restriction ensures that you don’t get errors from the business logic that expects the English
stage names in the business process flow.
In version 2.4.5.48 or later, the business logic described in this article has been removed from the default business
process flow for the project entity. Upgrading to that version or later will let you customize or replace the default
business process flow with one of your own.
Workarounds for earlier versions
If upgrading isn't an option, you can customize the Project Stages business process flow for the project entity in one
of these two ways:
1. Add additional stages to the default configuration, while retaining the English stage names for Quote, Plan, and
Close.
2. Create your own business process flow and make it the primary business process flow for the project entity,
which lets you have any stage names you want. However, if you want to use the same standard project stages
Quote, Plan, and Close, you need to do some customizations that are driven off your custom stage names. The
more complex logic is in the closing of the project, which you can still trigger by just deactivating the project
record.
Additional considerations for Project Service app version 2.4.4.30 or earlier on platform 9.0
In Project Service 2.4.4.30 or earlier on platform 9.0, with a custom business process flow the Stage Name field on
the project entity used in the Project By Stage chart and project list views won’t update, because it’s coupled to
the default Project Stages business process flow. You can address this issue with the following steps:
Add a custom field to capture the current business process flow stage that is updated as the user advances
through the custom business process flow.
Modify the Project By Stage chart to work with your custom field instead of the default configuration.
Steps to create your own business process flow for the project entity
To create your own business process flow for the project entity do the following:
1. Go to Settings > Process Center. Don’t copy the Project Stages business process flow because that also copies
the Project Service business logic.
2. Use the Process Designer to create the stage names you want. If you want the same functionality as the default
stages for Quote, Plan, and Close, you’ll have to create that based on your custom business process flow’s
stage names.
3. In the Process Designer, click Order Process Flow to make the custom business process flow the primary
business process flow for the project entity by moving it above the Project Stages business process flow to the
top of the list.
The following steps apply to Project Service app 2.4.4.30 or earlier on the 9.0 platform
4. Add a new custom field to the project entity to capture the custom stages in your custom business process flow.
You’ll need to add business logic (plugin/workflow ) to update this field when the stage on the custom business
process flow is updated.
5. Modify the Project By Stage chart to use your new custom field for stages.
6. Modify any views for the project entity to include your new custom field for stages.
White papers for Project Service
7/31/2019 • 2 minutes to read • Edit Online
These white papers are designed to provide in-depth information for Customer Engagement project service
automation.
External system integration for project service
Basic guide to quoting, pricing, and billing for project service
Advanced guide to quoting, pricing, and billing for project service
Guide to project planning and tracking for project service
Reporting for project service
Resource management for project service
See Also
Overview of Project Service
Administrator guide (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
To become familiar with Dynamics 365 for Customer Engagement for Project Service, it’s useful to have a pre-
configured environment to explore. For this purpose, we’ve created a separate sample data installation package
(English-language only at this time) that makes it easier to learn about these solutions.
The installation package is available on the Microsoft Download Center.
Running the Package Deployer install performs the following actions:
Creates or sets default parameters that drive behavior of Project Service
Imports sample data such as Bookable Resources, Roles, Sales and Cost Price lists, Organizational Units,
relevant sales process records, Work Orders and Projects
IMPORTANT
There is no way to un-install the demo data. Therefore, you should only use this package on demonstration, evaluation,
training and test systems.
NOTE
A Project Service organizational unit is separate from a business unit in Customer Engagement. Business units are more of a
security structure that affects levels of access to Customer Engagement information, and are usually organized around
company divisions, like parent company and subsidiaries or divisions. Organizational units represent how your consulting
company categorizes its different businesses, whether by geographic location (like EMEA or LATAM), by function (like
Product Development or IT Outsourcing), or by other parameters.
NAME VALUE
Familiar 1
Good 2
Proficient 3
4. To add or change a proficiency level, click the table button and make the changes you want.
5. Click the Save button in the bottom right corner of the screen.
See Also
Set up resources
Add resource roles (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
NOTE
The Project Finder Mobile app only works with Customer Engagement, not with on-premises installations.
This is a global setting. Project managers can set whether an individual project will be visible on that
project's Project Team page.
Email notifications
Project Service sends emails regarding resource requests to the following recipients at the following times:
RECIPIENT EVENT
Project manager - When a resource signs up for a project with the Project
Finder Mobile app.
RECIPIENT EVENT
Resource - When the project work the resource has signed up for has
already been fulfilled by another resource.
- When their skill approval request has been approved or
rejected.
- When their project sign up request has been approved or
rejected.
Privacy notice
By enabling the Project Finder mobile app, you provide users in the organization with visibility into project work
and the ability to sign up for work. Users can also work with the Project Finder app to view and update their skills.
The Project Finder mobile app is enabled via the Project Service Parameters Setting, by setting the value of the
Resource requirements visible to resources and Allow skill update by resource attributes to Yes. Changing the value
of these attributes to No disables this functionality.
When using this feature, be sure to consider the following key points:
Resource requirements visible to resources. Setting this attribute to Yes provides users with visibility into
project work exposes the following information about a project:
Project name
Role name
Customer name
Customer address
Work duration
Allow skill update by resource. Setting this attribute to Yes provides users with the ability to add skills to
their profiles and to set their level of proficiency for the skills they add.
See Also
Set up resources
Resource manager guide (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
3. In the calendar for the resource you want to book, select the time period to book the resource, and then
either click Book to book the resource or Propose Booking to propose the booking and have the
requestor approve it. When you book a resource, you can soft book or hard book.
See Also
Resource Manager Guide
Schedule resources for a project (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
If you are using an older version, for resource availability see, View resource availability.
IMPORTANT
To use the schedule board booking functionality, geocoding, and location services, you need to turn on maps.
1. From the main menu, click Resource Scheduling > Administration.
2. Click Scheduling parameters.
3. Open record and scroll down to the Resource Scheduling Optimization section.
4. On the Connect to Maps field, choose Yes.
5. Accept terms and save the record.
1. From the Main menu, click Project Service > Schedule board. From here, there are several ways to manually
schedule a booking requirement. Choose the method that works for you.
1. Choose **Find availability - Current Resources** to find an available resource from the list on
the schedule board.
2. Choose **Find availability - All Resources**, to find an available resource from resources in the
system
> [!NOTE]
> When you do this, the filters will show options for the selected booking requirement.
3. When you see an available slot right-click on the time slot on the schedule board and choose
**Book Here**. Or, drag and drop the booking requirement to the available time slot.
Book a resource using the daily view and find who’s under-booked
1. On the schedule board, click **View Mode** and select **Days**.
This shows a grid view of how many hours a resource is booked per day and which days they are free.
2. Click the name of the resource you want to book, and then click **Book**.
3. On the **Resource booking (create)** dialog box, choose the project that you want to book the resource
for along with booking method and start and end times.
2. Drag the booking requirement to an available resource/time slot on the schedule board.
See Also
Resource Manager Guide
View resource availability (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
NOTE
This feature is supported in Dynamics CRM Online 2016 Update 1. Interested in getting this feature? Find your Dynamics
365 administrator or support person
If you are using an newer version, for resource availability see, Schedule resources for a project (Project Service Automation).
Schedule anything in Dynamics 365 for Customer Engagement using Universal Resource Scheduling. You can
enable scheduling for any entity including custom entities.
For example, you can enable scheduling for the opportunity form and schedule marketing visits for your
opportunities. You can also do this for the case form and schedule time to work on cases.
For organizations that use:
Dynamics 365 for Field Service, you’ll see a new integrated scheduling experience. More information:
Dynamics 365 for Field Service Help
Dynamics 365 for Project Service Automation, you’ll have a new improved scheduling experience. More
information: Dynamics 365 for Project Service Automation Help
Prerequisites
Before you can use Universal Resource Scheduling, make sure you have:
Dynamics 365 for Field Service, Project Service, or Customer Service.
A license for Universal Resource Scheduling. More information: Onboard your organization and users to
Dynamics 365 for Customer Engagement (online)
User credentials with the Universal Resource Scheduling security role, in order to manage the solution once
it has been deployed.
NOTE
If you already have relationships created then you can select form an existing relationship.
6. Click Publish Customization.
7. On the BOOKING SETUP METADATA: INFORMATION form, use the tooltips to edit the default opens.
NOTE
To update the Booking Status Field Logical Name, you will first need to customize the system to add additional
statuses. More information: Customize your Dynamics 365 for Customer Engagement system - define status reasons
In attribute settings sections field, can be mapped from entity that was enabled for scheduling to fields on booking
requirement. For example, from Date, to Date, Territory, Duration and others.
Schedule something
Step 1: Create a resource requirement
1. From the main menu, click Sales, Service, or Marketing.
2. Choose an entity that has scheduling turned on. For example, let’s say it’s turned on for the Leads entity. In
this case, from the main menu you would choose Marketing > Leads.
3. From the list of leads choose an existing lead.
4. When the form opens, go to the sub-grid menu, and click Resource Requirement.
5. Under the Resource Requirement Associated View, click New.
6. On the Resource Requirement form, use the tooltips to fill in the inform required information.
7. When you’re done, click Save.
A plugin runs and checks the relationships and automatically sets the booking set-up metadata relationship
appropriately.
Step 2: Schedule the booking requirement
To learn more about the schedule board, Configure the schedule board.
There a few different ways to schedule a booking requirement:
Option 1: Right click on an unscheduled booking and find available resources.
1. From the main menu, click Resource Scheduling > Schedule Board.
2. From the Booking Requirement list, right click on an unscheduled booking and choose one of the
following:
Choose Find availability - Current Resources to find available resource from the list of resources
on the schedule board.
-Or-
Choose Find availability -Current Resources, to find available resource from resources in the
system.
NOTE
When you do this, the filters will show the options for the selected booking requirement. If you can't find a
available resource for the book, try adjusting the filters.
3. When you see the available slot right click on the time slot on the schedule board and choose Book
Here. Or, drag and drop the booking requirement to the available time slot.
Option 2: Drag an unscheduled booking requirement from list view to the schedule board.
1. From the main menu, click Resource Scheduling > Schedule Board.
2. Select an unscheduled booking requirement from the list at the bottom.
3. Drag the item to an available resource/time slot on the schedule board.
Option 3: Schedule a booking requirement form the entity form.
1. From the main menu, click Sales, Service, or Marketing.
2. Choose and entity that as scheduling turned on.
For example, let’s say it’s turn on for the Leads entity. In this case, from the main menu you would
choose Marketing > Leads.
3. From the list of leads, choose the lead that you want to schedule a booking for.
4. When the lead form opens, on the command bar, click Book.
5. Use the schedule assistant to book the requirement.
See also
Install Dynamics 365 for Field Service
Install Dynamics 365 for Project Service Automation
Project manager guide (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
Prerequisites
If you haven't already, you’ll need to complete the following items before you can start creating projects:
Create a work hours template. Set up a project calendar that defines the number of working hours to
accommodate per day in the schedule and any business closures.
Create a price list. Set cost and sales prices for resource roles in your organization, as well as for other
categories like expenses and products.
Add resource roles. Define roles to help determine resource requirements and project costs.
See Also
Overview of Project Service
Administrator Guide
Account Manager Guiden
Resource Manager Guide
Time, Expense, and Collaboration Guide
Provide work estimates for a project during the sales
process (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
Task types
You’ll use the following types of tasks when creating your work breakdown structure:
Project root node The top-level summary task for the project. All other project
tasks are created under it. The name of the root task is the
project name. The effort, dates, and duration of the root node
are based on the values on the hierarchy below it. You can’t
edit root node properties or delete the root node.
Summary or container tasks A summary task is a task that has sub-tasks under it. A
summary task doesn’t have any work effort or cost of its own.
Its work effort and cost are a rollup of its sub-tasks. You can
change the name of a summary task, but you can’t change
the effort, dates, or duration, because those are automatically
calculated. Deleting a summary task deletes the task and all of
its sub-tasks.
Leaf node tasks A leaf node task represents the most detailed work on the
project. It has an estimated effort, a planned number of
resources, planned start and end dates, and a duration.
Task hierarchy
You have the following options when creating a task hierarchy:
Add task. You can add a task at a position you choose in the task hierarchy. If you don’t select a position,
your new task appears at the end.
Indent task. Indent a task to make it a child of the task directly above it.
Outdent task. Outdent a task to make it so it’s no longer a sub-task of its original parent task.
Move up and Move down. Move tasks up and down in the hierarchy of its parent task. Moving a task up
or down has no effect on its effort, cost, dates, or duration.
Task attributes
A task’s name describes the work that needs to be completed. You use various task attributes to describe the
schedule and staffing requirements for the task.
Schedule attributes
Assign values to Effort hours, Number of resources, Start date, End date, and Duration to determine the
schedule for the task.
Effort is an estimate of the hours it takes to complete the task.
Number of resources is an estimate that the project manager puts in the task to help come up with the best
possible schedule.
Duration (in days) indicates the number of work days it will take to complete the task.
Staffing attributes
Role, Resource organizational unit, Number of resources, and Resources describe the staffing
requirements for the task.
Role describes the type of resource needed to perform the task.
Resource organizational unit indicates the organizational unit from which resources should be staffed for
that task; this also impacts the cost and sales estimate of the task, since this is accounted for when determining
the unit sales price for the resource.
Resources holds a generic resource or a named resource when one is found.
Task dependencies
You can create predecessor relationships between one or more tasks in the work breakdown structure. You can set
one or more values for the predecessor field on tasks to indicate the tasks that it will be dependent on. When you
assign a predecessor value to a task, the task can only start when all the predecessor tasks have completed. Setting
this dependency on a task will result in the recalculation of the planned start date of the task as the latest end of all
of its predecessors. Predecessor-related impacts on a schedule are not limited by the task mode defined on the
task.
Task mode
Task mode is one of the important factors that determine scheduling leaf node tasks. There are two task modes for
every task: auto scheduling mode and manual scheduling mode.
Auto scheduling. When you set the task mode to Automatically Scheduled, the task scheduling engine
uses the scheduling rules on the following task attributes to determine the schedule for the task:
Predecessors
Effort
Number of resources
Start and end dates
Scheduling rules. The start date of a leaf node task that does not have predecessors defaults to the
project’s scheduling start date. The duration of a leaf node task is always calculated as the number of
working days between its start and end dates. When a task is automatically scheduled, the scheduling
engine follows the rules below:
Start and end dates of a task must always be working days according to the project’s scheduling
calendar
The start date of a task that has predecessors defaults to the latest end date of its predecessors
Effort = Number of people * Duration * hours in a standard work day of the project calendar
Manual scheduling. In some cases, you might want to deviate from these rules. In these cases, you can set
the task mode for the task to be manually scheduled. This stops the scheduling engine from calculating the
values for other scheduling attributes. Setting predecessors on tasks always impacts the dependent task’s
start date.
Even distribution
Manually scheduled task mode doesn't honor the work hours, project calendar, or number of resources defined on
the task. The task schedule is based on user input. For such tasks, the effort allocation per unit time period of the
chosen timescale doesn't have any limiting factors. The total effort on the task is equally split and allocated for each
unit time period on the chosen timescale.
In this way, the task mode defined on the task determines the effort distribution or allocation of effort per unit time
period in time-phased estimates.
Expense estimates
Any expense that will be incurred in the project that is notdirectly related to labor to be expended can be recorded
in the project estimates in the grid view. Using the Add expense estimate option in the grid view, you can
accomplish this. The expense estimates can be recorded for a specific task or for the entire project;you can choose
expense categories on these lines and choose a tentative date when the expense is expected to be incurred. If the
associated cost and sales price list have default prices, or markup percentages defined for expense categories, it will
be defaulted on the estimate line on association.
See Also
Project Manager Guide
Track project progress and cost (Project Service)
1/24/2019 • 2 minutes to read • Edit Online
New When you create a project, the stage is set to New. If you
created the project from a template, at this stage the project
may have a schedule, estimates, and team data. Otherwise, it
will be the outline of the project and you need to manually
enter the rest of the project components.
Plan When you win a quote associated with a project, and when
the engagement progresses to the contract stage, the project
stage updates to Plan. Contract details display on the Sales
tab on the Project page.
Complete When the project work is complete, you can flip the stage to
Complete. When the project stage is set to complete, it’s
understood that the work is 100% complete but the project is
kept open for any pending time or expense entries to be
recorded.
Close When all transactions have been recorded on the project and
you don't expect any more to be logged, you can manually set
the stage to Close. When the project is set to Close, you can’t
log any more transactions on the project and the project will
be read only.
Microsoft Project
Applies to Project Service app versions 2.x and 1.x
Project Service makes it easier for you to do your project planning including estimates. You can define the work so
that costs, effort, and sales value are clear as the final proposal is submitted.
Now you can install the Dynamics 365 Project Service Automation Add-in for Microsoft Project and do your
planning work in the familiar environment of Microsoft Project. Use the robust planning and management
capabilities of Microsoft Project and then update your project plan in Project Service Automation.
IMPORTANT
To use the SharePoint document management feature in Customer Engagement Customer Engagement to store your
Microsoft Project files for Project Service projects, your Microsoft Project admin will need to turn on document
management. More information: Enable SharePoint document management for specific entities
The Dynamics 365 Project Service Automation Add-in for Microsoft Project is only compatible with Microsoft Project 2016
Professional Edition.
Microsoft Project Gantt Chart Imports into the Project Service Work Breakdown Structure
screen.
Microsoft Project Resource Sheet Imports into the Project Service Project Team Members
screen.
Microsoft Project Use Usage Omports into the Project Service Project Estimates screen.
NOTE
DEPRECATED: This feature has been deprecated and is no longer available.
Set-up
Before you can see and manage your bookings on your Office 365 calendar, you need to set a few things up.
You will need to have Office 365 Global Administrator or Customer Engagement System Administrator
credentials.
Your Dynamics 365 for Customer Engagement Admin will need to configure the email server profile and
each user will need to configure their mailbox. More information: Set up email processing through server-
side synchronization
Create a delegate
1. From the main menu, click Project Service > Delegations.
2. On the command bar, click New.
3. Name: Enter a name for the record.
4. Type: Select whether the delegate can enter time or expense entries on your behalf.
5. Delegate: Select the name of the person you want to be the delegate.
6. Start and end dates: Choose dates when delegation starts and ends.
7. When you're done, click Save & Close.
Find a project
The Project Finder Mobile app shows a list of projects ranked according to how well your skills and proficiency
levels match the required skills and proficiency levels for the project. The projects that are the best fit for you
appear at the top of the list. A checked box under the project title indicates your skills meet or exceed the
requirements for the project.
Tap the arrow to the right of the project you're interested in to see more details and sign up for it.
See Also
Time, Expense, and Collaboration Guide
User guide for Project Resource Hub
1/24/2019 • 2 minutes to read • Edit Online
Basic Navigation
1. When you sign in on the Dynamics 365 for Customer Engagement mobile app, you’ll see the MyApps page
with a list of the apps that you access to.
2. Select Project Resource Hub.
The navigation bar
Use the nav bar to get to your work area, create a new record, search, or do other tasks. To access more commands,
tap
Enter time
Enter your hours at least weekly—or at the frequency requested by your managers—to ensure your clients are
invoiced and you’re credited correctly.
1. Tap the menu button, and then tap Time Entries. This brings up your calendar.
2. To see your calendar for the previous or next week, tap the Previous or Next button. Tap Today to get back
to the current week.
3. To enter your time, tap New on the command bar.
4. Fill in the fields in the form and tap Save.
5. Continue entering time for the week. When you’re done and everything looks correct, tap Submit. A
manager will review and approve your time entries.
Enter expenses
Enter your expenses at least weekly—or at the frequency requested by your managers—to ensure your clients are
invoiced and you’re credited correctly.
1. Tap the menu button, and then tap Expenses. This brings up your calendar.
2. You can switch to Day, Week, or Month view, or navigate to the previous or next time period.
3. To enter your expense, tap New on the command bar.
4. Fill in the fields in the form and tap Save.
5. Continue entering expenses for the week. When you’re done and everything looks correct, tap Submit. A
manager will review and approve your expenses.
Type field
Microsoft Dynamics 365 for Project Service Automation (PSA) relies on the Type (msdyn_ordertype) field of the
Opportunity, Quote, Order, and Invoice entities to distinguish work-based versions of these entities from item -
based and service-based versions. Work-based versions of these entities are handled by PSA. Lots of business
logic on the client side and server side of the solution depends on the Type field. Therefore, it's important that the
field be initialized with a correct value when the entities are created. An incorrect value can cause incorrect
behaviors, and some business logic might not run correctly.
IMPORTANT
Don't remove the scripts. Otherwise, some data might be initialized incorrectly.
4. Find the formId value of the new form. You can complete this step in two ways:
Export the My Project Information form as part of an unmanaged solution, and then look up the
formId value in the customization.xml file of the exported solution.
Open the My Project Information form in the form editor, and then look for the globally unique
identifier (GUID ) next to the fromId parameter in the URL, as shown in the following illustration.