How to Customize a tool-tip when hover a chart ?
USD – Translate and DetectLanguage Actions
Unified Service Desk (USD) for Dynamics 365 has two actions which until now I hadn’t used. Translate and DetectLanguage. What are these and what do they do?
In this post, I will explain these actions and show you a working example.
The Translate action provides on demand translation of text data using Azure Translation Services. Meaning we can translate a data parameter from any language to any language. Additionally, the DetectLanguage parameter provides the capability to determine the language of any block of text.
Below you will find a video that shows how I have used these actions within my USD solution to translate the body of any from English into another language. Or from English into any language.
Before I explain how this functionality was created, let me explain a little detail about these actions. These details will be based on the information you can find on Microsoft’s site, here. But I will add additional snippets of information that I’ve discovered. (With a little help from my friends!)
Translate Action
Enables you to perform language translations using Microsoft Translator.
The Translate and DetectLanguage actions are UII Actions of Global Manager.
Parameter | Description |
Value | This is the text to translate. This value may be escaped for multi-line support. Some valid examples: value=$Escaped(“my string<br>new line\\\”my text\\\””) value=[[myapp.myparam]^] value=$Escaped([[myapp.myparam]$]) value=$Multiline([[myapp.myparam]$]) You may find it useful to review how replacement parameters work, see details here or here. |
fromlanguage | Name of the language to translate from. If this is blank, the system will attempt to detect the language of the specified value to be translated before translating. For a list of valid language values, see Translator Language Codes. |
tolanguage | Name of the language to translate to. For a list of valid language values, see Translator Language Codes. |
clientId | A client ID obtained from Microsoft Azure for translation services. If this option is blank that USD will look for an option called Azure_ClientId For information about registering with Azure, https://datamarket.azure.com/developer/applications/ Note: |
clientSecret | A client secret obtained from Microsoft Azure for translation services. If this option is blank that USD will look for an option called Azure_ClientSecret For information about registering with Azure, https://datamarket.azure.com/developer/applications/ |
The translated value is displayed under the $Return replacement parameter.
DetactLanguage Action
Enables you to return the language of a block of text using Microsoft Translator.
Parameter | Description |
Value | This is the text to inspect. This value may be escaped for multi-line support. Some valid examples: value=$Escaped(“my string<br>new line\\\”my text\\\””) value=[[myapp.myparam]^] value=$Escaped([[myapp.myparam]$]) value=$Multiline([[myapp.myparam]$]) You may find it useful to review how replacement parameters work, see details here or here. |
clientId | A client ID obtained from Microsoft Azure for translation services. If this option is blank that USD will look for an option called Azure_ClientId For information about registering with Azure, https://datamarket.azure.com/developer/applications/ Note: |
clientSecret | A client secret obtained from Microsoft Azure for translation services. If this option is blank that USD will look for an option called Azure_ClientSecret For information about registering with Azure, https://datamarket.azure.com/developer/applications/ |
The language value is displayed under the $Return replacement parameter.
Setup
Before you can use these actions some setup will be required.
Firstly, you will need to obtain a client ID and client secret for Microsoft Azure translation services. Using this link …. https://datamarket.azure.com/developer/applications/
Warning:
You can obtain an Azure trial that will “work” for development purposes. But it will have a limitation that you can only complete one translation every 10 minutes. I have been told that this restriction is removed with a fully paid Azure subscription. I haven’t tested that! It would be great if the first person who tries these actions with a paid subscription could comment on this post to confirm this is correct.
Next you will need to make an alteration to one of USDs configuration files. UnifiedServiceDesk.exe.config
You will find this in the program directory of our Unified Service Desk client. Typically, this will be “Program Files/Microsoft Dynamics CRM USD/USD”
To edit this XML configuration file, you may need to copy to your desktop and open using any editor. (NotePad will do!)
You will need to insert a service binding to connect with Microsoft Translation Service. The code for this is below;
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_LanguageService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://api.microsofttranslator.com/V2/soap.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_LanguageService" contract="MicrosoftTranslationService.LanguageService" name="BasicHttpBinding_LanguageService"/>
</client>
</system.serviceModel>
Below you can see that I have added this code into my config file.
Example Solution
In the following notes I will describe the steps I took to create the solution shown in my video.
I am going to assume that you can already open a CRM entity in a session and you have some functionality to open an email.
The steps involved are;
- Create options
- Create Translate action
- Create DetectLanguage action
- Create “RunXRMCommand” action
- Create “Copy To Context” actions
- Create a toolbar and add actions
Step One – Create options
You should have a Client ID and Client Secret for the Azure translation service, now you could enter these on each of your Translate or DetectLanguage actions. However, I felt creating them as options was a more elegant approach. So in Unified Service Desk settings I opened the “Options” option and create two new ones.
I’ve shown my options below. You’ll need to create “Azure_ClientId” and “Azure_ClientSecret”. And enter appropriate values.
Step Two – Create Translate action
Next we need an action that will actually do our translation.
Some things to note ….
Field | Details |
Name | CRM Global Manager – Translate (Email Description) |
Order | 10 This will be significant when we add this action into the toolbar! |
Hosted Control | CRM Global Manager |
Action | Translate |
Data | value=$Escaped([[email.description]$]) fromlanguage=[[$Context.TranslateFromLanguage]] tolanguage=[[$Context.TranslateToLanguage]] In particular, notice the approach I have taken to value, I found this method of using $Escaped coped with any formatting I added into the email. Including the formatting used on my email signature. You will also notice that I have used a couple of values from my context for the from and to languages. We will see how these get set in a second! |
Step Three – Create DetectLanguage action
The next action I needed was a DetectLanguage action. In my example I use this when converting an email from any “unknown” language into English. I am essentially automatically detecting the from language.
To be honest I have used this action just for demonstration purposes! As it is valid to omit from fromlanguage value from your Translate action.
Field | Details |
Name | CRM Global Manager – Detect Language |
Order | 1 This will be significant when we add this action into the toolbar! |
Hosted Control | CRM Global Manager |
Action | DetectLanguage |
Data | value=$Multiline([[email.description]v]) Notice that I have used different syntax for my value field. Again I have simply done this to show a variation on how to set the value to be examined / translated. Notice that I have no other parameters! I don’t need to set a clientID or clientSecret. |
Step Four – Create “RunXrmCommand” action
Next we have a RunXrmCommand! Why?
Well I use this command to take the translated test and update the body of the email. So I am injecting a single line of JavaScript into the email form to set a value.
Field | Details |
Name | Email – RunXrmCommand (Set Email Description) |
Order | 20 This will be significant when we add this action into the toolbar! |
Hosted Control | Email The name of the CRM Page hosted control that holds my email activity. |
Action | RunXrmCommand This action simply injects JavaScript into your CRM form at runtime. |
Data | Xrm.Page.getAttribute(“description”).setValue(“[[$Return.CRM Global Manager – Translate (Email Description)]$]”); This is a simple Xrm.Page command to set a value. But notice the $Return replacement parameter. This will be taking the results from our translate action and inserting them into the JavaScript. Pay attention to the “]$]” in my replacement parameter. I found the $ was needed and the translation didn’t correctly apply if missed! |
Step Five – Create “Copy To Context” actions
Next I created several actions to copy “from” AND “to” languages into my context. Essentially I always need two values in the context. One if “TranslateFromLanguage” and “TranslateToLanguage”.
Field | Details |
Name | CRM Global Manager – Copy To Context (From English)
And CRM Global Manager – Copy To Context (To French) CRM Global Manager – Copy To Context (To German) CRM Global Manager – Copy To Context (To English) |
Order | 5 This will be significant when we add this action into the toolbar! |
Hosted Control | CRM Global Manager |
Action | CopyToContext |
Data | TranslateFromLanguage=en And TranslateToLanguage=fr TranslateToLanguage=de TranslateToLanguage=en |
Next I created one final Copy To Context action, this one was for my detected from language.
Field | Details |
Name | CRM Global Manager – Copy To Context (Detected Language) |
Order | 5 This will be significant when we add this action into the toolbar! |
Hosted Control | CRM Global Manager |
Action | CopyToContext |
Data | TranslateFromLanguage=[[$Return.CRM Global Manager – Detect Language]] So this time I am copying the results in $Return from my DetectLanguage action. |
Step Six – Create a toolbar and add actions
Ok, so now we have all the building blocks for this solution. They come together on a toolbar.
I’d already got a navigation toolbar on my email tab, so I simply added my translate button. My button looked like this.
Field | Details |
Name | Email – Translate |
Image | I found in image in the Dynamics 365 SDK which I uploaded as the icon on my toolbar. You can find it if you search the SDK for ico_16_4216 |
Button Text | Blank, if you don’t use an image then you could simply set this text field to TRANSLATE |
Order | 5 In my example this simply made the button the last one. |
Tooltip | Optional! |
Enabled condition and visible condition | “[[email.description]]”!=”” This condition will hide the button until the email has been saved, as the email description will not be in the context until the email is saved. FYI: A refinement to my approach would be to get the contents of the email description using a RunXrmCommand. As then you could skip having to save the email. |
Next I used the toolbar buttons option available in the navigation.
My buttons were as follows;
Let’s look at the Email – Translate Other first. The button is simple enough, as shown below.
Now I created two more toolbar buttons. (Again, using the toolbar button in navigation.) One button was for translating into French and one for German.
They were almost identical, so let’s just look at the French one. As you can see below I simply gave the toolbar button a name and then added the actions we created earlier. For this button I added
- CRM Global Manager – Copy To Context (To French) …. Copies “fr” into the context as the to language.
- CRM Global Manager – Copy To Context (From English) …. Copies “en” into the context as the from language.
- CRM Global Manager – Translate (Email Description) …. Translates from “en” to “fr”.
- Email – RunXrmCommand (Set Email Description) …. Updates the email description with the translated text.
Obviously from German button was about the same except I used the “CRM Global Manager – Copy To Context (To German)” action instead.
Finally, I created my button to translate an email from any language into English. Again it was simple. I just gave it a button text of “To English” and added some actions.
- CRM Global Manager – Detect Language …. This runs my DetectLanguage action to work out the language.
- CRM Global Manager – Copy To Context (Detected Language) … now we copy the detected language to the context as my from language.
- CRM Global Manager – Copy To Context (To English) …. Copies “en” into the context as the to language.
- CRM Global Manager – Translate (Email Description) …. Translates from “detected language” to “en”.
- Email – RunXrmCommand (Set Email Description) …. Updates the email description with the translated text.
I hope this post has been useful, I think this is really cook feature. I look forward to hearing how people get on with this and keen to hear from someone who tries this with a paid Azure subscription. (Unlike me!)
J
Filed under: USD - Configuration Tagged: Dynamics 365, Unified Service Desk

