Automatically Track All Incoming and Outgoing Email Messages in Dynamics 365 with Exchange Online Rules (Abridged Version)

Originally posted on: https://crmtipoftheday.com/1187/automatically-track-all-emails

This post is an abridged / summarised version of my original post about the same subject. To read the full detailed 10 pages long step by step guide, please check the original post on my blog here

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”.

  1. Configure server-side synchronization
  2. Set up tracked folder
  3. Create the following email flow rules
    1. Outlook rule to copy all incoming email messages 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
      image
    3. Outlook Rule to move all incoming email messages that has the “crmtrack” header to the tracked folder.
      clip_image023

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:

clip_image025

 

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!

Free GDPR Add-on Solution for Microsoft Dynamics 365 CRM Customer Engagement

Today 25th May 2018 is the day GDPR goes live! To “celeberate” this important day, and as a contribution from me to the Microsoft Dynamics 365 community, I’m offering my Dynamics 365 GDPR Add-on Solution free to the community both Customers and Partners. You can find a link to download the solution for free at the end of this post.

The solution delivers the following functionality and Data Subject requests:

  1. Consent Management
  2. The Right to be Forgotten (anonymising contacts information)
  3. Personal Identifiable Information (PII) Management

The solution includes the following components:

  1. “Consent” Custom entity with relationship to Contact entity
  2. New form for Contact entity called GDPR and few additional fields on Contact
  3. “Configuration Settings” entity for capturing config information
  4. A Plugin Assembley for the Anonmisation function
  5. A Workflow for creating tasks to renew Consent at 30, 7 and 0 days from consent end date.

For the solution to work properly, once you import the solution, you will need to do the following:

  1. Create a Queue called “GDPR” so that tasks for consent renewal created by the workflow can be added to this queue.
  2. Create a Configuration Setting record called “GDPR Contact” as the screenshot below. You need to enter names of fields you want to be anonymised separate by semicolons.

The solution takes the approach of anonymising the contact information without actually deleting the contact record. This means everything stays the same, attributed to the same contact record but the record itself will no longer hold any personal identifable information (PII) of the customer.

Here are screenshots on how the “Anonymise” button works:

GDPR Contact Form:

Click on “Anonymise” button:

Anonymised Contact record:

I hope this solution helps many in the Dynamics 365 community. If you find this solution helpful, please review and/or vote on this solution. I’ll be happy to support the solution where I can (and based on its popularity).

N.B. The solution is provided as is with no warranty. It does not guarantee GDPR compliance and your organisation will still need to ensure they are compliant.

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:

https://mbs.microsoft.com/Files/public/365/Dynamics365LicensingGuide.pdf

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 DOCUMENTATION

​​​​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:

https://www.linkedin.com/feed/update/urn:li:activity:6365472645869297664

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

https://www.linkedin.com/feed/update/urn:li:activity:6365582720701120513

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 http://crm.boutique at the following location:

http://crm.boutique/microsoft-dynamics-gdpr-dynamics-365-saturday-amsterdam-feb-2018

Enjoy! I hope you find the slides useful.

Dynamics 365 v9 iPhone Mobile App access to Device Microphone not available

I have a Dynamics 365 Solution built on v9 (Cloud) and it is built on the new Unified Client Interface (UCI – also known as Unified Interface).

When I render my UCI App on Dynamics 365 Mobile app running on an iPhone Mobile Device, everything works fine except one issue: My Speech to Text web resource does not work. When I checked, I found out that the Dynamics 365 Mobile App (latest version as of Feb 2018) does not have access to the iPhone Device Microphone.

Moreover, when you go to check under the iPhone Settings –> Privacy –> Microphone, you can see all Apps that requested access to the Device Microphone but you will find that Dynamics 365 App is not listed. I also could not find a way (initially) to get the App to request acces to my device microphone.

This issue has now been reported to the Dynamics 365 Product Group team responsible for the Mobile App – so they are aware of it and hopefully will fix it in an upcoming release.

However, thanks to my friend and fellow MVP, Marius Agur Pedersen, he alerted me to the fact that there is a “Microphone” icon on the Timeline control on several Dynamics 365 entity forms. Once you click on this “Microphone” icon, I managed to get the standard Dynamics 365 Mobile App to request access to the Microphone from my iPhone Device and the App now shows up on the iPhone Microphone Setting under Privacy.

Here is how you can initiate this request from the App to access the Device:

 

I’ll be updating this post with more information once I get confirmation from the Product team that the App can request access to the Microphone when it runs for the first time. But for now, the above work around should be good enough and should allow your voice recognition, audio and/or Speech to text web resources and modules to work inside Dynamics 365 Mobile App.

Hope this helps!

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!

Important list of Deprecated Features and Funcationalities in Microsoft Dynamics 365

