Lesson Learned from PSA Deployment

Currently I’m in a project where our team is going to roll out Dynamics 365 Project Service Automation for one of our customers. Throughout the project, we’ve learned a lot about this new cool kid on the block 🙂


Some gotchas/lesson learned when we are rolling out this to the customer:

  1. Choose Project Template carefully. Once created, the user can’t change the project template and need do it again from the scratch (not a big hassle, but definitely I mentioned this when during the training).

  2. This is for Admin/Customizer, PSA-related controls limitation. Time Entry & Expense, WBS, schedule board, etc. They are pretty much static (hard coded), it is not honoring relabel, adding more options and even can’t add any new field. Seems like we need to treat PSA in a similar manner to other ISV solution, such as Click Dimensions, (compared to Sales/Service/Marketing that have more mature customization and configuration flexibility).

  3. Do not mess with the OOTB processes or scripts. There are lots of processes coded in javascripts and plugins where the processes behind it are not really documented. So, my lesson on it, keep it out of the box, if a customization needed, I would recommend to not touching any of the OOTB fields and create custom processes or fields instead.

  4. Pay attention to “metadata” records (Resource Role, Resource Skill, Price List, Expense Categories, etc) during deployment. Similar to Adx/portal scenario, where records are stored as configuration. To have ALM for PSA correctly, will need to pay attention to those records as part of the deployment process.

  5. One of the biggest catch that I’ve got: can’t undo approval. Approvers need to be really really careful with their approval.

For this instance, I submitted an idea entry: https://crmideas.dynamics.com/ideas/dynamics-crm/ID0000986. From the feedback from the 2 customers that we have worked with, they need this feature to make an amendment to the entries, at least before it is processed for invoice (at least a flag or something to cater this scenario).

  1. Data migration is a bit tricky, for some scenarios, we’ve got to deactivate some of the validation plugins to let the data in (need to have thorough testing on this, as I consider this as touching the OOTB process that is not well documented).

Hope this helps!

iOS Outlook Add-ins is now available!

Last week I posted my gotcha around Dynamics 365 Outlook App. This weekend I noticed a notification on my phone to update the Outlook app to the latest version.

What surprises me is the availability of the long waiting add-ins feature that has been demoed in the Dynamics 365 launching. The following article mentioned about the Dynamics 365 add-ins: https://www.macrumors.com/2017/02/02/microsoft-outlook-for-ios-add-ins/.

So, I wait for no further to update it straight away and viola! I can now get my Outlook add-ins available on my Outlook app on my phone!


There is a functionality to open the record. Since I have Dynamics 365 mobile app installed as well, the Outlook app is opening the record detail in the Dynamics 365 mobile app.


Gotchas on Dynamics 365 Outlook App Deployment