USD integration with CRM 2016
Hello everyone,
I would like to ask if i can work with the latest version of USD that works with CRM 365 with Dynamics CRM 2016 ?
Thnaks for help.
CRM 2016 and USD 1.0 - Replacement parameters issue
Hi,
Recently upgraded from CRM 2013 to CRM 2016 and USD version is 1.0 .
Replacement parameters are not populated with the CRM form page data
Steps:
1. Open OOB Unified Service desk and connected to Vanilla CRM 2016
which has sample data
2. Started Contact session - and opened debugger tab - verified data paramters
which has contact tab with url string, it is not populated with CRM page data.
Contact hosted control is of type CRM page - so it should display data parameters when it opens in USD
If we upgrade USD 1.0 to USD 2.0 , we don't have issue with replacement parameters but
Open GI java application automation is not working crashing with fault module - windows access bridge 64 -dll.
PSA – Sales Cycle
This post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider the sales process.
A key aspect of PSA is the ability for an Account Manager to create an opportunity for a potential project and to prepare quotes. The quotes maybe be based one an estimate created with the support of a project manager. As quotes are confirmed, they will form the basis of a statement of work. A process that will ultimately lead to a won deal and a project contract.
The overall process flow is shown below.
All of the standard system entities such as opportunity, products, price list and quote are used in the sales cycle. Implementing Project Service does add enhancements to these entities to support dual tracking of project opportunities and “traditional” ones. Plus, additional entities such as project contact are included as part of PSA.
Two people / roles are typically connected with the sales process in PSA. Firstly, as you’d expect, the sales person / account manager who will create and progress the opportunity. But also, the Project Manager will be involved to help create / refine estimates.
The account manager starts the sales process by creating the opportunity. They optionally itemizing the components of the deal. Plus they will form the team of people who will work on the opportunity. This may involve adding details for the project manager or maybe a pre-sales consultant who will assist in the sales process.
Having created an opportunity, you can create multiple quotes. (As is standard with out of the box CRM.) Quotes are used to give an estimate to the customer. In PSA, they are also used to estimate the projects profitability and to compare the projected prices to customer expectations / budget.
When the quote / opportunity is confirmed (won), a project contract will be created. (Also, commonly known as a statement of work.) Project contracts have project contract lines that can be used to define the invoice schedule.
Opportunity
The opportunity entity defines the price lists to be used and may optionally also contain details of the product and project lines. I describe more detail about opportunities here.
Quotations
One or more quotations can be created for your opportunity. Initially the account manager will enter quote lines that reflect the customers budget.
Then he will work with the project manager to add an estimate to each quote line. The quote line estimates can be for time spend on the project, expenses or other fees. The estimate will in turn then be used to estimate the project’s profitability and compare the expected prices to the customer’s budget expectations.
Once a high-level estimate has been produced you can create a project that will be used to refine the initial high level estimate.
I describe more detail about created a high level estimate using quotations here.
I describe how we cerate a project and update the high-level estimates, here.
Project Contracts
Marking the quotation as won will create the project contract. You can think of the project contract as the order, in-fact PSA is making use of the Dynamics 365 order entity as the project contract. However, a project contract does differ from a standard order as all of the detailed information for the project estimate, price lists (etc) will be reflected within the contract.
Having created the project contract (sometimes described as a Statement of Work (SOW) in professional services companies), we can add additional information including project milestones and invoicing schedules.
Milestones can be used to drive the billing schedule. These can be manually entered dates or automatically created on a standard frequency. (Say monthly.) For fixed price work the billing schedule will include an amount. For time and materials we simply state the frequency we want invoices and up to what transaction cut-off date.
You can find more detail on project contracts here.
I hope this post has given you a good overview of the sales cycle and how we progress from opportunity to project contract. In later posts I will build on these concepts by looking at how to resource and then manage projects. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Opporunities
The post is one of a series I am creating connect with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider the opportunity entity.
When you create a project opportunity, the first thing to check is that you are looking at the correct form. As shown below you need to select the “PROJECT INFORMATION” form. This is a “special” form that exposes the additional features you’ll require when creating an opportunity for a project.
The following table describes the key fields on opportunity entity.
Field | Details |
Account Manager | The account manager field is set to the user who creates the opportunity, as it will typically be the account manager who creates and manages the opportunity in CRM. |
Contracting Unit | The contracting unit is the division of the company responsible for this opportunity. The entity in question here is called “Organizational Unit”. It defines the cost price lists that will be used to calculate the profitability of an opportunity. Read about cost price lists here. |
Currency | The currency of the opportunity that will have defaulted from the accounts currency. Any price lists associated with the opportunity must be of this currency. |
Product Price List | The price list to be used for “regular” items from the product catalog. The product price list can be defined on the account entity. The product price list on the opportunity will default to this if defined. Read about sales price lists here. |
Project Price Lists
In addition to the product price list other lists can be added for project pricing. These lists can be found by navigating to the Project Price Lists option.
As explained the product price list option is defaulted based on the price list associated with the account. Project pricing has a similar approach. On the account form you will find a project pricing tab. (As shown below.)
Opportunity Lines
Having created the opportunity and entered the details for appropriate price lists you can then add product and project lines to the opportunity. These will itemise the customers budget for the project tasks and the sales value for any products. Which collectively will give an estimated revenue to the opportunity. (If you set the calculated on the opportunity.)
When quotes are created for the opportunity the line items will get transferred to the quote. However the use of project line is optional. If you opt not to enter any opportunity lines then the quote will initially contain no line items but you can opt to add them manually as required.
Project Based Lines
Under project based lines you can record the potential project costs and enter the customers budget. Plus, define the billing method. (Options being “Time and Materials” or “Fixed Price”.)
Product Based Lines
Under product based lines we list any products that will be purchased along with the project. If we were defining a project to implement CRM, then typical product based lines would include CRM licenses.
There are two types of product based lines, write-in products and existing products.
Write-in products are simply free text entries that do not require the product to exist in the product catalog. These are useful for one-off purchases that you want to record without having the overhead of creating products and adding them to price lists.
Products you regularly sell would exist in the product catalog and would be part of the price list associated with the opportunity. The Existing Product option allows you to add these to the opportunity.
Below you will notice that I have added a product based line to my opportunity. Also, notice that this product has an edit option under properties. Properties are a standard feature of the product catalog. PSA however extends this functionality to give us product quantity properties. These are useful for products like licenses, when the quantity field is actually a combination of the length of the agreement and the number of licenses purchased. I describe how to configure these product quantity factors here.
Note, it is possible to record a customer budget on the product based lines. (As we did on the project lines.) But with products it is the sales amount that is used by the system to calculate to total estimated revenue.
Creating and progressing opportunities is a key step in the sales cycle for Project Service, hopefully this post has given a good overview. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Quotes (High Level Estimates)
The post is one of a series I am creating connect with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider quotations and how they are used when creating your initial high level estimate.
After creating an opportunity, the next stage in the sales cycle is to create one or more quotes from the opportunity. Much of the functionality used by PSA is leveraging the standard quote capabilities in Dynamics 365. If you haven’t used quotes before you can reda about them here.
When you create a quote for the opportunity details from the opportunity and the opportunity lines will be carried forward to the quotation. (Entering opportunity lines is optional, if you haven’t entered the project and product lines on the opportunity then you can add them manually into the quote.)
In addition to the standard quote functionality PSA adds in some additional information including an estimate on profitability. This is a very flexible and comprehensive part of PSA, meaning the quotation ion Project Service Automation contains some significant extensions to the standard CRM quote entity.
Quote Lines – Product Based
My quote shows any products that I entered on the opportunity, plus more can be entered. You may notice that cost amounts are shown that wasn’t shown in the opportunity! This cost price will have come from the standard cost as defined in the product catalog. You edit the cost price and sales value on this quote if required.
Quote Lines – Project Based
On my quotation opportunity lines, will have been carried forward. As shown below.
What we need to now do is to start to build our project estimate to finalise the quotation and confirm profitability.
When we open up each quote line a detailed screen similar to the one below is shown. Here I can start to build the estimate. Initially I decide what will be included from time, expense and fees. I then will continue to add quote line details.
Tip:
At this point I am describing the process of adding a high-level estimate to the quote lines. You will notice that the project field is blank. Alter we can create a project and use information from that to replace these high-level estimates.
Quote Line Details
In the quote details section, we can add a high-level estimate that builds up this line in the quotation. In this example I have simply created three details lines for the implementation costs. These being design, build and test. Each detail line is associated with a role. This role is used to select the correct cost and sales prices from the price lists we earlier associated with the opportunity. An example of the quote line details screen is shown below.
A few things to notice;
- The transaction class defines the type of “Time”. Below I am showing time as this line is for the time my architect will spend on the project. But other options of Expense and Fees are possible.
- The Category column is typically used when the transaction class is Expense, as here we can record the type of expense. Such as airfare, hotel cost etc.
- The quote lines are expressed in terms of the sales value, but you can also use the open cost detail option to be able to edit associated costs.
Quote Line – Chargeability View
When you are compiling the quote, line details a useful screen is the chargeability view, as this shows a matrix of sales and cost prices for the roles which you may wish to include in the quotation. The chargeability view can be found in the navigation area of the quote line.
Below you can see an example of the chargeability view. This is really useful as you can quickly see the sales prices, cost prices and margins for all resource types without need to jump around multiple price lists.
Tip:
Notice that the units for my costs are all “Hour”. When I first created my cost prices I had them in days but my sales prices were in hours. You shouldn’t do that! Standardise on one base unit and ensure that is used. As this view assumes the same units for costs and sales.
In my example the cost price and sales price are both in the same currency. It is possible for your sales to be in a different currency. If you do this the Sales Price in Cost Currency is used so that you can still compare the sales and costs in the same currency.
Also notice the chargeable column, currently all of my roles are selected as they will all get billed to the customer. Unticking this will leave that role in the project in terms of cost but will show as a non-chargeble item. You may, for example, have a pre-sales consultant that is never charged but wish to count their costs when considering the profitability of a deal.
Another really useful feature of the changeability view the ability to edit sales prices for this individual quotation. When you view look at this view you will have a “Edit Sales Prices” option. As shown below. Clicking this will create a price list that is unique to this quotation.
Having clicked the edit price list button my price list changes to a new one that is unqiue to this quotation. And at that point the sales price field becomes editable. Also notice that there is a standard price column that will show the orginal price.
One neat feature of this editing is if the sales price drops below the cost price then the unprofitable line will turn red. (As shown below.)
Quote / Estimate Analysis
Having entered the estimate on my quotation I can review the profitability tab on the quotation. It will show me total chargeable costs, any non-chargeable costs, plus revenue details and margin. In addition I get a couple of useful charts to show the phasing of the revenue and costs.
Note:
Gross margin only included chargeable costs in the calculation. But adjusted gross margin will also take non-chargeable costs into account.
There is also a tab which compares the customers’ expectations to the estimate. This is in terms of completion date and budget. The estimate completion date will be based on the latest end date from the quotation detail lines.
Tip:
Some of the fields in this analysis are CRM roll up fields. Meaning they may not reflect the latest data, if in doubt manually refresh them!
Quote Line – Expenses
As we saw when creating the quote line, it is possible to set the option “Include Expenses” as yes. This is used when we need to define how expenses are to be handled. Project time is billed on a basis of roles, whilst expenses are by expense category. You may, for example, want to show on the quotation details of expenses such as hotels or airfares. Below you can that I have created a quote line for airfares, with a customer budget of £5.000.
I have that added a quote detail line as part of the estimate. In my project estimate I have include three trips to India! With the estimated sales amount of £3,000. Notice how the quotation line is by category rather than role.
As with project time items I can use the chargeability view to see (and edit) the expected sales prices and calculation method.
We have three methods available for the billing of expense categories;
- Per price unit, a fixed fee each time the expense happens.
- At cost, the customer will be billed for the cost of the expenses.
- Mark-up percentage, the customer will be billed a percentage mark-up on the cost of the expenses.
Also, notice below that we can opt for some project expense categories to not be billed to the customer.
Having created your quotation with a high level estimate you should now have a rough feel for the viability of the project. The next stage will be to create a project plan and start to add detail. I will cover those concepts in another post. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Quotations (Estimate from a Project)
The post is part of a series I’m creating connect with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider how we create a project related to a quotation line to start to build a detailed estimate.
In previous posts, I have explained how to create an opportunity, raise a quotation and add a high-level estimate to the quote lines. Within the quote the quote line detail will typically then be showing an estimated total number of hours by project role. This is commonly how an initial indicative quotation is presented to a customer. But if the customer wished to proceed then a more detailed / scientific estimate will be required that is supported by a draft project plan.
Assuming you have already created an opportunity, and also created an associated quotation with a high level-estimate …. We are now ready to create the project to be able to start to create a more detailed breakdown of the work and timeline.
Below you can see that I have open my quotation line for my CRM implementation project. Notice that the “Include Time” field is set to yes. This implies that effort based activity relates to this quote line.
I want to create a project that will express the detail of the activities, I can do this directly from the quotation line by selecting the New project option. (as shown below.)
Below you can see that I have given my project a name and selected the project template. (I will cover project templates in a future post),
I can now click on my project to open it.
I will describe project in greater detail in a future post but for now let’s look at some key elements …. Below you can see the main information page for my project. Notice that the details from my quotation will have carried forward to my project. Also notice that in the sales section we can see the quotation that this project relates to.
Using the navigation bar I can open the project work breakdown structure. As I created this project from a template this has been pre-populated for me. Notice that I could edit the details as required. Including the type of resources on the tasks, length of tasks etc.
Another useful view at this point will be the project estimates view, again I can access this from the navigation bar. Here I can see the estimate in terms of effort, cost and sales value. Plus I can view the project by day, week, month or even year.
Having edited my project detail I will want to revise the estimate on the quotation to reflect my more detailed estimate from the project. For this I use the “IMPORT FROM PROJECT ESTIMATE” option, highlighted below.
I wil now to given a dialog to help me decide how to import the details.
I could show the estimate summarized on the quotation by transaction type. (As inn expenses, time or fees.)
Or I could summarise the detaisl by role or expense category.
Or I can summarise by the work break down structure on the project. Leaf node would be indidual tasks, or I can summerize at a summary level.
In my example I opted to use the level 2 summary. Which with my project plan gave me a very detailed estimate.
Tip:
You can experiment with this a little, it is possible to select the “Import From Project Estimate” option multiple times. So you could experiment with different options to see which combination fits best in your circumstance.
It will now be possible to return to the quotation to review the project profitability. If you do this don’t forget to manually refresh the roll up fields on the quotation!
Creating the project for a quotation will often be an important step in the Project Service sales cycle. It will often be the point that the opportunity starts to look possible. Also, PSA should really help show when the deal isn’t workable. And maybe you can decide to walk away before investing large amounts of time! J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Quantity Factors
Project Service Automation (PSA) for Microsoft Dynamics 365 includes an extension to the product catalog that allows us to define what product properties might affect the total amount. In this post I’ll describe when this might be used and how to configure quantity factors.
Imagine you’re selling software licenses, the unit price might be £115 per user per month. On the opportunity or quotation, you will want to enter the length of the expected agreement and the number of users. So 100 users for 12 months would give me a quantity of 1200 and therefore a sales value of £138,000. You can see below that I have entered exactly this on a product line on my opportunity.
Notice that next to properties I have an edit button, clicking this will allow me to enter the number of users and number of months required.
The concept of properties on a product is a standard feature of the Dynamics 365 product catalog. Properties are defined at the product family level and become available on any product within that family. If you haven’t used product properties before you can find a description of how they operate here.
Below you can see the product that I’d added to my example opportunity. First of all, notice that I have two properties on this product. These have been inherited from its product family. In my example the properties are months and users. Also notice that these have been given a default value. As the default in my example is 3 months and 10 users, when the product is added to an opportunity the quantity would initially begin at 30.
Underneath the product properties you will see the tab heading quantity factors. Its here that we define which of the properties to consider when calculating the opportunity quantity. (or product on quantity on a quote or contract line.)
When we add a quantity factor it’s given a name and we also pick the appropriate product property. Below you can see that the “Months” quantity factor relates to the “No of Months” property.
Note:
the computer transaction field only has one option of quantity, so you do not need to set this. (Who knows, maybe in a future release additional options will be added!)
One tip here is to always ensure your product and product family have been published after making any changes. The quickest way to publish the products is from the family. As then you can use the “Publish Hierarchy” option. (When you are adding products to an opportunity you can only add published products that exist as price list items for the product price list associated with the opportunity!)
Quantity factors might not be required in many situations but I hope you can see that in some sales situations they are a useful feature. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Create Project Contract
The post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider how we create a project contract from a quotation.
We have already seen how to create an opportunity then create a quotation with a high-level estimate. And how to create a project associated with the quotation to turn our high-level estimate into a detailed estimate.
The final piece in this process will be when the customer finally confirms that the project should start, it is now that we will create a project contract. (As a result of “winning” the quotation.)
It might be worth first knowing that a Project Contract is actually an order in Dynamics 365. Out of the box “standard CRM functionality” includes an order entity which is created when a quote is marked as won. Project Service Automation makes use of the order entity but also adds a number of extensions, including project contract line details, milestones and invoice schedules.
Below you can see that I have opened my completed quotation and will now create a contract by selecting the “CLOSE AS WON” option.
After a pause, the project contract (or order) will be created and loaded. Notice that at this point it is in a draft status. Meaning we can review and amend the information prior to using the CONFIRM option which will effectively activate the contract.
Hopefully you will notice that the details of your quotation will have been used to derive the contract. Meaning we will have contract lines that correspond to the lines that were previously on our quotation. (This will apply to project based lines and product based lines.)
By opening one of the project contract lines we can see that the project contract line detail mirrors what we previously created on the quotation.
And form the project contract line detail we can access a chargability view that is very similar to the quotation. And at this point we can also still amend prices. However, after the contract is confirmed the prices will be locked.
Before we confirm our contract, we will want to define project milestones, invoice schedule and billing start date.
Creating Invoice Schedules – Time and Material
On a time and materials contract line we will typically define a billing schedule.
Firstly, we define the invoice frequency and say when the billing should start. In my example I have opted for billing at the end of the month. And the billing start date to commence from the projected start date of my project. (1st Feb)
On the contract line, you will see an invoice schedule tab, initially this will be blank. Here you can create milestones when the billing will happen. These could be entered manually or these can be generated automatically based on the required billing frequency.
Tip: Initially PSA has two default billing frequencies, end of month and bi-monthly. But you can create others as required.
Having entered my billing frequency and billing start date, the CREATE INVOICE SCHEDULE option automatically created the details below. (FYI: Another field of project end date came into play, you will find that on the order header page!)
Notice the cut-off date, as when the invoice is created we will be counting all transactions from the last invoice to this date.
Creating Invoice Schedules – Fixed Price
The billing of fixed price items has a similar concept but is slightly different. Here we use the GENERATE PERIDIC MILESTONE option to dictate when billing should occur.
Aa with the time and materials line, I defined an invoice frequency and billing start date on the contract line.
Notice that the resulting invoice schedule for a fixed price job generated the same billing points but this time it added a value. So, that the total fixed amount is invoiced by the end of the project.
Tip: If you enter the milestones manually you will need to ensure the total sum of the milestones equals the total value of the contract line.
Confirming the Contract
Having “played” with the contract pricing and defined the billing schedule / milestones we are ready to confirm the contract. To do this simply open the order / project contract and select the CONFIRM button.
Notice that after the project contract is confirmed all of the key details become read-only and the contract status changes from Draft to Confirmed.
Creating / confirming the project contract effectively ends the sales cycle in Project Service. Meaning we can next look at how to resource our project and get started! J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Sales Price Lists
The post is one of a series I am creating connect with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will consider sales prices.
Sales Price Lists
A sales price list is used to hold the prices that will be charged to customers for all project related activity plus any “regular” products purchased. For example, in a CRM implementation you may have project costs for a CRM developer but you may also have product costs for things like CRM licenses.
Before we start adding prices for specific roles we first need to define several fields. These are itemised below.
Field | Description |
Name | A mandatory field that is simply a text field to describe the purpose of this price list. |
Context | The context for a sales price list MUST be set to “Sales”. Other options include Cost and Purchase. |
Start Date | An optional date that defines when these prices become effective. |
End Date | An optional date that defined when these prices will expire. |
Currency | A mandatory field that cannot be changed after the price list is created. |
Time Unit | Once set the time unit cannot be changed. It will default to hours but you can see in my example that I have changed it to days. This field selects the possible units from the “Time” unit group. You’ll find some more detail on unit groups later in this post. |
Description | An optional text field that can be used to describe the purpose of this price list. |
Role Prices
Once you have created the price list you can add role prices. The concept of a role price is to define the price of a type of resource per organizational unit. (Or resourcing unit.)
In my example above I have shown that a developer in the UK will cost the customer £130 per hour. But if an off-shore resource is used from India then they will cost £80 per hour.
Below you can see the quick create form that is used when adding role prices to an organisational unit. Notice that the units cannot be changed. As all of the prices need to be expressed in terms of the units defined on the cost price list. In my case “hours”. Also, the currency for all of the role prices will match the currency defined on the price list.
Price List Items
In addition to role prices a sales price list can contain prices for other items from the product catalog. This is achieved by using standard CRM pricing functionality as found in the Price List Items option.
Below you can see that I have added price list items for some CRM licenses. (Not real prices!)
Unit Groups
In my example the price list I used worked in hours. The possible time units can be configured in the unit groups option. In settings navigate to the Unit Groups option, which you will find in the Product Catalog area.
In unit groups, you will find a unit group called “Time”. Mine is shown below. The units option lets you define the units of time that you wish to operate in.
Notice that the base unit is hours. Then a day is defined as 8 hours. You could change this or add additional units. For example, you could add a unit of “Week”, which could be defined as 5 days or maybe 40 hours etc.
Obviously calculating the sales price of a project is an important task. I hope I have shown that pricing options in PSA are flexible enough to cope with most situations.
J
Filed under: Project Service Automation (PSA) Tagged: Microsoft Dynamics 365, Project Service Automation