If you are currently responsible for a Microsoft Dynamics CRM system or planning / delivering a Dynamics 365 solution, then you need to be aware of this important Microsoft announcement about the deprecation of some features and functionalities.

Microsoft defines “Deprecated” as an intention to remove the feature or capability from a future major release of Dynamics 365. The feature or capability will continue to work and is fully supported until it is officially removed. This deprecation notification can span a few years. After removal, the feature or capability will no longer work.

Hence, you should start planning replacing these features from your current Dynamics systems or avoid using these capabilities in your current Dynamics 365 implementation projects.

Here is the list of features, functionalities and capabilities officially deprecated and will be removed from Microsoft Dynamics 365 CRM:

  • Dynamics 365 for Outlook (Outlook client) is deprecated
  • Service scheduling in Dynamics 365 for Customer Service is deprecated
  • Dialogs are deprecated
  • Usage of Parature knowledgebase as the Dynamics 365 knowledge management solution is deprecated
  • Project Service Finder app is deprecated
  • Contracts, Contract Line Items, and Contract Templates entities are deprecated
  • Relationship Roles are deprecated
  • Mail Merge is deprecated
  • Announcements are deprecated
  • Ready-to-use business processes available through Add Ready to Use Business Processes setting are deprecated
  • Silverlight (XAP) web resource is deprecated
  • The following client APIs are deprecated
    Xrm.Page
    Xrm.Page.context
    Xrm.Page.context.getQueryStringParameters
    Xrm.Page.context.getTimeZoneOffsetMinutes
    Xrm.Page.context.getUserId
    Xrm.Page.context.getUserLcid
    Xrm.Page.context.getUserName
    Xrm.Page.context.getUserRoles
    Xrm.Page.context.getIsAutoSaveEnabled
    Xrm.Page.context.getOrgLcid
    Xrm.Page.context.getOrgUniqueName
    Xrm.Page.data.entity.save(string)
    Xrm.Page.data.entity.getDataXml
    GridRow.getData
    GridRowData.getEntity
    Xrm.Mobile.offline
    parent.Xrm
    addOnKeyPress
    removeOnKeyPress
    showAutoComplete
    hideAutoComplete
    Xrm.Utility.alertDialog
    Xrm.Utility.confirmDialog
    Xrm.Utility.isActivityType
    Xrm.Utility.openEntityForm
    Xrm.Utility.openQuickCreate
    Xrm.Utility.openWebResource

 

For full details about these deprecations and the official Microsoft announcement, please refer to the following Microsoft Documentation:

https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming

Please note that deprecations described in this post and in the original Microsoft Documentation announcement, apply to Dynamics 365 Customer Engagement as of the July 2017 Update. All Dynamics professionals should use this information to prepare for future releases of Dynamics 365.

Customer Engagement refers to the applications that make up the CRM portion of Dynamics 365, which includes the Sales, Customer Service, Field Service, and Project Service Automation applications.

 

Difference between Microsoft Dynamics CRM Portals, ADX Studio, Portals from Microsoft, XRM Portals and Open Source Dynamics Portal

Does this blog post title sound confusing? If yes, then I have to admit it is intentionally written to sound confusing. I made it confusing because this is how I felt after reading about the so many names and naming combinations I heard about Dynamics Porals, ADX Studio portal recently acquired by Microsoft, Dynamics Portals by Microsoft and Microsoft Portals SaaS module.

To clear this confusion, I found this comparison on Adoxio website to be helpful to clarify the confusion:

Source: https://www.adoxio.com/xRM-Portals-Community-Edition/

For those who don’t know, Adoxio is the consultancy part of ADX Studio that Microsoft didn’t acquire.

So to clarify, Adxstudio portal were up to versions 7 before Microsoft acquired them.

Once Adx code was acquired, Microsoft rebranded it to Portal, from Microsoft. This is the new SaaS Dynamics Portal from Microsoft which is normally included in your Dynamics 365 Enterprise subscription. This is also known and referred to as: Microsoft Dynamics Portals, Microsoft Portals for Dynamics 365 and few other permutations. This dynamics portal is only available in the cloud (SaaS) and is not available for on-premise

Microsoft has then decided to release the source code as a one-off release to the Dynamics community. This is the release of the Microsoft SaaS portal source code at a specific point this year but as mentioned, it is a one-off, as is with no support or bug fixing. You can understand more from the comparison in the image above.

Finally, Adoxio has taken the Microsoft Open Source Portals code and made it freely available on GitHub as XRM Portal community edition so that it can easily be downloaded, updated, and maintained by itself and anyone else, including other Microsoft Partners. This represents the definitive edition of Microsoft Open Source Portals for Dynamics 365 brought to you by the same team behind ADXStudio. xRM Portal community edition is available to be used both on-premise and cloud.

Hope this post has clarified the confusion between the various versions and the new promising XRM Portal community edition.