Search This Blog

Monday, 5 November 2018

Adding Icons for the Unified Interface

With the introduction of the Unified Interface in Dynamics 365, the way in which we customise areas of Customer Engagement are subject to change and one of these is updating icons for entities. It's always good admin to add an icon for any custom entity to enhance the user's experience. The Unified Interface uses Scalable Vector Graphics (SVG) so there is no longer the need to create web resources for different sized icons and as you can see from the below, they're pretty easy on the eye.



Instructions

First things first, you'll need to save the icon you want to use as an SVG. In general, I always use Metro Studio (https://www.syncfusion.com/downloads/metrostudio) to get my icons. When I've found the icon I need, best practice is to format it 32px for both dimensions and 0px Padding. Once you've done that, you need to export it.


 






















Click Export and change the Save as type to SVG.


















Now you have your icon, navigate back into Dynamics 365 and open up your entity within your solution. Click Update Icons as you would to update an icon in the old interface.

The first thing you'll notice is a new Unified Interface tab. Open this tab and then add your new icon as a web resource.
 Ensure your web resource is specified as an SVG, and remember to Save and Publish!






 














Once you publish your customisations and then navigate to a Unified Interface app, you will see the entity using the icon you've just added.











Arguably, it looks even better on mobile!



























Tip: if you want change an icon for an area in the site map, such as the below.