PSA – Cost Price Lists
This blog post is one of a series I have created which covers all aspects of Project Service Automation (PSA) which is part of Microsoft’s Dynamics 365. In this post, I will describe cost price list and organisational units.
Organisational Units
An organisational unit is a division of the company. It has multiple purposes in PSA, one of which is to link to the cost price lists that will be used on an opportunity.
You can access the organisational units entity from the Project Service area of CRM. As shown below.
Below you can see that I have created an Organisational unit for the UK division of my demo company. Notice that the currency is pound sterling and is readonly. The currency must be defined when you create the unit and cannot be changed. This is significant as any price lists you associate with the organizational unit must also be in the same currency. Notice that I have added the cost prices for UK resources to this unit. Meaning that whenever we start an opportunity for this division CRM will know what cost prices to apply when calculating the profitability of a potential project.
Cost Price Lists
Cost price lists define the costs of resources based on their role and their organizational unit. For example, in the UK a developer may cost £500 per day. But if an off shore developer from the Indian division of the company is used the cost price might be £200 per day. Let’s look at creating a cost price list, my 2017 price list is shown below.
Before we start adding prices (costs) for specific roles we first need to define several fields. These are itemised below.
Field | Description |
Name | A mandatory field that is simply a text field to describe the purpose of this price list. |
Context | The context for a cost price list MUST be set to “Cost”. Other options include Sales and Purchase. |
Start Date | An optional date that defines when these costs become effective. |
End Date | An optional date that defined when these costs will expire. |
Currency | A mandatory field that cannot be changed after the price list is created. The currency used here must match the organizational unit that this cost price list will be associated with. |
Time Unit | Once set the time unit cannot be changed. It will default to hours but you can see in my example that I have changed it to days. This field selects the possible units from the “Time” unit group. You’ll find some more detail on unit groups later in this post. |
Description | An optional text field that can be used to describe the purpose of this price list. |
Role Prices
Once you have created the cost price list you can add role prices. The concept of a role price is to define the cost of a type of resource per organizational unit. (Or resourcing unit.)
In my example above I have shown that a developer in the UK will cost £550 but using a developer from India will cost £200 per day.
Below you can see the quick create form that is used when adding role prices to an organisational unit. Notice that the units cannot be changed. As all of the prices need to be expressed in terms of the units defined on the cost price list. In my case “days”. Also, the currency for all of the role prices will match the currency defined on the price list.
Unit Groups
In my example the price list I used worked in days. The possible time units can be configured in the unit groups option. In settings navigate to the Unit Groups option, which you will find in the Product Catalog area.
In unit groups, you will find a unit group called “Time”. Mine is shown below. The units option lets you define the units of time that you wish to operate in.
Notice that the base unit is hours. Then a day is defined as 8 hours. You could change this or add additional units. For example, you could add a unit of “Week”, which could be defined as 5 days or maybe 40 hours etc.
Having cost prices defined is an important part of the sales process within PSA, as without these you can never predict the profitability of your projects. Hopefully this post has explained the key concepts involved. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – An Overview
As I learn about PSA, I plan to create a series of posts covering all aspects of Microsoft’s Project Service Automation application (PSA) for Microsoft Dynamics 365. PSA is a powerful addition to Dynamics 365 that enables project management capabilities in Dynamics 365.
I guess the first pertinent question might be, why do I need PSA? After all, we already have Microsoft Project which is an advanced project management tool! Microsoft Project is a great tool for project managers and in some circumstances, might be the only tool you need, PSA won’t be for everyone! But you will find that PSA has a slightly different focus, it is not “just” about project management. PSA is more focused on the engagement with the customer. By this I mean it covers the full life cycle of the project right from initial estimate to completion.
PSA can be used in many business types but you may find that is of particular relevance for professional services companies. For example, IT Consulting companies that might be selling a mixture of professional services and product licenses or hardware.
In the professional services scenario, you’ll often find that services will be charged either as a fixed price or on a time and materials basis. (Or even a mixture.) These types of engagements are commonly long running and will require a mixture of resources. Resources will typically have differing sales and cost prices depending on parameters like skills, experience, geographical location and employment basis. (For example, companies often make use of freelance development staff who may warrant a higher cost. Or maybe some tasks are completed by offshore resources which could be much cheaper.) As I expand on the capabilities of PSA, I hope you’ll appreciate that these types of challenges are ones specifically addressed by PSA.
Some key features include;
PSA Features / Capabilities | |
Sales / Opportunity Management | PSA offers extensions to opportunities and quotes to support the management of project based engagements. Including definition of project contracts, track labour rate and generation of a Statement of Work. (SOW) |
Project Planning | From very early in the engagement project managers and sales account management can work together to define and refine estimates. Gaining visibility of costs, effort and sales values for your opportunities. |
Resource Management | Assign / manage optimal resources based on skills and availability. Resources have the ability to search for and apply directly for open project roles. |
Team Collaboration | Office Groups can be used to allow customers and project teams to communicate. |
Time and Expenses | Estimated, actual and billed time for resources is tracked, Ability to enter time and expense details via web, office and mobile apps. |
Customer Billing | Project managers can review, override and track overruns. And they can approve all costs impacting the project. Supports generation, approval and distribution of accurate invoices to customers. |
Analysis and Integration | Interactive dashboards provide insights into resource utilization etc. The powerful reporting capabilities of Dynamics 365 can be leveraged to report on profitability, revenues, expenditure etc. |
PSA Roles
Practice managers, Account Managers, Project Managers, Resource Managers and team members all collaborate on projects. Let’s consider the main functions of their roles;
Practice Manager
– has overall responsibilities for the practice and would use analysis tools to review profitability to the organisation as a whole or by resourcing unit..
Account Manager
– monitors their pipeline of sales, creates opportunities and works with the project manager to estimate a project.
Project Manager
– Project manager will work with the account manager on the original estimate, then will create a detail plan once the work is won. They will then work with the resource managers to resource the project. Project managers will also be responsible for approving time and expenses as the project progresses.
Resource Manager
– Resource managers review resource requests submitted by project managers. They then “staff” projects by looking at resource role type, availability and skills.
Team Member
– team members can apply for roles on projects, they can also enter timesheets and record any expenses.
PSA Price Lists
Price lists can be used to define bespoke pricing structures for each customer based upon the roles and organizational division of resources. For example, a developer based in the UK may have a different day rate to one off shore in India. A similar pricing structure can be applied to cost prices, meaning that together this information can be used to show the profit on projects.
Also standard product pricing can be applied to include additional items in quotations. Such as software license fees or any materials required during the project.
Sales Cycle
A project manager will probably be the person that creates an initial quotation and ensures the correct price lists have been selected. Then a quotation is produced that initially contains details of the customer’s high level budget expectation for the project plus any products they require. At this point the account manager and project manager will work together to add a high-estimate into the quotation. Including an estimate on how many hours or days are required of particular resource roles. This information can then be used to present a profit estimate on the project and report is the proposed approach will meet customer expectations.
Following on from the high-level estimate the Project Manager can then create a project and start to build a detailed estimate.
Project Contract
Once a quotation is marked as won a project contract is created. This is effectively the order for the engagement. (In-fact PSA uses the Dynamics 365 order entity for Project Contracts, with some significant extensions.)
Those extensions include the ability to define billing mile stones and an associated invoicing schedule.
Project contracts start off in a draft state but once you have entered details of the billing schedule the contract can be confirmed. Once confirmed prices on the contract become fixed and cannot be changed.
Invoices / Billing
Invoices are linked to the project contract. PSA contains functionality to generate a few invoices as possible, by this I mean that if you billed expenses and time monthly it will automatically recognise this and put both lines onto one invoice.
A project manager can monitor the invoices for time and expenses to track and manage overruns.
Resource Management
After creating the project and its initial estimate a project team will be created to deliver the tasks defined on the project. This can be done manually or automatically using the generate team option.
Project managers can directly hard book resources. Or submit requests for resources to a Resource Manager who would control a pool of resources.
Additionally resources can request to join projects by searching for projects with vacancies.
Time and Expenses
As the projects progress PSA users / resources can enter their timesheet details and expenses to automatically update the actual effort on projesct.
I hope you agree that Project Service is a powerful tool for managing projects, I am going to enjoy exploring its features in depth. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

