Dynamics 365 Project Service Automation: Setting up Inter-Organizational Sales in PSA

Tested on:
Dynamics 365 CE with PSA version 3.10

Multi-currency scenarios are common for many professional services organizations. While PSA has always supported multi-currency scenarios for inter-org sales, that specific area is one of the most complex ones to configure in PSA. The October ’18 wave of business application releases also introduced a new cost price list feature, which will allow for a line-level currency for resource prices that differs from the price list header currency. This feature may naturally have an impact, when setting pricing for inter-org sales.

While this blog post covers setting up inter org-sales in detail, it is expected that readers of this post have an advanced understanding of quoting, pricing and billing in PSA. As such, this blog post doesn’t include definitions of common PSA terminology. To learn the key concepts around quoting, pricing and billing, refer to this article by Microsoft.

This blog post approaches an inter-org sales scenario from the following perspective:

Organizational Unit UK
Purpose of the Org Unit: Resourcing Unit, which holds resources
Resources in Org Unit: John Doe, Antti Pajunen
Default cost currency used by Org Unit: GBP as price list header currency, USD as line-level currency in select scenarios

Organizational Unit Finland
Purpose of the Org Unit: Contracting Unit, which runs Projects
Resources in Org Unit: N/A
Default cost currency used by Org Unit: EUR
Default sales currency when FI delivers projects as a Contracting Unit: EUR

Other settings and parameters
Other defined currencies: USD
Resource Roles: Consultant, Developer, Project Manager
Resource Work Hours custom fields: Values defined due to multidimensional pricing. Can be ignored.
Resource Work Location custom fields: Values defined due to multidimensional pricing. Can be ignored.

The setup

Inter-org sales setup can be divided into 5 steps. Don’t forget to test your different use cases after the setup. Incorrect Actuals are inconvenient and time-consuming to reverse. Also keep in mind that an inter-org setup can’t be transferred in solutions from one environment to another. The setup needs to be done manually to all environments or 3rd party tools such as KingswaySoft need to be used.

1. Create Organizational Units

Create Organizational Units for Finland and UK. Cost Price Lists for both Org Units are created in step 3 so the Cost Price List subgrid is left empty for now. Finland’s currency will be EUR and UK’s GBP.

1. Create Organizational Units.
1.1. Org Unit FI.
1.2. Org Unit UK.

2. Set Bookable Resources

Set Bookable Resource to the relevant Org Units. In this example, both resources are set to Org Unit UK. Remember to set Resource Roles and other PSA related parameters such as Resource Skills and target utilization.

2. Bookable Resources.

3. Cost Price Lists

Create a Cost Price List for UK with GBP as currency. Add Consultant and Project Manager roles with GBP as currency. Developer is added with currency being USD, to demonstrate the new feature of line-level currencies for resource prices that differ from the price list header currency. Remember to set the Resourcing Unit to UK for each role price record. Actuals with a Transaction Type of Resourcing Unit Cost will get their price from the Cost Price List for UK.

3. Cost Price List for UK.
3.1 Role price records on Cost Price List for UK.

Org Unit Finland also needs a Cost Price List. The currency used is EUR and the Resourcing Unit for all role price record is UK, just like on the Cost Price List for UK. The Resourcing Unit on the Cost Price List for Finland doesn’t change as all resources are in the UK. Actuals with a Transaction Type of Cost and Inter-Org Sales will get their price form the Cost Price List for Finland.

3.2. Cost Price List for Finland.
3.3. Role price records on Cost Price List for Finland.

4. Sales Price Lists

In this example, EUR is used in all sales activities. Create a new Sales Price List in EUR and add Consultant, Developer and Project Manager as role price records. All these roles have their price in EUR and the Resourcing Unit is still the UK.

4. Sales Price List.
4.1. Role price records on Sales Price List.

5. Add Cost Price Lists to Org Units and Sales Price List to Parameters

Cost Price List for UK will be added to the UK Org Unit and Cost Price List for Finland will be added to Org Unit Finland.

5. Cost Price List UK for Org Unit UK.
5.1 Cost Price List FI for Org Unit Finland.

As all sales activities are in EUR, the Sales Price List that was created in step 4 will be added to Parameters. This way there will be a default Sales Price List that PSA uses.

5.2. Sales Price List under Parameters.

Testing Inter-Org sales settings

Testing inter-org sales setting can be done by running through PSA’s Order to Time Entry Approval process. Whether the setup works or not can be seen from Project Contract Line Details and/or Actuals.

1. Create an Order, Order Line and Project Contract Line Details

Create an Order for an Account that has EUR defined as its currency. Contracting Unit on the Order should be Finland and currency on the Order should be EUR.

1. Order for testing Inter-Org.

Create a Time and Material Order Line with Include Time = Yes. A Project associated to the Order Line is also need. To create Unbilled Sales Actuals, an Order and a Project are mandatory.

1.1. Order Line with Project.

Create Project Contract Line Details for Consultant, Developer and Project Manager. Notice that the Resourcing Unit must be set to UK so that correct prices are displayed. As Org Unit Finland doesn’t have any resources, adding a new PCLD with Finland as the Resourcing Unit will cause the Sales and Cost prices to default to 0. The subgrid on the bottom of the form displays Transaction Types of Cost. It is not visible in PSA OOTB.

PCLDs are a good way to test if Price Lists have been correctly built and set. If a price defaults to 0 on a PCLD, it will also default to 0 on an Actual. As the PCLDs in the image below are displaying correct results, it is safe to deduce that Actuals will also work as intended and the inter-org sales setup is successful.

1.2. Project Contract Line Details.

2. Submitting and approving Time Entries

Submit Time Entries for Bookable Resources created. In this example, I will submit and approve Time Entries for myself as a Project Manager and for John Doe as a Consultant and a Developer.

2. Submitting Time Entries.
2.1. Approving Time Entries.

3. Verifying Actuals

The last step is to verify all the Actuals, which are created after approving Time Entries. Based on the results, we can conclude that the setup for inter-org sales works as intended.

Cost: Prices originate from Cost Price List for Finland
Inter-Organizational Sales: Prices originate from Cost Price List for Finland
Resourcing Unit Cost: Prices originate from Cost Price List for UK
Unbilled Sales: Prices originate from Sales Price List

3. Verifying Actuals.

And there we have it! Inter-org sales has been successfully set up. To add to the challenge, try combining inter-org sales with multidimensional pricing scenarios.

All my blog posts reflect my personal opinions and findings unless otherwise stated.