Microsoft Dynamics 365 Sales AI (Sales Artificial Intelligence) Navigation Link Disappears / cannot be found!

Microsoft Dynamics 365 Artificial Intelligence

If you are using Microsoft Dynamics 365 Sales AI (Dynamics 365 Sales Artifiical Intelligence – also known as D365 Sales Insights), you might come across the issue where Sales AI link in Dynamics 365 Settings navigation disappears or cannot be located. I have seen this issue with a number of our Customers and I have also seen others reporting the same issue on Power Platform / Dynamics 365 Community (

Having raised a ticket and spoken to the Product team about it, a work around for this issue is simple and effective, albeit not the most elegant. However, until this issue is permanently resolved, the quick and easy solution for this issue is to open up the Site Map and change the name of the navigation link.

Here is how to do it: Go to Settings –> Solutions –> Open a solution which already have the main application sitemap added to it. If not, crete a new solution and add the application Sitemap to it under “client extensions” then select Sitemap and click edit.

Alternatively, you can make the change in the deafult solution (not recommended – bad practice) by going to Customisations –> Customise the System –> Open default solution –> Client Extensions –> Site Map –> Edit.

In all cases, you will land on the Sitemap editor. Click on Settings –> Relationship Insights –> Edit

Typically, the Relationship Insights navigation is on the sitemap but yet is still not visible in settings menu. In which case, click on the edit button next to it. If it isn’t there, then create a new navigation link.

Once you start editing, update the “ID” Value by adding a digit to the end of the ID (or change the value completely as below.

As you can see, I only added the digit “1” to the ID.

Once you finish, save and publish. Once done, you will have the Sales AI navigation link will be permanently there and hopefully it will not disappear again.

If this post has helped you or resolved your issue, please comment below so others can benefit from it.

Using single Mailbox Dynamics 365 User to Automatically Track All Outgoing and Incoming Emails from All Users (take 3)

This is the third post in my series about Automatic tracking of all Incoming and Outgoing emails in Dynamics 365 using Exchange Mailflow rules and Server Side Synchronisation.

In my previous post, I showed how we can track all incoming and outgoing emails for all users using 1 single Exchange Rule and for each user, we create 2 Outlook Rules. In this post, I have an even simpler solution with only 1 user and 2 exchange mail flow rules.

But firstly, it is important here to note that the main issue for automtiaclly automatically tracking outgoing emails is that any Outlook Rule for Sent emails is always “Client-only”. That is, the rule will only run if Outlook is open. I have not found a way to have an Outlook Rule that works server side to copy a sent email to a tracked Dynamics 365 folder. Hence, the use of Exchange Online Mail Flow and the direct use of the Exchange transportation layer.

But what if you don’t want to even create the outlook rules as per my two previous posts? The answer is simple: You can literally use 1 single Mail Box and Dynamics 365 user along with 2 Exchange Rules to automatically track all Outgoing and Incoming emails for any email inbox even if this user has not got Dynamics 365 App for outlook configured and even if this mailbox is not a Dynamics 365 user.

The approach is simple: Using 2 x Exchange Mail Flow rules you can Bcc every outgoing and every incoming email to all the mailboxes you want. All these emails are Bcc’ed to a Single Mailbox of a Dynamics 365 User who has App for Outlook configured. This way, all emails are tracked.

So to summarise:

  1. Setup and Configure Dynamics 365 App for outlook for one User: Let’s call it: “D365 Mail User”
  2. Create 1 x exchange rule to BCC all outgoing emails to this “Mail user”
  3. Create 1 x exchange rule to Bcc all incoming emails to the same “Mail user”
    and that’s it.

    Tried and tested – but please let me know if you got other ideas/thoughts.

Automatically Track All Incoming and Outgoing Email Messages in Dynamics 365 without opening Outlook and across any device :: Pure Exchange and Dynamics 365 Server Side Synchronisation

Sometimes organisations want to track all incoming and outgoing emails for a number of users at Server Side without having the user to do anything manually and across all devices. The requirement here is to save the user time from clicking on “Track” emails when they are sending them or having to manually move incoming emails into a tracked folder to be tracked. They also want this to work on every email sent from any device and every email received even if Outlook is not open. This what I call “pure Server Side Synchronisation”.

As the name gives it away, Dynamics 365 Server Side Synchronisation and Dynamics 365 App for Outlook can help us achieve this requirement with some help from Exchange Mail Flow Rules that uses the transportation layer directly. Just to re-iterate, we are here using Dynamics 365 App for Outlook (not the client). If you are not sure what is the difference between Dynamics 365 App for Outlook and the Dynamics 365 for Outlook (also known as the Outlook Client), you can refer to this comparison:


My approach is using Server Side Synchronisation between Dynamics 365 Online Cloud and Exchange Online but the same approach may work with other setups to achieve the same requirement: Track all incoming and outgoing emails automatically from any device. I’m also applying all of this on 1 single “test user” but you can apply this on as many users as you want. My test user is called “sales test”.

In this post, I will not take you in detail through the process of setting up server side synchronisation. You can refer to the official Microsoft Documentation and this comprehensive step by step guide to set server side sync up first before you continue:

Once you do all the steps in the above guide and you have fully setup server side synchronisation, you will then need to make sure that your test user has setup folder level tracking in their Outlook (Office Outlook or Web rules are fine). To do this, you can follow the step by step guide here:

In summary, before you automate the tracking of all email messages both incoming and outgoing, you must have Server side synchronisation setup, push (i.e. remotely install) Dynamics 365 App for Outlook to your user(s) and you must also setup 1 folder for Dynamics 365 tracking in your user Outlook. This can be a folder under their Inbox which is then configured in Dynamics 365 for tracking (as per the above guide). For your convenience, I have summarised here the steps to setup Folder tracking (refer to the above guide for detailed guidance):

To Set up a tracked folder

  1. In the User “Personalisation Options” or “Personal Option”, click the Email tab, and then under Select the email messages to track in Dynamics 365, select “All Messages”. 
  2. Then Click on Configure Folder tracking Rules. In the Folder-Level Tracking dialog box, under Exchange Folder, click + New Folder Mapping, click the down arrow in the box that appears, and then select the folder you want to track.Where “CRM Tracking” is a folder under Inbox in Outlook, as shown in the following screenshot:

With that, you have Server Side Synchronisation and Folder Level tracking setup for 1 single folder called “CRM Tracking”. Any email message inside this folder will be tracked. Next, we will setup the automation of the tracking of all incoming and outgoing emails, which is the purpose of this post.

To automate the tracking of all incoming email messages, you will need to create an Outlook email rule to copy all email messages received in the user inbox to the “CRM Tracking” folder. Please remember all your outlook email rules must be server side for this to work. If the rule has “Client-only” next to it, emails are moved between folders client side only and not server side which means tracking won’t work.

So, the first rule to create on Outlook is a rule to copy all messages received to the tracked folder. This rule is simple and will look something like this:



This rule will copy every received message to the “CRM Tracking” folder. But how about sent messages (outgoing email)? Here is the complex part – so follow me to the letter on this one:

If you were to create a new rule via the “Apply Rule on messages I send” that copies every email sent by the user to the same folder “CRM Tracking”, the new rule will always be “Client-only”. This means sent emails are copied on client side only to the tracked folder but not server side – so nothing will appear in Dynamics 365 (remember this is server side tracking not client side).

Also, I have been told that you can create another rule that starts with “Move messages from someone to a folder”, select the same user of this inbox as that “someone” and the “CRM Tracking” folder as the target and this could copy sent emails to the tracked folder server side. I have tried this but it didn’t work for me – emails were not tracked. If you tried it and it worked for you, then please let me know what you did.

On the other hand, if the user was to cc themselves in every email message they send, they will receive a copy in their Inbox, which will then be moved to the tracked folder – hence, this message will be tracked in Dynamics 365. However, the email message will be tracked as “Received” not “Sent”. This also means the user will have a copy of every message they send in their inbox and while they can automate the “Cc” of themselves, it looks odd to the receiver of the email to see the user cc’ing themselves. Hence, this is not a good solution either – it’s a possible solution but not so elegant.

So here comes the approach that is complex, elegant and guaranteed to work – I have tried it several times by now and it always works.

Thanks to an excellent tip from my friend and fellow MVP, George Doubinski, I used Exchange Mail Flow to Bcc every sent message our test user sends. Here is how to do it:


  1. Go to the Exchange Online Admin Centre (also known as Exchange Control Panel). You can jump directly to it via this link: (you need to be Office 365 Admin)
  2. Click on “Mail Flow” from the left hand menu:
  3. Under “Mail Flow” è Rules, click on “+” to create a new rule that does the following:
    1. Bcc every email message sent by this user to “itself”
    2. Set a message header to every sent message with value “crmtrack” or “techlabslondontrack” (or any message header value of your choice)

Your rule will look something like this:

Once you create your rule, you will need to go back to Outlook rules and firstly, update the first rule we created that copies all messages from inbox to the tracked folder, and add an exception to avoid messages that has “crmtrack” in the header. This way, all sent messages that have been Bcc’ed and arrive in the user inbox, will not be copied to the tracked folder. This rule now looks like this:

Instead, we will create a 2nd Outlook email rule to move (move not copy) all messages that arrive in the user inbox and which has the header “crmtrack” to the tracked folder. This rule will look like this:


So to summarise, we ended up creating 3 rules in total:


  1. Outlook Rule to copy all email messages that arrive in the user inbox to the tracked crm folder except if the message has “crmtrack” in the message header.
  2. Exchange Online Mail Flow rule that works at the transportation layer to “Bcc” every single email sent from the user to themselves and adds the “crmtrack” header value to the sent email message header
  3. Outlook Rule to move all email messages that arrive in the user inbox that has the “crmtrack” header to the tracked folder.

The reason we use copy for all incoming emails is to allow the user to continue to use their inbox as normal keeping all received emails in inbox. The reason we use move (not copy) for sent emails that arrive as Bcc in the user inbox, is to make sure that all sent emails do not stay in the user inbox. They will continue to exist in the sent folder and a copy will be sent to the tracked folder.


The result of all of the above complicated approach is that ALL incoming emails are tracked in Dynamics 365 automatically as “Received” emails and ALL outgoing emails are tracked in Dynamics 365 CRM automatically as “Sent” emails. As this approach is using Exchange Online transportation layer, this is a pure Server Side Synchronisation of Email messages with Dynamics 365 which means it will work with “ALL Emails” sent from ANY Device and any app as the synchronisation happens at the server side and not on the client side. So if you sent an email from the Outlook for the Web (Web Mail), sent it from an Android device email client, iPhone Mail app, Outlook app on iPhone, Office Outlook or any other medium, all emails sent and received are tracked in Dynamics 365.

This is how it looks like in Dynamics 365: Tracked emails sent from any device and emails received while Outlook is closed:

Thanks for reading thusfar! I have spent a lot of time researching and writing this up with the aim to help anyone who is trying to achieve full Dynamics 365 incoming and outgoing email tracking on server side fully regardless of which device or client the email was sent from.

I will be posting another blog post about the same subject soon but this time I will achieve the same result using 100% Exchange Mail FLow Rules via the Transportation Layer.

I hope this helps!

Disappearing Record Level Team Access security permissions and Manual Record Shares Dynamics 365 v9

Our team at TechLabs London have recently faced a fairly complex and bewildering issue on Dynamics 365 v9. We have setup access team templates against the Contact entity to manage access to Contact records individually. If you haven’t used Access Teams before, you can read more here, but in essence it is a way to control which user can see which contact at a record level.

Our customer has converted from another vendor (a.k.a SF) to our iProperty Cloud solution (http://iProperty.Cloud) built on Dynamics 365 v9 and the new Unified Client Interface (UCI). As part of our data migration, we imported thousands of contacts to Dynamics 365 Customer Engagement and allocated a number of users for each contact record based on a predefined list and set of rules. This was a custom data migration process to create these record level access records using our own TechLabs London propriety migration solution.

Once our data migration into Dynamics 365 was complete, we checked Access Team security and everything looked absolutely fine. The next day after going live, Team access security disappeared for few thousand contacts – but NOT all contacts. Upon looking at the POA table (Principle Object Access Table) where security is set, we found that about 4K access records have disappeared. Literally disappeared!

Apologies for the long story but I want you to be aware of everything we tried to resolve this issue as one of these steps may help you fix your issue (which may or may not be similar to ours).

Basically, we spent the following few days trying lots of different resolutions to try to find out the issue.

  1. First we re-imported Access team records using our migration App – everything went back working fine until the next day in the morning – 4K access records disappeared again!
  2. We tried setting the record level security using “Share” not Access Team (manually and programmatically). While we know that Access Teams are “hidden share” and both get created in POA table, we thought this may solve the issue. It didn’t – next day, everything disappeared.
  3. One possible cause of these record level access security issues could be triggered by re-parenting. For example if contacts are associated to an account and you give ownership of this account to a team while the relationship behaviour is set to cascade all, then the child contact records will become accessible to this team. We removed any cascade relationship behaviour – but still didn’t help. Next day, all access disappeared.
  4. We then Disabled all our custom plugins that remotely affect security and access – we had few automation on security between different entities and teams. No luck.
  5. Also we disabled our own security roles synchronisation process (Azure function) which synchronises security between Dynamics 365 and SharePoint security. Nope! Not even that.
  6. We deleted and recreated the team access template then re-imported all access records. Still same issue. All 4k access records were deleted from POA table the next morning.
  7. We setup an hourly extraction routine to extract Access records from POA table to a separate Azure SQL. We monitored and tried to find out the issue or the cause – still nothing.
  8. After blaming ourselves and our code for good few days, we raised a ticket to the Dynamics 365 Support and Product Team.

Finally, the issue was found to be related to the Table: SubscriptionTrackingDeletedObject table and an associated cleanup process that runs every day in the morning (our UK time) in the Dynamics 365 Platform. Apparently this table includes a list of GUIDs for records that need to be deleted from the POA table (and other locations). This table is not exposed via API (or at least we are not aware of a way to).

Basically, it came down to the fact that we imported contacts before go live the first time with these contacts original GUIDs as they were coming from an older CRM system and we wanted to maintain the relationship between entities and records. This is normally fine, however, at one point before going live we had to make some changes to the structure so we deleted those imported contact records and re-imported them with the same GUIDs again. When we did that, apparently these records and all their related security access records were marked for deletion from the POA table. When we re-imported, these contact GUIDs and their related access records were still marked for deletion. Hence, every day in the morning the good old record deletion clean up process SubscriptionTrackingDeletedObject would delete our access records and drive us crazy.

The fix was a script created and run by the Dynamics 365 support team which permanently fixed the issue for us but not before we have learnt a few hundred ways of how to try to fix such issues!

Dynamics 365 v9.0.2 Spring 2018 Release prcing and licensing guides and information sheets

With the new release of Dynamics 365 v9.0.2 Spring 2018, I thought I’ll share links to all the new licensing guides and information sheets that are available for Dynamics 365 Microsoft Partners with access to Microsoft Dynamics Partner source, they can get the same information here:

and here is what I believe a publicly available version of the Dynamics 365 Spring 2018 (v9.0.2) licensing guide:

Finally, you can find all detailed documents, guides and information sheets/videos on Partner Source here:

Microsoft Dynamics 365 Licensing Guide – Spring launch updates

Microsoft Dynamics 365 Existing Customer Transition Guide​​

Microsoft Dynamics 365 Licensing Guide – Addendum for Case Management​​

Microsoft Dynamics 365 Business edition Licensing Guide​​

Microsoft Dynamics 365 Pricing and Licensing Videos​

Microsoft Dynamics 365 Licensing and Pricing Deck​ – Spring launch updates

Microsoft Dynamics 365 Pricing and Licensing FAQ​ – Spring launch updates


​​​​Microsoft Dynamics 365 On-Premises Licensing Guide

​Microsoft Dynamics Field Service On-Premises Planning Guide​

Microsoft Dynamics 365 On-Premises FAQ

Hope this helps!

Dynamics 365 Saturday in Amsterdam February 2018 – Event Summary and GDPR Slides

We have recently had a fantastic two days as part of our Dynamics 365 Saturday event and Hackathon. It started with a Hackathon on Friday afternoon all the way until the end of the night then followed by a Dynamics 365 Saturday full day event. We had some amazing content including opening keynote by Ben Vollmer, Microsoft Dynamics 365 Field Service Global Lead. We also had an excellent closing keynote by Steven Kaplan, LinkedIn Group Manager for Sales Navigator and an ex-Microsoft Dynamics exec himself.

I had the pleasure to interview Steve as part of the Question and Answer section of the closing keynote. You can read more about the event on this blog post:

You can also see my live LinkedIn video from the closing key note here:

We have also had some fantastic feedback from various attendees including this potential Dynamics 365 Customer:

I have also delivered a sesson on my “favourite” subject: GDPR. The session was titled: Business and Technical Design considerations for a GDPR compliant Dynamics 365 solution.

I’ve been asked many times about the session slides and I have just got round to upload them. You can find them on at the following location:

Enjoy! I hope you find the slides useful.

Directions EMEA 2017 Dynamics 365 GDPR Compliance Session Slides

Presented by myself and James Crowter, we have received various requests to share our slides from Directions EMEA 2017. I have added these here but please note that I have added more information than the original presentation slides. Hopefully it will be of some benefit to some of you.

Please note there is NO WARRANTY for this document and is provided as is without any guarantees. You should not make business decisions based on these or any similar high level material.

Microsoft Dynamics 365 & GDPR compliance – Oslo #MSDyn365 event slides and updates

I had really great audience and some excellent interactions at my Microsoft Dynamics 365 #GDPR compliance session in the stunning #Oslo at Microsoft Norway. I’ve heard and discussed several shared concerns on GDPR significant impact on #CRM solutions, its complexities and how soon the regulation is coming!

I also want to thank everyone for their positive and encouraging feedback. That’s what keep me (and other MVPs) going and make us continue to help the Dynamics 365 community in passion!

As per everyone’s request, I have incorporate our useful interactions into my slides and you can now download them via the link below on this post or on http://CRM.Boutique  (free registration is required).

If you would like to attend this session again in person, then you can join me at our next Free Microsoft Dynamics 365 event in Milan at Microsoft Italy offices on 16th September 2017. This will be another great CRM Saturday event, this time in Italy.

One last off-topic point: Oslo and Norway are absolutely stunning (did I say that before?). If you haven’t been there, then try visiting soon – preferably in the summer. Make sure you: a) take the Oslo Fjord cruise, b) do the Oslo River walk and c) eat plenty of Norwegian fish (especially Salmon).