!inherited roles cannot be modified
Hello - I want to add a permission for a role through the CRM Admin page.
I noticed an information bar at the top of the page that says "!Inherited roles cannot be updated or modified."
So to update the role permissions I'll need to go to the parent level so the role permissions propogate to the child.
What "parent" does the reference to "inherited roles" refer to? How can I identify the parent through the UI?
Phonetic search
How can I enable PHONETIC SEARCH in Dynamics CRM 2015 on-premise? By phonetic search I mean that the search results will contain also similarly sounding words e.g. Meier, Mayer...
I've seen some old posts about this topic but I am wandering what is the current solution that is easiest to implement.
Thank you.
PSA – Project Teams
The post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will review project teams.
In previous posts, I have talked about how to resource project teams and how this can be achieved in a centralised situation.
In this post I want to quickly describe some of the concepts behind the project teams.
Resource Type
The resources within a type have a resource type. This can be generic, contact, user, equipment, account or group.
We have seen that generic resources are initially used when creating a team, think of these as a placeholder which creates a resource requirement. A requirement that is later filled by the project manager hard booking a resource or sometimes by a Resource Manager proposing one or more resources.
Contacts and accounts are often used. Maybe these reflect the tasks to be completed by sub-contractors on your project.
Users will be commonly used for resources. CRM users are typically used as these can later record details in their time sheets and submit expenses. Meaning they can fully engage on the project.
It is possible to also define a piece of equipment as a resource. Maybe you have some expensive machinery that needs to be booked out on projects in a controlled manner.
Role
Role is the role the resource will play on this project. Each resource cannot “play” more than one role on a project. A resource however can be assigned multiple roles as they can play different roles on different projects.
For example, Bob is a developer on my project. But if we look at Bob’s resource record we can see that he is also classed as a functional consultant. Meaning he can act as a developer or a consultant. Just not both at the same time. We all have many hats but can only wear one at once!
From and To Date
The from and to dates on the project team simply tell us when this resource is available to the project.
Required Hours
Required hours is populated on generic resources, this is the number of hours required for a particular role on the project.
Booked Hours
Booked hours becomes populated when a resource has been hard booked to the project. These are the hours committed to the project.
So far, we have looked at how to build a project team manually and the find appropriate resources. In my next post we’ll look at how to automatically generate the project team. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Generate a Project Team
The post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will review how to generate a project teams.
The concept here is to create a team based on the activities and roles defined in the project plan. PSA will review the plan and suggest the minimum number of resources required to complete the plan. I personally think this is a really useful approach to generating a team, as when this task is done manually it is very common to underestimate the number of resources required.
Below you can see that my project team is initially blank. This is actually a project that I manually resourced previously! When I did that I thought I needed one architect, one developer and one functional consultant.
As a test I have removed those resources and decided to generate the team automatically.
My project plan looks like this, you can see I have aa number of tasks that are dependent on each other. Also, notice that each take has been assigned a role, so the system knows the type of resource required for each task.
Now when I manually estimated this project I probably didn’t take the customers aggressive timescale expectations into account. As we often don’t! You can see in my plan that I have identified two sprints but to meet the deadline they overlap.
When I click the GENERATE PROJECT TEAM button a dialog warns me that any existing generic resources will be removed. I haven’t got any so that is fine!
After a very short pause the dialog below tells me how many resources of each roll type I require. Notice that as I suspected the overlapping nature of this project means I need more resources than expected. I guess we have a decision at this point, find the additional resources and deliver to customer expectation or start a conversation with our customer.
Below you can see that my project plan now contains the required resources.
And below you can see that the generic resources required have been added into my project team. I can now try to hard book resources or submit requests to identify available people.
Also, notice the assigned hours column has been populated on these resources. This is because they are associated with tasks in the work breakdown structure. What is nice about this is as I book resources the tasks that were automatically assigned to the generic resources will be allocated to the people that make up my team.
Now as a test, I “hard booked” my architect. Then I went back and reviewed my plans and realised that some test tasks had been assigned to my functional consultant. As I hadn’t hard booked any resources I simply changed the role on those tasks and clicked GENERATE PROJECT TEAM again. This time it didn’t tell me I needed an architect. As I’d already secured that resource. But the effort for the functional consultants was reduced and a tester added. If I’d done this task manually I would have been tempted to swap out one of my functional consultants for a tester who was potentially cheaper. But following this process told me that whilst the functional consultants will have less work two are still required.
This approach to building a team automatically is one of my favourite features of Project Service. Why? Well I have worked on so many projects that have been under resourced that any which brings some science to this situation is something I welcome.
I’m looking forward to my next project now.
J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Resource Management
The post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will review resource management on projects.
Obviously, Project Service Automation contains some powerful and flexible features for resource management. Meaning we have a lot to cover! I will therefore break this post down into the following sections.
- Adding Generic Resources
- Find a Team Member to Hard Book
- Booking a Team Member
- Maintaining Bookings
Then in this post I will expand on these capabilities and describe how Resource Management might be tackled in a centralised resource management scenario.
In previous posts, we have already covered the sales cycle and ultimately how a project is created. On our project we already have some information that is significant as we start to schedule recourses. That being the calendar template to be used, the estimated start date and the estimated completion date.
The calendar template is used to define standard working days / hours for the project.
On the project there is a significant tab which will who the team members for this project. This is the group of people that collectively will “get the job done”. Initially, by default, the team will simply include the project manager.
Adding Generic Resources
To add a team member I click on the “+” icon and select the role I want this team member to fulfil on my project.
Tip:
Notice that the allocation method I have used is full capacity, as I am looking fore someone who can be full time on my project. Other options include “Percentage Capacity”, when I could state that I need someone 50% of the time. Other options allow for allocation by hours. Which can be distributed evenly or front loaded.
See below that this has added what is called a generic resource into the team. I have essentially stated that I need a functional consultant from 1st Feb for 240 hours. And linked to that functional consultant role will be a number of skills that are required.
I guess we could think of this generic resource as a place holder creating a slot that will be filled by a real resource when I find the right person.
At this point, I can click on the “Resource Requirement” link and specify any additional specific requirements that are needed for this engagement. See below that I can add additional roles, preferred resources, organizational units and skills. As an example I have added an additional skill of being familiar with the Agile Methodology.
On the resource requirement, I can also specify pricing information. The cost price we can afford.
Find a Team Member to Hard Book
The process known as hard booking is how we decide who to actually allocate to the team. Based on the resource requirement defined on the generic resource we will search for possible candidates. To do this open the generic resource record added to the project and select the HARD BOOK option.
Selecting HARD BOOK puts me into the availability view. This is a pretty flexible screen so you might want to experiment a little with the options available.
On the left hand side I have many filters that I can apply. For example I might want to only look for resources in a particular organizational unit. In my example I have gone for UK.
The SORT option lets me rank resource in terms of their name, skill or availability. Commonly we might want to sort by availability so that the people wit the most time for the project are listed first/
The VIEW open lets me change from an availability view or a candidate card view. The card view will show a graphical representation of all the resources skills.
OPTIONS lets me control how the date is viewed. For example, I opted to view the % of time booked for a resource rather than the total hours.
When we select a possible resource additional information is displayed. Notice we can see cost information, availability percentages and also skills with proficiency levels. Note the black like on Agile methodology. The black line significes that I need someone with that level of Agile experience. The green bar shows me that this resource exceeds my requirement for Agile methodology.
Another neat feature is the ability to compare resources. My search showed me that I have two resources available that could meet my requirements. By selecting both of them a compare resources option becomes available.
I can now see the detailed information for both people side by side. In this example I can clearly see that one resource has a higher skill level than the other. This information might help me decide which is the right person for this job.
Booking a Team Member
Having found the ideal person for my project I simply select the resource and then use the BOOK option to add them to the project.
We can now see on the project team that this resource has replaced the generic resource.
Maintain Bookings
Having created the project team, you may need to maintain the booking, maybe a resource is no longer available. Below you can see that we have the MAINTAIN BOOKINGS option on the team view within the project.
Below you can see the maintain booking screen. Notice that I have selected the project one of my resources is assigned. It might be that “Bob” is no longer available, in that situation I can then use the FIND SUBSTITUE button to find and assign an alternative resource.
Another aspect of this view which is useful is the “Total Hard Booked Hours” column at the top of the screen. As this is a quick way to observe the total hours allocated on the project.
Additionally, you can also simply edit the hours someone is available to the project by day, week or month. If however you overbook someone by manually entering hours then the blue bars may turn red to signify this.
Hopefully I have given a good overview of resource management, in real world situations managing resources can be a complex and important task. PSA provides some comprehensive features to assist. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