You can do this in the Site Map Designer by opening the properties for the area and changing the icon (groups don't have icons).





 

Tuesday, 11 September 2018

Creating a Portal for Sub Contractor Time Entries in PSA

Last week I was lucky enough to attend a training course on Microsoft D365 Portals (from Iain, who makes up half of this blog https://www.msdynamicduo.com). Prior to this, my exposure to Portals had been pretty limited and the session really got me thinking about all of the different possibilities and scenarios that they could be used in. Another thing that surprised me is how a lot of the configuration is fairly straightforward and isn't beyond a functional consultant, although technical knowledge obviously helps. CSS skill would particularly help to make your Portal look a lot more suave and easy on the eye. 

When could Portals be used in PSA?
Currently, every project I am on incorporates Microsoft D365 for PSA in some shape or form. So this led me to think how we could use Portals in PSA. A few ideas that sprung to mind was for Invoicing or Project Time Approvals, Expense Approvals or Subcontractors submitting Time and Expense; just to name a few. 

My Sub Contractor Time Entry Portal
Now acquainted with Portals and their capabilities, I began to build a Portal that would allow Sub Contractors (who don't have a license to D365 and are Resources linked to Contact records) to go and submit Time Entries. I won't go into all of the finer details in terms of provisioning the details/set up of web pages, but you can find more info here - https://docs.microsoft.com/en-us/dynamics365/customer-engagement/portals/administer-manage-portal-dynamics-365 

My main aim was to be able to replicate the Submit & Recall functionality available in PSA on Time Entries, as well as making the interface as user-friendly as possible (with the least effort possible, so that it wouldn't repel users). 

First off, I edited my Home Web Page to brand it with the eBECS logo and added a Web Link Set so that users would be able to click through to Web Pages from the landing page.
























I also created a Create Time Entry Web Page that was linked to my Entity Form for Time Entries, changing some of the Entity Form Metadata along the way so that Projects and Roles were drop down options rather than Lookups.





























Adding Submit & Recall Time Entry Buttons
Then I created a new Web Page for My Time Entries and an Entity List for My Time Entries, and associated the two records. I also created four new views specific to my portal for:
  • My Draft Time Entries (entry status equals Draft)
  • My Submitted Time Entries (entry status equals Submitted)
  • My Approved Time Entries (entry status equals Approved)
  • My Rejected Time Entries (entry status equals Returned)
In order to show Time Entry records that related to my Contact record, I used parent/child Entity Permissions on Bookable Resource and Time Entry.























Next on my agenda was to create two on-demand workflows that replicated PSA functionality and changed a Submitted Time Entry back to Draft status through clicking RECALL and another workflow that would change a Time Entries status to Submitted by clicking SUBMIT, if it was in a Draft or Returned state.








Now I'd created my relevant workflows, I wanted to add them as a button against records in my Entity List. Underneath Grid Configuration on the Entity List form, I added both of my Workflows (Step 1 below) and changed the button labels (Step 2 below). Then I navigated to my filter settings so I could ensure that my RECALL button was only available for Submitted entries and SUBMIT was only available on my Draft and Returned entries. 









Adding Filter Criteria for my Workflows

Under Advanced Settings (Step 3 above), I changed the success message for each workflow as necessary and then applied Filter Criteria so the button would only appear on records that met my criteria. This was just FetchXML which I had built up through an Advanced Find. 














My Entity List In Practice
My Draft Entries only give the user an option to submit the entry - 












My Submitted Entries only give the user an option to recall an entry - 










My Approved Entries give me no options - 







My Rejected Entries only give the user the option to submit the entry again - 







Summary
In conclusion, without really going in and playing around too much with the UI and other Web Pages, I've managed to replicate the Submit & Recall Time Entry functionality in PSA. Sub Contractors wouldn't need a license to D365 nor would they be accessing D365 directly, so this solution is one that may appeal to numerous organisations.

Nice To Have

Another neat thing to do is add a Chart to your Web Page (instructions can be found here https://docs.microsoft.com/en-us/dynamics365/customer-engagement/portals/add-chart). I created a 'My Time Entries' for a weekly view that showed the hours per day and per project.
















Tuesday, 28 August 2018

PSA - Reporting on Project Task Assignments

The other day I went to create a simple dashboard in Dynamics 365 for Project Service Automation (PSA) that could be used by resources to show them the Project Tasks they were assigned to. Typically, it wasn't as easy as I'd envisaged. Out of the Box (OOB) you have the Bookings and Tasks view for each user which gives a nice overview but the view is only available in weekly format and although there is the option to mark a task as completed, the functionality is fairly limited. This post gives some insight into my investigation and the entity you need to use, in order to report on the tasks a resource is assigned to.  












What is a Work Breakdown Structure?
First off, I feel it's necessary to give a bit of background around the WBS in PSA. The WBS is essentially your project plan where the project manager can create estimates of both costs to their own business and sales prices at task level. They can then track the progress against these tasks when time is submitted against the project, and task if applicable. As you can see from the below WBS, I have numerous tasks and I've assigned myself as a Resource against them. If you were to use the Microsoft Dynamics 365 PSA Add In for Project, your project plan would sychronise and link with your WBS (watch this space for a blog post around the Add In 😏).









Initial Investigation
So firstly, I navigated to Advanced Find and opened on of these individual Project Task records. 












As you can see from the below record, the Resources field is a free text field rather than a Lookup and it is blank. 

















Odd right? So this caused me to dig a little deeper and I noticed against the Project Task record there was an associated record called Resource Assignments

















At first glance, it doesn't look like much with two fields on the form.

















However, when I added all columns to my advanced find, I found exactly what I was looking for.













After testing with a few different use cases such as changing a resource or adding multiple resources against a task, I was reassured that a Resource Assignment record is suitably created on every assignment and would work as for a user as a dashboard. As you can see from the below screenshot; John Smith and myself are assigned to one task and a record has been created for each. 




















Dashboard & Views
So now I've found the entity I need, I can go and create my dashboard. My first point of call is to create a couple of views that show tasks assigned to myself in the next month as seen below and how many I have assigned. I also created a few charts.






















My Finished Article
So this dashboard is fairly basic but it gives you some food for thought on the types of things you could do. In addition to standard views and charts, I've also added a custom 'Task Completed' field to the Project Task form for resources to update. 


















New Feature - Reconciliation View


Also, it's worth noting that there are some cool changes coming in the next version and one of these enables users to see the difference between their bookings and assignments, and reconcile the two so that their assignments match up with their bookings. More info on the Reconciliation View in V3 can be found here https://docs.microsoft.com/en-us/business-applications-release-notes/April18/dynamics365-project-service/reconciliation-view 

Wednesday, 15 August 2018

Embedded Intelligence (1/3) - Relationship Assistant

Whenever I speak to people who work in the Dynamics 365 community or those that are users of the system, levels of knowledge seem to wildly vary when it comes to the Embedded Intelligence add on that Microsoft provide (previously known as Relationship Insights). This add on consists of three features: the Relationship Assistant, Email Engagement and Auto Capture. 

These three features allow users to stay on top of relationships alongside building new ones, by working more effectively and contacting customers at the appropriate times. It leverages data from Office 365, Dynamics 365 and social web sources by looking at the data throughout the system and analysing it, such as the numbers of emails, when you last worked on an Opportunity and even examining sentiments and email content. There are certain technical specs that you can take a look at here https://docs.microsoft.com/en-us/dynamics365/customer-engagement/sales-enterprise/configure-enable-embedded-intelligence.

For this blog post, I am going to run through the Relationship Assistant feature. The Relationship Assistant is designed to allow users to stay on top of their day to day work through alert cards. Personally, as a consultant I find this a really neat and simple way of providing notifications to the users of any CRM system that most require. Rather than sending a user 40 emails a day alerting them when Opportunities are due to close via a workflow and the emails being pushed into an inbox folder which is never read, this feature provides a much more efficient and tidy way of allowing people to keep track of what is going on. Obviously this could be done with standard views but from a user's perspective, this is much more of a friendly interface and you would need numerous views/dashboards for each alert. 


The Assistant can be added to dashboards as a web resource (seen below) as well as appearing as a tab in the Social Pane on a form. The cards are interactive and users have the ability to 'snooze' a card which will hide it temporarily, they can dismiss it in its entirety and they can also open the record directly from the card. So for instance, the below card may either jolt a Sales person into action as they had forgotten about the deal or they may already know it was due to close and they can either snooze or dismiss it. It may even encourage them to pursue new opportunities in the sense if you know an Opportunity has had no activity for X amount of months, maybe it is time for a quick catch up before closing it as lost for good.





Set Up

So how do you set this up? The first step is to navigate to the Settings app in Dynamics and go to  Intelligence Configuration. Once you've done that, you just need to click I Accept to enable it as seen below.









Now you've done that, you can go and configure the Relationship Assistant by clicking Configure.













This gives you the ability to enable/disable any of the base cards you wish as a system admin and specify any of the cards you don't want to turn on from the outset.















You can also enable advanced cards which offer more variation, although some do have other spec required such as Exchange Online.


























Cards can also be managed at user level (if they are enabled at system level) by going to their Personal Settings and clicking Manage Personal Relationship Assistant Settings. Here the user can opt in or out to any of these action cards, which is a nifty feature that allows those that want it to be able to use it rather than enforcing the feature system-wide.



















Summary

Although it may not be a hugely sophisticated and complex add on, the Relationship Assistant does exactly what it's supposed to. It gives users a no thrills view of what is going on within the system and it can be set up with barely any configuration. Plus it avoids those dreaded notifications through emails, so along with dashboards and views within CRM it fits in perfectly. 

It's certainly something to be aware of, as it can save time and effort in the long run through minimising customisations and using what's provided to us 'Out of the Box'. 



Sunday, 22 July 2018

Creating Custom Project Metrics in Dynamics 365 PSA - Part 1



So here goes, my first blog post. As I mentioned in the 'blurb' to my blog, I've been using Microsoft Dynamics 365 PSA for nearly 2 years. One thing I've come across often with clients is the lack of standard things you would expect with PSA software, such as write-offs, project metrics and other things.


Throughout the system there are Out of the Box (OOB) metrics, such as the Project Contract Performance tab on your Project Contract. However, this uses the baseline Contracted Amount and as anyone who works in Professional Services would know, the Contracted Amount can differ from the actual amount of work completed/expected revenue on time and material projects.






















One simple customisation to make is to give clients the visibility of what Unbilled Sales have been billed on T&M Projects, and what hasn't. The way to distinguish which Unbilled Sales Actuals are on a confirmed Invoice is the Billing Status ID field. 

If you want to drill down into the finer details on fields on Actuals, take a look at Antti's blog here: https://community.dynamics.com/365/projectserviceautomation/b/daytodaydynamics365/archive/2018/04/28/dynamics-365-project-service-automation-actuals-part-ii

Steps
So, the filter criteria you'll need is seen below on either the Order entity (Project Contract) or Project entity. Obviously, you could also create specific views for users using this criteria on either of these entities. For my example, I am going to create a custom rollup field on my Project Contract as that is the ‘centre of billing and financial information’ in PSA. Note that I am only including those that are Chargeable and I am also excluding those with a Cancelled status.



















Essentially, this is going to give me the amount of all Unbilled Sales Actuals that relate to my Contract and have not yet been added to an Invoice and confirmed (this would usually be the trigger for pushing these across to ERP). Doing this allows the User managing the Project to see the amount of expected revenue that has not been billed, giving them early visibility if they are behind on billing for their completed T&M work. 

So now I've created that field, I can go submit and approve my time against a T&M Project (ensuring I submit it against a role that has a role price on my Project Contract Price List).














After approving the time entries, my Unbilled Sales Actuals are created. OOB the Billing Status ID field on your Actual has four values:























If I then use Adv. Find to show my Actuals that have been created on the Actual entity with the below filter criteria set, I get the below results:













As you can see, my Project now has 5 Unbilled Sales Actuals that add up to £5000 and the Billing Status ID field is blank. 











My next step is to place my custom field on the form, I have placed it on the Project Contract Performance tab in a custom section called Billing Metrics.


















My field shows as the below on my Project Information form on the Order entity (Project Contract), meaning I have £5000 worth of work which I am yet to bill the client for.







So now if I go and create my Invoice from my Project Contract, it will have £5000 outstanding.




















When I confirm my Invoice, the Billing Status ID on my Unbilled Sales Actuals will update to Customer Invoice Posted. 

This will also create my Billed Sales Actuals. Take a look at Matt's tip as to when Actuals are created here https://crmtipoftheday.com/829/project-service-automation-when-are-actuals-actually-created/












It is also worth noting that if you use the Correct this Invoice functionality, your Unbilled Sales Actuals will remain as Customer Invoice Posted but be reversed i.e. you will have two Actuals (£1000 and -£1000). You will then still have an Unbilled Sales actual at £1000 that is yet to be billed, with a different Billing Status ID.
So now if I navigate back to my Project Contract and refresh my rollup field, my amount is £0 which means the Project Manager is up to date with any T&M work that needs to be billed.








Summary
This is a simple customisation that can help Users managing the billing side of things in PSA hugely. It gives them early visibility and if they are managing multiple T&M Projects, they could create views/dashboards to keep on top of billing clients for work completed. Hopefully this gives anyone food for thought on other possible customisations and how we can manipulate PSA billing data to give clients an even better experience than with just OOB reporting.