I leave you with some photos from the event and amazing Norway!


Our Free Dynamics 365 #CRMSaturday #MSDyn365 Bootcamp has been a great success – what a day!

We have just had our first CRM Saturday Bootcamp at Microsoft UK London Paddington offices this Saturday, 22nd July 2017. It has been a lot of hard work for everyone at CRM Saturday especially the trainers: Neil Parkhurst, Janet Rob, Raz Choudry and Baris Kanilca. As for me, I did 16K steps just walking between the various rooms ensuring all sessions are adhering to our agenda times. Personally, my sessions both overrun by few minutes and some of my track attendees missed part of their breaks as I got carried away! For this, I’m sorry 🙂 It has been a seriously fun event with some excellent attendees.

Not only we had 110 excellent attendees @ our free #MSDyn365 #CRMSaturday Bootcamp. We also raised £1,421 for the London Fire Fund, British Red Cross.

We learnt Dynamics 365 together in 3 different parallel tracks. There was a lot of excellent networking as well as some great fun at the various breaks and the Raffle ticket awards.

Some of our attendees even went back home with an XBOX S One, an Amazon Alexa/Echo and other prizes. What a day!

However, I’ll have to name names in this post! Firstly, many many thanks go to: Microsoft’s Matt Fox and Bruce Nicholson Scribe’s Henk Adriaans and Steven Thornhill Nigel Frank’s Oliver Norton and Andrew Brownlie