PSA – Centralised Resource Management
The post is part of a series I’m creating connected with Project Service Automation (PSA) for Microsoft Dynamics 365. This time I will review centralised resource management on projects.
In many organisations, the Project Manager will not be empowered to hard book resources themselves. In these scenarios, the Project Manager would make a resource request and then a centralised resource function would find and book the team members.
Below you can see that I have added a generic resource of developer to my project. I then select the resource and use the SUBMIT REQUEST button.
When I submit the request, I can optionally add a comment to my request.
After the Project Manager has submitted the resource request the resource manager can see and maintain these in the Resource Requests option of Project Service.
The typical life cycle of a booking request is that it is “Submitted” by the Project Manager. The Resource Manager will review and will suggest a resource, so the status of the request moves to “Proposed”. The Project Manager will then accept or reject the proposed booking. Once accepted the booking request is then fulfilled.
When the resource proposes a resource they may pick one person for the entire request but they can also split the request and propose multiple resources.
On occasional the Resource Manager may propose a resource with less capacity than requested by the Project Manager. If the project manager accepts a request like this then the balance of outstanding time is added as a generic resource.
When the Resource Manager options the booking request they can use the FIND RESOURCES option to try to fulfil this request.
Below you can see that the screen they will use to book this resources is very similar to the one used by the Project Manager when hard booking. It is possible that the Resource Manager will simply select the BOOK option to immediately hard book the resource. But in the centralised situation it will be more typical that they will use the PROPOSE BOOKING option.
In my example below notice that the project manager has requested one developer from Jan to March. The Resource Manager has actually selected two developers. One for Jan and one for Feb. They haven’t identified who will complete the work in March.
When the Resource Manager proposes these resources they will be prompted to enter an optional comment. Because it is an under booking.
Back on the resource request against the project the Project Manager can see the comment entered by the Resource Manager. They then have the ability to accept to reject this proposal.
And on the resource request they can see the suggest resources and the amount of resource that has been proposed.
Assuming the Project Manager accepts this proposal, two developers would be added to the project. Plus, a third generic developer resource for the unassigned time will be created. You can see this on my team view below.
The capabilities of PSA to handle a centralised resource situation should help make it a useful tool in the largest of organisations. Also features supporting splitting resource requests and under allocation will hopefully make it a flexible and therefore useful application. J
Filed under: Project Service Automation (PSA) Tagged: Dynamics 365, Project Service Automation

Good tutorials for understanding field service
We have one requirement where our client wants to track his technicians in the field using a tool and I believe Field Service could be appropriate option for him under current scenario. So I request the developers who have worked in this module please suggest some good getting started tutorials for this module.
Any help, suggestions would be highly appreciated.