Microsoft Dynamics 365 has a shiny new Outlook App. In this post, I won’t discuss the functionality of this Outlook App (for the information about functionality, please use the following article: https://www.microsoft.com/en-us/dynamics/crm-customer-center/dynamics-365-app-for-outlook-user-s-guide.aspx)

One of the first pre-requisite of the new Dynamics 365 Outlook App is to enable the server-side sync (https://technet.microsoft.com/en-us/library/dn531109.aspx). Once the server-side sync for the user’s mailbox completed, the user will be displayed under Dynamics 365 App for Outlook as Eligible User:

Add Outlook App.png

Click the “ADD APP TO OUTLOOK” button to let the provisioning service adding the Outlook App. This might take up to 15 minutes to finish the provisioning. For more information about the security requirements, supportability, compatibility and more details of the deployment, please refer to the following TechNet article: https://technet.microsoft.com/en-us/library/dn946901.aspx

Once you’ve got it provisioned, it will be available on your desktop-based Outlook:

Outlook App.png

As well as on OWA client: OWA.png


Gotcha #1 – Outlook App Doesn’t Like Multiple Dynamics 365 Instances

Now, as I’m happy with the App, I would like to make it available in other Dynamics 365 instances (Typical IT project lifecycle we will have multiple environments to be used for their purpose, such as: DEV/TEST/UAT/PROD).

So, what I have done was made the same configuration at the other environment, let say in UAT environment. And add progressing to add the app to Outlook. However, I’ve got the following error:


“Issue when adding to Outlook” – with detail: “CRM : IncomingEmailRejected”.

So I click the link “Help me resolve this issue” that takes me to the following KB Article: https://support.microsoft.com/en-gb/help/3211627/incomingemailrejected-error-when-attempting-to-install-dynamics-365-app-for-outlook

The article mentioned the cause of the problem: “This error can occur if the Mailbox record has not been approved.”

Well, I’ve approved the mailbox. Otherwise, how come I could get a success message from the testing result:


To resolve this issue. I need to update the Mailbox synchronisation to the current organisation only. Which means, I can only sync and use the Outlook App for an instance at a time (which makes sense).


Once I ticked this option, I can add the Outlook App successfully for the new instance.

So, the feature of the traditional Outlook Client that is able to keep the configuration of multiple instances and switching on which one that becomes the syncing org, seems to be not available for the Outlook App.


Gotcha #2 – How to Remove or Disable the Dynamics 365 Outlook App?

Now, in some situations, it could be a business decision whether they would like to use the new Dynamics 365 Outlook App or the Traditional Outlook client. One thing that I noticed, once I enabled the Dynamics 365 Outlook App for the user, I can’t find anywhere in CRM UI to remove it:

Nowhere to remove.png

It can only add, but not remove… Okay, this is not the end of the world. The Dynamics 365 Outlook App is technically an “Add-in” for Outlook. So, to remove it, simply navigate to File > Info > Manage Add-ins from Outlook desktop.

Manage Add-ins.png

That practically will redirect you to Outlook OWA: https://outlook.office365.com/owa/?path=/options/manageapps

Manage Add-ins OWA.png

Now in here, we can see the list of Outlook add-ins that have been installed for us. Click Dynamics 365, in there we also can see which Dynamics 365 instance that the App is currently connected to.

To disable: simply untick “Turned on” checkbox.

To remove: select the add-ins and click the minus (-) button.


For now, these are the lessons learned that I’ve got from the Dynamics 365 App.


Editing Sitemap in Dynamics 365

Prior to the release of Dynamics 365, we are helped a lot by XrmToolbox to edit the sitemap without the need of editing the sitemap XML manually. However, with the release of Dynamics 365, it seems the plugin for XrmToolbox doesn’t support the editing of Dynamics 365 sitemap (given now it is possible for a Dynamics 365 deployment to have multiple Apps and each App can have their own sitemap).


So, what should we do now? There are 2 options to configure the Sitemap in Dynamics 365.

Option #1: Creating a new App

With the ability to create App in Dynamics 365, we can create a sitemap that is associated to the App. Following the guide from Microsoft on how to configure/design the app: https://www.microsoft.com/en-us/dynamics/crm-customer-center/design-custom-business-apps-by-using-the-app-designer.aspx

Option #2: Editing the Default Sitemap

Editing default sitemap is similar to what we used to do with XrmToolbox. However, with the unavailability of XrmToolbox to achieve this, we need to use the Dynamics 365 Sitemap Editor to do this.

How to get there? Here are the steps to update the Default Sitemap:

  1. Open the Solution that you would like to use to contain the sitemap.
  2. Under Components. Select Client Extensions > Add Existing > Select “Site Map”Sitemap.png
  3. Once it’s added to the solution, click on the Edit buttonEdit.png
  4. It will then open up the Dynamics 365 Sitemap Editor. Conceptually it’s the same as the way we configure Sitemap using the XrmToolbox, but with different user experience and layout.D365Sitemapeditor.png
  5. Once you are happy with the layout, click Save and then Publish.


Extra Tips: Change the Default “Dynamics 365 – custom” App name

By default, each Dynamics 365 instance will get a default App. To change this App name:

  1. Navigate to Settings > Administration > System Settings
  2. Under “General” tab scroll down to the last optionsDefaultAppName.png



Dynamics 365 (On-Premises) Is Released

It seems the wait is over for CRM On-Premise customers to get the latest update of Dynamics 365 (Re-branding seems to cause confusions to some of us).

Download link: https://www.microsoft.com/en-us/download/details.aspx?id=54515

This version is 8.2, which is the same base version to the current version on the cloud version. The following components are now available for download:


Note the filename is still using “CRM2016”. As a rule of thumb in avoiding confusion, please refer to the version number 🙂

Looking forward to upgrade one of my VMs in Christmas break!

When Case Routing is not Working, Check the Team Security Role

Recently I worked on a demo to showcase Dynamics 365 Service (case management) capability. One of the feature that I would like to show is the case routing functionality.

I’ve created a simple rule, let say IF the case type = product enquiry, assign the owner to Product team.

So, I tried the rule by clicking save & route button on the case form, but it doesn’t do what I expect it to do…


Later I found out that the team that the case routing rule has been configured with, doesn’t have enough privilege to own a case (in my case this was a brand new team, without security role assigned).

After I assigned the appropriate security role, now the routing works as expected.

I hope this help anyone who might encounter the same issue.

Note: I’ve submitted an idea (link below) to allow preemptive message to let us know if the rule doesn’t have enough privilege. Please vote it up if you think this will be helpful.



CRM Chat Bot: Part 4 – Deployment & Action!

In the previous part of this series, we have seen the sample implementation and how the code is running against a CRM Online instance. In this post I will show on how to deploy the chat bot to the supported channels.


As illustrated above, the built bot has the capability to be deployed to multiple channels leveraging the built-in capability of Bot Connector library.

Bot Registration

To deploy the bot, first we need to sign up to register the bot: https://dev.botframework.com/bots/new (this requires a Windows Live ID to sign up). Once signed-up, you will be able to register the new Bot:


You will then be asked to setup the App ID and password. Please take note of this App ID and password, as this will be the one that we will use in the Web.Config.


Then update your web.config of the bot with the generated App Id and Password.


Now we are ready to deploy to Azure App Service. You need to make sure that your Visual Studio has the latest Azure SDK. To publish it, right click the bot project and click on Publish.


This will prompt the details for the Azure App Service deployment.BotAppService1.png

Continue to create, once the App Service has been created, it will show below screen:


Note: Take note the destination URL, this will be the bot endpoint. You will need this base URL  and  the API path”/api/messages” to be configured on the bot registration site.


Once the endpoint has been setup properly, you could verify and test the connectivity:


Channels Configuration

Congratulations, we are nearly there. The next step is to configure the channels. Skype and Web Chat are automatically configured by default. To add other channel it is really simple. Just follow the guide provided by Microsoft is sufficient.


Once it’s configured with the details, now here is the bot in action:


As I’ve configured it on different channels, the same Bot is working on different platforms, such as Slack and Skype.

Example on Slack:


Example on Skype:



Microsoft Bot Framework is relatively new for the community, however it has produced a great framework to built multi-channels conversational bot. Where the developers only need to developed the bot once and it can be deployed in many different channels rapidly.


The diagram above depicts the high level on how the bot application is deployed and work together as a solution.

I hope this post helps you to gain the understanding on the Bot Framework and how it can be integrated with Dynamics CRM and other Microsoft platforms.

This post is the end of the CRM Chat Bot series. There will be a spin-off post on a topic related to Luis Model that was used in this example. So, stay tuned 🙂