Without our host, Microsoft, and our sponsors, such an amazing events wouldn’t have been possible. And of course special thanks goes to our trainers: Raz Dynamics, Neil Parkhurst, Janet Robb and Baris KANLICA

And our helpers: Lipi Sarkar (MBA), David Robertson and Samira Kadiri

And of course many thanks to our Dynamics Community colleagues and Professionals who attended the event and made the donations to make such an event a success!

Strategic Business & Technical Considerations for Dynamics 365 CRM Cloud Deployment – CRM User Group July 2017

I have recently presented at the UK CRM User Group event in Microsoft London Paddington offices (I know I now seem to spend more time @ Microsoft Paddington than in my own office).

Anyway, I have received requests to publish my updated slides about the Dynamics 365 CRM Online Cloud deployment considerations. Please find these below. The slides are high level as I go in details during the session (and I hate long text on presentation slides). However, the slide deck still covers many of the core principles and strategic considerations that I believe every business and every organisation should consider before making the decision to go Dynamics 365 on-premise or cloud. There is no “one answer” or “one model fits all” here and there will be many good reasons for an organisation to choose one option over the others – and that’s what I try to convey in these sessions.

While you are here, if you organisation would benefit from a short and quick assessment of Dynamics 365 cloud versus on-premises decision, I’ll be happy to help you with that. I have been delivering these assessment frequently lately and I apply all my lessons learnt and experiences onto these short assessments to help businesses make the right decision for themselves.

You can get in touch via the contact page or via LinkedIn.